/* thezencircle.com 站点样式 · 手机优先 · 无框架
   U11 结构单元：token 名是契约（design/contract.md §2），U15 只改值不改名。
   皮肤值只写在 html[data-skin=…] 块里，不许进 :root；U18：三套版式主题 a=静室 / b=书案（默认）/ c=杂志；本文件只放 a 的值与结构性刻度。
   亮/暗：构建期写 <html data-skin="b" data-theme="light">，亮暗归 U12，版式主题切换/持久化 localStorage("skin") 归 src/reading.js。 */

/* == 字体栈 / 字号阶 / 间距 / 圆角 / 阴影：与皮肤无关的结构性刻度（全站只允许这些取值） == */
:root {
  /* 字体栈（三套中文字体分工，design/reference-spec.md §1） */
  --font-display: "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
  --font-kai: "LXGW WenKai Screen", "Kaiti SC", STKaiti, KaiTi, serif;
  --font-body: var(--font-kai);
  --font-ui: system-ui, -apple-system, "PingFang SC", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif;

  /* 字号阶（px）：14 16 18 20 22 26 30 34 44 60（reference-spec §3） */
  --fs-14: .875rem;
  --fs-16: 1rem;
  --fs-18: 1.125rem;
  --fs-20: 1.25rem;
  --fs-22: 1.375rem;
  --fs-26: 1.625rem;
  --fs-30: 1.875rem;
  --fs-34: 2.125rem;
  --fs-44: 2.75rem;
  --fs-60: 3.75rem;
  --fs-body: 1.0625rem; /* 正文基准 17px ≥16px；U15 皮肤可覆盖 */

  /* 间距刻度（4/8 基，px） */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-6: 24px; --space-8: 32px; --space-12: 48px; --space-16: 64px; --space-24: 96px;

  /* 圆角 / 阴影（值随皮肤，名字冻结；U31：阴影减淡——苹果风少投影，面板/弹层用毛玻璃 + 1px 边线代替重阴影）
     U40：全站圆角收敛到这三档，不再允许 ad-hoc 值（原 14/6/4/50% 特例已全部归到这三档，见 themes/reading/search/layout 各处 U40 注）。
     三档语义：icon=控件/小元素 8px；card=卡片/弹层 12px；pill=胶囊与圆钮 999px。同一 class 全站只用同一档。 */
  --radius-icon: 8px;
  --radius-card: 12px;
  --radius-pill: 999px;
  --shadow-1: 0 1px 2px rgb(0 0 0 / .05);
  --shadow-2: 0 12px 32px rgb(0 0 0 / .08);
}

/* == A 静室（D1）· 亮（值取自 design/proto2 D1 样张；b 书案 / c 杂志 的值在各自 themes/ 文件头） == */
html[data-skin="a"] {
  --bg: #f6f1e6;
  --bg-elevated: #fffcf5;
  --text: #2b261e;
  --text-secondary: #6d6354;
  --accent: #8c5409;
  --accent-weak: #efe3c6;
  --note: #365f8c;
  --border: #d9ceb8;
  color-scheme: light;
}

/* == A 静室 · 暗 == */
html[data-skin="a"][data-theme="dark"] {
  --bg: #16140f;
  --bg-elevated: #211e18;
  --text: #e7e2d6;
  --text-secondary: #a39a8a;
  --accent: #d99a3d;
  --accent-weak: #2e2616;
  --note: #8ab4e8;
  --border: #3a352b;
  color-scheme: dark;
}

/* == b 书案 / c 杂志（U18）：token 值在 src/styles/themes/b-shuan.css、c-zazhi.css 文件头的 html[data-skin="b"|"c"] 块；token 名不得改（design/contract.md §2） == */
/* base.css · reset / 排版基线（U11；值一律来自 tokens.css 的变量） */

* { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--fs-body);  /* 17px ≥ 16px（reference-spec §3 字号阶） */
  line-height: 1.75;
  overflow-wrap: anywhere;   /* 长串不撑破布局 */
}

/* ---- 无横向滚动的兜底 ---- */
body { overflow-x: hidden; }
main, article { min-width: 0; }

img { max-width: 100%; height: auto; display: block; }

/* ---- 跳转链接（无障碍） ---- */
.skip-link {
  position: absolute;
  left: -9999px;
  /* U50 A5：常态也给 ≥44px 高度（免聚焦态被按未聚焦 rect 量成 68×29.8）；
   聚焦态另有 min-height 46px + padding（见下）。反正在屏外，无视觉影响。 */
  display: flex;
  align-items: center;
  min-height: 44px;
}
.skip-link:focus {
  left: 8px; top: 8px;
  z-index: 100;
  background: var(--bg-elevated);
  color: var(--text);
  padding: 12px 16px;
  border-radius: var(--radius-card);
  /* U29 P8：焦点态也達 44px 触控目标 */
  display: inline-flex;
  align-items: center;
  min-height: 46px;
}

/* ---- 阅读进度条（U11 只给容器；滚动行为归 U12，宽度更新不得加过渡）
   U31：3px 实条 → 2px 细线（苹果风，少装饰） ---- */
#reading-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0;
  background: var(--accent);
  z-index: 50;
}
/* layout.css · 顶栏 / 抽屉导航 / hero / 落地页 / 讲义页骨架 / 面包屑 / 页脚（U11）
   颜色/圆角/阴影/字体一律用 tokens.css 的变量；A 的皮肤级变体写成 html[data-skin="a"] … 形式，不写死进基础样式。 */

/* ---- 顶部导航（sticky；桌面 ≥768 内联四项，两院同组 / 园地独立组） ---- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: 0 var(--space-3);
  padding-top: env(safe-area-inset-top);
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  -webkit-backdrop-filter: blur(16px); /* U40：全站玻璃强度统一 16px（原 8/16/20 三种）；玻璃只留给有内容从底下滚过的悬浮层 */
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
}
.site-name {
  color: var(--text);
  text-decoration: none;
  font-weight: 700;
  font-size: var(--fs-16);
  display: block;
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 44px;
  min-height: 44px;
  white-space: nowrap;
}
.site-nav { display: none; align-items: stretch; }
.site-nav a, .site-nav .site-nav-current {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 var(--space-3);
  color: var(--text-secondary);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  white-space: nowrap;
}
.site-nav a[aria-current="page"], .site-nav .site-nav-current {
  color: var(--accent);
  font-weight: 600;
}
.nav-group { display: inline-flex; align-items: center; }

/* 汉堡按钮（≤767px 显示；A1c 移动端导航入口） */
.nav-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: none;
  border: 1px solid var(--border);
  border-radius: var(--radius-icon);
  background: var(--bg-elevated);
  color: var(--text);
  cursor: pointer;
}
/* U43：汉堡由内联 SVG 改为字符 ☰（与 reading.js P16 入口「☰ 目录 · 设置」同字形）；图标来源收敛见 contract §5-U43 */
.nav-toggle-ico { font-family: var(--font-ui); font-size: 20px; line-height: 1; }

/* ---- 抽屉导航（≤767px；A1c） ---- */
.nav-overlay {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgb(0 0 0 / .4);
}
.site-drawer {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  z-index: 60;
  width: min(20rem, 82vw);
  background: var(--bg-elevated);
  border-left: 1px solid var(--border);
  box-shadow: var(--shadow-2);
  transform: translateX(100%);
  transition: transform .2s ease-out;
  padding: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.site-drawer.open { transform: translateX(0); }
.drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 44px;
}
.drawer-title { font-family: var(--font-kai); font-size: var(--fs-18); color: var(--text); }
.nav-close {
  width: 44px; height: 44px;
  flex: none; /* U50 A7：flex 行内被挤压（a 主题 /jing/、/search/ 实测 39.97×44），钉住 44×44 */
  border: 1px solid var(--border);
  border-radius: var(--radius-icon);
  background: transparent;
  color: var(--text);
  cursor: pointer;
}
.site-drawer a, .site-drawer .site-nav-current {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 0 var(--space-3);
  color: var(--text);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  border-radius: var(--radius-icon);
}
.site-drawer a[aria-current="page"], .site-drawer .site-nav-current {
  color: var(--accent);
  font-weight: 600;
  background: var(--accent-weak);
}
.site-drawer .nav-group { display: flex; flex-direction: column; align-items: stretch; gap: var(--space-1); }
.site-drawer .nav-group--yuan { border: 1px solid var(--border); border-radius: var(--radius-card); padding: var(--space-2); }
.site-drawer .nav-group--yandi { border: 1px dashed var(--border); border-radius: var(--radius-card); padding: var(--space-2); }

@media (min-width: 768px) {
  .site-nav { display: flex; }
  .nav-toggle, .site-drawer, .nav-overlay { display: none; }
}

/* ---- 主体布局 ---- */
main {
  padding: var(--space-3) var(--space-4) var(--space-12);
}
@media (min-width: 768px) {
  main { padding: var(--space-6) var(--space-8) var(--space-16); }
}
@media (min-width: 1100px) {
  main { max-width: 46rem; margin: 0 auto; padding: var(--space-8) var(--space-6) 80px; }
}

/* ---- 面包屑（院 → 大纲 → 课，逐级可点） ---- */
.breadcrumb {
  font-family: var(--font-ui);
  font-size: var(--fs-14);
  color: var(--text-secondary);
  min-width: 0;
  line-height: 1.5;
  margin-bottom: var(--space-2);
}
.breadcrumb a { color: var(--text-secondary); display: inline-flex; align-items: center; justify-content: center; min-height: 46px; min-width: 44px; padding: 0 var(--space-1); }
.breadcrumb [aria-current="location"] { color: var(--text); }

/* 返回按钮（现仅离线页用） */
.back-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 var(--space-4);
  border-radius: var(--radius-pill);
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  color: var(--text);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: var(--fs-14);
}
.back-link:active { background: var(--accent-weak); }

/* ---- hero（学院首页 + 落地页；装饰元素 [data-hero-mark] 由皮肤决定形状） ----
   U34：渐变底退场（U31 同方向：纸面 + 大留白） */
.hero {
  padding: var(--space-12) var(--space-4) var(--space-8);
  text-align: left; /* U43：基线改左对齐（U39 §6.2「首屏一个焦点」；a/b/c 三套皮肤本就覆写为左对齐，基线随骨架收敛） */
  border-bottom: 1px solid var(--border);
  background: none;
}
.hero-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-34);
  letter-spacing: 1.5px;
  color: var(--accent);
  line-height: 1.3;
  margin: var(--space-4) 0 0;
}
.hero-sub {
  font-family: var(--font-kai);
  font-size: var(--fs-20);
  color: var(--text-secondary);
  margin: var(--space-4) 0 0;
  letter-spacing: .75px;
}
.hero-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-6);
}
.pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 12px var(--space-8);
  border-radius: var(--radius-pill);
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  text-decoration: none;
}
.pill--solid { background: var(--accent); color: #fff; border: 1px solid var(--accent); }
.pill--outline { background: transparent; color: var(--accent); border: 1px solid var(--accent); }
.textlink {
  color: var(--text-secondary);
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
/* A 经卷的 hero 装饰 = 双细线（B 的「圈相」、C 的工具条由 U15 在 skins.css 里换） */
html[data-skin="a"] .hero-mark {
  width: 64px;
  border-top: 1px solid var(--border);
  box-shadow: 0 3px 0 var(--border);
  margin: 0 auto;
}
@media (min-width: 1024px) {
  .hero { padding: var(--space-24) var(--space-12) var(--space-16); }
  .hero-title { font-size: var(--fs-60); }
  .hero-sub { font-size: var(--fs-22); }
  .hero-actions { flex-direction: row; justify-content: center; gap: var(--space-6); }
}

/* ---- 落地页卡片（大纲 / 分类序列 / 补充入口） ---- */
.card {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-6);
  margin: var(--space-6) 0;
}
.card .eyebrow, .landing-hero .eyebrow {
  font-family: var(--font-ui);
  font-size: var(--fs-14);
  color: var(--text-secondary);
  display: block;
}
.card h2 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-26);
  letter-spacing: .75px;
  color: var(--text);
  line-height: 1.3;
  margin: var(--space-2) 0 var(--space-2);
}
.card ul { list-style: none; margin: var(--space-4) 0 0; padding: 0; }
.card li { padding: var(--space-2) 0; border-bottom: 1px solid var(--border); }
.card li:last-child { border-bottom: 0; }
.card li a { color: var(--text); text-decoration: none; font-family: var(--font-ui); font-size: var(--fs-16); display: inline-flex; align-items: center; min-height: 44px; }
.card li a:hover { color: var(--accent); }
@media (min-width: 768px) {
  .card ul { columns: 2; column-gap: var(--space-12); }
}

/* ---- 页标题（非首页文档页） ---- */
h1.page-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-30);
  line-height: 1.3;
  margin: var(--space-3) 0 var(--space-4);
  color: var(--text);
}
@media (min-width: 768px) {
  h1.page-title { font-size: var(--fs-34); }
}

/* ---- 本页目录 TOC（U11 容器 + 基础样式；aria-current 跟随归 U12） ---- */
.toc {
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-1) var(--space-4);
  margin: 0 0 var(--space-6);
}
.toc summary {
  display: flex;
  align-items: center;
  min-height: 44px;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: var(--fs-16);
  cursor: pointer;
  list-style: none;
}
.toc summary::-webkit-details-marker { display: none; }
.toc summary::after { content: "▾"; margin-left: auto; color: var(--text-secondary); }
.toc[open] summary::after { content: "▴"; }
.toc ol { margin: var(--space-1) 0 var(--space-3); padding-left: 20px; }
.toc a { color: var(--accent); text-decoration: none; }

/* ---- 正文排版 ---- */
article { text-wrap: pretty; }
article p {
  font-size: var(--fs-body);
  line-height: 1.75;
  margin: 0 0 1.1em;
  text-wrap: pretty;
}
article a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent);
}
article h2, article h3, article h4 {
  line-height: 1.3;
  margin: 1.6em 0 .6em;
}
article h2 { font-size: var(--fs-26); }
article h3 { font-size: var(--fs-22); }
article blockquote {
  margin: 1em 0;
  padding: .25em 1em;
  border-left: 3px solid var(--accent);
  background: var(--bg-elevated);
  border-radius: 0 var(--radius-card) var(--radius-card) 0;
}
article hr { border: 0; border-top: 1px solid var(--border); margin: 2em 0; }
article img { margin: 1em auto; border-radius: var(--radius-icon); }

/* 正文三层容器（U11 只给语义与占位；内容分层归 U12 的 renderReading/injectPage） */
.reading-layers { min-width: 0; }
.layer-note, .layer-plain { color: var(--text-secondary); }
.layer-plain[hidden], .layer-note[hidden] { display: none; }

/* ---- 段级导航 / 阅读工具（U11 只挂容器；显示时机与行为归 U12，默认不显示） ---- */
.segnav, .reading-tools { display: none; }
.seg-pos { font-family: var(--font-ui); font-size: var(--fs-14); color: var(--text-secondary); }
.ctl {
  min-width: 44px;
  min-height: 44px;
  border: 1px solid var(--border);
  border-radius: var(--radius-icon);
  background: var(--bg-elevated);
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
}
/* 术语弹层容器（U12 填充内容与定位） */
.term-layer { display: none; }

/* ---- 表格：外层横滚，内容不撑破页面
     U40：去边框化（U39 §6.1-9「原站带边框表格 = 2005 年观感」）——外层 .table-scroll 框退场（b/a 主题本就归零，这里统一），
     单元格只留行分隔发丝线（原 1px 全网格线去杮）；DOM/文字零改动，只改值。行分隔线比 --border 更淡一档（混入 45% 透明），
     贴「苹果风 = 少框靠留白」；课程表手机卡转置规则自带覆盖，不受影响。 ---- */
.table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 1em 0;
  border: 0;
  border-radius: 0;
}
article table {
  border-collapse: collapse;
  min-width: 100%;
}

/* ---- U29 P8：独立链接/导航目标可点高度 ≥44px（取 46px 避开 isMobile+dsf2 亚像素取整）。
     密排链接阵（/xiuxueyd/ 索引阵、手机卡片化课程表里的课名）不做 44×44 方块，只抬条目行高；
     句中行内链接（段内 <p> 里）按 WCAG 2.5.8 行内豁免不动；桌面数据表保持原行高。 ---- */
html[data-section="xiuxueyd"] article td a,
.landing-framed td a,
article td a { display: inline-flex; align-items: center; min-height: 46px; min-width: 44px; justify-content: center; }
/* U47 R8（U44 §2-14）：.landing-framed 在 <article> 外，「课程/简介」链接原吃浏览器默认蓝 #0000EE ——
   改「正文色 + 下划线，hover 才上强调色」（与正文同色系） */
.landing-framed a { color: var(--text); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: color-mix(in srgb, var(--text) 45%, transparent); }
.landing-framed a:hover, .landing-framed a:focus-visible { color: var(--accent); text-decoration-color: var(--accent); }
/* U47 R8：声明段改 ul/li（build.mjs declTableToList 生成；「·」保留在 li 行首，悬挂对齐） */
.landing-framed .decl { margin: var(--space-6) 0 0; }
.landing-framed .decl-head { margin: 0 0 var(--space-2); }
.landing-framed .decl-list { list-style: none; margin: 0; padding: 0; }
.landing-framed .decl-list li { padding-left: 1em; text-indent: -1em; }
html[data-section="xiuxueyd"] article td p a,
.landing-framed td p a,
article td p a { display: inline; min-height: 0; }
article td, article th {
  padding: var(--space-2) var(--space-3);
  border: 0;
  border-bottom: 1px solid color-mix(in srgb, var(--border) 45%, transparent); /* U40：全网格 1px → 行分隔发丝线 */
  vertical-align: top;
  text-align: left;
}

/* ---- U26 P13：空白占位盒（构建期在 reading.mjs 打 .blank-box）——原站文末空 <pre>/<td> 等去边框去底色，不再显示空框；元素与文字保留 ---- */
article pre.blank-box { border: 0; background: none; padding: 0; overflow: visible; }
article td.blank-box { border: 0; padding: 0; }
/* ---- U25 P12：横滑提示 ----
   内容宽于容器（可横滑）时右缘文字渐隐 + › 箭头；滑到底两者消失。
   纯 CSS：@property 登记的 --swipe-hint 由 scroll(self inline) 滚动时间线驱动——
   不可滑（无溢出）时时间线不激活，--swipe-hint 保持初始值 1（提示全隐）；
   可滑时动画把它压到 0（提示全显），滑到 90% 之后升回 1（提示渐隐到消失）。
   不支持 scroll() 时间线的浏览器：变量恒为初始值 1，提示不出现，回退到 U11 的裸横滚。 */
@property --swipe-hint {
  syntax: "<number>";
  inherits: true;
  initial-value: 1;
}
@keyframes swipe-hint-fade {
  0% { --swipe-hint: 0; }
  90% { --swipe-hint: 0; }
  100% { --swipe-hint: 1; }
}
.table-scroll {
  display: flex;               /* 让 ::after 箭头能作为 flex 项粘在可视右缘 */
  animation: swipe-hint-fade linear both;
  animation-timeline: scroll(self inline);
  /* 右缘 36px 渐隐：mask 颜色只取透明度，随主题无关；--swipe-hint=1 时整段全黑（无渐隐） */
  mask-image: linear-gradient(to right, #000 calc(100% - 36px), rgb(0 0 0 / calc(var(--swipe-hint) * 100%)));
}
/* flex 项不收缩：fit-content = 块级表的收缩适配公式（max(min-content, min(max-content, 可用宽))），
   保证园地索引这类 min-content 1277px 的表不被压到容器宽内、窄表照旧充满容器 */
.table-scroll > table { flex: 0 0 fit-content; }
.table-scroll::after {
  content: '›';
  flex: none;
  position: sticky;            /* 钉在滚动视口右缘，不随内容滚走 */
  inset-inline-end: 40px;      /* 落在渐隐区左侧，保证箭头自身对比度不被 mask 稀释 */
  align-self: center;
  width: 0;                    /* 不占内容宽：非溢出表不因箭头变“可滑” */
  display: flex;
  justify-content: flex-end;   /* 0 宽盒子靠右排 → 字形向左溢出（左溢不计入滚动区，不虚增 sw） */
  font-family: var(--font-ui);
  font-size: var(--fs-26);
  font-weight: 700;
  color: var(--text-secondary);
  opacity: calc(1 - var(--swipe-hint));
  pointer-events: none;
}

/* 回落：课程表同构（8 行且末行 4 格）但某行不足 4 格的（如 002baiyunxy）——
   无法安全转置成卡，改用加宽列 + 横滑提示；严格 8×4 的表由下方卡片规则覆盖（特异性更高） */
@media (max-width: 767px) {
  html[data-section="jing"] .table-scroll:has(> table > tbody > tr:nth-child(8):last-child > td:nth-child(4)) > table,
  html[data-section="chan"] .table-scroll:has(> table > tbody > tr:nth-child(8):last-child > td:nth-child(4)) > table {
    min-width: 640px;
  }
  html[data-section="jing"] .table-scroll:has(> table > tbody > tr:nth-child(8):last-child > td:nth-child(4)) tr:nth-child(-n+2) td,
  html[data-section="chan"] .table-scroll:has(> table > tbody > tr:nth-child(8):last-child > td:nth-child(4)) tr:nth-child(-n+2) td {
    background: var(--accent-weak);
  }
}

/* ---- U25 P3：两院课程表手机可读 ----
   课程表结构固定为 8 行 × 4 列，每列是一个学年：首行=修学主题，第 2 行=学年名，
   中 5 行=课程，末行=每日功课。参考参考站 /all 的“卡片纵列 + 元信息胶囊”做法，
   纯 CSS 转置成单列卡片：display:contents 拆掉行结构，每个 td 作为网格项显式定位，
   让原第 C 列的 8 格竖排成第 C 张卡（主题胶囊 + 学年大字 + 课程链接 + 每日功课）。
   守卫：仅当每行恰好 4 格且无 colspan/rowspan 才生效（/jing/ /chan/ 落地页与两份
   教学大纲的课程表实测严格 8×4；不满足结构的表自动回落到“加宽列 + 横滑”）。 */
@media (max-width: 767px) {
  html[data-section="jing"], html[data-section="chan"] {
    /* 守卫链必须单行：:has 是复合选择器的一部分，换行会被当后代组合器解析 */
    .table-scroll:has(> table > tbody > tr:nth-child(1) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(2) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(3) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(4) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(5) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(6) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(7) > td:nth-child(4):last-child):has(> table > tbody > tr:nth-child(8):last-child > td:nth-child(4):last-child):not(:has([colspan])):not(:has([rowspan])) {
      display: block;
      overflow: visible;           /* 单列卡片不再横滑，P12 提示一并关掉 */
      border: 0;
      animation: none;
      mask-image: none;
      &::after { content: none; }
      & > table {
        display: grid;
        grid-template-columns: 1fr;
        min-width: 0;
        border: 0;
      }
      & tbody, & tr { display: contents; }
      & td {
        display: block;
        background: var(--bg-elevated);
        border: 0;
        border-inline: 1px solid var(--border);
        padding: var(--space-2) var(--space-3);
      }
      /* 首行 = 修学主题 → 元信息胶囊（参考站 /all 的黄底小胶囊做法） */
      & tr:nth-child(1) td {
        justify-self: start;       /* 宽随内容 → 胶囊形 */
        background: var(--accent-weak);
        color: var(--accent);
        border-radius: var(--radius-pill);
        border: 0;
        padding: 2px var(--space-3);
        margin-bottom: var(--space-2);
        font: 600 var(--fs-14)/1.6 var(--font-ui);
      }
      /* 第 2 行 = 学年名 → 卡题（书名楷体大字做法） */
      & tr:nth-child(2) td {
        border-top: 1px solid var(--border);
        /* U47 R4（U44 §2-7）：单边圆角归零——「表格当卡片」的模板做法，圆角刻度归入全站四档 */
        padding-top: var(--space-3);
        font: 700 var(--fs-20)/1.4 var(--font-body);
        color: var(--text);
      }
      /* 课程各行 + 每日功课：卡体内部分隔线 */
      & tr:nth-child(n+3) td { border-top: 1px solid var(--border); }
      /* 末行 = 每日功课：收尾 + 卡间距（U47 R4：单边圆角归零，同上） */
      & tr:nth-child(8) td {
        border-bottom: 1px solid var(--border);
        margin-bottom: var(--space-6);
        color: var(--text-secondary);
      }
      /* 转置：原第 C 列第 R 行 → 网格第 (C-1)*8+R 行（卡片 C 的第 R 格） */
      & tr:nth-child(1) td:nth-child(1) { grid-row: 1; }
      & tr:nth-child(2) td:nth-child(1) { grid-row: 2; }
      & tr:nth-child(3) td:nth-child(1) { grid-row: 3; }
      & tr:nth-child(4) td:nth-child(1) { grid-row: 4; }
      & tr:nth-child(5) td:nth-child(1) { grid-row: 5; }
      & tr:nth-child(6) td:nth-child(1) { grid-row: 6; }
      & tr:nth-child(7) td:nth-child(1) { grid-row: 7; }
      & tr:nth-child(8) td:nth-child(1) { grid-row: 8; }
      & tr:nth-child(1) td:nth-child(2) { grid-row: 9; }
      & tr:nth-child(2) td:nth-child(2) { grid-row: 10; }
      & tr:nth-child(3) td:nth-child(2) { grid-row: 11; }
      & tr:nth-child(4) td:nth-child(2) { grid-row: 12; }
      & tr:nth-child(5) td:nth-child(2) { grid-row: 13; }
      & tr:nth-child(6) td:nth-child(2) { grid-row: 14; }
      & tr:nth-child(7) td:nth-child(2) { grid-row: 15; }
      & tr:nth-child(8) td:nth-child(2) { grid-row: 16; }
      & tr:nth-child(1) td:nth-child(3) { grid-row: 17; }
      & tr:nth-child(2) td:nth-child(3) { grid-row: 18; }
      & tr:nth-child(3) td:nth-child(3) { grid-row: 19; }
      & tr:nth-child(4) td:nth-child(3) { grid-row: 20; }
      & tr:nth-child(5) td:nth-child(3) { grid-row: 21; }
      & tr:nth-child(6) td:nth-child(3) { grid-row: 22; }
      & tr:nth-child(7) td:nth-child(3) { grid-row: 23; }
      & tr:nth-child(8) td:nth-child(3) { grid-row: 24; }
      & tr:nth-child(1) td:nth-child(4) { grid-row: 25; }
      & tr:nth-child(2) td:nth-child(4) { grid-row: 26; }
      & tr:nth-child(3) td:nth-child(4) { grid-row: 27; }
      & tr:nth-child(4) td:nth-child(4) { grid-row: 28; }
      & tr:nth-child(5) td:nth-child(4) { grid-row: 29; }
      & tr:nth-child(6) td:nth-child(4) { grid-row: 30; }
      & tr:nth-child(7) td:nth-child(4) { grid-row: 31; }
      & tr:nth-child(8) td:nth-child(4) { grid-row: 32; }
    }
  }
}

/* ---- pre / code 同样可横滚 ---- */
article pre {
  overflow-x: auto;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius-icon);
  padding: var(--space-3);
  font-size: var(--fs-14);
}
article code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

/* ---- 页脚 ---- */
.site-footer {
  border-top: 1px solid var(--border);
  padding: var(--space-6) var(--space-4) var(--space-12);
  padding-bottom: calc(var(--space-6) + env(safe-area-inset-bottom));
  color: var(--text-secondary);
  font-family: var(--font-ui);
  font-size: var(--fs-14);
  text-align: center;
}
.site-footer a { color: var(--text-secondary); }
/* U34：页脚工具链接（朗读/离线下载收进二级位置）；触控目标 ≥44px。
   U42 P18：从「次要灰字」提为明确链接——正文色 + 下划线（对任何主题背景 ≥4.5:1，可点面积同前） */
.footer-line { margin: 0; }
.footer-tools { display: flex; justify-content: center; gap: var(--space-4); margin: var(--space-2) 0 0; flex-wrap: wrap; }
.footer-tools a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--space-2); font-size: var(--fs-14); color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
.footer-tools a:hover { text-decoration-thickness: 2px; }

/* ---- U13 链接卫生：原站自带 404（已登记）渲染为不可点文本 ---- */
.broken {
  color: var(--text-secondary);
  text-decoration: underline dashed;
  text-decoration-color: var(--border);
  text-underline-offset: 3px;
  cursor: not-allowed;
}

/* ---- U13 C3：>25MB 原站托管媒体标注 ---- */
.ext-media {
  margin: var(--space-3) 0;
  padding: 10px 14px;
  background: var(--accent-weak);
  border: 1px solid var(--border);
  border-radius: var(--radius-icon);
  font-size: var(--fs-16);
}
.ext-media-label { color: var(--text-secondary); }
.ext-media a { color: var(--accent); }
.ext-media-badge {
  display: inline-block;
  margin: 0 var(--space-2);
  padding: 1px var(--space-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  font-size: var(--fs-14);
  color: var(--text-secondary);
  vertical-align: middle;
  white-space: nowrap;
}
.ext-media-orig { display: none; }

/* ---- 离线页 ---- */
.offline-wrap { max-width: 30rem; margin: 0 auto; text-align: center; padding: var(--space-12) var(--space-4); }
.offline-wrap h1 { font-size: var(--fs-26); }
.offline-wrap .back-link { margin-top: var(--space-4); }

/* ---- U26 P14：≤420px 站名缩一号，360px 宽不再被省略号截断 ----
   U29 P14 补：首页页头比落地页多「搜索」入口（56px），同一档把页头留白/间距收紧（触控目标仍 ≥44px），
   给站名让出 ≥64px —— 三套皮肤 × 首页 @360 clientW==scrollW（改前 cw=102 < sw=161~166） */
@media (max-width: 420px) {
  /* body 前缀抬升优先级：main.css/search.css 在拼接序上靠后，同名无前缀规则会盖掉本块 */
  /* html[data-skin] 前缀再抬一级：themes/*.css 用 html[data-skin="…"] .site-header (0,2,0) 设 padding，本块必须压过它 */
  html[data-skin] body .site-header { padding-left: var(--space-1); padding-right: var(--space-1); gap: 0; }
  body .header-search { padding: 0 var(--space-2); font-size: var(--fs-14); }
  body .header-ctl { gap: 0; }
  .site-name { font-size: var(--fs-14); }
  html[data-skin="a"] .site-name { font-size: var(--fs-14); letter-spacing: .12em; }
  html[data-skin="c"] .site-name { font-size: var(--fs-14); }
}

/* ---- 键盘焦点（reference-spec §7：2px accent outline, offset 2px） ---- */
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ---- 学院首页入口（U11b B-1：原首页正文已搬 /jing/，首页只留入口）----
   U43 骨架重构：单列目录式细线列表（去「hero+三卡网格」模板骨架，U39 §6.1-2/§6.2）；
   卡片底/边框/圆角全部退场，各区靠发丝线分隔；三套皮肤在此基线上各自覆写
   （a=留白块 / b=细线行 / c=杂志网格与墨带，c 的 .card 覆写特异性更高不受影响） */
.home-cols { display: flex; flex-direction: column; gap: var(--space-6); margin: var(--space-6) 0 0; }
.home-card, .home-garden {
  background: none;
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: 0;
  padding: var(--space-6) 0 0;
  margin: 0;
}
.home-card .card-desc, .home-garden .card-desc { font-family: var(--font-kai); font-size: var(--fs-16); color: var(--text-secondary); margin: var(--space-2) 0 var(--space-4); }
.card-links { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; margin: 0; }

/* ---- U18：三套版式主题共用的中性基线（各主题在 src/styles/themes/*.css 里覆写） ---- */
/* ---- U34 首页动作统一为一种样式：U31 .entry-fab 的视觉语言（胶囊 + 1px 低对比边线 + 系统字体 + 毛玻璃），
   两院入口 / 教学大纲 / 修学园地 / 怎样学佛 全部同款；层级靠位置不靠样式。基线给三套主题共用，主题可在同语言内微调 ---- */
/* U40：首页/落地页动作胶囊在文档流内、无内容从底下滚过，玻璃退场（背景不透明度相应提高），
   玻璃只留给真悬浮层（页头/entry-fab/段导航/面板/目录抽屉/术语弹层） */
.pill--college,
.home-card .textlink,
.hero-garden a,
.home-garden .card-links a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 var(--space-6);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--bg-elevated) 94%, transparent);
  color: var(--text);
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  font-weight: 500;
  letter-spacing: .04em;
  text-decoration: none;
}
.pill--college:hover,
.home-card .textlink:hover,
.hero-garden a:hover,
.home-garden .card-links a:hover { border-color: color-mix(in srgb, var(--text) 35%, var(--border)); }
.hero-slogan, .hero-qi { font-family: var(--font-kai); margin: var(--space-4) 0 0; }
.hero-garden { margin: var(--space-4) 0 0; }
/* 首页 home-aims（培养目标）：仅 b 主题启用（见主题文件），基线隐藏（原状） */
.home-aims { display: none; }
.page-head { min-width: 0; }
.header-ctl { display: flex; gap: var(--space-2); align-items: center; margin-left: auto; flex: none; }
.header-ctl .ctl { padding: 0 var(--space-2); }

/* ---- U38 刷新按钮：讲义页=底部工具行里 .entry-fab 旁的同款玻璃圆钮；其余页面=右下角固定圆钮 ---- */
.entry-fab.refresh-fab {
  width: 44px;
  min-width: 44px;
  padding: 0;
  margin-left: var(--space-2);
  justify-content: center;
  flex: none;
}
.entry-fab.refresh-fab:hover { border-color: color-mix(in srgb, var(--text) 35%, var(--border)); }
body:not(:has([data-reading-body])) .refresh-fab {
  position: fixed;
  right: calc(16px + env(safe-area-inset-right));
  bottom: calc(16px + env(safe-area-inset-bottom));
  z-index: 30;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-pill); /* U40：50% ad-hoc → 胶囊档（44×44 方元素同为圆钮，刻度归一） */
  background: var(--bg-elevated); /* U40：玻璃退场（U39 §6.1-8：右下角悬浮件与 entry-fab 玻璃堆叠），回实体底 */
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  box-shadow: var(--shadow-1);
}
body:not(:has([data-reading-body])) .refresh-fab:hover { border-color: color-mix(in srgb, var(--text) 35%, var(--border)); }
/* U47 R7：按需出现——默认 hidden（display:none 需显式写：上方 display:inline-flex/flex 会压过 UA 的 [hidden]） */
.refresh-fab[hidden] { display: none !important; }

/* ---- U38 顺手修一 u31 遗留视觉缺陷（截图发现，只加 CSS 不动 DOM 与契约 class）----
   u31 的窄屏规则「段导航靠左」因特异性别（少了 html[data-skin] 前缀）被基础 left:50% 压住，
   ≤420px 实际仍居中；加上刷新按钮后与入口胶囊重叠。补同前缀版本让意图生效。
   （另一处 drawer-search 演出曾在此同轮修补，现已在 master 根因修复，此处不重复处理。） */
@media (max-width: 420px) {
  html[data-skin] body:has([data-reading-body]) .reading-tools .segnav { left: 12px; transform: none; }
}
/* reading.css · 讲义页阅读体验样式（本文件在 layout.css 之后、themes/*.css 之前拼接；主题文件在同名规则上更晚，
   因此讲义页内的改写一律用 html[data-skin] body:has([data-reading-body]) … 前缀抬特异性压过主题值）。
   全部引用 tokens.css 变量；字号只用 reference-spec §3 字号阶（14/16/18/20/22/…）。

   U31 · 苹果风简化（用户 11:2x：「讲义也可以不放上方的 tab，最上方的按钮也是，搞得简化，高级，苹果风」）：
   - 顶部：tab（.site-nav）、顶栏搜索、面包屑、页头按钮条（.header-ctl，JS 已从 DOM 摘除）全部隐藏；
     页头退为不吸顶的一行小站名（+手机汉堡），滚走即净；
   - 底部：旧的全功能常驻栏收起，只留一个极简入口按钮（.entry-fab，[data-skin-toggle] 挂位）+
     段级导航小字；目录/主题/字号/亮暗/搜索/站内浏览全部收进入口面板（.skin-menu，reading.js 建）；
   - 视觉：系统字体栈 UI + 楷/宋正文、大留白、1px 低对比分隔线、少色少边框少图标；
     卡片底/描边/阴影、渐变、饰符（« » ▾）、emoji 一律退场。 */

/* ---- 0 · 讲义页顶栏：不吸顶、无底色无边线 ---- */
html[data-skin] body:has([data-reading-body]) .site-header {
  position: static;
  background: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  border-bottom: 0;
  box-shadow: none;
}
html[data-skin] body:has([data-reading-body]) .site-name {
  color: var(--text-secondary);
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: var(--fs-14);
  letter-spacing: .04em;
}
html[data-skin] body:has([data-reading-body]) .site-name::before { content: none; } /* b 主题的印章方块退场 */
/* 顶部 tab / 顶栏搜索 / 面包屑：隐藏（不删 DOM，站内导航从入口面板「浏览」组到达） */
html[data-skin] body:has([data-reading-body]) .site-nav,
html[data-skin] body:has([data-reading-body]) .header-search,
html[data-skin] body:has([data-reading-body]) .breadcrumb { display: none; }
/* c 主题给这几处用的是墨带上的 on-ink 混色；讲义页它们退到纸上，颜色回 token（对比度 ≥4.5 由 token 保证） */
html[data-skin] body:has([data-reading-body]) .breadcrumb,
html[data-skin] body:has([data-reading-body]) .breadcrumb a,
html[data-skin] body:has([data-reading-body]) .site-nav a,
html[data-skin] body:has([data-reading-body]) .site-nav .site-nav-current { color: var(--text-secondary); }
html[data-skin] body:has([data-reading-body]) .site-nav a[aria-current="page"],
html[data-skin] body:has([data-reading-body]) .site-nav .site-nav-current[aria-current="page"] { color: var(--accent); }
/* 汉堡（≤767px 站点导航入口）只留这一个顶部按钮，去边框去底色 */
html[data-skin] body:has([data-reading-body]) .nav-toggle {
  background: none;
  border: 0;
  color: var(--text-secondary);
}
html[data-skin] body:has([data-reading-body]) .nav-toggle:hover { color: var(--text); }

/* ---- 1 · 页首：大留白 + 左对齐宋体标题（退卡片、退墨带、退居中大标题） ----
   U47 R3：.page-head 与 article 同 max-width（42rem）同中轴（margin-inline:auto）——
   修桌面讲义页 h1 与正文列错位 192–232px（U44 §2-13）；注释小字宽度不变 */
html[data-skin] body:has([data-reading-body]) .page-head {
  background: none;
  border: 0;
  box-shadow: none;
  clip-path: none;
  border-radius: 0;
  padding: var(--space-6) 0 0;
  margin-bottom: var(--space-6);
  max-width: 42rem;
  margin-inline: auto;
}
@media (min-width: 768px) {
  html[data-skin] body:has([data-reading-body]) .page-head { padding-top: var(--space-12); margin-bottom: var(--space-8); }
}
html[data-skin] body:has([data-reading-body]) h1.page-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--fs-30);
  line-height: 1.35;
  letter-spacing: .02em;
  color: var(--text);
  margin: var(--space-2) 0 0;
}
@media (min-width: 768px) {
  html[data-skin] body:has([data-reading-body]) h1.page-title { font-size: var(--fs-34); }
}
/* 阅读面板退卡片：白纸一张，正文列居中（主题文件的卡片底/描边/内衬在此通用化） */
html[data-skin] body:has([data-reading-body]) main > article {
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  margin-inline: auto;
  max-width: 42rem;
}

/* ---- 2 · 底部：一个极简入口 + 段级导航小字 ----
   [data-reading-tools] 仍是挂位容器（fixed 贴底），视觉上不再是一根栏；
   旧控件（字号/亮暗/目录挂位）保留在容器内但隐藏，入口面板委托它们，逻辑单份。 */
html[data-skin] body:has([data-reading-body]) .reading-tools {
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: auto;
  z-index: 30;
  margin: 0;
  padding: 0 calc(12px + env(safe-area-inset-right)) 0 calc(12px + env(safe-area-inset-left));
  padding-bottom: calc(12px + env(safe-area-inset-bottom));
  background: none;
  border: 0;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  pointer-events: none;
}
html[data-skin] body:has([data-reading-body]) .reading-tools > * { pointer-events: auto; }
/* 挂位按钮/控件组：保留在容器里（面板委托目标），一律不显示；
   c 主题给它们的墨带配色（on-ink）随底色一起退场，回 token 色（④ 对比度闸读的是 computed color） */
html[data-skin] body:has([data-reading-body]) .reading-tools > :not(.entry-fab):not(.segnav):not(.skin-menu) { display: none; }
html[data-skin] body:has([data-reading-body]) .reading-tools .ctl {
  color: var(--text);
  background: var(--bg-elevated);
  border-color: var(--border);
}

/* 页尾留白：只给入口按钮/段导航让位（旧常驻栏的 128px 不再需要） */
html[data-skin] body:has([data-reading-body]) {
  padding-bottom: calc(96px + env(safe-area-inset-bottom));
  background-image: none; /* c 主题给旧底垫填的墨色条退场 */
}

/* 极简入口按钮：胶囊、毛玻璃、1px 低对比边线；U42 P16：文字改「☰ 目录 · 设置」（reading.js 刷新），当前主题名在 aria-label */
.entry-fab {
  min-width: 52px;
  min-height: 44px;
  padding: 0 var(--space-5, 20px);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--bg-elevated) 86%, transparent);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  font-weight: 500;
  letter-spacing: .04em;
  white-space: nowrap;
  box-shadow: var(--shadow-1);
}
.entry-fab:hover { border-color: color-mix(in srgb, var(--text) 35%, var(--border)); }
.entry-fab[aria-expanded="true"] { color: var(--text); border-color: color-mix(in srgb, var(--text) 35%, var(--border)); }
/* U42 P16：胶囊内图标（☰）与文案间距 */
.entry-fab .entry-fab-ico { margin-right: var(--space-2); font-size: var(--fs-18); line-height: 1; }

/* 段级导航：底部居中的三个小字控件（‹ n / N ›），无边框无底色 */
html[data-skin] body:has([data-reading-body]) .segnav {
  display: none;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  margin: 0;
  position: absolute;
  left: 50%;
  bottom: calc(12px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  padding: 0 var(--space-1);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--bg-elevated) 86%, transparent);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}
html[data-skin] body:has([data-reading-body]) .seg-btn {
  min-width: 44px;
  min-height: 44px;
  padding: 0 var(--space-2);
  border: 0;
  border-radius: var(--radius-icon);
  background: none;
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  white-space: nowrap;
  flex: none;
}
.seg-btn:disabled { opacity: .35; cursor: default; }
.seg-btn:not(:disabled):hover { color: var(--accent); }
html[data-skin] body:has([data-reading-body]) .seg-pos {
  min-width: 4.5em;
  text-align: center;
  font-family: var(--font-ui);
  font-size: var(--fs-14);
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  white-space: nowrap;
  flex: none;
}
/* 窄屏：段导航抬到入口胶囊行上方靠左、入口胶囊靠右（U42 P16：胶囊加宽后 360/390 一行放不下三件，垂直错开互不相撞；放在基础规则之后才能盖住 left:50%） */
@media (max-width: 420px) {
  html[data-skin] body:has([data-reading-body]) .segnav { left: 12px; transform: none; bottom: calc(64px + env(safe-area-inset-bottom)); }
  html[data-skin] body:has([data-reading-body]) { padding-bottom: calc(124px + env(safe-area-inset-bottom)); }
}

/* ---- 3 · 入口面板（.skin-menu，reading.js 动态建；定位 fixed 由 JS 按触发按钮算） ---- */
.skin-menu {
  position: fixed;
  z-index: 70;
  width: min(17rem, calc(100vw - 24px));
  padding: var(--space-2);
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  background: color-mix(in srgb, var(--bg-elevated) 94%, transparent);
  -webkit-backdrop-filter: blur(16px); /* U40：玻璃强度全站归一 16px（原 20） */
  backdrop-filter: blur(16px);
  border: 1px solid var(--border);
  border-radius: var(--radius-card); /* U40：14px ad-hoc → card 档 */
  box-shadow: var(--shadow-2);
}
.skin-opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: 44px;
  padding: 0 var(--space-3);
  border: 0;
  border-radius: var(--radius-icon);
  background: none;
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  text-align: left;
}
.skin-opt:hover { background: color-mix(in srgb, var(--text) 6%, transparent); }
.skin-opt[aria-checked="true"] { color: var(--accent); font-weight: 600; }
.skin-opt .skin-opt-check { visibility: hidden; }
.skin-opt[aria-checked="true"] .skin-opt-check { visibility: visible; }
.skin-opt:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }

/* 面板工具区：亮暗 / 字号 / 目录 / 搜索 / 浏览 */
.menu-sep { height: 1px; margin: var(--space-2) var(--space-1); background: var(--border); opacity: .6; }
.menu-row { display: flex; align-items: center; gap: var(--space-2); min-height: 44px; }
.menu-row--split { justify-content: flex-start; }
.menu-label {
  flex: none;
  min-width: 44px;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  color: var(--text-secondary);
}
.menu-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  min-height: 44px;
  padding: 0 var(--space-3);
  border: 0;
  border-radius: var(--radius-icon);
  background: none;
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  text-decoration: none;
  text-align: left;
}
.menu-btn:hover { background: color-mix(in srgb, var(--text) 6%, transparent); }
.menu-btn--compact {
  flex: none;
  min-width: 56px;
  justify-content: center;
  border: 1px solid var(--border);
}
.menu-btn--nav { color: var(--text-secondary); }
.menu-btn--nav:hover { color: var(--text); }
.menu-btn--nav[aria-current="page"] { color: var(--accent); font-weight: 600; }
.menu-btn:focus-visible, .entry-fab:focus-visible, .seg-btn:focus-visible, .book-link:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* ---- 4 · 本页目录：全宽一律为底部抽屉（原桌面侧栏/顶部目录条取消；不占首屏） ---- */
html[data-skin] body:has([data-reading-body]) .toc {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: auto;
  z-index: 40;
  margin: 0;
  background: color-mix(in srgb, var(--bg-elevated) 96%, transparent);
  -webkit-backdrop-filter: blur(16px); /* U40：玻璃强度全站归一 16px（原 20） */
  backdrop-filter: blur(16px);
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: var(--radius-card) var(--radius-card) 0 0; /* U40：14px ad-hoc → card 档 */
  box-shadow: var(--shadow-2);
  padding: var(--space-2) var(--space-4) var(--space-4);
  max-height: 68vh;
  overflow-y: auto;
  transform: translateY(105%);
  transition: transform .25s ease-out;
}
html[data-skin] body:has([data-reading-body]) .toc.open { transform: translateY(0); }
/* P17②：抽屉标题行钉在抽屉顶部（列表滚动不没），右侧 44px「✕」明显关闭入口
   （JS 注入；色用 --text 对 bg-elevated ≥4.5:1，与页头导航关闭钮同字形） */
html[data-skin] body:has([data-reading-body]) .toc summary {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--bg-elevated);
  padding-right: var(--space-12);
}
html[data-skin] body:has([data-reading-body]) .toc .toc-close {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: var(--space-1);
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: var(--radius-icon);
  background: none;
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-ui);
  font-size: var(--fs-20);
}
html[data-skin] body:has([data-reading-body]) .toc .toc-close:hover { background: color-mix(in srgb, var(--text) 6%, transparent); }
/* P17①：抽屉开着时入口胶囊明确让位（模态面板不与浮动件同屏抢焦点；
   ✕ 一键关闭/点外任意处关闭，重开面板路径明确）——过渡淡出，抽屉一关即回 */
html[data-skin] body:has([data-reading-body]) .entry-fab { transition: opacity .2s ease-out; }
html[data-skin] body:has([data-reading-body]):has(.toc.open) .entry-fab { opacity: 0; pointer-events: none; }
html[data-skin] body:has([data-reading-body]) .toc summary {
  min-height: 48px;
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: var(--fs-16);
  color: var(--text-secondary);
  cursor: default;
  border-bottom: 1px solid var(--border);
  margin-bottom: var(--space-2);
}
html[data-skin] body:has([data-reading-body]) .toc summary::after { content: none; } /* ▾/▴ 饰符退场 */
html[data-skin] body:has([data-reading-body]) .toc ol { margin: 0; padding-left: 20px; }
html[data-skin] body:has([data-reading-body]) .toc a {
  color: var(--text);
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  text-decoration: none;
}
html[data-skin] body:has([data-reading-body]) .toc a[aria-current="true"] { color: var(--accent); font-weight: 600; background: none; border-radius: 0; }
/* 抽屉条目 ≥44px 点目标（U15p 先例：取 48px 避开 isMobile+dsf2 亚像素取整） */
html[data-skin] body:has([data-reading-body]) .toc a { display: flex; align-items: center; min-height: 48px; padding: 0 var(--space-1); }

/* ---- 5 · 正文基准：18px（≥16px，B4）；字号三档绑定 token 阶（B3，值∈字号阶） ---- */
article p { font-size: var(--fs-18); }
html[data-fs="s"] article p { font-size: var(--fs-16); }
html[data-fs="l"] article p { font-size: var(--fs-20); }

/* ---- 6 · 原文/注分层（B9）：注释段小一号 + 注色 + 细缩进线；经文引文用宋体大一号 ---- */
/* U47 R2（U44 §2-9）：注释块线型统一——原「灰 dashed top（b 主题）+ 红棕 solid left（--note 系）」自相矛盾，
   统一为全 dashed var(--border)（去 --acc2 系红棕；b 主题 .fn-note 的 border-top 同色同型） */
p.p-note {
  font-size: var(--fs-16);
  color: var(--note);
  padding-left: var(--space-4);
  border-left: 1px dashed var(--border);
}
article blockquote {
  font-family: var(--font-display);
  font-size: var(--fs-20);
  background: none;
  border-radius: 0;
}

/* ---- 7 · 上一篇 / 下一篇（B8）：文末，细分隔线起头，纯文字链接 ---- */
.seg-book {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin: var(--space-12) 0 var(--space-4);
  padding-top: var(--space-6);
  border-top: 1px solid var(--border);
}
.book-gap { flex: 1; }
.book-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 var(--space-2);
  border: 0;
  border-radius: var(--radius-icon);
  background: none;
  color: var(--accent);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
}
.book-link:hover { color: var(--text); }
html[data-skin] body:has([data-reading-body]) .seg-book .book-link { border: 0; background: none; }
.book-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ---- 8 · 两级术语标注（B5）：站内注=点状底边+help；外链=虚线下划线小字 ---- */
.term--internal {
  color: inherit;
  background: none;
  border: 0;
  border-bottom: 1px dotted var(--note);
  padding: 0;
  font: inherit;
  cursor: help;
}
.term--internal:hover { color: var(--note); }
.term--external {
  display: inline;
  color: var(--accent);
  font-family: var(--font-ui);
  font-size: var(--fs-14);
  white-space: nowrap;
  margin-left: 2px;
  text-decoration: underline dashed;
  text-decoration-color: color-mix(in srgb, var(--accent) 60%, transparent);
  text-underline-offset: 3px;
  cursor: pointer;
}
.term--external:hover { text-decoration-style: solid; }

/* ---- 9 · 术语释义弹层（B5④⑤）：毛玻璃薄层、1px 边线、无重投影 ---- */
.term-layer {
  position: fixed;
  z-index: 60;
  max-width: min(24rem, calc(100vw - 32px));
  padding: var(--space-4);
  padding-right: var(--space-6);
  background: color-mix(in srgb, var(--bg-elevated) 96%, transparent);
  -webkit-backdrop-filter: blur(16px); /* U40：玻璃强度全站归一 16px（原 20） */
  backdrop-filter: blur(16px);
  border: 1px solid var(--border);
  border-radius: var(--radius-card); /* U40：14px ad-hoc → card 档 */
  box-shadow: var(--shadow-2);
}
.term-layer.open { display: block; }
.term-head { display: flex; align-items: center; gap: var(--space-2); padding-right: var(--space-6); }
.term-head b { color: var(--text); font-size: var(--fs-16); }
.term-close {
  position: absolute;
  top: 0;
  right: 0;
  min-width: 44px;
  min-height: 44px;
  border: 0;
  background: none;
  color: var(--text-secondary);
  cursor: pointer;
}
.term-close:hover { color: var(--text); }
.term-def { margin: var(--space-2) 0 var(--space-2); color: var(--text); font-size: var(--fs-16); line-height: 1.5; }
.term-layer .term--external { margin-left: 0; }

@media (prefers-reduced-motion: reduce) {
  .toc, html[data-skin] body:has([data-reading-body]) .toc { transition: none; }
  .entry-fab, .menu-btn, .seg-btn:active { transform: none; }
}
/* U17 正文语义标记 · 最小可辨样式（引文 / 脚注）。
   只负责「能看出来是引文/脚注」；版式与皮肤归 U16/U18/U15 重做这些 class 的值。
   class 名是契约：src/semantics.mjs 生成，勿改名。全部取值走 tokens 刻度与颜色变量。 */

/* 引文（经文/祖师语录/偈颂）：左侧饰线 + 次要色 + 微缩进 */
.quote {
  margin: var(--space-3) 0;
  padding-left: var(--space-3);
  border-left: 3px solid var(--border);
  color: var(--text-secondary);
}
.quote .quote-text { color: inherit; } /* 段内引文包裹：跟随段级引文样式 */
.quote--verse { color: var(--text-secondary); }

/* 脚注（词条注 / 编者按）：注释色，与引文块在颜色上可辨；字号保持 16px（mobile 断言：p ≥16px） */
.fn-note {
  font-size: var(--fs-16);
  color: var(--note);
  margin: var(--space-2) 0;
}
.fn-note--editor { color: var(--text-secondary); }

/* 引文段尾书证出处（（《…》））：注释色小字，视觉上归脚注族 */
.fn-src { color: var(--note); font-size: var(--fs-14); }

/* U24② 释义总表页（/cidian/）：每条术语一处 —— 词条（链首见课）+ 词典↗ + 释义 + 课数。
   全走 tokens；对比度与术语弹层同源（--text / --note / --text-secondary）。 */
.terms-list { list-style: none; margin: var(--space-4) 0 0; padding: 0; }
.terms-item { padding: var(--space-3) 0; border-bottom: 1px solid var(--border); break-inside: avoid; }
.terms-item:last-child { border-bottom: 0; }
.terms-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); min-height: 46px; }
.terms-head a { display: inline-flex; align-items: center; align-self: stretch; }
.terms-name { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-18); color: var(--text); text-decoration: none; }
.terms-name:hover { color: var(--accent); }
.terms-count { font-family: var(--font-ui); font-size: var(--fs-14); color: var(--text-secondary); white-space: nowrap; }
.terms-def { margin: var(--space-1) 0 0; font-family: var(--font-ui); font-size: var(--fs-16); line-height: 1.7; color: var(--text); overflow-wrap: anywhere; }

/* U24④ 译文竖线根因修复（全站）：原站译文用 <blockquote> 层层嵌套（最深 7 层），基线给每层都画
   border-left 饰线 + 内边距 → 手机上「好几道竖线」+ 文字被挤成一列。规则：嵌套引用容器只保留最外层
   一道饰线，内层归零（边线/底色/圆角/额外缩进全去掉）。作用于全部皮肤。 */
article blockquote blockquote {
  margin: 0;
  padding: 0;
  border-left: 0;
  background: none;
  border-radius: 0;
}
/* search.css · U27 站内全文搜索：页头入口（.header-search / .drawer-search）+ /search/ 页面
   颜色/字号/间距只用 tokens.css 变量；输入框与提交按钮 ≥44px 触控目标；正文字号 ≥16px。 */

/* ---- 页头入口：顶栏右侧（桌面内联导航旁，移动端汉堡旁），抽屉内顶格 ---- */
.header-search {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 var(--space-3);
  color: var(--text-secondary);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  white-space: nowrap;
  flex: none;
}
.header-search:hover, .header-search[aria-current="page"] { color: var(--accent); font-weight: 600; }
.site-drawer .drawer-search {
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  background: var(--bg);
}

/* U40：抽屉内搜索入口收编为抽屉项同语言（去「裸链接」感）；
   U43：文字里的 🔍 emoji 已由模板票去除（四处改纯文字「全站搜索」，入口可达性不变，
   ia-check A1c / theme-check ⑦ 照常过）。 */
.site-drawer .drawer-search {
  display: inline-flex;
  align-items: center;
  align-self: stretch;
  min-height: 44px;
  padding: 0 var(--space-3);
  color: var(--text);
  font-family: var(--font-ui);
  font-size: var(--fs-16);
  text-decoration: none;
}

/* ---- /search/ 页面 ----
   U47 R6（U44 §2-11）：搜索页减重——标题 44→22px（字号阶 fs-22）、lede 压成一行、
   输入框与按钮合成一个胶囊搜索框（去「大标题 + 说明 + 表单」三段式模板形状） */
.search-head { padding: var(--space-6) var(--space-3) var(--space-8); max-width: 46rem; margin: 0 auto; }
/* html[data-skin] 前缀压过主题文件 h1.page-title 的 fs-44（a/b 均为 0,2,1，此条 0,3,1） */
html[data-skin] .search-head .page-title { margin: 0 0 var(--space-2); font-size: var(--fs-22); line-height: 1.35; }
.search-lede { margin: 0 0 var(--space-4); color: var(--text-secondary); font-size: var(--fs-16); }
.search-form {
  display: flex;
  align-items: stretch;
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: var(--bg-elevated);
  overflow: hidden;
}
.search-form:focus-within { outline: 2px solid var(--accent); outline-offset: 1px; }
.search-label {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.search-input {
  flex: 1 1 12rem;
  min-width: 0;
  min-height: 44px;
  padding: 0 var(--space-4);
  font-family: var(--font-body);
  font-size: 1rem; /* ≥16px，避免 iOS 聚焦自动放大 */
  color: var(--text);
  background: none;
  border: 0;
  border-radius: 0;
}
.search-input:focus-visible { outline: none; } /* 焦点圈由 .search-form:focus-within 承担，胶囊内不被裁切 */
.search-form .search-submit { flex: 0 0 auto; min-height: 44px; min-width: 5.25rem; border: 0; border-radius: var(--radius-pill); box-shadow: none; }
.search-status { min-height: 1.5em; margin: var(--space-3) 0 var(--space-2); color: var(--text-secondary); font-size: var(--fs-16); }
.search-results { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: grid; gap: var(--space-3); }
.search-more { margin-top: var(--space-4); min-height: 44px; width: 100%; }
.search-more[hidden] { display: none; }
.r-item {
  /* U40：搜索结果去卡片化（U39 §6.1-4 card soup）——细线分隔列表，阴影退场 */
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: none;
  box-shadow: none;
}
.r-item a {
  display: block;
  padding: var(--space-3) var(--space-1);
  color: inherit;
  text-decoration: none;
  border-radius: 0;
}
.r-item a:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.r-title {
  display: block;
  font-family: var(--font-kai);
  font-size: var(--fs-18);
  font-weight: 600;
  color: var(--accent);
}
.r-excerpt {
  display: block;
  margin-top: var(--space-2);
  font-size: var(--fs-16);
  line-height: 1.7;
  color: var(--text);
  word-break: break-word;
}
.r-excerpt mark {
  background: var(--accent-weak);
  color: var(--text);
  padding: 0 2px;
  border-radius: var(--radius-icon); /* U40：4px ad-hoc → 归到 icon 档 */
}
/* skins.css · 版式主题已拆到 src/styles/themes/{a-jingshi,b-shuan,c-zazhi}.css（U18；token 值写在各自 html[data-skin=…] 块）。本文件保留为空占位，build 仍按序拼接。 */
/* themes/a-jingshi.css · D1 静室（html[data-skin="a"]）
   骨架：「一页纸」——大留白、少元素、强级差、几乎无框。页头无底线、导航是疏朗文字；首页首屏 = 标题 + 一句话 +
   两行「净修院 →／禅修院 →」大字行，园地缩成一行小字；讲义页单栏 ≈34 字行长，h2 前 96–128px 留白。
   本版修 D1 缺点「首屏没有视觉抓手」：用首页原文的一副对句（其修也…／其证也…）竖排成「挂轴」+ 顶端朱线，零新增文案。
   token 值（亮/暗）在 tokens.css 的 html[data-skin="a"] 块；本文件只写组件规则。不 import 其他主题的任何值。 */

/* ---- 页头：无底线，导航疏朗 ---- */
html[data-skin="a"] .site-header { background: var(--bg); -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom: 0; min-height: 56px; padding-left: var(--space-4); padding-right: var(--space-4); }
html[data-skin="a"] .site-name { font-family: var(--font-kai); font-weight: 400; font-size: var(--fs-16); letter-spacing: .12em; }
html[data-skin="a"] .nav-toggle { border-color: transparent; background: transparent; }
html[data-skin="a"] .ctl { background: transparent; border-color: var(--border); }
@media (min-width: 768px) {
  html[data-skin="a"] .site-header { padding-left: var(--space-8); padding-right: var(--space-8); }
  html[data-skin="a"] .site-name { font-size: var(--fs-18); letter-spacing: .2em; }
  html[data-skin="a"] .site-nav { margin-left: auto; gap: var(--space-12); }
  html[data-skin="a"] .nav-group { gap: var(--space-6); }
  html[data-skin="a"] .site-nav a, html[data-skin="a"] .site-nav .site-nav-current { padding: 0 var(--space-1); }
  html[data-skin="a"] .site-nav a[aria-current="page"], html[data-skin="a"] .site-nav .site-nav-current { font-weight: 400; border-bottom: 2px solid var(--accent); }
  html[data-skin="a"] .header-ctl { margin-left: var(--space-8); }
}

/* ---- 手机「菜单」：全屏大字页 ---- */
html[data-skin="a"] .site-drawer { width: 100vw; border-left: 0; box-shadow: none; background: var(--bg); padding: var(--space-4) var(--space-8) var(--space-12); gap: var(--space-4); overflow-y: auto; }
html[data-skin="a"] .site-drawer a, html[data-skin="a"] .site-drawer .site-nav-current { font-family: var(--font-display); font-size: var(--fs-34); letter-spacing: .08em; min-height: 64px; padding: 0; border-radius: 0; background: none; }
html[data-skin="a"] .site-drawer a[aria-current="page"], html[data-skin="a"] .site-drawer .site-nav-current { background: none; font-weight: 400; }
html[data-skin="a"] .site-drawer .nav-group--yuan { border: 0; padding: 0; }
html[data-skin="a"] .site-drawer .nav-group--yandi { border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: var(--space-6) 0 0; margin-top: var(--space-4); }
html[data-skin="a"] .drawer-title { font-size: var(--fs-18); letter-spacing: .12em; }

/* ---- 主体：一页纸 ---- */
html[data-skin="a"] main { max-width: 48rem; margin: 0 auto; padding: 0 var(--space-6) var(--space-24); }
html[data-skin="a"] .breadcrumb { padding-top: var(--space-4); }

/* ---- 首页：首屏 = 朱线 + 眉题 + 标题 + 一句话 + 挂轴对句 + 两行大字入口 ---- */
html[data-skin="a"] .hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto auto 1fr auto auto; column-gap: var(--space-2); align-content: center; min-height: calc(100svh - 56px); text-align: left; background: none; border: 0; padding: var(--space-6) 0 var(--space-12); }
html[data-skin="a"] .hero > * { grid-column: 1 / -1; min-width: 0; }
html[data-skin="a"] .hero-mark { grid-column: 1; order: -2; width: 2px; height: 64px; margin: 0 0 var(--space-6); border: 0; background: var(--accent); box-shadow: none; }
html[data-skin="a"] .hero-sub { grid-column: 1; order: -1; margin: 0; font: var(--fs-16)/1.8 var(--font-ui); letter-spacing: .24em; color: var(--accent); }
html[data-skin="a"] .hero-title { grid-column: 1; margin: var(--space-4) 0 var(--space-6); font: 400 var(--fs-34)/1.4 var(--font-display); letter-spacing: .04em; color: var(--text); text-wrap: balance; }
html[data-skin="a"] .hero-slogan { grid-column: 1; align-self: start; margin: 0; font: var(--fs-22)/1.9 var(--font-kai); color: var(--text); }
/* U15p P4：对句从右侧浮挂轴改为承托两院入口的「轴线」——元素纵贯 hero 第 1–5 行（顶到入口行），
   左缘 2px 朱线即轴；两行入口（.hero-actions 收进第 1 列）右缘贴轴 8px 对齐；中段 1fr 空白由轴线贯穿，变成轴线留白 */
html[data-skin="a"] .hero-qi { grid-column: 2; grid-row: 1 / span 5; align-self: stretch; margin: 0; writing-mode: vertical-rl; font: var(--fs-18)/1.9 var(--font-kai); letter-spacing: .12em; color: var(--accent); padding: var(--space-2) 0 0 var(--space-3); border: 0; border-left: 2px solid var(--accent); background: none; }
html[data-skin="a"] .hero-actions { grid-column: 1; display: grid; align-items: stretch; justify-items: stretch; justify-content: stretch; gap: 0; margin-top: var(--space-12); border-top: 1px solid var(--border); }
html[data-skin="a"] .hero-garden { grid-column: 1 / -1; margin: var(--space-6) 0 0; }
html[data-skin="a"] .hero-garden .textlink { font-size: var(--fs-16); color: var(--text-secondary); border: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; padding: 0; }
/* 两院入口 = 同款大字行（hero 内、卡内两处各自两个同款元素） */
html[data-skin="a"] .hero-actions .pill--college { display: flex; justify-content: space-between; align-items: baseline; min-height: 72px; padding: var(--space-4) 0; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: none; color: var(--text); font: 400 var(--fs-30)/1.3 var(--font-display); letter-spacing: .1em; }
html[data-skin="a"] .hero-actions .pill--college::after { content: "→"; font-family: var(--font-ui); color: var(--accent); }
html[data-skin="a"] .hero-actions .pill--college:hover { color: var(--accent); }
/* U34：卡内两院入口与 hero 大字行同款（文字行 = a 的唯一动作样式）；教学大纲/园地链接 = 同语言的安静小字 */
html[data-skin="a"] .card-links .pill--college { display: flex; justify-content: space-between; align-items: baseline; min-height: 56px; padding: var(--space-3) 0; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: none; color: var(--text); font: 400 var(--fs-20)/1.4 var(--font-display); letter-spacing: .06em; }
html[data-skin="a"] .card-links .pill--college::after { content: "→"; font-family: var(--font-ui); color: var(--accent); }
html[data-skin="a"] .card-links .pill--college:hover { color: var(--accent); }
@media (min-width: 768px) {
  html[data-skin="a"] .hero-title { font-size: var(--fs-60); letter-spacing: .06em; }
  html[data-skin="a"] .hero-slogan { font-size: var(--fs-26); }
  html[data-skin="a"] .hero-qi { font-size: var(--fs-22); padding: var(--space-4) 0 0 var(--space-4); }
}

/* ---- 两院卡 / 园地：去框，段与段之间 96px 留白 ---- */
html[data-skin="a"] .home-cols { display: block; margin: 0; }
html[data-skin="a"] .card { background: none; border: 0; border-radius: 0; padding: 0; margin: var(--space-24) 0 0; }
html[data-skin="a"] .home-card { margin-top: var(--space-24); }
html[data-skin="a"] .card .eyebrow { font-size: var(--fs-14); letter-spacing: .3em; color: var(--text-secondary); margin-bottom: var(--space-3); }
html[data-skin="a"] .card h2 { font: 400 var(--fs-30)/1.3 var(--font-display); letter-spacing: .2em; color: var(--accent); margin: 0 0 var(--space-6); }
html[data-skin="a"] .home-card .card-desc { font: var(--fs-20)/2 var(--font-kai); color: var(--text); margin: 0 0 var(--space-4); }
html[data-skin="a"] .home-card .card-links { gap: var(--space-8); }
html[data-skin="a"] .home-card .card-links { flex-direction: column; align-items: stretch; gap: 0; }
html[data-skin="a"] .home-card .textlink { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 56px; padding: var(--space-3) 0; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; color: var(--text-secondary); font: var(--fs-16) var(--font-ui); }
html[data-skin="a"] .home-garden { display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-24); padding-top: var(--space-6); border-top: 1px solid var(--border); }
html[data-skin="a"] .home-garden .eyebrow, html[data-skin="a"] .home-garden .card-desc { display: none; }
html[data-skin="a"] .home-garden h2 { font-size: var(--fs-18); letter-spacing: .2em; margin: 0; color: var(--text-secondary); }
html[data-skin="a"] .home-garden .card-links { margin: 0; }
html[data-skin="a"] .home-garden .textlink { font-size: var(--fs-16); color: var(--text-secondary); border: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; padding: 0; }

/* ---- 落地页：一页纸 hero + 细线行目录 ---- */
html[data-skin="a"] .landing-hero { text-align: left; background: none; border: 0; padding: var(--space-16) 0 var(--space-8); }
html[data-skin="a"] .landing-hero .hero-mark { margin: 0 0 var(--space-6); }
html[data-skin="a"] .landing-hero .eyebrow { font-size: var(--fs-14); letter-spacing: .3em; color: var(--accent); }
html[data-skin="a"] .landing-hero .hero-title { font-size: var(--fs-44); letter-spacing: .14em; margin: var(--space-4) 0 var(--space-6); }
html[data-skin="a"] .landing-hero .hero-sub { font: var(--fs-20)/2 var(--font-kai); letter-spacing: 0; color: var(--text-secondary); margin: 0; }
@media (min-width: 768px) { html[data-skin="a"] .landing-hero .hero-title { font-size: var(--fs-60); } }
html[data-skin="a"] .landing-list ul { columns: 1; margin-top: var(--space-8); border-top: 1px solid var(--border); }
html[data-skin="a"] .card li { padding: 0; break-inside: avoid; page-break-inside: avoid; }
html[data-skin="a"] .card li a { font: var(--fs-20)/1.6 var(--font-display); letter-spacing: .06em; min-height: 56px; width: 100%; }

/* ---- 讲义页：单栏、窄目录、大标题大留白 ---- */
html[data-skin="a"] .page-head { padding: var(--space-4) 0 0; }
html[data-skin="a"] h1.page-title { font: 400 var(--fs-44)/1.35 var(--font-display); letter-spacing: .1em; margin: var(--space-8) 0 var(--space-12); }
@media (min-width: 768px) { html[data-skin="a"] h1.page-title { font-size: var(--fs-60); } }
html[data-skin="a"] article p { font-size: var(--fs-20); line-height: 1.95; }
html[data-skin="a"][data-fs="s"] article p { font-size: var(--fs-18); }
html[data-skin="a"][data-fs="l"] article p { font-size: var(--fs-22); }
/* U15p P3.10：手机行长 a 17.1 字/行（改前）→ 19.9（390）/ 18.2（360）：左右垫 24→16px + 正文 20→18px；放在 data-fs 覆盖之前、20px 基础规则之后（同特异性靠顺序），字号三档（s/l）仍可覆盖此默认 */
@media (max-width: 767px) {
  html[data-skin="a"] main { padding-left: var(--space-4); padding-right: var(--space-4); }
  html[data-skin="a"] article p { font-size: var(--fs-18); }
  html[data-skin="a"] .site-footer { padding-left: var(--space-4); padding-right: var(--space-4); }
}
html[data-skin="a"] article h2 { font: 400 var(--fs-30)/1.3 var(--font-display); letter-spacing: .16em; color: var(--accent); margin: var(--space-24) 0 var(--space-4); }
html[data-skin="a"] article h3 { font: 400 var(--fs-26)/1.4 var(--font-display); letter-spacing: .08em; margin: var(--space-12) 0 var(--space-3); }
html[data-skin="a"] article h4 { font: 400 var(--fs-20)/1.5 var(--font-display); letter-spacing: .06em; }
@media (min-width: 768px) { html[data-skin="a"] article h2 { font-size: var(--fs-34); margin-top: calc(var(--space-24) + var(--space-8)); } }
html[data-skin="a"] article blockquote { background: none; border-radius: 0; }
/* U18f F4：讲义页正文遗留表格框归零（验收 V8-2）——base 的 .table-scroll 边框/圆角属 b/c 卡片骨架，
   D1 静室辨识点是「几乎无框、靠留白」，a 作用域下归零；只改 a，b/c 不动 */
html[data-skin="a"] .table-scroll { border: 0; border-radius: 0; }
@media (min-width: 1024px) {
  html[data-skin="a"] main:has(> .toc) { grid-template-columns: 12rem minmax(0, 36rem); max-width: 58rem; column-gap: var(--space-12); }
  html[data-skin="a"] .toc { background: none; border: 0; border-radius: 0; padding: 0; font-family: var(--font-ui); }
  html[data-skin="a"] .toc summary { font-size: var(--fs-14); font-weight: 400; letter-spacing: .3em; color: var(--text-secondary); }
  html[data-skin="a"] .toc a { font-size: var(--fs-14); color: var(--text-secondary); }
  html[data-skin="a"] .toc a[aria-current="true"] { color: var(--accent); font-weight: 400; }
}
html[data-skin="a"] .reading-tools { background: var(--bg); }
html[data-skin="a"] .seg-book { margin-top: var(--space-16); }

/* ---- 正文语义（U17）：引文 = 内缩 + 宋体放大 + 朱色粗饰线；脚注 = 黑体小字注色、顶格；与普通段（楷体 20px）三类可辨 ---- */
/* U15p P3.7：引文不再与正文同色——用次级墨色（克制，不加底色不加花）；对纸色 5.23:1（暗 6.61:1）≥4.5 */
/* U24③：引文字号降一档（22→20px）：用户「引用信息字太大……没必要大这么多」；仍比正文（a 20px）同级可辨（宋体+饰线+色） */
html[data-skin="a"] article .quote { font-family: var(--font-display); font-size: var(--fs-20); line-height: 2; color: var(--text-secondary); border-left: 3px solid var(--accent); padding: 0 0 0 var(--space-6); margin: var(--space-8) 0 var(--space-8) var(--space-4); }
html[data-skin="a"] article .quote--saying { border-left-color: var(--text-secondary); }
html[data-skin="a"] article .quote--verse { letter-spacing: .12em; }
html[data-skin="a"] article .quote .quote-text { color: inherit; }
/* U24③：译文 blockquote（reading.css 基线 20px）同步降一档 → 18px，与手机正文同阶 */
html[data-skin="a"] article blockquote { font-size: var(--fs-18); }
html[data-skin="a"] article .fn-note { font-family: var(--font-ui); font-size: var(--fs-16); line-height: 1.7; color: var(--note); margin: var(--space-3) 0; }
html[data-skin="a"] article .fn-note--editor { color: var(--text-secondary); }
html[data-skin="a"] article .fn-src { color: var(--note); font-family: var(--font-ui); font-size: var(--fs-14); }
/* U24⑤：两院格子（大纲/课程列表）多行标题排版：列内不拆行、行高放宽、触达区保持 */
html[data-skin="a"] .card li { break-inside: avoid; page-break-inside: avoid; }
html[data-skin="a"] .card li a { line-height: 1.6; }

html[data-skin="a"] .site-footer { border-top: 0; text-align: left; max-width: 48rem; margin: 0 auto; padding: var(--space-24) var(--space-6) var(--space-12); }
/* 段内引文（混排段里被 span.quote-text 包住的那一段）：宋体 + 细朱下划线，读者一眼看出「这是引的话」 */
html[data-skin="a"] article p:not(.quote) .quote-text { font-family: var(--font-display); text-decoration: underline; text-decoration-thickness: 1px; text-decoration-color: var(--accent); text-underline-offset: 6px; }
/* themes/b-shuan.css · D2 书案（默认主题，html[data-skin="b"]）
   骨架：「工作台」——页面是分区的面板（panel）：顶栏满宽页签、首页首屏标语+工具链接+培养目标并排+两院同款卡片，
   讲义页 = 左侧目录 + 白色阅读面板；标题全部黑体粗体、h1 与正文级差拉开（本版修 D2 缺点：级差偏弱）。
   token 名冻结（contract §2）；值只写在本文件的 html[data-skin="b"] 块；组件规则只写 html[data-skin="b"] … 形式。
   不 import 其他主题的任何值。 */

html[data-skin="b"] {
  --bg: #e8edeb;
  --bg-elevated: #ffffff;
  --text: #1c2a33;
  --text-secondary: #51626c;
  --accent: #1e4d6b;
  --accent-weak: #eef3f4;
  --note: #9a3f2a;
  --border: #c9d3d0;
  --acc2: #b3392a;          /* 书案专属：印章红（页签下标/编号/logo 块） */
  --font-display: var(--font-ui);
  /* U26 P15③：不再把 --font-body 覆盖成 --font-ui——正文与 a/c 同用楷体栈（tokens.css 默认 --font-body: var(--font-kai)），
     同一个人换主题正文字体不再在黑体/楷体间跳。只动字体声明，表格相关规则不碰（U25 同期在改表格）。 */
  color-scheme: light;
}
html[data-skin="b"][data-theme="dark"] {
  --bg: #0e1519;
  --bg-elevated: #26363e;  /* U15p P3.6：原 #172228 对页底仅 1.14:1（暗色 hero 卡边界糊），提到 1.47:1（≥1.4，不加边框硬撑）；正文文字对其 9.94:1 */
  --text: #dde7ea;
  --text-secondary: #9fb0b8;
  --accent: #86bfdf;
  --accent-weak: #1d2b32;
  --note: #e8a08f;
  --border: #3a4b55;       /* U15p：随 elevated 提亮，否则边线对新卡底仅 1.06:1 不可见（对页底 2.03:1） */
  --acc2: #e58a7a;         /* U15p：随 elevated 提亮重校，原 #e0806f 对新卡底 4.46<4.5，提亮到 4.91 */
  color-scheme: dark;
}

/* ---- 顶栏：面板色 + 品牌方块 + 页签 ---- */
html[data-skin="b"] .site-header { background: var(--bg-elevated); -webkit-backdrop-filter: none; backdrop-filter: none; padding-left: var(--space-4); padding-right: var(--space-4); }
html[data-skin="b"] .site-name { display: flex; align-items: center; gap: var(--space-2); font-family: var(--font-ui); }
html[data-skin="b"] .site-name::before { content: "如"; flex: none; width: 32px; height: 32px; border-radius: var(--radius-icon); background: var(--acc2); color: #fff; display: grid; place-items: center; font: 700 var(--fs-18)/1 var(--font-ui); } /* U40：6px ad-hoc → icon 档；红（--acc2）只留给印章与语录饰线（U39 §6.2「红只给印章一处」） */
html[data-skin="b"] .nav-toggle, html[data-skin="b"] .ctl { background: var(--bg-elevated); }
@media (min-width: 768px) {
  html[data-skin="b"] .site-header { min-height: 64px; gap: var(--space-6); padding-left: var(--space-8); padding-right: var(--space-8); }
  html[data-skin="b"] .site-nav { flex: 1; max-width: 36rem; align-self: stretch; gap: var(--space-2); }
  html[data-skin="b"] .site-nav a, html[data-skin="b"] .site-nav .site-nav-current { min-height: 64px; padding: 0 var(--space-3); border-bottom: 3px solid transparent; }
  html[data-skin="b"] .site-nav a[aria-current="page"], html[data-skin="b"] .site-nav .site-nav-current { background: var(--accent-weak); border-bottom-color: var(--accent); }
  html[data-skin="b"] .nav-group { gap: var(--space-2); }
  html[data-skin="b"] .nav-group--yuan { border-left: 1px solid var(--border); border-right: 1px solid var(--border); padding: 0 var(--space-2); }
  html[data-skin="b"] .nav-group--yandi { margin-left: var(--space-2); }
}

/* ---- 主体：宽工作区 ---- */
html[data-skin="b"] main { padding: var(--space-4) var(--space-4) var(--space-12); }
@media (min-width: 768px) { html[data-skin="b"] main { padding: var(--space-4) var(--space-8) var(--space-16); } }
@media (min-width: 1100px) { html[data-skin="b"] main { max-width: 75rem; padding: var(--space-4) var(--space-8) 80px; } }
html[data-skin="b"] .breadcrumb { margin: 0 0 var(--space-2); }

/* ---- 首页 hero：U34 退卡片退色块——纸面 + 大留白，培养目标成右栏小字（U31 同方向） ---- */
html[data-skin="b"] .hero { display: grid; gap: var(--space-3); text-align: left; background: none; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; padding: var(--space-6) 0; margin-top: var(--space-2); }
html[data-skin="b"] .hero > * { min-width: 0; }
html[data-skin="b"] .hero-mark { display: none; }
html[data-skin="b"] .hero-sub { order: -1; margin: 0; font: 600 var(--fs-16)/1.5 var(--font-ui); letter-spacing: .04em; color: var(--text-secondary); } /* U40：hero 眉行去红（U39 §6.1-3「每个标题上方一条红色小字」）——红只给印章/语录饰线 */
html[data-skin="b"] .hero-title { font: 700 var(--fs-44)/1.3 var(--font-ui); letter-spacing: .02em; color: var(--text); margin: 0; }
html[data-skin="b"] .hero-slogan { font: var(--fs-22)/1.6 var(--font-kai); color: var(--text); margin: 0; }
html[data-skin="b"] .hero-qi { font: var(--fs-18)/1.7 var(--font-kai); color: var(--text-secondary); margin: 0; }
/* U26 P5：手机首屏必须能看到两院入口——hero 内启用「进入净修院/进入禅修院」（同 a/c 的入口位置与交互），排在修学园地之前 */
html[data-skin="b"] .hero-actions { display: flex; flex-direction: column; gap: var(--space-2); }
html[data-skin="b"] .hero-garden { margin: 0; text-align: center; }
/* U34：快捷入口 chips 行删除（怎样学佛收进园地卡、教学大纲与卡内重复、朗读/下载收页脚）；培养目标退卡片成小字 */
html[data-skin="b"] .home-aims { display: block; background: none; border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: var(--space-4) 0 0; }
html[data-skin="b"] .aim-title { margin: 0; font: 600 var(--fs-18)/1.4 var(--font-ui); color: var(--text); }
html[data-skin="b"] .aim-text { margin: var(--space-1) 0 var(--space-3); font: var(--fs-16)/1.7 var(--font-kai); color: var(--text-secondary); }
html[data-skin="b"] .aim-text:last-child { margin-bottom: 0; }
@media (min-width: 768px) {
  html[data-skin="b"] .hero { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); column-gap: var(--space-6); padding: var(--space-6); align-items: start; }
  html[data-skin="b"] .hero > :not(.home-aims) { grid-column: 1; }
  html[data-skin="b"] .home-aims { grid-column: 2; grid-row: 1 / span 6; }
  html[data-skin="b"] .hero-title { font-size: var(--fs-44); }
  /* 桌面首屏两院卡片（.home-cols）本就可见，恢复原样不另加入口 */
  html[data-skin="b"] .hero-actions { display: none; }
}

/* ---- 两院入口：U34 退卡片——细线分隔 + 统一胶囊（基线样式），园地同 ---- */
html[data-skin="b"] .home-cols { gap: var(--space-8); margin-top: var(--space-6); }
html[data-skin="b"] .card { background: none; border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: var(--space-4) 0 0; margin: var(--space-6) 0 0; } /* U40：卡片降级为细线分隔（U39 §6.2「首页 0 卡片、列表页最多 1 卡」，同 home-card/a 主题语言） */
html[data-skin="b"] .home-card { background: none; border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: var(--space-6) 0 0; margin: 0; display: flex; flex-direction: column; }
html[data-skin="b"] .card .eyebrow { color: var(--text-secondary); font-weight: 400; }
html[data-skin="b"] .card h2 { font: 400 var(--fs-30)/1.3 var(--font-display); letter-spacing: .04em; }
html[data-skin="b"] .home-card .card-desc { font-family: var(--font-kai); color: var(--text-secondary); }
html[data-skin="b"] .home-card .card-links { margin-top: auto; flex-direction: column; align-items: stretch; gap: var(--space-2); }
html[data-skin="b"] .home-garden { background: none; border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: var(--space-6) 0 0; }

/* ---- 落地页：面板化 hero + 大纲卡 ---- */
html[data-skin="b"] .landing-hero { background: none; border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: var(--space-6) 0 0; text-align: left; margin-top: var(--space-2); } /* U40：落地页 hero 面板退场，同细线语言 */
html[data-skin="b"] .landing-hero .eyebrow { color: var(--text-secondary); font-weight: 600; } /* U40：眉标去红 */
html[data-skin="b"] .landing-hero .hero-title { margin-top: var(--space-2); }
html[data-skin="b"] .landing-hero .hero-sub { order: 0; margin-top: var(--space-3); font: var(--fs-18)/1.7 var(--font-kai); color: var(--text-secondary); letter-spacing: 0; }
html[data-skin="b"] .landing-list ul { columns: 1; }
@media (min-width: 768px) { html[data-skin="b"] .landing-list ul { columns: 2; } }
@media (min-width: 1024px) { html[data-skin="b"] .landing-list ul { columns: 3; } }
/* U24⑤：两院格子：多行课程名不拆列、行高放宽、内边距加厚（改前 1.4/默认行高，长标题贴边） */
html[data-skin="b"] .card li { padding: var(--space-3) 0; break-inside: avoid; page-break-inside: avoid; }
html[data-skin="b"] .card li a { font: var(--fs-16)/1.6 var(--font-kai); }
html[data-skin="b"] article { background: transparent; }

/* ---- 讲义页：标题面板 + 白色阅读面板 + 左目录 ---- */
html[data-skin="b"] .page-head { background: none; border: 0; border-radius: 0; padding: var(--space-3) 0 var(--space-4); margin-bottom: var(--space-4); } /* U40：同卡降级——细线语言 */
html[data-skin="b"] h1.page-title { font: 700 var(--fs-44)/1.3 var(--font-ui); letter-spacing: .02em; margin: var(--space-2) 0 0; }  /* U15p P2.4：手机 h1 34→44px，h1:正文 1.89→2.44、h1:h2 1.31→1.69 */
@media (min-width: 768px) { html[data-skin="b"] h1.page-title { font-size: var(--fs-44); } }
html[data-skin="b"] main > article { background: none; border: 0; border-radius: 0; padding: var(--space-4) 0; max-width: 42rem; }  /* U40：阅读面板退卡片成白纸（同 reading.css 讲义页做法；U15p P3.10 行长不变） */
/* U15p P3.5：去掉内层 .table-scroll 框（article 卡 1px+radius12 已有描边，内层 1px+radius8 是「框中框」）；照 a 主题做法 */
html[data-skin="b"] .table-scroll { border: 0; border-radius: 0; }
@media (min-width: 768px) { html[data-skin="b"] main > article { padding: var(--space-6) var(--space-8); } }
html[data-skin="b"] article h2 { font: 700 var(--fs-26)/1.3 var(--font-ui); border-top: 2px solid var(--accent); padding-top: var(--space-3); margin: 1.8em 0 .5em; }
html[data-skin="b"] article h3 { font: 700 var(--fs-22)/1.3 var(--font-ui); }
html[data-skin="b"] article h4 { font: 700 var(--fs-18)/1.4 var(--font-ui); }
@media (min-width: 768px) { html[data-skin="b"] article h2 { font-size: var(--fs-30); } }
@media (min-width: 1024px) {
  html[data-skin="b"] main:has(> .toc) { grid-template-columns: 15rem minmax(0, 42rem); max-width: 70rem; column-gap: var(--space-4); }  /* U15p P3.10：TOC 页正文列 46→42rem，桌面 37.2→33.7 字/行 */
}
html[data-skin="b"] .toc { border-radius: var(--radius-card); } /* U40：TOC 是内容页唯一保留的卡容器（U39 §6.2「列表页最多 1 个卡」），不动 */
html[data-skin="b"] .toc a[aria-current="true"] { background: var(--accent-weak); border-radius: var(--radius-icon); } /* U40：6px ad-hoc → icon 档 */
html[data-skin="b"] .reading-tools { background: var(--bg-elevated); }
html[data-skin="b"] .seg-book { margin-top: var(--space-8); }

/* ---- 正文语义（U17）：引文 = 浅底面板 + 粗左边线 + 楷体；脚注 = details 收起块（U24①，点击展开）；与普通段三类可辨 ---- */
/* U24③：引文字号降一档（20→18px）：用户「引用信息字太大」；仍比正文（b 17px）高一阶，楷体+饰线可辨 */
html[data-skin="b"] article .quote { font-family: var(--font-kai); font-size: var(--fs-18); line-height: 1.9; color: var(--text); background: var(--accent-weak); border-left: 4px solid var(--accent); border-radius: 0 var(--radius-icon) var(--radius-icon) 0; padding: var(--space-2) var(--space-4); margin: var(--space-4) 0; }
html[data-skin="b"] article .quote--saying { border-left-color: var(--acc2); }
html[data-skin="b"] article .quote--verse { letter-spacing: .06em; font-weight: 700; }
html[data-skin="b"] article .quote .quote-text { color: inherit; }
/* U24③：译文 blockquote（reading.css 基线 20px）同步降一档 → 18px */
html[data-skin="b"] article blockquote { font-size: var(--fs-18); }
html[data-skin="b"] article .fn-note { font-family: var(--font-ui); font-size: var(--fs-16); line-height: 1.6; color: var(--note); border-top: 1px dashed var(--border); padding-top: var(--space-2); margin: var(--space-3) 0; }
html[data-skin="b"] article .fn-note--editor { color: var(--text-secondary); }
html[data-skin="b"] article .fn-src { color: var(--note); font-family: var(--font-ui); font-size: var(--fs-14); }

html[data-skin="b"] .site-footer { background: transparent; text-align: left; }
@media (min-width: 1100px) { html[data-skin="b"] .site-footer { max-width: 75rem; margin: 0 auto; padding-left: var(--space-8); } }
/* 段内引文（混排段里被 span.quote-text 包住的那一段）：浅底高亮 + 楷体，卡片式 */
html[data-skin="b"] article p:not(.quote) .quote-text { font-family: var(--font-kai); background: var(--accent-weak); border-bottom: 2px solid var(--accent); padding: 0 var(--space-1); -webkit-box-decoration-break: clone; box-decoration-break: clone; }
/* themes/c-zazhi.css · D3 杂志（html[data-skin="c"]）
   骨架：「杂志版面」——近全黑通栏（页头/首屏/页标题/页脚都是墨色带）+ 超大黑体字压首屏，两院左右各半、同款；
   正文区 = 白纸 + 粗黑上边线的栏目，园地 = 红色通栏。
   本版修 D3 缺点「讲义页首屏被大标题吃掉」：讲义页/落地页的标题带限制在 44/60px、内边距 ≤24px，正文起点紧贴标题带；
   首页首屏可以超大字（桌面 ≤150px，超出 reference-spec 字号阶，理由见 DONE；手机仍用阶内 60px，360px 不横滚）。
   token 值只写在本文件 html[data-skin="c"] 块；新增主题内部 token：--ink / --on-ink / --acc-ink。不 import 其他主题的任何值。 */

html[data-skin="c"] {
  --bg: #f3f2ee;
  --bg-elevated: #ffffff;
  --text: #14120f;
  --text-secondary: #5d5850;
  --accent: #c0301b;
  --accent-weak: #e9e5da;
  --note: #b02a16;
  --border: #cfcbc0;
  --ink: #14120f;          /* 通栏墨色 */
  --on-ink: #f3f2ee;       /* 墨色上的文字 */
  --acc-ink: #ff8570;      /* 红色在墨色上的亮版（文字用，≥4.5:1） */
  color-scheme: light;
}
html[data-skin="c"][data-theme="dark"] {
  --bg: #17150f;
  --bg-elevated: #211e17;
  --text: #ece9e1;
  --text-secondary: #a8a396;
  --accent: #ef6a52;
  --accent-weak: #2c2820;
  --note: #f08a76;
  --border: #38342b;
  --ink: #5d5840;          /* 通栏墨色；U18f F3：原 #000000 对纸色仅 1.15:1，提亮到 #403926 ≈1.6:1；U14a：再提亮到对纸色 ≈2.55:1（内部目标 ≥2.5，不加边框硬撑）；封顶原因：红强调（--acc-ink）对墨带须 ≥4.5，墨带再亮红就得褪成近白 */
  --on-ink: #ece9e1;
  --acc-ink: #ffc0ae;      /* 红色在墨色上的亮版（文字用，≥4.5:1）；U14a：随墨带提亮重校，#ff8570 对新墨带仅 4.0 */
  --acc-paper: #b02a16;    /* U14a：暗色浅纸挖空上的红（入口条箭头/hover，对挖空纸 ≥4.5:1） */
  color-scheme: dark;
}

/* ---- 页头：墨色通栏 ---- */
/* U14a：墨带提亮后，墨上的透明混色次要文字在暗色下提高混比（对墨带 ≥4.5:1；亮色不变） */
html[data-skin="c"][data-theme="dark"] .site-nav a, html[data-skin="c"][data-theme="dark"] .site-nav .site-nav-current,
html[data-skin="c"][data-theme="dark"] .breadcrumb, html[data-skin="c"][data-theme="dark"] .breadcrumb a,
html[data-skin="c"][data-theme="dark"] .site-footer,
html[data-skin="c"][data-theme="dark"] .reading-tools .seg-pos { color: color-mix(in srgb, var(--on-ink) 88%, var(--ink)); }
html[data-skin="c"][data-theme="dark"] .hero-qi { color: color-mix(in srgb, var(--on-ink) 88%, var(--ink)); }
html[data-skin="c"] .site-header { background: var(--ink); color: var(--on-ink); -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom: 1px solid rgb(255 255 255 / .22); padding-left: var(--space-4); padding-right: var(--space-4); }
html[data-skin="c"] .site-name { color: var(--on-ink); font: 700 var(--fs-14)/44px var(--font-ui); letter-spacing: .3em; }
html[data-skin="c"] .site-header .ctl, html[data-skin="c"] .nav-toggle { background: transparent; color: var(--on-ink); border-color: rgb(255 255 255 / .32); }
html[data-skin="c"] .site-header .ctl:hover { color: var(--acc-ink); border-color: var(--acc-ink); }
html[data-skin="c"] .site-nav a, html[data-skin="c"] .site-nav .site-nav-current { color: color-mix(in srgb, var(--on-ink) 75%, transparent); font-weight: 600; }
html[data-skin="c"] .site-nav a:hover { color: var(--on-ink); }
html[data-skin="c"] .site-nav a[aria-current="page"], html[data-skin="c"] .site-nav .site-nav-current { color: var(--on-ink); box-shadow: inset 0 -3px var(--accent); }
@media (min-width: 768px) {
  html[data-skin="c"] .site-header { padding-left: var(--space-8); padding-right: var(--space-8); }
  html[data-skin="c"] .site-nav { margin-left: auto; }
  html[data-skin="c"] .site-nav a, html[data-skin="c"] .site-nav .site-nav-current { padding: 0 var(--space-6); min-height: 56px; }
  html[data-skin="c"] .nav-group--yuan { border-left: 1px solid rgb(255 255 255 / .22); }
  html[data-skin="c"] .nav-group--yandi { border-left: 1px solid rgb(255 255 255 / .22); }
  html[data-skin="c"] .header-ctl { margin-left: var(--space-6); }
}

/* ---- 手机抽屉：墨色 ---- */
html[data-skin="c"] .site-drawer { background: var(--ink); color: var(--on-ink); border-left: 0; }
html[data-skin="c"] .site-drawer a, html[data-skin="c"] .site-drawer .site-nav-current { color: var(--on-ink); font-weight: 700; border-radius: 0; }
html[data-skin="c"] .site-drawer a[aria-current="page"], html[data-skin="c"] .site-drawer .site-nav-current { background: var(--accent); color: var(--bg); }
html[data-skin="c"] .drawer-title { color: var(--on-ink); font-family: var(--font-ui); font-weight: 700; letter-spacing: .2em; font-size: var(--fs-16); }
html[data-skin="c"] .nav-close { color: var(--on-ink); border-color: rgb(255 255 255 / .32); }
/* U50 A1：c 的墨色页头提亮规则组（.site-nav a / .breadcrumb / .site-footer 均在）原先漏了 .header-search，
   --text-secondary 对墨带只有 2.65:1（亮）/ 2.84:1（暗）。并入 on-ink；hover/当前页用 --acc-ink
   （红在墨上的亮版 token，对墨带亮/暗均 ≥4.5：#ff8570≈7.87、#ffc0ae≈5.9；用 --accent 会掉到 3.28:1）。 */
html[data-skin="c"] .header-search { color: var(--on-ink); }
html[data-skin="c"] .header-search:hover, html[data-skin="c"] .header-search[aria-current="page"] { color: var(--acc-ink); }
/* U50 A2：c/亮 下 --bg 与 --on-ink 同为 #f3f2ee，抽屉里 .drawer-search 吃了 b 主题那套
   「background: var(--bg) + .site-drawer a 的 color: var(--on-ink)」→ 前景=背景 1.0:1（白底空白条）。
   改为抽屉同语言：墨底透明、白字、白系描边（on-ink 对墨带亮 16.69 / 暗 5.90，均 ≥4.5）。 */
html[data-skin="c"] .site-drawer .drawer-search { color: var(--on-ink); background: transparent; border-color: rgb(255 255 255 / .32); }
html[data-skin="c"] .site-drawer .nav-group--yuan, html[data-skin="c"] .site-drawer .nav-group--yandi { border-color: rgb(255 255 255 / .28); border-radius: 0; }

/* ---- 主体与通栏带（box-shadow + clip-path 让带子出血到视口两侧，内容仍在 main 内） ---- */
html[data-skin="c"] main { max-width: 90rem; margin: 0 auto; padding: 0 var(--space-4) var(--space-12); }
@media (min-width: 768px) { html[data-skin="c"] main { padding: 0 var(--space-8) var(--space-16); } }
html[data-skin="c"] .hero, html[data-skin="c"] .page-head, html[data-skin="c"] .landing-hero { background: var(--ink); color: var(--on-ink); box-shadow: 0 0 0 100vmax var(--ink); clip-path: inset(0 -100vmax); border: 0; border-radius: 0; text-align: left; }
html[data-skin="c"] .hero-mark { display: none; }
html[data-skin="c"] .breadcrumb, html[data-skin="c"] .breadcrumb a { color: color-mix(in srgb, var(--on-ink) 75%, transparent); }
html[data-skin="c"] .breadcrumb [aria-current="location"] { color: var(--on-ink); }

/* ---- 首页首屏：超大字压版 ---- */
html[data-skin="c"] .hero { display: flex; flex-direction: column; min-height: calc(100svh - 57px); justify-content: flex-end; padding: var(--space-8) 0 0; margin-top: 0; }
html[data-skin="c"] .hero-sub { order: -2; margin: 0 0 var(--space-6); font: 700 var(--fs-16)/1.6 var(--font-ui); letter-spacing: .2em; color: var(--acc-ink); }
html[data-skin="c"] .hero-title { order: -1; margin: 0 0 var(--space-4) -.04em; font: 900 var(--fs-60)/1 var(--font-display); letter-spacing: -.02em; color: var(--on-ink); text-wrap: balance; }
html[data-skin="c"] .hero-slogan { font: var(--fs-22)/1.6 var(--font-kai); color: var(--on-ink); max-width: 20em; margin: 0; text-wrap: balance; }
html[data-skin="c"] .hero-qi { font: var(--fs-16)/1.7 var(--font-kai); color: color-mix(in srgb, var(--on-ink) 72%, transparent); margin: var(--space-2) 0 0; }
html[data-skin="c"] .hero-garden { order: 4; margin: var(--space-4) 0 var(--space-6); }
html[data-skin="c"] .hero-garden .textlink { display: flex; justify-content: space-between; align-items: center; min-height: 56px; padding: var(--space-2) var(--space-4); border: 0; border-radius: 0; background: var(--bg); color: var(--text); text-decoration: none; -webkit-backdrop-filter: none; backdrop-filter: none; font: 900 var(--fs-20)/1.3 var(--font-display); }
html[data-skin="c"] .hero-garden .textlink::after { content: "→"; font: 700 var(--fs-20) var(--font-ui); color: var(--accent); }
html[data-skin="c"] .hero-garden .textlink:hover { color: var(--accent); }
/* 两院入口 = 左右各半的同款大块 */
html[data-skin="c"] .hero-actions { order: 5; display: grid; grid-template-columns: 1fr; gap: var(--space-2); margin: 0 calc(-1 * var(--space-4)); align-items: stretch; }
html[data-skin="c"] .hero-actions .pill--college { display: flex; justify-content: space-between; align-items: center; min-height: 80px; padding: var(--space-3) var(--space-4); border: 0; border-radius: 0; background: var(--bg); color: var(--text); font: 900 var(--fs-30)/1.2 var(--font-display); }
html[data-skin="c"] .hero-actions .pill--college::after { content: "→"; font: 700 var(--fs-34) var(--font-ui); color: var(--accent); }
html[data-skin="c"] .hero-actions .pill--college:hover { color: var(--accent); }
/* U14a：暗色下与亮色同极性——墨带上的浅纸挖空（亮色 = 黑带上的浅纸），不用更暗的槽 */
html[data-skin="c"][data-theme="dark"] .hero-actions .pill--college { background: var(--on-ink); color: var(--bg); }
html[data-skin="c"][data-theme="dark"] .hero-actions .pill--college::after { color: var(--acc-paper); }
html[data-skin="c"][data-theme="dark"] .hero-actions .pill--college:hover { color: var(--acc-paper); }
@media (min-width: 768px) {
  html[data-skin="c"] .hero { padding-top: var(--space-12); }
  html[data-skin="c"] .hero-title { font-size: 6rem; }
  html[data-skin="c"] .hero-slogan { font-size: var(--fs-26); }
  html[data-skin="c"] .hero-actions { grid-template-columns: 1fr 1fr; margin: 0 calc(-1 * var(--space-8)); gap: 0; }
  html[data-skin="c"] .hero-actions .pill--college { min-height: 128px; padding: var(--space-8); font-size: var(--fs-44); border-left: 1px solid var(--border); }
}
@media (min-width: 1100px) { html[data-skin="c"] .hero-title { font-size: clamp(7.5rem, 10.5vw, 9.375rem); } }

/* ---- 栏目块：白纸 + 粗黑上边线；两院卡 = 两栏 ---- */
html[data-skin="c"] .card { background: none; border: 0; border-top: 4px solid var(--text); border-radius: 0; padding: var(--space-3) 0 0; margin: var(--space-12) 0 0; }
html[data-skin="c"] .card .eyebrow { font: 700 var(--fs-14) var(--font-ui); letter-spacing: .2em; color: var(--text-secondary); } /* U40：卡级眉标去红（U39 §6.1-3），红只留给墨带眉标与链接/当前态 */
html[data-skin="c"] .card h2 { font: 900 var(--fs-30)/1.2 var(--font-display); letter-spacing: 0; color: var(--text); margin: var(--space-2) 0 var(--space-4); }
html[data-skin="c"] .home-cols { display: grid; gap: var(--space-12); margin-top: var(--space-12); }
html[data-skin="c"] .home-card { margin: 0; }
html[data-skin="c"] .home-card .card-desc { font: var(--fs-20)/1.95 var(--font-kai); color: var(--text); }
/* U34：卡内动作与 hero 的大块入口同款（白块大字 + →，c 的唯一动作样式）；教学大纲 = 同语言的小一号行 */
html[data-skin="c"] .home-card .card-links { flex-direction: column; align-items: stretch; gap: 0; }
html[data-skin="c"] .card-links .pill--college { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 64px; padding: var(--space-3) var(--space-4); border: 0; border-radius: 0; background: var(--bg); color: var(--text); font: 900 var(--fs-24)/1.2 var(--font-display); }
html[data-skin="c"] .card-links .pill--college::after { content: "→"; font: 700 var(--fs-24) var(--font-ui); color: var(--accent); }
html[data-skin="c"] .card-links .pill--college:hover { color: var(--accent); }
html[data-skin="c"] .home-card .textlink { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 56px; padding: var(--space-2) var(--space-4); border: 0; border-radius: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; color: var(--text-secondary); font: 700 var(--fs-16) var(--font-ui); }
@media (min-width: 768px) {
  html[data-skin="c"] .home-cols { grid-template-columns: 1fr 1fr; column-gap: var(--space-16); }
  html[data-skin="c"] .card h2 { font-size: var(--fs-44); }
}
/* 园地 = 红色通栏（另一组，不是第三个「院」） */
html[data-skin="c"] .home-garden { background: var(--accent); color: var(--bg); border: 0; box-shadow: 0 0 0 100vmax var(--accent); clip-path: inset(0 -100vmax); padding: var(--space-12) 0; margin-top: var(--space-16); }
html[data-skin="c"] .home-garden .eyebrow, html[data-skin="c"] .home-garden h2, html[data-skin="c"] .home-garden .card-desc { color: inherit; }
html[data-skin="c"] .home-garden h2 { font-size: var(--fs-44); }
html[data-skin="c"] .home-garden .card-desc { font: var(--fs-22)/1.8 var(--font-kai); }
/* U34：园地内两个入口与全站动作同款（白块 + →），不再是下划线小字 */
html[data-skin="c"] .home-garden .card-links a { display: flex; justify-content: space-between; align-items: center; min-height: 56px; padding: var(--space-2) var(--space-4); border: 0; border-radius: 0; background: var(--bg); color: var(--text); text-decoration: none; -webkit-backdrop-filter: none; backdrop-filter: none; font: 900 var(--fs-20)/1.3 var(--font-display); }
html[data-skin="c"] .home-garden .card-links a::after { content: "→"; font: 700 var(--fs-20) var(--font-ui); color: var(--accent); }
html[data-skin="c"] .home-garden .card-links a:hover { color: var(--accent); }
html[data-skin="c"] .home-garden .card-links { display: grid; gap: var(--space-2); margin: var(--space-4) 0 0; }
@media (min-width: 768px) { html[data-skin="c"] .home-garden h2 { font-size: var(--fs-60); } html[data-skin="c"] .home-garden .card-desc { font-size: var(--fs-26); } }

/* ---- 落地页：墨色标题带 ---- */
html[data-skin="c"] .landing-hero { display: block; min-height: 0; padding: var(--space-6) 0 var(--space-8); margin-top: 0; }
html[data-skin="c"] .landing-hero .eyebrow { color: var(--acc-ink); font: 700 var(--fs-14) var(--font-ui); letter-spacing: .2em; }
html[data-skin="c"] .landing-hero .hero-title { font-size: var(--fs-60); margin: var(--space-2) 0 var(--space-4); }
html[data-skin="c"] .landing-hero .hero-sub { font: var(--fs-20)/1.9 var(--font-kai); letter-spacing: 0; color: color-mix(in srgb, var(--on-ink) 85%, transparent); max-width: 36em; margin: 0; }
@media (min-width: 768px) { html[data-skin="c"] .landing-hero .hero-title { font-size: 6rem; } }
@media (min-width: 1100px) { html[data-skin="c"] .landing-hero .hero-title { font-size: clamp(7.5rem, 11vw, 9.375rem); } }
html[data-skin="c"] .card ul { margin-top: var(--space-4); }
/* U24⑤：两院格子：多行课程名不拆列、行高放宽、上下留白（改前 1.4 行高无内边距，长标题第二行贴线） */
html[data-skin="c"] .card li { padding: var(--space-2) 0; break-inside: avoid; page-break-inside: avoid; }
html[data-skin="c"] .card li a { font: 700 var(--fs-18)/1.6 var(--font-kai); min-height: 52px; }

/* ---- 讲义页：墨色标题带（紧凑，正文紧贴其下）+ 白纸正文 ---- */
html[data-skin="c"] .page-head { padding: var(--space-3) 0 var(--space-4); margin-bottom: var(--space-6); }
html[data-skin="c"] h1.page-title { font: 900 var(--fs-44)/1.1 var(--font-display); color: var(--on-ink); margin: var(--space-2) 0 0; text-wrap: balance; }
@media (min-width: 768px) { html[data-skin="c"] h1.page-title { font-size: var(--fs-60); } }
html[data-skin="c"] main > article { max-width: 40rem; }  /* U15p P3.10：桌面 40.9（无 TOC 页）/39.1（TOC 页）→ 35.6 字/行 */
html[data-skin="c"] article p { line-height: 1.85; }
html[data-skin="c"] article h2 { font: 900 var(--fs-30)/1.15 var(--font-display); border-top: 4px solid var(--text); padding-top: var(--space-4); margin: var(--space-12) 0 var(--space-3); }
html[data-skin="c"] article h3 { font: 900 var(--fs-22)/1.3 var(--font-display); }
html[data-skin="c"] article h4 { font: 900 var(--fs-18)/1.4 var(--font-display); }
@media (min-width: 768px) { html[data-skin="c"] article h2 { font-size: var(--fs-44); } html[data-skin="c"] article h3 { font-size: var(--fs-26); } }
@media (min-width: 1024px) {
  html[data-skin="c"] main:has(> .toc) { grid-template-columns: 15rem minmax(0, 40rem); max-width: 70rem; column-gap: var(--space-8); }
  html[data-skin="c"] main:has(> .toc) > .page-head { grid-column: 1 / -1; }
  html[data-skin="c"] main:has(> .toc) > .toc { grid-row: 2 / span 6; background: none; border: 0; border-top: 4px solid var(--text); border-radius: 0; padding: var(--space-2) 0 0; font-family: var(--font-ui); }
}
html[data-skin="c"] .toc summary { font-weight: 700; letter-spacing: .1em; }
html[data-skin="c"] .toc a[aria-current="true"] { color: var(--accent); }
html[data-skin="c"] .seg-book .book-link { background: none; border: 0; border-bottom: 2px solid var(--text); border-radius: 0; color: var(--text); font-weight: 700; padding: 0 var(--space-1); }
html[data-skin="c"] .seg-book .book-link:hover { color: var(--accent); border-color: var(--accent); }

/* 阅读栏：墨色 */
html[data-skin="c"] .reading-tools { background: var(--ink); color: var(--on-ink); border-top: 0; -webkit-backdrop-filter: none; backdrop-filter: none; }
html[data-skin="c"] .reading-tools .ctl, html[data-skin="c"] .reading-tools .seg-btn { background: transparent; color: var(--on-ink); border-color: rgb(255 255 255 / .32); }
html[data-skin="c"] .reading-tools .ctl:hover, html[data-skin="c"] .reading-tools .seg-btn:hover { color: var(--acc-ink); border-color: var(--acc-ink); }
html[data-skin="c"] .reading-tools .seg-pos { color: color-mix(in srgb, var(--on-ink) 80%, transparent); }

/* ---- 正文语义（U17）：引文 = 黑体粗大字 + 6px 红色粗饰线；脚注 = 黑体小字红注色 + 细上边线；与普通段（楷体 18px 黑字）三类可辨 ---- */
/* U15p P3.8：小节标题退出红强调——h2 内的锡点锚链（改前继承 article a 的红+下划线）改承墨色无饰线；红只留给真强调与正文链接 */
html[data-skin="c"] article h2 a { color: inherit; text-decoration: none; }
/* U15p P3.9：引文从 22/700（手机）·26/700（桌面）收敛到 20–22px / 600，与脚注 16px 同一量级；引文（宋体 20–22 + 6px 红左线）/ 脚注（16px 红注色）/ 正文（楷体 18px 墨色）仍三类可辨 */
/* U24③：引文字号再降一档（手机 20→18px、桌面 22→20px）：用户「没必要大这么多」；仍以宋体 600 + 6px 红左线与正文（楷体 18px）可辨 */
html[data-skin="c"] article .quote { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-18); line-height: 1.7; color: var(--text); border-left: 6px solid var(--accent); padding: 0 0 0 var(--space-4); margin: var(--space-6) 0; }
html[data-skin="c"] article .quote--saying { border-left-color: var(--text); }
html[data-skin="c"] article .quote--verse { letter-spacing: .08em; }
html[data-skin="c"] article .quote .quote-text { color: inherit; }
@media (min-width: 768px) { html[data-skin="c"] article .quote { font-size: var(--fs-20); } }
/* U24③：译文 blockquote（reading.css 基线 20px）同步降一档 → 18px */
html[data-skin="c"] article blockquote { font-size: var(--fs-18); }
html[data-skin="c"] article .fn-note { font-family: var(--font-ui); font-size: var(--fs-16); line-height: 1.7; color: var(--note); border-top: 1px solid var(--border); padding-top: var(--space-2); margin: var(--space-3) 0; }
html[data-skin="c"] article .fn-note--editor { color: var(--text-secondary); }
html[data-skin="c"] article .fn-src { color: var(--note); font-family: var(--font-ui); font-size: var(--fs-14); }
html[data-skin="c"] article p:not(.quote) .quote-text { font-family: var(--font-display); border-bottom: 2px solid var(--accent); }

/* ---- 页脚：墨色通栏 ---- */
/* U15p P1.1：删去 c 的 body padding-bottom:0 覆盖，回到与 a/b 同一机制（reading.css 的 body 128px 底垫）——滚到底时 footerBottom ≤ toolsTop（改前 c 页脚被工具栏遮 114px） */
/* U15p：body 底垫（与 reading.css 同值 128px+safe-area）用墨色背景条填实，通栏墨带滚到底也无缝；不占布局，footerBottom 仍 ≤ toolsTop */
html[data-skin="c"] body { padding-bottom: calc(128px + env(safe-area-inset-bottom)); background-image: linear-gradient(var(--ink), var(--ink)); background-position: bottom; background-size: 100% calc(128px + env(safe-area-inset-bottom)); background-repeat: no-repeat; }
html[data-skin="c"] .site-footer { background: var(--ink); color: color-mix(in srgb, var(--on-ink) 75%, transparent); border: 0; text-align: left; padding: var(--space-12) max(var(--space-4), calc((100% - 90rem) / 2 + var(--space-8))); margin-top: var(--space-8); }
html[data-skin="c"] .site-footer .footer-tools a { color: var(--on-ink); } /* U42 P18：墨底页脚里工具链接回 on-ink（layout 基线的 --text 是墨色，会隐入墨底）；on-ink 对 --ink 亮/暗两档均 ≥4.5 */
/* U15p P1.1：页脚不再自己加 128px 高（那 113px 正是被工具栏盖住的区域），底部空间交给 body 底垫 */
