/* ── 配色 ───────────────────────────────────────────
   :root 是亮色（默认）。data-theme 由页面顶部的开关写入：
   light / dark 为手动固定，不写该属性时跟随系统。         */
:root{
  --paper:#F7F9F8; --sheet:#FFFFFF; --ink:#1A2224; --muted:#566264; --faint:#8B9799;
  --rule:#DCE3E2; --rule-soft:#EDF1F0;
  --accent:#0E7C76; --accent-soft:#E2F1EF; --accent-ink:#0B625D;
  --mark:#C0452F; --mark-soft:#FBEAE6;
  --code-bg:#F4F7F6;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#191E1F; --sheet:#212728; --ink:#DCE4E2; --muted:#9FADAB; --faint:#7A8886;
    --rule:#323B3C; --rule-soft:#2A3233;
    --accent:#5CC8BF; --accent-soft:#1D3A37; --accent-ink:#92DED7;
    --mark:#E8836F; --mark-soft:#3C2620;
    --code-bg:#1C2223;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --paper:#191E1F; --sheet:#212728; --ink:#DCE4E2; --muted:#9FADAB; --faint:#7A8886;
  --rule:#323B3C; --rule-soft:#2A3233;
  --accent:#5CC8BF; --accent-soft:#1D3A37; --accent-ink:#92DED7;
  --mark:#E8836F; --mark-soft:#3C2620;
  --code-bg:#1C2223;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  background:var(--paper); color:var(--ink);
  font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  font-size:15px; line-height:1.75; -webkit-text-size-adjust:100%;
}
::selection{background:var(--accent-soft)}
h1,h2,h3,h4{font-family:"Noto Serif SC","Songti SC",Georgia,serif; text-wrap:balance; margin:0}
button,select,input{font:inherit; color:inherit}
a{color:var(--accent-ink)}
[hidden]{display:none !important}
.mono{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-variant-numeric:tabular-nums}
.boot{padding:60px 20px; text-align:center; color:var(--faint); font-size:14px}

/* ---------- 登录 ---------- */
.auth{min-height:100vh; display:grid; place-items:center; padding:24px 16px}
.auth-card{width:100%; max-width:390px; background:var(--sheet); border:1px solid var(--rule); padding:28px 26px 22px}
.omr{display:flex; gap:5px; margin-bottom:10px}
.omr i{width:9px; height:9px; background:var(--ink); display:block}
.omr i:nth-child(3){background:var(--accent)}
.auth-card h1{font-size:21px; line-height:1.3}
h1 em{font-style:normal; color:var(--muted); font-weight:600}
.auth-sub{margin:4px 0 20px; font-size:12.5px; color:var(--faint); letter-spacing:.04em}
.tabs{display:flex; border:1px solid var(--rule); margin-bottom:18px}
.tabs button{flex:1; border:0; background:transparent; padding:7px 0; cursor:pointer; color:var(--muted); font-size:14px}
.tabs button+button{border-left:1px solid var(--rule)}
.tabs button.on{background:var(--accent-soft); color:var(--accent-ink); font-weight:500}
.auth-form{display:grid; gap:6px}
.auth-form label{font-size:12px; letter-spacing:.08em; color:var(--faint); margin-top:8px;
  display:flex; justify-content:space-between; align-items:baseline}
.hintline{color:var(--faint); letter-spacing:0; font-size:11.5px}
.auth-form input{border:1px solid var(--rule); background:var(--paper); padding:8px 11px; outline:none; width:100%}
.auth-form input:focus{border-color:var(--accent); box-shadow:inset 0 -2px 0 var(--accent)}
.primary{margin-top:18px; border:1px solid var(--accent); background:var(--accent); color:#fff;
  padding:9px 0; cursor:pointer; font-size:14.5px; letter-spacing:.05em}
.primary:hover{background:var(--accent-ink); border-color:var(--accent-ink)}
.primary[disabled]{opacity:.55; cursor:default}
.auth-err{margin:10px 0 0; font-size:12.5px; color:var(--mark); background:var(--mark-soft);
  border-left:2px solid var(--mark); padding:6px 10px}
.auth-foot{margin:18px 0 0; font-size:11.5px; color:var(--faint); text-align:center}

/* ---------- 顶栏 ---------- */
.top{position:sticky; top:0; z-index:20; background:var(--sheet); border-bottom:1px solid var(--rule);
  padding-block:14px; padding-inline:clamp(16px,4vw,40px)}
.top-in{max-width:1240px; margin:0 auto; display:flex; flex-wrap:wrap; gap:16px 26px; align-items:flex-end}
.brand{flex:1 1 240px; min-width:0}
.top h1{font-size:21px; letter-spacing:.01em; line-height:1.3}
.sub{margin:3px 0 0; font-size:12.5px; color:var(--faint); letter-spacing:.06em}
.meter{flex:0 0 auto; min-width:200px}
.meter-row{display:flex; justify-content:space-between; align-items:baseline; gap:12px; font-size:11.5px;
  letter-spacing:.1em; color:var(--faint)}
.meter-num{font-size:19px; color:var(--ink); letter-spacing:0}
.meter-num b{color:var(--accent); font-weight:700}
.bar{height:5px; background:var(--rule-soft); margin-top:7px; position:relative; overflow:hidden}
.bar span{position:absolute; inset:0 auto 0 0; background:var(--accent); width:0; transition:width .35s ease}
.bar span.rev{background:var(--mark); opacity:.5}
.tools{flex:1 1 100%; display:flex; flex-wrap:wrap; gap:8px; align-items:center}
.seg{display:flex; border:1px solid var(--rule); flex-wrap:wrap}
.seg button{border:0; background:transparent; padding:6px 13px; cursor:pointer; font-size:13.5px; color:var(--muted)}
.seg button+button{border-left:1px solid var(--rule)}
.seg button.on{background:var(--accent-soft); color:var(--accent-ink); font-weight:500}
.field{display:flex; align-items:center; gap:7px; border:1px solid var(--rule); background:var(--paper); padding:5px 10px; min-width:0}
.field label{font-size:11.5px; letter-spacing:.08em; color:var(--faint); white-space:nowrap}
.field input,.field select{border:0; background:transparent; outline:none; min-width:0; font-size:14px}
.field input{width:170px}
.field:focus-within{border-color:var(--accent); box-shadow:inset 0 -2px 0 var(--accent)}
.btn{border:1px solid var(--rule); background:var(--sheet); padding:6px 13px; cursor:pointer; font-size:13.5px;
  letter-spacing:.02em; transition:border-color .15s,color .15s}
.btn:hover{border-color:var(--accent); color:var(--accent-ink)}
.btn.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink)}
.btn:focus-visible,.bub:focus-visible,.rail a:focus-visible,.reveal:focus-visible,.opt:focus-visible,
.seg button:focus-visible,.tabs button:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.userbox{margin-left:auto; display:flex; align-items:center; gap:10px}
.themebtn{border:1px solid var(--rule); background:var(--sheet); padding:6px 12px; cursor:pointer;
  font-size:13px; color:var(--muted); display:inline-flex; align-items:center; gap:6px}
.themebtn:hover{border-color:var(--accent); color:var(--accent-ink)}
.themebtn i{width:12px; height:12px; border-radius:50%; display:block; border:1.5px solid currentColor}
.themebtn[data-mode="light"] i{background:#FFD98A; border-color:#E0A93B}
.themebtn[data-mode="dark"] i{background:var(--ink); border-color:var(--muted)}
.themebtn[data-mode="auto"] i{background:linear-gradient(90deg,#FFD98A 50%,var(--ink) 50%); border-color:var(--muted)}
.auth-theme{position:fixed; top:16px; right:16px; z-index:5}
.uname{font-size:12.5px; color:var(--muted)}
.tsel{display:none}

/* ---------- 布局 ---------- */
.shell{max-width:1240px; margin:0 auto; padding-inline:clamp(16px,4vw,40px); padding-block:26px 64px;
  display:grid; grid-template-columns:252px minmax(0,1fr); gap:34px; align-items:start}
body.vstats .rail{display:none}
body.vstats .shell{grid-template-columns:minmax(0,1fr)}
body.vstats .filt{display:none}
.rail{position:sticky; top:158px; max-height:calc(100vh - 184px); overflow-y:auto; padding-right:4px}
.rail h2{font-size:11.5px; letter-spacing:.14em; color:var(--faint); font-family:"JetBrains Mono",monospace;
  font-weight:500; margin:20px 0 7px; display:flex; gap:8px; align-items:center}
.rail h2:first-child{margin-top:0}
.rail h2::after{content:""; flex:1; height:1px; background:var(--rule)}
.rail a{display:block; text-decoration:none; color:var(--ink); padding:6px 9px; border-left:2px solid transparent;
  font-size:13.5px; line-height:1.45; cursor:pointer}
.rail a:hover{background:var(--sheet)}
.rail a.cur{border-left-color:var(--accent); background:var(--sheet); font-weight:500}
.rail .rl{display:flex; justify-content:space-between; gap:8px; align-items:baseline}
.rail .rc{font-size:11.5px; color:var(--faint); font-family:"JetBrains Mono",monospace}
.rail a.cur .rc{color:var(--accent)}
.rail .rb{height:2px; background:var(--rule-soft); margin-top:5px; position:relative}
.rail .rb span{position:absolute; inset:0 auto 0 0; background:var(--accent)}

/* ---------- 题型头 ---------- */
.ghead{margin-bottom:22px}
.eyebrow{font-family:"JetBrains Mono",monospace; font-size:11.5px; letter-spacing:.16em; color:var(--accent-ink)}
.ghead h2{font-size:26px; margin:6px 0 0; letter-spacing:.01em}
.gcount{font-size:13px; color:var(--faint); font-family:"JetBrains Mono",monospace; margin-left:10px; letter-spacing:0}
.gdesc{margin:10px 0 0; color:var(--muted); max-width:62ch}
.tips{background:var(--sheet); border:1px solid var(--rule); border-left:3px solid var(--accent);
  padding:16px 20px; margin:18px 0 30px}
.tips .eyebrow{display:block; margin-bottom:8px}
.tips ol{margin:0; padding-left:1.25em}
.tips li{margin:6px 0; max-width:66ch}
.tips li::marker{color:var(--accent); font-family:"JetBrains Mono",monospace; font-size:.85em}
.hint{margin:0 0 16px; font-size:12.5px; color:var(--faint)}

/* ---------- 题卡 ---------- */
.qcard{background:var(--sheet); border:1px solid var(--rule); margin-bottom:18px;
  display:grid; grid-template-columns:78px minmax(0,1fr)}
.qcard.hit{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft)}
.qmargin{border-right:1px dashed var(--rule); padding:16px 0 16px 14px; display:flex; flex-direction:column; gap:2px}
.qyear{font-family:"JetBrains Mono",monospace; font-size:11.5px; color:var(--faint); letter-spacing:.04em}
.qnum{font-family:"JetBrains Mono",monospace; font-size:27px; font-weight:700; line-height:1.05; letter-spacing:-.02em}
.qpts{font-family:"JetBrains Mono",monospace; font-size:11.5px; color:var(--mark); margin-top:2px}
.qmain{padding:16px 22px 18px; min-width:0}
.qhead{display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center; margin-bottom:12px}
.chip{font-family:"JetBrains Mono",monospace; font-size:11px; letter-spacing:.08em; padding:2px 7px;
  border:1px solid var(--rule); color:var(--muted)}
.qtag{font-size:13.5px; color:var(--muted); flex:1 1 180px; min-width:0}
.qtype{font-size:12px; color:var(--faint)}
.bubbles{display:flex; gap:4px; margin-left:auto}
.bub{display:inline-flex; align-items:center; gap:5px; border:1px solid var(--rule); background:transparent;
  padding:3px 9px 3px 7px; cursor:pointer; font-size:12px; color:var(--muted)}
.bub i{width:11px; height:11px; border-radius:50%; border:1.5px solid var(--faint); display:block}
.bub[data-s="1"] i{background:linear-gradient(90deg,var(--mark) 50%,transparent 50%); border-color:var(--mark)}
.bub[data-s="2"] i{background:var(--accent); border-color:var(--accent)}
.bub.on{color:var(--ink); border-color:currentColor}
.bub[data-s="1"].on{color:var(--mark); background:var(--mark-soft)}
.bub[data-s="2"].on{color:var(--accent-ink); background:var(--accent-soft)}
.qbody{overflow-wrap:break-word}
.qbody p{margin:.7em 0}
.qbody p:first-child{margin-top:0}

.opts{display:grid; gap:6px; margin-top:14px}
.opt{display:grid; grid-template-columns:26px minmax(0,1fr); gap:10px; align-items:start; text-align:left;
  border:1px solid var(--rule-soft); background:transparent; padding:7px 12px; cursor:pointer; line-height:1.6}
.opt:hover{border-color:var(--rule); background:var(--code-bg)}
.opt .ol{font-family:"JetBrains Mono",monospace; font-weight:500; color:var(--faint); border:1.5px solid var(--rule);
  border-radius:50%; width:22px; height:22px; display:grid; place-items:center; font-size:12px; margin-top:1px}
.opt.sel .ol{border-color:var(--accent); color:var(--accent-ink)}
.opt.sel{border-color:var(--accent)}
.opt.ok{border-color:var(--accent); background:var(--accent-soft)}
.opt.ok .ol{background:var(--accent); border-color:var(--accent); color:#fff}
.opt.no{border-color:var(--mark); background:var(--mark-soft)}
.opt.no .ol{background:var(--mark); border-color:var(--mark); color:#fff}
.opt p{margin:0}
.opt p+p{margin-top:.4em}
.multi-bar{display:flex; gap:10px; align-items:center; margin-top:10px}
.verdict{margin-top:10px; font-size:13px; font-family:"JetBrains Mono",monospace; letter-spacing:.04em}
.verdict.good{color:var(--accent-ink)}
.verdict.bad{color:var(--mark)}
.reveal{margin-top:16px; border:1px solid var(--rule); background:var(--paper); padding:6px 15px; cursor:pointer;
  font-size:13.5px; letter-spacing:.04em}
.reveal:hover{border-color:var(--accent); color:var(--accent-ink)}
.reveal.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink)}
.ans{margin-top:14px; border-top:1px solid var(--rule-soft); padding-top:14px}
.ans::before{content:"参考答案与解析"; display:block; font-family:"JetBrains Mono",monospace; font-size:11px;
  letter-spacing:.16em; color:var(--mark); margin-bottom:8px}
.vid{display:inline-block; margin-top:12px; font-size:12.5px; letter-spacing:.03em}
.empty{padding:40px 0; color:var(--faint); text-align:center}
.loading{padding:30px 0; color:var(--faint); text-align:center; font-size:13.5px}

/* ---------- 题面内容 ---------- */
.qbody ul,.qbody ol,.ans ul,.ans ol{padding-left:1.4em; margin:.6em 0}
.qbody li,.ans li{margin:.3em 0}
.qbody h4,.ans h4{font-size:15px; margin:1.1em 0 .4em}
pre.code{background:var(--code-bg); border:1px solid var(--rule-soft); padding:12px 14px; overflow-x:auto;
  font-family:"JetBrains Mono",ui-monospace,monospace; font-size:12.8px; line-height:1.6; margin:.8em 0}
pre.code code{font:inherit; background:none; border:0; padding:0}
code{font-family:"JetBrains Mono",ui-monospace,monospace; font-size:.88em; background:var(--code-bg);
  padding:1px 4px; border:1px solid var(--rule-soft)}
.tw,.qbody table,.ans table{max-width:100%}
.tw{overflow-x:auto; margin:.9em 0; border:1px solid var(--rule-soft)}
.tw table{border-collapse:collapse; width:100%; font-size:13.5px}
.tw th,.tw td{border:1px solid var(--rule-soft); padding:6px 10px; text-align:left; vertical-align:top}
.tw th{background:var(--code-bg); font-weight:500; white-space:nowrap}
.tw td code{background:none; border:0; padding:0}
figure.fig{margin:1em 0; text-align:center}
:root[data-theme="dark"] figure.fig img,:root[data-theme="dark"] .qbody img,
:root[data-theme="dark"] .ans img{filter:brightness(.92)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) figure.fig img,:root:not([data-theme="light"]) .qbody img,
  :root:not([data-theme="light"]) .ans img{filter:brightness(.92)}
}
figure.fig img,.qbody img,.ans img{max-width:100%; height:auto; background:#fff}
figure.fig img{border:1px solid var(--rule-soft); padding:6px}
.mb{margin:.9em 0; padding:8px 12px; background:var(--code-bg); border-left:2px solid var(--rule);
  font-family:"JetBrains Mono",ui-monospace,monospace; font-size:13.5px; overflow-x:auto}
i.mi{font-style:normal; font-family:"JetBrains Mono",ui-monospace,monospace; font-size:.92em}
i.ovl{font-style:normal; text-decoration:overline}
i.frac{display:inline-flex; flex-direction:column; vertical-align:middle; font-style:normal; text-align:center;
  font-size:.85em; line-height:1.25; margin:0 .15em}
i.frac .fn{border-bottom:1px solid currentColor; padding:0 .25em; font-style:normal}
i.frac .fd{padding:0 .25em; font-style:normal}
i.mx{display:inline-flex; align-items:center; gap:.3em; font-style:normal; vertical-align:middle}
i.mx-affix{font-style:normal}
i.mx-br{display:inline-block; padding:2px 6px; border-left:2px solid currentColor; border-right:2px solid currentColor}
i.mx-br table{border-collapse:collapse; font-family:"JetBrains Mono",monospace; font-size:.85em}
i.mx-br td{padding:1px 6px; text-align:center}
.katex-display{overflow-x:auto; overflow-y:hidden; padding:2px 0}
.solution{margin-top:.4em}

/* ---------- 作答区 ---------- */
.ansarea{margin-top:16px; border:1px solid var(--rule); background:var(--paper)}
.ansbar{display:flex; align-items:center; gap:2px; border-bottom:1px solid var(--rule);
  padding:0 8px; background:var(--sheet); flex-wrap:wrap}
.atab{border:0; background:transparent; padding:8px 14px; cursor:pointer; font-size:13.5px;
  color:var(--muted); border-bottom:2px solid transparent; margin-bottom:-1px}
.atab.on{color:var(--accent-ink); border-bottom-color:var(--accent); font-weight:500}
.amono{border:1px solid var(--rule); background:transparent; color:var(--faint); font-size:11.5px;
  padding:2px 8px; cursor:pointer; margin-left:8px}
.amono.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink)}
.asave{margin-left:auto; font-size:11.5px; color:var(--faint);
  font-family:"JetBrains Mono",monospace; padding:0 4px}
.apane{padding:10px}
.atext{width:100%; min-height:130px; border:1px solid var(--rule-soft); background:var(--sheet);
  color:var(--ink); padding:10px 12px; outline:none; resize:vertical; line-height:1.75; font-size:14.5px}
.atext:focus{border-color:var(--accent)}
.atext.code{font-family:"JetBrains Mono",ui-monospace,monospace; font-size:13px; line-height:1.6;
  white-space:pre; overflow-x:auto}
.inkbar{display:flex; flex-wrap:wrap; gap:8px 10px; align-items:center; margin-bottom:8px}
.inkgrp{display:flex; gap:4px; align-items:center}
.inkb{border:1px solid var(--rule); background:var(--sheet); color:var(--muted); padding:4px 10px;
  cursor:pointer; font-size:12.5px; display:inline-flex; align-items:center; gap:5px}
.inkb:hover{border-color:var(--accent); color:var(--accent-ink)}
.inkb.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink)}
.inkb i{display:block; background:currentColor; border-radius:50%}
.pw1{width:4px; height:4px} .pw2{width:7px; height:7px} .pw3{width:10px; height:10px}
.inkpager{margin-left:auto}
.inkpage{font-family:"JetBrains Mono",monospace; font-size:12px; color:var(--muted);
  min-width:48px; text-align:center}
.inkfinger{font-size:12px; color:var(--faint); display:inline-flex; align-items:center; gap:5px; cursor:pointer}
.inkcanvas{display:block; width:100%; background:var(--sheet); border:1px solid var(--rule-soft);
  cursor:crosshair; touch-action:pan-y}
@media (max-width:640px){
  .inkpager{margin-left:0}
  .atab{padding:8px 10px}
}

/* ---------- 统计 ---------- */
.stats{display:grid; gap:36px}
.sec{min-width:0}
.sec>h3{font-size:18px; margin:0 0 4px}
.sec>.note{margin:0 0 14px; font-size:12.5px; color:var(--faint); max-width:70ch}
.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(158px,1fr)); gap:12px}
.tile{background:var(--sheet); border:1px solid var(--rule); padding:13px 16px 15px}
.tile span{display:block; font-size:11.5px; letter-spacing:.1em; color:var(--faint)}
.tile b{display:block; font-family:"JetBrains Mono",monospace; font-size:29px; font-weight:700; line-height:1.15;
  margin-top:4px; font-variant-numeric:tabular-nums}
.tile b em{font-style:normal; font-size:15px; color:var(--faint); font-weight:400}
.tile small{display:block; font-size:12px; color:var(--muted); margin-top:3px}
.tile.good b{color:var(--accent)}
.tile.bad b{color:var(--mark)}
.legend{display:flex; flex-wrap:wrap; gap:16px; font-size:12px; color:var(--muted); margin:0 0 12px}
.legend i{width:10px; height:10px; display:inline-block; margin-right:6px; vertical-align:-1px}
.legend i.m{background:var(--accent)} .legend i.r{background:var(--mark)}
.legend i.u{background:var(--rule-soft); border:1px solid var(--rule)}
.subj{display:grid; gap:12px}
.subj-row{background:var(--sheet); border:1px solid var(--rule); padding:12px 16px 14px}
.subj-top{display:flex; flex-wrap:wrap; gap:6px 14px; align-items:baseline; margin-bottom:9px}
.subj-top b{font-size:15px; font-weight:500}
.subj-top span{font-size:12.5px; color:var(--muted); font-family:"JetBrains Mono",monospace}
.subj-top .sp{margin-left:auto; color:var(--accent-ink)}
.sbar{display:flex; gap:2px; height:11px; background:var(--rule-soft)}
.sbar i{display:block; height:100%}
.sbar i.m{background:var(--accent)} .sbar i.r{background:var(--mark)}
.tablewrap{overflow-x:auto; border:1px solid var(--rule); background:var(--sheet)}
table.stat{width:100%; border-collapse:collapse; font-size:13.5px; min-width:620px}
table.stat th{text-align:left; font-weight:500; font-size:11.5px; letter-spacing:.08em; color:var(--faint);
  padding:9px 14px; border-bottom:1px solid var(--rule); white-space:nowrap; background:var(--code-bg)}
table.stat td{padding:9px 14px; border-bottom:1px solid var(--rule-soft); vertical-align:middle}
table.stat tr:last-child td{border-bottom:0}
table.stat tbody tr{cursor:pointer}
table.stat tbody tr:hover{background:var(--code-bg)}
table.stat .num{font-family:"JetBrains Mono",monospace; font-variant-numeric:tabular-nums; white-space:nowrap}
table.stat .warn{color:var(--mark)}
.mini{width:104px; height:8px; background:var(--rule-soft); position:relative; display:inline-block; vertical-align:-1px}
.mini i{position:absolute; inset:0 auto 0 0; background:var(--accent); border-radius:0 4px 4px 0}
.mini i.low{background:var(--mark)}
.sorts{display:flex; gap:8px; flex-wrap:wrap; margin:0 0 12px; align-items:center}
.sorts span{font-size:11.5px; letter-spacing:.08em; color:var(--faint)}
.sorts button{border:1px solid var(--rule); background:var(--sheet); padding:4px 11px; cursor:pointer;
  font-size:12.5px; color:var(--muted)}
.sorts button.on{background:var(--accent-soft); border-color:var(--accent); color:var(--accent-ink)}
.years{display:grid; grid-template-columns:repeat(auto-fill,minmax(94px,1fr)); gap:8px}
.ycell{border:1px solid var(--rule); background:var(--sheet); padding:9px 11px 11px}
.ycell b{display:block; font-family:"JetBrains Mono",monospace; font-size:14px; font-weight:500}
.ycell span{display:block; font-size:11.5px; color:var(--faint); font-family:"JetBrains Mono",monospace; margin:2px 0 7px}
.ycell .mini{width:100%}
.days{display:flex; align-items:flex-end; gap:5px; height:136px; border:1px solid var(--rule);
  background:var(--sheet); padding:20px 12px 0}
.day{flex:1 1 0; min-width:0; display:flex; flex-direction:column; justify-content:flex-end; align-items:center;
  height:100%; position:relative}
.day i{width:100%; max-width:36px; background:var(--accent); display:block; border-radius:4px 4px 0 0; min-height:2px}
.day i.zero{background:var(--rule-soft)}
.day .dv{font-size:10.5px; color:var(--muted); font-family:"JetBrains Mono",monospace; line-height:1; margin-bottom:4px}
.day .dt{position:absolute; bottom:calc(100% - 16px); left:50%; transform:translateX(-50%); background:var(--ink);
  color:var(--paper); font-size:11px; padding:2px 7px; white-space:nowrap; opacity:0; pointer-events:none;
  transition:opacity .12s; font-family:"JetBrains Mono",monospace; z-index:2}
.day:hover .dt{opacity:1}
.daylabels{display:flex; gap:5px; padding-inline:12px; margin-top:6px}
.daylabels span{flex:1 1 0; min-width:0; text-align:center; font-size:10.5px; color:var(--faint);
  font-family:"JetBrains Mono",monospace; overflow:hidden}
.qlist{display:grid; gap:6px}
.qrow{display:grid; grid-template-columns:104px minmax(0,1fr) auto; gap:12px; align-items:baseline;
  background:var(--sheet); border:1px solid var(--rule-soft); border-left:2px solid var(--mark);
  padding:8px 13px; cursor:pointer; text-align:left; width:100%; font:inherit; color:inherit}
.qrow:hover{border-color:var(--rule); background:var(--code-bg)}
.qrow .qi{font-family:"JetBrains Mono",monospace; font-size:12.5px; color:var(--muted)}
.qrow .qx{font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0}
.qrow .qz{font-size:11.5px; color:var(--faint); white-space:nowrap}
.more{margin:10px 0 0; font-size:12.5px; color:var(--faint)}
.danger{border:1px solid var(--rule); background:transparent; color:var(--muted); padding:5px 12px; cursor:pointer; font-size:12.5px}
.danger:hover{border-color:var(--mark); color:var(--mark)}
.foot{display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; font-size:12px; color:var(--faint);
  border-top:1px solid var(--rule); padding-top:16px}

/* ---------- 提示条 ---------- */
.toast{position:fixed; left:50%; bottom:26px; transform:translateX(-50%); background:var(--ink); color:var(--paper);
  padding:8px 16px; font-size:13px; z-index:60; box-shadow:0 6px 24px rgba(0,0,0,.18)}

@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr); gap:0}
  .rail{display:none}
  .tsel{display:flex}
  .field input{width:120px}
  .qcard{grid-template-columns:minmax(0,1fr)}
  .qmargin{flex-direction:row; align-items:baseline; gap:10px; border-right:0;
    border-bottom:1px dashed var(--rule); padding:9px 16px}
  .qnum{font-size:19px}
  .qmain{padding:14px 16px 16px}
  .bubbles{margin-left:0; width:100%}
  .bub{flex:1; justify-content:center}
  .top h1{font-size:18px}
  .userbox{margin-left:0}
}
@media (max-width:640px){
  .qrow{grid-template-columns:96px minmax(0,1fr)}
  .qrow .qz{display:none}
  .days{height:112px}
}
@media print{
  .top,.rail,.tools,.bubbles,.reveal{display:none !important}
  .shell{display:block; padding:0}
  .qcard{break-inside:avoid; border-color:#999}
  .ans[hidden]{display:block !important}
  body{background:#fff}
}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}
