@charset "UTF-8";
/* ============================================================================
   《基础会计》数字教材 · 体例组件库 v1.0
   依赖 tokens.css（唯一色彩来源）。本文件**不得出现任何硬编码色值**。
   ----------------------------------------------------------------------------
   组件清单（对应契约 §2.4 块类型表 / §3.4 页面骨架）：
     01 通用小件 pill / tag / chip / eyebrow / keyline / btn
     02 章首 .ch-opener（章号·章名·导语·三层目标·章导览·4D 入口）
     03 节 .sec / .sec-head（编号·标题·类型签）
     04 正文块 p / lead / h3 / h4 / h5 / ul / ol / raw
     05 定义框 .def（blue / teal / amber / purple 四 tone）
     06 准则原文 .standard（可折叠）
     07 提示条 .callout（注意 / 提示 / 思政 / 误区）
     08 数据表 .tbl-wrap（金额右对齐 tabular-nums，合计双线）
     09 术语卡 .term-card / 术语表 .glossary
     10 知识结构图 .kmap-figure
     11 流程链 .flow
     12 会计分录卡 .entry-card
     13 报表表 .stmt-wrap
     14 勾稽徽章 .tie（balanced / broken / pending）
     15 指标卡 .metrics
     16 选项卡 .tabs
     17 案例 .case-card
     18 自测 .quiz / .tf / .sa
     19 延伸阅读 .reading-list
     20 页边注 .side-note
     21 4D 挂载舱 .fx4d-block
     22 上下章导航 .pager
     23 页脚与 AIGC 标识 .dtb-foot
     24 封面 / 封底 / 版权页 / 前言 专件
   ========================================================================== */

/* ==========================================================================
   01 · 通用小件
   ========================================================================== */
.eyebrow{font-family:var(--sans);font-size:var(--step-1);font-weight:600;
  letter-spacing:var(--tracking-caps);color:var(--navy);text-transform:none}
.pill{display:inline-flex;align-items:center;gap:var(--sp-1);
  font-size:var(--step-1);font-weight:600;line-height:1.4;padding:2px 10px;
  border:var(--hair) solid currentColor;border-radius:var(--r-pill);white-space:nowrap}
.pill.open{color:var(--navy)}
.pill.doing{color:var(--brass-deep);background:var(--brass-soft)}
.pill.done{color:var(--ledger-deep);background:var(--ledger-soft)}
.pill.lock{color:var(--ink-2);background:var(--paper-2)}
.tag{display:inline-block;font-size:var(--step-1);font-weight:600;letter-spacing:.04em;
  color:var(--navy);background:var(--navy-soft);border:var(--hair) solid var(--navy-line);
  border-radius:var(--r-xs);padding:1px 7px;white-space:nowrap}
.tag.brass{color:var(--brass-deep);background:var(--brass-soft);border-color:var(--brass-line)}
.tag.ledger{color:var(--ledger-deep);background:var(--ledger-soft);border-color:var(--ledger-line)}
.tag.alarm{color:var(--alarm-deep);background:var(--alarm-soft);border-color:var(--alarm-line)}
.tag.plain{color:var(--ink-2);background:var(--paper-2);border-color:var(--rule)}
.chip{display:inline-flex;align-items:baseline;gap:var(--sp-1);font-size:var(--step-1);
  color:var(--ink-2);background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-pill);padding:3px 11px}
.chip b{font-family:var(--num);font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}
.keyline{height:var(--bw-rule);border:0;margin:var(--sp-6) 0;
  background:linear-gradient(90deg,var(--navy) 0 64px,var(--rule-strong) 64px 100%)}
.keyline.brass{background:linear-gradient(90deg,var(--brass) 0 64px,var(--rule) 64px 100%)}
.double-rule{border:0;border-top:var(--bw-rule) double var(--rule-strong);margin:var(--sp-5) 0}
.mono{font-family:var(--num);font-variant-numeric:tabular-nums}
.nowrap{white-space:nowrap}
.neg{color:var(--alarm)}
.lead-in{font-weight:600;color:var(--navy)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
  font-family:var(--sans);font-size:var(--step0);font-weight:600;line-height:1.4;
  padding:8px 16px;border-radius:var(--r-sm);cursor:pointer;
  border:var(--hair) solid var(--navy);background:var(--navy);color:var(--ink-inv);
  transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),
             transform var(--dur-1) var(--ease),box-shadow var(--dur-2) var(--ease)}
.btn:hover{background:var(--navy-2);border-color:var(--navy-2);box-shadow:var(--shadow-2)}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:transparent;color:var(--navy)}
.btn.ghost:hover{background:var(--navy-soft)}
.btn.brass{background:var(--brass-deep);border-color:var(--brass-deep);color:var(--ink-inv)}
.btn.brass:hover{background:var(--brass-deep-2);border-color:var(--brass-deep-2)}
.btn.sm{padding:5px 11px;font-size:var(--step-1)}
.btn.block{width:100%}

/* ==========================================================================
   02 · 章首 .ch-opener —— 教材的"扉页"
   ========================================================================== */
.ch-opener{position:relative;margin:0 0 var(--sp-8);padding:var(--sp-8) 0 var(--sp-6);
  border-bottom:var(--bw-rule) double var(--rule-strong)}
.ch-opener::before{content:"";position:absolute;left:0;top:0;width:88px;height:3px;background:var(--brass)}
.ch-no{display:block;font-family:var(--num);font-size:var(--step5);line-height:1;
  font-weight:700;color:var(--brass);letter-spacing:.04em;
  -webkit-text-stroke:0;text-shadow:0 1px 0 var(--paper-3)}
.ch-no small{display:block;font-family:var(--sans);font-size:var(--step-1);font-weight:600;
  letter-spacing:var(--tracking-caps);color:var(--ink-2);margin-top:var(--sp-2)}
.ch-title{margin:var(--sp-4) 0 0;font-family:var(--serif);font-weight:700;
  font-size:var(--step4);line-height:1.2;color:var(--navy);letter-spacing:.01em}
.ch-sub{margin:var(--sp-2) 0 0;font-family:var(--sans);font-size:var(--step2);
  font-weight:400;color:var(--ink-2);line-height:1.5}
.ch-meta{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-5);list-style:none;padding:0}
.ch-lead{margin-top:var(--sp-6);font-family:var(--serif);font-size:var(--step1);
  line-height:var(--lh-body);color:var(--ink);max-width:var(--measure)}
.ch-lead::first-letter{font-size:1.6em;line-height:1;color:var(--navy);font-weight:700;padding-right:2px}

/* 学习目标三栏（知识 / 技能 / 素养） */
.goals{margin-top:var(--sp-7)}
.goals-head{display:flex;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.goals-head h2{margin:0;font-family:var(--sans);font-size:var(--step2);color:var(--navy);font-weight:700}
.goals-head p{margin:0;font-size:var(--step-1);color:var(--ink-2)}
.goal-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr))}
.goal-col{position:relative;min-width:0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-top:var(--bw-edge) solid var(--navy);border-radius:var(--r-sm);
  padding:var(--sp-4) var(--sp-4) var(--sp-4);box-shadow:var(--shadow-1)}
.goal-col.skill{border-top-color:var(--ledger)}
.goal-col.value{border-top-color:var(--brass)}
.goal-col h3{margin:0 0 var(--sp-3);font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;letter-spacing:.06em;color:var(--navy)}
.goal-col.skill h3{color:var(--ledger-deep)}
.goal-col.value h3{color:var(--brass-deep)}
.goal-col ul{margin:0;padding-left:1.15em;font-size:var(--step0);line-height:1.75;color:var(--ink)}
.goal-col li{margin:0 0 var(--sp-2);overflow-wrap:anywhere}
.goal-col li:last-child{margin-bottom:0}
.goal-col li::marker{color:var(--navy-line);font-weight:700}

/* 章导览（本章路线） */
.ch-tour{margin-top:var(--sp-6);background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-left:var(--bw-edge-lg) solid var(--brass);border-radius:var(--r-sm);
  padding:var(--sp-5) var(--sp-5)}
.ch-tour h2{margin:0 0 var(--sp-3);font-size:var(--step1);color:var(--navy);
  font-family:var(--sans);letter-spacing:.04em}
.ch-tour ol{display:grid;gap:var(--sp-2);grid-template-columns:repeat(2,minmax(0,1fr));
  margin:0;padding:0;list-style:none;counter-reset:tour}
.ch-tour li{display:flex;gap:var(--sp-3);align-items:baseline;min-width:0;font-size:var(--step0)}
.ch-tour li::before{counter-increment:tour;content:counter(tour,decimal-leading-zero);
  font-family:var(--num);font-size:var(--step-1);color:var(--brass-deep);flex:0 0 auto}
.ch-tour a{color:var(--ink);text-decoration:none;border-bottom:var(--hair) dashed var(--rule-strong);
  overflow-wrap:anywhere}
.ch-tour a:hover{color:var(--navy);border-bottom-color:var(--navy-2)}

/* 4D 入口（章首） */
.ch-4d{margin:var(--sp-5) 0 0;display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;
  background:var(--navy);color:var(--ink-inv);border-radius:var(--r-sm);padding:var(--sp-4) var(--sp-5);
  background-image:repeating-linear-gradient(135deg,var(--cover-rule-2) 0 1px,transparent 1px 14px)}
.ch-4d .k{font-family:var(--num);font-size:var(--step-1);letter-spacing:var(--tracking-caps);
  color:var(--brass-leaf-2)}
.ch-4d .t{font-size:var(--step1);font-weight:600}
.ch-4d .btn{margin-left:auto;background:var(--brass-leaf);border-color:var(--brass-leaf);color:var(--cover-bg)}
.ch-4d .btn:hover{background:var(--brass-leaf-2);border-color:var(--brass-leaf-2)}

/* ==========================================================================
   03 · 节与节头
   ========================================================================== */
.sec{margin:0 0 var(--sp-9);scroll-margin-top:calc(var(--topbar-h) + var(--sp-5))}
.sec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3);
  margin:0 0 var(--sp-5);padding-bottom:var(--sp-3);
  border-bottom:var(--hair) solid var(--rule-strong)}
.sec-no{font-family:var(--num);font-size:var(--step3);font-weight:700;color:var(--brass);
  line-height:1.1;flex:0 0 auto}
.sec-title{margin:0;font-family:var(--sans);font-size:var(--step3);line-height:1.3;
  font-weight:700;color:var(--navy);letter-spacing:.01em;min-width:0}
.sec-tag{flex:0 0 auto}
.sec-head .anchor{margin-left:auto;font-size:var(--step-1);color:var(--ink-3-strong);
  text-decoration:none;border-bottom:var(--hair) solid transparent;opacity:0;
  transition:opacity var(--dur-2) var(--ease),color var(--dur-1) var(--ease),
    border-color var(--dur-1) var(--ease)}
.sec-head:hover .anchor,.sec-head:focus-within .anchor,.sec-head .anchor:focus-visible{opacity:1}
.sec-head .anchor:hover{color:var(--navy);border-bottom-color:var(--navy-line)}
.sec-body{display:block}

/* ==========================================================================
   04 · 正文块
   ========================================================================== */
.flow-block{margin:0 0 var(--sp-5);font-size:var(--step0);line-height:var(--lh-body);
  color:var(--ink);font-family:var(--serif)}
.flow-block.lead{font-size:var(--step1);color:var(--ink)}
.flow-block.lead::first-letter{font-size:1.5em;line-height:1;color:var(--navy);font-weight:700}
.h3{font-family:var(--sans);font-size:var(--step2);font-weight:700;color:var(--navy);
  margin:var(--sp-7) 0 var(--sp-3);line-height:1.4;scroll-margin-top:calc(var(--topbar-h) + var(--sp-4))}
.h3::before{content:"";display:inline-block;width:6px;height:6px;margin-right:var(--sp-3);
  background:var(--brass);border-radius:1px;transform:translateY(-2px)}
.h4{font-family:var(--sans);font-size:var(--step1);font-weight:700;color:var(--navy-ink);
  margin:var(--sp-6) 0 var(--sp-2);line-height:1.45;
  scroll-margin-top:calc(var(--topbar-h) + var(--sp-4))}
.h4::before{content:"";display:inline-block;width:7px;height:7px;margin-right:var(--sp-2);
  background:var(--paper-3);border:var(--bw-rule) solid var(--brass);transform:translateY(-2px)}
.mini-title{margin:var(--sp-5) 0 var(--sp-3);font-size:var(--step0);font-weight:700;
  color:var(--ink);border-left:var(--bw-edge) solid var(--navy);padding-left:var(--sp-3);
  font-family:var(--sans)}
.ul,.ol{margin:0 0 var(--sp-5);padding-left:1.35em;font-size:var(--step0);
  line-height:var(--lh-body);color:var(--ink);font-family:var(--serif)}
.ul li,.ol li{margin:0 0 var(--sp-2);overflow-wrap:anywhere}
.ul li::marker{color:var(--brass-deep)}
.ol li::marker{color:var(--navy);font-family:var(--num);font-weight:600}
.ul.tight,.ol.tight{margin-bottom:var(--sp-3)}
.raw-block{margin:0 0 var(--sp-5);font-size:var(--step0);line-height:var(--lh-body);
  color:var(--ink);font-family:var(--serif)}
.inline-kbd{font-family:var(--num);font-size:var(--step-1);border:var(--hair) solid var(--rule-strong);
  border-bottom-width:2px;border-radius:var(--r-xs);padding:0 5px;background:var(--paper-2);color:var(--ink)}

/* ==========================================================================
   05 · 定义框（四 tone）—— 语义色只做左缘与标签底，文字一律 --ink
   ========================================================================== */
.def{position:relative;margin:var(--sp-5) 0;background:var(--paper-3);
  border:var(--hair) solid var(--rule);border-left:var(--bw-edge-lg) solid var(--navy);
  border-radius:0 var(--r-sm) var(--r-sm) 0;padding:var(--sp-4) var(--sp-5) var(--sp-4) var(--sp-5);
  box-shadow:var(--shadow-1)}
.def-head{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}
.def-label{font-family:var(--sans);font-size:var(--step-1);font-weight:700;letter-spacing:.06em;
  color:var(--navy);background:var(--navy-soft);border-radius:var(--r-xs);padding:2px 8px}
.def-body{margin:0;font-size:var(--step0);line-height:var(--lh-body);color:var(--ink);
  font-family:var(--serif)}
.def-body strong{color:var(--navy);font-weight:700}
.def.teal{border-left-color:var(--ledger)}
.def.teal .def-label{color:var(--ledger-deep);background:var(--ledger-soft)}
.def.amber{border-left-color:var(--brass)}
.def.amber .def-label{color:var(--brass-deep);background:var(--brass-soft)}
.def.purple{border-left-color:var(--plum)}
.def.purple .def-label{color:var(--plum);background:var(--plum-soft)}
.def::after{content:"";position:absolute;right:var(--sp-4);top:var(--sp-4);width:22px;height:22px;
  border-top:var(--hair) solid var(--rule-strong);border-right:var(--hair) solid var(--rule-strong)}

/* ========================================================================== 
   06 · 准则原文（可折叠，出处必须可溯源）
   ========================================================================== */
.standard{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-left:var(--bw-edge) solid var(--brass);border-radius:0 var(--r-sm) var(--r-sm) 0;
  box-shadow:var(--shadow-1)}
.standard>summary{cursor:pointer;list-style:none;padding:var(--sp-3) var(--sp-5);
  display:flex;align-items:center;gap:var(--sp-3);font-family:var(--sans);
  font-size:var(--step0);font-weight:700;color:var(--brass-deep)}
.standard>summary::-webkit-details-marker{display:none}
.standard>summary::before{content:"§";font-family:var(--num);font-size:var(--step1);
  color:var(--brass);border:var(--hair) solid var(--brass-line);border-radius:var(--r-xs);
  padding:0 5px;line-height:1.5}
.standard>summary::after{content:"展开原文";margin-left:auto;font-size:var(--step-1);
  font-weight:400;color:var(--ink-2);letter-spacing:.04em}
.standard[open]>summary::after{content:"收起"}
.standard[open]>summary{border-bottom:var(--hair) solid var(--rule)}
.standard-body{padding:var(--sp-4) var(--sp-5) var(--sp-5);font-family:var(--serif);
  font-size:var(--step1);line-height:var(--lh-body);color:var(--ink)}
.standard-body p{margin:0 0 var(--sp-3)}
.standard-body p:last-of-type{margin-bottom:0}
.standard-cite{display:block;margin-top:var(--sp-4);padding-top:var(--sp-2);
  border-top:var(--hair) dashed var(--rule-strong);text-align:right;
  font-family:var(--sans);font-style:normal;font-size:var(--step-1);color:var(--ink-2)}

/* ==========================================================================
   07 · 提示条（注意 / 提示 / 思政 / 误区）
   ========================================================================== */
.callout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3) var(--sp-4);
  align-items:start;margin:var(--sp-5) 0;padding:var(--sp-4) var(--sp-5);
  background:var(--paper-2);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1)}
.callout-icon{width:26px;height:26px;flex:0 0 auto;display:grid;place-items:center;
  border-radius:var(--r-xs);font-size:var(--step0);font-weight:700;font-family:var(--sans);
  background:var(--navy-soft);color:var(--navy)}
.callout-body{min-width:0;font-size:var(--step0);line-height:1.75;color:var(--ink)}
.callout-body .callout-label{display:block;font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;letter-spacing:.06em;color:var(--navy);margin-bottom:var(--sp-1)}
.callout.tip .callout-icon{background:var(--ledger-soft);color:var(--ledger-deep)}
.callout.tip .callout-label{color:var(--ledger-deep)}
.callout.warn .callout-icon,
.callout.mistake .callout-icon{background:var(--alarm-soft);color:var(--alarm-deep)}
.callout.warn .callout-label,
.callout.mistake .callout-label{color:var(--alarm-deep)}
.callout.ideology{border-left:var(--bw-edge-lg) solid var(--alarm);background:var(--paper-3)}
.callout.ideology .callout-icon{background:var(--alarm-soft);color:var(--alarm-deep);
  font-family:var(--serif)}
.callout.ideology .callout-label{color:var(--alarm-deep)}
.callout.brass .callout-icon{background:var(--brass-soft);color:var(--brass-deep)}
.callout.brass .callout-label{color:var(--brass-deep)}

/* ==========================================================================
   08 · 数据表（金额列右对齐 + tabular-nums；合计行 2px double）
   ========================================================================== */
.tbl-wrap{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1)}
.tbl-scroll{overflow-x:auto;border-radius:var(--r-sm) var(--r-sm) 0 0}
.tbl-scroll::-webkit-scrollbar{height:6px}
.tbl-scroll::-webkit-scrollbar-track{background:var(--paper-2)}
.tbl-scroll::-webkit-scrollbar-thumb{background:var(--rule-strong);border-radius:var(--r-pill)}
.tbl-cap{margin:0;padding:var(--sp-3) var(--sp-5);background:var(--navy);color:var(--ink-inv);
  font-family:var(--sans);font-size:var(--step-1);font-weight:600;letter-spacing:.04em;
  border-radius:var(--r-sm) var(--r-sm) 0 0}
.tbl-cap .cap-no{font-family:var(--num);color:var(--brass-leaf-2);margin-right:var(--sp-2)}
table.data-table{width:100%;min-width:520px;border-collapse:collapse;
  font-size:var(--step0);line-height:1.6}
table.data-table caption{caption-side:top;text-align:left;padding:var(--sp-3) var(--sp-4);
  font-family:var(--sans);font-size:var(--step-1);font-weight:600;color:var(--ink-2)}
table.data-table th,table.data-table td{padding:9px var(--sp-4);border-bottom:var(--hair) solid var(--rule);
  text-align:left;vertical-align:top;overflow-wrap:anywhere}
table.data-table thead th{background:var(--paper-2);color:var(--navy);font-family:var(--sans);
  font-size:var(--step-1);font-weight:700;white-space:nowrap;
  border-bottom:var(--hair) solid var(--rule-strong)}
table.data-table tbody tr:nth-child(even) td{background:var(--paper-3)}
table.data-table tbody tr:nth-child(odd) td{background:var(--paper)}
table.data-table tbody tr:hover td{background:var(--navy-soft)}
table.data-table td,table.data-table th{color:var(--ink)}
table.data-table th.c,table.data-table td.c{text-align:center}
table.data-table th.r,table.data-table td.r,
table.data-table th.d,table.data-table td.d{text-align:right;
  font-family:var(--num);font-variant-numeric:tabular-nums;white-space:nowrap}
table.data-table td.l,table.data-table th.l{text-align:left}
table.data-table tr.lv1 td:first-child{font-weight:700;color:var(--ink);background:var(--paper-2)}
table.data-table tr.lv2 td:first-child{padding-left:calc(var(--sp-4) + 26px);color:var(--ink-2)}
table.data-table tr.key td{color:var(--navy);font-weight:700}
table.data-table tr.total td{border-top:var(--bw-rule) double var(--rule-strong);
  background:var(--brass-soft);font-weight:700;color:var(--navy)}
table.data-table tr.total td:first-child{letter-spacing:.04em}
table.data-table td.neg{color:var(--alarm)}
.tbl-note{margin:0;padding:var(--sp-3) var(--sp-4) var(--sp-4);font-size:var(--step-1);
  line-height:1.7;color:var(--ink-2);border-top:var(--hair) dashed var(--rule-strong);
  overflow-wrap:anywhere}
.tbl-note .note-k{font-weight:700;color:var(--navy);margin-right:var(--sp-1)}

/* ==========================================================================
   09 · 术语卡 / 术语表
   ========================================================================== */
.term-card{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-top:var(--bw-edge) solid var(--brass);border-radius:var(--r-sm);
  padding:var(--sp-4) var(--sp-5);box-shadow:var(--shadow-1);
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-2) var(--sp-4)}
.term-cn{font-family:var(--serif);font-size:var(--step2);font-weight:700;color:var(--navy);
  line-height:1.3;min-width:0;overflow-wrap:anywhere}
.term-en{font-family:var(--num);font-size:var(--step-1);color:var(--ink-2);
  align-self:center;min-width:0;overflow-wrap:anywhere}
.term-def{grid-column:1/-1;margin:0;font-size:var(--step0);line-height:var(--lh-body);
  color:var(--ink);font-family:var(--serif);border-top:var(--hair) dashed var(--rule-strong);
  padding-top:var(--sp-3)}
.glossary{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);padding:var(--sp-5)}
.glossary h3{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step2);
  color:var(--navy);display:flex;align-items:center;gap:var(--sp-3)}
.glossary h3::after{content:"";flex:1;height:var(--hair);background:var(--rule-strong)}
.glossary dl{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--sp-4) var(--sp-6)}
.glossary .g-item{min-width:0;border-left:var(--bw-edge) solid var(--brass-line);
  padding-left:var(--sp-3)}
.glossary dt{font-family:var(--serif);font-size:var(--step1);font-weight:700;color:var(--navy);
  overflow-wrap:anywhere}
.glossary dt span{font-family:var(--num);font-size:var(--step-1);font-weight:400;color:var(--ink-2);
  margin-left:var(--sp-2)}
.glossary dd{margin:var(--sp-1) 0 0;font-size:var(--step0);line-height:1.75;color:var(--ink);
  font-family:var(--serif);overflow-wrap:anywhere}

/* ==========================================================================
   10 · 知识结构图（内联 SVG，可交互）
   ========================================================================== */
.kmap-figure{margin:var(--sp-6) 0;background:var(--paper-2);border:var(--hair) solid var(--rule-strong);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);padding:var(--sp-5) var(--sp-5) var(--sp-4);
  overflow:visible}
.kmap-figure>figcaption{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step-1);
  font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:var(--sp-3)}
.kmap-figure>figcaption::before{content:"";width:14px;height:14px;flex:0 0 auto;
  border:var(--bw-rule) solid var(--brass);border-radius:var(--r-xs)}
.kmap-svg{display:block;width:100%;height:auto;overflow:visible}
.kmap-svg .kmap-card{fill:var(--paper-3);stroke:var(--rule-strong);stroke-width:1.2}
.kmap-svg .kmap-card.root{fill:var(--navy);stroke:var(--navy)}
.kmap-svg .kmap-no{font-family:var(--num);font-size:13px;font-weight:700;fill:var(--brass-deep)}
.kmap-svg .kmap-no.root{fill:var(--brass-leaf-2)}
.kmap-svg .kmap-t{font-family:var(--sans);font-size:16px;font-weight:700;fill:var(--ink)}
.kmap-svg .kmap-t.root{fill:var(--ink-inv)}
.kmap-svg .kmap-d{font-family:var(--serif);font-size:13px;fill:var(--ink-2)}
.kmap-svg .kmap-d.root{fill:var(--ink-inv-2)}
.kmap-svg .kmap-link{fill:none;stroke:var(--rule-strong);stroke-width:1.5}
.kmap-svg .kmap-node{cursor:default}
.kmap-svg .kmap-node:focus{outline:none}
.kmap-svg .kmap-node:focus-visible .kmap-card,
.kmap-svg .kmap-node:hover .kmap-card{stroke:var(--navy-2);stroke-width:2}
.kmap-svg .kmap-node.root:hover .kmap-card{stroke:var(--brass-leaf)}

/* ==========================================================================
   11 · 流程链（凭证 → 账簿 → 报表）
   ========================================================================== */
.flow{margin:var(--sp-5) 0;padding:0;list-style:none;counter-reset:flow;
  display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.flow-step{position:relative;min-width:0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-4) var(--sp-4) var(--sp-4);box-shadow:var(--shadow-1)}
.flow-step::before{counter-increment:flow;content:counter(flow);
  position:absolute;right:var(--sp-3);top:var(--sp-3);width:24px;height:24px;
  display:grid;place-items:center;border-radius:50%;font-family:var(--num);
  font-size:var(--step-1);font-weight:700;color:var(--ink-inv);background:var(--navy)}
.flow-step::after{content:"";position:absolute;left:calc(100% + 1px);top:50%;width:var(--sp-3);
  height:var(--bw-rule);background:var(--rule-strong);transform:translateY(-50%)}
.flow-step:last-child::after{display:none}
.flow-step h4{margin:0 var(--sp-8) var(--sp-2) 0;font-family:var(--sans);font-size:var(--step1);
  font-weight:700;color:var(--navy);line-height:1.4;overflow-wrap:anywhere}
.flow-step p{margin:0;font-size:var(--step0);line-height:1.75;color:var(--ink);
  font-family:var(--serif);overflow-wrap:anywhere}

/* ==========================================================================
   12 · 会计分录卡（借贷双列必须左右可比）
   ========================================================================== */
.entry-card{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);overflow:visible}
.entry-head{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);align-items:center;
  background:var(--navy);color:var(--ink-inv);padding:var(--sp-3) var(--sp-5);
  border-radius:var(--r-sm) var(--r-sm) 0 0}
.entry-head .entry-k{font-family:var(--num);font-size:var(--step-1);letter-spacing:var(--tracking-caps);
  color:var(--brass-leaf-2)}
.entry-head .entry-t{margin:0;font-family:var(--sans);font-size:var(--step1);font-weight:700;
  color:var(--ink-inv);min-width:0}
.entry-head .entry-voucher{margin-left:auto;font-family:var(--num);font-size:var(--step-1);
  color:var(--ink-inv-2);white-space:nowrap}
.entry-scroll{overflow-x:auto}
.entry-scroll::-webkit-scrollbar{height:6px}
.entry-scroll::-webkit-scrollbar-thumb{background:var(--rule-strong);border-radius:var(--r-pill)}
table.entry-table{width:100%;min-width:520px;border-collapse:collapse;font-size:var(--step0)}
table.entry-table caption{caption-side:top;text-align:left;padding:var(--sp-3) var(--sp-5) 0;
  font-size:var(--step-1);color:var(--ink-2)}
table.entry-table th{background:var(--paper-2);color:var(--navy);font-family:var(--sans);
  font-size:var(--step-1);font-weight:700;text-align:left;padding:9px var(--sp-4);
  border-bottom:var(--hair) solid var(--rule-strong);white-space:nowrap}
table.entry-table td{padding:9px var(--sp-4);border-bottom:var(--hair) solid var(--rule);
  vertical-align:top;color:var(--ink);overflow-wrap:anywhere}
table.entry-table td.summary{color:var(--ink-2);width:22%}
table.entry-table td.subject{font-weight:600}
table.entry-table td.subject.sub{padding-left:calc(var(--sp-4) + 22px);font-weight:400;color:var(--ink-2)}
table.entry-table th.d,table.entry-table td.d,
table.entry-table th.c,table.entry-table td.c{text-align:right;font-family:var(--num);
  font-variant-numeric:tabular-nums;white-space:nowrap}
table.entry-table th.d,table.entry-table td.d{color:var(--ink)}
table.entry-table th.c,table.entry-table td.c{color:var(--ink)}
table.entry-table td.dash{color:var(--ink-3-strong);text-align:right;font-family:var(--num)}
table.entry-table tr.total td{border-top:var(--bw-rule) double var(--rule-strong);
  border-bottom:0;background:var(--brass-soft);font-weight:700;color:var(--navy);
  font-family:var(--num);font-variant-numeric:tabular-nums}
table.entry-table tr.total td.label{font-family:var(--sans);text-align:right;letter-spacing:.04em}
.entry-foot{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center;
  padding:var(--sp-3) var(--sp-5) var(--sp-4);border-top:var(--hair) dashed var(--rule-strong)}
.entry-foot .entry-note{margin:0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2);
  min-width:0;overflow-wrap:anywhere}

/* ==========================================================================
   13 · 报表表（一级不缩进 / 二级缩进 36px / 负数括号 / 合计双线）
   ========================================================================== */
.stmt{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1)}
.stmt-head{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);align-items:baseline;
  padding:var(--sp-3) var(--sp-5);border-bottom:var(--hair) solid var(--rule-strong);
  background:var(--paper-2);border-radius:var(--r-sm) var(--r-sm) 0 0}
.stmt-head h3{margin:0;font-family:var(--sans);font-size:var(--step1);font-weight:700;color:var(--navy)}
.stmt-head .stmt-unit{margin-left:auto;font-size:var(--step-1);color:var(--ink-2)}
.stmt-scroll{overflow-x:auto}
.stmt-scroll::-webkit-scrollbar{height:6px}
.stmt-scroll::-webkit-scrollbar-thumb{background:var(--rule-strong);border-radius:var(--r-pill)}
table.stmt-table{width:100%;min-width:560px;border-collapse:collapse;font-size:var(--step0)}
table.stmt-table th{background:var(--paper-2);color:var(--navy);font-family:var(--sans);
  font-size:var(--step-1);font-weight:700;padding:8px var(--sp-4);
  border-bottom:var(--hair) solid var(--rule-strong);text-align:right;white-space:nowrap}
table.stmt-table th:first-child{text-align:left}
table.stmt-table td{padding:7px var(--sp-4);border-bottom:var(--hair) solid var(--rule);
  text-align:right;font-family:var(--num);font-variant-numeric:tabular-nums;
  color:var(--ink);white-space:nowrap;background:var(--paper)}
table.stmt-table td:first-child{text-align:left;font-family:var(--sans);white-space:normal;
  overflow-wrap:anywhere;color:var(--ink)}
table.stmt-table tbody tr:nth-child(even) td{background:var(--paper-3)}
table.stmt-table tr.lv1 td:first-child{font-weight:700;color:var(--ink)}
table.stmt-table tr.lv2 td:first-child{padding-left:calc(var(--sp-4) + 26px);color:var(--ink-2);
  font-weight:400}
table.stmt-table tr.lv3 td:first-child{padding-left:calc(var(--sp-4) + 46px);color:var(--ink-2);
  font-weight:400}
table.stmt-table tr.key td{color:var(--navy);font-weight:700}
table.stmt-table tr.total td{border-top:var(--bw-rule) double var(--rule-strong);
  background:var(--brass-soft);font-weight:700;color:var(--navy);border-bottom:0}
table.stmt-table tr.total td:first-child{letter-spacing:.04em}
table.stmt-table td.neg{color:var(--alarm)}
.stmt-foot{margin:0;padding:var(--sp-3) var(--sp-5) var(--sp-4);font-size:var(--step-1);
  color:var(--ink-2);line-height:1.7;border-top:var(--hair) dashed var(--rule-strong);
  overflow-wrap:anywhere}

/* ==========================================================================
   14 · 勾稽徽章（结论必须由真实求和得出）
   ========================================================================== */
.tie{display:inline-flex;align-items:center;gap:var(--sp-1);font-family:var(--sans);
  font-size:var(--step-1);font-weight:700;padding:3px 11px;border-radius:var(--r-pill);
  border:var(--hair) solid currentColor;white-space:nowrap;line-height:1.5}
.tie::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:0 0 auto}
.tie.balanced{color:var(--ledger-deep);background:var(--ledger-soft)}
.tie.broken{color:var(--alarm-deep);background:var(--alarm-soft)}
.tie.pending{color:var(--ink-2);background:var(--paper-2)}
.tie-row{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center;margin:var(--sp-3) 0 var(--sp-4)}
.tie-row .tie-label{font-size:var(--step-1);color:var(--ink-2)}
.tie.pulse{animation:tie-pulse var(--dur-4) var(--ease-out) 1}
@keyframes tie-pulse{0%{box-shadow:0 0 0 0 var(--brass-line)}100%{box-shadow:0 0 0 12px transparent}}

/* ==========================================================================
   15 · 指标卡（数字滚动仅允许用于此处）
   ========================================================================== */
.metrics{margin:var(--sp-5) 0;display:grid;gap:var(--sp-4);
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.metric{min-width:0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-4) var(--sp-4);box-shadow:var(--shadow-1);
  border-bottom:var(--bw-edge) solid var(--navy-line)}
.metric i{display:block;font-style:normal;font-family:var(--sans);font-size:var(--step-1);
  color:var(--ink-2);margin-bottom:var(--sp-2);letter-spacing:.02em;overflow-wrap:anywhere}
.metric b{display:block;font-family:var(--num);font-variant-numeric:tabular-nums;
  font-size:var(--step4);line-height:1.1;color:var(--navy);font-weight:700;overflow-wrap:anywhere}
.metric b small{font-family:var(--sans);font-size:var(--step-1);font-weight:600;
  color:var(--ink-2);margin-left:4px}
.metric span.hint{display:block;margin-top:var(--sp-2);font-size:var(--step-1);line-height:1.6;
  color:var(--ink-2);overflow-wrap:anywhere}
.metric.up{border-bottom-color:var(--ledger)}
.metric.up b{color:var(--ledger-deep)}
.metric.down{border-bottom-color:var(--alarm)}
.metric.down b{color:var(--alarm-deep)}
.metric.warn{border-bottom-color:var(--brass)}
.metric.warn b{color:var(--brass-deep)}

/* ==========================================================================
   16 · 选项卡（对照式：面板永不隐藏，保证零 JS 与打印完整）
   ========================================================================== */
.tabs{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);padding:var(--sp-4) var(--sp-5) var(--sp-5)}
.tabbar{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0 0 var(--sp-4);
  padding-bottom:var(--sp-3);border-bottom:var(--hair) solid var(--rule)}
.tabbar a{font-family:var(--sans);font-size:var(--step-1);font-weight:700;color:var(--navy);
  background:var(--paper);border:var(--hair) solid var(--rule);border-bottom:var(--bw-rule) solid transparent;
  border-radius:var(--r-xs) var(--r-xs) 0 0;padding:5px 13px;text-decoration:none;
  transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}
.tabbar a:hover{background:var(--navy-soft);border-bottom-color:var(--navy-2)}
.tabbar a[aria-current="true"]{background:var(--navy);border-color:var(--navy);color:var(--ink-inv)}
.tab-panels{display:grid;gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.tab-panel{min-width:0;scroll-margin-top:calc(var(--topbar-h) + var(--sp-5))}
.tab-panel>.tab-title{margin:0 0 var(--sp-3);font-family:var(--sans);font-size:var(--step1);
  font-weight:700;color:var(--navy);display:flex;align-items:center;gap:var(--sp-2)}
.tab-panel>.tab-title::before{content:"";width:10px;height:10px;background:var(--brass);
  border-radius:1px;flex:0 0 auto}

/* ==========================================================================
   17 · 案例
   ========================================================================== */
.case-card{margin:var(--sp-6) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);overflow:visible}
.case-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3);
  padding:var(--sp-4) var(--sp-5);background:var(--paper-2);
  border-bottom:var(--hair) solid var(--rule-strong);border-radius:var(--r-sm) var(--r-sm) 0 0}
.case-head .case-k{font-family:var(--num);font-size:var(--step-1);font-weight:700;
  letter-spacing:var(--tracking-caps);color:var(--alarm)}
.case-head h3{margin:0;font-family:var(--sans);font-size:var(--step2);font-weight:700;
  color:var(--navy);min-width:0;overflow-wrap:anywhere}
.case-body{padding:var(--sp-4) var(--sp-5) var(--sp-5)}
.case-body>*:first-child{margin-top:0}
.case-q{margin:var(--sp-4) 0 0;padding:var(--sp-4) var(--sp-5);background:var(--navy-soft);
  border-radius:var(--r-sm);border-left:var(--bw-edge-lg) solid var(--navy)}
.case-q h4{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step1);
  font-weight:700;color:var(--navy)}
.case-q ol{margin:0;padding-left:1.4em;font-size:var(--step0);line-height:1.75;color:var(--ink)}
.case-q li{margin-bottom:var(--sp-2)}
.case-q li:last-child{margin-bottom:0}

/* ==========================================================================
   18 · 自测（单选 / 判断 / 简答）
   ========================================================================== */
.quiz-set{margin:var(--sp-6) 0}
.quiz-set-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3);
  margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);
  border-bottom:var(--bw-rule) double var(--rule-strong)}
.quiz-set-head h3{margin:0;font-family:var(--sans);font-size:var(--step2);font-weight:700;
  color:var(--navy)}
.quiz-set-head .quiz-score{margin-left:auto;font-family:var(--num);font-size:var(--step-1);
  color:var(--ink-2)}
.quiz{margin:0 0 var(--sp-5);background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-4) var(--sp-5) var(--sp-4);box-shadow:var(--shadow-1);
  border-left:var(--bw-edge-lg) solid var(--navy-line)}
.quiz-q{display:flex;gap:var(--sp-3);margin:0 0 var(--sp-3);font-size:var(--step0);
  line-height:1.75;color:var(--ink);font-weight:600}
.quiz-q .q-no{font-family:var(--num);font-weight:700;color:var(--brass-deep);flex:0 0 auto;min-width:2.2em}
.quiz-q .q-type{font-family:var(--sans);font-size:var(--step-1);font-weight:700;
  color:var(--navy);background:var(--navy-soft);border-radius:var(--r-xs);padding:1px 7px;
  flex:0 0 auto;align-self:flex-start}
.opts{display:grid;gap:var(--sp-2);margin:0 0 var(--sp-3)}
.opt{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);align-items:start;
  min-width:0;padding:var(--sp-3) var(--sp-4);background:var(--paper);
  border:var(--hair) solid var(--rule);border-radius:var(--r-sm);cursor:pointer;
  font-size:var(--step0);line-height:1.7;color:var(--ink);
  transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}
.opt:hover{background:var(--navy-soft);border-color:var(--navy-line)}
.opt input{position:absolute;opacity:0;width:1px;height:1px}
.opt .opt-mark{width:22px;height:22px;flex:0 0 auto;display:grid;place-items:center;
  border:var(--hair) solid var(--rule-strong);border-radius:50%;background:var(--paper-3);
  font-family:var(--num);font-size:var(--step-1);font-weight:700;color:var(--ink-2)}
.opt .opt-text{min-width:0;overflow-wrap:anywhere}
.opt:hover .opt-mark{border-color:var(--navy-2);color:var(--navy)}
.opt[data-state="checked"]{background:var(--brass-soft);border-color:var(--brass-line)}
.opt[data-state="checked"] .opt-mark{background:var(--brass-deep);border-color:var(--brass-deep);color:var(--ink-inv)}
.opt[data-state="right"]{background:var(--ledger-soft);border-color:var(--ledger)}
.opt[data-state="right"] .opt-mark{background:var(--ledger);border-color:var(--ledger);color:var(--ink-inv)}
.opt[data-state="wrong"]{background:var(--alarm-soft);border-color:var(--alarm)}
.opt[data-state="wrong"] .opt-mark{background:var(--alarm);border-color:var(--alarm);color:var(--ink-inv)}
.opt input:focus-visible+.opt-mark{outline:2px solid var(--navy-2);outline-offset:2px}
.quiz-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-2)}
.quiz-verdict{font-size:var(--step0);font-weight:700;min-width:0}
.quiz-verdict::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;
  background:currentColor;margin-right:var(--sp-2)}
.quiz-verdict.ok{color:var(--ledger-deep)}
.quiz-verdict.no{color:var(--alarm-deep)}
.key{margin-top:var(--sp-3);border-top:var(--hair) dashed var(--rule-strong);padding-top:var(--sp-3)}
.key>summary{cursor:pointer;list-style:none;font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;color:var(--navy);display:inline-flex;align-items:center;gap:var(--sp-2);
  padding:4px 12px;background:var(--navy-soft);border-radius:var(--r-pill)}
.key>summary::-webkit-details-marker{display:none}
.key>summary::before{content:"✔";font-family:var(--num);color:var(--ledger-deep)}
.key>summary::after{content:"▾";font-size:var(--step-1);color:var(--ink-2)}
.key[open]>summary::after{content:"▴"}
.key-body{margin-top:var(--sp-3);background:var(--paper-2);border-radius:var(--r-sm);
  padding:var(--sp-4) var(--sp-4);font-size:var(--step0);line-height:var(--lh-body);color:var(--ink)}
.key-body p{margin:0 0 var(--sp-2)}
.key-body p:last-child{margin-bottom:0}
.key-body .key-t{font-family:var(--sans);font-weight:700;color:var(--navy);margin-right:var(--sp-2)}
.sa-points{margin:var(--sp-2) 0 0;padding-left:1.35em;font-size:var(--step0);line-height:1.8;color:var(--ink)}
.sa-points li{margin-bottom:var(--sp-1)}
.sa-ref{margin:var(--sp-3) 0 0;font-size:var(--step-1);color:var(--ink-2)}
.tf-opts{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.tf-opts .opt{grid-template-columns:auto auto;padding:var(--sp-3) var(--sp-5)}

/* ==========================================================================
   19 · 延伸阅读
   ========================================================================== */
.reading-list{margin:var(--sp-6) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);padding:var(--sp-5)}
.reading-list h3{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step2);
  font-weight:700;color:var(--navy);display:flex;align-items:center;gap:var(--sp-3)}
.reading-list h3::after{content:"";flex:1;height:var(--hair);background:var(--rule-strong)}
.reading-list ul{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-4)}
.reading-list li{min-width:0;padding-left:var(--sp-4);border-left:var(--bw-edge) solid var(--brass-line)}
.rd-title{display:block;font-size:var(--step1);font-weight:700;color:var(--navy);
  overflow-wrap:anywhere}
.rd-title a{color:var(--navy-2)}
.rd-src{display:block;margin-top:2px;font-size:var(--step-1);color:var(--ink-2)}
.rd-note{display:block;margin-top:var(--sp-1);font-size:var(--step0);line-height:1.75;
  color:var(--ink);font-family:var(--serif);overflow-wrap:anywhere}
.ext-mark{display:inline-block;margin-left:var(--sp-2);font-family:var(--num);font-size:var(--step-1);
  color:var(--ink-2);border:var(--hair) solid var(--rule-strong);border-radius:var(--r-xs);padding:0 4px}

/* ==========================================================================
   20 · 页边注
   ========================================================================== */
.side-note{position:relative;margin:var(--sp-5) 0;padding:var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-5);
  background:var(--paper-2);border-radius:0 var(--r-sm) var(--r-sm) 0;
  border-left:var(--bw-edge) solid var(--env-margin);
  font-size:var(--step0);line-height:1.75;color:var(--ink);font-family:var(--serif)}
.side-note::before{content:"注";position:absolute;left:-1px;top:calc(-1 * var(--sp-4));
  font-family:var(--num);font-size:var(--step-1);font-weight:700;color:var(--env-margin)}
.side-note.brass{border-left-color:var(--brass)}
.side-note.brass::before{color:var(--brass-deep)}
.side-note.navy{border-left-color:var(--navy)}
.side-note.navy::before{color:var(--navy)}

/* ==========================================================================
   21 · 4D 挂载舱外壳（.fx4d 内部由 fx-4d-lab 负责；外壳归本文件）
   ========================================================================== */
.fx4d-block{margin:var(--sp-7) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);overflow:visible}
.fx4d-block-head{padding:var(--sp-4) var(--sp-5) var(--sp-3);border-bottom:var(--hair) solid var(--rule)}
.fx4d-kicker{margin:0 0 var(--sp-1);font-family:var(--num);font-size:var(--step-1);
  font-weight:700;letter-spacing:var(--tracking-caps);color:var(--brass-deep)}
.fx4d-block-head h3{margin:0;font-family:var(--sans);font-size:var(--step2);font-weight:700;
  color:var(--navy);overflow-wrap:anywhere}
.fx4d-brief{margin:var(--sp-2) 0 0;font-size:var(--step0);line-height:1.75;color:var(--ink);
  font-family:var(--serif);max-width:var(--measure)}
.fx4d{padding:var(--sp-4) var(--sp-5);background:var(--hq-bg)}
.fx4d-stage{position:relative;aspect-ratio:16/9;max-height:min(58vh,560px);
  border-radius:var(--r-sm);
  background:var(--cover-stage);background-image:
    repeating-linear-gradient(to right,var(--cover-stage-line) 0 1px,transparent 1px 40px),
    repeating-linear-gradient(to bottom,var(--cover-stage-line) 0 1px,transparent 1px 40px);
  box-shadow:var(--shadow-stage);overflow:visible}
/* 封面画布：满铺英雄区（提高特异性，避免被 fx.css 的 16/9 自适应规则改动） */
.cover-stage .fx4d .fx4d-canvas{width:100%;height:100%;aspect-ratio:auto;max-height:none;inset:0}
.fx4d-canvas{display:block;width:100%;height:100%;position:absolute;inset:0}
/* 舱内常驻静态兜底：引擎就绪时隐去（?fx=off / 失败时完整可见） */
.fx4d-static{position:absolute;inset:0;display:grid;align-content:center;justify-items:center;
  gap:var(--sp-3);padding:var(--sp-5);text-align:center;pointer-events:none;
  transition:opacity var(--dur-3) var(--ease)}
.fx4d-static .fxs{width:min(78%,460px);height:auto}
.fx4d-static p{margin:0;max-width:46ch;font-size:var(--step-1);line-height:1.75;color:var(--hq-ink-2)}
.fxs-line{fill:none;stroke:var(--hq-ink-2);stroke-width:1.6}
.fxs-fill{fill:var(--hq-brand-soft);stroke:var(--hq-brand);stroke-width:1.4}
.fxs-brass{fill:none;stroke:var(--hq-brass);stroke-width:2;stroke-linecap:round}
.fxs-t{fill:var(--hq-ink);font-family:var(--sans);font-size:13px}
.fxs-t-s{fill:var(--hq-ink-2);font-family:var(--num);font-size:12px}
.fx4d:has(.fx4d-canvas[data-fx4d-ready]) .fx4d-static{opacity:0}
.fx4d:has(.fx4d-canvas[data-fx4d-error]) .fx4d-static,
.fx4d:has(.fx4d-canvas[data-fx4d-fallback]) .fx4d-static{opacity:1}
.fx4d-hud{position:absolute;left:var(--sp-3);bottom:var(--sp-3);right:var(--sp-3);
  display:flex;flex-wrap:wrap;gap:var(--sp-2);pointer-events:none}
.fx4d-hud>*{pointer-events:auto}
.fx4d-badge{font-family:var(--num);font-size:var(--step-1);letter-spacing:.06em;
  color:var(--hq-ink-2);background:var(--hq-panel);border:var(--hair) solid var(--hq-line);
  border-radius:var(--r-pill);padding:2px 10px}
.fx4d-fallback{margin:var(--sp-3) 0 0;font-size:var(--step-1);line-height:1.7;color:var(--hq-ink-2)}
.fx4d-foot{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-5);align-items:center;
  padding:var(--sp-3) var(--sp-5) var(--sp-4);border-top:var(--hair) solid var(--rule)}
.fx4d-foot p{margin:0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2);min-width:0}
.fx4d-legend{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-left:auto}
.fx4d-legend span{font-family:var(--num);font-size:var(--step-1);color:var(--ink-2)}

/* ==========================================================================
   21b · 交互组件舱 .widget（源稿内嵌交互模块的离线容器，契约 v1.1）
   ========================================================================== */
.widget{position:relative;margin:var(--sp-6) 0;background:var(--paper-3);
  border:var(--hair) solid var(--navy-line);border-radius:var(--r-sm);
  box-shadow:var(--shadow-2);padding:0}
.widget::before{content:"";position:absolute;inset:4px;border:var(--hair) solid var(--brass-line);
  border-radius:var(--r-xs);pointer-events:none}
.widget-head{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);align-items:baseline;
  padding:var(--sp-4) var(--sp-5) var(--sp-3);border-bottom:var(--hair) solid var(--rule)}
.widget-kicker{font-family:var(--num);font-size:var(--step-1);font-weight:700;
  letter-spacing:var(--tracking-caps);color:var(--navy)}
.widget-kind{font-family:var(--sans);font-size:var(--step-1);font-weight:700;
  color:var(--brass-deep);background:var(--brass-soft);border:var(--hair) solid var(--brass-line);
  border-radius:var(--r-pill);padding:1px 9px}
.widget-title{margin:0;font-family:var(--sans);font-size:var(--step2);font-weight:700;
  color:var(--navy);min-width:0;overflow-wrap:anywhere}
.widget-brief{flex:1 0 100%;margin:0;font-family:var(--serif);font-size:var(--step0);
  line-height:1.75;color:var(--ink-2);overflow-wrap:anywhere}
.widget-body{padding:var(--sp-4) var(--sp-5) var(--sp-5)}
.widget-body>*{max-width:var(--measure)}
.widget-body>:is(.tbl-wrap,.entry-card,.stmt,.kmap-figure,.metrics,.tabs,.flow,.glossary,
  .reading-list,.quiz-set,.case-card,.widget,.qa-block){max-width:none}
.widget-body>*:first-child{margin-top:0}
.widget-body>*:last-child{margin-bottom:0}
.widget-foot{display:flex;gap:var(--sp-3);align-items:baseline;padding:var(--sp-3) var(--sp-5) var(--sp-4);
  border-top:var(--hair) dashed var(--rule-strong);font-size:var(--step-1);line-height:1.7;
  color:var(--ink-2);overflow-wrap:anywhere}
.widget-foot>span::before{content:"舱";font-family:var(--num);font-weight:700;
  color:var(--brass-deep);border:var(--hair) solid var(--brass-line);border-radius:var(--r-xs);
  padding:0 4px;margin-right:var(--sp-2)}

/* ==========================================================================
   21c · 问答 / 答案对照 .qa-block（契约 v1.1）
   ========================================================================== */
.qa-block{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);padding:var(--sp-5)}
.qa-block>h3{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step2);
  font-weight:700;color:var(--navy);display:flex;align-items:center;gap:var(--sp-3)}
.qa-block>h3::after{content:"";flex:1;height:var(--hair);background:var(--rule-strong)}
.qa-lead{margin:0 0 var(--sp-4);font-family:var(--serif);font-size:var(--step0);
  line-height:var(--lh-body);color:var(--ink)}
.qa-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-4)}
.qa-item{min-width:0;padding-left:var(--sp-4);border-left:var(--bw-edge) solid var(--navy-line)}
.qa-q{display:flex;gap:var(--sp-3);margin:0 0 var(--sp-2);font-size:var(--step0);
  line-height:1.75;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.qa-q .qa-no{font-family:var(--num);font-weight:700;color:var(--brass-deep);flex:0 0 auto;min-width:1.6em}
.qa-item .key{margin-top:0;border-top:0;padding-top:0}
/* 形态②：q === a → 单栏折叠的「原文逐句留档」 */
.qa-item.verbatim{border-left-color:var(--brass-line)}
.qa-item.verbatim .key>summary{background:var(--brass-soft);color:var(--brass-deep)}
.qa-item.verbatim .key>summary::before{content:"¶";color:var(--brass-deep)}
.qa-item.verbatim .key-body{background:var(--paper-2);font-family:var(--serif)}
.qa-list .qa-item.verbatim+.qa-item.verbatim{margin-top:calc(-1 * var(--sp-2))}

/* 21d · 源稿逐句留档 .qa-archive（契约 v1.5）
   --------------------------------------------------------------------------
   它是**编纂留档、不是教学正文**：内容完整性门禁（源稿句级覆盖率 ≥95%）靠它兜住，
   所以数据必须留在成品里；但它不得占版面。
   做法：整块折叠成一行摘要（原先会摊出 200+ 行可见条目，约占整页三分之一），
        展开后限高 22rem 并内部滚动。默认透明底、虚线框，视觉上明显弱于正文组件。 */
.qa-block.qa-archive{margin:var(--sp-4) 0;padding:0;background:transparent;
  border:0;box-shadow:none}
.qa-arc{border:var(--hair) dashed var(--rule-strong);border-radius:var(--r-sm);
  background:var(--paper-2)}
.qa-arc>summary{display:flex;flex-wrap:wrap;align-items:baseline;
  gap:var(--sp-1) var(--sp-3);cursor:pointer;padding:var(--sp-2) var(--sp-3);
  font-size:var(--step-1);line-height:1.7;color:var(--ink-2);list-style:none}
.qa-arc>summary::-webkit-details-marker{display:none}
.qa-arc>summary::marker{content:""}
.qa-arc>summary::before{content:"▸";font-family:var(--num);color:var(--brass-deep)}
.qa-arc[open]>summary::before{content:"▾"}
.qa-arc>summary:hover{background:var(--brass-soft)}
.qa-arc-k{font-family:var(--sans);font-weight:700;color:var(--brass-deep)}
.qa-arc-t{font-family:var(--serif);color:var(--ink)}
.qa-arc-n{font-family:var(--num);color:var(--ink-2)}
.qa-arc-h{flex:1 1 14rem;min-width:0;color:var(--ink-3)}
.qa-arc-body{max-height:22rem;overflow:auto;padding:0 var(--sp-3) var(--sp-3);
  border-top:var(--hair) solid var(--rule)}
/* 序号由 <ol> 的 marker 生成，**不放进文本流**：
   留档句里出现「…2026 年 10 月」，一旦后面紧跟一个手写的序号（如 49），
   纯文本就会连成「2026 年 10 月 49」，被时效性检查误判为未来日期。
   序号属于列表结构、不属于被留档的原句，因此交给 marker 渲染。 */
.qa-arc-list{margin:var(--sp-3) 0 0;padding-left:2.6em;list-style:decimal;
  font-family:var(--serif);font-size:var(--step-1);line-height:1.7;color:var(--ink-2)}
.qa-arc-list>li{margin-bottom:var(--sp-1);overflow-wrap:anywhere}
.qa-arc-list>li::marker{font-family:var(--num);color:var(--ink-3)}

/* ==========================================================================
   22 · 上下章导航
   ========================================================================== */
.pager{margin:var(--sp-9) 0 0;display:grid;gap:var(--sp-4);
  grid-template-columns:repeat(2,minmax(0,1fr))}
.pager-link{display:block;min-width:0;text-decoration:none;background:var(--paper-3);
  border:var(--hair) solid var(--rule);border-radius:var(--r-sm);padding:var(--sp-4) var(--sp-5);
  box-shadow:var(--shadow-1);transition:border-color var(--dur-1) var(--ease),
  box-shadow var(--dur-2) var(--ease),transform var(--dur-1) var(--ease)}
.pager-link:hover{border-color:var(--navy-2);box-shadow:var(--shadow-2);transform:translateY(-2px)}
.pager-link .pk{display:block;font-family:var(--num);font-size:var(--step-1);
  letter-spacing:var(--tracking-caps);color:var(--brass-deep);margin-bottom:var(--sp-1)}
.pager-link .pt{display:block;font-family:var(--sans);font-size:var(--step1);font-weight:700;
  color:var(--navy);line-height:1.45;overflow-wrap:anywhere}
.pager-link.next{text-align:right}
.pager-link.next .pk{color:var(--navy)}
.pager-link.disabled{opacity:.55;pointer-events:none;background:var(--paper-2)}
.pager-link.disabled .pt{color:var(--ink-2)}
.pager-home{grid-column:1/-1;text-align:center}

/* ==========================================================================
   23 · 页脚与 AIGC 标识（显式可见标识，GB 45438-2025）
   ========================================================================== */
.dtb-foot{margin-top:var(--sp-8);padding:var(--sp-5) 0 var(--sp-7);
  border-top:var(--bw-rule) double var(--rule-strong);font-size:var(--step-1);
  line-height:1.75;color:var(--ink-2)}
.dtb-foot-inner{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);align-items:baseline}
.dtb-foot .aigc-explicit{display:inline-flex;align-items:center;gap:var(--sp-2);
  color:var(--ink);font-weight:600}
.dtb-foot .aigc-explicit::before{content:"AI";font-family:var(--num);font-size:var(--step-1);
  font-weight:700;color:var(--ink-inv);background:var(--navy);border-radius:var(--r-xs);padding:1px 5px}
.dtb-foot .foot-sep{color:var(--rule-strong)}
.dtb-foot .foot-page{margin-left:auto;font-family:var(--num);color:var(--ink-2)}

/* ==========================================================================
   25 · 通用内联 SVG 图元（纸面版式；配色一律令牌）
   ========================================================================== */
.figure-block{margin:var(--sp-5) 0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);box-shadow:var(--shadow-1);padding:var(--sp-5)}
.figure-block figcaption{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step-1);
  font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:var(--sp-3)}
.figure-block figcaption::before{content:"";width:14px;height:14px;flex:0 0 auto;
  border:var(--bw-rule) solid var(--brass);border-radius:var(--r-xs)}
.fig-svg{display:block;width:100%;height:auto}
.fs-line{fill:none;stroke:var(--rule-strong);stroke-width:1.4}
.fs-ink{fill:none;stroke:var(--navy);stroke-width:1.6}
.fs-fill{fill:var(--paper);stroke:var(--navy-line);stroke-width:1.2}
.fs-fill-2{fill:var(--navy-soft);stroke:var(--navy);stroke-width:1.4}
.fs-navy{fill:var(--navy);stroke:var(--navy);stroke-width:1.4}
.fs-gold{fill:var(--brass-leaf);stroke:var(--brass-leaf-2);stroke-width:1}
.fs-t-n{fill:var(--navy);font-family:var(--num);font-size:12px;font-weight:700}
.fs-brass{fill:none;stroke:var(--brass);stroke-width:2;stroke-linecap:round}
.fs-brass-fill{fill:var(--brass-soft);stroke:var(--brass-line);stroke-width:1.2}
.fs-ledger{fill:var(--ledger-soft);stroke:var(--ledger-line);stroke-width:1.2}
.fs-t{fill:var(--ink);font-family:var(--sans);font-size:14px;font-weight:600}
.fs-t-b{fill:var(--ink-inv);font-family:var(--sans);font-size:14px;font-weight:600}
.fs-t-s{fill:var(--ink-2);font-family:var(--num);font-size:12px}
/* path 图：节点内文字对比度守卫 —— 实底深蓝 + 反白字（10.6:1），序号用金底深蓝字 */
.fs-arrow{fill:none;stroke:var(--brass);stroke-width:1.8;marker-end:none}
.cover-body{margin:0;background:var(--cover-bg);color:var(--cover-ink);
  font-family:var(--sans);line-height:1.7;-webkit-font-smoothing:antialiased}
.cover{position:relative;min-height:100vh;min-height:100svh;overflow-x:clip;
  display:flex;flex-direction:column;
  background:var(--cover-bg);background-image:
    radial-gradient(120% 90% at 78% 12%,var(--cover-bg-2) 0%,transparent 58%),
    radial-gradient(90% 80% at 8% 96%,var(--cover-bg-2) 0%,transparent 52%),
    linear-gradient(180deg,var(--cover-bg) 0%,var(--cover-bg-3) 100%)}
.cover::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:repeating-linear-gradient(90deg,var(--cover-cloth) 0 1px,transparent 1px 3px),
    repeating-linear-gradient(0deg,var(--cover-cloth-2) 0 1px,transparent 1px 4px);
  opacity:.9}
.cover::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 100% at 50% 50%,transparent 55%,var(--cover-bg-3) 100%)}
.cover-inner{position:relative;z-index:var(--z-base);flex:1;min-height:0;
  width:100%;max-width:var(--shell-max);margin:0 auto;
  padding:clamp(20px,4vw,44px) var(--gutter) clamp(16px,2.4vw,28px);
  display:grid;gap:clamp(20px,3.4vw,44px);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  align-items:center;align-content:center}
.cover-foot{position:relative;z-index:var(--z-base);width:100%;max-width:var(--shell-max);
  margin:0 auto;padding:0 var(--gutter) clamp(18px,2.6vw,32px);
  display:flex;flex-wrap:wrap;gap:var(--sp-4) var(--sp-7);align-items:center;
  justify-content:center}
.cover-stage-col{display:grid;gap:var(--sp-3);align-content:center;min-width:0}
.cover-plate{position:relative;border:var(--bw-rule) double var(--cover-rule);
  padding:clamp(22px,3.6vw,46px) clamp(20px,3.2vw,42px);
  background:linear-gradient(180deg,var(--cover-cloth) 0%,transparent 100%)}
.cover-plate::before,.cover-plate::after{content:"";position:absolute;width:16px;height:16px;
  border:var(--bw-rule) solid var(--brass-leaf);pointer-events:none}
.cover-plate::before{left:-2px;top:-2px;border-right:0;border-bottom:0}
.cover-plate::after{right:-2px;bottom:-2px;border-left:0;border-top:0}
.cover-series{margin:0;font-size:var(--step-1);font-weight:600;letter-spacing:var(--tracking-caps);
  color:var(--cover-ink-2)}
.cover-rule{height:var(--bw-rule);margin:var(--sp-4) 0;border:0;
  background:linear-gradient(90deg,var(--brass-leaf) 0 84px,var(--cover-rule) 84px 100%)}
.cover-title{margin:0;font-family:var(--serif);font-weight:700;color:var(--cover-ink);
  font-size:var(--step6);line-height:1.06;letter-spacing:.08em}
.cover-title .cv-char{display:inline-block}
.cover-sub{margin:var(--sp-4) 0 0;font-size:clamp(1rem,1.5vw,1.25rem);color:var(--cover-ink-2);
  letter-spacing:.16em}
.cover-en{margin:var(--sp-3) 0 0;font-family:var(--num);font-size:var(--step-1);
  letter-spacing:.22em;color:var(--brass-leaf);text-transform:uppercase}
/* 封面「智慧课程」图形标记（三件套汇聚结构，替代原「教材+课程+平台 一体化」一行字） */
.cover-mark{margin:var(--sp-6) 0 0;max-width:372px}
.cover-mark svg{display:block;width:100%;height:auto}
.cover-edition{margin:var(--sp-3) 0 0;font-size:var(--step-1);color:var(--cover-ink-3);
  letter-spacing:.06em}
.cover-edition b{color:var(--brass-leaf-2);font-weight:700}
.cover-byline{margin-top:var(--sp-6);display:grid;gap:var(--sp-2);font-size:var(--step-1);
  color:var(--cover-ink-2)}
.cover-byline b{color:var(--cover-ink);font-size:var(--step0);font-weight:600;letter-spacing:.06em}
.cover-press{margin-top:var(--sp-6);display:flex;align-items:center;gap:var(--sp-3);
  font-size:var(--step0);color:var(--cover-ink-2);letter-spacing:.04em}
.cover-press .press-mark{width:26px;height:26px;flex:0 0 auto;border:var(--hair) solid var(--cover-rule);
  display:grid;place-items:center;font-family:var(--serif);font-size:var(--step-1);color:var(--brass-leaf-2)}
.cover-stage{position:relative;min-height:min(58vh,520px);border-radius:var(--r-sm);
  background:var(--cover-stage);background-image:
    repeating-linear-gradient(to right,var(--cover-stage-line) 0 1px,transparent 1px 44px),
    repeating-linear-gradient(to bottom,var(--cover-stage-line) 0 1px,transparent 1px 44px);
  box-shadow:var(--shadow-stage);overflow:visible}
.cover-engraving{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;
  transition:opacity var(--dur-4) var(--ease)}
/* 封面静态主视觉（原创矢量）构件 */
.cv-grid line{stroke:var(--cover-stage-line);stroke-width:1;fill:none}
.cv-arc circle{stroke:var(--cover-stage-line);stroke-width:1.5;fill:none}
.cv-tick line{stroke:var(--cover-rule-2);stroke-width:1;fill:none}
.cv-beam,.cv-col{fill:none;stroke:var(--brass-leaf);stroke-width:3;stroke-linecap:round}
.cv-pan{fill:none;stroke:var(--brass-leaf-2);stroke-width:2}
.cv-rope{fill:none;stroke:var(--cover-rule);stroke-width:1.2}
.cv-taco{fill:none;stroke:var(--brass-leaf);stroke-width:2}
.cv-t{fill:var(--cover-ink);font-family:var(--serif);font-size:21px;letter-spacing:.14em}
.cv-t-s{fill:var(--cover-ink-3);font-family:var(--num);font-size:12px;letter-spacing:.1em}
.cv-eq{fill:var(--brass-leaf-2);font-family:var(--serif);font-size:24px;font-weight:700;letter-spacing:.16em}
.cv-seal-t{fill:var(--cover-ink);font-family:var(--serif);font-size:30px;font-weight:700}
html[data-fx="off"] .cover-engraving{opacity:1}
html[data-fx="off"] .fx4d-canvas{display:none}
/* 与 fx-4d-lab 的分工约定：canvas 只画图形与刻度，文字标注一律由 DOM/SVG 承载。
   引擎就绪时给 canvas 打 data-fx4d-ready，静态铜版画自动降为背景；失败/降级时保持完整。 */
.cover-stage:has(.fx4d-canvas[data-fx4d-ready]) .cover-engraving{opacity:.22}
.cover-stage:has(.fx4d-canvas[data-fx4d-error]) .cover-engraving,
.cover-stage:has(.fx4d-canvas[data-fx4d-fallback]) .cover-engraving{opacity:1}
.cover-stage .fx4d{position:absolute;inset:0;padding:0;background:transparent}
.cover-stage .fx4d-stage{position:absolute;inset:0;min-height:0;background:transparent;
  box-shadow:none;background-image:none}
.cover-stage .fx4d-canvas{width:100%;height:100%}
.cover-stage .fx4d-hud{left:var(--sp-3);top:var(--sp-3);right:auto;bottom:auto}
.bc-right .seal-svg{width:74px;height:74px;justify-self:end;display:block;
  filter:drop-shadow(var(--shadow-seal))}
.cover-caption{margin:var(--sp-3) 0 0;font-size:var(--step-1);color:var(--cover-ink-3);
  line-height:1.7;text-align:right}
.cover-seal{margin-top:var(--sp-5);display:flex;align-items:center;gap:var(--sp-4)}
.cover-seal .seal-svg{width:74px;height:74px;flex:0 0 auto;filter:drop-shadow(var(--shadow-seal))}
.cover-seal .seal-note{margin:0;font-size:var(--step-1);line-height:1.7;color:var(--cover-ink-3)}
.cover-seal .seal-note b{display:block;color:var(--brass-leaf-2);font-size:var(--step0);
  letter-spacing:.1em;margin-bottom:2px}
.cover-scroll{position:relative;z-index:var(--z-base);text-align:center;padding:0 var(--gutter) var(--sp-6);
  color:var(--cover-ink-3);font-size:var(--step-1)}
.cover-toc{margin:0;padding:clamp(24px,4vw,56px) var(--gutter) clamp(32px,5vw,64px);
  background:var(--paper);color:var(--ink)}
.cover-toc-inner{max-width:var(--shell-max);margin:0 auto}
.cover-toc-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3) var(--sp-5);
  padding-bottom:var(--sp-4);border-bottom:var(--bw-rule) double var(--rule-strong)}
.cover-toc-head h2{margin:0;font-family:var(--serif);font-size:var(--step3);color:var(--navy);
  letter-spacing:.06em}
.cover-toc-head p{margin:0;font-size:var(--step0);color:var(--ink-2)}
.cover-toc-head .toc-cta{margin-left:auto;display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.toc-grid{margin-top:var(--sp-6);display:grid;gap:var(--sp-4);
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.toc-card{position:relative;min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);
  gap:var(--sp-2) var(--sp-4);background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-left:var(--bw-edge-lg) solid var(--navy);border-radius:var(--r-sm);
  padding:var(--sp-4) var(--sp-4);text-decoration:none;box-shadow:var(--shadow-1);
  transition:border-color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease),
    box-shadow var(--dur-2) var(--ease)}
.toc-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-left-color:var(--brass)}
.toc-no{font-family:var(--num);font-size:var(--step2);font-weight:700;color:var(--brass-deep);
  line-height:1.1}
.toc-t{min-width:0;font-family:var(--sans);font-size:var(--step1);font-weight:700;color:var(--navy);
  line-height:1.45;overflow-wrap:anywhere}
.toc-s{grid-column:2;min-width:0;font-size:var(--step-1);line-height:1.65;color:var(--ink-2);
  font-family:var(--serif);overflow-wrap:anywhere}
.toc-meta{grid-column:2;display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.toc-card.front{border-left-color:var(--brass)}
/* 总目录 · 本章电子资源形态（AI 白板 / 实验推演 / 互动课堂 / 微视频 / 游戏 / 4D 推演） */
.toc-forms{grid-column:2;display:flex;flex-wrap:wrap;gap:4px;align-items:center;
  margin-top:var(--sp-1);padding-top:var(--sp-2);border-top:var(--hair) dashed var(--rule)}
.toc-forms-k{font-family:var(--num);font-size:var(--step-1);letter-spacing:.06em;
  color:var(--ink-3);margin-right:2px}
.toc-form{display:inline-block;font-family:var(--sans);font-size:var(--step-1);font-weight:600;
  line-height:1.5;padding:1px 7px;border-radius:999px;white-space:nowrap;
  color:var(--navy);background:var(--navy-soft);border:var(--hair) solid var(--navy-line)}
.toc-form.f-fx4d{color:var(--brass-deep);background:var(--brass-soft);border-color:var(--brass-line)}
.toc-form.f-lab{color:var(--ledger-deep);background:var(--ledger-soft);border-color:var(--ledger-line)}
.toc-form.f-game{color:var(--alarm-deep);background:var(--alarm-soft);border-color:var(--alarm-line)}
.toc-form.f-micro{color:var(--plum);background:var(--plum-soft);border-color:var(--plum-line)}
.toc-form-more{font-family:var(--num);font-size:var(--step-1);color:var(--ink-3)}

/* 编辑署名待填空位（主编 / 副主编先不写名，位置留出来） */
.ed-blank{display:inline-block;min-width:3.6em;height:1.05em;vertical-align:-.18em;
  border-bottom:var(--hair) solid var(--rule-strong)}
.cover-plate .ed-blank{border-bottom-color:var(--cover-rule);min-width:3.8em}
.colo-panel .ed-blank-dd{display:flex;align-items:baseline;min-height:1.6em}
.cover-byline b .ed-blank{font-weight:400}

/* 封底：印刷封底版式（上 2/3 提要 + 特色，底部固定版权带） */
.backcover{position:relative;min-height:100vh;min-height:100svh;overflow-x:clip;
  display:flex;flex-direction:column;
  background:var(--cover-bg);background-image:
    radial-gradient(110% 84% at 22% 6%,var(--cover-bg-2) 0%,transparent 56%),
    linear-gradient(180deg,var(--cover-bg) 0%,var(--cover-bg-3) 100%);
  color:var(--cover-ink)}
.backcover::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:repeating-linear-gradient(90deg,var(--cover-cloth) 0 1px,transparent 1px 3px),
    repeating-linear-gradient(0deg,var(--cover-cloth-2) 0 1px,transparent 1px 4px)}
.backcover-inner{position:relative;z-index:var(--z-base);flex:1;min-height:0;width:100%;
  max-width:var(--shell-max);margin:0 auto;
  padding:clamp(28px,4.4vw,56px) var(--gutter) clamp(20px,3vw,36px);
  display:grid;gap:clamp(20px,2.8vw,34px);align-items:start;align-content:space-between;
  grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr);
  grid-template-areas:"left right" "band band" "foot foot"}
.bc-spine-band{grid-area:band;display:flex;flex-wrap:wrap;align-items:center;
  gap:var(--sp-3) var(--sp-5);padding:clamp(14px,2vw,22px) 0;
  border-top:var(--bw-rule) double var(--cover-rule);
  border-bottom:var(--bw-rule) double var(--cover-rule)}
.bc-spine-band .band-t{font-family:var(--serif);font-size:var(--step3);
  color:var(--cover-ink);letter-spacing:.22em;white-space:nowrap}
.bc-spine-band .band-p{font-size:var(--step-1);color:var(--cover-ink-3);
  letter-spacing:.12em;white-space:nowrap}
.bc-spine-band .band-line{flex:1 1 40px;min-width:24px;height:var(--hair);background:var(--cover-rule)}
.bc-left{grid-area:left;display:grid;gap:clamp(16px,2.2vw,26px);align-content:start;min-width:0}
.bc-right{grid-area:right;display:grid;gap:clamp(16px,2.2vw,26px);align-content:start;min-width:0;
  justify-items:stretch}
.bc-panel{border:var(--hair) solid var(--cover-rule);border-radius:var(--r-sm);
  padding:clamp(20px,2.6vw,32px);background:linear-gradient(180deg,var(--cover-cloth) 0%,transparent 100%)}
.bc-title{margin:0 0 var(--sp-4);font-family:var(--serif);font-size:var(--step3);
  color:var(--cover-ink);letter-spacing:.08em;display:flex;align-items:center;gap:var(--sp-3)}
.bc-title::before{content:"";width:26px;height:var(--bw-rule);background:var(--brass-leaf);flex:0 0 auto}
.bc-title::after{content:"";flex:1;height:var(--hair);background:var(--cover-rule)}
.bc-text{margin:0 0 var(--sp-4);font-size:var(--step0);line-height:1.85;color:var(--cover-ink-2);
  font-family:var(--serif)}
.bc-text:last-child{margin-bottom:0}
.bc-features{margin:var(--sp-4) 0 0;padding:0;list-style:none;display:grid;gap:var(--sp-3)}
.bc-features li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);
  min-width:0;font-size:var(--step0);line-height:1.8;color:var(--cover-ink-2)}
.bc-features li::before{content:"◆";font-size:var(--step-1);color:var(--brass-leaf);line-height:1.9}
.bc-features li b{color:var(--cover-ink);font-weight:600}
.bc-side{display:grid;gap:var(--sp-4);align-content:start}
.bc-right .seal-svg{justify-self:end}
.bc-qr{border:var(--hair) solid var(--cover-rule);border-radius:var(--r-sm);
  padding:var(--sp-4);background:var(--cover-stage);text-align:center}
.bc-qr .qr-box{width:132px;height:132px;margin:0 auto var(--sp-3);
  border:var(--hair) solid var(--cover-rule);border-radius:var(--r-xs);
  display:grid;place-items:center;background:var(--cover-bg-2)}
.bc-qr .qr-box svg{width:120px;height:120px}
.bc-qr p{margin:0;font-size:var(--step-1);line-height:1.7;color:var(--cover-ink-2)}
.bc-qr p b{color:var(--brass-leaf-2);display:block;font-size:var(--step0);letter-spacing:.06em}
.bc-qr .btn{margin-top:var(--sp-3);background:transparent;border-color:var(--brass-leaf);
  color:var(--brass-leaf-2)}
.bc-qr .btn:hover{background:var(--brass-leaf);color:var(--cover-bg)}
.bc-meta{border:var(--hair) solid var(--cover-rule);border-radius:var(--r-sm);
  padding:var(--sp-4);font-size:var(--step-1);line-height:1.9;color:var(--cover-ink-2)}
.bc-meta dl{margin:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px var(--sp-3)}
.bc-meta dt{color:var(--cover-ink-3);white-space:nowrap}
.bc-meta dd{margin:0;color:var(--cover-ink);overflow-wrap:anywhere}
.bc-spine{margin-top:var(--sp-5);display:flex;align-items:center;gap:var(--sp-4);
  color:var(--cover-ink-3);font-size:var(--step-1)}
.bc-spine::before,.bc-spine::after{content:"";height:var(--hair);background:var(--cover-rule);flex:1}
.backcover-foot{grid-area:foot;display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-6);
  align-items:center;justify-content:space-between;
  border-top:var(--hair) solid var(--cover-rule);padding-top:var(--sp-4);
  font-size:var(--step-1);color:var(--cover-ink-3)}
.bc-band{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-5);align-items:center;
  margin:0;padding:0;list-style:none}
.bc-band li{display:inline-flex;align-items:baseline;gap:var(--sp-2);color:var(--cover-ink-2)}
.bc-band li b{color:var(--cover-ink-3);font-weight:400}
.bc-band li span{color:var(--cover-ink)}
.bc-press{display:inline-flex;align-items:baseline;gap:var(--sp-2);font-size:var(--step0);
  color:var(--cover-ink-2);letter-spacing:.04em}
.backcover-foot .aigc-explicit{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--cover-ink-2)}
.backcover-foot .aigc-explicit::before{content:"AI";font-family:var(--num);font-size:var(--step-1);
  font-weight:700;color:var(--cover-bg);background:var(--brass-leaf);border-radius:var(--r-xs);
  padding:1px 5px}

/* 版权页 / 前言 / 资源索引：纸面版式 */
.plain-page{background:var(--paper);color:var(--ink)}
.colophon{margin:0;padding:clamp(24px,4vw,56px) 0 var(--sp-9)}
.colophon-grid{display:grid;gap:var(--sp-6);grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.colo-panel{min-width:0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-5);box-shadow:var(--shadow-1)}
.colo-panel h2{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step2);
  font-weight:700;color:var(--navy);display:flex;align-items:center;gap:var(--sp-3)}
.colo-panel h2::after{content:"";flex:1;height:var(--hair);background:var(--rule-strong)}
.colo-panel dl{margin:0;display:grid;grid-template-columns:8.5em minmax(0,1fr);
  gap:var(--sp-2) var(--sp-4);font-size:var(--step0);line-height:1.8}
.colo-panel dt{color:var(--ink-2);white-space:nowrap}
.colo-panel dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.colo-crew{margin:0;padding:0;list-style:none;font-size:var(--step0);line-height:2}
.colo-crew li{display:grid;grid-template-columns:6.5em minmax(0,1fr);gap:var(--sp-3);min-width:0}
.colo-crew .role{color:var(--ink-2)}
.colo-crew .who{color:var(--ink);overflow-wrap:anywhere}
.colo-note{margin:var(--sp-5) 0 0;padding:var(--sp-4) var(--sp-5);background:var(--paper-2);
  border-left:var(--bw-edge-lg) solid var(--brass);border-radius:0 var(--r-sm) var(--r-sm) 0;
  font-family:var(--serif);font-size:var(--step0);line-height:var(--lh-body);color:var(--ink)}
.page-head{padding-bottom:var(--sp-5);border-bottom:var(--bw-rule) double var(--rule-strong);
  margin-bottom:var(--sp-7)}
.page-head .ph-kicker{margin:0 0 var(--sp-2);font-family:var(--num);font-size:var(--step-1);
  font-weight:700;letter-spacing:var(--tracking-caps);color:var(--brass-deep)}
.page-head h1{margin:0;font-family:var(--serif);font-size:var(--step4);color:var(--navy);
  letter-spacing:.02em;line-height:1.24}
.page-head .ph-sub{margin:var(--sp-3) 0 0;font-size:var(--step2);color:var(--ink-2);line-height:1.6}
.prose{font-family:var(--serif);font-size:var(--step0);line-height:var(--lh-body);color:var(--ink)}
.prose p{margin:0 0 var(--sp-4)}
.prose h2{margin:var(--sp-7) 0 var(--sp-3);font-family:var(--sans);font-size:var(--step2);
  color:var(--navy);border-left:var(--bw-edge) solid var(--brass);padding-left:var(--sp-3)}
.prose h3{margin:var(--sp-5) 0 var(--sp-2);font-family:var(--sans);font-size:var(--step1);
  color:var(--navy-ink)}
.prose ul,.prose ol{margin:0 0 var(--sp-4);padding-left:1.35em}
.prose li{margin-bottom:var(--sp-2)}
/* 学习路径 */
.path{margin:var(--sp-6) 0;padding:0;list-style:none;display:grid;gap:var(--sp-3);
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));counter-reset:path}
.path li{position:relative;min-width:0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-4);box-shadow:var(--shadow-1);counter-increment:path}
.path li::before{content:counter(path,decimal-leading-zero);display:block;font-family:var(--num);
  font-size:var(--step-1);font-weight:700;color:var(--brass-deep);margin-bottom:var(--sp-2)}
.path li b{display:block;font-family:var(--sans);font-size:var(--step1);color:var(--navy);
  margin-bottom:var(--sp-1)}
.path li span{display:block;font-size:var(--step-1);line-height:1.7;color:var(--ink-2)}
/* 符号与组件图例 */
.legend-grid{margin:var(--sp-5) 0;display:grid;gap:var(--sp-4);
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.legend-card{min-width:0;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-4) var(--sp-4);box-shadow:var(--shadow-1)}
.legend-card h3{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step1);
  color:var(--navy)}
.legend-card p{margin:0;font-size:var(--step-1);line-height:1.75;color:var(--ink-2)}
.legend-demo{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:var(--hair) dashed var(--rule-strong);
  font-size:var(--step-1);color:var(--ink-2)}
/* 资源索引 */
.res-group{margin:var(--sp-7) 0}
.res-group>h2{margin:0 0 var(--sp-4);font-family:var(--sans);font-size:var(--step3);
  color:var(--navy);display:flex;align-items:center;gap:var(--sp-3)}
.res-group>h2::after{content:"";flex:1;height:var(--hair);background:var(--rule-strong)}
.res-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-3);
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.res-item{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-1) var(--sp-3);
  background:var(--paper-3);border:var(--hair) solid var(--rule);border-radius:var(--r-sm);
  padding:var(--sp-3) var(--sp-4);box-shadow:var(--shadow-1)}
.res-item .res-no{font-family:var(--num);font-size:var(--step-1);font-weight:700;color:var(--brass-deep)}
.res-item .res-t{min-width:0;font-size:var(--step0);font-weight:600;color:var(--navy);
  overflow-wrap:anywhere}
.res-item .res-s{grid-column:2;min-width:0;font-size:var(--step-1);color:var(--ink-2);
  overflow-wrap:anywhere;word-break:break-word}
.res-item .res-n{grid-column:2;min-width:0;font-size:var(--step-1);line-height:1.7;color:var(--ink)}

/* ---- 电子资源总索引（renderResources，v1.7） ---- */
.idx-stats{margin:var(--sp-5) 0 0;padding:0;list-style:none;display:grid;gap:var(--sp-3);
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.idx-stat{min-width:0;display:grid;gap:2px;background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-top:var(--bw-edge) solid var(--brass);border-radius:var(--r-sm);padding:var(--sp-3) var(--sp-4);
  box-shadow:var(--shadow-1)}
.idx-stat-n{font-family:var(--num);font-size:var(--step3);font-weight:700;color:var(--navy);line-height:1.15}
.idx-stat-k{font-family:var(--sans);font-size:var(--step-1);color:var(--ink-2)}
.idx-tbl .idx-n{font-family:var(--num);font-weight:700;color:var(--brass-deep);white-space:nowrap}
.idx-ch{margin:var(--sp-7) 0 0;padding-top:var(--sp-5);border-top:var(--hair) solid var(--rule)}
.idx-ch-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-4)}
.idx-ch-no{font-family:var(--num);font-size:var(--step2);font-weight:700;color:var(--brass-deep)}
.idx-ch-head h3{margin:0;font-family:var(--sans);font-size:var(--step2);color:var(--navy)}
.idx-ch-head h3 a{color:inherit;text-decoration:none}
.idx-ch-head h3 a:hover{text-decoration:underline}
.idx-ch-count{margin-left:auto;font-family:var(--num);font-size:var(--step-1);color:var(--ink-2)}
.idx-h4{margin:var(--sp-5) 0 var(--sp-3);font-family:var(--sans);font-size:var(--step1);
  font-weight:700;color:var(--navy-ink)}
.idx-item .tag{margin-right:var(--sp-2)}
.idx-anchor{font-size:var(--step-1)}
/* 资源索引页：互动课堂资源分节 */
.res-sub{margin:var(--sp-5) 0 var(--sp-3);font-family:var(--sans);font-size:var(--step1);
  font-weight:700;color:var(--navy);display:flex;align-items:center;gap:var(--sp-3)}
.res-sub::after{content:"";flex:1;height:var(--hair);background:var(--rule)}
.res-item .res-form{grid-column:2;min-width:0;display:flex;flex-wrap:wrap;gap:var(--sp-2);
  align-items:center;font-size:var(--step-1);color:var(--brass-deep);font-weight:600}
.res-item .res-qr{grid-column:2;justify-self:start;display:inline-grid;place-items:center;
  background:var(--qr-quiet);padding:6px;border:var(--hair) solid var(--qr-edge);
  border-radius:var(--r-xs)}
.res-item .res-qr img{display:block;width:88px;height:88px}

/* ==========================================================================
   26 · 本章电子资源（互动课堂资源卡 + 本地二维码 + 直达链接）
   --------------------------------------------------------------------------
   · 二维码静区：白底 + 8px 内边距，不反色、不加动画/滤镜（影响识别率）
   · 卡片一律不裁切子元素；网格 minmax(0,1fr)；1440 三列 / 1024 两列 / ≤768 单列
   ========================================================================== */
.eres-intro{margin:0 0 var(--sp-5);max-width:var(--measure);font-family:var(--serif);
  font-size:var(--step0);line-height:var(--lh-body);color:var(--ink-2)}
.eres-grid{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-4);
  grid-template-columns:repeat(3,minmax(0,1fr))}
.eres-card{min-width:0;display:flex;flex-direction:column;gap:var(--sp-2);
  background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-top:var(--bw-edge) solid var(--navy);border-radius:var(--r-sm);
  padding:var(--sp-5);box-shadow:var(--shadow-1)}
.eres-card[data-form="lab"]{border-top-color:var(--ledger)}
.eres-card[data-form="case"],
.eres-card[data-form="project"],
.eres-card[data-form="scenario"]{border-top-color:var(--brass)}
.eres-card[data-form="game"]{border-top-color:var(--alarm)}
.eres-card[data-form="micro"]{border-top-color:var(--plum)}
.eres-form{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-family:var(--sans);
  font-size:var(--step-1);font-weight:700;letter-spacing:.04em;color:var(--navy)}
.eres-icon{font-size:var(--step1);line-height:1}
.eres-title{margin:0;font-family:var(--sans);font-size:var(--step1);font-weight:700;
  line-height:1.5;color:var(--navy-ink);overflow-wrap:anywhere}
.eres-brief{margin:0;font-size:var(--step-1);line-height:1.75;color:var(--ink-2);
  overflow-wrap:anywhere}
.eres-meta{margin:0;font-family:var(--num);font-size:var(--step-1);color:var(--brass-deep)}
.eres-qr{margin:var(--sp-2) 0 var(--sp-1);align-self:center;display:grid;place-items:center;
  background:var(--qr-quiet);padding:8px;border:var(--hair) solid var(--qr-edge);
  border-radius:var(--r-sm)}
.eres-qr img{display:block;width:112px;height:112px}
.eres-open{margin-top:auto;align-self:stretch;text-align:center}
.eres-note{margin:var(--sp-4) 0 0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2)}
/* 章首资源提示（v1.5）：资源就近分布声明，非资源卡本身 */
.eres-hint{margin:var(--sp-5) 0 0;padding:var(--sp-4) var(--sp-5);background:var(--brass-soft);
  border-left:var(--bw-edge-lg) solid var(--brass);border-radius:var(--r-sm)}
.eres-hint-k{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;letter-spacing:.06em;color:var(--brass-deep)}
.eres-hint-b{margin:0;font-size:var(--step-1);line-height:1.8;color:var(--ink)}
.eres-hint-b b{color:var(--brass-deep)}

@media (max-width:1279px){
  .eres-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:768px){
  .eres-grid{grid-template-columns:minmax(0,1fr)}
}

/* ==========================================================================
   27 · 嵌入式交互资源块（契约 v1.4 §2.4.2）
   wb / ilab / iquiz / scenelab / iclass —— 静态优先，脚本可用时升级为交互
   只用令牌；卡片不裁切子元素；四档无横向溢出
   ========================================================================== */
.em{position:relative;margin:var(--sp-6) 0;background:var(--paper-3);
  border:var(--hair) solid var(--rule);border-radius:var(--r-sm);
  box-shadow:var(--shadow-1);padding:var(--sp-5) var(--sp-5) var(--sp-4)}
.em::before{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--bw-edge);border-radius:var(--r-sm) 0 0 var(--r-sm)}
.em-wb::before{background:var(--navy)}
.em-ilab::before{background:var(--ledger)}
.em-iquiz::before{background:var(--brass)}
.em-scenelab::before{background:var(--plum)}
.em-iclass::before{background:var(--navy-2)}
.em[data-embed-state="static"]{border-style:dashed}
/* 静态态下隐藏空画布/空容器（静态版内容已完整给出），避免留出空洞 */
.em-ilab[data-embed-state="static"] .em-lab-canvas-wrap,
.em-iquiz[data-embed-state="static"] .em-quiz-host,
.em-iclass[data-embed-state="static"] .em-quiz-host,
.em-iclass[data-embed-state="static"] .em-lab-canvas-wrap{display:none}
.em-head{margin:0 0 var(--sp-4);padding-left:var(--sp-3)}
.em-kicker{margin:0 0 var(--sp-1);font-family:var(--num);font-size:var(--step-1);
  font-weight:700;letter-spacing:var(--tracking-caps);color:var(--brass-deep)}
.em-title{margin:0;font-family:var(--sans);font-size:var(--step2);font-weight:700;
  color:var(--navy);line-height:1.45;overflow-wrap:anywhere}
.em-sub{margin:var(--sp-1) 0 0;font-size:var(--step-1);color:var(--ink-2)}
.em-static-k{margin:0 0 var(--sp-3);font-size:var(--step-1);line-height:1.7;color:var(--ink-2);
  background:var(--paper-2);border-left:var(--bw-edge) solid var(--rule-strong);
  border-radius:0 var(--r-xs) var(--r-xs) 0;padding:var(--sp-2) var(--sp-3)}
.em-statichint{margin:var(--sp-2) 0 0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2)}
.em-noscript{margin:var(--sp-3) 0 0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2)}
.em-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-1);
  font-family:var(--sans);font-size:var(--step-1);font-weight:600;color:var(--ink);
  background:var(--paper);border:var(--hair) solid var(--rule-strong);border-radius:var(--r-sm);
  padding:5px 12px;cursor:pointer;white-space:nowrap;min-width:2.6em}
.em-btn:hover{background:var(--navy-soft);border-color:var(--navy-line);color:var(--navy)}
.em-btn-main{background:var(--navy);border-color:var(--navy);color:var(--ink-inv)}
.em-btn-main:hover{background:var(--navy-2);border-color:var(--navy-2);color:var(--ink-inv)}

/* ---- 27.1 wb 可播放白板 ---- */
.em-wb-stage{margin:0 0 var(--sp-3);border:var(--hair) solid var(--rule-strong);
  border-radius:var(--r-sm);background:var(--paper);
  background-image:repeating-linear-gradient(to bottom,var(--env-rule) 0 1px,transparent 1px var(--rhythm));}
.em-wb-board{display:block;width:100%;height:auto;aspect-ratio:880/420}
.em-wb-bar{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-top:var(--sp-2)}
.em-wb-prog{flex:1 1 120px;min-width:80px;height:6px;border-radius:var(--r-pill);
  background:var(--paper-4);overflow:hidden} /* allow-overflow: 进度条裁切，非卡片 */
.em-wb-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brass),var(--navy-2))}
.em-wb-count{font-family:var(--num);font-size:var(--step-1);color:var(--ink-2);min-width:3.4em;text-align:right}
.em-wb-sub{margin:var(--sp-2) 0 0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2);
  border-top:var(--hair) dashed var(--rule-strong);padding-top:var(--sp-2);min-height:1.7em}
.em-steps{margin:var(--sp-3) 0 0;border-top:var(--hair) solid var(--rule);padding-top:var(--sp-2)}
.em-steps>summary{cursor:pointer;font-family:var(--sans);font-size:var(--step-1);
  font-weight:600;color:var(--navy);list-style:none}
.em-steps>summary::-webkit-details-marker{display:none}
.em-steps>summary::before{content:"▸";margin-right:var(--sp-2);color:var(--brass-deep)}
.em-steps[open]>summary::before{content:"▾"}
.em-steps ol{margin:var(--sp-2) 0 0;padding-left:1.4em;font-size:var(--step-1);
  line-height:1.8;color:var(--ink-2)}
.em-steps b{color:var(--ink)}

/* ---- 27.2 ilab 互动实验室 ---- */
.em-lab-host{margin:0}
.em-lab-canvas-wrap{background:var(--paper);border:var(--hair) solid var(--rule-strong);
  border-radius:var(--r-sm);padding:var(--sp-2)}
.em-lab-canvas{display:block;width:100%;height:auto;background:var(--paper-3)}
.em-lab-static{margin:var(--sp-3) 0 0}
.em-param-table{width:100%;border-collapse:collapse;margin:0 0 var(--sp-3);font-size:var(--step-1)}
.em-param-table th,.em-param-table td{border-bottom:var(--hair) solid var(--rule);
  padding:5px var(--sp-3);text-align:left;vertical-align:top}
.em-param-table th{background:var(--paper-2);color:var(--navy);font-family:var(--sans);
  font-weight:700;white-space:nowrap}
.em-param-table td.mono{font-family:var(--num);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.em-formula{margin:0 0 var(--sp-3);padding-left:1.3em;font-size:var(--step-1);line-height:1.85;color:var(--ink)}
.em-formula li::marker{color:var(--brass)}
.em-model-note{margin:0 0 var(--sp-3);font-size:var(--step0);line-height:1.75;color:var(--ink)}
.em-model-k{font-family:var(--sans);font-weight:700;color:var(--navy);margin-right:var(--sp-2)}
.em-tasks{margin:var(--sp-4) 0 0;padding:var(--sp-3) var(--sp-4);background:var(--navy-soft);
  border-radius:var(--r-sm)}
.em-tasks-k{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;color:var(--navy)}
.em-tasks ol{margin:0;padding-left:1.4em;font-size:var(--step0);line-height:1.8;color:var(--ink)}
/* lab-scaffold 生成的 DOM */
.lab-panel{display:grid;gap:var(--sp-3);margin:0 0 var(--sp-3)}
.lab-presets{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.lab-preset{font-family:var(--sans);font-size:var(--step-1);color:var(--navy);
  background:var(--paper);border:var(--hair) solid var(--navy-line);border-radius:var(--r-pill);
  padding:3px 12px;cursor:pointer}
.lab-preset:hover{background:var(--navy-soft)}
.lab-ctrl{display:grid;grid-template-columns:minmax(0,9em) minmax(0,1fr) minmax(0,7em);
  gap:var(--sp-3);align-items:center;font-size:var(--step-1);min-width:0}
.lab-lbl{color:var(--ink-2);overflow-wrap:anywhere}
.lab-ctrl input[type="range"]{width:100%;min-width:0;accent-color:var(--navy-2)}
.lab-val{font-family:var(--num);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right}
.lab-kpis{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  margin:0 0 var(--sp-3)}
.lab-kpi{background:var(--paper-2);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);min-width:0}
.lab-k{font-size:var(--step-1);color:var(--ink-2);margin-bottom:2px}
.lab-v{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:var(--step1);
  font-weight:700;color:var(--navy);overflow-wrap:anywhere}
.lab-v[data-tone="down"]{color:var(--alarm-deep)}
.lab-v[data-tone="up"]{color:var(--ledger-deep)}
.lab-v[data-tone="warn"]{color:var(--brass-deep)}

/* ---- 27.3 iquiz 随堂测 ---- */
.em-quiz-host{margin:0}
.em-quiz-static{margin:0}
.em-qlist{margin:0;padding-left:1.5em;font-size:var(--step0);line-height:1.8;color:var(--ink)}
.em-qlist>li{margin-bottom:var(--sp-4)}
.em-q{margin:0 0 var(--sp-2);font-weight:600}
.em-qno{font-family:var(--num);color:var(--brass-deep);margin-right:2px}
.em-qopts{margin:0 0 var(--sp-2);padding-left:1.1em;list-style:none}
.em-qopts li{margin-bottom:2px;color:var(--ink-2);font-size:var(--step-1)}
/* quiz-engine 生成的 DOM */
.qz-head{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:baseline;
  border-bottom:var(--hair) solid var(--rule);padding-bottom:var(--sp-2);margin-bottom:var(--sp-3)}
.qz-title{font-family:var(--sans);font-size:var(--step1);font-weight:700;color:var(--navy)}
.qz-progress{margin-left:auto;font-family:var(--num);font-size:var(--step-1);color:var(--ink-2)}
.qz-body{display:grid;gap:var(--sp-3)}
.qz-card{background:var(--paper);border:var(--hair) solid var(--rule);border-radius:var(--r-sm);
  padding:var(--sp-3) var(--sp-4)}
.qz-q{font-size:var(--step0);line-height:1.75;font-weight:600;color:var(--ink);margin-bottom:var(--sp-2)}
.qz-no{font-family:var(--num);color:var(--brass-deep);margin-right:4px}
.qz-opts{display:grid;gap:var(--sp-2);margin-bottom:var(--sp-2)}
.qz-opt,.qz-submit{font-family:var(--sans);font-size:var(--step-1);text-align:left;cursor:pointer;
  color:var(--ink);background:var(--paper-3);border:var(--hair) solid var(--rule-strong);
  border-radius:var(--r-sm);padding:6px 12px}
.qz-opt:hover,.qz-submit:hover{background:var(--navy-soft);border-color:var(--navy-line)}
.qz-opt.ok{background:var(--ledger-soft);border-color:var(--ledger);color:var(--ledger-deep);font-weight:700}
.qz-opt.bad{background:var(--alarm-soft);border-color:var(--alarm);color:var(--alarm-deep)}
.qz-submit{background:var(--navy);border-color:var(--navy);color:var(--ink-inv);font-weight:600;
  text-align:center;padding:5px 14px}
.qz-submit:hover{background:var(--navy-2);border-color:var(--navy-2);color:var(--ink-inv)}
.qz-fillrow{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.qz-input,.qz-ta{flex:1 1 12em;min-width:0;font-family:var(--sans);font-size:var(--step0);
  color:var(--ink);background:var(--paper);border:var(--hair) solid var(--rule-strong);
  border-radius:var(--r-sm);padding:6px 10px}
.qz-ta{width:100%;flex-basis:100%}
.qz-fb{margin-top:var(--sp-2);font-size:var(--step-1);line-height:1.75;padding:var(--sp-2) var(--sp-3);
  border-radius:var(--r-sm);background:var(--paper-2);color:var(--ink)}
.qz-fb.ok{background:var(--ledger-soft);color:var(--ledger-deep)}
.qz-fb.bad{background:var(--alarm-soft);color:var(--alarm-deep)}
.qz-fb.ref{background:var(--navy-soft);color:var(--navy)}
.qz-foot{margin-top:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}
.qz-total{font-family:var(--sans);font-size:var(--step-1);color:var(--ink-2)}
.qz-total.ok{color:var(--ledger-deep);font-weight:700}
.qz-total b{font-family:var(--num);font-size:var(--step1);color:var(--navy)}
.qz-reset{font-family:var(--sans);font-size:var(--step-1);color:var(--ink-2);background:var(--paper);
  border:var(--hair) solid var(--rule-strong);border-radius:var(--r-sm);padding:3px 10px;cursor:pointer}
.qz-locked{position:relative}
.qz-locked::after{content:"滚动到本节后自动解锁作答";position:absolute;inset:0;
  display:grid;place-items:center;background:var(--paper-2);color:var(--ink-2);
  font-size:var(--step-1);border-radius:var(--r-sm);border:var(--hair) dashed var(--rule-strong)}
.qz-revealed.qz-locked::after{display:none}
.em[data-embed-state="revealed"] .em-head::after{content:"已解锁";margin-left:var(--sp-2);
  font-family:var(--num);font-size:var(--step-1);color:var(--ledger-deep)}

/* ---- 27.4 scenelab 情景实验 ---- */
.em-scene{margin:0 0 var(--sp-4);padding:var(--sp-4);background:var(--paper-2);
  border-radius:var(--r-sm);border-left:var(--bw-edge-lg) solid var(--plum)}
.em-brief{margin:0 0 var(--sp-3);font-size:var(--step0);line-height:var(--lh-body);
  color:var(--ink);font-family:var(--serif)}
.em-role{margin:0 0 var(--sp-3);font-size:var(--step-1);color:var(--ink)}
.em-role-k{font-family:var(--sans);font-weight:700;color:var(--navy);margin-right:var(--sp-2)}
.em-facts{margin:0;padding-left:1.4em;font-size:var(--step-1);line-height:1.8;color:var(--ink-2)}
.em-disclaim{margin:var(--sp-3) 0 0;font-size:var(--step-1);color:var(--ink-2);font-style:normal}
.em-sl-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--sp-4)}
.em-sl-item{min-width:0;background:var(--paper);border:var(--hair) solid var(--rule);
  border-radius:var(--r-sm);padding:var(--sp-4)}
.em-sl-item[data-open]{border-color:var(--plum-line);box-shadow:var(--shadow-1)}
.em-sl-k{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step1);
  font-weight:700;color:var(--navy)}
.em-sl-sit{margin:0 0 var(--sp-3);font-size:var(--step0);line-height:1.8;color:var(--ink)}
.em-sl-opts{display:grid;gap:var(--sp-2)}
.em-sl-opt{font-family:var(--sans);font-size:var(--step-1);text-align:left;cursor:pointer;
  color:var(--ink);background:var(--paper-3);border:var(--hair) solid var(--rule-strong);
  border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);line-height:1.7}
.em-sl-opt:hover{background:var(--navy-soft);border-color:var(--navy-line)}
.em-sl-opt.is-picked{background:var(--brass-soft);border-color:var(--brass-line);font-weight:600}
.em-sl-opt:disabled{cursor:default;opacity:.92}
.em-sl-fb{margin:var(--sp-3) 0 0;padding:var(--sp-2) var(--sp-3);background:var(--paper-2);
  border-radius:var(--r-sm);font-size:var(--step-1);line-height:1.75;color:var(--ink)}
.em-sl-key{margin-top:var(--sp-3)}
.em-sl-foot{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center;margin:var(--sp-4) 0 0}
.em-sl-score{font-family:var(--num);font-size:var(--step0);color:var(--navy);margin:0}
.em-sl-logbox{margin:var(--sp-4) 0 0;border-top:var(--hair) dashed var(--rule-strong);padding-top:var(--sp-3)}
.em-sl-logk{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;color:var(--navy)}
.em-sl-log{margin:0;padding-left:1.4em;font-size:var(--step-1);line-height:1.8;color:var(--ink-2)}
.em-sl-log li{margin-bottom:var(--sp-1)}
.em-sl-log .sl-fb{color:var(--ink)}
.em-sl-summary{margin:var(--sp-3) 0 0;padding:var(--sp-3) var(--sp-4);background:var(--ledger-soft);
  color:var(--ledger-deep);border-radius:var(--r-sm);font-size:var(--step0);line-height:1.8}

/* ---- 27.5 iclass 迷你互动课堂 ---- */
.ic-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:var(--sp-4);
  align-items:start}
.ic-main{min-width:0}
.ic-ai{min-width:0;background:var(--navy-soft);border-radius:var(--r-sm);padding:var(--sp-3) var(--sp-4)}
.ic-ai-k{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step-1);
  font-weight:700;color:var(--navy);display:flex;align-items:center;gap:var(--sp-2)}
.ic-off{font-family:var(--num);font-size:var(--step-1);font-weight:700;color:var(--ink-inv);
  background:var(--ink-3-strong);border-radius:var(--r-xs);padding:0 5px}
.ic-stream{display:grid;gap:var(--sp-2);max-height:340px;overflow-y:auto}
.ic-bubble{background:var(--paper-3);border:var(--hair) solid var(--navy-line);
  border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);font-size:var(--step-1);
  line-height:1.75;color:var(--ink)}
.ic-bubble.is-ai{border-left:var(--bw-edge) solid var(--navy)}
.ic-who{display:block;font-family:var(--sans);font-weight:700;color:var(--navy);
  font-size:var(--step-1);margin-bottom:2px}
.ic-tx{overflow-wrap:anywhere}
.ic-end{margin:var(--sp-2) 0 0;font-size:var(--step-1);color:var(--ink-2)}
.ic-static-lines{margin:0;padding-left:1.3em;font-size:var(--step-1);line-height:1.8;color:var(--ink-2)}
.ic-console{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;
  margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:var(--hair) solid var(--rule)}
.ic-note{margin:0;font-size:var(--step-1);line-height:1.7;color:var(--ink-2)}

/* ---- 27.6 qrres 就近二维码资源卡（契约 v1.5） ----
   与「章末资源网格」相反：资源卡就近贴在对应知识点之后。
   版式与 §26 资源卡同族（纸面卡片 + 顶缘语义色 + 阴影），但横排、更紧凑。
   二维码静区：白底 + 8px 内边距，不反色、不加动画/滤镜。 */
.em.em-qrres{margin:var(--sp-5) 0;padding:var(--sp-4) var(--sp-5);
  background:var(--paper-3);border:var(--hair) solid var(--rule);
  border-top:var(--bw-edge) solid var(--navy)}
.em-qrres[data-form="lab"]{border-top-color:var(--ledger)}
.em-qrres[data-form="case"],
.em-qrres[data-form="scenario"],
.em-qrres[data-form="project"]{border-top-color:var(--brass)}
.em-qrres[data-form="game"]{border-top-color:var(--alarm)}
.em-qrres[data-form="micro"]{border-top-color:var(--plum)}
.qrres-body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-4) var(--sp-5);
  align-items:center}
.qrres-text{min-width:0}
.qrres-kicker{margin:0 0 var(--sp-2);display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.qrres-form{display:inline-block;font-family:var(--sans);font-size:var(--step-1);font-weight:700;
  letter-spacing:.04em;color:var(--ink-inv);background:var(--navy);border-radius:999px;
  padding:2px 10px}
.qrres-min{font-family:var(--num);font-size:var(--step-1);color:var(--brass-deep)}
.qrres-title{margin:0 0 var(--sp-2);font-family:var(--sans);font-size:var(--step1);
  font-weight:700;line-height:1.5;color:var(--navy-ink);overflow-wrap:anywhere}
.qrres-brief{margin:0;font-size:var(--step-1);line-height:1.75;color:var(--ink-2);
  overflow-wrap:anywhere}
.qrres-act{margin:var(--sp-3) 0 0}
.qrres-qr{margin:0;flex:0 0 auto;display:grid;place-items:center;gap:var(--sp-2);
  background:var(--qr-quiet);padding:8px;border:var(--hair) solid var(--qr-edge);
  border-radius:var(--r-sm)}
.qrres-qr img{display:block;width:104px;height:104px}
.qrres-qr figcaption{font-size:var(--step-1);line-height:1.5;text-align:center;color:var(--ink-2)}
@media (max-width:767px){
  .qrres-body{grid-template-columns:minmax(0,1fr)}
  .qrres-qr{justify-self:center}
}

/* ==========================================================================
   28 · 本书功能与特色页（renderFeatures，契约 v1.5）
   重点讲两件事：① 多形态电子资源；② AI 助教 / AI 伴学等辅学形式。
   与封底「本书特色」条目互补：本页给完整说明与用法，封底只给摘要。
   ========================================================================== */
.legend-card.focus{border-top:var(--bw-edge) solid var(--brass)}
.legend-card .fc-k{display:block;font-family:var(--num);font-size:var(--step-1);
  letter-spacing:.08em;color:var(--brass-deep);margin-bottom:var(--sp-1)}
.legend-card ul{margin:var(--sp-2) 0 0;padding-left:1.2em;font-size:var(--step-1);
  line-height:1.8;color:var(--ink-2)}
.feat-tags{margin-top:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.feat-table{width:100%;border-collapse:collapse;margin:var(--sp-4) 0;font-size:var(--step-1)}
.feat-table th,.feat-table td{text-align:left;padding:var(--sp-2) var(--sp-3);
  border-bottom:var(--hair) solid var(--rule);vertical-align:top;line-height:1.75}
.feat-table th{width:8.5rem;font-family:var(--sans);font-weight:700;color:var(--navy);
  background:var(--paper-2)}
.feat-table tr:last-child th,.feat-table tr:last-child td{border-bottom:0}
.feat-table caption{caption-side:top;text-align:left;font-family:var(--sans);
  font-size:var(--step-1);font-weight:700;color:var(--navy);padding:0 0 var(--sp-2)}
.feat-note{margin:var(--sp-5) 0 0;padding:var(--sp-4) var(--sp-5);background:var(--brass-soft);
  border-left:var(--bw-edge-lg) solid var(--brass);border-radius:var(--r-sm);
  font-size:var(--step-1);line-height:1.8;color:var(--ink)}
.feat-note b{color:var(--alarm-deep)}
@media (max-width:600px){
  .feat-table th{width:6.5rem}
}

/* 四档响应式：iclass 单列；lab 控制行收窄；白板工具条换行 */
@media (max-width:1023px){
  .ic-grid{grid-template-columns:minmax(0,1fr)}
  .lab-ctrl{grid-template-columns:minmax(0,7em) minmax(0,1fr) minmax(0,6em)}
}
@media (max-width:767px){
  .em{padding:var(--sp-4) var(--sp-4) var(--sp-3)}
  .lab-ctrl{grid-template-columns:minmax(0,1fr);gap:var(--sp-1)}
  .lab-val{text-align:left}
  .lab-kpis{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
  .em-wb-prog{flex-basis:100%}
}
/* ---- 定义式条目列表（deflist，第 8 章《财产清查》源稿结构） ---- */
.deflist{margin:var(--sp-5) 0;border:var(--hair) solid var(--rule);border-radius:var(--r-sm);
  background:var(--paper-2);overflow:hidden}
.deflist-row{display:grid;grid-template-columns:7.5em 1fr;gap:var(--sp-4);
  padding:var(--sp-3) var(--sp-4);border-top:var(--hair) solid var(--rule)}
.deflist-row:first-child{border-top:0}
.deflist-k{font-family:var(--sans);font-weight:700;color:var(--navy);font-size:var(--step0);line-height:1.75}
.deflist-v{margin:0;font-size:var(--step0);line-height:1.8;color:var(--ink)}
@media (max-width:640px){
  .deflist-row{grid-template-columns:1fr;gap:2px}
  .deflist-k{color:var(--brass-deep)}
}

/* ==== 内嵌播放：配套资源页（白板讲授 / 迷你互动课堂等）在正文内播放，不新开网页 ==== */
.qrres-act{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:var(--sp-3) 0 0}
.qrres-play[aria-expanded="true"]{background:var(--navy);color:var(--paper);border-color:var(--navy)}
.qrres-stage{margin-top:var(--sp-3);border:var(--hair) solid var(--rule-strong);border-radius:var(--r-sm);
  overflow:hidden;background:var(--paper);box-shadow:var(--shadow-1)}
.qrres-stage:fullscreen{border-radius:0;border:0;display:flex;align-items:center;justify-content:center;background:var(--ink)}
.qrres-frame{display:block;width:100%;aspect-ratio:16/10;height:auto;border:0;background:var(--paper)}
.qrres-stage:fullscreen .qrres-frame{width:100vw;height:100vh;aspect-ratio:auto}
@media (max-width:640px){.qrres-frame{aspect-ratio:4/5}}

/* ==========================================================================
   v2.0 · 版面设计升级（2026-10-18）
   ① 章首「本章目录」导航条  ② 导语首字下沉加强  ③ 章标题黄铜短线
   ④ 表格斑马底 + 表头双线   ⑤ 顶部阅读进度条     ⑥ 打印适配
   仅使用设计令牌，无硬编码色值。
   ========================================================================== */

/* ① 章首 · 本章目录（可点，一屏看清结构） */
/* 吸附在顶栏下方的单行条：14 章的厚书里随时能跳节 */
.ch-nav{position:sticky;top:52px;z-index:35;margin:var(--sp-6) 0 0;
  padding:var(--sp-2) 0;background:var(--paper);
  border-top:var(--hair) solid var(--rule);border-bottom:var(--hair) solid var(--rule);
  -webkit-backdrop-filter:saturate(1.2) blur(6px);backdrop-filter:saturate(1.2) blur(6px)}
.ch-nav-k{display:block;margin-bottom:var(--sp-2);font-family:var(--sans);
  font-size:var(--step-1);letter-spacing:.16em;color:var(--brass-deep)}
.ch-nav-list{display:flex;flex-wrap:nowrap;gap:6px 8px;overflow-x:auto;padding-bottom:2px;
  scrollbar-width:none;-ms-overflow-style:none}
.ch-nav-list::-webkit-scrollbar{display:none}
.ch-nav-i{display:inline-flex;align-items:baseline;gap:6px;padding:4px 11px;
  border:var(--hair) solid var(--rule-strong);border-radius:999px;background:var(--paper-2);
  color:var(--ink-2);text-decoration:none;line-height:1.6;
  transition:border-color .16s,background .16s,color .16s}
.ch-nav-i{white-space:nowrap}
.ch-nav-i i{font-style:normal;font-family:var(--num);font-weight:700;color:var(--brass-deep)}
.ch-nav-i:hover{border-color:var(--brass);background:var(--paper-3);color:var(--ink)}
.ch-nav-i:focus-visible{outline:2px solid var(--navy);outline-offset:2px}

/* ② 导语首字下沉加强（学术书刊式） */
.ch-lead::first-letter{float:left;font-size:2.9em;line-height:.9;
  font-weight:700;color:var(--navy);padding:2px 10px 0 0}

/* ③ 章标题下的黄铜短线 */
.ch-opener .ch-title{position:relative;padding-bottom:var(--sp-3)}
.ch-opener .ch-title::after{content:"";position:absolute;left:0;bottom:0;
  width:76px;height:3px;border-radius:2px;
  background:linear-gradient(90deg,var(--brass),var(--brass-leaf))}

/* ④ 表格：表头双线 + 斑马底（金额仍右对齐、等宽数字） */
.table thead th{border-bottom:var(--hair) solid var(--rule-strong);
  box-shadow:0 2px 0 -1px var(--rule-strong)}
.table tbody tr:nth-child(even) td{background:var(--paper-2)}
.table tbody tr:hover td{background:var(--paper-3)}

/* ⑤ 顶部阅读进度条 */
.read-progress{position:fixed;inset-inline:0;top:0;height:3px;z-index:70;
  pointer-events:none;background:transparent}
.read-progress i{display:block;height:100%;width:0;
  background:linear-gradient(90deg,var(--brass),var(--navy))}

/* ⑥ 打印 / 降级 */
@media print{.ch-nav{display:none}.read-progress{display:none}
  .ch-lead::first-letter{float:none;font-size:inherit;color:inherit;padding:0}}
@media (prefers-reduced-motion: reduce){.read-progress i{transition:none}}
