/* CCDV-F 备考手册 · 共享样式 v1.0（token 基线继承自 ccar-handbook 已验收样章，勿随意改动） */
:root[data-theme="dark"]{
  --bg:#0e1219; --surface:#151b25; --surface2:#1a2230; --line:#26303f;
  --text:#d3dbe6; --muted:#8b99ab; --gold:#d9a441; --gold-dim:#a67c2e;
  --cyan:#6fb8b4; --red:#c96f6f; --green:#82b982; --code-bg:#101620;
}
:root[data-theme="light"]{
  --bg:#f5f2ec; --surface:#fdfbf7; --surface2:#f2ede3; --line:#ddd5c7;
  --text:#2b3340; --muted:#6b7686; --gold:#9a6f16; --gold-dim:#b98f33;
  --cyan:#2c7873; --red:#a54848; --green:#3f7d46; --code-bg:#eee8db;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg); color:var(--text);
  font-family:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;
  font-size:16.5px; line-height:1.9; letter-spacing:.01em;
  transition:background .25s,color .25s;
}
h1,h2,h3,.serif{font-family:"Noto Serif SC","Songti SC","SimSun",Georgia,serif;letter-spacing:.03em;font-weight:600}
code,pre,.mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:.88em}
code{background:var(--code-bg);border:1px solid var(--line);border-radius:4px;padding:.08em .4em;color:var(--cyan)}
pre{background:var(--code-bg);border:1px solid var(--line);border-radius:8px;padding:16px 18px;overflow-x:auto;margin:18px 0;line-height:1.7}
pre code{background:none;border:none;padding:0}
a{color:var(--gold);text-decoration:none}
a:hover{text-decoration:underline}

/* 页头 */
header.book{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:10}
header.book .bk{font-size:.85rem;color:var(--muted);letter-spacing:.12em}
header.book .bk b{color:var(--gold);font-weight:600}
#themeBtn{background:none;border:1px solid var(--line);color:var(--muted);border-radius:20px;padding:4px 14px;cursor:pointer;font-size:.8rem}
#themeBtn:hover{color:var(--gold);border-color:var(--gold)}
#themeBtn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

main{max-width:46rem;margin:0 auto;padding:56px 22px 90px}

/* 章首 */
.ch-eyebrow{color:var(--gold);letter-spacing:.35em;font-size:.8rem;text-transform:uppercase;margin-bottom:14px}
h1{font-size:2.15rem;line-height:1.35;margin-bottom:10px}
.ch-sub{color:var(--muted);font-size:1.02rem;margin-bottom:38px;padding-bottom:30px;border-bottom:1px solid var(--line)}
h2{font-size:1.42rem;margin:64px 0 20px;padding-left:14px;border-left:3px solid var(--gold)}
h3{font-size:1.08rem;margin:30px 0 12px;color:var(--gold)}
p{margin-bottom:16px}
p.lead{font-size:1.05rem}
em{font-style:normal;color:var(--gold);font-weight:600}
strong{color:var(--text)}
.muted{color:var(--muted)}
ul,ol{margin:0 0 16px 1.6em}
li{margin-bottom:6px}
.note{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:16px 20px;margin:22px 0;font-size:.95rem;color:var(--muted)}
.note b{color:var(--cyan);font-weight:600}
/* 延伸内容（Exam Guide 之外的扩展）必须使用此容器 */
.extend{background:var(--surface);border-left:3px solid var(--cyan);border-radius:0 8px 8px 0;padding:14px 18px;margin:22px 0;font-size:.93rem}
.extend::before{content:"延伸 · 超出 Exam Guide 范围";display:block;color:var(--cyan);font-size:.75rem;letter-spacing:.15em;margin-bottom:6px}
/* .drift：官方现状与 Exam Guide 不一致时的唯一容器（规则见 CLAUDE.md「事实追溯」；移植自 ccar-handbook） */
.drift{background:var(--surface);border-left:3px solid var(--red);border-radius:0 8px 8px 0;padding:14px 18px;margin:22px 0;font-size:.93rem}
.drift::before{content:"官方现状 · 与 Exam Guide 不一致";display:block;color:var(--red);font-size:.75rem;letter-spacing:.15em;margin-bottom:6px}
.drift p{margin:0 0 8px}
.drift .drift-src{display:block;color:var(--muted);font-size:.8rem;margin-top:6px}

/* 准则卡（签名元素，仅 ch01/ch18 及解析引用处使用编号样式） */
.p-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin:34px 0;overflow:hidden}
.p-head{display:flex;align-items:baseline;gap:18px;padding:22px 24px 6px}
.p-num{font-family:"Noto Serif SC",Georgia,serif;font-size:2.6rem;line-height:1;color:var(--gold);font-weight:700;border:2px solid var(--gold-dim);border-radius:50%;width:64px;height:64px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;align-self:center}
.p-title h3{margin:0;color:var(--text);font-size:1.18rem}
.p-title .en{color:var(--muted);font-size:.85rem;letter-spacing:.05em}
.p-body{padding:12px 24px 20px}
.p-body p{font-size:.98rem}
.p-evidence{font-size:.9rem;color:var(--muted);border-top:1px dashed var(--line);margin-top:14px;padding-top:12px}
.p-evidence b{color:var(--cyan);font-weight:600}
.p-boundary{font-size:.9rem;margin-top:12px;padding:10px 14px;background:var(--surface2);border-radius:6px;color:var(--muted)}
.p-boundary b{color:var(--red);font-weight:600}
.p-motto{background:linear-gradient(90deg,var(--gold-dim),var(--gold));color:#1a1408;padding:9px 24px;font-weight:700;font-size:.95rem;letter-spacing:.06em}

/* 对照表 */
table{width:100%;border-collapse:collapse;margin:22px 0;font-size:.92rem}
th,td{border:1px solid var(--line);padding:10px 13px;text-align:left;vertical-align:top}
th{background:var(--surface2);color:var(--gold);font-weight:600;letter-spacing:.04em;white-space:nowrap}
td b{color:var(--red)}
td .ok{color:var(--green)}
/* 配置速查块的「真伪栏」 */
.real{color:var(--green);font-weight:600}
.fake{color:var(--red);font-weight:600;text-decoration:line-through}

/* 题组（答题卡风格） */
.quiz{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin:34px 0;padding:24px}
.quiz .q-tag{color:var(--gold);font-size:.8rem;letter-spacing:.2em;margin-bottom:10px}
.quiz .q-stem{font-size:.98rem;margin-bottom:18px}
.opt{display:flex;gap:14px;align-items:flex-start;width:100%;text-align:left;background:var(--surface2);border:1px solid var(--line);border-radius:8px;padding:12px 16px;margin-bottom:10px;cursor:pointer;color:var(--text);font-size:.94rem;line-height:1.75;font-family:inherit;transition:border-color .15s}
.opt:hover{border-color:var(--gold-dim)}
.opt:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.opt .letter{font-family:ui-monospace,monospace;font-weight:700;color:var(--muted);border:1px solid var(--line);border-radius:4px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.quiz.answered .opt{cursor:default}
.opt.right{border-color:var(--green)}
.opt.right .letter{background:var(--green);color:#0e1219;border-color:var(--green)}
.opt.wrong{border-color:var(--red)}
.opt.wrong .letter{background:var(--red);color:#0e1219;border-color:var(--red)}
/* 对错不能只靠红/绿色相（WCAG 1.4.1），且浏览器默认不打印背景色 —— 纸面上字母块的
   绿/红底会消失、两种边框在灰度下几乎同深。补一个字形标记，屏幕/灰度/色盲下都成立。
   挂在 .opt::after 而不是 .letter::after：.letter 是固定 26px 的 flex 盒，塞进第二个
   字形会顶破方块，且 ✓/✗ 宽度不同会让四个选项的文字左边缘错开。 */
.opt.right::after{content:"\2713";margin-left:auto;color:var(--green);font-weight:700}
.opt.wrong::after{content:"\2717";margin-left:auto;color:var(--red);font-weight:700}
/* 判卷/回放后标出「你选的是这个」：与 ch17 交卷后同一套视觉（字母块外描边），
   不占用 .opt 边框与 ::after 这两条已被对错占用的通道。选择器不带 [data-exam]，
   book.js 与 ch17 共用这一条（下方 [data-exam] 段只保留交卷前的金色边框）。 */
.quiz.answered .opt.picked .letter{outline:2px solid var(--gold);outline-offset:2px}
/* book.js 注入的「重做 / 清空本章记录」：形态照抄 #themeBtn，但那是 id 选择器无法复用，
   故另立一类。取值全部来自既有 token（--line/--muted/--gold），不新增颜色。 */
.qbtn{background:none;border:1px solid var(--line);color:var(--muted);border-radius:20px;padding:3px 13px;cursor:pointer;font-size:.78rem;font-family:inherit;letter-spacing:.05em}
.qbtn:hover{color:var(--gold);border-color:var(--gold)}
.qbtn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.quiz .qbtn{margin-top:14px}
.ch-clear{margin:26px 0 0;text-align:right}
.anatomy{display:none;margin-top:14px;border-top:1px dashed var(--line);padding-top:14px;font-size:.9rem}
.quiz.answered .anatomy{display:block}
.anatomy .row{margin-bottom:10px}
.anatomy .tag{display:inline-block;font-size:.75rem;padding:1px 8px;border-radius:10px;margin-right:8px;letter-spacing:.05em;white-space:nowrap}
.tag.ok{background:var(--green);color:#0e1219}
.tag.d1{background:var(--red);color:#0e1219}
.tag.p{background:var(--gold-dim);color:#0e1219}

/* 模拟卷（ch17）：计时条 + 成绩单。仅使用既有 token，不新增颜色 */
.exam-bar{position:sticky;top:53px;z-index:9;display:flex;justify-content:space-between;align-items:center;gap:14px;
  background:var(--surface2);border:1px solid var(--line);border-radius:8px;padding:10px 16px;margin:18px 0 26px;font-size:.9rem}
.exam-bar b{font-family:ui-monospace,monospace;color:var(--gold);font-size:1.05rem;letter-spacing:.06em}
.exam-bar.low b{color:var(--red)}
#submitBtn{background:var(--gold-dim);border:none;color:#1a1408;border-radius:20px;padding:6px 20px;cursor:pointer;font-size:.85rem;font-weight:700;font-family:inherit}
#submitBtn:hover{background:var(--gold)}
#submitBtn:disabled{background:var(--line);color:var(--muted);cursor:default}
/* 交卷前：金色边框标出「我选了这一项」。交卷后 .picked 保留在 DOM 上（ch17 脚本不再摘掉），
   若仍套金色边框会盖过 .opt.right/.opt.wrong（3 个 class 级 > 2 个），读者就看不出对错。
   故 :not(.answered) 把金边限定在交卷前，交卷后改用字母块外描边标「你选的是这个」，
   与绿/红边框和 ::after 的 ✓/✗ 三者互不占用同一视觉通道（该规则见上方题组段，
   与 book.js 的回放共用一条，不在此重复声明）。 */
[data-exam] .quiz:not(.answered) .opt.picked{border-color:var(--gold);background:var(--code-bg)}
[data-exam] .q-tag .dom{border:1px solid var(--line);border-radius:10px;padding:0 8px;margin-left:10px;color:var(--muted);letter-spacing:.05em}
.exam-sec{margin:52px 0 8px;padding:10px 16px;background:var(--surface2);border-left:3px solid var(--gold);border-radius:0 6px 6px 0;color:var(--gold);letter-spacing:.12em;font-size:.85rem}
#result{display:none;background:var(--surface);border:1.5px solid var(--gold-dim);border-radius:10px;padding:24px 26px;margin:30px 0}
#result.shown{display:block}
#result h3{margin-top:0}
.score-big{font-family:"Noto Serif SC",Georgia,serif;font-size:2.6rem;color:var(--gold);line-height:1.2}
.dom-row{display:flex;align-items:center;gap:12px;margin-bottom:8px;font-size:.92rem}
.dom-row .nm{width:15rem;flex:0 0 auto}
.dom-row .bar{flex:1;height:9px;background:var(--surface2);border-radius:5px;overflow:hidden}
.dom-row .bar i{display:block;height:100%;background:var(--gold-dim)}
.dom-row .pc{width:5.5rem;text-align:right;font-family:ui-monospace,monospace;color:var(--muted)}
@media (max-width:600px){.dom-row .nm{width:8rem}.exam-bar{flex-wrap:wrap}}

/* 考点回链 */
.ts-links{background:var(--surface2);border-radius:8px;padding:14px 18px;margin:26px 0;font-size:.88rem;color:var(--muted)}
.ts-links b{color:var(--gold)}

/* 速记卡 / 速查页 */
.cheat{background:var(--surface);border:1.5px solid var(--gold-dim);border-radius:10px;padding:26px 28px;margin:30px 0}
.cheat ol{margin-left:1.4em}
.cheat li{margin-bottom:8px;font-size:.96rem}
.cheat li b{color:var(--gold)}

/* 目录页 */
.toc-part{margin:36px 0 8px;color:var(--gold);letter-spacing:.2em;font-size:.85rem}
.toc-item{display:flex;justify-content:space-between;align-items:baseline;padding:12px 6px;border-bottom:1px solid var(--line);font-size:.97rem}
.toc-item .no{font-family:ui-monospace,monospace;color:var(--muted);margin-right:14px}
.toc-item .st{font-size:.78rem;color:var(--muted);letter-spacing:.1em}

footer.ch{max-width:46rem;margin:0 auto;padding:26px 22px 60px;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem;display:flex;justify-content:space-between}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media (max-width:600px){
  body{font-size:15.5px}
  h1{font-size:1.7rem}
  .p-num{width:52px;height:52px;font-size:2rem}
  /* 窄屏溢出兜底：th 是 nowrap、单元格里还有 27 字符的不可断 mono token
     （verify_claim_against_source），360px 视口只剩 316px 内容宽，宽表会把 body
     顶出横向滚动条、sticky 页头与正文错位。display:block 让表格自身成为可横滚的块，
     行列关系由匿名表格盒保留（代价：比容器窄的表格不再拉满 100%，可接受）。 */
  main table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  main table code{overflow-wrap:anywhere}
}
@media print{
  /* 打印时 <html data-theme="dark"> 仍然生效，若不复位 token，纸面上会是
     深色背景 token + 低对比文字（ch18 几乎全是表格与速记卡）。
     这里只是把已验收的 light 主题取值在打印介质上复用，不改动任何 token 值。
     注意选择器必须带 [data-theme="dark"]：media query 不增加优先级，
     裸 :root(0,1,0) 会输给文件顶部的 :root[data-theme="dark"](0,2,0)。 */
  :root, :root[data-theme="dark"]{
    --bg:#f5f2ec; --surface:#fdfbf7; --surface2:#f2ede3; --line:#ddd5c7;
    --text:#2b3340; --muted:#6b7686; --gold:#9a6f16; --gold-dim:#b98f33;
    --cyan:#2c7873; --red:#a54848; --green:#3f7d46; --code-bg:#eee8db;
  }
  header.book,#themeBtn,footer.ch,.exam-bar,#submitBtn,.qbtn,.ch-clear{display:none}
  body{background:#fff;color:var(--text)}
  main{max-width:none;padding:0}
  a{color:var(--text);text-decoration:none}
  h2{page-break-after:avoid}
  table,pre,.cheat,.quiz{page-break-inside:avoid}
  /* 撤掉窄屏的表格横滚兜底：纸张宽度也可能 <600px（A5 ≈ 559px、Letter 放大到 150%），
     那时上面的 max-width:600px 块会在打印时命中，而分页介质里 overflow:auto 不出滚动条、
     直接裁切 —— ch18 的宽表会在纸面上丢内容。选择器同为 main table（0,0,2），
     靠源顺序在后取胜。 */
  main table{display:table;overflow-x:visible}
  /* 打印题组时展开解析，纸面上没有点击 */
  .anatomy{display:block}
}
