:root{
  --bg:#f4f6f9; --card:#fff; --fg:#1d2630; --muted:#8a94a6; --line:#ebedf2;
  --brand:#15b374; --brand-d:#0e9b62; --brand-soft:#e6f8f0;
  --nav:#223044; --nav-fg:#aeb9c9; --nav-on:#fff;
  --ok:#15b374; --ok-soft:#e6f8f0; --bad:#f4504d; --bad-soft:#fdecec;
  --warn:#f59e0b; --warn-soft:#fef5e7; --blue:#3b82f6; --blue-soft:#eaf1fe;
  --chip:#f1f4f8; --radius:14px; --shadow:0 2px 14px rgba(31,45,61,.06);
}
[data-theme="dark"]{
  --bg:#14181f; --card:#1c222c; --fg:#e7ebf1; --muted:#8b95a7; --line:#2a323f;
  --brand:#2dd493; --brand-d:#22b87c; --brand-soft:#16332a;
  --nav:#10141a; --nav-fg:#8b95a7; --nav-on:#fff;
  --ok:#2dd493; --ok-soft:#16332a; --bad:#ff6b68; --bad-soft:#3a2020;
  --warn:#fbbf24; --warn-soft:#382c12; --blue:#60a5fa; --blue-soft:#1d2b45;
  --chip:#262e3a; --shadow:0 2px 14px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.7 -apple-system,"Segoe UI","Microsoft YaHei",system-ui,sans-serif}
b{font-weight:700}
button,select,input{font:inherit;color:var(--fg)}
button{cursor:pointer;border:1px solid var(--line);background:var(--card);
  padding:8px 16px;border-radius:10px;transition:.15s;font-size:14px}
button:hover{border-color:var(--brand);color:var(--brand)}
button.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
button.primary:hover{background:var(--brand-d);color:#fff}
button.ghost{background:transparent}
button:disabled{opacity:.45;cursor:not-allowed}
select,input[type=text],input[type=number]{border:1px solid var(--line);background:var(--card);
  padding:8px 12px;border-radius:10px;font-size:14px}
.hidden{display:none!important}
.spin{display:inline-block;width:15px;height:15px;border:2px solid var(--line);
  border-top-color:var(--brand);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:#223044;color:#fff;
  padding:10px 22px;border-radius:12px;font-size:14px;z-index:999;opacity:0;transition:.25s;pointer-events:none;
  box-shadow:0 8px 30px rgba(0,0,0,.25)}
.toast.show{opacity:1}

/* 布局 */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:218px;background:var(--nav);
  display:flex;flex-direction:column;z-index:100;transition:.2s}
.logo{display:flex;align-items:center;gap:11px;padding:22px 22px 18px;color:#fff;
  font-size:18px;font-weight:800;letter-spacing:1px}
.logo-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#2dd493,#0e9b62);
  display:flex;align-items:center;justify-content:center;font-size:19px;color:#fff}
.nav{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:4px}
.nav-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:10px;
  color:var(--nav-fg);font-size:15px;cursor:pointer;transition:.15s;text-decoration:none;user-select:none}
.nav-item:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-item.active{background:var(--brand);color:#fff;font-weight:600;box-shadow:0 4px 14px rgba(21,179,116,.35)}
.ni-ico{font-size:18px;width:22px;text-align:center}
.side-foot{padding:14px 16px 20px;display:flex;align-items:center;gap:10px}
.theme-btn{width:100%;background:rgba(255,255,255,.08);border-color:transparent;color:var(--nav-fg)}
.theme-btn:hover{background:rgba(255,255,255,.14);color:#fff;border-color:transparent}
.build{flex:1;text-align:right;color:#66758a;font-size:11px}
/* 纯图标按钮（顶栏深色模式 / 侧栏退出）*/
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;
  padding:0;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--fg);
  font-size:17px;line-height:1;cursor:pointer;transition:.15s}
.icon-btn:hover{border-color:var(--brand);color:var(--brand);background:var(--chip)}
.icon-btn.side{width:38px;height:38px;background:rgba(255,255,255,.08);border-color:transparent;color:var(--nav-fg)}
.icon-btn.side:hover{background:rgba(255,255,255,.18);color:#fff;border-color:transparent}
.main{margin-left:218px;min-height:100vh}
.topbar{position:sticky;top:0;z-index:50;background:var(--card);border-bottom:1px solid var(--line);
  height:60px;padding:0 26px;display:flex;align-items:center;gap:14px}
.crumb{font-size:17px;font-weight:700}
.top-spacer{flex:1}
.top-stats{font-size:13px;color:var(--muted);display:flex;gap:16px}
.top-user{margin-left:6px;padding-left:16px;border-left:1px solid var(--line)}
.top-user .who{font-size:13.5px;font-weight:600;color:var(--fg);background:var(--chip);
  padding:6px 13px;border-radius:999px;white-space:nowrap}
.top-stats b{color:var(--brand)}
.content{padding:24px 30px 60px;max-width:1760px;margin:0 auto}
.menu-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;
  border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--fg);
  font-size:16px;line-height:1;cursor:pointer;transition:.15s;flex:0 0 auto}
.menu-btn:hover{border-color:var(--brand);color:var(--brand);background:var(--chip)}

/* 折叠（图标模式）：.nav-mini 挂在 body 上，状态记在 localStorage */
.sidebar{transition:width .18s ease, transform .2s ease}
body.nav-mini .sidebar{width:68px}
body.nav-mini .main{margin-left:68px}
body.nav-mini .lbl{display:none}
body.nav-mini .logo{justify-content:center;padding:22px 0 18px}
body.nav-mini .subj-switch{flex-direction:column;margin:0 12px 12px;gap:6px}
body.nav-mini .subj-switch button{padding:9px 0}
body.nav-mini .nav{padding:8px 10px}
body.nav-mini .nav-item{justify-content:center;padding:12px 0;gap:0}
body.nav-mini .side-foot{flex-direction:column;justify-content:center;gap:10px;padding:14px 0 18px}
body.nav-mini .build{flex:0;text-align:center}

/* 卡片/标签 通用 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px 22px;margin-bottom:16px;box-shadow:var(--shadow)}
.tag{font-size:12px;padding:2px 10px;border-radius:999px;background:var(--chip);color:var(--muted);white-space:nowrap}
.tag.brand{background:var(--brand-soft);color:var(--brand-d)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.group{background:var(--blue-soft);color:var(--blue)}
.tag.bad{background:var(--bad-soft);color:var(--bad)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}

/* 填空块：源站用一串 NBSP 撑宽度，统一换成可控宽度的下划线块（避免撑开整行） */
.fill{display:inline-block;height:.95em;border-bottom:1px solid currentColor;
  vertical-align:-.12em;min-width:1.6em;margin:0 .1em}

/* 对答案答题卡 */
.as-progress{position:sticky;top:0;z-index:2;background:var(--card);padding:8px 0;
  font-size:13px;color:var(--muted)}
.as-sec{margin-top:14px}
.as-seclabel{font-weight:600;font-size:13.5px;margin-bottom:8px;color:var(--fg)}
.as-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px 14px}
.as-row{display:flex;align-items:center;gap:6px;padding:3px 0}
.as-no{min-width:26px;text-align:right;color:var(--muted);font-size:13px}
.as-mat{font-size:11px;color:var(--blue);background:var(--blue-soft);border-radius:4px;padding:0 4px}
.as-opts{display:flex;gap:4px}
.as-opt{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;
  border:1px solid var(--line);border-radius:6px;font-size:12.5px;font-weight:500;cursor:pointer;
  color:var(--muted);background:var(--card);user-select:none}
.as-opt:hover{border-color:var(--brand);color:var(--brand)}
.as-opt.on{background:var(--brand);border-color:var(--brand);color:#fff}
.as-mark{color:var(--ok);font-size:12px}

/* 错题统计：头部一行汇总 + 分布弹框 */
.sumline{font-size:12.5px;color:var(--muted);padding:2px 0 10px;border-bottom:1px solid var(--line);margin-bottom:4px}
.sum-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;cursor:pointer}
.sum-row:hover{background:var(--chip)}
.sum-name{min-width:110px;font-size:13.5px}
.sum-bar{flex:1;height:9px;background:var(--chip);border-radius:6px;overflow:hidden}
.sum-bar i{display:block;height:100%;background:var(--bad);border-radius:6px}
.sum-num{min-width:32px;text-align:right;font-size:13.5px;color:var(--bad)}
.empty{text-align:center;color:var(--muted);padding:48px 0;font-size:14px}

/* 组卷等长任务加载态：大转圈 + 文案，避免页面看起来像一片空白 */
.loadingbox{display:flex;flex-direction:column;align-items:center;gap:10px;padding:58px 0}
.loadingbox .loading-t{font-size:15px;color:var(--fg);font-weight:600}
.spin-lg{width:34px;height:34px;border-width:3px}

/* 首页 */
.hello{display:flex;align-items:center;gap:18px;margin-bottom:20px}
.hello h2{margin:0;font-size:23px}
.hello p{margin:3px 0 0;color:var(--muted);font-size:14px}
.streak{margin-left:auto;display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#ff8a3d,#f59e0b);
  color:#fff;padding:12px 20px;border-radius:14px;font-weight:700;box-shadow:0 6px 18px rgba(245,158,11,.35)}
.streak .flame{font-size:26px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}
.kpi .kv{font-size:27px;font-weight:800;line-height:1.2}
.kpi .kl{font-size:13px;color:var(--muted);margin-top:4px}
.kpi .ki{font-size:17px;margin-bottom:8px;width:38px;height:38px;border-radius:11px;
  background:var(--brand-soft);display:flex;align-items:center;justify-content:center}
.kpi:nth-child(2) .ki{background:var(--blue-soft)}
.kpi:nth-child(3) .ki{background:var(--warn-soft)}
.kpi:nth-child(4) .ki{background:var(--bad-soft)}
.grid2{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}
.sec-t{font-size:16px;font-weight:700;margin:0 0 14px;display:flex;align-items:center;gap:8px}
.sec-t .more{margin-left:auto;font-size:13px;color:var(--brand);cursor:pointer;font-weight:400}
.trend{display:flex;align-items:flex-end;gap:5px;height:130px;padding-top:8px}
.trend .bar{flex:1;height:100%;background:var(--brand-soft);border-radius:4px 4px 0 0;position:relative;
  display:flex;align-items:flex-end;justify-content:center}
.trend .bar i{display:block;width:100%;background:linear-gradient(180deg,var(--brand),var(--brand-d));
  border-radius:4px 4px 0 0;min-height:3px}
.trend .bar:hover i{opacity:.8}
.trend .bar.today{background:var(--warn-soft)}
.trend .bar.today i{background:linear-gradient(180deg,#fbbf24,#f59e0b)}
.trend-x{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:6px}
.modlist{display:flex;flex-direction:column;gap:12px}
.modrow{display:flex;align-items:center;gap:12px}
.modrow .mico{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:19px;flex:0 0 40px}
.modrow .mname{font-size:14px;font-weight:600;width:64px;flex:0 0 64px}
.modrow .barwrap{flex:1;height:8px;background:var(--chip);border-radius:99px;overflow:hidden}
.modrow .barwrap i{display:block;height:100%;border-radius:99px;background:var(--brand)}
.modrow .mpct{width:42px;text-align:right;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.mod-entry{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.mod-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 14px;
  text-align:center;cursor:pointer;transition:.15s;box-shadow:var(--shadow);border-top:3px solid var(--mc,var(--brand))}
.mod-card:hover{transform:translateY(-3px);border-color:var(--brand);box-shadow:0 10px 24px rgba(21,179,116,.16)}
.mod-card .mc-ico{font-size:30px;margin-bottom:8px}
.mod-card .mc-name{font-weight:700;font-size:15px}
.mod-card .mc-sub{font-size:12px;color:var(--muted);margin-top:3px}
.weak-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px dashed var(--line);font-size:14px}
.weak-row:last-child{border-bottom:0}

/* 筛选条 */
/* 筛选条：栅格等宽铺满（Ant Design Pro QueryFilter 式），
   字段左起均分整行，查询/重置跟在末尾，避免整组挤一侧留下大块空白 */
/* 条件卡改成 flex 行：字段可伸缩、按钮+分页整块放右侧，尽量都挤在一行
   （原来用 grid auto-fit，分页那块被挤到第二行 —— 东家 2026-10-19） */
.filters{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end}
.filters .fld{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 140px}
.filters .fld select,.filters .fld input{width:100%;box-sizing:border-box}
/* 按钮组（查询/重置并排）：标签占位列在上，按钮横排在下，与其他字段底部对齐 */
.filters .fld-actions .act-row{display:flex;gap:10px;align-items:center}
.filters .fld-actions .act-row button{white-space:nowrap}
.filters label{font-size:12px;color:var(--muted)}

/* 做题 */
.qhead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.qno{font-size:13px;color:var(--muted)}
.meta{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.stem img,.opt img,.explain img,.material img{max-width:100%;height:auto;border-radius:8px;display:block;margin:8px 0}
/* 行内公式图（源站 flag="tex" 的 LaTeX 切片）必须行内排版：
   解析里常有几十张公式，独占一行 + 上下 8px 边距会撑出大片空白、把句子拆成一行一个公式
   （东家 2026-10-13 报「解析大量空白、非正常换行」）。图表图仍走上面的 block 规则。 */
.stem img[flag="tex"],.opt img[flag="tex"],.explain img[flag="tex"],.material img[flag="tex"]{
  display:inline-block;vertical-align:middle;margin:0 2px;border-radius:0;background:none}
.stem p,.material p,.explain p{margin:.5em 0}
.stem{font-size:16px;line-height:1.85}
.material{background:var(--chip);border-radius:12px;padding:14px 16px;margin-bottom:16px;font-size:14.5px;
  border-left:4px solid var(--brand)}
.material .mtitle{font-size:12px;color:var(--muted);margin-bottom:7px;display:flex;justify-content:space-between}
.opts{margin:16px 0;display:flex;flex-direction:column;gap:11px}
.opt{display:flex;gap:12px;align-items:flex-start;border:1.5px solid var(--line);border-radius:12px;
  padding:12px 15px;cursor:pointer;transition:.12s;background:var(--card)}
.opt:hover{border-color:var(--brand)}
.opt .key{flex:0 0 26px;height:26px;border-radius:50%;background:var(--chip);color:var(--muted);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;margin-top:1px}
.opt.sel{border-color:var(--brand);background:var(--brand-soft)}
.opt.sel .key{background:var(--brand);color:#fff}
.opt.ok{border-color:var(--ok);background:var(--ok-soft)}
.opt.ok .key{background:var(--ok);color:#fff}
.opt.bad{border-color:var(--bad);background:var(--bad-soft)}
.opt.bad .key{background:var(--bad);color:#fff}
.opt.locked{cursor:default}
/* 查看模式：只读选项，正确项高亮 + 右侧对勾 */
.opt.ro{cursor:default}
.opt.ro:hover{border-color:var(--line)}
.opt.ro.ok{cursor:default}
.opt.ro.ok:hover{border-color:var(--ok)}
.okbadge{margin-left:auto;color:var(--ok);font-weight:800;font-size:16px;line-height:1.2}
.okbadge.bad{color:var(--bad);font-size:13px;font-weight:700;white-space:nowrap}
/* 结果页/答案解析：徽标紧跟选项正文（inline），不再顶到行尾 */
.optbadge{display:inline-block;margin-left:9px;font-size:13px;font-weight:800;color:var(--ok);
  white-space:nowrap;vertical-align:baseline}
.optbadge.bad{color:var(--bad)}
.matref{display:block;margin:10px 0;padding:8px 12px;border-radius:10px;background:var(--chip);font-size:13px}
.matref summary{cursor:pointer;color:var(--muted);font-weight:600}
.matref[open]{background:transparent;padding:0}
.matref .qmat{margin-top:8px}

/* ══ AI 分析 ══ */
.ai-out{margin-top:12px}
.ai-card{background:linear-gradient(180deg,rgba(21,179,116,.07),rgba(21,179,116,.03));
  border:1px solid var(--brand);border-radius:12px;padding:14px 16px;font-size:14px;line-height:1.85}
.ai-card.err{border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}
.ai-head{font-weight:700;color:var(--brand);margin-bottom:8px;font-size:13.5px;
  display:flex;align-items:center;gap:8px}
.ai-body h1,.ai-body h2,.ai-body h3{font-size:14.5px;margin:12px 0 6px;color:var(--brand)}
.ai-body h1:first-child,.ai-body h2:first-child,.ai-body h3:first-child{margin-top:0}
.ai-body ul,.ai-body ol{margin:6px 0 6px 20px}
.ai-body li{margin:3px 0}
.ai-body strong{color:var(--fg);font-weight:700}
.ai-body p{margin:6px 0}
.ai-body hr{border:0;border-top:1px dashed var(--line);margin:10px 0}

/* ══ 题目笔记（错误思路 / 总结）══ */
.note-box{margin-top:10px;padding:11px 13px;border:1px dashed var(--line);border-radius:11px;background:var(--chip)}
.note-box .note-view{font-size:13.5px;line-height:1.8}
.note-box .note-add{align-self:flex-start;padding:4px 12px;font-size:12.5px;color:var(--muted)}
.nv-empty{color:var(--muted)}
.nv-row{display:flex;gap:8px;align-items:flex-start;margin:4px 0;white-space:pre-wrap}
.nv-sum{white-space:pre-wrap;word-break:break-word}
.nv-tag{flex:0 0 auto;font-size:12px;padding:1px 9px;border-radius:999px}
.nv-tag.bad{background:var(--bad-soft);color:var(--bad)}
.nv-tag.ok{background:var(--ok-soft);color:var(--ok)}
.nv-time{color:var(--muted);font-size:12px}
.nv-ops{display:flex;gap:12px;align-items:center;margin-top:4px}
.note-link{border:0;background:transparent;padding:0;color:var(--brand);font-size:12.5px;cursor:pointer}
.note-link:hover{text-decoration:underline;color:var(--brand-d)}
/* 表格行内的总结：去掉外框，更紧凑 */
.dtable .note-box{margin:0;padding:0;border:0;background:transparent}
.dtable .note-box .note-view{line-height:1.5}
.note-actions{margin-top:8px}
.note-edit-box{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.note-edit-box>label{font-size:13px;color:var(--muted);display:flex;gap:8px;align-items:baseline}
.note-edit-box .hint{font-size:12px;opacity:.75}
.note-edit-box textarea{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);color:var(--fg);font-size:14px;line-height:1.75;
  resize:vertical;font-family:inherit}
.note-edit-box textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(21,179,116,.14)}

/* ══ 弹框 ══ */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:999;
  display:flex;align-items:flex-start;justify-content:center;padding:56px 20px;overflow-y:auto}
.modal{background:var(--card);border-radius:16px;width:100%;max-width:560px;box-shadow:0 24px 60px rgba(0,0,0,.32);
  border:1px solid var(--line)}
.modal.modal-lg{max-width:920px}
.modal.modal-lg .modal-body{max-height:calc(100vh - 240px);overflow-y:auto}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;
  border-bottom:1px solid var(--line);font-weight:700;font-size:15.5px}
.modal-x{border:0;background:transparent;color:var(--muted);font-size:16px;cursor:pointer;padding:4px 9px;border-radius:8px}
.modal-x:hover{background:var(--chip);color:var(--fg)}
.modal-body{padding:18px 20px;font-size:14px;line-height:1.8}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line)}
.modal-sub{color:var(--muted);font-size:13.5px;margin-bottom:10px}
.basis-list{margin:8px 0 0 18px}
.basis-list li{margin:4px 0;color:var(--muted);font-size:13px}
.basis-sum{cursor:pointer;color:var(--brand);font-weight:600;padding:6px 0;user-select:none}
.basis-sum:hover{opacity:.8}
details[open] .basis-sum{margin-bottom:8px}
.ghost.danger{color:var(--bad);border-color:var(--bad)}
.ghost.danger:hover{background:var(--bad-soft);color:var(--bad)}
.result{display:inline-flex;align-items:center;gap:10px;margin-top:14px;padding:10px 16px;
  border-radius:11px;font-weight:600;font-size:15px}
/* 答题结果条：内容自适应宽度（原来通栏 100% 会让右侧空出一大片，东家 2026-10-17 报「答案偏左」） */
.result .rk{font-size:13px;font-weight:700;opacity:.75}
.wrong-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;
  border:1px solid rgba(220,60,60,.35)}
.fav-mini{padding:2px 9px;font-size:15px;line-height:1.5}
.fav-btn.fav-on{border-color:var(--warn);color:var(--warn);background:var(--warn-soft,var(--chip))}
.result.ok{background:var(--ok-soft);color:var(--ok)}
.result.bad{background:var(--bad-soft);color:var(--bad)}
.explain{margin-top:12px;padding:15px 17px;border-radius:11px;background:var(--chip);font-size:14px;line-height:1.8}
.explain .etitle{font-weight:700;margin-bottom:6px;font-size:13px;color:var(--muted)}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;align-items:center}
.progress{font-size:13px;color:var(--muted)}
.subq{border-top:1px dashed var(--line);padding-top:18px;margin-top:18px}
.subq:first-child{border-top:0;padding-top:0;margin-top:0}
.subq-no{font-size:14px;font-weight:700;color:var(--brand);margin-bottom:8px}

/* 列表/分页 */
.list-item{border-bottom:1px solid var(--line);padding:15px 0}
.list-item:last-child{border-bottom:0}
/* 列表行：正文左、操作按钮右 */
.list-item.row-flex{display:flex;gap:16px;align-items:center}
.list-item.row-flex .li-main{flex:1;min-width:0}
.list-item.row-flex > button{flex:0 0 auto}
.li-meta{font-size:12px;color:var(--muted);margin-bottom:6px;display:flex;gap:7px;flex-wrap:wrap}
.li-stem{font-size:14.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.7}
.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:18px;flex-wrap:wrap}

/* 模考规格/考试 */
.spec{border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-bottom:14px;background:var(--card);
  box-shadow:var(--shadow);transition:.15s}
.spec:hover{border-color:var(--brand)}
.spec h3{margin:0 0 6px;font-size:17px}
.spec .sub{color:var(--muted);font-size:13px;margin-bottom:14px}
.spectable{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:12px}
.spectable td{padding:7px 8px;border-bottom:1px solid var(--line)}
.spectable td:last-child{text-align:right;color:var(--brand);font-weight:700}

/* 通用数据表（试卷列表等）：表头 + 属性拆列 + 撑满卡片 */
.dtable{width:100%;border-collapse:collapse;font-size:13.5px}
.dtable thead th{
  text-align:left;font-size:12.5px;font-weight:600;color:var(--muted);
  padding:10px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--bg)}
.dtable tbody td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.dtable tbody tr:last-child td{border-bottom:0}
.dtable tbody tr:hover{background:var(--chip)}
.dtable .col-id{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.dtable .col-title{min-width:220px}
.dtable .col-title .tname{color:var(--fg);font-weight:600;line-height:1.45}
.dtable .col-stem{max-width:340px}
.dtable .stem-clamp{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;color:var(--fg);font-size:13px;line-height:1.5}
.dtable .ans-key{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;border-radius:7px;background:var(--ok-soft);color:var(--ok);font-weight:700;font-size:13px}
.dtable .col-note{min-width:210px;max-width:280px;font-size:13px}
.dtable .col-topic{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.dtable .col-msg{font-size:13px;line-height:1.6;word-break:break-word}
/* 申论题型专项表格里的「考查什么」说明列 */
.dtable .sl-desc{color:var(--muted);font-size:12.5px;line-height:1.5;max-width:340px}
.dtable .nowrap{white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums}
.dtable .col-ops{white-space:nowrap;text-align:right}
.dtable .col-ops button{padding:5px 10px;font-size:12.5px;margin-left:6px}
.dtable-wrap{overflow-x:auto}
.basis{background:var(--chip);border-radius:11px;padding:13px 16px;font-size:13px;color:var(--muted);margin-bottom:14px}
.basis .bt{font-weight:700;color:var(--fg);margin-bottom:6px;font-size:13px}
.basis li{margin:4px 0}
.exambar{position:sticky;top:72px;z-index:40;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:11px 18px;margin-bottom:16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  box-shadow:var(--shadow)}
.timer{font-variant-numeric:tabular-nums;font-weight:800;font-size:18px;color:var(--brand);cursor:pointer}
.timer:hover{text-decoration:underline dotted;text-underline-offset:3px}
.timer.over{color:var(--bad)}
.timer.paused{color:var(--fg);opacity:.55}
.secblock .sechead{font-weight:700;font-size:16px;margin:24px 0 12px;padding-left:12px;border-left:4px solid var(--brand)}
.qcard{border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:14px;background:var(--card);
  box-shadow:var(--shadow)}
.qcard .qtop{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted);margin-bottom:9px}
/* 查看结果/答案解析：题头不两端分离（答案标记别被推到最右），状态标签紧跟题号 */
.qcard .qtop.flat{justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:8px}
.ansline{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:12px;padding:9px 12px;
  border-radius:10px;background:var(--chip);font-size:14px;line-height:1.6}
.ansline .mine{color:var(--bad);font-weight:800}
.ansline .right{color:var(--ok);font-weight:800}
.ansline .dim{color:var(--muted);font-size:13px}
.qcard .qstem{font-size:15.5px;margin-bottom:10px;line-height:1.85}
.qcard .qmat{background:var(--chip);border-radius:11px;padding:13px 15px;margin-bottom:11px;font-size:14px;
  border-left:3px solid var(--brand)}
.qcard .qmat-title{font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:700}
.matref{font-size:12px;color:var(--muted);background:var(--chip);border-radius:6px;padding:1px 8px;margin-left:6px}
.qcard .qopts{display:flex;flex-direction:column;gap:9px}
.qcard .qopt{display:flex;gap:10px;align-items:flex-start;border:1.5px solid var(--line);border-radius:10px;
  padding:10px 14px;cursor:pointer;transition:.12s}
.qcard .qopt:hover{border-color:var(--brand)}
.qcard .qopt .k{flex:0 0 24px;height:24px;border-radius:50%;background:var(--chip);color:var(--muted);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.qcard .qopt.sel{border-color:var(--brand);background:var(--brand-soft)}
.qcard .qopt.sel .k{background:var(--brand);color:#fff}
.answered-mark{color:var(--ok);font-weight:700}
.unanswered-mark{color:var(--muted)}
.qnav{display:flex;flex-wrap:wrap;gap:7px}
.qmods{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;padding-bottom:12px;border-bottom:1px dashed var(--line)}
/* 考试页「模考目录」吸顶条：向上滚也一直可见、可点击（top 由 JS 按操作栏高度设置） */
.qmodsbar{position:sticky;top:138px;z-index:35;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:10px 16px;margin-bottom:14px;box-shadow:var(--shadow)}
.qmodsbar .qmods{margin-bottom:0;padding-bottom:0;border-bottom:0}
.qmod{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:1px solid var(--line);border-radius:999px;
  background:var(--card);color:var(--fg);font-size:13.5px;cursor:pointer;transition:all .15s}
.qmod:hover{border-color:var(--brand);color:var(--brand)}
.qmod .qm-cnt{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.qmod.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.qmod.active .qm-cnt{color:rgba(255,255,255,.85)}
/* 结果页「模考目录」：吸顶一行，点击跳部分、滚动高亮 */
.rmods{display:flex;flex-wrap:wrap;align-items:center;gap:8px;position:sticky;top:74px;z-index:25;
  background:var(--card);padding:10px 2px 11px;border-bottom:1px dashed var(--line);margin-bottom:12px}
.rmods-t{font-size:12.5px;color:var(--muted);margin-right:2px;white-space:nowrap}
.qnav a{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;
  border-radius:9px;border:1px solid var(--line);font-size:12px;color:var(--muted);text-decoration:none}
.qnav a.done{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-d);font-weight:700}
.scorereport{text-align:center;padding:24px 0 12px}
.scorereport .big{font-size:52px;font-weight:800;color:var(--brand);line-height:1.1}
.scorereport .bigsub{color:var(--muted);font-size:14px;margin-top:6px}
.secscore{width:100%;border-collapse:collapse;font-size:14.5px;margin:14px 0}
.secscore th,.secscore td{padding:10px;border-bottom:1px solid var(--line);text-align:left}
.secscore td:last-child,.secscore th:last-child{text-align:right}
/* 结果页分模块成绩：正确率列（绿色）与合计行加粗分隔 */
.secscore .pct{color:var(--brand);font-variant-numeric:tabular-nums;white-space:nowrap}
.secscore tr.totrow td{border-top:2px solid var(--line);border-bottom:0;padding-top:12px}
.reviewrow{border:1px solid var(--line);border-radius:11px;padding:13px 16px;margin-bottom:11px}
.rvtop{font-size:12px;color:var(--muted);margin-bottom:7px;display:flex;gap:12px;flex-wrap:wrap}
.reviewrow .bad{color:var(--bad);font-weight:700}
.reviewrow .good{color:var(--ok);font-weight:700}
.reviewrow .exp{background:var(--chip);border-radius:9px;padding:11px 14px;margin-top:9px;font-size:13.5px}
.buildmark{text-align:center;color:var(--muted);font-size:12px;padding:10px 0 20px}

/* ══ 申论模块 ══ */
.subj-switch{display:flex;gap:8px;margin:0 16px 14px;background:rgba(255,255,255,.07);padding:5px;border-radius:11px}
.subj-switch button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  background:transparent;border:0;color:var(--nav-fg);padding:8px 0;border-radius:8px;font-size:14px}
.subj-switch button:hover{color:#fff;border:0}
.subj-switch button.on{background:var(--brand);color:#fff;font-weight:600}
.sl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.sl-paper{border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;transition:.15s;cursor:pointer;background:var(--card)}
.sl-paper:hover{border-color:var(--brand);transform:translateY(-2px);box-shadow:0 10px 24px rgba(21,179,116,.14)}
.sl-paper .sp-top{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:9px;min-height:26px;align-content:flex-start}
.sl-paper .sp-title{font-size:15px;font-weight:700;line-height:1.5}
.sl-paper .sp-sub{font-size:13px;color:var(--muted);margin:7px 0 12px}
.sl-type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.sl-type-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;
  cursor:pointer;transition:.15s;box-shadow:var(--shadow)}
.sl-type-card:hover{border-color:var(--brand);transform:translateY(-3px)}
.sl-type-card .st-ico{font-size:26px}
.sl-type-card .st-name{font-weight:700;font-size:15px;margin:6px 0 4px}
.sl-type-card .st-desc{font-size:12.5px;color:var(--muted);min-height:34px}
.sl-type-card .st-bar{height:7px;background:var(--chip);border-radius:99px;overflow:hidden;margin:8px 0 6px}
.sl-type-card .st-bar i{display:block;height:100%;background:var(--brand);border-radius:99px}
.sl-type-card .st-cnt{font-size:12px;color:var(--muted)}
/* 作答页布局 */
.sl-paperbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 18px;margin-bottom:14px}
.sl-layout{display:grid;grid-template-columns:1fr 1.15fr;gap:16px;align-items:start}
.sl-materials{max-height:calc(100vh - 190px);overflow-y:auto;position:sticky;top:78px}
.sl-notice{font-size:12.5px;color:var(--muted);border-bottom:1px dashed var(--line);padding-bottom:10px;margin-bottom:12px}
.sl-mat{margin-bottom:16px;font-size:14.5px;line-height:1.9}
.sl-mat-title{font-weight:700;color:var(--brand-d);margin-bottom:5px}
.sl-qnav-card{padding:12px 16px;margin-bottom:12px}
.sl-qnavs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.sl-qnav{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;
  border:1px solid var(--line);font-size:12px;color:var(--muted);text-decoration:none}
.sl-qnav:hover{border-color:var(--brand);color:var(--brand)}
.sl-qcard{scroll-margin-top:80px}
.sl-src-line{font-size:12.5px;color:var(--muted);margin:-2px 0 9px}
.sl-typebar{margin-bottom:14px}
.sl-qhead{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.sl-qno{font-weight:700;font-size:15px}
.sl-stem{font-size:15px;line-height:1.85;margin-bottom:8px}
.sl-req{background:var(--chip);border-radius:10px;padding:10px 14px;font-size:13.5px;color:var(--muted);margin-bottom:12px}
.sl-req p{margin:3px 0}
.sl-writebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.sl-charcount{font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}
.sl-wordhint{font-size:12.5px;color:var(--muted)}
/* 25 字方格纸：用背景网格模拟考场稿纸 */
.sl-gridpaper{width:100%;min-height:210px;border:1.5px solid var(--line);border-radius:11px;padding:12px 14px;
  font:15px/1.9 -apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--fg);resize:vertical;
  background:
    repeating-linear-gradient(to right, transparent 0, transparent 23.4px, var(--line) 23.4px, var(--line) 24px),
    repeating-linear-gradient(to bottom, transparent 0, transparent 25.6px, var(--line) 25.6px, var(--line) 26.4px),
    var(--card);
  background-size:24px 26.4px;line-height:26.4px;letter-spacing:0}
[data-theme="dark"] .sl-gridpaper{background-color:#1c222c;
  background-image:
    repeating-linear-gradient(to right, transparent 0, transparent 23.4px, #3b4657 23.4px, #3b4657 24px),
    repeating-linear-gradient(to bottom, transparent 0, transparent 25.6px, #3b4657 25.6px, #3b4657 26.4px)}
.sl-gridpaper:focus{outline:none;border-color:var(--brand)}
.sl-ref{margin-top:14px;border:1px solid var(--brand);border-radius:11px;padding:14px 16px;background:var(--brand-soft)}
.sl-ref-t{font-weight:700;margin-bottom:8px;font-size:14px}
.sl-ref-hint{font-weight:400;color:var(--muted);font-size:12px;margin-left:8px}
.sl-self{margin-top:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  border-top:1px dashed var(--line);padding-top:12px;font-size:14px}
.sl-ai{margin-top:14px;border:1px solid var(--line);border-radius:11px;overflow:hidden}
.sl-ai-top{display:flex;align-items:baseline;gap:14px;padding:14px 16px;background:var(--chip);flex-wrap:wrap}
.sl-ai-score{font-size:30px;font-weight:800;line-height:1}
.sl-ai-score span{font-size:14px;font-weight:400;color:var(--muted);margin-left:2px}
.sl-ai-pct{font-size:13px;color:var(--muted)}
.sl-ai-fb{padding:14px 16px;font-size:14px;line-height:1.85}
.sl-ai-fb .sl-md-h{font-size:14.5px;margin:14px 0 6px;padding-left:9px;border-left:3px solid var(--brand)}
.sl-ai-fb .sl-md-h:first-child{margin-top:0}
.sl-ai-fb .sl-md-ul,.sl-ai-fb .sl-md-ol{margin:6px 0;padding-left:22px}
.sl-ai-fb li{margin:3px 0}
.sl-ai-fb hr{border:0;border-top:1px dashed var(--line);margin:12px 0}
.sl-ai-fb p{margin:6px 0}
.sl-ai-fb code{background:var(--chip);padding:1px 5px;border-radius:5px;font-size:13px}
/* 申论批改表格渲染（对齐真题批改样式） */
.sl-md-table-wrap{overflow-x:auto;margin:14px 0 18px;border:1px solid #dbeafe;border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,0.03);background:#fff}
[data-theme="dark"] .sl-md-table-wrap{background:#1e293b;border-color:#334155}
.sl-md-table{width:100%;border-collapse:collapse;font-size:13.5px;line-height:1.65}
.sl-md-table th{background:#f0f4f9;color:#1e293b;font-weight:700;padding:12px 16px;border-bottom:1px solid #e2e8f0;text-align:left;white-space:nowrap}
[data-theme="dark"] .sl-md-table th{background:#0f172a;color:#cbd5e1;border-bottom-color:#334155}
.sl-md-table th:last-child{text-align:center}
.sl-md-table td{padding:12px 16px;border-bottom:1px solid #f1f5f9;vertical-align:top;color:#334155}
[data-theme="dark"] .sl-md-table td{border-bottom-color:#334155;color:#e2e8f0}
.sl-md-table td:first-child{font-weight:600;color:#0f172a;min-width:200px}
[data-theme="dark"] .sl-md-table td:first-child{color:#f8fafc}
.sl-md-table td:last-child{text-align:center;font-weight:700;white-space:nowrap;color:var(--brand, #16a34a);font-variant-numeric:tabular-nums}
.sl-md-table tr:last-child td{border-bottom:none}
.sl-md-table tr:hover td{background:#f8fafc}
[data-theme="dark"] .sl-md-table tr:hover td{background:#1e293b}
.sl-aigraded{margin-top:14px;padding:16px;border-radius:11px;background:var(--chip);color:var(--muted)}
@media (max-width: 1100px){.sl-layout{grid-template-columns:1fr}.sl-materials{position:static;max-height:none}}

/* ══ 系统设置 / 日志 ══ */
.warnbar{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn);border-radius:11px;
  padding:12px 16px;margin-bottom:14px;font-size:14px}
.setform{display:flex;flex-direction:column;gap:12px;max-width:640px}
/* AI 模型列表（系统设置）：接口地址/密钥共用，模型列表只填模型名 */
.aitable{display:flex;flex-direction:column;gap:8px;max-width:640px}
.aihead,.airow{display:grid;grid-template-columns:1fr 90px 170px;gap:8px;align-items:center}
.aihead{font-size:12.5px;color:var(--muted);padding:0 2px 6px;border-bottom:1px dashed var(--line)}
.airow{padding:8px 2px;border-bottom:1px solid var(--line)}
.airow input[type=text],.airow input[type=password]{width:100%;box-sizing:border-box;padding:8px 10px;
  border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg);font-size:13px}
.airow input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(21,179,116,.14)}
.air-en{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap}
.air-ops{display:flex;gap:6px;justify-content:flex-end}
.air-ops button{padding:4px 10px;font-size:12.5px}
@media (max-width:900px){
  .aihead{display:none}
  .airow{grid-template-columns:1fr 1fr;gap:6px}
}
/* 分析按钮旁的模型下拉 */
select.ai-model{width:auto;min-width:118px;max-width:170px;padding:4px 8px;font-size:12.5px;border-radius:8px;
  border:1px solid var(--line);background:var(--card);color:var(--fg);margin-right:6px;vertical-align:middle}
.setrow{display:flex;align-items:center;gap:14px}
.setrow>span{flex:0 0 92px;font-size:14px;color:var(--muted)}
.setrow>input[type=text],.setrow>input[type=password]{flex:1;padding:9px 12px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);color:var(--fg)}
/* 题目编辑弹框里的多行文本（题干/解析）与选项输入 */
.setrow>textarea{flex:1;box-sizing:border-box;padding:9px 11px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);color:var(--fg);font:inherit;line-height:1.6;resize:vertical}
.setrow>textarea:focus,.setrow>input[type=text]:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(21,179,116,.14)}
.setform .setrow{align-items:flex-start}
.setform .setrow>span{padding-top:9px}
/* 富文本解析编辑器（所见即所得，图片正常显示） */
.rt-bar{display:flex;gap:6px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
.rt-btn{padding:3px 9px;font-size:12.5px;border:1px solid var(--line);background:var(--card);
  border-radius:7px;cursor:pointer;line-height:1.5}
.rt-btn:hover{border-color:var(--brand);color:var(--brand)}
.rt-hint{font-size:12px;color:var(--muted);margin-left:4px}
.rt-editor{min-height:120px;max-height:320px;overflow-y:auto;padding:10px 12px;
  border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:13.5px;line-height:1.75}
.rt-editor:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(21,179,116,.14)}
.rt-editor img{max-width:100%;height:auto;border-radius:6px;margin:6px 0;display:block}
.rt-editor p{margin:6px 0}
.setrow>select{flex:1;max-width:280px;padding:9px 12px;border:1px solid var(--line);
  border-radius:10px;background:var(--card);color:var(--fg)}
.setrow>input[type=checkbox]{width:18px;height:18px}
.setnote{font-size:12.5px;color:var(--muted);line-height:1.7}
.loginbox{max-width:460px;margin:40px auto}
.loglist{display:flex;flex-direction:column;gap:2px;max-height:620px;overflow-y:auto}
.logrow{display:flex;gap:12px;align-items:baseline;padding:7px 10px;border-radius:8px;font-size:13.5px}
.logrow:nth-child(odd){background:var(--chip)}
.logrow .lt{color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 118px;font-size:12.5px}
.logrow .lk{flex:0 0 92px;font-size:12.5px;color:var(--muted)}
.logrow .lm{flex:1;word-break:break-all}
.logrow.warn .lm{color:var(--warn)}
.logrow.error .lm{color:var(--bad)}

/* 响应式 */
@media (max-width: 900px){
  .sidebar{transform:translateX(-100%);box-shadow:0 0 40px rgba(0,0,0,.3)}
  .sidebar.open{transform:translateX(0)}
  .main{margin-left:0}
  body.nav-mini .main{margin-left:0}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .grid2{grid-template-columns:1fr}
  .mod-entry{grid-template-columns:repeat(2,1fr)}
  .content{padding:16px 14px 50px}
  .top-stats{display:none}
}


/* ── 题型专项刷题（跨套卷抽题，每题自带材料）── */
.slq{margin-bottom:16px;padding-bottom:16px;border-bottom:1px dashed var(--line)}
.slq:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.slq-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:10px}
.slq-no{font-weight:700;color:var(--fg);font-size:14px}
.slq-type{background:var(--brand-soft);color:var(--brand-d)}
.slq-src{font-size:12.5px;color:var(--muted)}
.slq-score{font-weight:700;color:var(--warn);font-size:13px}
.slq-mats{border:1px solid var(--line);border-radius:10px;margin-bottom:11px;background:var(--chip)}
.slq-mats>summary{cursor:pointer;padding:9px 13px;font-size:13px;color:var(--brand-d);font-weight:600}
.slq-mats-hint{color:var(--muted);font-size:12px;font-weight:400;margin-left:6px}
.slq-mat{padding:0 0 11px}
.slq-mat-t{font-weight:600;font-size:13px;color:var(--brand-d);margin-bottom:5px}
.slq-mat-b{font-size:14px;line-height:1.9}
.slq-stem{font-size:15px;line-height:1.95;margin-bottom:9px;color:var(--fg)}
.slq-req{font-size:14px;line-height:1.85;color:var(--muted);margin-bottom:9px;padding-left:10px;border-left:3px solid var(--line)}
.slq .sl-gridbar{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}


/* ── 申论「作答记录」：趋势条 + 回看批改弹框 ── */
.sl-trend{display:flex;align-items:flex-end;gap:5px;height:66px;margin-top:14px;padding-top:10px;border-top:1px dashed var(--line)}
.sl-tb{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:3px}
.sl-tb i{display:block;width:100%;min-height:2px;background:var(--brand);border-radius:3px 3px 0 0;opacity:.75}
.sl-tb em{font-size:10.5px;color:var(--muted);font-style:normal}
.sl-trend-hint{font-size:11.5px;color:var(--muted);align-self:center;margin-left:6px;white-space:nowrap}
.sl-look-meta{font-size:14px;font-weight:600;color:var(--fg);line-height:1.75;margin-bottom:12px}
.sl-look-score{font-weight:400;font-size:13px;color:var(--warn)}
.sl-look-sec{margin-bottom:14px}
.sl-look-t{font-size:13px;font-weight:600;color:var(--brand-d);margin-bottom:6px}
.sl-look-stem{font-size:14.5px;line-height:1.9;color:var(--fg)}
.sl-look-ans{min-height:110px;font-size:14px;line-height:1.9;white-space:pre-wrap}
.sl-ai-fb{font-size:14px;line-height:1.85;color:var(--fg)}
.sl-ai-fb h3,.sl-ai-fb h4,.sl-ai-fb h5{font-size:14px;margin:8px 0 4px}
.sl-ai-fb ul,.sl-ai-fb ol{margin:4px 0 4px 20px}
.sl-ai-fb p{margin:5px 0}


/* ================= 响应式增强：平板 / 手机 ================= */

/* 抽屉遮罩（窄屏侧栏滑出时显示） */
.sidebar-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:39;display:none;
  backdrop-filter:blur(1px);-webkit-backdrop-filter:blur(1px)}
body.nav-open .sidebar-mask{display:block}
.sidebar{z-index:40}
body.nav-open{overflow:hidden}

/* 表格横滑提示（由 JS 在可滚动时给 .card 加 .xscroll） */
.card.xscroll > .dtable-wrap{position:relative}
.card.xscroll::after{content:'← 左右滑动查看完整表格 →';display:block;text-align:center;
  font-size:11.5px;color:var(--muted);padding:7px 0 0;letter-spacing:.3px}

/* 平板横屏（≤1180px）：内容区收紧 */
@media (max-width: 1180px){
  .content{padding:20px 20px 56px}
  .kpis{grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px}
  .kpi .kv{font-size:24px}
}

/* 平板竖屏 / 大手机（≤900px）：侧栏改抽屉，表格首列吸附 */
@media (max-width: 900px){
  .content{padding:16px 16px 56px}
  .kpis{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px}
  .kpi{padding:15px 16px}
  .kpi .kv{font-size:23px}
  .card{padding:16px 16px;margin-bottom:14px}
  .filters{grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:10px}
  .dtable{font-size:13px}
  .dtable thead th,.dtable tbody td{padding:9px 8px}
  .dtable thead th:first-child,.dtable tbody td:first-child{
    position:sticky;left:0;z-index:2;background:var(--card);box-shadow:1px 0 0 var(--line)}
  .dtable thead th:first-child{z-index:3}
  .modal-mask{padding:26px 16px}
  .modal{max-width:100%}
  .modal.modal-lg .modal-body{max-height:calc(100vh - 210px)}
  .topbar{padding:10px 14px}
  .qhead{font-size:13.5px}
}

/* 手机（≤640px）：单列为主 + 触摸友好 + 弹框贴底 */
@media (max-width: 640px){
  .content{padding:12px 10px 62px}
  .card{padding:14px 13px;border-radius:12px;margin-bottom:12px}
  .kpis{grid-template-columns:repeat(2,1fr);gap:9px;margin-bottom:12px}
  .kpi{padding:12px 12px}
  .kpi .kv{font-size:21px}
  .kpi .kl{font-size:11.5px}
  .kpi .ki{font-size:16px}
  .filters{grid-template-columns:1fr;gap:9px}
  .filters .fld{flex-direction:row;align-items:center;gap:10px}
  .filters .fld label{min-width:54px;text-align:right;font-size:12.5px;flex:0 0 auto}
  .filters .fld select,.filters .fld input{flex:1;width:auto}
  .dtable{font-size:12.5px}
  .dtable thead th,.dtable tbody td{padding:8px 7px}
  .dtable .col-ops button{padding:6px 9px;font-size:12.5px}
  .pager{margin-top:14px;gap:6px}
  .pager button{padding:8px 10px;font-size:13px}
  .pager .progress{flex:1 0 100%;text-align:center;order:-1;margin-bottom:4px}
  .modal-mask{padding:0;align-items:flex-end}
  .modal{max-width:100%;border-radius:16px 16px 0 0;max-height:94vh;display:flex;flex-direction:column}
  .modal-head{padding:13px 15px;font-size:15px}
  .modal-body{padding:14px 15px;flex:1;overflow-y:auto;max-height:none}
  .modal-foot{padding:12px 15px;gap:8px}
  .modal-foot button{flex:1}
  .topbar{padding:9px 11px;gap:8px}
  .menu-btn{width:34px;height:34px}
  .crumb{font-size:15px}
  .btn,.ghost,.primary{padding:8px 12px}
  .sl-trend{height:54px}
  .sl-trend-hint{display:none}
  .sl-look-ans{min-height:80px}
}

/* 极窄手机（≤380px） */
@media (max-width: 380px){
  .kpis{grid-template-columns:1fr}
  .dtable{font-size:12px}
  .content{padding:10px 8px 62px}
}

/* 触摸设备：去掉 hover 残留、加大点按区域、横滑跟手 */
@media (hover: none) and (pointer: coarse){
  .nav-item{padding:14px 16px}
  .dtable tbody tr:hover{background:transparent}
  .dtable-wrap{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
  button,.nav-item{-webkit-tap-highlight-color:transparent}
}

/* 窄屏走抽屉时忽略图标模式（万一用户手动折叠后进窄屏，恢复完整侧栏） */
@media (max-width: 900px){
  body.nav-mini .sidebar{width:218px}
  body.nav-mini .lbl{display:inline}
  body.nav-mini .logo{justify-content:flex-start;padding:22px 22px 18px}
  body.nav-mini .subj-switch{flex-direction:row;margin:0 14px 10px;gap:8px}
  body.nav-mini .subj-switch button{padding:9px 14px}
  body.nav-mini .nav{padding:8px 12px}
  body.nav-mini .nav-item{justify-content:flex-start;padding:12px 16px;gap:12px}
  body.nav-mini .side-foot{flex-direction:row;justify-content:space-between;padding:14px 18px}
  body.nav-mini .build{flex:1;text-align:left}
}


/* ── 题型专项：每题左右两栏（左材料 / 右作答），与真题套卷同款布局 ── */
.slq-body{display:grid;grid-template-columns:1fr 1.15fr;gap:16px;align-items:start}
/* 材料栏：适度限高（跟随视口，最多 620px）+ 内部滚动；超长时可点「展开全文」 */
.slq-mat-col{background:var(--chip);border:1px solid var(--line);border-radius:11px;
  padding:12px 14px;max-height:min(64vh, 620px);overflow-y:auto;position:relative}
.slq-mat-col.expanded{max-height:none}
.slq-mat-more{position:sticky;bottom:0;display:block;width:100%;margin-top:8px;
  background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 0;
  font-size:12.5px;color:var(--brand-d);cursor:pointer;font-family:inherit}
.slq-mat-more:hover{border-color:var(--brand);background:var(--brand-soft)}
.slq-mat-col.expanded .slq-mat-more{position:static}
.slq-mat-head{font-weight:700;font-size:13.5px;color:var(--brand-d);margin-bottom:9px;
  padding-bottom:8px;border-bottom:1px dashed var(--line)}
.slq-mat-hint{font-weight:400;color:var(--muted);font-size:12px;margin-left:6px}
/* 作答栏吸附：材料很长时，题干/作答框始终留在视野内 */
.slq-ans-col{min-width:0;position:sticky;top:78px}
.slq .sl-mat-b{margin-bottom:12px}
@media (max-width: 1100px){
  .slq-body{grid-template-columns:1fr}
  .slq-ans-col{position:static}   /* 单列上下排列时不做吸附 */
  .slq-mat-col{max-height:min(46vh, 400px)}
}


/* ── 申论材料画线高亮 ── */
.sl-hl{cursor:pointer;border-radius:2px;padding:0 1px;color:inherit;
  box-decoration-break:clone;-webkit-box-decoration-break:clone}
.sl-hl:hover{outline:1px solid var(--brand)}
/* 下划线标记（可与高亮叠加：高亮里再划红线） */
.sl-ul{cursor:pointer;text-decoration:underline;text-decoration-thickness:2px;
  text-underline-offset:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.sl-ul:hover{outline:1px solid var(--brand);border-radius:2px}
.sl-markbar{position:absolute;z-index:700;display:flex;align-items:center;gap:7px;
  background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:6px 10px;box-shadow:0 10px 28px rgba(0,0,0,.2);user-select:none}
.sl-markbar.hidden{display:none}
.sl-mb-label{font-size:12.5px;color:var(--muted);white-space:nowrap}
.sl-mb-color{width:24px;height:24px;border-radius:7px;border:1px solid var(--line);cursor:pointer;padding:0}
.sl-mb-color:hover{transform:scale(1.08)}
/* 下划线按钮 */
.sl-mb-ul{width:26px;height:24px;border-radius:7px;border:1px solid var(--line);background:var(--card);
  color:var(--fg);cursor:pointer;font-weight:800;font-size:13px;line-height:1;
  text-decoration:underline;text-decoration-color:#e5484d;text-decoration-thickness:2px;text-underline-offset:2px}
.sl-mb-ul:hover{border-color:var(--brand);color:var(--brand)}
.sl-mb-del{border:0;background:transparent;cursor:pointer;font-size:15px;color:var(--bad);padding:2px 5px}
.sl-mb-color.hidden,.sl-mb-del.hidden{display:none}
[data-theme="dark"] .sl-hl{color:#1d2630}

/* ═══════════════════════════════════════════════════════════════════
   手机端适配（东家 2026-10-18 定的 P0/P1/P2）
   P0 表格转卡片列表 · 筛选卡折叠 · 答题时收起筛选 · 题号卡 5 列
   P1 弹框全屏 + 底部固定操作 · 顶栏精简 · 触控尺寸
   P2 申论方格纸/作答区 · 左右滑动翻题（JS 在 app-core.js）
   ═══════════════════════════════════════════════════════════════════ */
.filt-toggle{display:none}

@media (max-width: 640px){
  /* ── P0-1 表格 → 卡片列表（操作按钮常驻可见，不再横向滑动）── */
  .dtable-wrap{overflow-x:visible}
  .dtable{display:block;width:100%;min-width:0;border:0;background:transparent}
  .dtable thead{display:none}
  .dtable tbody{display:block}
  .dtable tbody tr{display:block;border:1px solid var(--line);border-radius:12px;
    padding:12px 13px;margin:0 0 10px;background:var(--card)}
  .dtable tbody td{display:block;width:auto;border:0;padding:2px 0;text-align:left;font-size:13.5px}
  .dtable tbody td[data-label]::before{content:attr(data-label);display:inline-block;
    min-width:58px;color:var(--muted);font-size:12px;margin-right:6px;vertical-align:top}
  .dtable tbody td.m-hide{display:none}
  .dtable tbody td.col-stem{padding-top:5px}
  .dtable tbody td.col-stem::before{display:block;margin-bottom:2px}
  .dtable tbody td.col-ops{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px;
    padding-top:9px;border-top:1px dashed var(--line)}
  .dtable tbody td.col-ops::before{display:none}
  .dtable tbody td.col-ops button{flex:1 1 auto;min-height:38px}
  .dtable tbody td[colspan]{text-align:center;padding:10px 0}

  /* ── P0-2 筛选卡：默认收起，只留一行「🔍 已选条件」── */
  .filt-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;
    padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--card);
    color:var(--fg);font-size:14px;font-weight:600;cursor:pointer;text-align:left}
  .filt-toggle .filt-sum{flex:1;color:var(--muted);font-weight:500;font-size:12.5px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .filt-toggle .filt-caret{color:var(--muted);transition:transform .18s}
  #filterCard.filt-open .filt-caret{transform:rotate(180deg)}
  #filterCard .filters{display:none;margin-top:12px}
  #filterCard.filt-open .filters{display:grid}
  #filterCard{padding:10px}
  #filterCard.in-quiz{display:none}   /* 答题时收起，把整屏让给题目 */

  /* ── P0-3 题号卡：每行 5 个、方块 44px（原来一行 8 个只有 30px）── */
  .qnav{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
  .qnav a{width:auto;height:44px;font-size:14px}

  /* ── P1 弹框：全屏 + 底部固定操作条 ── */
  .modal-mask{padding:0;align-items:stretch}
  .modal,.modal.modal-lg{max-width:100%;width:100%;height:100dvh;max-height:100dvh;
    border-radius:0;display:flex;flex-direction:column}
  .modal.modal-lg .modal-body{max-height:none}
  .modal-body{flex:1;overflow-y:auto}
  .modal-foot{position:sticky;bottom:0;background:var(--card);z-index:3;
    padding-bottom:calc(12px + env(safe-area-inset-bottom))}
  .modal-foot button{min-height:44px}

  /* ── P1 顶栏精简 + 触控尺寸 ── */
  .top-user{display:none!important}
  .btn,.ghost,.primary,button{min-height:40px}
  .opt{padding:13px 14px;min-height:48px}

  /* ── P2 申论：方格纸 / 作答区 ── */
  .sl-grid{grid-template-columns:1fr}
  .sl-gridpaper{min-height:170px;padding:10px 12px;font-size:15px;line-height:1.9}
  .slq{padding:12px}
}

@media (max-width: 380px){
  .dtable tbody td[data-label]::before{min-width:48px}
  .qnav{grid-template-columns:repeat(4,1fr)}
}

/* 答题卡折叠（手机）：默认收起成一行「🗂 答题卡 3/20」，点开才铺开 5 列题号 */
.qnav-toggle{display:none}
@media (max-width: 640px){
  .qnavcard{padding:8px 10px}
  .qnav-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:42px;
    padding:6px 4px;border:0;background:transparent;color:var(--fg);font-size:14px;
    font-weight:600;cursor:pointer}
  .qnav-toggle b{margin-left:auto;color:var(--brand);font-variant-numeric:tabular-nums}
  .qnav-toggle .qnav-caret{color:var(--muted);transition:transform .18s}
  .qnavcard.open .qnav-caret{transform:rotate(180deg)}
  .qnavcard .qnav{display:none}
  .qnavcard.open .qnav{display:grid;margin-top:8px}
}

/* 申论题型专项：分页控件与「查询 / 做题」同一行（东家 2026-10-19 要求别放列表底部） */
/* 按钮 + 分页同占整行：查询/做题在左，分页靠右，读作同一行 */
.filters .fld-actions.sl-type-actions{grid-column:1 / -1}
.sl-type-actions .act-row{flex-wrap:wrap;gap:10px}
.sl-type-actions #slTypePagerHost{margin:0 0 0 auto;gap:6px;flex-wrap:wrap}
.sl-type-actions #slTypePagerHost button{padding:6px 10px;font-size:13px;min-height:0}
.sl-type-actions #slTypePagerHost .progress{font-size:12.5px;white-space:nowrap}
.sl-type-actions #slTypePagerHost select{width:auto;padding:5px 6px;font-size:13px}
@media (max-width: 900px){
  .filters .fld-actions.sl-type-actions{grid-column:1 / -1}
  .sl-type-actions #slTypePagerHost{margin-left:0;width:100%}
}

/* ═══════════════════════════════════════════════════════════════════
   全站统一分页条（东家 2026-10-19：各页面分页样式要一致）
   位置：条件卡 → 查询按钮同一行右侧；内容：首页/上一页/x / y/下一页/末页 + 共 N 条 · 每页选择
   ═══════════════════════════════════════════════════════════════════ */
/* 条件卡：字段 + 查询按钮 + 分页 全在**同一行**（东家 2026-10-19：别把查询挤到第二行） */
.filters .fld-actions{flex:0 0 auto;margin-left:auto}
.filters .fld-actions .act-row{flex-wrap:nowrap;gap:8px;overflow:visible}
/* 手机端分页行（由 relocatePager 动态搬出来，桌面端不存在） */
.pagerrow{display:flex;justify-content:flex-start;margin-top:10px;width:100%}
.pagerrow .pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0}
.filters .fld-actions .act-row .pager{margin:0 0 0 4px;display:flex;align-items:center;
  gap:5px;flex-wrap:nowrap}
/* 紧凑分页：同处一行时不显示「共 N 条」文字，只留页码 + 按钮 + 每页选择 */
.filters .fld-actions .act-row .pager .pgtot{display:none}
.filters .fld-actions .act-row .pager .pgbtn{padding:5px 7px;font-size:12.5px}
.filters .fld-actions .act-row .pager .pgnow{padding:0 2px;font-size:12.5px}
.pager .pgbtn{min-height:0;padding:6px 10px;font-size:13px;border-radius:8px;
  border:1px solid var(--line);background:var(--card);color:var(--fg);cursor:pointer}
.pager .pgbtn:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.pager .pgbtn:disabled{opacity:.45;cursor:default}
.pager .pgnow{font-size:13px;color:var(--fg);font-weight:600;padding:0 4px;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.pager .pgtot{font-size:12.5px;color:var(--muted);white-space:nowrap;
  display:inline-flex;align-items:center;gap:4px}
.pager .pgsize{width:auto;padding:5px 6px;font-size:13px;border-radius:8px}
/* 老的列表底部分页（如有残留）与统一条外观一致 */
.pager>button{padding:6px 10px;font-size:13px}

@media (max-width: 1400px){
  /* 中等宽度：字段再瘦一点，分页只留「上一页 / 页码 / 下一页 + 每页」，保证仍在同一行 */
  .filters .fld{flex:1 1 120px}
  .filters .fld-actions .act-row .pager .pgbtn:nth-of-type(1),
  .filters .fld-actions .act-row .pager .pgbtn:nth-of-type(4){display:none}
}
@media (max-width: 1100px){
  /* 窄屏放不下：分页整块换行、占满一行 */
  .filters .fld-actions{flex:1 1 100%;margin-left:0}
  .filters .fld-actions .act-row{flex-wrap:wrap}
  .filters .fld-actions .act-row .pager{margin-left:auto}
  .filters .fld-actions .act-row .pager .pgtot{display:inline-flex}
  .pager .pgbtn{padding:8px 12px;min-height:38px}
}
