/* ============================================================
   HOL · 自考文学背诵站 — 设计系统 v3
   布局：左侧常驻目录 300px ＋ 右侧阅读区
   字号：html 上的 --fs 缩放，全部尺寸用 rem，A−/A+ 即时生效
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

:root {
  --bg:#f4f6f9;
  --paper:#ffffff;
  --ink:#1b2027;
  --ink2:#39424f;
  --sub:#6b7583;
  --faint:#9aa3b0;
  --line:#e5e9ef;
  --line2:#eef1f5;

  --brand:#2c4f8f;
  --brand2:#1e3a6e;
  --brand-soft:#edf2fb;
  --brand-line:#c9d8f0;

  --red:#c2453c;   --red-soft:#fcf0ef;
  --amber:#9d6f16; --amber-soft:#fdf6e6;
  --green:#267050; --green-soft:#edf8f2;

  --side-w:19rem;
  --read-w:52rem;
  --fs:1;
  --r:14px;
  --sh:0 1px 2px rgba(17,24,39,.045), 0 2px 6px rgba(17,24,39,.035);
  --sh2:0 8px 26px rgba(17,24,39,.10);
}

html { font-size:calc(16px * var(--fs)); -webkit-text-size-adjust:100%; }
body {
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,-apple-system,sans-serif;
  font-size:.9375rem; line-height:1.65;
}
a { color:var(--brand); text-decoration:none; }
button, input, select { font-family:inherit; }
h1,h2,h3,h4,p { margin:0; }
.sp { flex:1; }
.muted { color:var(--sub); }
code { background:#f0f2f5; border-radius:.25rem; padding:.06rem .3rem; font-size:.82em; }

/* ============================================================
   主体骨架
   ============================================================ */
.app { display:grid; grid-template-columns:var(--side-w) minmax(0,1fr); min-height:100vh; }
.main { min-width:0; display:flex; flex-direction:column; }

/* ---------- 侧栏 ---------- */
.side {
  position:sticky; top:0; height:100vh; z-index:40;
  display:flex; flex-direction:column;
  background:var(--paper); border-right:1px solid var(--line);
}
.sd-head { padding:1.15rem 1.1rem .8rem; display:flex; align-items:baseline; gap:.5rem; }
.logo { font-weight:800; font-size:1.08rem; letter-spacing:.06em; color:var(--ink); }
.logo-sub { font-size:.72rem; color:var(--faint); letter-spacing:.02em; }

.sd-courses { display:flex; gap:.4rem; padding:0 .9rem .75rem; }
.sc {
  flex:1; min-width:0; text-align:left; cursor:pointer;
  border:1px solid var(--line); background:#fff; border-radius:.6rem;
  padding:.42rem .55rem; color:var(--ink2); transition:all .14s;
}
.sc:hover { border-color:var(--brand-line); background:var(--brand-soft); }
.sc.on { border-color:var(--brand); background:var(--brand); color:#fff; box-shadow:0 2px 8px rgba(44,79,143,.22); }
.sc b { display:block; font-size:.76rem; font-weight:700; letter-spacing:.03em; }
.sc span { display:block; font-size:.66rem; opacity:.72; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.sd-tabs { display:flex; gap:.15rem; padding:0 .8rem .7rem; }
.sd-tabs button {
  flex:1; border:0; background:transparent; cursor:pointer;
  font-size:.8rem; color:var(--sub); padding:.42rem .2rem; border-radius:.5rem;
  transition:all .14s; font-weight:500;
}
.sd-tabs button:hover { background:#f2f4f7; color:var(--ink); }
.sd-tabs button.on { background:var(--brand-soft); color:var(--brand); font-weight:700; }

.sd-prog { padding:.15rem .95rem .75rem; }
.sd-prog .row { display:flex; align-items:center; gap:.6rem; }
.ring { width:2.15rem; height:2.15rem; flex:none; transform:rotate(-90deg); }
.ring circle { fill:none; stroke-width:3.4; }
.ring .bg { stroke:var(--line); }
.ring .fg { stroke:var(--green); stroke-linecap:round; transition:stroke-dashoffset .5s ease; }
.sd-prog .txt { font-size:.72rem; color:var(--sub); line-height:1.5; }
.sd-prog .txt b { color:var(--ink); font-size:.8rem; font-variant-numeric:tabular-nums; }
.sd-prog .sub2 { font-size:.66rem; color:var(--faint); }

.sd-search { padding:0 .85rem .55rem; }
.sd-search input {
  width:100%; border:1px solid var(--line); border-radius:.55rem; background:#f7f9fb;
  padding:.42rem .6rem .42rem 1.7rem; font-size:.78rem; color:var(--ink);
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239aa3b0' stroke-width='2.4'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4.3-4.3'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:.55rem center;
}
.sd-search input:focus { outline:none; border-color:var(--brand-line); background-color:#fff; box-shadow:0 0 0 3px rgba(44,79,143,.07); }

.sd-scroll { flex:1; overflow-y:auto; overscroll-behavior:contain; padding:0 .55rem 1.2rem; scrollbar-width:thin; }
.sd-scroll::-webkit-scrollbar { width:6px; }
.sd-scroll::-webkit-scrollbar-thumb { background:#dfe3ea; border-radius:99px; }

.sd-foot { border-top:1px solid var(--line2); padding:.55rem .85rem; display:flex; gap:.35rem; flex-wrap:wrap; }
.sd-foot .mini {
  border:1px solid var(--line); background:#fff; border-radius:.45rem;
  font-size:.68rem; color:var(--sub); padding:.26rem .5rem; cursor:pointer; transition:all .13s;
}
.sd-foot .mini:hover { border-color:var(--brand-line); color:var(--brand); background:var(--brand-soft); }

/* ---------- 目录树 ---------- */
.tgroup { margin-bottom:.15rem; }
.tg-head {
  width:100%; display:flex; align-items:center; gap:.45rem; cursor:pointer;
  border:0; background:transparent; text-align:left; padding:.45rem .5rem;
  border-radius:.5rem; color:var(--ink2);
}
.tg-head:hover { background:#f4f6f9; }
.tg-caret { font-size:.6rem; color:var(--faint); width:.7rem; transition:transform .16s; }
.tgroup.closed .tg-caret { transform:rotate(-90deg); }
.tg-tt { flex:1; font-size:.78rem; font-weight:700; line-height:1.4; }
.tg-n {
  font-size:.64rem; color:var(--sub); background:#f0f2f5; border-radius:99px;
  padding:.05rem .38rem; font-variant-numeric:tabular-nums;
}
.tg-list { display:block; padding:.1rem 0 .3rem .1rem; }
.tgroup.closed .tg-list { display:none; }

.ti {
  display:flex; align-items:center; gap:.42rem; padding:.3rem .5rem .3rem 1.15rem;
  border-radius:.45rem; color:var(--sub); font-size:.75rem; line-height:1.45;
  border-left:2px solid transparent; margin-left:.1rem;
}
.ti:hover { background:#f4f6f9; color:var(--ink); }
.ti.on { background:var(--brand-soft); color:var(--brand); border-left-color:var(--brand); font-weight:600; }
.ti .txt { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ti .dot { width:.42rem; height:.42rem; border-radius:50%; flex:none; background:#dfe3ea; }
.ti[data-lv="0"] .dot { background:var(--red); }
.ti[data-lv="1"] .dot { background:#d8a53a; }
.ti[data-lv="2"] .dot { background:var(--green); }

/* ---------- 顶栏 ---------- */
.top {
  position:sticky; top:0; z-index:30;
  display:flex; align-items:center; gap:.75rem;
  padding:.6rem 1.6rem; min-height:3.4rem;
  background:rgba(244,246,249,.82); backdrop-filter:blur(12px) saturate(1.4);
  border-bottom:1px solid var(--line);
}
.top-title { font-size:.85rem; font-weight:600; color:var(--ink2); }
.top-title small { color:var(--faint); font-weight:400; margin-left:.4rem; font-size:.75rem; }
.top-tools { margin-left:auto; display:flex; align-items:center; gap:.55rem; }
.fsbox { display:flex; border:1px solid var(--line); border-radius:.5rem; overflow:hidden; background:#fff; }
.fsbox button {
  border:0; background:#fff; color:var(--sub); cursor:pointer;
  padding:.3rem .5rem; font-size:.72rem; line-height:1;
}
.fsbox button + button { border-left:1px solid var(--line); }
.fsbox button:hover { background:var(--brand-soft); color:var(--brand); }
.icon-btn {
  display:none; border:1px solid var(--line); background:#fff; border-radius:.5rem;
  width:2.1rem; height:2.1rem; cursor:pointer; color:var(--ink2); font-size:1rem;
  align-items:center; justify-content:center;
}
.overlay { display:none; position:fixed; inset:0; background:rgba(17,24,39,.42); z-index:35; }

/* ---------- 阅读区 ---------- */
.page { width:100%; max-width:var(--read-w); margin:0 auto; padding:1.5rem 1.6rem 5rem; }

/* 工具栏行（背诵/对照） */
.bar { display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; margin-bottom:1rem; }
.chip {
  border:1px solid var(--line); background:#fff; border-radius:99px;
  padding:.32rem .78rem; font-size:.76rem; color:var(--sub); cursor:pointer; transition:all .14s;
}
.chip:hover { border-color:var(--brand-line); color:var(--brand); }
.chip.on { background:var(--brand); border-color:var(--brand); color:#fff; }
.chip .n { opacity:.65; font-size:.9em; margin-left:.2em; }
.bar .hint { margin-left:auto; font-size:.72rem; color:var(--faint); }

/* ---------- 卡片 ---------- */
.c {
  position:relative; background:var(--paper);
  border:1px solid var(--line); border-radius:var(--r);
  margin-bottom:.55rem; box-shadow:var(--sh); overflow:hidden;
  scroll-margin-top:4.6rem;
  transition:border-color .16s, box-shadow .16s;
}
.c:hover { border-color:#d7dde6; }
.c::before {
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:transparent; transition:background .2s;
}
.c[data-lv="0"]::before { background:var(--red); }
.c[data-lv="1"]::before { background:#d8a53a; }
.c[data-lv="2"]::before { background:var(--green); }
.c.open { box-shadow:0 2px 10px rgba(17,24,39,.07); }

.c-h { display:flex; align-items:flex-start; gap:.7rem; padding:.85rem 1.1rem .85rem 1.15rem; cursor:pointer; user-select:none; }
.c-h:hover { background:#fafbfd; }
.c-n { flex:none; width:1.6rem; font-size:.68rem; color:#b6bdc8; font-variant-numeric:tabular-nums; padding-top:.28rem; text-align:right; }
.c-main { flex:1; min-width:0; }
.c-t { font-size:1rem; font-weight:600; line-height:1.5; color:var(--ink); letter-spacing:.005em; }
.c-meta { display:flex; align-items:center; gap:.4rem; margin-top:.28rem; flex-wrap:wrap; }
.src {
  font-size:.68rem; color:var(--sub); background:#f2f4f8; border-radius:.3rem;
  padding:.06rem .38rem; white-space:nowrap;
}
.c-meta .hot { color:var(--red); background:var(--red-soft); }
.c-arw { flex:none; color:#c3cad4; font-size:.7rem; padding-top:.35rem; transition:transform .2s; }
.c.open .c-arw { transform:rotate(180deg); }

.c-b { display:none; padding:0 1.15rem 1rem 3.45rem; }
.c.open .c-b { display:block; }

/* 记忆点 */
.hook { display:flex; gap:.55rem; align-items:flex-start; }
.hook-lb, .ans-lb {
  flex:none; font-size:.66rem; font-weight:700; letter-spacing:.04em;
  border-radius:.3rem; padding:.13rem .4rem; margin-top:.22rem; white-space:nowrap;
}
.hook-lb { background:var(--amber-soft); color:var(--amber); }
.ans-lb { background:var(--red-soft); color:var(--red); }
.hook-v { flex:1; font-size:.9rem; line-height:1.75; color:#7a5a12; }
.hook-chips { display:flex; flex-wrap:wrap; gap:.3rem; }
.hook-chips span {
  background:var(--amber-soft); color:#7a5a12; border-radius:.35rem;
  padding:.12rem .45rem; font-size:.82rem; font-weight:600;
}

/* 答案 */
.ans-wrap { margin-top:.85rem; display:flex; gap:.55rem; align-items:flex-start; }
.ans { flex:1; font-size:.95rem; line-height:1.95; color:#28303a; }
.ans p { margin:0 0 .45rem; }
.ans p:last-child { margin-bottom:0; }
.ans .pt { position:relative; padding-left:1.35em; margin:0 0 .42rem; text-indent:0; }
.ans .pt::before {
  content:""; position:absolute; left:.28em; top:.85em;
  width:.3em; height:.3em; border-radius:50%; background:#cfd6e0;
}
.ans .pt:last-child { margin-bottom:0; }

/* 卡片操作条 */
.c-ops { display:flex; align-items:center; gap:.35rem; margin-top:.9rem; padding-top:.7rem; border-top:1px dashed var(--line); }
.c-ops .lab { font-size:.7rem; color:var(--faint); margin-right:.15rem; }
.jbtn {
  border:1px solid var(--line); background:#fff; border-radius:.5rem; cursor:pointer;
  font-size:.72rem; padding:.26rem .6rem; color:var(--sub); transition:all .13s;
}
.jbtn:hover { border-color:#cdd4de; }
.jbtn[data-lv="0"]:hover, .jbtn[data-lv="0"].on { background:var(--red-soft); border-color:#eab4b4; color:var(--red); }
.jbtn[data-lv="1"]:hover, .jbtn[data-lv="1"].on { background:var(--amber-soft); border-color:#e6cd97; color:var(--amber); }
.jbtn[data-lv="2"]:hover, .jbtn[data-lv="2"].on { background:var(--green-soft); border-color:#9fd9bb; color:var(--green); }
.c-ops .goto { margin-left:auto; font-size:.7rem; color:var(--faint); }

/* 板块分隔标题 */
.gsec {
  display:flex; align-items:center; gap:.6rem; margin:1.9rem 0 .7rem;
  padding:0 0 .5rem; border-bottom:2px solid var(--ink); scroll-margin-top:4.6rem;
}
.gsec:first-child { margin-top:0; }
.gsec h2 { font-size:.95rem; font-weight:800; letter-spacing:.02em; }
.gsec .note { font-size:.7rem; color:var(--faint); font-weight:400; }
.gsec .cnt { margin-left:auto; font-size:.7rem; color:var(--sub); font-variant-numeric:tabular-nums; }

.tip { font-size:.72rem; color:var(--faint); text-align:center; margin:2rem 0 0; line-height:1.9; }
.empty { text-align:center; color:var(--sub); padding:4rem 1rem; font-size:.9rem; }

/* ============================================================
   自测
   ============================================================ */
.quiz-wrap { max-width:44rem; margin:0 auto; }

.qz-top { display:flex; align-items:center; gap:.7rem; margin-bottom:1.1rem; flex-wrap:wrap; }
.qz-idx { font-size:.78rem; color:var(--sub); font-variant-numeric:tabular-nums; white-space:nowrap; }
.qz-idx b { color:var(--ink); font-size:.95rem; }
.qz-bar { flex:1; min-width:5rem; height:.32rem; background:var(--line); border-radius:99px; overflow:hidden; }
.qz-bar i { display:block; height:100%; background:var(--green); border-radius:99px; transition:width .25s; }
.qz-tally { display:flex; gap:.5rem; font-size:.7rem; color:var(--faint); font-variant-numeric:tabular-nums; }
.qz-tally .a { color:var(--green); } .qz-tally .b { color:var(--amber); } .qz-tally .c2 { color:var(--red); }

.qcard {
  background:var(--paper); border:1px solid var(--line); border-radius:1.1rem;
  padding:2rem 1.9rem; box-shadow:var(--sh2); min-height:17rem;
}
.qtag {
  display:inline-block; font-size:.7rem; color:var(--brand); background:var(--brand-soft);
  border-radius:.35rem; padding:.14rem .5rem; margin-bottom:1.05rem; font-weight:600;
}
.qtitle { font-size:1.32rem; font-weight:700; line-height:1.6; letter-spacing:.01em; }
.qhint { margin-top:1.5rem; font-size:.78rem; color:var(--faint); }
.qhook { margin-top:1.4rem; padding:.7rem .9rem; background:var(--amber-soft); border-radius:.7rem; }
.qhook b { font-size:.66rem; color:var(--amber); letter-spacing:.06em; display:block; margin-bottom:.25rem; }
.qhook div { font-size:.9rem; color:#7a5a12; font-weight:600; line-height:1.7; }
.qans { margin-top:1.1rem; padding-top:1rem; border-top:1px dashed var(--line); font-size:.95rem; line-height:1.95; color:#28303a; }
.qans .pt { position:relative; padding-left:1.35em; margin-bottom:.42rem; }
.qans .pt::before { content:""; position:absolute; left:.28em; top:.85em; width:.3em; height:.3em; border-radius:50%; background:#cfd6e0; }

.qz-acts { margin-top:1.1rem; display:flex; gap:.55rem; align-items:center; }
.judge { display:grid; grid-template-columns:repeat(3,1fr); gap:.6rem; flex:1; }
.judge button {
  border:1px solid var(--line); background:#fff; border-radius:.8rem; cursor:pointer;
  padding:.85rem .5rem; font-size:.88rem; font-weight:600; color:var(--ink2);
  transition:all .14s;
}
.judge button .k { display:block; font-size:.66rem; color:var(--faint); font-weight:400; margin-top:.15rem; }
.judge button[data-lv="2"]:hover { background:var(--green-soft); border-color:#9fd9bb; color:var(--green); }
.judge button[data-lv="1"]:hover { background:var(--amber-soft); border-color:#e6cd97; color:var(--amber); }
.judge button[data-lv="0"]:hover { background:var(--red-soft); border-color:#eab4b4; color:var(--red); }
.btn {
  border:1px solid var(--line); background:#fff; border-radius:.6rem; cursor:pointer;
  padding:.45rem .85rem; font-size:.8rem; color:var(--ink2); transition:all .14s; white-space:nowrap;
}
.btn:hover { border-color:var(--brand-line); color:var(--brand); background:var(--brand-soft); }
.btn.primary { background:var(--brand); border-color:var(--brand); color:#fff; }
.btn.primary:hover { background:var(--brand2); color:#fff; }
.btn.wide { width:100%; padding:.8rem; font-size:.88rem; font-weight:600; }
.btn.ghost { border-color:transparent; background:transparent; color:var(--sub); }
.btn.ghost:hover { background:#eef1f5; }

.qz-nav { display:flex; gap:.4rem; margin-top:.9rem; }
.qz-nav .btn { flex:none; }
.qz-kbd { margin-left:auto; font-size:.7rem; color:var(--faint); }
.qz-kbd kbd {
  border:1px solid var(--line); border-bottom-width:2px; border-radius:.25rem;
  padding:0 .28rem; font-size:.92em; background:#fff; font-family:inherit;
}

.qdone { text-align:center; padding:2.5rem 1rem; }
.qdone .big { font-size:2.4rem; line-height:1; }
.qdone h3 { font-size:1.1rem; margin:1rem 0 .35rem; }
.qdone .nums { display:flex; justify-content:center; gap:1.5rem; margin:1.4rem 0 1.6rem; }
.qdone .nums div { font-size:.72rem; color:var(--faint); }
.qdone .nums b { display:block; font-size:1.4rem; color:var(--ink); font-variant-numeric:tabular-nums; }
.qdone .btns { display:flex; gap:.5rem; justify-content:center; flex-wrap:wrap; }

/* ============================================================
   首页
   ============================================================ */
.home { max-width:62rem; margin:0 auto; padding:0 1.6rem 5rem; }
.hbar {
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; gap:.8rem; padding:1rem 0;
  background:rgba(244,246,249,.86); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.hbar .logo { font-size:1.05rem; }
.hbar nav { margin-left:auto; display:flex; gap:.25rem; }
.hbar nav a { font-size:.8rem; color:var(--sub); padding:.35rem .6rem; border-radius:.45rem; }
.hbar nav a:hover { background:#fff; color:var(--ink); }

.hhero { padding:3.2rem 0 2.2rem; }
.hhero h1 { font-size:2.05rem; font-weight:800; letter-spacing:.01em; line-height:1.35; }
.hhero h1 em { font-style:normal; color:var(--brand); }
.hhero p { margin-top:.8rem; font-size:.9rem; color:var(--sub); line-height:1.85; max-width:38rem; }

.cgrid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.cgrid.one { grid-template-columns:1fr; }
.ccard {
  background:var(--paper); border:1px solid var(--line); border-radius:1.1rem;
  padding:1.35rem 1.4rem; box-shadow:var(--sh); transition:all .16s; display:block; color:inherit;
}
.ccard:hover { box-shadow:var(--sh2); border-color:#d3dae5; transform:translateY(-2px); }
.ccard .cid { font-size:.72rem; color:var(--faint); letter-spacing:.08em; font-weight:700; }
.ccard .cnm { font-size:1.22rem; font-weight:700; margin-top:.2rem; letter-spacing:.01em; }
.ccard .cmeta { font-size:.76rem; color:var(--sub); margin-top:.45rem; }
.ccard .cline { display:flex; align-items:center; gap:.7rem; margin-top:1.1rem; }
.ccard .cline .bar2 { flex:1; height:.36rem; background:var(--line); border-radius:99px; overflow:hidden; }
.ccard .cline .bar2 i { display:block; height:100%; background:var(--green); border-radius:99px; }
.ccard .cline .pc { font-size:.74rem; color:var(--sub); font-variant-numeric:tabular-nums; white-space:nowrap; }
.ccard .cquick { display:flex; gap:.4rem; margin-top:1rem; }
.ccard .cquick span {
  font-size:.72rem; color:var(--brand); background:var(--brand-soft);
  border-radius:.4rem; padding:.2rem .5rem;
}
.hsec { font-size:.9rem; font-weight:800; letter-spacing:.02em; margin:2.8rem 0 .9rem; display:flex; align-items:center; gap:.6rem; }
.hsec::after { content:""; flex:1; height:1px; background:var(--line); }

.xcard {
  display:block; background:var(--paper); border:1px solid var(--line); border-radius:1rem;
  padding:1.15rem 1.25rem; color:inherit; box-shadow:var(--sh); transition:all .16s;
}
.xcard:hover { box-shadow:var(--sh2); border-color:#d3dae5; transform:translateY(-2px); }
.xcard .xh { font-size:.95rem; font-weight:700; }
.xcard .xd { font-size:.76rem; color:var(--sub); margin-top:.4rem; line-height:1.7; }
.xcard .xp { display:flex; align-items:center; gap:.7rem; margin-top:.9rem; }
.xcard .xp .bar2 { flex:1; height:.34rem; background:var(--line); border-radius:99px; overflow:hidden; }
.xcard .xp .bar2 i { display:block; height:100%; background:var(--green); border-radius:99px; }
.xcard .xp .pc { font-size:.72rem; color:var(--sub); font-variant-numeric:tabular-nums; }

.box { background:var(--paper); border:1px solid var(--line); border-radius:1rem; padding:1.2rem 1.35rem; box-shadow:var(--sh); }
.box p { font-size:.8rem; color:var(--sub); line-height:1.85; }
.row2 { display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.9rem; }
.hstate { font-size:.74rem; color:var(--sub); margin-top:.6rem; }
.foot { text-align:center; font-size:.72rem; color:var(--faint); margin-top:3.5rem; line-height:2; }

/* ============================================================
   押题页
   ============================================================ */
.doc { width:100%; max-width:var(--read-w); margin:0 auto; padding:1.8rem 1.6rem 5rem; }
.doc h1 { font-size:1.6rem; font-weight:800; letter-spacing:.01em; }
.doc h1 small { font-size:.8rem; color:var(--faint); font-weight:400; margin-left:.5rem; letter-spacing:.06em; }
.ysub { margin-top:.6rem; font-size:.82rem; color:var(--sub); line-height:1.8; }
.ysub b { color:var(--ink2); }
.yup { margin-top:.7rem; font-size:.7rem; color:var(--faint); }

.basis { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; margin-top:1.3rem; }
.bcard {
  background:var(--paper); border:1px solid var(--line); border-left:3px solid var(--brand);
  border-radius:.7rem; padding:.75rem .9rem; font-size:.76rem; color:var(--sub); line-height:1.7;
}
.bcard b { display:block; color:var(--ink); font-size:.82rem; margin-bottom:.2rem; }

.doc h2.sec {
  font-size:1.08rem; font-weight:800; margin:2.6rem 0 .2rem; padding-bottom:.5rem;
  border-bottom:2px solid var(--ink); scroll-margin-top:4.6rem;
}
.doc h2.sec small { font-size:.72rem; color:var(--faint); font-weight:400; margin-left:.5rem; }
.doc h3.sh {
  display:flex; align-items:center; gap:.5rem; scroll-margin-top:4.6rem;
  font-size:.92rem; font-weight:700; margin:2rem 0 .7rem; color:var(--ink);
  padding-left:.65rem; border-left:3px solid var(--brand);
}
.doc h3.sh .chkops { margin-left:auto; }
.doc h3.sh .btn { font-size:.7rem; padding:.22rem .55rem; }

.tw { overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:.7rem; border:1px solid var(--line); background:var(--paper); }
table.pt { width:100%; border-collapse:collapse; font-size:.82rem; min-width:33rem; }
table.pt th, table.pt td { padding:.6rem .7rem; border-bottom:1px solid var(--line2); text-align:left; vertical-align:top; line-height:1.75; }
table.pt th { font-size:.7rem; color:var(--sub); font-weight:700; background:#f7f9fb; letter-spacing:.04em; white-space:nowrap; }
table.pt td.t { white-space:nowrap; font-weight:700; color:var(--ink); }
table.pt tr.first td { background:#f7faff; }
table.pt tr.first td.t { color:var(--brand); }
table.pt tr:last-child td { border-bottom:0; }
table.pt tr:hover td { background:#fbfcfe; }
.tag { display:inline-block; font-size:.66rem; padding:0 .35rem; border-radius:.25rem; border:1px solid currentColor; vertical-align:.06rem; white-space:nowrap; }
.tA { color:var(--brand); } .tB { color:var(--amber); } .tC { color:var(--faint); }
.k { font-weight:700; color:var(--ink); }

.note, .warn { border-radius:.7rem; padding:.75rem .9rem; font-size:.79rem; line-height:1.85; margin-top:1rem; }
.note { background:var(--amber-soft); border:1px solid #eddcb6; color:#7a5c14; }
.warn { background:var(--red-soft); border:1px solid #ecc4c4; color:#8a2f2f; }

details.yd { background:var(--paper); border:1px solid var(--line); border-radius:.8rem; padding:.7rem 1rem; margin-top:1rem; scroll-margin-top:4.6rem; }
details.yd summary { cursor:pointer; font-weight:700; font-size:.82rem; color:var(--brand); }
details.yd ul { margin:.6rem 0 0; padding-left:1.2rem; }
details.yd li { margin:.35rem 0; font-size:.79rem; line-height:1.8; }

.chkbar { display:flex; align-items:center; gap:.7rem; margin-top:.7rem; }
.chkbar .bar2 { flex:1; height:.36rem; background:var(--line); border-radius:99px; overflow:hidden; }
.chkbar .bar2 i { display:block; height:100%; background:var(--green); border-radius:99px; transition:width .3s; }
.chkbar .pc { font-size:.74rem; color:var(--sub); font-variant-numeric:tabular-nums; white-space:nowrap; }
.yhint { font-size:.74rem; color:var(--faint); margin-top:.5rem; }
ul.chk { list-style:none; margin:.7rem 0 0; padding:0; }
ul.chk li { border-bottom:1px solid var(--line2); padding:.6rem .2rem; }
ul.chk li label { display:flex; gap:.65rem; align-items:flex-start; cursor:pointer; font-size:.8rem; line-height:1.8; }
ul.chk input { flex:none; width:1rem; height:1rem; margin-top:.3rem; accent-color:var(--green); cursor:pointer; }
ul.chk li.done > label { color:var(--faint); }
ul.chk li.done > label span { text-decoration:line-through; text-decoration-color:#c9d0da; }

/* 押题页目录 */
.toc { list-style:none; margin:0; padding:0; }
.toc li { margin:0; }
.toc a {
  display:block; padding:.34rem .5rem .34rem .8rem; font-size:.75rem; color:var(--sub);
  border-left:2px solid transparent; border-radius:0 .4rem .4rem 0; line-height:1.5;
}
.toc a:hover { background:#f4f6f9; color:var(--ink); }
.toc a.on { color:var(--brand); border-left-color:var(--brand); background:var(--brand-soft); font-weight:600; }
.toc a.lv2 { padding-left:1.6rem; font-size:.72rem; }
.toc .toc-h {
  font-size:.66rem; font-weight:700; color:var(--faint); letter-spacing:.08em;
  padding:.8rem .5rem .35rem; text-transform:uppercase;
}

/* ============================================================
   响应式
   ============================================================ */
@media (max-width:960px) {
  .app { grid-template-columns:minmax(0,1fr); }
  .side {
    position:fixed; left:0; top:0; bottom:0; width:min(86vw, 20rem);
    transform:translateX(-102%); transition:transform .24s cubic-bezier(.4,0,.2,1);
    box-shadow:var(--sh2);
  }
  body.nav-open .side { transform:none; }
  body.nav-open .overlay { display:block; }
  .icon-btn { display:inline-flex; }
  .top { padding:.55rem .9rem; }
  .page, .doc { padding:1.1rem .9rem 4rem; }
  .c-b { padding-left:1.15rem; }
  .c-n { display:none; }
  .home { padding:0 .9rem 4rem; }
  .hhero { padding:2.2rem 0 1.6rem; }
  .hhero h1 { font-size:1.6rem; }
  .cgrid { grid-template-columns:1fr; }
  .basis { grid-template-columns:1fr; }
  .qcard { padding:1.4rem 1.1rem; min-height:14rem; border-radius:.9rem; }
  .qtitle { font-size:1.15rem; }
  .hbar nav { display:none; }
  .qz-kbd { display:none; }
}

@media (max-width:560px) {
  .top-title { display:none; }
  .fsbox { display:none; }
  .judge { grid-template-columns:1fr; gap:.4rem; }
  .judge button { padding:.6rem .5rem; }
  .qz-acts { flex-direction:column; align-items:stretch; }
  .c-h { padding:.75rem .8rem; }
  .c-main .c-t { font-size:.95rem; }
}

/* ============================================================
   打印
   ============================================================ */
@media print {
  .side, .top, .bar, .c-ops, .qz-top, .qz-acts, .qz-nav, .tz, .foot, .c-arw { display:none !important; }
  .app { display:block; }
  html { font-size:11pt; }
  body { background:#fff; }
  .page, .doc, .home { max-width:none; padding:0; }
  .c { break-inside:avoid; page-break-inside:avoid; box-shadow:none; border-color:#ddd; }
  .c-b { display:block !important; padding-left:1rem; }
  .c-n { display:none; }
  .gsec { border-bottom-color:#222; }
  .hook-lb, .ans-lb, .src, .qtag, .tag, .note, .warn, .bcard { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  details.yd { break-inside:avoid; }
  details.yd ul { display:block !important; }
  ul.chk input { display:none; }
  ul.chk li.done > label span { text-decoration:none; color:var(--ink); }
}

/* ---------- 顶栏搜索 / 下拉 chip（补） ---------- */
.top .search { width:15rem; max-width:42vw; }
.top .search input {
  width:100%; border:1px solid var(--line); border-radius:.5rem; background:#fff;
  padding:.36rem .6rem .36rem 1.75rem; font-size:.78rem; color:var(--ink);
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239aa3b0' stroke-width='2.4'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4.3-4.3'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:.6rem center;
}
.top .search input:focus { outline:none; border-color:var(--brand-line); box-shadow:0 0 0 3px rgba(44,79,143,.07); }
select.chip {
  appearance:none; -webkit-appearance:none; padding-right:1.7rem;
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7583' stroke-width='3'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .6rem center;
  max-width:16rem;
}
select.chip:hover { border-color:var(--brand-line); color:var(--brand); }

/* ---------- 修正与补充 ---------- */
.gsec .note { background:none; border:0; padding:0; margin:0; color:var(--faint); font-size:.72rem; }
.hhero p { max-width:46rem; }
.qz-opts { display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; margin:.2rem 0 1rem; }
.qz-opts .chip { font-size:.72rem; padding:.26rem .65rem; }
.qcard { min-height:15rem; }
[hidden] { display:none !important; }
.ans .pt.num, .qans .pt.num { padding-left:0; }
.ans .pt.num::before, .qans .pt.num::before { display:none; }

/* ---------- 移动端底部模式栏 ---------- */
.mnav { display:none; }
@media (max-width:960px) {
  .mnav {
    display:grid; grid-template-columns:repeat(4,1fr); gap:.25rem;
    position:fixed; left:0; right:0; bottom:0; z-index:36;
    padding:.4rem .6rem calc(.4rem + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.96); backdrop-filter:blur(12px);
    border-top:1px solid var(--line);
  }
  .mnav button {
    border:0; background:transparent; border-radius:.6rem; padding:.45rem .2rem;
    font-size:.78rem; color:var(--sub); cursor:pointer; font-weight:500;
  }
  .mnav button.on { background:var(--brand-soft); color:var(--brand); font-weight:700; }
  .page, .doc { padding-bottom:6rem; }
  .home { padding-bottom:3rem; }

  /* 移动端卡片更紧凑：来源标签与标题同行 */
  .c-main { display:flex; align-items:baseline; gap:.45rem; flex-wrap:wrap; }
  .c-t { flex:1 1 55%; }
  .c-meta { margin-top:0; }
  .c-h { padding:.7rem .85rem; }
}

/* ---------- 首页三条用法 ---------- */
.hfeat { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem; margin-top:1.7rem; max-width:46rem; }
.hfeat div {
  background:var(--paper); border:1px solid var(--line); border-radius:.8rem;
  padding:.75rem .85rem; font-size:.76rem; color:var(--sub); line-height:1.75; box-shadow:var(--sh);
}
.hfeat b { display:block; font-size:.82rem; color:var(--ink); margin-bottom:.15rem; }
@media (max-width:760px) { .hfeat { grid-template-columns:1fr; } }

/* ============================================================
   v4 · 移动端
   ≤960 主布局（抽屉 + 底栏）  ≤760 紧凑（搜索折叠、单卡全屏）
   ============================================================ */
:root { --mnav-h:0px; }

/* 触摸设备：去掉 hover 残留，给按压反馈 */
@media (hover:none) {
  .c-h:active { background:#f1f4f9; }
  .chip:active, .btn:active, .jbtn:active, .judge button:active,
  .sh-lv:active, .sc:active, .ti:active { transform:scale(.975); }
  .ccard:hover, .xcard:hover, .chip:hover, .sc:hover { transform:none; }
}

/* ---------- 单卡全屏阅读（移动端背诵） ---------- */
.sheet {
  position:fixed; inset:0; z-index:60; display:flex; flex-direction:column;
  background:var(--bg);
  transform:translateY(102%); visibility:hidden;
  transition:transform .26s cubic-bezier(.32,.72,0,1), visibility .26s;
  will-change:transform;
}
.sheet.on { transform:none; visibility:visible; }
body.sheet-open { overflow:hidden; }

.sh-head {
  display:flex; align-items:center; gap:.4rem;
  padding:calc(.45rem + env(safe-area-inset-top)) .6rem .45rem;
  background:rgba(255,255,255,.95); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.sh-x {
  flex:none; width:2.3rem; height:2.3rem; border:0; background:transparent;
  border-radius:.6rem; font-size:1.05rem; line-height:1; color:var(--sub); cursor:pointer;
}
.sh-x:active { background:#eef1f5; }
.sh-meta {
  flex:1; min-width:0; padding-right:.3rem;
  font-size:.74rem; color:var(--sub); font-variant-numeric:tabular-nums;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sh-meta b { color:var(--ink); font-size:.92rem; }
.sh-bar { height:2px; background:var(--line); }
.sh-bar i { display:block; height:100%; width:0; background:var(--green); transition:width .22s; }

.sh-body {
  flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain; padding:1.15rem 1.15rem 2.4rem;
}
.sh-src { margin-bottom:.55rem; }
.sh-q { font-size:1.32rem; font-weight:700; line-height:1.6; letter-spacing:.005em; }
.sh-hook { margin-top:1.15rem; background:var(--amber-soft); border-radius:.8rem; padding:.7rem .85rem; }
.sh-hook .lb { display:block; font-size:.63rem; letter-spacing:.09em; color:var(--amber); margin-bottom:.35rem; font-weight:700; }
.sh-hook .hook-chips span { font-size:.86rem; background:#fffaf0; }
.sh-ans { margin-top:1.4rem; font-size:1rem; line-height:2.02; color:#28303a; }
.sh-ans p { margin:0 0 .5rem; }
.sh-ans p:last-child { margin-bottom:0; }
.sh-ans .pt.num { padding-left:0; margin-bottom:.55rem; }
.sh-ans .pt.num::before { display:none; }

.sh-foot {
  display:grid; grid-template-columns:2.5rem 1fr 1fr 1fr 2.5rem; gap:.32rem;
  padding:.48rem .55rem calc(.48rem + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.97); backdrop-filter:blur(12px);
  border-top:1px solid var(--line);
}
.sh-nav {
  border:1px solid var(--line); background:#fff; border-radius:.7rem; cursor:pointer;
  color:var(--sub); font-size:1.15rem; line-height:1;
}
.sh-nav:disabled { opacity:.32; }
.sh-lv {
  border:1px solid var(--line); background:#fff; border-radius:.7rem; cursor:pointer;
  padding:.5rem .1rem .45rem; font-size:.92rem; font-weight:700; color:var(--ink2); line-height:1.2;
}
.sh-lv span { display:block; font-size:.6rem; font-weight:400; color:var(--faint); margin-top:.1rem; }
.sh-lv.on[data-lv="0"] { background:var(--red-soft); border-color:#eab4b4; color:var(--red); }
.sh-lv.on[data-lv="1"] { background:var(--amber-soft); border-color:#e6cd97; color:var(--amber); }
.sh-lv.on[data-lv="2"] { background:var(--green-soft); border-color:#9fd9bb; color:var(--green); }
.sh-lv.on span { color:inherit; opacity:.7; }

/* ---------- 顶栏搜索折叠 ---------- */
.s-cancel { display:none; border:0; background:transparent; color:var(--brand); font-size:.86rem; padding:.4rem .1rem; cursor:pointer; }

/* ---------- 回顶按钮 ---------- */
.toTop {
  position:fixed; right:.85rem; bottom:calc(var(--mnav-h, 3.2rem) + .9rem); z-index:33;
  width:2.5rem; height:2.5rem; border-radius:50%; cursor:pointer;
  border:1px solid var(--line); background:rgba(255,255,255,.95);
  box-shadow:var(--sh2); color:var(--sub); font-size:.95rem;
  display:none; align-items:center; justify-content:center;
}
body.scrolled .toTop { display:flex; }
body.in-quiz .toTop { display:none; }
@media (min-width:961px) { .toTop { display:none !important; } }

/* ---------- ≤960：抽屉 / 底栏 / 密度 ---------- */
@media (max-width:960px) {
  body { -webkit-tap-highlight-color:transparent; }

  .side { width:min(88vw, 21rem); height:100dvh; }
  .sd-head { padding:calc(.95rem + env(safe-area-inset-top)) 1rem .7rem; }
  .ti { padding:.6rem .5rem .6rem 1rem; font-size:.82rem; }
  .tg-head { padding:.58rem .5rem; }
  .tg-tt { font-size:.82rem; }
  .sd-foot .mini { padding:.42rem .6rem; font-size:.74rem; }
  .sd-prog { padding-bottom:.6rem; }

  .top { min-height:3.1rem; }
  .page, .doc { padding-bottom:calc(var(--mnav-h, 3.2rem) + 2.8rem); }

  /* 卡片：整行可点，最小点击高度 3.2rem */
  .c { border-radius:.85rem; margin-bottom:.45rem; }
  .c-h { align-items:center; min-height:3.2rem; padding:.72rem .78rem; gap:.5rem; }
  .c-t { font-size:.96rem; line-height:1.5; }
  .c-arw { font-size:0; padding-top:0; }
  .c-arw::after { content:"›"; font-size:1.15rem; line-height:1; color:#c3cad4; }
  .c.open .c-arw { transform:none; }
  .gsec { margin:1.55rem 0 .6rem; }
  .gsec .note { display:none; }

  /* 自测：判定条固定在底栏之上，拇指可达 */
  .quiz-wrap { padding-bottom:5.6rem; }
  .qz-acts {
    position:fixed; left:0; right:0; bottom:var(--mnav-h, 3.2rem); z-index:34;
    display:block; margin:0; padding:.5rem .7rem;
    background:rgba(255,255,255,.97); backdrop-filter:blur(12px);
    border-top:1px solid var(--line);
  }
  .judge { grid-template-columns:repeat(3,1fr); gap:.4rem; }
  .judge button { padding:.82rem .3rem; font-size:.94rem; border-radius:.75rem; }
  .judge button .k { display:none; }
  .qz-acts .btn.wide { padding:.85rem; font-size:.92rem; }
  .qcard { padding:1.35rem 1.05rem; }
  .qtitle { font-size:1.18rem; }
}

/* ---------- ≤760：紧凑 ---------- */
@media (max-width:760px) {
  .sbtn { display:inline-flex; }
  .top { gap:.45rem; padding:.45rem .7rem; }
  .top .search {
    display:none; position:fixed; left:0; right:0; top:0; z-index:70;
    width:auto; max-width:none; align-items:center; gap:.5rem;
    padding:calc(.45rem + env(safe-area-inset-top)) .7rem .45rem;
    background:#fff; border-bottom:1px solid var(--line); box-shadow:var(--sh);
  }
  body.search-open .top .search { display:flex; }
  .top .search input { flex:1; width:auto; max-width:none; padding:.55rem .6rem .55rem 1.9rem; font-size:.92rem; background-position:.62rem center; }
  .top .search .s-cancel { display:block; flex:none; }

  /* 工具栏一行横滑，省高度 */
  .bar {
    flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none;
    margin:0 -.7rem .75rem; padding:.1rem .7rem .3rem;
  }
  .bar::-webkit-scrollbar { display:none; }
  .bar > * { flex:none; }
  .bar .hint { display:none; }

  .page { padding:1rem .7rem calc(var(--mnav-h, 3.2rem) + 2.6rem); }
  .doc { padding:1.1rem .8rem calc(var(--mnav-h, 3.2rem) + 2.6rem); }

  /* 首页 */
  .home { padding:0 .8rem 2.5rem; }
  .hbar { padding:.7rem 0; }
  .hhero { padding:1.5rem 0 1.1rem; }
  .hhero h1 { font-size:1.42rem; line-height:1.4; }
  .hhero p { font-size:.84rem; margin-top:.6rem; }
  .hfeat { grid-template-columns:1fr; gap:.5rem; margin-top:1.1rem; }
  .hfeat div { padding:.6rem .7rem; font-size:.74rem; line-height:1.7; }
  .ccard, .xcard { padding:1rem 1.05rem; border-radius:.9rem; }
  .ccard .cnm { font-size:1.08rem; }
  .hsec { margin:2rem 0 .7rem; }
  .box { padding:1rem 1.05rem; }

  /* 押题页 */
  .doc h1 { font-size:1.3rem; }
  .doc h1 small { display:block; margin:.25rem 0 0; }
  .doc h2.sec { font-size:1.02rem; margin-top:2.1rem; }
  .doc h3.sh { font-size:.9rem; margin-top:1.6rem; }
  table.pt { font-size:.78rem; }
  table.pt th, table.pt td { padding:.5rem .55rem; }
  .basis { gap:.5rem; }
}

/* ---------- 首页「继续上次」 ---------- */
.resume {
  display:flex; align-items:center; gap:.7rem; margin-top:1.25rem;
  background:var(--brand); color:#fff; border-radius:.9rem;
  padding:.8rem 1rem; box-shadow:0 4px 16px rgba(44,79,143,.22);
}
.resume .rk { flex:none; font-size:.63rem; letter-spacing:.08em; opacity:.78; }
.resume .rt { flex:1; min-width:0; font-size:.9rem; font-weight:600; line-height:1.4; }
.resume .rt em {
  display:block; font-style:normal; font-size:.71rem; font-weight:400; opacity:.74;
  margin-top:.15rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.resume .rg { flex:none; font-size:1.15rem; opacity:.8; }

/* ---------- v4 修正：移动端顶栏与操作条 ---------- */
@media (max-width:760px) {
  .top-title {
    display:block; flex:1; min-width:0; font-size:.84rem;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .top-title small { display:none; }
  .fsbox { display:flex; }
  .fsbox button { padding:.34rem .45rem; font-size:.74rem; }
  .top .search-btn { flex:none; }
  .hfeat { display:none; }          /* 手机首页直接进课程，说明放桌面看 */
  .resume { margin-top:1rem; }
}

/* 单卡底部：加大可点高度 */
.sheet .sh-foot { grid-template-columns:2.4rem 1fr 1fr 1fr 2.4rem; }
.sheet .sh-lv { padding:.58rem .1rem .5rem; font-size:1.06rem; }
.sheet .sh-lv span { font-size:.66rem; margin-top:.12rem; }
.sheet .sh-nav { font-size:1.25rem; }

/* 自测底部条：按钮更高，间距更紧 */
@media (max-width:960px) {
  .qz-acts .btn.wide { padding:1.05rem; font-size:.98rem; }
  .qz-nav .btn { padding:.55rem .7rem; font-size:.78rem; }
  .qz-nav { margin-top:.7rem; }
  .qcard { min-height:12rem; }
  .qhint { font-size:.76rem; }
}

/* ---------- 押题页：移动端表格转卡片 ---------- */
@media (max-width:760px) {
  table.pt.as-cards { min-width:0; display:block; }
  table.pt.as-cards thead { display:none; }
  table.pt.as-cards tbody { display:block; }
  table.pt.as-cards tr {
    display:block; padding:.8rem .85rem; border-bottom:1px solid var(--line2);
  }
  table.pt.as-cards tr:last-child { border-bottom:0; }
  table.pt.as-cards tr.first { background:#f7faff; }
  table.pt.as-cards tr:hover td { background:transparent; }
  table.pt.as-cards td { display:block; border:0; padding:0; background:none !important; }
  table.pt.as-cards td.t {
    font-size:.96rem; font-weight:800; color:var(--ink); margin-bottom:.35rem;
    white-space:normal; display:flex; align-items:baseline; gap:.4rem; flex-wrap:wrap;
  }
  table.pt.as-cards td.t .tag { font-size:.62rem; font-weight:400; }
  table.pt.as-cards td[data-th] {
    position:relative; padding-left:3.7rem; margin-top:.28rem;
    font-size:.81rem; line-height:1.8;
  }
  table.pt.as-cards td[data-th]::before {
    content:attr(data-th); position:absolute; left:0; top:.08rem;
    font-size:.66rem; color:var(--faint); width:3.4rem; line-height:1.9;
  }
}
.sbtn { flex:none; }

/* 自测底条贴到屏幕底，由底栏压在上面，避免中间露缝 */
@media (max-width:960px) {
  .qz-acts { bottom:0; padding-bottom:calc(.5rem + var(--mnav-h, 3.2rem)); }
  .qcard { min-height:34dvh; }
}

/* 押题卡片：字段名不换行；「档」浮到右上角 */
@media (max-width:760px) {
  table.pt.as-cards td[data-th]::before {
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  table.pt.as-cards tr { position:relative; }
  table.pt.as-cards td[data-th="档"] {
    position:absolute; top:.72rem; right:.85rem; padding:0; margin:0;
  }
  table.pt.as-cards td[data-th="档"]::before { display:none; }
  table.pt.as-cards td.t { padding-right:3.6rem; }
}

/* 抽屉目录项：拇指可点（≥44px） */
@media (max-width:960px) {
  .ti { min-height:2.75rem; padding:.5rem .5rem .5rem 1rem; align-items:center; }
  .ti .txt { line-height:1.35; }
  .tg-head { min-height:2.6rem; }
  .sd-foot .mini { padding:.5rem .65rem; font-size:.76rem; }
}

/* 对照模式：标记按钮加大；展开的卡箭头改成「收起」 */
@media (max-width:960px) {
  .c-ops { flex-wrap:wrap; padding-top:.75rem; margin-top:.85rem; gap:.35rem; }
  .c-ops .goto { display:none; }
  .jbtn { padding:.45rem .72rem; font-size:.78rem; border-radius:.55rem; }
  .c.open .c-arw::after { content:"▾"; font-size:.9rem; }
}

/* ============================================================
   v5 · 知识卡（人物与作品隔离）
   00537-cards.html：分类色条 + 编号要点 + 易混块 + 人物索引
   ============================================================ */
.sd-nav { display:flex; gap:.18rem; padding:0 .8rem .6rem; }
.sd-nav a {
  flex:1; text-align:center; font-size:.75rem; color:var(--sub);
  padding:.36rem .15rem; border-radius:.45rem; border:1px solid transparent;
  white-space:nowrap;
}
.sd-nav a:hover { background:#f2f4f7; color:var(--ink); }
.sd-nav a.on { background:var(--brand); color:#fff; font-weight:600; box-shadow:0 2px 8px rgba(44,79,143,.2); }

.khead { margin-bottom:.2rem; }
.khead h1 { font-size:1.5rem; font-weight:800; letter-spacing:.01em; line-height:1.4; }
.khead h1 small {
  display:block; margin-top:.4rem; font-size:.74rem; font-weight:400;
  color:var(--faint); letter-spacing:0;
}
.khead p { margin-top:.7rem; font-size:.83rem; color:var(--sub); line-height:1.85; max-width:46rem; }

/* ---------- 分类 chip ---------- */
.kcat { display:flex; gap:.35rem; flex-wrap:wrap; margin:1.35rem 0 .55rem; }
.kcat .chip .n { font-variant-numeric:tabular-nums; }

/* ---------- 筛选条 ---------- */
.kfilter {
  display:flex; align-items:center; gap:.45rem; flex-wrap:wrap;
  background:#fff; border:1px solid var(--brand-line); border-radius:.7rem;
  padding:.45rem .7rem; margin-bottom:.9rem; font-size:.78rem;
}
.kfilter .kl { font-size:.63rem; letter-spacing:.09em; color:var(--faint); }
.kfilter b { color:var(--brand); }
.kfilter .kn { color:var(--sub); font-size:.74rem; }
.kfilter .kx {
  margin-left:auto; border:1px solid var(--line); background:#fff; color:var(--sub);
  cursor:pointer; font-size:.72rem; padding:.14rem .5rem; border-radius:99px;
}
.kfilter .kx:hover { border-color:#eab4b4; color:var(--red); background:var(--red-soft); }

/* ---------- 卡片 ---------- */
.kc {
  position:relative; background:var(--paper); border:1px solid var(--line);
  border-radius:var(--r); margin-bottom:.7rem; box-shadow:var(--sh);
  overflow:hidden; scroll-margin-top:4.6rem;
  transition:border-color .16s, box-shadow .16s;
  --cc:#2c4f8f;
}
.kc[data-cat="drama"] { --cc:#b0553f; }
.kc[data-cat="fiction"] { --cc:#2c4f8f; }
.kc[data-cat="poetry"] { --cc:#6a4b9c; }
.kc[data-cat="schools"] { --cc:#96691a; }
.kc[data-cat="people"] { --cc:#26705a; }
.kc::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--cc); opacity:.72; }
.kc:hover { border-color:#d7dde6; box-shadow:0 2px 10px rgba(17,24,39,.07); }

.kc-h { display:flex; align-items:flex-start; gap:.6rem; padding:.9rem 1.15rem .85rem 1.2rem; cursor:pointer; user-select:none; }
.kc-h:hover { background:#fafbfd; }
.kc-n {
  flex:none; width:1.45rem; text-align:right; padding-top:.24rem;
  font-size:.7rem; font-weight:700; color:var(--cc); font-variant-numeric:tabular-nums;
}
.kc-t { flex:1; min-width:0; font-size:1.04rem; font-weight:700; line-height:1.55; color:var(--ink); letter-spacing:.005em; }
.kc-arw { flex:none; color:#c3cad4; font-size:.82rem; padding-top:.32rem; line-height:1; }
.kc-arw::before { content:"＋"; }
.kc.open .kc-arw::before { content:"－"; }

.kc-b { padding:0 1.2rem 1rem 1.2rem; }

/* 摘要（导语） */
.kc-sum {
  font-size:.88rem; line-height:1.9; color:var(--sub);
  padding-left:.75rem; border-left:2px solid var(--line);
  margin-bottom:.9rem;
}

/* 编号要点 */
.kc-pts { list-style:none; margin:0; padding:0; counter-reset:kp; }
.kc-pts li {
  position:relative; padding-left:1.7rem; margin-bottom:.55rem;
  font-size:.93rem; line-height:1.9; color:#28303a; counter-increment:kp;
}
.kc-pts li::before {
  content:counter(kp); position:absolute; left:0; top:.36em;
  width:1.18rem; height:1.18rem; border-radius:.3rem;
  background:#f0f3f8; color:var(--sub);
  font-size:.6rem; line-height:1.18rem; text-align:center;
  font-variant-numeric:tabular-nums;
}
.kc-pts li:last-child { margin-bottom:0; }
.kc-pts b { font-weight:700; color:#16202c; }
.kc-pts .sep { color:#c7d0dc; margin:0 .1em; font-weight:400; }
em.wk {
  font-style:normal; color:#22457f; font-weight:600;
  background:rgba(44,79,143,.055); border-radius:.22rem; padding:0 .12em;
}

/* 易混提醒 */
.kc-rel {
  margin-top:1rem; background:var(--amber-soft); border-left:3px solid #d8a53a;
  border-radius:.45rem; padding:.62rem .85rem;
}
.kc-rel b { display:block; font-size:.62rem; letter-spacing:.1em; color:var(--amber); margin-bottom:.25rem; }
.kc-rel p { font-size:.84rem; line-height:1.8; color:#7a5a12; margin-bottom:.2rem; }
.kc-rel p:last-child { margin-bottom:0; }

/* 标签 */
.kc-tags {
  display:flex; flex-wrap:wrap; align-items:center; gap:.3rem;
  margin-top:.95rem; padding-top:.75rem; border-top:1px dashed var(--line);
}
.kc-lb { font-size:.61rem; letter-spacing:.09em; color:var(--faint); margin-right:.15rem; }
.ktag {
  border:1px solid var(--line); background:#fff; border-radius:99px;
  padding:.13rem .5rem; font-size:.7rem; color:var(--sub); cursor:pointer;
  transition:all .13s; line-height:1.4;
}
.ktag:hover { background:var(--brand-soft); border-color:var(--brand-line); color:var(--brand); }
.ktag.p { color:var(--brand); border-color:var(--brand-line); background:#f7faff; }
.ktag.w { color:#5a6472; }
.ktag-more { font-size:.66rem; color:var(--faint); padding:0 .15rem; }
.ktag-div { flex-basis:100%; height:0; }

/* 操作条 */
.kc-ops {
  display:flex; align-items:center; gap:.35rem; flex-wrap:wrap;
  margin-top:.9rem; padding-top:.7rem; border-top:1px dashed var(--line);
}
.kc-ops .lab { font-size:.68rem; color:var(--faint); margin-right:.15rem; }
.klink { margin-left:auto; font-size:.72rem; color:var(--brand); white-space:nowrap; }
.klink:hover { text-decoration:underline; }

/* 折叠：桌面「收起要点」 */
body.kfold .kc-b { display:none; }

/* ---------- 人物索引 ---------- */
.idx-h { font-size:.66rem; font-weight:700; color:var(--faint); letter-spacing:.05em; padding:.9rem .45rem .4rem; line-height:1.6; }
.idx-h em { display:block; font-style:normal; font-weight:400; font-size:.62rem; color:#b3bac5; letter-spacing:0; margin-top:.1rem; }
.idx-wrap { display:flex; flex-wrap:wrap; gap:.28rem; padding:0 .3rem; }
.idx-wrap.one { gap:.22rem .22rem; }
.idx-b {
  border:1px solid var(--line); background:#fff; border-radius:.42rem;
  padding:.2rem .42rem; font-size:.72rem; color:var(--ink2); cursor:pointer;
  transition:all .13s; line-height:1.4;
}
.idx-b span { font-size:.6rem; color:var(--faint); margin-left:.2rem; font-variant-numeric:tabular-nums; }
.idx-b:hover { border-color:var(--brand-line); color:var(--brand); background:var(--brand-soft); }
.idx-b.on { background:var(--brand); border-color:var(--brand); color:#fff; }
.idx-b.on span { color:rgba(255,255,255,.72); }

/* ---------- ≤760：知识卡折叠成单行标题 ---------- */
@media (max-width:760px) {
  .khead { margin-top:.2rem; }
  .khead h1 { font-size:1.24rem; }
  .khead p { font-size:.8rem; }
  .kcat { margin:.95rem -.7rem .5rem; padding:.1rem .7rem .2rem; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; }
  .kcat::-webkit-scrollbar { display:none; }
  .kcat > * { flex:none; }

  .kc { border-radius:.85rem; margin-bottom:.45rem; }
  .kc-h { align-items:center; min-height:3.2rem; padding:.75rem .85rem .75rem .9rem; }
  .kc-t { font-size:.95rem; }
  .kc-n { padding-top:0; }
  .kc-b { padding:0 .85rem 1rem; }
  .kc:not(.open) .kc-b { display:none; }
  body.kfold .kc.open .kc-b { display:block; }
  .kc-sum { font-size:.85rem; }
  .kc-pts li { font-size:.9rem; padding-left:1.55rem; }
  .kc-ops { gap:.3rem; }
  .klink { margin-left:0; width:100%; text-align:right; padding-top:.2rem; }
  .kc-rel p { font-size:.82rem; }
  .idx-b { padding:.34rem .55rem; font-size:.78rem; }
  .idx-h { padding:.75rem .3rem .4rem; }
}

/* ---------- 打印 ---------- */
@media print {
  .kc { break-inside:avoid; page-break-inside:avoid; box-shadow:none; border-color:#ddd; }
  .kc-b, body.kfold .kc-b { display:block !important; }
  .kc-ops, .kc-tags button.ktag, .kfilter, .kcat { display:none !important; }
  .kc-tags { border-top:0; }
  .kc::before { opacity:1; }
}
