/*
 * base — 三本书共用的样色骨架（**一份**，各书 theme/css/base.css 是指向它的符号链接）
 * ---------------------------------------------------------------------------
 * 内容：§1 设计令牌四层——主题调色板（rust/light/coal/navy/ayu）· 语义调色板（亮/暗）·
 * 派生量（调色板 → mdBook 变量，以及底纹 / 选区 / 悬停 / 斑马线等 color-mix 派生量）·
 * 尺寸令牌（版心、侧栏、菜单栏高度、圆角与间距刻度、字体栈）。
 *
 * 这是三本书**最容易漂移**的一层（新增配色、调语义盒、打印回落都从这里开始）。此前三份
 * 各存一份、靠「记得同步」维持，实际已经漂过（例如五个主题一度只有两套外观）。现在只有
 * 一份，各书 theme/css/base.css 是指向它的符号链接。
 *
 * 分工：base.css 管令牌层（三本共用）；<book>.css 管组件与版式（本书特有），以及对本层
 * 令牌的**覆盖**（本书特有的令牌，如「公式直觉盒」「竞技场段位色」）。加载顺序：
 * base.css 必须排在 additional-css 第一项，本书样式表在后，覆盖才成立。
 *
 * 验证：抽取后用「整页计算样式指纹」逐页比对（21 页），要求与抽取前逐页一致。
 */

/* Frontend design spec (2026-10): Academy / Cool blue-gray / standard density.
 * Default dark anchor: Coal's cool slate; Rust, Navy and Ayu remain explicit reader choices.
 * Chinese reading and controls stay Sans to match technical-document conventions (RustWiki);
 * Mono is reserved for code and compact metadata, with Serif kept as an optional reading preference.
 */

/* ======================================================================== *
 * §1  设计令牌 → mdBook 变量映射
 * ------------------------------------------------------------------------
 * 分四层，改配置只落在该落的那一层：
 *
 *   §1.1 主题调色板  rust / light / coal / navy / ayu **各一份独立配色**。
 *        这五个名字必须对应五种观感：此前 light≡rust、coal≡navy≡ayu，
 *        弹层里六项实际只有两套外观（逐项实测 page/ink/accent 完全相同）。
 *   §1.2 语义调色板  定义/定理/例题等语义盒与插图色，只分亮、暗两套，
 *        与具体主题解耦——新增一套主题不必重配语义色。
 *   §1.3 派生量      把调色板映射成 mdBook 变量，并用 color-mix 算出正文
 *        底纹、选区、悬停、表格斑马线这些装饰量（**只写一次**）。
 *        组件（§2 起）永远只引令牌，不写颜色字面量。
 *   §1.4 尺寸令牌    版心、侧栏、菜单栏高度与圆角/间距刻度。
 *
 * 于是「加一套配色」= 只在 §1.1 加一块；「改版式」只动 §1.4 与组件；
 * 「调某个语义盒」只动 §1.2。三者互不牵连。
 * ======================================================================== */

/* ---- §1.1 主题调色板 --------------------------------------------------- *
 * 每个主题给全同一组键。两个键专供 §1.3：
 *   --link-color  链接与侧栏激活色（亮色主题取 accent-strong：13.5px 小字号
 *                 要过 AA；暗色主题取 accent，本身已达标）
 *   --scheme      明暗标记，映射到 mdBook 的 --color-scheme
 * ------------------------------------------------------------------------ */
:root,
html.rust{
  /* Rust · 温和暖纸（与侧栏、弹层同一色温） */
  --page:#fbf8f2;--sidebar:#f5f1e9;--paper:#fffdf9;--paper-soft:#f6f2eb;
  --ink:#201b17;--ink-2:#5d554d;--muted:#756d64;
  --line:#e4dbcf;--line-strong:#c9bcad;--control-line:#998b7b;
  --accent:#b96543;--accent-strong:#9f5033;--accent-text:#9f5033;
  --accent-soft:rgba(185,101,67,.10);--sage:#6f8f82;
  --shadow-ink:rgba(50,40,29,.86);
  --surface-card:rgba(254,250,242,.92);--surface-soft:rgba(244,238,228,.68);
  --mark-bg:#f0c9a8;
  --link-color:var(--accent-strong);
  --scheme:light;
}

html.light{
  /* Light · 中性白纸（不带暖调，蓝灰强调） */
  --page:#ffffff;--sidebar:#f6f7f8;--paper:#ffffff;--paper-soft:#f5f7f9;
  --ink:#171b20;--ink-2:#46505a;--muted:#68737f;
  --line:#e3e7eb;--line-strong:#cbd3dc;--control-line:#9aa5b0;
  --accent:#2f74b8;--accent-strong:#205f9e;--accent-text:#205f9e;
  --accent-soft:rgba(47,116,184,.10);--sage:#4f7a6a;
  --shadow-ink:rgba(15,17,20,.86);
  --surface-card:rgba(255,255,255,.94);--surface-soft:rgba(243,244,246,.72);
  --mark-bg:#d8e8f7;
  --link-color:var(--accent-strong);
  --scheme:light;
}

html.coal{
  /* Coal · 中性深灰（冷灰蓝强调） */
  --page:#15171a;--sidebar:#1a1c20;--paper:#1f2125;--paper-soft:#26292e;
  --ink:#e6e7e8;--ink-2:#b7b9bc;--muted:#8b8e92;
  --line:#383c41;--line-strong:#4c5157;--control-line:#666c73;
  --accent:#7ba7d4;--accent-strong:#9dc0e4;--accent-text:#9dc0e4;
  --accent-soft:rgba(123,167,212,.12);--sage:#8aa79b;
  --shadow-ink:rgba(0,0,0,.90);
  --surface-card:rgba(31,33,37,.94);--surface-soft:rgba(38,41,46,.70);
  --mark-bg:#3c4653;
  --link-color:var(--accent);
  --scheme:dark;
}

html.navy{
  /* Navy · 蓝黑（青蓝强调） */
  --page:#101522;--sidebar:#141a2a;--paper:#1a2032;--paper-soft:#222a3d;
  --ink:#e2e7f2;--ink-2:#b2bbd0;--muted:#8892a8;
  --line:#2f3a52;--line-strong:#43506e;--control-line:#5d6b8c;
  --accent:#5fa8d8;--accent-strong:#86c2e8;--accent-text:#86c2e8;
  --accent-soft:rgba(95,168,216,.12);--sage:#7fb3a6;
  --shadow-ink:rgba(0,0,0,.92);
  --surface-card:rgba(26,32,50,.94);--surface-soft:rgba(34,42,61,.70);
  --mark-bg:#33445c;
  --link-color:var(--accent);
  --scheme:dark;
}

html.ayu{
  /* Ayu · 琥珀深色（暖色系独立选项；默认深色为 Coal） */
  --page:#0f1419;--sidebar:#141a20;--paper:#1a1f26;--paper-soft:#242a32;
  --ink:#e8e8e8;--ink-2:#b8b8b8;--muted:#8f9398;
  --line:#3a414a;--line-strong:#4e5661;--control-line:#687382;
  --accent:#d6a15c;--accent-strong:#edb96f;--accent-text:#e1ad66;
  --accent-soft:rgba(214,161,92,.12);--sage:#86a89b;
  --shadow-ink:rgba(0,0,0,.90);
  --surface-card:rgba(26,31,38,.94);--surface-soft:rgba(36,42,50,.70);
  --mark-bg:#5a4a2e;
  --link-color:var(--accent);
  --scheme:dark;
}

/* ---- §1.2 语义调色板（只分亮/暗）------------------------------------- */
:root,
html.rust,
html.light{
  /* 语义盒子：底色 + 标签文字色 + 边框色三者成对 */
  --def-line:#456f7c;--def-ink:#284f5b;
  --thm-line:#705d79;--thm-ink:#55425f;
  --ex-line:#58735b;--ex-ink:#3c5740;
  --think-line:#967331;--think-ink:#73551f;
  --err-line:#a7473d;--err-ink:#87342d;
  --method-line:#447a75;--method-ink:#2e615d;
  --def-bg:color-mix(in srgb,var(--surface-card) 96%,var(--def-line));
  --thm-bg:color-mix(in srgb,var(--surface-card) 96%,var(--thm-line));
  --ex-bg:color-mix(in srgb,var(--surface-card) 96%,var(--ex-line));
  --think-bg:color-mix(in srgb,var(--surface-card) 96%,var(--think-line));
  --err-bg:color-mix(in srgb,var(--surface-card) 96%,var(--err-line));
  --method-bg:color-mix(in srgb,var(--surface-card) 96%,var(--method-line));
  /* 语义锚色：只声明「这个语义是什么色相」。prefs.css 用锚色与当前主题表面混合出
     低饱和盒底；强调色切换时语义盒不变，避免内容层级跟着装饰色漂移。 */
  --sem-def:#456f7c;--sem-thm:#705d79;--sem-ex:#58735b;--sem-think:#967331;
  --sem-err:#a7473d;--sem-method:#447a75;--sem-intuition:#3f6bb0;
  /* 插图配色：亮色用深色，保证在浅底上可读 */
  --fig-blue:#2456a6;--fig-purple:#4c3d99;--fig-green:#1f6b3a;
  --fig-gold:#8a5a00;--fig-red:#9c2b25;--fig-neutral:#5b544a;

  /* 明暗派生的装饰量：阴影与封面水印 */
  --shadow-soft:color-mix(in srgb,var(--shadow-ink) 6%,transparent);
  --shadow-deep:color-mix(in srgb,var(--shadow-ink) 12%,transparent);
  --cover-mark:color-mix(in srgb,var(--accent) 8%,transparent);
}
html.coal,
html.navy,
html.ayu{
  /* 同上，暗色一套 */
  --def-line:#70a0ae;--def-ink:#a4c7d0;
  --thm-line:#9a8ba5;--thm-ink:#c8bdd0;
  --ex-line:#87aa89;--ex-ink:#afd0b0;
  --think-line:#c39a51;--think-ink:#ddbf87;
  --err-line:#d57769;--err-ink:#e7a097;
  --method-line:#70aaa4;--method-ink:#9acbc6;
  --def-bg:color-mix(in srgb,var(--surface-card) 92%,var(--def-line));
  --thm-bg:color-mix(in srgb,var(--surface-card) 92%,var(--thm-line));
  --ex-bg:color-mix(in srgb,var(--surface-card) 92%,var(--ex-line));
  --think-bg:color-mix(in srgb,var(--surface-card) 92%,var(--think-line));
  --err-bg:color-mix(in srgb,var(--surface-card) 92%,var(--err-line));
  --method-bg:color-mix(in srgb,var(--surface-card) 92%,var(--method-line));
  --sem-def:#70a0ae;--sem-thm:#9a8ba5;--sem-ex:#87aa89;--sem-think:#c39a51;
  --sem-err:#d57769;--sem-method:#70aaa4;--sem-intuition:#7fa1d8;
  /* 插图配色：暗色提高亮度，线条/填充/标注在深底上才可读 */
  --fig-blue:#7ba4e6;--fig-purple:#a99ff0;--fig-green:#6fbf87;
  --fig-gold:#d4ad5e;--fig-red:#e08a80;--fig-neutral:#c5beb0;

  --shadow-soft:color-mix(in srgb,var(--shadow-ink) 18%,transparent);
  --shadow-deep:color-mix(in srgb,var(--shadow-ink) 31%,transparent);
  --cover-mark:color-mix(in srgb,var(--sage) 9%,transparent);
}

/* ---- §1.3 派生量：调色板 → mdBook 变量 + 装饰量（只写一次）----------- */
:root{
  --bg:var(--page);
  --fg:var(--ink);
  --sidebar-bg:var(--sidebar);
  --sidebar-fg:var(--ink-2);
  --sidebar-non-existant:var(--muted);
  --sidebar-active:var(--link-color);
  --sidebar-spacer:var(--line);
  --scrollbar:var(--line-strong);
  --icons:var(--muted);
  --icons-hover:var(--ink);
  --links:var(--link-color);
  --inline-code-color:var(--link-color);
  --theme-popup-bg:var(--paper);
  --theme-popup-border:var(--line-strong);
  --theme-hover:color-mix(in srgb,var(--ink) 5%,transparent);
  --quote-bg:var(--paper-soft);
  --quote-border:var(--line);
  --table-border-color:var(--line);
  --table-header-bg:var(--paper-soft);
  --table-alternate-bg:color-mix(in srgb,var(--ink) 2%,transparent);
  --searchbar-border-color:var(--line-strong);
  --searchbar-bg:var(--paper);
  --searchbar-fg:var(--ink);
  --searchbar-shadow-color:var(--line);
  --searchresults-header-fg:var(--muted);
  --searchresults-border-color:var(--line);
  --searchresults-li-bg:var(--paper);
  --search-mark-bg:var(--mark-bg);
  --color-scheme:var(--scheme);
  --sidebar-header-border-color:var(--sidebar-active);
  --overlay-bg:color-mix(in srgb,var(--shadow-ink) 55%,transparent);

  /* 装饰量：全部由调色板算出，换主题自动跟随，组件不写颜色字面量 */
  --wash-accent:color-mix(in srgb,var(--accent) 7%,transparent);
  --wash-sage:color-mix(in srgb,var(--sage) 6%,transparent);
  --grid-line:color-mix(in srgb,var(--ink) 2%,transparent);
  --row-hover:color-mix(in srgb,var(--ink) 4%,transparent);
  /* 背景纹理（prefs.css §5.6）用的派生量：网格 / 方格粗线 / 点阵 / 纸张纤维。
     全部由墨色算出，因此随明暗主题与强调色自动变化，不需要逐档配色值。 */
  --grid-mid:color-mix(in srgb,var(--ink) 4%,transparent);
  --grid-strong:color-mix(in srgb,var(--ink) 8%,transparent);
  --dot:color-mix(in srgb,var(--ink) 15%,transparent);
  --fiber:color-mix(in srgb,var(--ink) 4.5%,transparent);
  --selection-bg:color-mix(in srgb,var(--accent) 22%,transparent);
}

/* ---- §1.4 尺寸令牌（与配色无关）-------------------------------------- */
:root{
  --radius:12px;
  --radius-sm:8px;
  /* 字号刻度：正文基线 16px，其余按角色命名（标签/图注/次级/控件/标题/封面）。
     组件里凡**正好等于**这些值的 font-size 一律改引令牌；不等于的字面量保持原样——
     刻度只做「同值换名」，不做取整，因此不会改变任何观感。 */
  --fs-2xs:10px;--fs-xs:11px;--fs-sm:var(--space-3);--fs-md:13px;--fs-lg:14px;
  --fs-body:16px;--fs-h4:17px;--fs-h3:20px;--fs-h2:27px;--fs-h1:36px;--fs-display:48px;

  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;
  --space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;
  --space-12:48px;--space-16:64px;--space-20:80px;
  --grid-gap:var(--space-6);--card-padding:var(--space-6);--section-gap:var(--space-12);--text-margin:var(--space-4);

  --content-max-width:780px;
  --page-padding:26px;
  /* 只声明 target。mdBook 0.5 的 --sidebar-width 是派生值
     （min(--sidebar-target-width, 80vw)，见框架 variables.css），在这里再写死
     一份会盖住派生值：拖拽把手改的是 target，宽度却永远不动（把手拖不动）。 */
  --sidebar-target-width:286px;
  --menu-bar-height:58px;

  /* 默认采用清晰的无衬线屏幕阅读；衬线保留为可选正文风格。 */
  --serif-display:var(--sans);
  --serif-text:"Source Han Serif SC","Noto Serif CJK SC","Songti SC","STSong",Georgia,serif;
  --serif:var(--serif-text);
  --sans:"Avenir Next","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",sans-serif;
  --mono:"SFMono-Regular","Roboto Mono",Consolas,"Liberation Mono",monospace;
}

/* ======================================================================== *
 * §2  共用组件（同样三本逐字相同，故与令牌层一并收在这里）
 * ------------------------------------------------------------------------
 * 盒 / 证明 / 表格 / 插图 / 封面 / 菜单栏按钮 / 页脚导航…中三本完全一致的部分。
 * 各书特有的组件与任何**值不同**的规则仍留在 <book>.css（它在本文件之后加载，
 * 同等特异性下由它覆盖）。抽取与验证方式同令牌层，见文件头。
 * ======================================================================== */

/* 底纹不再按主题各写一份：--wash-accent / --wash-sage / --grid-line 由
   §1.3 从调色板算出，换主题（含新增主题）自动跟随。 */
::selection{background:var(--selection-bg)}
/* 链接配色只有一个来源：--links 令牌（浅色 = accent-strong、暗色 = accent，见 §1）。
   这里曾另有一条 `html.navy a,…{color:var(--accent)}
` 兜底，它与 mdBook 自带的
   `.chapter li a{color:var(--sidebar-fg)}
` 特异性打平（同为 0,1,2）而靠后加载胜出，
   把侧栏链接的 hover 与 .active 一并压成同色——暗色主题下侧栏没有悬停反馈、当前项
   也认不出来。正文链接由 mdBook 的 `.content a:link{color:var(--links)}
` 覆盖，
   故兜底删掉，只留令牌与悬停两行。 */
a{color:var(--links)}
a:hover{color:var(--accent-text)}
/* 冷启动期禁用过渡：避免主题、侧栏状态与后注入控件在首帧闪动。 */
html:not(.tutorials-ready) *,
html:not(.tutorials-ready) *::before,
html:not(.tutorials-ready) *::after{
  animation:none!important;
  scroll-behavior:auto!important;
  transition:none!important;
}
/* 侧栏 —— 轻量、连续的目录流：保留编号与层级，当前页只做克制的颜色/字重强调。 */
#mdbook-sidebar{
  font-family:var(--sans);
  border-right:1px solid var(--line);
  background:var(--sidebar);
}
#mdbook-sidebar::-webkit-scrollbar{width:var(--space-1)}
#mdbook-sidebar::-webkit-scrollbar-thumb{background:var(--line-strong)}
.menu-title{
  font-family:var(--sans)!important;
  font-weight:600;font-size:14px;line-height:1.3;
  letter-spacing:.02em;
}
#mdbook-menu-bar{font-family:var(--sans)}
#mdbook-menu-bar .icon-button,#mdbook-menu-bar .right-buttons a{
  border:1px solid transparent;border-radius:7px;
  transition:transform 140ms ease,border-color 140ms ease,background 140ms ease,color 140ms ease;
}
#mdbook-menu-bar .icon-button:hover,#mdbook-menu-bar .right-buttons a:hover{transform:translateY(-1px);border-color:var(--line);background:var(--paper)}
#mdbook-menu-bar .icon-button:active,#mdbook-menu-bar .right-buttons a:active{transform:translateY(1px) scale(.975)}
#mdbook-menu-bar .menu-title{color:var(--ink)}
/* 「返回教程库」（theme/js 注入）：书内没有任何回导览首页的入口，菜单栏右侧补一个。
   窄屏收起文案只留图标；悬停/按下的反馈与相邻图标按钮保持同一套。 */
#mdbook-menu-bar .right-buttons{display:flex;align-items:center;gap:2px}
#mdbook-menu-bar .portal-home{
  display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 10px;
  font-size:var(--fs-md);font-weight:500;letter-spacing:.01em;text-decoration:none;
  color:var(--ink-2);
  border:1px solid transparent;border-radius:7px;
  transition:transform 140ms ease,border-color 140ms ease,background 140ms ease,color 140ms ease;
}
#mdbook-menu-bar .portal-home:hover{transform:translateY(-1px);border-color:var(--line);background:var(--paper);color:var(--ink)}
#mdbook-menu-bar .portal-home:active{transform:translateY(1px) scale(.975)}
#mdbook-menu-bar .portal-home svg{display:block;width:15px;height:15px;fill:currentColor}
#mdbook-menu-bar .portal-home-label{white-space:nowrap}
#mdbook-searchbar{
  font-family:var(--sans);font-size:var(--fs-md);
  border-radius:0;
}
/* 侧栏以章节为主层级，沿用 mdBook 的缩进与节奏，弱化当前页内的标题层级避免重复目录。
   另补原生两处显示缺陷：
   ① toc.js 的字符串模板有嵌套 <li>，被 HTML 解析器拆开后留下空壳条目，原生
      会渲染成空行——隐藏之；
   ② 嵌套小节树用 width:auto（而非 100%）避免逐层外溢。 */
#mdbook-sidebar .chapter li.chapter-item:empty{display:none;margin:0}
#mdbook-sidebar .chapter ol{width:auto}
#mdbook-sidebar .chapter-link-wrapper{display:flex;align-items:center;min-width:0;gap:4px}
#mdbook-sidebar .chapter-link-wrapper>a{flex:1;min-width:0;border-radius:5px;transition:color 140ms ease,background-color 140ms ease}
#mdbook-sidebar .chapter-link-wrapper>a:hover:not(.active):not(.current-header){background:var(--theme-hover)}
#mdbook-sidebar .chapter .on-this-page{display:none}
#mdbook-sidebar .chapter a.active,
#mdbook-sidebar .chapter a.current-header{
  border-radius:5px;background:var(--accent-soft);color:var(--accent-text);font-weight:600;
}
#mdbook-sidebar .chapter li.part-title{
  margin:14px 0 3px;padding-top:9px;
  border-top:1px solid var(--line);
  color:var(--muted);
  font:700 var(--fs-xs)/1.5 var(--sans);
  letter-spacing:.04em;
}
#mdbook-sidebar .chapter li a.active{font-weight:600}
/* mdBook 的原生折叠箭头样式服务于 <a>；我们的可键盘操作按钮需要清除浏览器
   默认边框与底色，同时保留同一 chevron、旋转和右侧对齐。 */
#mdbook-sidebar .chapter-link-wrapper > button.chapter-fold-toggle{
  appearance:none;-webkit-appearance:none;
  display:grid;flex:0 0 30px;place-items:center;
  width:30px;height:30px;margin:0 0 0 auto;padding:0;
  border:0;border-radius:4px;background:transparent;
  color:var(--sidebar-fg);font:inherit;line-height:1;
  opacity:.68;cursor:pointer;
  transition:background-color 140ms ease,color 140ms ease,opacity 140ms ease;
}
#mdbook-sidebar .chapter-link-wrapper > button.chapter-fold-toggle:hover{
  background:var(--theme-hover);color:var(--sidebar-active);opacity:1;
}
#mdbook-sidebar .chapter-link-wrapper > button.chapter-fold-toggle:active{
  background:var(--accent-soft);
}
#mdbook-sidebar .chapter-link-wrapper > button.chapter-fold-toggle div{
  font:500 15px/1 var(--sans);
  transition:transform 180ms ease;
}
/* 页脚翻页（mdBook 原生 .nav-wrapper / .nav-wide-wrapper）。
 * 规范：导航与控件一律无衬线 —— mdBook 默认让它们从 body 继承衬线，故显式覆盖。 */
.nav-wrapper,.nav-wide-wrapper{font-family:var(--sans)}
.nav-wrapper a,.nav-wide-wrapper a{font-family:var(--sans)}
.nav-chapters .title,.mobile-nav-chapters .title{font-weight:600}
.nav-chapters.previous:hover,.nav-chapters.next:hover,
.mobile-nav-chapters.previous:hover,.mobile-nav-chapters.next:hover{color:var(--accent-text)}
/* 正文容器 */
.content{
  font-family:var(--sans);
  font-size:var(--fs-body);line-height:1.72;
  color:var(--ink);
  padding:12px calc(var(--page-padding) + 15px) 120px calc(var(--page-padding) + 20px);
  overflow-wrap:break-word;
}
@media (max-width:900px){
  .content{padding-left:var(--page-padding);padding-right:var(--page-padding)}
}
.content b,.content strong{font-weight:700;color:var(--ink)}
/* 标题层级 */
.content h1,
.content h2,
.content h3,
.content h4{font-family:var(--serif-display);color:var(--ink);letter-spacing:.01em}
.content h1{
  margin:0 0 var(--space-5);padding:0;
  border:0;
  font-size:32px;line-height:1.28;font-weight:700;
}
.content h2{
  margin:var(--space-16) 0 var(--space-5);padding:0 0 10px;
  border-bottom:1px solid var(--line);
  font-size:24px;line-height:1.35;font-weight:700;
}
.content h3{margin:40px 0 var(--space-3);font-size:19px;line-height:1.4;font-weight:650}
.content h4{
  display:flex;align-items:center;gap:var(--space-2);
  margin:30px 0 6px;font-size:15px;font-weight:600;
}
.content h4::before{content:"";width:14px;border-top:1px solid var(--accent)}
/* mdBook 把标题文字整体包在 <a class="header"> 里（不是旧版的附加 # 符号），
 * 因此这里必须继承颜色并保持可见；锚点提示改用 ::after 悬停出现。 */
.content .header{color:inherit;text-decoration:none}
.content .header:hover{color:var(--accent-text)}
.content h1 .header::after,
.content h2 .header::after,
.content h3 .header::after,
.content h4 .header::after{
  content:"#";margin-left:var(--space-2);color:var(--muted);
  font:400 var(--fs-sm)/1 var(--mono);opacity:0;
}
.content h1:hover .header::after,
.content h2:hover .header::after,
.content h3:hover .header::after,
.content h4:hover .header::after{opacity:1}
/* 列表 / 引用 */
.content ul,.content ol{padding-left:1.5em}
.content li{margin:5px 0}
.content blockquote{
  margin:var(--space-4) 0;padding:var(--space-3) 18px;
  border-left:3px solid var(--line-strong);
  background:var(--paper-soft);color:var(--ink-2);border-radius:0 6px 6px 0;
  font-size:15px;
}
.content hr{margin:42px 0;border:0;border-top:1px dashed var(--line-strong)}
.content code{
  font-family:var(--mono);font-size:.88em;
  background:var(--paper-soft);color:var(--accent-strong);
  padding:1px 5px;
}
.content pre{
  background:var(--paper-soft);border:1px solid var(--line);
  padding:14px var(--space-4);overflow-x:auto;
}
.content pre code{background:none;color:var(--ink);padding:0}
/* ======================================================================== *
 * §3  语义盒子（由 mathbook 预处理器生成）
 * ======================================================================== */
.box{
  position:relative;margin:var(--space-5) 0;padding:18px 22px 14px;
  border:1px solid var(--line);border-left:3px solid var(--line-strong);
  border-radius:7px;background:var(--paper);
}
.box.def{border-left-color:var(--def-line);background:var(--def-bg)}
.box.thm{border-left-color:var(--thm-line);background:var(--thm-bg)}
.box.ex{border-left-color:var(--ex-line);background:var(--ex-bg)}
.box.think{border-left-color:var(--think-line);background:var(--think-bg)}
.box.errata{border-left-color:var(--err-line);background:var(--err-bg)}
.box.method{border-left-color:var(--method-line);background:var(--method-bg)}
.box .box-tag{
  display:block;width:max-content;max-width:100%;margin:0 0 var(--space-2);
  font:700 var(--fs-2xs)/1.55 var(--mono);letter-spacing:.055em;
}
.def .box-tag{color:var(--def-ink)}
.thm .box-tag{color:var(--thm-ink)}
.ex .box-tag{color:var(--ex-ink)}
.think .box-tag{color:var(--think-ink)}
.errata .box-tag{color:var(--err-ink)}
.method .box-tag{color:var(--method-ink)}
.box p:first-of-type,
.box > p:first-child{margin-top:2px}
.box>:last-child{margin-bottom:0}
/* 证明块 */
.proof{
  margin:var(--space-4) 0 var(--space-1);padding:var(--space-3) 17px 6px;
  border-top:1px solid var(--line);color:var(--ink-2);
}
.proof .pf-label{
  display:inline-block;margin-right:var(--space-2);color:var(--ink);
  font:700 var(--fs-2xs)/1.4 var(--mono);letter-spacing:.12em;
}
.proof .qed{float:right;color:var(--muted);font-weight:700}
/* 提示条 / 课程预告 */
.note,.preview{
  margin:var(--space-4) 0;padding:var(--space-3) 17px;
  border:1px solid var(--line);background:var(--paper-soft);
  color:var(--ink-2);font-size:14.5px;
}
.preview{border-style:dashed}
.preview .box-tag{
  display:block;margin-bottom:5px;color:var(--muted);
  font:700 var(--fs-2xs)/1.4 var(--mono);letter-spacing:.1em;
}
.meta-strip{
  margin:14px 0;padding:11px var(--space-4);border-left:3px solid var(--accent);
  background:var(--paper-soft);color:var(--ink-2);
  font:13.5px/1.7 var(--sans);
}
details.sol-box>summary{
  display:flex;align-items:center;gap:9px;
  padding:10px 17px;color:var(--ex-ink);
  background:var(--ex-bg);
  font:700 var(--fs-xs)/1.5 var(--sans);letter-spacing:.06em;
  cursor:pointer;list-style:none;user-select:none;
  transition:background 140ms ease;
}
details.sol-box>summary::-webkit-details-marker{display:none}
details.sol-box>summary::before{
  content:"";width:6px;height:6px;
  border-right:1px solid currentColor;border-bottom:1px solid currentColor;
  transform:rotate(-45deg);transition:transform .16s;
}
details.sol-box[open]>summary::after{content:"收起"}
details.sol-box>summary:hover{background:color-mix(in srgb,var(--ex-line) 13%,var(--ex-bg))}
details.sol-box[open]{border-color:var(--ex-line)}
details.sol-box[open]>summary{border-bottom:1px solid var(--line)}
details.sol-box[open]>summary::before{transform:rotate(45deg)}
.sol-inner{padding:var(--space-2) 19px var(--space-3)}
/* 解答工具条 */
.sol-toolbar{margin:26px 0 var(--space-2);text-align:right}
.sol-toolbar button{
  padding:6px 13px;border:1px solid var(--line-strong);background:var(--paper);
  color:var(--ink-2);font:600 var(--fs-xs)/1.4 var(--sans);letter-spacing:.04em;cursor:pointer;
}
.sol-toolbar button:hover{border-color:var(--ink);color:var(--ink)}
.sol-toolbar button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
/* 交叉引用（[@id]） */
a.crossref{
  color:var(--links);
  border-bottom:1px solid color-mix(in srgb,var(--accent) 45%,transparent);
  text-decoration:none;white-space:nowrap;
}
a.crossref:hover{background:var(--accent-soft)}
/* ======================================================================== *
 * §4  表格 / 图 / 公式
 * ======================================================================== */
.content table{
  width:100%;margin:19px 0;border-collapse:collapse;
  /* framework.css 为窄表提供横向滚动时将 table 设为 block；若整张表铺满背景，
     短表内容之后会在暗色主题留下大片空表面。单元格/表头各自承载表面色即可。 */
  background:transparent;font:var(--fs-lg)/1.72 var(--sans);
}
.content th,.content td{
  padding:9px var(--space-3);border:1px solid var(--line);
  text-align:left;vertical-align:top;
  /* 中文没有词间空格，默认会在任意两字之间断行；keep-all 保证词组完整 */
  word-break:keep-all;
  overflow-wrap:break-word;
}
/* 首列多为短编号或类别名，整列不换行，避免「线性空/间」这类断词 */
.content th:first-child,.content td:first-child{white-space:nowrap}
.content th{
  background:var(--paper-soft);color:var(--ink-2);
  font:700 var(--fs-2xs)/1.5 var(--mono);letter-spacing:.06em;
}
.content tbody tr:nth-child(even) td{background:var(--table-alternate-bg)}
.content figure{
  margin:28px 0;padding:var(--space-5) 18px var(--space-3);
  border:1px solid var(--line);background:var(--paper);text-align:center;
}
.content figcaption{
  max-width:580px;margin:10px auto 0;color:var(--muted);
  font:var(--fs-md)/1.65 var(--sans);
}
/* 迁移自旧版的插图类（.diagram-*）：原来定义在旧站样式里，
 * 移植主题时必须一并带回，否则 SVG 只有类名没有样式，会被浏览器
 * 用默认黑色填充画成实心块。 */
.content figure svg{color:var(--ink)}
.content figure .diagram-grid{stroke:var(--line);stroke-width:1;fill:none}
.content figure .diagram-axis{stroke:var(--line-strong);stroke-width:1.25;fill:none}
.content figure .diagram-accent{stroke:var(--accent);fill:none;stroke-width:3}
.content figure .diagram-sage{stroke:var(--sage);fill:none;stroke-width:3}
.content figure .diagram-muted{stroke:var(--muted);fill:none;stroke-width:1.5;stroke-dasharray:5 5}
.content figure .diagram-fill-accent{fill:var(--accent);fill-opacity:.10;stroke:var(--accent);stroke-width:1}
.content figure .diagram-fill-sage{fill:var(--sage);fill-opacity:.11;stroke:var(--sage);stroke-width:1}
.content figure .diagram-node{fill:var(--paper);stroke:var(--line-strong);stroke-width:1.2}
.content figure .diagram-text{fill:var(--ink);font-weight:600;font-size:var(--fs-md);font-family:var(--sans)}
.content figure .diagram-note{fill:var(--ink-2);font-size:var(--fs-md);font-family:var(--sans)}
.content figure .diagram-mono{fill:var(--accent-text);font-weight:700;font-size:var(--fs-xs);font-family:var(--mono)}
.content figure .diagram-accent,
.content figure .diagram-sage,
.content figure .diagram-muted,
.content figure .diagram-grid,
.content figure .diagram-axis{fill:none}
/* 正文 SVG 图形：文字用主题字体与颜色；具体颜色由 --fig-* 令牌给出 */
.content figure svg text{font-family:var(--sans)}
.content figure svg .fg-axis{stroke:var(--ink-2)}
/* 正文 SVG 图形：用主题令牌着色，暗色下自动适配 */
.content figure svg.figure-svg{margin:2px auto}
.content figure .fg-axis{stroke:var(--ink-2);stroke-width:1.3}
.content figure .fg-vec{stroke:var(--accent-text);stroke-width:2.2}
.content figure .fg-dash{stroke:var(--line-strong);stroke-width:1;stroke-dasharray:4 3}
.content figure .fg-label{fill:var(--ink-2);font:var(--fs-sm) var(--sans)}
.content figure .fg-label-a{fill:var(--accent-text);font:var(--fs-sm) var(--sans)}
.content figure .fg-label-v{fill:var(--accent-text);font:italic var(--fs-md) var(--serif)}
.content figure .fg-muted{fill:var(--muted);font:var(--fs-sm) var(--sans)}
.content figure .fg-point{fill:var(--accent-text)}
.content figure .mk-axis{fill:var(--ink-2)}
.content figure .mk-vec{fill:var(--accent-text)}
.katex-display{margin:15px 0;padding:5px 2px;overflow-x:auto;overflow-y:hidden}
.katex-display>.katex{font-size:1.02em}
/* ======================================================================== *
 * §5  首页封面 / 导览卡片 / 目标 / 自检表
 * ======================================================================== */
.chapter-cover{
  position:relative;margin:0 0 30px;padding:28px 0 30px;
  overflow:hidden;border-bottom:1px solid var(--line);
}
.chapter-cover::before{
  content:none;
}
.chapter-cover::after{
  content:none;
}
.chapter-cover>*{position:relative;z-index:1}
.chapter-cover .kicker{
  margin:0 0 14px;color:var(--accent-text);
  font:700 var(--fs-xs)/1.4 var(--sans);letter-spacing:.1em;
}
.chapter-cover .subtitle{
  max-width:760px;margin:0;color:var(--ink-2);
  font:16px/1.7 var(--sans);
}
.cover-chips{
  display:grid;grid-template-columns:repeat(2,1fr);
  margin:28px 0 18px;border-top:1px solid var(--line);
}
.cover-chips span{
  padding:10px 9px 10px 0;border-bottom:1px solid var(--line);
  color:var(--muted);font:var(--fs-2xs)/1.55 var(--mono);
}
.cover-chips span:nth-child(odd){border-right:1px solid var(--line)}
.cover-chips span:nth-child(even){padding-left:var(--space-3)}
.chapter-cover .meta{color:var(--muted);font:var(--fs-2xs)/1.8 var(--mono)}
.chapter-cover .meta b{font-weight:600;color:var(--ink-2)}
.cover-details{margin-top:14px;color:var(--muted);font:var(--fs-sm)/1.7 var(--sans)}
.cover-details summary{width:max-content;max-width:100%;color:var(--ink-2);cursor:pointer}
.cover-details[open] .meta{margin-top:10px}
.index-cards{
  position:relative;display:block;margin:25px 0 var(--space-3);
  padding-left:0;border-left:0;
}
.index-cards a{
  position:relative;display:grid;grid-template-columns:54px 1fr auto;
  gap:3px var(--space-3);margin:0;padding:13px 10px 13px 0;
  border:0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none;
}
.index-cards a::before{
  content:"";position:absolute;top:20px;left:0;
  width:4px;height:4px;border-radius:50%;background:var(--accent);
}
.index-cards a:hover{background:var(--paper-soft);box-shadow:none}
.index-cards .no{grid-row:1/3;color:var(--accent-text);font:700 var(--fs-2xs)/1.4 var(--mono)}
.index-cards .t{font-family:var(--serif-display);font-weight:700;font-size:var(--fs-h4);line-height:1.3}
.index-cards .d{grid-column:2/4;color:var(--muted);font:var(--fs-sm)/1.55 var(--mono)}
.index-cards .go{grid-column:3;grid-row:1;color:var(--muted);font:var(--fs-2xs)/1.4 var(--mono)}
.study-paths{
  display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);
  margin:var(--space-6) 0 var(--space-10);
}
.study-path{
  display:flex;flex-direction:column;min-height:154px;padding:18px;
  border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-card);
}
.study-path .path-kicker{color:var(--accent-text);font:700 var(--fs-2xs)/1.4 var(--mono);letter-spacing:.09em}
.study-path strong{margin:var(--space-3) 0 6px;font:600 18px/1.3 var(--serif-display)}
.study-path p{margin:0;color:var(--muted);font:12.5px/1.65 var(--sans)}
.study-path a{margin-top:auto;padding-top:13px;color:var(--ink-2);font:700 var(--fs-xs)/1 var(--sans);text-decoration:none}
.study-path a:hover{color:var(--accent-text)}
.lesson-brief{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  margin:var(--space-6) 0 34px;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;
  background:var(--surface-card);box-shadow:none;
}
html.navy .lesson-brief,html.coal .lesson-brief,html.ayu .lesson-brief{box-shadow:0 var(--space-6) var(--space-12) var(--shadow-deep)}
.lesson-brief>div{padding:18px var(--space-5);border-right:1px solid var(--line)}
.lesson-brief>div:last-child{border-right:0}
.lesson-brief .brief-label{display:block;margin-bottom:var(--space-2);color:var(--accent-text);font:700 var(--fs-2xs)/1.4 var(--mono);letter-spacing:.1em}
.lesson-brief strong{display:block;margin-bottom:5px;font:600 15px/1.45 var(--sans)}
.lesson-brief p{margin:0;color:var(--muted);font:12.5px/1.62 var(--sans)}
ul.objlist{margin:7px 0;padding:0;list-style:none}
ul.objlist li{
  margin:0;padding:10px 13px;border-top:1px solid var(--line);
  font-size:14.5px;
}
ul.objlist li:last-child{border-bottom:1px solid var(--line)}
.obj-id{margin-right:7px;color:var(--accent-text);font:700 var(--fs-xs)/1.4 var(--mono)}
.obj-lv{margin-left:7px;color:var(--muted);font:var(--fs-2xs)/1.4 var(--mono);white-space:nowrap}
.page-toc-title{
  grid-column:1/-1;color:var(--muted);
  font:700 var(--fs-2xs)/1.5 var(--mono);letter-spacing:.12em;
}
.page-toc a{
  color:var(--ink-2);text-decoration:none;
  font:12.5px/1.65 var(--sans);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.page-toc a::before{
  content:"→";margin-right:7px;color:var(--accent);
  font:600 var(--fs-xs)/1 var(--mono);
}
.page-toc a:hover{color:var(--accent-text)}
/* 锚点跳转别被固定菜单栏遮住 */
.content h1,.content h2,.content h3,.content h4{scroll-margin-top:66px}
.content .box,.content .proof{scroll-margin-top:66px}
#progress{
  position:fixed;top:0;left:0;z-index:150;
  width:0;height:2px;background:var(--accent);
}
/* ======================================================================== *
 * §6.5  侧栏
 *   全部交还原生（详见 §2）。这里只保留与主题相关的滚动条与焦点环收尾；
 *   折叠钮、吸顶分组标题、当前项底色/色条等自建样式已移除。
 * ======================================================================== */
#mdbook-sidebar .sidebar-scrollbox{scrollbar-width:thin;scrollbar-color:var(--scrollbar) var(--sidebar)}
#mdbook-sidebar .sidebar-scrollbox::-webkit-scrollbar{width:var(--space-1)}
#mdbook-sidebar .sidebar-scrollbox::-webkit-scrollbar-track{background:var(--sidebar)}
#mdbook-sidebar .sidebar-scrollbox::-webkit-scrollbar-thumb{background:var(--scrollbar)}
#mdbook-sidebar :where(a,button):focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-text),0 0 0 var(--space-1) var(--sidebar)!important}
#mdbook-sidebar-resize-handle{width:5px;right:0}
#mdbook-sidebar-resize-handle:hover .sidebar-resize-indicator{background:var(--accent)}
