/* ============================================================
   唐书房知识站 · 浅蓝画廊风设计系统（2026-09 重设计落地）
   wash 轮换 #E3F4F8 → #FFFFFF → #F7F7F4；主强调 #2A4858；
   衬线标题（Noto Serif SC）+ 无衬线正文（Noto Sans SC）+
   等宽数字（JetBrains Mono）；卡片近零阴影、大圆角、大留白。
   ============================================================ */
:root{
  --wash:#e3f4f8; --wash-2:#f7f7f4; --paper:#f8f7f4; --card:#f4f9fb;
  --ink:#16323f; --ink-soft:#333f47; --muted:#5c6b73; --faint:#93a7b0;
  --line:#dce7ec; --line-warm:#e2dfd7;
  --accent:#2a4858; --accent-2:#7aaec0; --gold:#d4a574;
  color-scheme:light;
}
*{box-sizing:border-box} html,body{margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--paper);
  color:var(--ink-soft);
  font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  line-height:1.75;-webkit-font-smoothing:antialiased;
}
::selection{background:#cfe4ee;color:var(--ink)}
a{color:inherit;text-decoration:none}
a:hover{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}
.serif{font-family:"Noto Serif SC","Songti SC","SimSun",serif}
.spine{display:none}
main{position:relative;z-index:1}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:20;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:0 1px 8px rgba(22,50,63,.06);
}
.bar{max-width:1320px;margin:0 auto;padding:0 32px;height:76px;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:28px}
.brand{display:flex;align-items:center;gap:12px;color:var(--ink);justify-self:start}
.brand:hover{color:var(--ink)}
.mark{width:42px;height:42px;object-fit:contain;background:#fff;border-radius:10px;flex:0 0 42px;display:block}
.brand-name{font-family:"Noto Serif SC","Songti SC",serif;font-size:21px;font-weight:600;letter-spacing:.04em;color:var(--ink)}
/* 品牌副标题：小号无衬线弱化色，与衬线主名形成层级，同时避免被误认作官方号 */
.brand-sub{
  font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:12px;font-weight:400;color:var(--muted);letter-spacing:.14em;
  align-self:flex-end;padding-bottom:4px;margin-left:-8px;white-space:nowrap;
}
.topnav{justify-self:center;display:flex;gap:36px}
.topnav a{font-size:15px;color:var(--muted);transition:color .15s}
.topnav a:hover{color:var(--accent)}
.kicker{margin:0;font-size:12px;letter-spacing:.18em;color:var(--accent)}
.kicker a{color:inherit}

/* ---------- 搜索（顶栏胶囊 + 下拉） ---------- */
.home-search,.doc-search{position:relative;width:min(264px,36vw);flex:0 0 auto;justify-self:end;height:42px}
.search-host input,.gtools input{
  width:100%;height:42px;background:#f4f9fb;border:1px solid #d8e4ea;border-radius:21px;
  padding:0 18px 0 42px;font-size:13px;font-family:inherit;color:var(--ink);outline:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none'><circle cx='11' cy='11' r='7' stroke='%237aaec0' stroke-width='2'/><path d='M16.5 16.5L20 20' stroke='%237aaec0' stroke-width='2' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:16px center;
  transition:border-color .15s, background-color .15s;
}
.search-host input::placeholder{color:var(--faint)}
.gtools input{width:auto;min-width:220px}
.search-host input:focus,.gtools input:focus{border-color:var(--accent-2);background-color:#fff}
/* 文本输入框点击聚焦时浏览器始终命中 :focus-visible，会再画一圈外描边，
   与输入框自身边框叠加形成"重影"，这里对搜索类输入关掉 outline，聚焦态用边框变色表达 */
.search-host input:focus-visible,.gtools input:focus-visible{outline:none}
/* ---------- 站内搜索：自建下拉面板（替代 PagefindUI 组件）----------
   计数头 + 类型筛选 + 讲义/原文分组 + 无限滚动 + 键盘导航，逻辑见 assets/search.js */
.sf-panel{
  position:absolute;top:calc(100% + 10px);right:0;z-index:40;
  width:min(430px,80vw);max-height:min(70vh,520px);
  overflow-y:auto;overscroll-behavior:contain;
  background:#fff;border:1px solid var(--line);border-radius:16px;
  padding:2px 0 10px;
  box-shadow:0 12px 32px -8px rgba(42,72,88,.16);
}
.sf-panel[hidden]{display:none}
.sf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 18px 10px}
.sf-count{font-size:12.5px;font-weight:500;color:var(--accent-2);letter-spacing:.02em}
.sf-chips{margin-left:auto;display:flex;gap:4px}
.sf-chip{border:1px solid var(--line);background:#fff;border-radius:999px;
  font-size:12px;line-height:1;padding:5px 11px;color:var(--muted);cursor:pointer;font-family:inherit}
.sf-chip:hover{border-color:var(--accent-2);color:var(--accent)}
.sf-chip.is-on{background:var(--accent-2);border-color:var(--accent-2);color:#fff}
.sf-group-label{display:block;font-family:"Noto Sans SC",sans-serif;font-size:11px;letter-spacing:.16em;
  color:var(--accent-2);padding:12px 18px 4px;font-weight:500}
.sf-row{display:block;padding:10px 18px 10px 16px;border-left:2px solid transparent;transition:background .12s}
.sf-row:hover,.sf-row.is-active{background:#f2f8fb;border-left-color:var(--accent-2)}
.sf-kind{display:inline-block;font-size:11px;line-height:1;padding:3px 7px;border-radius:6px;margin-right:8px;vertical-align:1px}
.sf-kind-wiki{background:var(--wash);color:var(--accent)}
.sf-kind-article{background:#eef1f4;color:var(--muted)}
.sf-title{font-size:14.5px;font-weight:500;color:var(--ink);line-height:1.5}
.sf-snippet{display:block;font-size:12.5px;line-height:1.6;color:var(--muted);margin-top:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sf-row mark,.sf-empty mark{background:#cfe4ee;color:inherit;padding:0 .08em;border-radius:2px}
.sf-empty{padding:16px 18px;font-size:13px;line-height:1.7;color:var(--muted)}
.sf-empty b{color:var(--ink);font-weight:500}
@media (max-width:860px){
  .sf-panel{left:0;right:0;width:auto}
}
mark{background:#cfe4ee;color:inherit;padding:0 .08em}
.empty{color:var(--faint);font-size:13px;margin:0}
.is-idle,.tocs.is-idle,.arc-body.is-idle{display:none}

/* ---------- Hero 封面 ---------- */
.hero{
  position:relative;overflow:hidden;background:var(--wash);
  background-image:
    radial-gradient(circle at 82% 16%, rgba(255,255,255,.9), rgba(255,255,255,0) 44%),
    radial-gradient(circle at 93% 78%, rgba(255,178,193,.26), rgba(255,178,193,0) 38%),
    radial-gradient(circle at 6% 90%, rgba(199,229,212,.28), rgba(199,229,212,0) 40%);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,400px);
  gap:72px;align-items:center;padding:92px 120px 64px;
}
.eyebrow{
  margin:0;font-family:Inter,"Noto Sans SC",sans-serif;font-size:12px;
  letter-spacing:.3em;color:#5f93a8;font-weight:500;
}
.hero h1{
  font-family:"Noto Serif SC","Songti SC",serif;font-weight:300;
  font-size:clamp(52px,6vw,88px);line-height:1.22;letter-spacing:.02em;
  margin:26px 0 0;color:var(--ink);
}
.hero .motto{
  display:flex;align-items:center;gap:14px;
  font-family:"Noto Serif SC","Songti SC",serif;font-size:clamp(18px,1.8vw,24px);
  color:var(--accent);margin:24px 0 0;
}
.hero .motto .dash{width:36px;height:2px;background:var(--accent);display:inline-block;flex:0 0 36px}
.hero .lede{
  font-size:17px;line-height:1.8;color:var(--muted);margin:24px 0 0;max-width:34em;
}
.cta-row{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap}
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:52px;padding:0 34px;border-radius:26px;font-size:15px;font-weight:500;
  transition:transform .18s, box-shadow .18s, background .18s;
}
.btn.primary{background:var(--accent);color:#fff;box-shadow:0 8px 20px -6px rgba(42,72,88,.4)}
.btn.primary:hover{background:#1f3a47;color:#fff;transform:translateY(-2px)}
.btn.ghost{background:#fff;color:var(--accent);border:1px solid #b9d2dc}
.btn.ghost:hover{border-color:var(--accent);transform:translateY(-2px)}
.hero-card{
  aspect-ratio:1/1;display:grid;place-items:center;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.92),rgba(255,255,255,0) 70%);
}
.hero-card img{
  width:100%;height:100%;object-fit:contain;display:block;
  filter:drop-shadow(0 14px 32px rgba(72,109,124,.16));
}

/* ---------- 数据条 ---------- */
.statbar{
  background:var(--wash);
  display:flex;align-items:center;justify-content:space-evenly;
  padding:14px 88px 44px;gap:18px;flex-wrap:wrap;
}
.statbar i{width:1px;height:44px;background:#b9d2dc;display:block}
.stat{display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center}
.stat strong{
  font-family:"JetBrains Mono",monospace;font-weight:500;font-size:clamp(24px,2.4vw,34px);
  color:var(--ink);line-height:1;font-variant-numeric:tabular-nums;
}
.stat span{font-size:13px;color:var(--muted)}

/* ---------- 分区带（讲义 / 原文） ---------- */
.band{padding:88px 0 96px}
.band-white{background:#fff}
.band-gray{background:var(--wash-2)}
.band-in{max-width:1320px;margin:0 auto;padding:0 88px}
.sec-head{margin:0 0 48px}
.sec-head h2{
  font-family:"Noto Serif SC","Songti SC",serif;font-weight:500;
  font-size:clamp(34px,3.2vw,44px);color:var(--ink);margin:12px 0 10px;letter-spacing:.02em;
}
.sec-note{margin:0;max-width:46em;color:var(--muted);font-size:15px}
.sec-head.row-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}

/* ---------- 核心5篇（首页必读入口，讲义区之前） ---------- */
.band-wash{background:var(--wash)}
.core-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.core-item a{
  display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:24px;align-items:center;
  padding:24px 30px;background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.9);
  border-radius:18px;transition:transform .18s,background .18s,box-shadow .18s;
}
.core-item a:hover{background:#fff;transform:translateY(-2px);
  box-shadow:0 14px 28px -14px rgba(42,72,88,.18)}
.core-no{font-family:"Noto Serif SC","Songti SC",serif;font-size:26px;font-weight:600;
  color:var(--accent-2);line-height:1;letter-spacing:.02em}
.core-t{font-family:"Noto Serif SC","Songti SC",serif;font-weight:600;font-size:20px;
  line-height:1.4;color:var(--ink);display:block}
.core-item a:hover .core-t{color:var(--accent)}
.core-d{display:block;margin-top:6px;font-size:13.5px;line-height:1.7;color:var(--muted)}
.core-meta{font-size:12.5px;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}
.core-meta b{font-family:"JetBrains Mono",monospace;font-weight:400}

/* ---------- 讲义分类卡 ---------- */
.shelf{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.shelf-row{
  appearance:none;display:flex;flex-direction:column;gap:14px;text-align:left;cursor:pointer;
  font-family:inherit;color:var(--ink);background:#f4fafc;border:1px solid #dce9ee;border-radius:20px;
  padding:30px 28px;transition:transform .18s, box-shadow .18s, border-color .18s;
}
.shelf-row:hover{transform:translateY(-3px);border-color:var(--accent-2);
  box-shadow:0 14px 28px -14px rgba(42,72,88,.20)}
.shelf-row .no{
  font-family:"Noto Serif SC","Songti SC",serif;font-size:28px;font-weight:600;
  color:var(--accent-2);line-height:1;letter-spacing:.02em;
}
.shelf-row .hd{display:flex;justify-content:space-between;align-items:baseline;gap:8px;width:100%}
.shelf-row .nm{font-family:"Noto Serif SC","Songti SC",serif;font-weight:600;font-size:22px;
  line-height:1.3;letter-spacing:.06em}
.shelf-row .ct{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--faint);white-space:nowrap}
.shelf-row .ds{font-size:13px;line-height:1.75;color:var(--muted)}
.shelf-row.active{background:#fff;box-shadow:inset 0 0 0 2px var(--accent)}
.shelf-row.all{background:var(--accent);border-color:var(--accent);color:#fff}
.shelf-row.all:hover{box-shadow:0 14px 30px -10px rgba(42,72,88,.45)}
.shelf-row.all .nm{color:#fff}
.shelf-row.all .no{color:#d4a574}
.shelf-row.all .ct{color:#9fbbc7}
.shelf-row.all .ds{color:#c6d6de}

/* ---------- 讲义目录列表 ---------- */
.tocs{margin-top:56px}
.toc-group.hidden{display:none}
.toc-group h3{
  font-family:"Noto Serif SC","Songti SC",serif;font-size:20px;font-weight:500;
  margin:34px 0 0;display:flex;align-items:baseline;gap:10px;color:var(--ink);
}
.toc-group h3 .idx{font-family:"JetBrains Mono",monospace;font-size:13px;color:var(--accent-2);font-weight:400}
.toc-group h3 em{font-style:normal;font-weight:400;font-size:13px;color:var(--faint);font-family:"JetBrains Mono",monospace}
.toc{list-style:none;margin:0;padding:0}
.toc a{
  display:grid;grid-template-columns:minmax(8em,13.5em) minmax(0,1fr);gap:18px;align-items:baseline;
  padding:14px 0;border-bottom:1px solid #e8eef1;
}
.toc a:hover{color:inherit}
.toc-t{font-family:"Noto Serif SC","Songti SC",serif;font-weight:500;font-size:17px;line-height:1.45;color:var(--ink)}
.toc a:hover .toc-t{color:var(--accent)}
.toc-d{color:var(--muted);font-size:13.5px;line-height:1.6;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- 原文：分类胶囊 / 排序 ---------- */
.indexline{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 30px}
.indexline .fpill{
  appearance:none;display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 18px;
  border-radius:18px;background:#fff;border:1px solid #dbe6ec;
  font-family:inherit;font-size:13px;color:#3d5866;cursor:pointer;transition:all .15s;
}
.indexline .fpill em{
  font-family:"JetBrains Mono",monospace;font-style:normal;font-size:12px;color:var(--faint);margin:0;
}
.indexline .fpill:hover{border-color:var(--accent-2);color:var(--accent)}
.indexline .fpill.active{background:var(--accent);border-color:var(--accent);color:#fff}
.indexline .fpill.active em{color:#9fbbc7}
.sorts{display:flex;gap:8px}
.sorts button{
  appearance:none;height:36px;padding:0 22px;border-radius:18px;background:#fff;
  border:1px solid #dbe6ec;font-size:13px;color:var(--muted);cursor:pointer;font-family:inherit;
  transition:all .15s;
}
.sorts button:hover{border-color:var(--accent-2);color:var(--accent)}
.sorts button.on{background:var(--accent);border-color:var(--accent);color:#fff}

/* ---------- 原文归档页（一次一年 · 单栏） ---------- */
.arc-head{background:var(--wash);padding:68px 0 52px}
.arc-crumb{font-size:13px;color:var(--faint);margin:0 0 14px}
.arc-crumb a{color:var(--accent)}
.arc-crumb span{padding:0 9px;color:#b9d2dc}
.arc-title{
  font-family:"Noto Serif SC","Songti SC",serif;font-weight:300;
  font-size:clamp(38px,4.6vw,64px);line-height:1.2;color:var(--ink);margin:14px 0 0;letter-spacing:.04em;
}
.arc-lede{font-size:15px;line-height:1.8;color:var(--muted);margin:16px 0 0;max-width:44em}
.arc-meta{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 0}
.arc-meta .mc{
  display:inline-flex;align-items:center;height:30px;padding:0 16px;border-radius:15px;
  background:#fff;border:1px solid #d4e5eb;font-size:12.5px;color:var(--muted);
  font-family:"JetBrains Mono",monospace;
}
.arc-meta .mc:first-child{color:var(--accent);border-color:#c6dbe3}
/* 门类横排：名称 + 淡数字 */
.cat-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;
  margin:26px 0 0;padding:16px 0 0;border-top:1px solid rgba(255,255,255,.6)}
.cat-head .ch-t{font-family:"Noto Serif SC","Songti SC",serif;font-size:17px;font-weight:600;
  color:var(--ink);letter-spacing:.14em}
.cat-head .ch-n{font-size:12.5px;color:#5f8ea0}
.cat-line{display:flex;flex-wrap:wrap;gap:12px 26px;margin-top:16px}
.cat-line .ci{display:inline-flex;align-items:baseline;gap:8px;padding:4px 0;color:var(--ink);transition:color .15s}
.cat-line .ci .cn{font-size:14.5px}
.cat-line .ci .cc{font-family:"JetBrains Mono",monospace;font-size:14px;color:#93a7b0;transition:color .15s}
.cat-line .ci:hover{color:var(--accent)}
.cat-line .ci:hover .cc{color:var(--accent-2)}
.cat-line .ci.on .cn{color:var(--accent);font-weight:600}
.cat-line .ci.on .cc{color:var(--accent)}
.topnav a.on{color:var(--accent);font-weight:600}

/* 列表区 */
.arc-list{background:var(--wash-2);padding:40px 0 88px}
/* 当前门类标识：随排序栏吸顶，滚动长列表时始终知道自己在哪个门类 */
.arc-cur{display:inline-flex;align-items:center;gap:9px;height:36px;padding:0 18px;
  border-radius:18px;background:#fff;border:1px solid #d4e5eb;flex:none}
.arc-cur .ic{color:var(--accent-2);flex:none}
.arc-cur .n{font-family:"Noto Serif SC","Songti SC",serif;font-size:15px;font-weight:600;
  color:var(--accent);letter-spacing:.02em;white-space:nowrap}
.arc-cur .c{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--faint);white-space:nowrap}
.arc-tools{display:flex;justify-content:flex-start;align-items:center;gap:24px;flex-wrap:wrap}
.arc-tools .year-bar{margin-left:auto}
/* 桌面端排序栏吸顶（贴在 76px 顶栏之下）：当前门类 + 排序 + 年份 三个上下文常驻。
   背景与分区同色，吸顶时无缝；边框在未吸顶时也无碍（工具与列表的分隔）。 */
@media (min-width:861px){
  .arc-tools{position:sticky;top:76px;z-index:15;padding-top:14px;padding-bottom:14px;
    background:var(--wash-2);border-bottom:1px solid #e7e4db}
}
.year-bar{display:flex;flex-wrap:wrap;gap:8px}
.year-bar a{
  display:inline-flex;align-items:center;height:32px;padding:0 15px;border-radius:16px;
  background:#fff;border:1px solid #e0ddd4;color:var(--muted);
  font-family:"JetBrains Mono",monospace;font-size:13px;transition:.15s;
}
.year-bar a:hover{border-color:var(--accent-2);color:var(--accent)}
.year-bar a.on{background:var(--accent);border-color:var(--accent);color:#fff}
.year-bar.bottom{justify-content:center;margin-top:36px;padding-top:28px;border-top:1px solid #e7e4db}
/* 主体：月份刻度 + 单栏列表（原吸顶状态条已移除：进度/回顶由 reading.js 承担，
   当前位置由月份刻度高亮 + 年份条表达，三处信息重复） */
/* 主体：月份刻度 + 单栏列表 */
.arc-body{display:grid;grid-template-columns:64px minmax(0,1fr);gap:32px;align-items:start}
.month-rail{position:sticky;top:150px;display:flex;flex-direction:column;padding-top:4px}
.month-rail a{
  font-family:"Cormorant Garamond","Noto Serif SC",serif;font-size:21px;color:#a6b6be;
  padding:6px 0;font-variant-numeric:tabular-nums;transition:color .15s;line-height:1.15;
}
.month-rail a em{
  font-style:normal;font-family:"Noto Sans SC","PingFang SC",sans-serif;
  font-size:11px;color:inherit;margin-left:2px;
}
.month-rail a:hover{color:var(--accent)}
.month-rail a.on{color:var(--ink);font-weight:600}
/* 年份段：一次只显示一年 */
.year-sec{display:none}
.year-sec.is-on{display:block}
.ysep{display:flex;align-items:baseline;gap:16px;margin:0;padding:34px 0 14px}
.ysep .y{
  font-family:"Cormorant Garamond","Noto Serif SC",serif;font-size:56px;font-weight:600;
  color:var(--ink);letter-spacing:.02em;line-height:1;
}
.ysep em{font-style:normal;font-family:"JetBrains Mono",monospace;font-size:13px;color:var(--faint)}
.ysep-hr{height:1px;background:#d9e4e9}
/* 月份分割线 */
.msep{display:flex;align-items:center;gap:12px;padding:22px 0 8px}
.msep .mt{font-family:"Noto Serif SC","Songti SC",serif;font-size:15.5px;font-weight:600;
  color:var(--accent);letter-spacing:.12em}
.msep em{font-style:normal;font-family:"JetBrains Mono",monospace;font-size:12px;color:#93a7b0}
.msep i{flex:1;height:1px;background:#dfe9ee;display:block}
/* 文章行 */
.row{
  display:grid;grid-template-columns:52px minmax(0,1fr) 236px;gap:20px;align-items:center;
  padding:11px 8px;margin:0 -8px;border-radius:8px;font-size:15px;transition:background .15s;
}
.row:hover{background:#fff}
.row .d{font-family:"JetBrains Mono",monospace;font-size:12.5px;color:#93a7b0;font-variant-numeric:tabular-nums}
.row .ttl{font-size:15px;font-weight:500;color:#16323f;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row:hover .ttl{color:var(--accent)}
/* 分类列完整展开全部分类（约 236px 容纳最长组合；更长的组合由省略号兜底） */
.row .c{font-size:11.5px;color:#93a7b0;text-align:right;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:700px){.arc-head{padding:30px 0 26px}}

/* ---------- 详情页（文章 / 讲义） ---------- */
.read{max-width:720px;margin:0 auto;padding:0 28px 80px}
.crumb{margin:0;font-size:13px;color:var(--faint);display:flex;gap:10px;flex-wrap:wrap;
  padding-top:56px;justify-content:center}
.crumb a{color:var(--faint)}
.crumb a:hover{color:var(--accent)}
.crumb .cur{color:var(--accent);font-weight:500}
.doc-head{border-bottom:1px solid var(--line-warm);margin-bottom:44px;text-align:center}
.doc-head h1{
  font-family:"Noto Serif SC","Songti SC",serif;font-weight:300;
  font-size:clamp(38px,4.6vw,64px);line-height:1.25;color:var(--ink);margin:16px 0 0;letter-spacing:.03em;
}
.tagrow{display:flex;gap:12px;align-items:center;margin-top:24px;flex-wrap:wrap;justify-content:center}
.tag{
  display:inline-flex;align-items:center;height:26px;padding:0 14px;border-radius:13px;
  background:var(--wash);color:var(--accent);font-size:12px;font-weight:500;letter-spacing:.02em;
}
.tag+.tag{margin-left:0}
.tag+.tag::before{content:none}
a.tag{cursor:pointer;transition:.15s}
a.tag:hover{background:var(--accent);color:#fff}
.datechip{font-family:"JetBrains Mono",monospace;font-size:13px;color:var(--faint)}
.doc-head .lede{font-size:17px;line-height:1.85;color:var(--muted);margin:18px auto 0;
  max-width:36em;text-align:center}
.doc-head .lede:empty{display:none}
.meta{
  display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;justify-content:center;color:var(--faint);
  font-size:13px;margin:20px 0 0;padding:0 0 38px;font-family:"JetBrains Mono",monospace;
}
/* 微信原文链接：弱化处理（细底线 + 小外跳箭头），不抢标题风头 */
.src-link{color:var(--faint);border-bottom:1px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap}
.src-link:hover{color:var(--accent);border-bottom-color:var(--accent-2)}
.src-link .ext-ic{width:11px;height:11px;margin-left:4px;vertical-align:-1px;opacity:.65;transition:opacity .15s}
.src-link:hover .ext-ic{opacity:1}
.status{
  display:inline-flex;align-items:center;height:24px;padding:0 12px;border-radius:12px;
  margin-left:0;font-size:11px;letter-spacing:.06em;color:var(--accent);background:var(--wash);font-family:"Noto Sans SC",sans-serif;
}
.status.st-complete{color:var(--accent)}
/* 草稿降级：内容已可用时不该长得像"不可信"，改为无底色的淡灰提示 */
.status.st-soft{background:none;color:var(--faint);font-weight:400;letter-spacing:.04em;padding-left:0}
.tags{margin:10px 0 0;color:var(--faint);font-size:13px;letter-spacing:.04em}
.tags:empty{display:none}

/* 正文阅读 */
.content{
  font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:16px;line-height:1.95;color:var(--ink-soft);overflow-wrap:break-word;
}
.content p{margin:0 0 1.1em}
.content h2{
  font-family:"Noto Serif SC","Songti SC",serif;font-size:1.4rem;font-weight:600;color:var(--ink);
  margin:2.2em 0 .55em;padding-top:.85em;border-top:1px solid var(--line);
}
.content h2:first-child{border-top:0;padding-top:0;margin-top:.2em}
.content h3{font-family:"Noto Serif SC","Songti SC",serif;font-size:1.14rem;font-weight:600;color:var(--ink);margin:1.6em 0 .4em}
.content a,.ilink{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(42,72,88,.35)}
.content a:hover,.ilink:hover{text-decoration-color:var(--accent)}
.content blockquote{
  margin:1.8em 0;padding:.35em 0 .35em 1.4em;border-left:3px solid var(--accent);
  color:var(--accent);font-family:"Noto Serif SC","Songti SC",serif;font-size:1.32em;line-height:1.7;
}
.content blockquote p{margin:0 0 .4em}
.content ul,.content ol{padding-left:1.25em;margin:0 0 1.1em}
.content li{margin:.28em 0}
.content li::marker{color:var(--accent-2)}
.content img{max-width:100%;height:auto;display:block;margin:1.5em auto;border-radius:16px;border:0}
.content img.inline-img{display:inline;width:auto;max-height:1.65em;margin:0 .12em;border:0;vertical-align:-0.28em;border-radius:0}
/* 公众号名片：mp-common-profile 自定义元素转换而来（render_wx_profiles）。
   微信账号页在开放浏览器不可达，故不做外链，仅亮出昵称+签名引导微信内搜索 */
.wx-acc{
  display:flex;align-items:center;gap:14px;margin:1.6em auto;padding:14px 18px;max-width:440px;
  background:var(--wash);border:1px solid var(--line);border-radius:14px;
}
.wx-acc-av{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:0 0 44px;background:#fff}
.wx-acc-bd{min-width:0;display:flex;flex-direction:column;gap:2px}
.wx-acc-nm{font-size:14.5px;font-weight:600;color:var(--ink);line-height:1.3}
.wx-acc-sg{font-size:12.5px;color:var(--muted);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wx-acc-ct{margin-left:auto;flex:0 0 auto;font-size:12px;color:var(--accent-2);white-space:nowrap}
.content table{width:100%;border-collapse:collapse;margin:1.3em 0 1.6em;font-family:"Noto Sans SC",sans-serif;font-size:14.5px;line-height:1.6}
.content th:first-child,.content td:first-child{width:34%}
.content th,.content td{text-align:left;vertical-align:top;padding:8px 10px;border-bottom:1px solid var(--line-warm)}
.content th{font-weight:600;border-bottom:1px solid var(--accent-2)}
.content code{font-family:Consolas,"Sarasa Mono SC",monospace;font-size:.88em;background:rgba(42,72,88,.06);padding:.05em .28em;border-radius:4px}
.content pre{background:#243540;color:#e8f1f5;padding:14px 16px;overflow:auto;font-size:13px;line-height:1.6;border-radius:12px}
.content pre code{background:none;color:inherit;padding:0}
.content hr{border:0;border-top:1px solid var(--line);margin:2em 0}
/* 原文沿用 content.html 的行内排版，这里只避免站点样式把它撑乱 */
.content.wx{
  font-family:"Noto Serif SC","Songti SC","STSong",serif;
  font-size:16px;line-height:1.6;color:#222;overflow-wrap:break-word;
}
.content.wx,
.content.wx section,
.content.wx span,
.content.wx p{
  font-family:"Noto Serif SC","Songti SC","STSong",serif !important;
}
.content.wx img{
  display:inline;max-width:100% !important;height:auto !important;
  margin:0;border:0;border-radius:0;vertical-align:middle;box-shadow:none;
}
.content.wx a{color:inherit;text-decoration:none}
.content.wx h1,.content.wx h2,.content.wx h3{
  font-family:inherit;font-size:inherit;font-weight:inherit;
  margin:0;padding:0;border:0;
}

/* ---------- 上一篇 / 继续浏览 ---------- */
.pn-nav{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:56px 0 0}
.pn-card{
  display:flex;flex-direction:column;gap:10px;background:#fff;
  border:1px solid var(--line-warm);border-radius:16px;padding:24px;transition:border-color .15s;
}
a.pn-card:hover{border-color:var(--accent-2)}
.pn-card.is-blank{visibility:hidden}
.pn-card .pn-k{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--faint)}
.pn-card .pn-t{
  font-size:15px;font-weight:500;color:var(--accent);display:flex;
  justify-content:space-between;gap:12px;align-items:center;line-height:1.5;
}
/* ---------- 阅读增强：进度条 / 回顶 / 图片放大 ---------- */
.read-prog{
  position:absolute;left:0;bottom:-1px;height:2px;width:100%;
  background:var(--accent-2);transform:scaleX(0);transform-origin:0 50%;
  transition:transform .1s linear;
}
.back-top{
  position:fixed;right:26px;bottom:26px;width:42px;height:42px;border-radius:50%;
  background:#fff;border:1px solid var(--line);color:var(--accent);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 20px -8px rgba(42,72,88,.25);
  opacity:0;pointer-events:none;transform:translateY(8px);
  transition:opacity .2s,transform .2s,border-color .15s;z-index:50;
}
.back-top.show{opacity:1;pointer-events:auto;transform:none}
.back-top:hover{border-color:var(--accent-2);color:var(--accent)}
.imgbox{
  position:fixed;inset:0;z-index:100;background:rgba(22,50,63,.94);
  display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out;
}
.imgbox[hidden]{display:none}
.imgbox img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.content img:not(.inline-img){cursor:zoom-in}
.pn-hint{
  margin:18px 0 0;text-align:center;font-size:12px;color:var(--faint);
  font-family:"JetBrains Mono",monospace;letter-spacing:.08em;
}
/* 正文字号：A-/A+ 调节（14~20px，选择记 localStorage，见 reading.js） */
.doc .content{font-size:var(--read-fs,16px)}
.fs-box{
  position:fixed;right:26px;bottom:80px;z-index:50;
  display:flex;flex-direction:column;gap:6px;
}
.fs-box[hidden]{display:none}
.fs-btn{
  width:34px;height:34px;border-radius:50%;cursor:pointer;
  background:#fff;border:1px solid var(--line);color:var(--muted);
  font-size:12px;font-family:"JetBrains Mono",monospace;line-height:1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px -6px rgba(42,72,88,.2);
  transition:border-color .15s,color .15s;
}
.fs-btn:hover{border-color:var(--accent-2);color:var(--accent)}
.pn-card .pn-a{flex:0 0 auto;display:inline-flex}

/* ---------- 讲义总览页 ---------- */
.le-head-band{background:var(--wash);padding:68px 0 56px}
.le-list-band{background:#fff;padding:76px 0 104px}
.le-nav{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.le-nav a{
  display:inline-flex;align-items:center;gap:9px;height:38px;padding:0 18px;border-radius:19px;
  background:#fff;border:1px solid #d4e5eb;font-size:13px;color:#2a4858;transition:.15s;
}
.le-nav a .no{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--accent-2)}
.le-nav a:hover{border-color:var(--accent-2);transform:translateY(-1px)}
.le-group{margin-top:76px;scroll-margin-top:110px}
.le-group:first-of-type{margin-top:8px}
.le-head{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap;
  padding:0 0 18px;border-bottom:1px solid var(--line)}
.le-head .no{
  font-family:"Noto Serif SC","Songti SC",serif;font-size:46px;font-weight:600;
  color:var(--gold);line-height:1;letter-spacing:.02em;
}
.le-hd{display:flex;align-items:baseline;gap:14px}
.le-head .nm{font-family:"Noto Serif SC","Songti SC",serif;font-weight:600;font-size:27px;
  color:var(--ink);letter-spacing:.08em}
.le-head .ct{font-family:"JetBrains Mono",monospace;font-size:14px;color:var(--faint)}
.le-head .ds{flex:0 0 100%;margin:8px 0 0;color:var(--muted);font-size:13.5px;max-width:38em}
.le-list{margin-top:6px}
.le-item{
  display:grid;grid-template-columns:minmax(9em,15em) minmax(0,1fr);gap:40px;
  align-items:baseline;padding:20px 8px;margin:0 -8px;
  border-bottom:1px solid #ecf1f4;border-radius:8px;transition:background .15s;
}
.le-item:hover{background:linear-gradient(90deg,rgba(232,245,249,.6),rgba(232,245,249,0))}
.le-item .le-t{font-family:"Noto Serif SC","Songti SC",serif;font-weight:600;font-size:17px;
  line-height:1.5;color:var(--ink);letter-spacing:.02em}
.le-item:hover .le-t{color:var(--accent)}
.le-item .le-d{color:var(--muted);font-size:13.5px;line-height:1.7;min-width:0}
@media (max-width:640px){
  .le-item{grid-template-columns:1fr;gap:6px}
}
/* 区块标题右侧链接 */
.sec-link{font-size:14px;font-weight:500;color:var(--accent);
  border-bottom:1px solid rgba(42,72,88,.3);padding-bottom:2px;white-space:nowrap}
.sec-link:hover{border-color:var(--accent)}
/* ---------- 讲义页：侧边目录（左）+ 正文两栏 ----------
   设计取向：讲义页本身是编辑风（衬线大标题、细线、大留白），目录不再用
   "白卡片浮在纸面上"的widget 做法，而是去卡片化——只剩文字与一条细线，
   像书页边的批注。侧栏在左（DOM 里 aside 在前），移动端自然落到正文上方。 */
.doc-wiki .read{max-width:1060px}
/* 注意：不能用 align-items:start——侧栏容器必须撑满整行（=正文高度），
   sticky 目录才有可吸附的空间，否则会随内容一起滚走 */
.doc-wrap{display:grid;grid-template-columns:240px minmax(0,1fr);gap:56px}
.doc-wrap>article,.doc-wiki .read>article{width:100%;max-width:760px;margin:0 auto}
.doc-side{min-width:0}
.toc-sticky{
  position:sticky;top:96px;max-height:calc(100vh - 124px);
  overflow-y:auto;overscroll-behavior:contain;padding:2px 0;
}
.doc-toc{margin:0;padding:0;background:none;border:0;border-radius:0}
.doc-toc .toc-cap{
  margin:0 0 12px;font-size:11px;letter-spacing:.22em;color:var(--accent-2);
  font-family:Inter,"Noto Sans SC",sans-serif;font-weight:500;
}
.doc-toc .toc-cap span{
  margin-left:8px;font-size:11px;color:var(--faint);
  font-family:"JetBrains Mono",monospace;letter-spacing:0;font-weight:400;
}
.doc-toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--line)}
.doc-toc li{margin:0}
.doc-toc a{
  display:block;padding:6px 0 6px 14px;margin-left:-1px;
  border-left:2px solid transparent;font-size:13px;line-height:1.55;color:var(--muted);
  transition:color .15s,border-color .15s;
}
.doc-toc a:hover{color:var(--accent);border-left-color:var(--accent-2)}
.doc-toc a.is-cur{color:var(--accent);border-left-color:var(--accent)}
.doc-toc .lv2 a{font-weight:500;color:var(--ink-soft);font-size:13.5px}
.doc-toc .lv3 a{padding-left:26px;font-size:12.5px}
.doc-toc .toc-more{
  padding:8px 0 0 14px;font-size:11px;color:var(--faint);
  font-family:"JetBrains Mono",monospace;
}
@media (max-width:1020px){
  .doc-wrap{display:flex;flex-direction:column;gap:0}
  .doc-side{margin-bottom:34px}
  .toc-sticky{position:static;max-height:none;overflow:visible;padding:0}
  .doc-wrap>article{max-width:none}
}

/* ---------- 讲义页结尾：延伸阅读（相关条目 / 被引用 / 来源文章） ----------
   原来三张悬浮白卡与整体细线条语言不搭，改为一条细分隔线引出的三栏列表：
   衬线小标题 + 字距拉开的栏题 + 细线分隔的链接行，与首页/总览页一致。 */
.seealso{margin:64px 0 0;padding:34px 0 0;border-top:1px solid var(--line-warm)}
.seealso .sa-title{
  font-family:"Noto Serif SC","Songti SC",serif;font-size:21px;font-weight:500;
  color:var(--ink);margin:0 0 22px;letter-spacing:.05em;text-align:center;
}
.sa-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.sa-col{padding:2px 26px 0;border-left:1px solid var(--line);min-width:0}
.sa-col:first-child{border-left:0;padding-left:0}
.sa-col:last-child{padding-right:0}
.sa-cap{
  margin:0 0 4px;font-size:11px;letter-spacing:.18em;color:var(--accent-2);font-weight:500;
  display:flex;align-items:baseline;gap:8px;
}
.sa-cap span{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--faint);letter-spacing:0}
.sa-col .seelink{
  display:block;padding:8px 0;border-bottom:1px solid #eef3f5;
  font-size:13.5px;line-height:1.6;color:var(--ink-soft);
}
.sa-col .seelink:last-child{border-bottom:0}
.sa-col .seelink:hover{color:var(--accent)}
.sa-col .empty{margin:6px 0 0;color:var(--faint);font-size:13px}
@media (max-width:860px){
  .sa-grid{grid-template-columns:1fr}
  .sa-col{border-left:0;padding:0;border-top:1px solid var(--line);padding-top:16px;margin-top:16px}
  .sa-col:first-child{border-top:0;padding-top:0;margin-top:0}
  .seealso .sa-title{text-align:left}
}

/* ---------- 原文页：被讲义引用（与讲义页延伸阅读同一语言） ---------- */
.citedby{
  margin:56px 0 0;padding:32px 0 0;border-top:1px solid var(--line-warm);
}
.citedby h3{
  font-family:"Noto Serif SC","Songti SC",serif;font-size:21px;font-weight:500;
  margin:0 0 12px;color:var(--ink);letter-spacing:.05em;
  display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
}
.citedby h3 span{color:var(--faint);font-weight:400;font-size:12px;font-family:"JetBrains Mono",monospace;letter-spacing:0}
.citedby .seelink{
  display:flex;align-items:baseline;gap:10px;padding:10px 0;
  border-bottom:1px solid #eef3f5;font-size:14px;line-height:1.6;
}
.citedby .seelink:last-of-type{border-bottom:0}
.citedby .sr-cat{
  flex:0 0 auto;font-size:11px;letter-spacing:.04em;color:var(--accent-2);
  border:1px solid var(--line);border-radius:9px;padding:1px 8px;background:var(--wash);
}
.citedby .empty{margin:6px 0 0;color:var(--faint);font-size:13px}

/* ---------- 深蓝页脚 ---------- */
.colophon{
  margin-top:0;background:var(--accent);color:#c9d8e0;
  padding:56px 32px 48px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;
}
.f-brand{display:flex;align-items:center;gap:12px}
.f-brand img{width:38px;height:38px;object-fit:contain;background:#fff;border-radius:9px;padding:2px;display:block}
.f-brand span{font-family:"Noto Serif SC","Songti SC",serif;font-size:22px;font-weight:500;color:#fff;letter-spacing:.08em}
.f-brand-sub{
  font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:12px;font-weight:400;color:#9fbbc7;letter-spacing:.14em;
  align-self:flex-end;padding-bottom:3px;margin-left:-6px;white-space:nowrap;
}
.f-motto{margin:0;font-family:"Noto Serif SC","Songti SC",serif;font-size:14px;color:#9fbbc7;letter-spacing:.06em}
.f-rule{width:480px;max-width:80%;height:1px;background:rgba(255,255,255,.16)}
.f-row{display:flex;gap:40px;font-size:13px;color:#8ca9b8;flex-wrap:wrap;justify-content:center}
.f-row a{color:#8ca9b8}
.f-row a:hover{color:#fff}

/* ---------- 图谱页 ---------- */
.frame{max-width:1320px;margin:0 auto;padding:0 88px 80px}
.gtools{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin:8px 0 14px}
.gtools input:not([type=checkbox]){min-width:220px;width:min(260px,100%)}
.gtools input[type=checkbox]{width:auto;min-width:0}
.gtoggle{display:flex;gap:7px;align-items:center;font-size:13px;color:var(--muted);cursor:pointer}
.gtoggle input{accent-color:var(--accent)}
#cv{width:100%;height:72vh;min-height:480px;display:block;cursor:grab;touch-action:none;
  background:radial-gradient(circle at 50% 42%, rgba(122,174,192,.08), transparent 46%), #fff;
  border:1px solid var(--line);border-radius:20px}
#cv:active{cursor:grabbing}
.legend{display:flex;gap:14px 18px;flex-wrap:wrap;margin-top:14px;font-size:12.5px;color:var(--muted)}
.legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}
.ghint{color:var(--faint);font-size:12.5px;margin:8px 0 0}
.copyline{color:var(--faint);font-size:12.5px;margin-top:28px}
#info{position:fixed;right:22px;bottom:22px;max-width:280px;z-index:30;display:none;
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;
  box-shadow:0 12px 32px -8px rgba(42,72,88,.16);font-size:13px;color:var(--muted);line-height:1.55}
#info b{display:block;color:var(--ink);font-family:"Noto Serif SC","Songti SC",serif;font-size:16px;font-weight:500;margin-bottom:4px}
#info .info-k{display:block;margin-top:6px;letter-spacing:.12em;font-size:11px;color:var(--accent-2)}

/* ---------- 响应式 ---------- */
#wiki,#articles,#core,.toc-group,.year-sec,.msep{scroll-margin-top:150px}
@media (max-width:1080px){
  .hero{grid-template-columns:1fr;padding:56px 40px;gap:40px}
  .hero-card{max-width:280px}
  .statbar{padding:12px 40px 40px}
  .band-in,.frame{padding-left:40px;padding-right:40px}
  .shelf{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:860px){
  .bar{display:flex;height:auto;flex-wrap:wrap;padding-top:12px;padding-bottom:12px;gap:14px}
  .home-search,.doc-search{justify-self:auto}
  .home-search,.doc-search{width:100%;margin-left:0;order:5}
  .topnav{gap:22px}
  .sec-head.row-head{flex-direction:column;align-items:flex-start;gap:14px}
  .arc-body{grid-template-columns:1fr;gap:8px}
  .month-rail{position:static;flex-direction:row;flex-wrap:wrap;gap:16px;padding:0 0 10px}
  .month-rail a{padding:2px 0}
  .toc a{grid-template-columns:1fr;gap:4px}
  .toc-d{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .core-item a{grid-template-columns:52px minmax(0,1fr);gap:14px;padding:20px 22px}
  .core-item a:hover{transform:none}
  .core-no{font-size:22px}
  .core-meta{grid-column:2;margin-top:2px}
  .seealso{grid-template-columns:1fr}
  .pn-nav{grid-template-columns:1fr}
  .pn-card.is-blank{display:none}
}
@media (max-width:640px){
  .hero{padding:44px 22px}
  .statbar{padding:10px 22px 32px;gap:12px}
  .statbar i{display:none}
  .stat{min-width:38%}
  .band{padding:64px 0 72px}
  .band-in,.frame{padding-left:22px;padding-right:22px}
  .shelf{grid-template-columns:1fr}
  .row{grid-template-columns:48px minmax(0,1fr);gap:12px}
  .row .c{display:none}
  .cat-line{gap:10px 18px}
  .ysep .y{font-size:38px}
  .read{padding:0 20px 56px}
  .crumb{padding-top:32px}
  .f-row{gap:18px}
}
/* 窄屏顶栏放不下副标题时隐藏（页脚为纵列布局，不受影响） */
@media (max-width:760px){
  .brand-sub{display:none}
}
@media (max-width:640px){
  .back-top{right:16px;bottom:16px;width:38px;height:38px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .shelf-row,.btn{transition:none}
}
/* 锚点跳转时给标题留出吸顶导航的高度，避免标题被顶栏盖住 */
.content h2[id],.content h3[id]{scroll-margin-top:96px}
@media (max-width:640px){
  .citedby .seelink{flex-direction:column;gap:4px}
}
/* 无障碍：仅供读屏器朗读 */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

