/* ============================================================
   系统架构师刷题台 · 样式
   浅色/深色双主题（CSS 变量），无外部依赖，离线可用
   ============================================================ */
:root{
  --bg:#f4f6fb; --bg2:#ffffff; --bg3:#eef1f8;
  --fg:#1c2333; --fg2:#5a6478; --fg3:#8a93a6;
  --line:#e3e7f0; --line2:#d3d9e6;
  --pri:#2f6bff; --pri-weak:#e8efff;
  --ok:#16a34a; --ok-weak:#e7f6ec;
  --bad:#dc2626; --bad-weak:#fdeaea;
  --warn:#d97706; --warn-weak:#fdf1e0;
  --zh:#3b6ef5; --en:#0d9488; --case:#d97706; --essay:#7c3aed;
  --shadow:0 1px 2px rgba(20,30,60,.05),0 4px 16px rgba(20,30,60,.06);
  --radius:14px; --radius-s:9px;
}
[data-theme="dark"]{
  --bg:#10141d; --bg2:#171c28; --bg3:#1e2432;
  --fg:#e6e9f2; --fg2:#a3adc2; --fg3:#6d778c;
  --line:#262d3d; --line2:#323b4f;
  --pri:#5b8cff; --pri-weak:#1c2743;
  --ok:#4ade80; --ok-weak:#14281a;
  --bad:#f87171; --bad-weak:#2c1616;
  --warn:#fbbf24; --warn-weak:#2b2110;
  --zh:#6a95ff; --en:#2dd4bf; --case:#fbbf24; --essay:#a78bfa;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 4px 18px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
/* 关键：作者样式会覆盖浏览器对 [hidden] 的 display:none，
   导致弹层/徽标/toast 等隐藏元素照常显示并遮挡点击，必须强制隐藏 */
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--fg);
  font:15px/1.65 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--pri);text-decoration:none}
button{font-family:inherit;cursor:pointer}
input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}

/* ---------------- 顶栏 ---------------- */
.topbar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg2) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar-inner{max-width:1080px;margin:0 auto;display:flex;align-items:center;gap:26px;padding:10px 20px}
.brand{display:flex;align-items:center;gap:10px;color:var(--fg)}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--pri),#7c3aed);color:#fff;font-weight:800;font-size:14px;letter-spacing:.5px}
.brand-text{display:flex;flex-direction:column;line-height:1.25;font-weight:700;font-size:15px}
.brand-text small{color:var(--fg3);font-weight:400;font-size:11px}
.nav{display:flex;gap:4px;flex:1}
.nav a{padding:7px 14px;border-radius:9px;color:var(--fg2);font-size:14px;font-weight:500}
.nav a:hover{background:var(--bg3);color:var(--fg)}
.nav a.on{background:var(--pri-weak);color:var(--pri);font-weight:600}
.nav-badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--bad);color:#fff;font-size:11px;line-height:18px;text-align:center}
.topbar-actions{display:flex;gap:6px;align-items:center}
.top-user{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px 0 6px;border-radius:9px;border:1px solid var(--line);background:var(--bg2);color:var(--fg2);font-size:13px;max-width:190px}
.top-user:hover{border-color:var(--line2);color:var(--fg)}
.top-user-ava{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--pri),#7c3aed);color:#fff;font-size:12px;font-weight:700}
.top-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.icon-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--bg2);color:var(--fg2);font-size:15px}
.icon-btn:hover{border-color:var(--line2);color:var(--fg)}

/* ---------------- 布局 ---------------- */
.app{max-width:1080px;margin:0 auto;padding:22px 20px 60px;min-height:70vh}
.footer{max-width:1080px;margin:0 auto;padding:0 20px 30px;color:var(--fg3);font-size:12px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.page-title{font-size:20px;font-weight:800;margin:2px 0 4px}
.page-sub{color:var(--fg3);font-size:13px;margin:0 0 18px}
.muted{color:var(--fg3)}
.small{font-size:12px}
.center{text-align:center}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}

/* ---------------- 按钮 ---------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:10px;border:1px solid var(--line2);background:var(--bg2);color:var(--fg);padding:9px 16px;font-size:14px;font-weight:600;transition:all .15s}
.btn:hover{border-color:var(--pri);color:var(--pri)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.pri:hover{background:color-mix(in srgb,var(--pri) 85%,#000);color:#fff}
.btn.ghost{border-color:transparent;background:transparent;color:var(--fg2)}
.btn.ghost:hover{background:var(--bg3)}
.btn.danger{border-color:transparent;background:transparent;color:var(--bad)}
.btn.danger:hover{background:var(--bad-weak)}
.btn.sm{padding:5px 11px;font-size:13px;border-radius:8px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.pri:disabled:hover{background:var(--pri)}

/* ---------------- 首页 ---------------- */
.hero{margin-bottom:16px}
.hero-main{padding:22px 24px;display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.hero-left{display:flex;flex-direction:column;gap:14px;flex:1;min-width:320px}
.hero h2{margin:0;font-size:19px}
.hero .count-day{font-size:30px;font-weight:800;color:var(--pri)}
.hero-day-note{color:var(--fg2);font-size:13px}
.stat-chips{display:flex;gap:22px;flex-wrap:wrap}
.stat-chip b{font-size:20px;display:block;line-height:1.3}
.stat-chip span{font-size:12px;color:var(--fg3)}
.hero-wrong{padding-left:24px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:10px;justify-content:center;max-width:330px}
.hero-wrong h3{margin:0;font-size:14px}
.hero-wrong .small{color:var(--fg3)}
.sec-grid{display:grid;grid-template-columns:1fr;gap:16px}
.sec-card{padding:18px 20px;display:flex;flex-direction:column;gap:12px;border-top:3px solid var(--sc)}
.card-foot{display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap;margin-top:2px}
.card-foot .btn{margin-left:auto}
.sec-card[data-sec="zh"]{--sc:var(--zh)} .sec-card[data-sec="en"]{--sc:var(--en)}
.sec-card[data-sec="case"]{--sc:var(--case)} .sec-card[data-sec="essay"]{--sc:var(--essay)}
.sec-head{display:flex;align-items:center;gap:10px}
.sec-ico{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--sc) 14%,transparent);color:var(--sc);font-weight:800;font-size:15px}
.sec-head h3{margin:0;font-size:16px;flex:1}
.sec-head .sec-meta{font-size:12px;color:var(--fg3);text-align:right;line-height:1.5}
.chip-wrap{display:flex;flex-wrap:wrap;gap:6px;max-height:118px;overflow:auto;padding:2px 0}
.chip{border:1px solid var(--line);border-radius:99px;background:var(--bg);color:var(--fg2);font-size:12.5px;padding:3px 11px;white-space:nowrap}
.chip:hover{border-color:var(--sc);color:var(--fg)}
.chip.on{background:color-mix(in srgb,var(--sc) 13%,transparent);border-color:var(--sc);color:var(--sc);font-weight:600}
.chip .pct{opacity:.65;font-size:11px;margin-left:3px}
.opt-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--fg2);flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{border:0;background:var(--bg2);color:var(--fg2);padding:7px 15px;font-size:13.5px;font-weight:600;border-right:1px solid var(--line)}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--sc,var(--pri));color:#fff}
.switch{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--fg2);cursor:pointer;user-select:none}
.switch .track{width:34px;height:19px;border-radius:99px;background:var(--line2);position:relative;transition:.15s}
.switch .track::after{content:"";position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.switch.on .track{background:var(--pri)}
.switch.on .track::after{left:17px}

/* ---------------- 答题界面 ---------------- */
.quizbar{position:sticky;top:53px;z-index:40;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);padding:10px 0;display:flex;align-items:center;gap:14px;margin-bottom:8px}
.quizbar .qtitle{font-weight:700;font-size:15px}
.quizbar .qsub{font-size:12.5px;color:var(--fg3)}
.quizbar .grow{flex:1}
.pbar{height:6px;border-radius:99px;background:var(--bg3);overflow:hidden;margin:6px 0 16px}
.pbar>i{display:block;height:100%;background:linear-gradient(90deg,var(--pri),#7c3aed);border-radius:99px;transition:width .25s}
.q-stem{padding:20px 22px;font-size:16px;line-height:1.8}
.q-stem .src-line{margin-top:10px;font-size:12px;color:var(--fg3);display:flex;gap:10px;flex-wrap:wrap}
.opts{display:flex;flex-direction:column;gap:9px;padding:4px 6px 6px}
.opt{display:flex;gap:12px;align-items:flex-start;text-align:left;border:1px solid var(--line);border-radius:11px;background:var(--bg2);padding:11px 14px;font-size:14.5px;line-height:1.6;transition:.12s}
.opt:hover{border-color:var(--pri)}
.opt .letter{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:var(--bg3);font-weight:700;font-size:13px}
.opt.on{border-color:var(--pri);background:var(--pri-weak)}
.opt.on .letter{background:var(--pri);color:#fff}
.opt.ok{border-color:var(--ok);background:var(--ok-weak)}
.opt.ok .letter{background:var(--ok);color:#fff}
.opt.bad{border-color:var(--bad);background:var(--bad-weak)}
.opt.bad .letter{background:var(--bad);color:#fff}
.qnav{display:flex;gap:10px;margin-top:16px;align-items:center}
.qnav .dots{display:flex;gap:6px;flex-wrap:wrap;flex:1;justify-content:center}
.qnav .dot{width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:var(--bg2);font-size:12px;color:var(--fg3)}
.qnav .dot.done{background:var(--pri-weak);border-color:var(--pri);color:var(--pri);font-weight:700}
.qnav .dot.cur{outline:2px solid var(--pri);outline-offset:1px}

/* 英文短文 */
.passage{padding:18px 22px;font-size:15px;line-height:1.95;letter-spacing:.1px}
.passage .blank{display:inline-block;margin:0 2px;padding:0 7px;border-radius:7px;background:var(--bg3);color:var(--fg3);font-weight:700;cursor:pointer;border:1px dashed var(--line2);transition:.12s}
.passage .blank.filled{background:var(--pri-weak);color:var(--pri);border-style:solid;border-color:var(--pri)}
.passage .blank.focus{outline:2px solid var(--pri);outline-offset:1px}
.passage .gapmark{color:var(--warn);font-size:13px}
.en-blanks{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.en-blank{border:1px solid var(--line);border-radius:12px;background:var(--bg2);padding:12px 14px;transition:.15s}
.en-blank.focus{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-weak)}
.en-blank .bl-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-weight:700;font-size:14px}
.en-blank .opts{flex-direction:row;flex-wrap:wrap;padding:0;gap:8px}
.en-blank .opt{padding:7px 12px;font-size:14px}
.tag{display:inline-block;padding:1px 8px;border-radius:7px;font-size:11.5px;font-weight:600;background:var(--bg3);color:var(--fg2)}
.tag.ok{background:var(--ok-weak);color:var(--ok)}
.tag.bad{background:var(--bad-weak);color:var(--bad)}
.tag.warn{background:var(--warn-weak);color:var(--warn)}
.tag.pri{background:var(--pri-weak);color:var(--pri)}

/* 案例 */
.case-bg{padding:18px 22px;font-size:14.5px;line-height:1.85;white-space:pre-wrap}
.case-img{margin:10px 0 0;border:1px solid var(--line);border-radius:10px;max-width:100%}
.case-img-wrap{padding:14px 22px;border-top:1px dashed var(--line)}
.case-imgs summary,.case-imgs-after summary{cursor:pointer;font-size:12.5px;color:var(--fg3);user-select:none}
.case-imgs-after{margin-top:2px}
.case-imgs-after summary{color:var(--warn)}
.case-page{display:block;margin:8px 0 0;text-decoration:none}
.case-page-tag{display:inline-block;margin-top:4px;font-size:12px;color:var(--fg3)}
.subq{border:1px solid var(--line);border-radius:12px;background:var(--bg2);padding:16px 18px;margin-top:14px}
.subq .sq-head{display:flex;gap:10px;align-items:baseline;margin-bottom:8px;flex-wrap:wrap}
.subq .sq-no{font-weight:800;color:var(--case)}
.subq .sq-text{white-space:pre-wrap;font-size:14.5px;line-height:1.8}
.answer-area{width:100%;min-height:110px;margin-top:12px;border:1px solid var(--line2);border-radius:10px;background:var(--bg);padding:12px 13px;font-size:14.5px;line-height:1.75;resize:vertical}
.answer-area:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-weak)}

/* 论文 */
.essay-title{padding:20px 22px}
.essay-title h2{margin:0 0 8px;font-size:19px;line-height:1.5}
.essay-tips{padding:14px 22px;border-top:1px dashed var(--line);color:var(--fg2);font-size:13px;line-height:1.9}
.essay-area{width:100%;min-height:420px;border:1px solid var(--line2);border-radius:12px;background:var(--bg2);padding:16px 18px;font-size:14.5px;line-height:1.9;resize:vertical;margin-top:14px}
.essay-area:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-weak)}
.mode-tabs{margin-top:12px}

/* ---------------- 结果页 ---------------- */
.score-hero{padding:22px 24px;display:flex;align-items:center;gap:26px;flex-wrap:wrap}
.score-num{font-size:44px;font-weight:800;line-height:1}
.score-num small{font-size:16px;color:var(--fg3);font-weight:600}
.score-grade{font-size:15px;font-weight:700;padding:4px 12px;border-radius:9px}
.score-meta{color:var(--fg2);font-size:13px;margin-top:8px}
.advice-card{margin-top:16px;padding:18px 22px}
.advice-card h3{margin:0 0 10px;font-size:15px}
.advice-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:9px}
.advice-list li{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.7}
.advice-list .lv{flex:none;margin-top:2px}
.review-list{margin-top:16px;display:flex;flex-direction:column;gap:14px}
.rev-item{padding:16px 20px}
.rev-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.rev-stem{font-size:14.5px;line-height:1.8;white-space:pre-wrap}
.rev-opts{margin:8px 0 2px;display:flex;flex-direction:column;gap:6px}
.rev-opt{display:flex;gap:9px;font-size:13.5px;color:var(--fg2);padding:5px 9px;border-radius:8px}
.rev-opt.right{background:var(--ok-weak);color:var(--ok);font-weight:600}
.rev-opt.wrongpick{background:var(--bad-weak);color:var(--bad);text-decoration:line-through}
.rev-meta{margin-top:8px;font-size:12px;color:var(--fg3);display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.ref-answer{border-left:3px solid var(--ok);background:var(--ok-weak);border-radius:0 10px 10px 0;padding:10px 14px;margin-top:10px;font-size:13.5px;line-height:1.8;white-space:pre-wrap}
.my-answer{border-left:3px solid var(--pri);background:var(--pri-weak);border-radius:0 10px 10px 0;padding:10px 14px;margin-top:10px;font-size:13.5px;line-height:1.8;white-space:pre-wrap}
.ph-hit{background:var(--ok-weak);color:var(--ok);border-radius:4px;padding:0 2px;font-weight:600}
.ph-miss{background:var(--bad-weak);color:var(--bad);border-radius:4px;padding:0 2px;font-weight:600}
.cov-bar{height:8px;border-radius:99px;background:var(--bg3);overflow:hidden;margin:8px 0}
.cov-bar>i{display:block;height:100%;background:var(--ok);border-radius:99px}
.case-score-line{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:10px;font-size:13.5px}
.case-score-line input{width:70px;padding:5px 8px;border:1px solid var(--line2);border-radius:8px;background:var(--bg)}

/* 论文体检 */
.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-top:12px}
.check-item{border:1px solid var(--line);border-radius:10px;padding:10px 13px;font-size:13px;display:flex;gap:8px;align-items:flex-start}
.check-item.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line));background:var(--ok-weak)}
.check-item.bad{border-color:color-mix(in srgb,var(--bad) 40%,var(--line));background:var(--bad-weak)}
.kw-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.rubric{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.rubric-row{display:grid;grid-template-columns:150px 1fr 54px;gap:12px;align-items:center;font-size:13.5px}
.rubric-row input[type=range]{width:100%;accent-color:var(--pri)}
.rubric-row .val{font-weight:700;text-align:right}

/* ---------------- 错题集 ---------------- */
.tabs{display:flex;gap:6px;margin:14px 0;flex-wrap:wrap}
.tabs button{border:1px solid var(--line);background:var(--bg2);color:var(--fg2);border-radius:99px;padding:6px 15px;font-size:13.5px;font-weight:600}
.tabs button.on{background:var(--pri);border-color:var(--pri);color:#fff}
.wb-list{display:flex;flex-direction:column;gap:10px}
.wb-item{padding:13px 17px;display:flex;gap:14px;align-items:flex-start}
.wb-item .wb-main{flex:1;min-width:0}
.wb-item .wb-stem{font-size:14px;line-height:1.7}
.wb-item .wb-meta{margin-top:6px;font-size:12px;color:var(--fg3);display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.wb-ctx{margin-top:8px;font-size:13px;line-height:1.7;color:var(--fg2)}
.wb-opts{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.wb-opt{padding:5px 11px;border-radius:8px;font-size:13.5px;line-height:1.65;color:var(--fg2);background:var(--bg3)}
.wb-opt b{color:var(--fg3)}
.wb-opt.ok{background:var(--ok-weak);color:var(--fg)}
.wb-opt.ok b{color:var(--ok)}
.wb-opt.bad{background:var(--bad-weak);color:var(--fg)}
.wb-opt.bad b{color:var(--bad)}
.wb-opt .tag{margin-left:7px}
.wb-note{margin-top:2px;font-size:12px;color:var(--fg3)}
.wb-case{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.wb-case-line{font-size:13.5px;line-height:1.7;color:var(--fg2)}
.wb-case-line b{color:var(--fg3);margin-right:6px}
.wb-miss{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.wb-miss b{color:var(--fg3);font-size:13.5px;margin-right:2px}
.wb-ref{font-size:13px}
.wb-ref summary{cursor:pointer;color:var(--pri);font-weight:600;user-select:none}
.wb-ref-body{margin-top:6px;padding:10px 12px;border-radius:8px;background:var(--bg3);color:var(--fg2);line-height:1.75;white-space:pre-wrap}
.empty{padding:44px 20px;text-align:center;color:var(--fg3)}

/* ---------------- 统计 ---------------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.stat-box{padding:16px 18px}
.stat-box b{font-size:24px;display:block;line-height:1.3}
.stat-box span{font-size:12.5px;color:var(--fg3)}
table.data{width:100%;border-collapse:collapse;font-size:13.5px}
table.data th{color:var(--fg3);font-weight:600;text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12.5px;white-space:nowrap}
table.data td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
table.data tr:last-child td{border-bottom:0}
table.data .num{text-align:right;font-variant-numeric:tabular-nums}
.acc-bar{height:8px;border-radius:99px;background:var(--bg3);overflow:hidden;min-width:90px}
.acc-bar>i{display:block;height:100%;border-radius:99px}
.days{display:flex;gap:6px;align-items:flex-end;height:70px;padding:6px 2px}
.days .day{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:flex-end;height:100%}
.days .bar{width:100%;max-width:26px;border-radius:5px 5px 0 0;background:var(--pri);opacity:.85;min-height:2px}
.days .lab{font-size:10px;color:var(--fg3)}
.hist{display:flex;flex-direction:column}
.hist-row{display:flex;gap:12px;align-items:center;padding:9px 4px;border-bottom:1px solid var(--line);font-size:13.5px;color:var(--fg2)}
.hist-row:last-child{border-bottom:0}
.hist-row .sc{margin-left:auto;font-weight:700}

/* ---------------- 弹层 / 提示 ---------------- */
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);background:var(--fg);color:var(--bg2);padding:10px 20px;border-radius:11px;font-size:14px;z-index:200;box-shadow:var(--shadow);max-width:80vw}
.modal-mask{position:fixed;inset:0;background:rgba(10,14,25,.5);z-index:150;display:grid;place-items:center;padding:20px}
.modal{background:var(--bg2);border-radius:16px;max-width:560px;width:100%;max-height:86vh;overflow:auto;padding:22px 24px;box-shadow:var(--shadow)}
.modal h3{margin:0 0 14px;font-size:17px}
.form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.form-row label{font-size:13px;color:var(--fg2);font-weight:600}
.form-row input[type=date],.form-row select,.form-row input[type=text],.form-row input[type=password]{padding:9px 12px;border:1px solid var(--line2);border-radius:9px;background:var(--bg)}
/* 登录/注册卡片（服务器模式） */
.auth-wrap{display:flex;justify-content:center;padding:44px 0 20px}
.auth-card{width:100%;max-width:460px;padding:28px 30px}
.auth-card h2{margin:0 0 6px}
.auth-err{margin:0 0 14px;padding:10px 12px;border-radius:9px;background:var(--bad-weak);color:var(--bad);font-size:13px;line-height:1.6;border:1px solid var(--bad)}

/* ---------------- AI 点评 ---------------- */
.ai-wrap{margin-top:10px}
.ai-box{margin-top:10px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg2)}
.ai-text{white-space:pre-wrap;font-size:13.5px;line-height:1.9;color:var(--fg2)}
.ai-loading{font-size:13px;color:var(--fg3)}

/* ---------------- 题库页 ---------------- */
#libChips{margin:0 0 14px}
.lib-search{flex:1;max-width:340px;min-width:200px;padding:8px 12px;border:1px solid var(--line2);border-radius:9px;background:var(--bg2);color:var(--fg);font-size:13.5px}
.lib-search:focus{outline:none;border-color:var(--pri)}
.lib-item .lib-title{cursor:pointer;font-size:14px;line-height:1.7;font-weight:600;display:flex;align-items:flex-start;gap:6px}
.lib-item .lib-no{flex:none;min-width:2em;color:var(--fg3);font-weight:600;font-variant-numeric:tabular-nums}
.lib-item .lib-title::after{content:"▾";color:var(--fg3);font-size:11px;margin-top:3px;flex:none}
.lib-item.open .lib-title::after{content:"▴"}
.lib-item .lib-title:hover{color:var(--pri)}
.lib-detail{margin-top:10px;border-top:1px dashed var(--line);padding-top:12px}
.lib-d-stem{font-size:14px;line-height:1.8;margin-bottom:8px}
.lib-d-blank{margin-top:12px}
.lib-d-blank-h{font-size:13px;margin-bottom:6px}
.lib-d-blank-win{font-size:13px;line-height:1.7;color:var(--fg3);margin-bottom:6px}
.lib-d-meta{margin-top:12px;font-size:12.5px;color:var(--fg3);display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.lib-ops{flex:none;display:flex;flex-direction:column;gap:8px;min-width:106px}
.lib-ops .btn{justify-content:center;white-space:nowrap}

/* ---------------- 响应式 ---------------- */
@media (max-width:880px){
  .sec-grid{grid-template-columns:1fr}
  .hero-wrong{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:14px;max-width:none;width:100%}
  .rubric-row{grid-template-columns:1fr 1fr 44px}
  .quizbar{top:0}
}
