/* UU Island · 白底 / 海蓝 / 多彩 */
:root{
  --bg:#FFFFFF;
  --card:#F8F9FA;
  --text:#1F2937;
  --text-2:#6B7280;
  --primary:#2E7CF6;
  --primary-soft:rgba(46,124,246,.10);
  --accent:var(--primary);
  --accent-soft:var(--primary-soft);
  --line:rgba(31,41,55,.12);
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif;
  --c-today:#2E7CF6;
  --c-circle:#FF6B4A;
  --c-journal:#22C55E;
  --c-schedule:#8B5CF6;
  --ok:#22C55E;
  --warn:#F59E0B;
  --danger:#EF4444;
  --danger-soft:rgba(239,68,68,.10);

  /* 日程分类五色——全站唯一来源。
     日历色块 .sc-chip / 分类标签 .sc-kind-tag / 「快到了」左边框 .sc-up-row 都从这里取色，
     不要再在各处手写字面色值，否则一定会出现「某处少了演出、某处娱乐是粉色」这类跑偏。 */
  --k-course:#2563EB;   --k-course-bg:rgba(37,99,235,.16);
  --k-ensemble:#D97706; --k-ensemble-bg:rgba(217,119,6,.18);
  --k-show:#DC2626;     --k-show-bg:rgba(220,38,38,.14);
  --k-fun:#16A34A;      --k-fun-bg:rgba(22,163,74,.16);
  --k-deadline:#7C4A21; --k-deadline-bg:rgba(124,74,33,.16);
}

/* 模块主题色：进哪个模块，整页强调色跟哪个模块走 */
body.theme-today{--accent:var(--c-today);--accent-soft:rgba(46,124,246,.10)}
body.theme-circle{--accent:var(--c-circle);--accent-soft:rgba(255,107,74,.10)}
body.theme-journal{--accent:var(--c-journal);--accent-soft:rgba(34,197,94,.10)}
body.theme-schedule{--accent:var(--c-schedule);--accent-soft:rgba(139,92,246,.10)}

*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  line-height:1.7;
  padding-bottom:calc(72px + env(safe-area-inset-bottom));
  -webkit-font-smoothing:antialiased;
  animation:fadein .12s ease;
}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.site-foot{padding:20px 16px 6px;text-align:center;font-size:12px;line-height:1.7;color:#9CA3AF}
.site-foot a{color:#9CA3AF;text-decoration:none}
body.auth-body .site-foot{padding-top:14px}

.page{max-width:640px;margin:0 auto;padding:0 16px}
a{color:var(--accent)}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:20;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
  padding-top:env(safe-area-inset-top);
}
.topbar-in{
  max-width:640px;margin:0 auto;padding:11px 16px;
  display:flex;justify-content:space-between;align-items:center;
}
.brand{font-size:19px;font-weight:600;color:var(--text);text-decoration:none;letter-spacing:.02em}
.brand em{color:var(--accent);font-style:italic;font-weight:600}
.me-link{display:flex;align-items:center;gap:7px;text-decoration:none;color:var(--text);font-size:13.5px}
.me-name{color:var(--text-2)}

/* ---------- 头像 ---------- */
.avatar{
  width:40px;height:40px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  color:#FFFFFF;font-weight:600;font-size:17px;flex:none;
}
.avatar.sm{width:27px;height:27px;font-size:13px}
.avatar.xs{width:22px;height:22px;font-size:11px}
.avatar.lg{width:56px;height:56px;font-size:24px}

/* ---------- 底部导航 ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  display:flex;max-width:640px;margin:0 auto;
  padding-bottom:env(safe-area-inset-bottom);
}
.tabbar a{
  flex:1;text-align:center;padding:13px 0 11px;
  color:var(--text-2);text-decoration:none;
  font-size:14px;letter-spacing:.12em;position:relative;
}
.tabbar a.on{font-weight:600}
.tabbar a.tab-today.on{color:var(--c-today)}
.tabbar a.tab-circle.on{color:var(--c-circle)}
.tabbar a.tab-journal.on{color:var(--c-journal)}
.tabbar a.tab-schedule.on{color:var(--c-schedule)}
.tabbar a.on::before{
  content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:28px;height:3px;border-radius:0 0 3px 3px;
}
.tabbar a.tab-today.on::before{background:var(--c-today)}
.tabbar a.tab-circle.on::before{background:var(--c-circle)}
.tabbar a.tab-journal.on::before{background:var(--c-journal)}
.tabbar a.tab-schedule.on::before{background:var(--c-schedule)}

/* ---------- 按钮 ---------- */
.btn{
  background:var(--accent);color:#FFFFFF;border:none;border-radius:8px;
  padding:10px 24px;font:inherit;font-size:15px;letter-spacing:.08em;
  cursor:pointer;text-decoration:none;display:inline-block;
}
.btn:active{opacity:.85}
.btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.btn.wide{width:100%;padding:12px}
.btn.sm{padding:7px 16px;font-size:14px}
.mini-btn{
  background:transparent;border:1px solid var(--line);border-radius:6px;
  color:var(--text-2);font:inherit;font-size:12px;padding:3px 10px;cursor:pointer;
}
.mini-btn:active{border-color:var(--accent);color:var(--accent)}

/* ---------- 发帖器 ---------- */
.composer{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:14px 14px 12px;margin-top:14px;
  box-shadow:0 2px 10px rgba(31,41,55,.05);
}
.composer textarea{
  width:100%;border:none;background:transparent;
  font:inherit;font-size:15px;color:var(--text);
  resize:vertical;min-height:72px;outline:none;line-height:1.6;
}
.composer textarea::placeholder{color:#9CA3AF}
.composer-row{display:flex;gap:8px;margin-top:8px;align-items:stretch}
/* ---------- 上传选择 ---------- */
.pick{position:relative;overflow:hidden;display:inline-flex;flex:none}
.pick input{position:absolute;inset:0;opacity:0;cursor:pointer;z-index:1}
.pick span{
  border:1px dashed var(--line);border-radius:8px;padding:9px 12px;
  font-size:13px;color:var(--text-2);white-space:nowrap;
}
.pick:has(input:focus) span{border-color:var(--accent);color:var(--accent)}
.composer-hint{font-size:12px;color:#9CA3AF;margin-top:6px;line-height:1.5}
.composer-foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px}
/* 已选文件预览：缩略图/文件名 + 单独删除 */
.pick-preview{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.pv-cell{position:relative;display:inline-flex}
.pv-img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.pv-audio{
  display:inline-flex;align-items:center;max-width:180px;height:36px;
  padding:0 26px 0 10px;font-size:12.5px;color:var(--text-2);
  background:var(--accent-soft);border-radius:8px;
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
}
.pv-del{
  position:absolute;top:-7px;right:-7px;width:22px;height:22px;
  border-radius:50%;border:none;background:#374151;color:#fff;
  font-size:11px;line-height:1;cursor:pointer;padding:0;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 4px rgba(0,0,0,.25);
}
.pv-del:active{transform:scale(.9)}
.pick-name{font-size:12.5px;color:var(--accent)}

/* ---------- 图片网格 ---------- */
.img-grid{display:grid;gap:6px;margin-top:12px}
.img-grid.n1{grid-template-columns:1fr}
.img-grid.n2,.img-grid.n4{grid-template-columns:1fr 1fr}
.img-grid.n3,.img-grid.n5,.img-grid.n6,
.img-grid.n7,.img-grid.n8,.img-grid.n9{grid-template-columns:1fr 1fr 1fr}
.img-cell{display:block;overflow:hidden;border-radius:9px;background:var(--accent-soft);aspect-ratio:1}
.img-grid.n1 .img-cell{aspect-ratio:4/3}
.img-cell img{width:100%;height:100%;object-fit:cover;display:block}
.bili-link{
  flex:1;border:1px dashed var(--line);background:transparent;
  padding:9px 12px;border-radius:8px;font:inherit;font-size:13.5px;
  color:var(--text);outline:none;min-width:0;
}
.bili-link:focus{border-color:var(--accent)}
.bili-link::placeholder{color:#9CA3AF}

/* ---------- 帖子卡 ---------- */
.post{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:16px;margin:14px 0;
}
.post-head{display:flex;gap:11px;align-items:center}
.post-meta{flex:1;min-width:0}
.post-author{font-size:15.5px}
.post-author b{font-weight:600}
.post-meta time{font-size:12px;color:var(--text-2)}
.post-body{margin:12px 0 2px;font-size:15.5px;word-break:break-word}
.role-tag{
  display:inline-block;font-size:11px;color:var(--accent);
  border:1px solid var(--accent);border-radius:4px;
  padding:0 6px;margin-left:7px;vertical-align:2px;letter-spacing:.05em;
  font-style:normal;
}
.del-form{display:inline}
.del-btn{
  background:transparent;border:none;color:#9CA3AF;font-size:15px;
  cursor:pointer;padding:4px 6px;border-radius:6px;
}
.del-btn:active{color:var(--accent)}
.del-btn.sm{font-size:12px;padding:0 4px}
.post-head{flex-wrap:wrap}
/* 帖子的「改改」：与 q-edit 同一套思路——post-mgr 设 contents 让编辑块
   展开后独占整行，否则表单被挤在头像行里、输入框还是浏览器默认窄宽 */
.post-mgr{margin-left:auto;display:contents}
.p-edit{flex:0 0 auto;order:1;margin-left:auto}
.p-edit>summary{
  display:inline-block;list-style:none;cursor:pointer;user-select:none;
  font-size:12.5px;color:var(--text-2);border:1px solid var(--line);
  border-radius:6px;padding:3px 11px;background:#fff;
  -webkit-tap-highlight-color:transparent;
}
.p-edit>summary::-webkit-details-marker{display:none}
.p-edit>summary::marker{content:""}
.p-edit[open]{flex:1 1 100%;order:3;margin-left:0}
.p-edit[open]>summary{color:var(--accent);border-color:var(--accent)}
.p-edit form{display:flex;flex-direction:column;gap:10px;margin-top:10px;align-items:flex-start}
.p-edit textarea,.p-edit input.bili-link{
  width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;
  padding:10px 12px;font:inherit;font-size:15px;color:var(--text);background:#fff;outline:none;
}
.p-edit textarea{min-height:84px;resize:vertical;line-height:1.7}
.p-edit textarea:focus,.p-edit input.bili-link:focus{border-color:var(--accent)}
.pick-hint{font-size:12px;color:#9CA3AF;margin-top:2px}

/* ---------- B 站视频 ---------- */
.bili{
  position:relative;width:100%;padding-top:56.25%;
  margin-top:12px;border-radius:10px;overflow:hidden;background:#1c1a17;
}
.bili iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* 占位卡：点了才加载播放器，避免一页几个视频一起响 */
.bili-lazy{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;
  color:#fff;text-decoration:none;-webkit-tap-highlight-color:transparent;
  background:linear-gradient(135deg,#39445c,#1f2530);
}
.bili-lazy-btn{
  width:58px;height:58px;border-radius:50%;background:var(--primary);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(46,124,246,.35);
  transition:transform .15s ease;
}
.bili-lazy-btn svg{width:26px;height:26px}
.bili-lazy:active .bili-lazy-btn{transform:scale(.93)}
.bili-lazy-txt{font-size:13px;opacity:.9}
.bili-open{
  display:inline-block;font-size:12.5px;color:var(--text-2);
  margin-top:7px;text-decoration:none;
}

/* ---------- 音频播放器 ---------- */
.player{
  margin-top:12px;background:var(--accent-soft);border-radius:12px;
  padding:9px 12px;display:flex;align-items:center;gap:11px;
}
.p-play{
  flex:none;width:40px;height:40px;border-radius:50%;
  background:var(--accent);color:#FFFFFF;border:none;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;padding:0;
}
.p-play:active{transform:scale(.92)}
.p-play .ic{width:18px;height:18px;fill:currentColor}
.p-play .ic-play{margin-left:2px}
.p-play .ic-pause{display:none}
.p-play.playing .ic-play{display:none}
.p-play.playing .ic-pause{display:block}
.p-track{
  flex:1;position:relative;cursor:pointer;
  height:26px;display:flex;align-items:center;min-width:0;
}
.p-track::before{
  content:"";position:absolute;left:0;right:0;top:50%;
  transform:translateY(-50%);height:6px;border-radius:3px;
  background:rgba(31,41,55,.16);
}
.p-fill{
  position:absolute;left:0;top:50%;transform:translateY(-50%);
  height:6px;border-radius:3px;background:var(--accent);
  width:0;pointer-events:none;
}
.p-time{
  flex:none;font-size:12px;color:var(--text-2);
  font-variant-numeric:tabular-nums;min-width:40px;text-align:right;
}

/* ---------- 评论 ---------- */
.c-toggle{
  margin-top:13px;background:transparent;border:none;
  font:inherit;font-size:15px;font-weight:500;color:var(--accent);
  cursor:pointer;padding:10px 6px;letter-spacing:.04em;
  min-height:44px;
}
.c-toggle:active{opacity:.7}
.comments{
  margin-top:8px;border-top:1px dashed var(--line);padding-top:12px;
}
.comment{
  font-size:14px;margin-bottom:9px;padding:6px 0;
  scroll-margin-top:80px; /* 锚点跳转留出顶栏空间 */
}
.c-row{display:block;line-height:1.5}
.comment b{font-weight:600;margin-right:4px}
.c-text{word-break:break-word}
.c-foot{
  display:flex;align-items:center;gap:8px;margin-top:3px;
  color:#9CA3AF;font-size:12px;
}
.comment time{color:#9CA3AF;font-size:12px;margin-right:4px}
.c-reply-btn{
  background:transparent;border:0;padding:2px 6px;cursor:pointer;
  font:inherit;color:var(--accent);font-size:12px;border-radius:4px;
}
.c-reply-btn:hover{background:var(--accent-soft,#E6F0FE)}
.c-reply-to{color:var(--accent);font-size:13px;margin:0 2px}
.c-reply-cancel{
  background:transparent;border:1px solid var(--line);color:var(--text-2);
}
.c-reply-cancel:hover{background:var(--line,#eee)}

/* 嵌套回复（二级）：左缩进 + 左侧引线 */
.comment-reply{
  margin-left:18px;margin-top:4px;margin-bottom:9px;padding:6px 0 6px 10px;
  border-left:2px solid var(--accent-soft,#E6F0FE);
  font-size:14px;scroll-margin-top:80px;
}
.comment-reply .c-row{display:block;line-height:1.5}
.comment-reply .c-text{margin-left:0}

/* 回复表单：默认隐藏，点回复按钮展开 */
.reply-form{
  display:flex;gap:6px;align-items:center;margin:6px 0 4px 18px;
  padding:6px 8px;background:var(--bg-2,#F7F9FC);
  border-radius:8px;
}
.reply-form[hidden]{display:none}
.reply-form input[name="content"]{
  flex:1;border:1px solid var(--line);background:#fff;
  border-radius:6px;padding:6px 10px;font:inherit;font-size:13px;
  color:var(--text);outline:none;min-width:0;
}
.reply-form input[name="content"]:focus{border-color:var(--accent)}

/* flash 高亮：新评论 / 锚点定位时短暂淡黄 */
@keyframes newFlash {
  0%   { background:#FFF6CC; }
  100% { background:transparent; }
}
.new-flash{animation:newFlash 2.2s ease-out;border-radius:6px}

.cform{display:flex;gap:8px;margin-top:11px}
.cform input{
  flex:1;border:1px solid var(--line);background:var(--bg);
  border-radius:8px;padding:9px 12px;font:inherit;font-size:14px;
  color:var(--text);outline:none;min-width:0;
}
.cform input:focus{border-color:var(--accent)}

/* ---------- 悬浮发布按钮 ---------- */
.fab{
  position:fixed;right:18px;bottom:calc(84px + env(safe-area-inset-bottom));
  width:54px;height:54px;border-radius:50%;
  background:var(--accent);color:#FFFFFF;
  display:flex;align-items:center;justify-content:center;
  font-size:28px;font-weight:300;text-decoration:none;z-index:15;
  box-shadow:0 5px 16px rgba(46,124,246,.42);
}
.fab:active{transform:scale(.93)}

/* ---------- 空状态 ---------- */
.empty{
  text-align:center;color:var(--text-2);padding:64px 20px;
  font-size:15px;
}
.empty p + p{margin-top:6px;color:#9CA3AF}
.empty-ic{width:46px;height:46px;margin:0 auto 12px;display:block;opacity:.5}

/* ---------- 提示条 ---------- */
.flash{
  background:var(--danger-soft);border-left:3px solid var(--danger);
  border-radius:0 8px 8px 0;padding:10px 14px;
  font-size:13.5px;color:var(--danger);margin-top:14px;
}
.err{
  background:var(--danger-soft);border-radius:8px;
  padding:9px 13px;font-size:13.5px;color:var(--danger);margin-bottom:12px;
}
.flash-ok{
  position:fixed;top:calc(14px + env(safe-area-inset-top));left:50%;
  transform:translateX(-50%);
  background:var(--accent);color:#FFFFFF;
  padding:9px 22px;border-radius:22px;
  font-size:14px;letter-spacing:.06em;white-space:nowrap;
  z-index:40;box-shadow:0 6px 20px rgba(46,124,246,.4);
  animation:flash-in .28s ease;
}
.flash-ok.hide{
  opacity:0;transform:translateX(-50%) translateY(-10px);
  transition:opacity .35s ease,transform .35s ease;
}
@keyframes flash-in{
  from{opacity:0;transform:translateX(-50%) translateY(-12px)}
  to{opacity:1;transform:translateX(-50%) translateY(0)}
}

/* ---------- 登录 / 注册 ---------- */
body.auth-body{
  background:linear-gradient(180deg,#EAF3FF 0%,#F7FAFF 40%,#FFFFFF 70%);
  padding-bottom:0;
}
.auth{
  max-width:400px;margin:0 auto;padding:36px 22px calc(28px + env(safe-area-inset-bottom));
  min-height:100vh;display:flex;flex-direction:column;justify-content:center;
}
.auth-brand{text-align:center;margin-bottom:32px}
.auth-logo-ic{
  width:86px;height:86px;margin:0 auto 18px;display:block;
  filter:drop-shadow(0 10px 22px rgba(46,124,246,.30));
}
.auth-title{font-size:29px;font-weight:700;letter-spacing:.02em;color:var(--text)}
.auth-title em{color:var(--accent);font-style:normal}
.auth-sub{margin-top:9px;color:var(--text-2);font-size:14.5px;letter-spacing:.05em}
.auth-card{
  background:#FFFFFF;border:1px solid var(--line);border-radius:18px;
  padding:24px 20px 22px;box-shadow:0 14px 44px rgba(31,41,55,.08);
}
.auth-field{position:relative;margin-bottom:13px}
.auth-field .fic{
  position:absolute;left:15px;top:50%;transform:translateY(-50%);
  width:18px;height:18px;color:#9CA3AF;pointer-events:none;
}
.auth-field input{
  width:100%;border:1px solid var(--line);background:var(--card);
  border-radius:12px;padding:13px 14px 13px 44px;font:inherit;font-size:15px;
  color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s,background .15s;
}
.auth-field input:focus{
  border-color:var(--accent);background:#FFFFFF;
  box-shadow:0 0 0 3px var(--accent-soft);
}
.auth .btn.wide{border-radius:12px;padding:13px;font-size:15.5px}
.auth-foot{text-align:center;margin-top:20px;font-size:14px;color:var(--text-2)}

/* ---------- 我的 ---------- */
.me-card{
  display:flex;gap:15px;align-items:center;
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:18px;margin-top:14px;
}
.me-name-row{display:flex;align-items:center;gap:8px;font-size:17px}
.me-since{color:var(--text-2);font-size:13px;margin-top:3px}
.me-rename{margin-top:12px}
.me-rename summary{
  cursor:pointer;color:var(--text-2);font-size:14px;padding:6px 0;
  -webkit-tap-highlight-color:transparent;
}
.me-rename form{display:flex;gap:8px;margin-top:8px}
.me-rename input{
  flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;
  padding:10px 12px;font:inherit;font-size:14px;color:var(--text);outline:none;
}
.me-rename input:focus{border-color:var(--accent)}
/* 改密码：三个输入框要纵向排，别挤一行 */
.me-pw form{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.me-pw input{flex:none;width:100%}
.me-pw input[type=password]{padding:11px 12px}
.me-pw .btn{align-self:flex-start;min-height:44px;padding:0 24px}
.me-pw-tip{margin:8px 0 0;font-size:12px;color:var(--text-2);line-height:1.6}
.btn.ghost.wide{display:block;text-align:center;margin-top:14px}

.admin{margin-top:26px}
.admin h3{
  font-size:16px;padding-left:11px;border-left:3px solid var(--accent);
  margin:22px 0 10px;
}
.admin-tip{font-size:13px;color:var(--text-2);margin-bottom:10px}
.admin-tip.dim{color:#9CA3AF}
.invite-form{display:flex;gap:8px;align-items:center}
.invite-form select{
  border:1px solid var(--line);background:var(--card);border-radius:8px;
  font:inherit;font-size:14px;color:var(--text);padding:8px 10px;outline:none;
}
.invite-list{list-style:none;margin-top:12px}
.invite-list li{
  background:var(--card);border:1px dashed var(--line);border-radius:10px;
  padding:11px 14px;margin-bottom:8px;
  display:flex;align-items:center;gap:10px;
}
.invite-list code{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:16px;letter-spacing:.14em;color:var(--accent);font-weight:600;
}
.invite-role{font-size:12px;color:var(--text-2)}
.invite-list li.invite-item{display:block}
.invite-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.invite-tag{font-size:11px;line-height:1.6;color:var(--accent);background:rgba(46,124,246,.1);border-radius:999px;padding:2px 8px}
.invite-link{display:flex;align-items:center;gap:8px;margin-top:8px}
.invite-url{flex:1;min-width:0;font-size:12px;color:var(--text-2);word-break:break-all;line-height:1.45}
.invite-link .mini-btn{min-height:44px;padding:0 12px;flex:none}
.invite-form{flex-wrap:wrap}
.invite-form input{
  flex:1 1 100%;min-height:44px;border:1px solid var(--line);background:var(--card);
  border-radius:8px;font:inherit;font-size:14px;color:var(--text);padding:8px 10px;outline:none;
}
.invite-form input:focus{border-color:var(--accent)}
.member-table{width:100%;border-collapse:collapse;font-size:14px}
.member-table td{border-bottom:1px solid var(--line);padding:10px 4px;vertical-align:middle}
.m-name{display:flex;align-items:center;gap:8px;font-weight:600}
.m-status{color:var(--ok);font-size:13px}
.m-status.off{color:#9CA3AF}
.member-table td:nth-child(2){color:var(--text-2);font-size:13px;white-space:nowrap}
.member-table td:last-child{text-align:right;width:64px}
.role-form{display:inline-flex;gap:4px;align-items:center}
.role-form select{
  border:1px solid var(--line);background:var(--card);border-radius:8px;
  font:inherit;font-size:12.5px;color:var(--text);padding:5px 6px;outline:none;
}

/* ---------- 建设中 ---------- */
.building{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  text-align:center;padding:52px 24px;margin-top:14px;
}
.building h2{font-size:20px;margin-bottom:12px}
.b-stage{
  display:inline-block;font-size:12px;color:var(--accent);
  border:1px solid var(--accent);border-radius:4px;padding:1px 8px;
  margin-left:9px;vertical-align:3px;font-weight:400;
}
.building p{color:var(--text-2);font-size:14.5px;margin-bottom:8px}
.building .dim{font-size:13px;color:#9CA3AF;margin-bottom:22px}

/* ---------- 通用卡片 ---------- */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:16px;margin:14px 0;
}
.sec h3{font-size:16px;letter-spacing:.08em;margin:0 0 12px;font-weight:700}
.greeting{color:var(--text-2);font-size:14.5px;margin-top:6px}

/* ---------- 今日 · 热力图 ---------- */
.heat-card{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:16px;margin:14px 0;
}
.heat-title{font-size:14px;color:var(--text-2);letter-spacing:.06em;margin-bottom:14px}
.heat-row{display:flex;align-items:flex-end;justify-content:space-between;gap:6px;min-height:74px}
.heat-col{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1}
.heat-bar{
  width:100%;max-width:30px;min-height:6px;border-radius:5px 5px 0 0;
  background:rgba(31,41,55,.09);
}
.heat-bar.on{background:var(--accent)}
.heat-day{font-size:11px;color:var(--text-2)}
.heat-note{font-size:12px;color:#9CA3AF;margin-top:12px;text-align:right}

/* ---------- 今日 · 留个印 ---------- */
.p-form{display:flex;flex-direction:column;gap:10px}
.p-form input{
  width:100%;box-sizing:border-box;border:1px solid var(--line);background:transparent;
  border-radius:8px;padding:10px 12px;font:inherit;font-size:15px;color:var(--text);outline:none;
}
.p-form input:focus{border-color:var(--accent)}
.p-row{display:flex;gap:10px;align-items:center}
.time-picker{display:flex;gap:8px;align-items:center;flex:1;min-width:0}
.tp{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.tp select{
  flex:1;min-width:0;box-sizing:border-box;border:1px solid var(--line);background:transparent;
  border-radius:8px;padding:11px 8px;font:inherit;font-size:16px;color:var(--text);outline:none;
}
.tp select:focus{border-color:var(--accent)}
.tp-unit{font-size:13px;color:var(--text-2);white-space:nowrap}
.media-pick{margin-top:2px}
.media-note{font-size:12px;color:#9CA3AF;margin-top:-2px}
.p-video{width:100%;border-radius:9px;margin-top:8px;background:#000;display:block;max-height:320px;object-fit:contain}
.p-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pick-name{
  font-size:13px;color:var(--text-2);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;
}
.p-item{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.p-item:first-of-type{border-top:none;padding-top:0;margin-top:0}
.p-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.p-head b{font-weight:600}
.p-min{color:var(--accent);font-size:14px;white-space:nowrap}
.p-note{color:var(--text-2);font-size:14px;margin-top:4px}

/* ---------- 今日 · 一问 ---------- */
.q-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.q-head h3{margin-bottom:0}
.q-sub{font-size:12.5px;color:var(--text-2)}
/* 随笔卡片：深一点的灰底，文字保持清晰 */
.q-card{background:#EEF0F3;border:1px solid #E2E5EA}
.q-card .q-ask{background:#fff}

/* Thinking about…（都行页置顶）：暖橙强调，与都行主色 --c-circle 一体。
   只有这一块用，今日页的「反思题」不加 ta-card，保持中性灰底。
   改色只动这里，别去改 .q-card 本体。 */
.q-card.ta-card{
  background:#FFF4F0;
  border:1px solid rgba(255,107,74,.28);
  border-left:4px solid #FF6B4A;
  padding-left:13px;
}
.ta-card .q-head{flex-wrap:wrap}
.ta-card .q-head h3{
  font-family:'Caveat','Snell Roundhand','Bradley Hand',cursive;
  font-size:26px;color:#E8501C;letter-spacing:.01em;white-space:nowrap;font-weight:400;
}
.ta-card .q-sub{flex:0 0 100%;margin-top:2px}
.ta-card .q-sub{color:#A8735C}
.ta-card .q-ask{border-color:rgba(255,107,74,.42);background:#fff}
.ta-card .q-item{border-top-color:rgba(255,107,74,.22)}
.ta-card .q-date{color:#B08C7A}
.ta-card .q-label{color:#A8735C}
/* 随笔分类标签：专业=沉稳深灰，生活=轻盈淡橙 */
.q-cat{
  flex:none;font-size:11px;font-weight:500;border-radius:4px;
  padding:2px 8px;line-height:1.6;letter-spacing:.06em;
}
.q-cat.pro{background:#4B5563;color:#F3F4F6}
.q-cat.life{background:rgba(255,107,74,.16);color:#E8501C}
/* 发起随笔时的分类选择 */
.q-cat-pick{display:flex;gap:6px;align-items:center}
.q-cat-opt{cursor:pointer;-webkit-tap-highlight-color:transparent}
.q-cat-opt input{position:absolute;opacity:0;width:0;height:0}
.q-cat-opt span{
  display:inline-block;font-size:12.5px;border-radius:6px;
  padding:6px 12px;border:1px solid var(--line);color:var(--text-2);
  transition:all .15s ease;
}
.q-cat-opt.pro input:checked + span{background:#4B5563;border-color:#4B5563;color:#fff}
.q-cat-opt.life input:checked + span{background:rgba(255,107,74,.16);border-color:#FF6B4A;color:#E8501C}
.q-ask{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px dashed var(--line);border-radius:10px;margin-bottom:14px}
.q-ask input{
  width:100%;box-sizing:border-box;border:1px solid var(--line);background:transparent;
  border-radius:8px;padding:10px 12px;font:inherit;font-size:15px;color:var(--text);outline:none;
}
.q-ask input:focus{border-color:var(--accent)}
.q-ask-row{display:flex;gap:8px;align-items:center;justify-content:space-between}
.q-item{padding:14px 0;border-top:1px solid var(--line)}
.q-item:first-of-type{border-top:none}
.q-item-meta{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.q-date{font-size:11px;color:#9CA3AF;letter-spacing:.05em}
.q-img{max-width:100%;max-height:320px;border-radius:9px;display:block;margin:8px 0;object-fit:contain;background:#f5f5f5}
.q-text{font-size:16px;line-height:1.75;margin-bottom:6px}
.q-label{display:block;font-size:12px;color:var(--text-2);letter-spacing:.1em;margin:14px 0 6px}

/* ---------- 编辑区（改改/删/改回应）：此前完全无样式，原生控件挤在标签行里 ----------
   原理：.q-mgr 设 display:contents，让其内部的 details.q-edit 和删除表单直接参与
   .q-item-meta 的 flex 布局；未展开时「改改/删」并排靠右，展开后编辑表单独占整行。 */
.q-item-meta{flex-wrap:wrap}
.q-mgr{display:contents}
.q-edit{flex:0 0 auto;order:1;margin-left:auto}
.q-edit>summary{
  display:inline-block;list-style:none;cursor:pointer;user-select:none;
  font-size:12.5px;color:var(--text-2);
  border:1px solid var(--line);border-radius:6px;padding:3px 11px;
  background:#fff;-webkit-tap-highlight-color:transparent;
}
.q-edit>summary::-webkit-details-marker{display:none}
.q-edit>summary::marker{content:""}
.q-edit[open]{flex:1 1 100%;order:3;margin-left:0}
.q-edit[open]>summary{color:var(--accent);border-color:var(--accent)}
.q-edit form{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.q-edit textarea{
  width:100%;box-sizing:border-box;min-height:84px;resize:vertical;
  border:1px solid var(--line);border-radius:8px;padding:10px 12px;
  font:inherit;font-size:15px;line-height:1.7;color:var(--text);
  background:#fff;outline:none;
}
.q-edit textarea:focus{border-color:var(--accent)}
.q-edit .q-ask-row{justify-content:flex-start}
.del-form{order:2}
/* 只作用于 Thinking about…/反思题的「删」——帖子的 ✕ 用 202 行那套灰色样式，别被波及 */
.q-item .del-btn{
  border:1px solid var(--line);background:transparent;cursor:pointer;
  font-size:12.5px;color:var(--danger);padding:4px 10px;border-radius:6px;
  -webkit-tap-highlight-color:transparent;
}
.q-item .del-btn:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
.q-item-meta:has(.q-edit[open]) .del-form{margin-left:auto}
/* 「我的回应」下方改自己回应的编辑块 */
.q-mine + .q-edit{margin-top:8px}
.q-mine + .q-edit>summary{display:inline-block}
.q-mine{background:var(--accent-soft);border-radius:10px;padding:12px 14px}
.q-mine p{font-size:15px;line-height:1.7}
.q-others{margin-top:4px}
.q-answer{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px dashed var(--line)}
.q-answer:last-child{border-bottom:none}
.q-answer b{font-weight:600;font-size:14px}
.q-a-text{font-size:15px;line-height:1.7}
.empty-note{color:#9CA3AF;font-size:13.5px}
.q-form{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.q-form textarea{
  width:100%;box-sizing:border-box;border:1px solid var(--line);background:transparent;
  border-radius:8px;padding:10px 12px;font:inherit;font-size:15px;line-height:1.6;
  resize:vertical;min-height:76px;outline:none;color:var(--text);
}
.q-form textarea:focus{border-color:var(--accent)}
.q-clear-img{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;color:var(--text-2);margin-top:4px}

/* 一问：回复折叠 + 历史窗口 + 深思引导 */
.q-form-hint{font-size:12px;color:#9CA3AF}
.q-others-fold{margin-top:10px}
.q-others-fold summary,.q-past summary{font-size:13px;color:var(--accent);cursor:pointer;font-weight:600}
.q-others-fold .q-others{margin-top:8px}
.q-past{margin-top:14px;border-top:1px dashed var(--line);padding-top:10px}
.q-past-list{margin-top:6px}
.q-past-item .q-text{font-size:14.5px;color:var(--text-2)}

/* ---------- 今日 · 老师出题 ---------- */
.teacher-card{border-style:dashed;background:transparent}
.teacher-card summary{font-size:13.5px;color:var(--text-2);cursor:pointer}
.t-block{display:flex;gap:8px;margin-top:12px}
.t-block input{
  flex:1;min-width:0;box-sizing:border-box;border:1px solid var(--line);
  background:transparent;border-radius:8px;padding:9px 12px;
  font:inherit;font-size:14px;outline:none;color:var(--text);
}
.t-block input:focus{border-color:var(--accent)}

/* ---------- 我的 ---------- */
.me-info{flex:1;min-width:0}

/* ---------- 记录 ---------- */
.j-head{padding:6px 2px 2px}
.j-head h1{font-size:24px;letter-spacing:.04em}
.j-viewing{font-size:14px;color:var(--text-2);margin-top:6px}
.j-viewing b{color:var(--accent)}
.j-viewing a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft)}

.j-switch{
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:12px 14px;margin:14px 0;
}
.j-switch summary{font-size:13.5px;color:var(--text-2);cursor:pointer}
.j-switch-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.j-chip{
  display:inline-block;border:1px solid var(--line);border-radius:20px;
  padding:5px 14px;font-size:13.5px;color:var(--text-2);text-decoration:none;
}
.j-chip.on{background:var(--accent);border-color:var(--accent);color:#FFFFFF}

.j-month{display:flex;align-items:center;justify-content:space-between;margin:18px 0 4px;padding:0 2px}
.j-month-label{font-size:16px;letter-spacing:.1em}
.j-assess-link{text-align:center;font-size:13.5px;margin:8px 0 0}
.j-nav{
  width:36px;height:36px;line-height:34px;text-align:center;
  border:1px solid var(--line);border-radius:50%;
  color:var(--text-2);text-decoration:none;font-size:20px;
}

.j-stats{text-align:center;padding:22px 16px}
.j-num b{font-size:34px;color:var(--accent);font-weight:600}
.j-num span{font-size:14px;color:var(--text-2);margin-left:6px}
.j-meta{font-size:13.5px;color:var(--text-2);margin-top:6px}

.j-bars{display:flex;flex-direction:column;gap:10px}
.j-bar-row{display:flex;align-items:center;gap:10px;font-size:14px}
.j-bar-name{
  flex:none;width:38%;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;color:var(--text);
}
.j-bar-track{flex:1;height:8px;background:rgba(31,41,55,.08);border-radius:4px;overflow:hidden}
.j-bar-track i{display:block;height:100%;background:var(--accent);border-radius:4px}
.j-bar-num{flex:none;width:46px;text-align:right;color:var(--text-2);font-size:13px}

.j-day{margin:20px 0 0}
.j-day-head{display:flex;justify-content:space-between;align-items:baseline;padding:0 4px 8px}
.j-day-date{font-size:14px;color:var(--text-2);letter-spacing:.08em}
.j-day-min{font-size:13px;color:var(--accent)}
.j-item{margin:10px 0;padding:14px}
.j-empty{font-size:14px;color:#9CA3AF;text-align:center;margin:26px 0;line-height:2.2}
.j-empty .j-chip{margin:0 4px}

/* ---------- 日程页 ---------- */
.sc-cal{padding:18px 14px 14px}
.sc-week{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.sc-week-head span{
  text-align:center;font-size:12.5px;color:var(--text-2);
  padding:4px 0;letter-spacing:.1em;
}
.sc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.sc-day{
  display:flex;flex-direction:column;gap:4px;
  min-height:92px;padding:6px 5px;border-radius:8px;
  color:var(--text);text-decoration:none;cursor:pointer;
}
.sc-day.blank{min-height:0}
.sc-day:active{background:var(--accent-soft)}
.sc-num{font-style:normal;font-size:14px;font-weight:600;color:var(--text);text-align:center;margin-bottom:3px}
.sc-day.today .sc-num{
  color:#fff;background:var(--accent);border-radius:50%;
  width:22px;height:22px;line-height:22px;margin:3px auto 1px;
}
.sc-day.sel{background:var(--accent-soft);outline:1.5px solid var(--accent)}
.sc-chip{
  font-weight:500;font-size:13px;line-height:1.5;
  border-radius:5px;padding:2px 6px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;word-break:break-word;
}
.sc-chip.k-course{background:var(--k-course-bg);color:var(--k-course)}
.sc-chip.k-ensemble{background:var(--k-ensemble-bg);color:var(--k-ensemble)}
.sc-chip.k-show{background:var(--k-show-bg);color:var(--k-show)}
.sc-chip.k-fun{background:var(--k-fun-bg);color:var(--k-fun)}
.sc-chip.k-deadline{background:var(--k-deadline-bg);color:var(--k-deadline)}
.sc-chip.more{background:transparent;color:var(--text-2);font-weight:600}
.sc-tip{font-size:12px;color:#9CA3AF;text-align:center;margin:10px 0 0}

.sc-form select{
  border:1px solid var(--line);background:transparent;border-radius:8px;
  padding:10px 8px;font:inherit;font-size:14px;color:var(--text);outline:none;
}
.sc-form select:focus{border-color:var(--accent)}
.sc-date{flex:1}
.sc-kind{flex:none;width:96px}
.sc-time{flex:1}
.sc-dash{flex:none;font-size:13px;color:var(--text-2)}
.sc-members{
  border:1px solid var(--line);border-radius:8px;padding:10px 12px 12px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:8px 12px;
}
.sc-members legend{grid-column:1/-1;font-size:12.5px;color:var(--text-2);padding:0 4px}
.sc-mcheck{
  min-width:0;max-width:100%;font-size:13.5px;display:flex;align-items:center;
  gap:6px;color:var(--text);white-space:nowrap;line-height:1.4;
}
/* span 必须能缩又能吃满剩余空间：flex:1 1 0（基准=0）+ min-width:0 + ellipsis 三件套。
   曾用 flex:1 1 auto，在「grid item 拉伸 + overflow:hidden」下 span 会被算成 0px 宽、名字整个消失。 */
.sc-mcheck span{
  flex:1 1 0;min-width:0;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;
}
/* checkbox 必须重置 .p-form input 的 width:100%/border/padding：
   否则 checkbox 会被撑成整行宽（302px），把名字挤到 0。
   这里是参与人「只剩框框没人名」的真正根因。 */
.sc-mcheck input{
  accent-color:var(--accent);flex:none;width:auto;min-width:0;height:auto;
  margin:0;padding:0;border:0;background:none;
}

.sc-evt .p-head b{padding-right:8px}
/* 兜底色：万一 kind 不在五色内，也保证有底有字色，不会「只有字没有背景」 */
.sc-kind-tag{
  flex:none;font-size:11.5px;font-weight:400;border-radius:4px;
  padding:1px 7px;line-height:1.7;
  background:var(--card);color:var(--text-2);
}
.sc-kind-tag.k-course{background:var(--k-course-bg);color:var(--k-course)}
.sc-kind-tag.k-ensemble{background:var(--k-ensemble-bg);color:var(--k-ensemble)}
.sc-kind-tag.k-show{background:var(--k-show-bg);color:var(--k-show)}
.sc-kind-tag.k-fun{background:var(--k-fun-bg);color:var(--k-fun)}
.sc-kind-tag.k-deadline{background:var(--k-deadline-bg);color:var(--k-deadline)}
.sc-meta{font-size:12.5px;color:var(--text-2);margin-top:4px}

/* 已发布日程的「修改 / 删除」动作组。删除在右角不动，修改改用内嵌折叠面板。 */
.sc-actions{
  display:flex;justify-content:flex-end;align-items:center;gap:6px;
  margin-top:8px;
}
.sc-edit{position:relative;font-size:12.5px}
.sc-edit>summary{
  list-style:none;cursor:pointer;color:var(--accent);
  padding:6px 12px;border-radius:6px;border:1px solid var(--line);
  font-size:12.5px;line-height:1.4;min-height:30px;display:inline-flex;align-items:center;
}
.sc-edit>summary::-webkit-details-marker{display:none}
.sc-edit[open]>summary{background:var(--accent-soft);border-color:var(--accent)}
.sc-edit .sc-form{
  position:absolute;right:0;top:calc(100% + 6px);z-index:5;
  background:var(--bg);border:1px solid var(--line);border-radius:10px;
  padding:14px;box-shadow:0 6px 24px rgba(0,0,0,.08);
  width:min(420px,calc(100vw - 32px));
}
@media(max-width:700px){
  /* 手机端折叠面板就不要绝对定位了，占满整张卡片更顺手 */
  .sc-edit .sc-form{position:static;width:auto;box-shadow:none;margin-top:8px}
}

.sc-up-row{
  display:flex;align-items:baseline;gap:10px;
  padding:10px 8px 10px 12px;border-bottom:1px solid var(--line);
  text-decoration:none;color:var(--text);font-size:13.5px;
  border-left:4px solid transparent;background:var(--card);
}
.sc-up-row:last-child{border-bottom:none}
.sc-up-date{flex:none;color:var(--text-2);font-size:12.5px;letter-spacing:.05em}
.sc-up-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.sc-up-who{flex:none;color:var(--text-2);font-size:12px;max-width:34%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-up-row.k-course{border-left-color:var(--k-course)}
.sc-up-row.k-ensemble{border-left-color:var(--k-ensemble)}
.sc-up-row.k-show{border-left-color:var(--k-show)}
.sc-up-row.k-fun{border-left-color:var(--k-fun)}
.sc-up-row.k-deadline{border-left-color:var(--k-deadline)}

/* ---------- 活动召集 ---------- */
.gather-tip{font-size:13px;color:var(--text-2);margin-bottom:12px}
.gather-new{border:1px dashed var(--line);border-radius:10px;padding:10px 14px}
.gather-new summary{font-size:13.5px;color:var(--accent);cursor:pointer}
.gather-new form{margin-top:12px}
.gather-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.gather-card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px;scroll-margin-top:80px}
.gather-card.done{background:var(--card)}
.gather-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.gather-title{font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.gather-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.gather-badge{flex:none;font-size:11px;border-radius:4px;padding:1px 7px;line-height:1.7}
.gather-badge.open{background:var(--accent-soft);color:var(--accent)}
.gather-badge.decided{background:rgba(34,197,94,.12);color:#16A34A}
.gather-meta{font-size:12.5px;color:var(--text-2);margin-top:3px}
.gather-note{font-size:13.5px;color:var(--text-2);margin-top:6px}
.gather-decided{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  background:var(--accent-soft);border-radius:8px;padding:8px 12px;margin-top:10px;
  font-size:14px;
}
.gather-decided-date{font-weight:600}
.gather-decided-time{color:var(--text-2);font-size:13px}
.gather-voters{font-size:12.5px;color:var(--text-2);margin-top:8px}
.gather-chart-wrap{margin-top:10px}
.gather-chart{display:flex;align-items:flex-end;gap:2px;height:96px;padding:0 2px;border-bottom:1px solid var(--line)}
.gbar{flex:1;min-width:6px;background:var(--accent);opacity:.22;border-radius:3px 3px 0 0;min-height:2px;position:relative}
.gbar.mine{opacity:.55}
.gbar.common{background:var(--ok);opacity:1}
.gbar-count{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--text-2);font-weight:600}
.gbar-labels{display:flex;gap:2px;padding:4px 2px 0}
.gbar-label{flex:1;text-align:center;font-size:9.5px;color:#9CA3AF;line-height:1}
.gather-common{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:12px;background:rgba(34,197,94,.10);border-radius:8px;padding:8px 12px}
.gather-common-label{font-size:12.5px;font-weight:600;color:#16A34A}
.common-chip{font-size:13px;font-weight:700;color:#16A34A;background:var(--bg);border:1px solid rgba(34,197,94,.35);border-radius:8px;padding:2px 10px}
.gather-common-none{font-size:12.5px;color:#9CA3AF;margin-top:10px}
.gather-card .empty-note{margin-top:10px}
.gather-form{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.gather-my-hint{color:#9CA3AF}
.gather-mine{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.gather-my-row{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--card);border-radius:8px;padding:6px 10px;font-size:13px;
}
.gather-decide{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.gather-decide summary{font-size:12.5px;color:var(--text-2);cursor:pointer}
.gather-decide form{margin-top:10px}
.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;margin-top:10px}
.slot{position:relative;display:flex;align-items:center;justify-content:center;min-height:36px;padding:6px 2px;border:1px solid var(--line);border-radius:8px;background:var(--card);font-size:11.5px;color:var(--text-2);cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.slot input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.slot.on,.slot:has(input:checked){background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}

/* ---------- 自测页 ---------- */
.a-form{gap:4px}
.a-item{display:flex;flex-direction:column;gap:8px;padding:13px 0;border-bottom:1px solid var(--line)}
.a-item:last-child{border-bottom:none}
.a-name{font-size:15px;font-weight:600}
.a-opts{display:flex;gap:0;flex-wrap:nowrap}
.a-opt{flex:1;display:flex;justify-content:center}
.a-opt input{position:absolute;opacity:0;pointer-events:none}
.a-opt span{
  display:flex;align-items:center;justify-content:center;
  width:100%;max-width:32px;aspect-ratio:1/1;min-width:24px;
  border:1px solid var(--line);border-radius:50%;
  font-size:13.5px;color:var(--text-2);cursor:pointer;
}
.a-opt input:checked + span{background:var(--accent);border-color:var(--accent);color:#FFFFFF}
.a-ta{
  width:100%;box-sizing:border-box;border:1px solid var(--line);background:transparent;
  border-radius:8px;padding:9px 12px;font:inherit;font-size:14px;color:var(--text);
  outline:none;resize:vertical;min-height:40px;
}
.a-ta:focus{border-color:var(--accent)}
.a-hint{font-size:12.5px;color:#9CA3AF;text-align:center;margin-top:8px}

/* 我的最新一次：自评 vs 师评 */
.a-latest{display:flex;flex-direction:column;gap:12px}
.a-latest-src{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.a-tag{flex:none;font-size:12px;border-radius:6px;padding:1px 8px;line-height:1.7}
.a-tag.self{background:var(--accent-soft);color:var(--accent)}
.a-tag.teacher{background:rgba(239,68,68,.12);color:#EF4444}
.a-score-line{display:flex;align-items:baseline;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:14px}
.a-score-line:last-child{border-bottom:none}
.a-score-line b{flex:none;width:5.5em;font-weight:600;color:var(--text)}
.a-score-line .a-num{flex:none;font-weight:600;color:var(--accent)}
.a-score-line .a-num.t{color:#EF4444}
.a-score-line .a-note-txt{flex:1;color:var(--text-2);font-size:13px;line-height:1.7}

/* 历史回顾：视图 tab + 雷达图 + 大家排行 */
.a-view-tabs{display:flex;gap:6px;margin:14px 0 12px}
.a-view-tab{
  flex:1;padding:8px 0;border:1px solid var(--line);border-radius:10px;
  background:transparent;color:var(--text-2);font-size:14px;cursor:pointer;
}
.a-view-tab.on{background:var(--accent);border-color:var(--accent);color:#FFFFFF;font-weight:600}
.a-view[hidden]{display:none}

.a-hist-item{padding:10px 0;border-bottom:1px solid var(--line)}
.a-hist-item:last-child{border-bottom:none}
.a-hist-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.a-hist-head time{font-size:13px;color:var(--text);font-weight:600}
.a-hist-avg{font-size:12.5px;color:var(--accent);font-weight:600}

.a-radar{display:block;width:100%;max-width:320px;margin:4px auto 0}
.a-radar-label{font-size:11.5px;fill:var(--text-2)}
.a-radar-legend{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:8px;font-size:13px;color:var(--text-2)}
.a-lg-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}
.a-lg-dot.self{background:#2E7CF6}
.a-lg-dot.teacher{background:#EF4444}

.a-lb-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px}
.a-lb-name{flex:none;width:5.5em;color:var(--text)}
.a-lb-bar{flex:1;height:9px;background:var(--accent-soft);border-radius:5px;overflow:hidden}
.a-lb-bar i{display:block;height:100%;background:var(--accent);border-radius:5px}
.a-lb-num{flex:none;width:3em;text-align:right;font-weight:600;color:var(--accent)}

/* 「我的自测记录」折叠卡：每个 <details> 一条记录；最新默认展开 */
.a-rec-list{display:flex;flex-direction:column;gap:8px}
.a-rec-card{
  border:1px solid var(--line);border-radius:12px;background:var(--card);
  overflow:hidden;
}
.a-rec-card.on{border-color:rgba(46,124,246,.4)}
.a-rec-card summary{
  display:flex;align-items:center;gap:10px;
  min-height:46px;padding:0 14px;cursor:pointer;list-style:none;
  -webkit-tap-highlight-color:transparent;user-select:none;
}
.a-rec-card summary::-webkit-details-marker{display:none}
.a-rec-card summary::after{content:"";flex:none;width:8px;height:8px;
  border-right:2px solid var(--text-2);border-bottom:2px solid var(--text-2);
  transform:rotate(45deg);transition:transform .18s ease;margin-left:4px}
.a-rec-card[open] summary::after{transform:rotate(225deg)}
.a-rec-when{font-size:13px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.a-rec-avg{font-size:12.5px;color:var(--accent);font-weight:600;margin-left:auto}
.a-rec-card summary .a-rec-avg{margin-left:auto}
.a-rec-card[open] .a-rec-avg{margin-left:0}
.a-rec-body{padding:4px 14px 12px;border-top:1px dashed var(--line)}
.a-rec-full{display:block;font-size:12px;color:var(--text-2);margin:8px 0 6px;font-variant-numeric:tabular-nums}
.a-rec-block-title{margin:14px 0 8px;font-size:13px;font-weight:600;color:var(--text-2)}

/* 当月总览：两张数字并排 */
.a-month-num-row{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 14px;
}
.a-month-box{
  padding:14px 12px;border-radius:14px;background:var(--card);
  border:1px solid var(--line);border-left:4px solid var(--accent);
  text-align:left;
}
.a-month-box.teacher{border-left-color:#EF4444}
.a-mb-label{font-size:12.5px;color:var(--text-2);margin-bottom:4px}
.a-mb-avg{font-size:30px;font-weight:700;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums}
.a-month-box.teacher .a-mb-avg{color:#EF4444}
.a-month-box.self .a-mb-avg{color:#2E7CF6}
.a-mb-count{font-size:12px;color:var(--text-2);margin-top:6px}

/* 紧凑条形图（题多时替代雷达图）：默认折叠，每题一行双细条 */
.a-fold{border:1px solid var(--line);border-radius:12px;margin-top:10px;overflow:hidden}
.a-fold summary{display:flex;align-items:center;justify-content:space-between;gap:8px;
  min-height:46px;padding:0 14px;cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent;user-select:none}
.a-fold summary::-webkit-details-marker{display:none}
.a-fold summary::after{content:"";flex:none;width:8px;height:8px;margin-left:auto;
  border-right:2px solid var(--text-2);border-bottom:2px solid var(--text-2);
  transform:rotate(45deg);transition:transform .18s ease;margin-right:3px}
.a-fold[open] summary::after{transform:rotate(225deg)}
.a-fold-t{font-size:14.5px;font-weight:600;color:var(--text)}
.a-fold-hint{font-size:12px;color:var(--text-2)}
.a-bars{display:flex;flex-direction:column;padding:0 14px 6px}
.a-bar-item{display:flex;align-items:center;gap:10px;padding:6px 0}
.a-bar-item + .a-bar-item{border-top:1px solid var(--line)}
.a-bar-name{flex:none;width:5.5em;font-size:13px;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a-bar-lines{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.a-bar-lines i{display:block;height:7px;border-radius:4px}
.a-bar-lines i.self{background:#2E7CF6}
.a-bar-lines i.teacher{background:#EF4444}
.a-bar-nums{flex:none;width:2.2em;display:flex;flex-direction:column;align-items:flex-end;
  font-size:12px;font-weight:600;line-height:1.3}
.a-bar-nums .self{color:#2E7CF6}
.a-bar-nums .teacher{color:#EF4444}
.a-fold .a-radar-legend{padding:6px 14px 0}
.a-fold .a-note{padding:0 14px 12px}

/* 全员记录（只读） */
.a-feed{display:flex;flex-direction:column;gap:8px}
.a-feed-item{padding:13px 0;border-bottom:1px solid var(--line)}
.a-feed-item:last-child{border-bottom:none}
.a-feed-head{display:flex;align-items:center;gap:10px}
.a-feed-head .a-meta{flex:1;min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.a-feed-head b{font-size:14.5px}
.a-feed-head time{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums}
.a-feed-avg{font-size:12.5px;color:var(--accent);font-weight:600}
.a-feed-scores{margin-top:10px}
.a-feed-row{display:flex;gap:8px;align-items:baseline;font-size:13.5px;padding:3px 0}
.a-feed-row .a-n{flex:none;width:5.5em;color:var(--text-2)}
.a-feed-row .a-v{flex:none;font-weight:600;color:var(--accent)}
.a-feed-row .a-v.t{color:#EF4444}
.a-feed-row .a-note-txt{color:var(--text-2);font-size:12.5px;line-height:1.6}

/* 按人折叠的「大家的自测」 */
.a-user-card{
  border:1px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden;
}
.a-user-card summary{
  display:flex;align-items:center;gap:10px;
  min-height:48px;padding:0 14px;cursor:pointer;list-style:none;
  -webkit-tap-highlight-color:transparent;user-select:none;
}
.a-user-card summary::-webkit-details-marker{display:none}
.a-user-card summary::after{content:"";flex:none;width:8px;height:8px;margin-left:auto;
  border-right:2px solid var(--text-2);border-bottom:2px solid var(--text-2);
  transform:rotate(45deg);transition:transform .18s ease}
.a-user-card[open] summary::after{transform:rotate(225deg)}
.a-user-name{flex:none;font-size:14.5px;font-weight:600;color:var(--text);display:inline-flex;align-items:center;gap:6px}
.a-user-meta{flex:none;font-size:12px;color:var(--text-2);margin-left:auto;margin-right:8px;font-variant-numeric:tabular-nums}
.a-user-body{padding:0 14px 12px;border-top:1px dashed var(--line)}
.a-user-body .a-feed-item{padding:12px 0}
.a-user-body .a-feed-item:first-child{padding-top:14px}


/* 老师对照表 */
.a-cmp-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.a-cmp{border-collapse:collapse;font-size:13px;min-width:100%}
.a-cmp th,.a-cmp td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:center;white-space:nowrap}
.a-cmp th{font-weight:600;color:var(--text)}
.a-cmp td:first-child,.a-cmp th:first-child{text-align:left;position:sticky;left:0;background:var(--card)}
.a-cmp .a-cmp-avg td{font-weight:600;color:var(--accent);border-top:2px solid var(--line)}
.a-cmp-teach{color:#EF4444;font-weight:600}

/* 对照（老师）：按评分人筛选 + 学生卡片（纵向，30 人也读得动） */
.a-cmp-chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 14px}
.a-cmp-chips .j-chip{display:inline-flex;align-items:center;min-height:36px}
.a-cmp-list{display:flex;flex-direction:column;gap:8px}
.a-cmp-card{border:1px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.a-cmp-card summary{
  display:flex;align-items:center;gap:10px;
  min-height:48px;padding:0 14px;cursor:pointer;list-style:none;
  -webkit-tap-highlight-color:transparent;user-select:none;
}
.a-cmp-card summary::-webkit-details-marker{display:none}
.a-cmp-card summary::after{content:"";flex:none;width:8px;height:8px;margin-left:10px;
  border-right:2px solid var(--text-2);border-bottom:2px solid var(--text-2);
  transform:rotate(45deg);transition:transform .18s ease}
.a-cmp-card[open] summary::after{transform:rotate(225deg)}
.a-cmp-card .avatar{width:30px;height:30px;font-size:13px}
.a-cmp-name{font-size:14.5px;font-weight:600;color:var(--text)}
.a-cmp-nums{margin-left:auto;display:flex;align-items:baseline;gap:9px;font-variant-numeric:tabular-nums}
.a-cmp-nums b{font-size:15px;font-weight:600}
.a-cmp-nums b.self{color:var(--accent)}
.a-cmp-nums b.teacher{color:#EF4444}
.a-cmp-body{padding:0 14px 12px;border-top:1px dashed var(--line)}
.a-cmp-src{display:flex;flex-wrap:wrap;gap:4px 14px;padding:10px 0 6px;font-size:12px;color:var(--text-2)}
.a-cmp-src .s{color:var(--accent)}
.a-cmp-src .t{color:#EF4444}
.a-cmp-line{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line)}
.a-cmp-lname{flex:1;font-size:14px;color:var(--text)}
.a-cmp-lnum{flex:none;display:flex;gap:10px;justify-content:flex-end;font-variant-numeric:tabular-nums}
.a-cmp-lnum b{font-weight:600;font-size:14px;min-width:1.6em;text-align:right}
.a-cmp-lnum b.self{color:var(--accent)}
.a-cmp-lnum b.teacher{color:#EF4444}
.a-cmp-note{margin:0 0 8px;padding:7px 10px;background:rgba(239,68,68,.07);
  border-radius:8px;font-size:13px;color:var(--text);line-height:1.55}
.a-cmp-note i{display:block;margin-top:3px;font-style:normal;font-size:12px;color:var(--text-2)}
.a-rec-by{flex:none;font-size:12px;color:#EF4444;background:rgba(239,68,68,.1);border-radius:6px;padding:1px 7px}
.a-cmp-pending{margin-top:12px}
.a-pending-list{display:flex;flex-wrap:wrap;gap:8px;padding:2px 14px 14px}
.a-pending-name{display:inline-flex;align-items:center;gap:6px;
  border:1px dashed var(--line);border-radius:20px;padding:5px 12px;font-size:13px;color:var(--text)}
.a-pending-name i{font-style:normal;font-size:12px;color:var(--accent)}

.a-item-form{margin-bottom:14px}
.a-note{font-size:12px;color:#9CA3AF;max-width:60%}
.a-item-list{display:flex;flex-direction:column}
.a-item-row{
  display:flex;align-items:center;gap:10px;padding:9px 2px;
  border-bottom:1px solid var(--line);font-size:14px;
}
.a-item-row:last-child{border-bottom:none}
.a-item-row .a-item-name{flex:1;min-width:0;font-size:14.5px;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a-item-row .a-item-name .a-item-n{color:var(--text-2);font-size:12px;font-weight:normal;margin-left:2px}
.a-item-row.off .a-item-name{color:#9CA3AF;text-decoration:line-through}
.a-item-row form{flex:none}
.a-item-mgr{display:flex;align-items:center;gap:5px;flex:none}
.a-item-mgr .mini-btn{
  min-height:32px;padding:0 9px;font-size:14px;line-height:1;
  -webkit-tap-highlight-color:transparent;
}
.a-item-mgr .mini-btn.icon{
  font-size:15px;font-weight:600;letter-spacing:0;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
}
.a-item-mgr .mini-btn[disabled]{
  opacity:.28;cursor:not-allowed;color:var(--text-2);
  background:transparent;border-color:var(--line);
}
.a-item-mgr .mini-btn.danger{
  color:#EF4444;border-color:rgba(239,68,68,.4);
}
.a-item-mgr .mini-btn.danger:hover,
.a-item-mgr .mini-btn.danger:focus{
  background:rgba(239,68,68,.08);border-color:#EF4444;
}

/* ---------- 管理量表 · 拖拽编辑模式 ---------- */
.a-items-toolbar{
  display:flex;justify-content:flex-end;margin:0 0 8px;
}
.a-items-toolbar .mini-btn{
  font-size:13px;padding:6px 12px;min-height:34px;
  background:var(--card);color:var(--text);border-color:var(--line);
}
.a-items-toolbar .mini-btn:hover,
.a-items-toolbar .mini-btn:focus{
  border-color:var(--accent);color:var(--accent);
}

.a-item-pos,.a-item-handle{display:none}

.a-items-editing .a-item-row{
  background:var(--card);border:1px solid var(--line);
  border-radius:10px;padding:10px 10px;margin-bottom:6px;
  align-items:center;
}
.a-items-editing .a-item-pos{
  display:inline-flex;align-items:center;justify-content:center;
  flex:none;width:36px;height:30px;border-radius:6px;
  background:rgba(46,124,246,.1);color:var(--accent);
  font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;
  letter-spacing:.5px;
}
.a-items-editing .a-item-row.off .a-item-pos{
  background:rgba(0,0,0,.04);color:var(--text-2);font-size:11px;
}
.a-items-editing .a-item-handle{
  display:inline-flex;align-items:center;justify-content:center;
  flex:none;width:34px;height:30px;border-radius:6px;
  background:var(--bg);color:var(--text-2);font-size:20px;
  cursor:grab;-webkit-tap-highlight-color:transparent;
  user-select:none;
  touch-action:none;
}
.a-items-editing .a-item-handle:active{cursor:grabbing}
.a-items-editing .a-item-row.off .a-item-handle{
  opacity:.4;pointer-events:none;
}
.a-items-editing .a-item-mgr{
  opacity:.28;pointer-events:none;filter:grayscale(.4);
}

/* Sortable.js 视觉 */
.a-item-ghost{
  opacity:.4;background:rgba(46,124,246,.06)!important;
  border-style:dashed!important;
}
.a-item-chosen{
  background:rgba(46,124,246,.04);
}
.a-item-drag{
  box-shadow:0 8px 20px rgba(0,0,0,.16);
  background:var(--card)!important;
}

/* 排序保存底栏 */
.a-order-form{
  margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);
}
.a-order-bar{display:flex;gap:8px}
.a-order-bar .btn{
  flex:1;background:var(--accent);color:#FFFFFF;border-color:var(--accent);
  font-size:14px;
}
.a-order-bar .btn.ghost{
  flex:none;min-width:80px;background:transparent;color:var(--text);
  border-color:var(--line);
}
.a-order-bar .btn.ghost:hover,
.a-order-bar .btn.ghost:focus{
  border-color:var(--text-2);color:var(--text);
}

/* ---------- 控件字体（无衬线）与触摸目标 ---------- */
.btn,.mini-btn,.tabbar a,.role-tag,.q-tag,.j-chip,.sc-chip,.sc-kind-tag,.del-btn,
.c-toggle,.a-opt span,.a-hist-src,.p-time,.j-nav,input,select,textarea,button{
  font-family:var(--sans);
}
.btn{min-height:44px}
.btn.sm{min-height:38px}
.mini-btn{min-height:32px}
.del-btn{padding:8px 9px;line-height:1}
.c-toggle{padding:10px 6px}
.j-nav{width:40px;height:40px;line-height:38px}
.a-opt span{min-width:24px;min-height:24px}

/* ---------- 桌面端微调 ---------- */
/* 平板 / 电脑（≥700px）：整站收进一张居中卡片。
   手机端一行都不动——下面只在宽屏生效。
   目的：顶栏的线不再横贯全屏，顶栏/内容/底栏/页脚同宽，两侧有边收住。 */
@media(min-width:700px){
  :root{--shell:760px}
  body{font-size:16px;background:#F1F2F4;padding-bottom:0}
  body.auth-body{background:#FFFFFF}
  .topbar,.page,.tabbar,.site-foot{
    max-width:var(--shell);margin-left:auto;margin-right:auto;
    border-left:1px solid var(--line);border-right:1px solid var(--line);
    background:#FFFFFF;
  }
  .topbar{backdrop-filter:none}
  .topbar-in{max-width:none;padding:11px 24px}
  .page{padding:0 24px;min-height:calc(100vh - 180px)}
  .tabbar{backdrop-filter:none}
  .site-foot{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .sc-day{min-height:82px;padding:5px 4px}
  .sc-num{font-size:13px}
  .sc-chip{font-size:12.5px}
  .a-opts{max-width:340px}
  .sc-members{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
}

/* ---------- 站内通知（B+C）---------- */
/* 顶栏右侧布局：铃铛 + 头像链接 横排 */
.topbar-right{display:flex;align-items:center;gap:12px}

/* 铃铛：无未读=灰，有未读=主色蓝 */
.bell{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;border-radius:10px;color:var(--text-2);
  transition:color .15s,background .15s;
}
.bell:hover{background:var(--bg-2,rgba(0,0,0,.04));color:var(--text)}
.bell.on{color:var(--primary)}
.bell.on svg{filter:drop-shadow(0 0 0 currentColor)}
/* 数字徽章：右上角红点+数字 */
.bell-badge{
  position:absolute;top:-2px;right:-6px;min-width:18px;height:18px;
  padding:0 5px;border-radius:9px;background:var(--danger,#EF4444);color:#fff;
  font-size:11px;line-height:18px;font-weight:600;text-align:center;
  box-shadow:0 0 0 2px var(--bg);font-family:var(--sans);
}

/* 底栏 tab 红点：右上角小红圆点（不挡字）。注意：`.tabbar` 必须是 position:fixed（line 74）
   不能改成 relative，否则页面长就要滚到底才看得到 tabbar；a 本身已 position:relative（line 84），
   红点定位直接以 a 为基准即可。 */
.tabbar a{position:relative}
.tab-dot{
  position:absolute;top:6px;right:14px;width:8px;height:8px;border-radius:50%;
  background:var(--danger,#EF4444);box-shadow:0 0 0 2px var(--bg);
}
.tabbar a.on .tab-dot{right:8px}

/* ---------- 站内通知 popover（B 方案：点铃铛展开）---------- */
.bell-wrap{position:relative;display:inline-flex;align-items:center}
/* 铃铛是 button，把浏览器默认外观去掉 */
.bell{
  background:transparent;border:0;padding:0;cursor:pointer;
  font:inherit;color:inherit;
}
.bell:focus{outline:2px solid var(--primary);outline-offset:2px}

/* 浮层：贴在铃铛下方右对齐；移动端改成居中避免跑出屏幕 */
.notif-pop{
  position:absolute;top:calc(100% + 8px);right:-6px;
  width:min(320px,calc(100vw - 32px));background:#fff;
  border:1px solid var(--line);border-radius:12px;
  box-shadow:0 8px 32px rgba(0,0,0,.12);
  padding:8px;z-index:30;
}
.notif-pop[hidden]{display:none}
.notif-pop::before{
  content:"";position:absolute;top:-6px;right:14px;
  width:12px;height:12px;background:#fff;
  border-top:1px solid var(--line);border-left:1px solid var(--line);
  transform:rotate(45deg);
}

/* 分组标题：📅 日程 / 💬 都行 / 📊 自测 */
.notif-grp{padding:4px 0}
.notif-grp + .notif-grp{border-top:1px solid var(--line);margin-top:4px;padding-top:8px}
.notif-grp-head{
  display:flex;align-items:center;gap:6px;
  padding:4px 12px 6px;font-size:13px;color:var(--text-2);font-weight:500;
}
.notif-grp-head .notif-ico{font-size:14px}
.notif-grp-n{
  margin-left:auto;background:var(--danger,#EF4444);color:#fff;
  font-size:11px;font-weight:600;
  padding:1px 7px;border-radius:9px;min-width:18px;text-align:center;
  font-family:var(--sans);
}
.notif-grp-n.zero{background:#E5E7EB;color:var(--text-2)}

.notif-row{
  display:flex;align-items:center;gap:10px;
  padding:8px 12px;border-radius:8px;
  color:var(--text);text-decoration:none;
  font-size:13px;line-height:1.4;
  transition:background .15s;
}
.notif-row:hover,.notif-row:focus{background:rgba(46,124,246,.08);outline:none}
.notif-row.zero{color:var(--text-2);opacity:.55;pointer-events:none;cursor:default}
.notif-row .notif-txt{flex:1;min-width:0;word-break:break-word}
.notif-row .notif-txt b{font-weight:600;margin-right:2px}
.notif-row .notif-arrow{color:var(--text-2);font-size:14px;flex:none}
.notif-empty{padding:18px 12px;text-align:center;color:var(--text-2);font-size:13px}

@media(max-width:480px){
  .notif-pop{right:auto;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px)}
  .notif-pop::before{left:50%;right:auto;transform:translateX(-50%) rotate(45deg)}
  .a-mb-avg{font-size:26px}
  .a-user-meta{font-size:11.5px}
  .a-item-name{font-size:14px}
  .a-item-mgr .mini-btn{min-width:40px}
}

