
:root{--paper:#f9f9fa;--paper2:#f2f2f5;--ink:#04163f;--ink2:#87878e;--faint:#b5b5ba;--rule:#e5e3eb;--gold:#b08a46;--gold2:#b08a46;--teal:#04163f;
--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman","Songti SC",STSong,"Source Han Serif SC","Noto Serif CJK SC","Noto Serif SC",SimSun,serif;--sans:Inter,"SF Pro Text","PingFang SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.65}
a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}
.wrap{max-width:1100px;margin:0 auto;padding:0 20px}
.hd{border-bottom:1px solid var(--rule);background:#fff}
.hd .wrap{display:flex;align-items:center;justify-content:space-between;height:54px}
.brand{font-family:var(--serif);font-weight:700;font-size:18px;color:var(--ink);letter-spacing:.02em}
.brand small{font-family:var(--sans);font-weight:500;color:var(--ink2);font-size:12px;margin-left:10px;letter-spacing:.12em}
.nav a{font-size:13px;color:var(--ink2);margin-left:18px}.nav a.on{color:var(--gold);font-weight:600}
.crumb{font-size:12px;color:var(--ink2);margin:18px 0 8px}.crumb a{color:var(--ink2)}.crumb span{margin:0 6px;color:var(--faint)}
article{max-width:720px}
.kick{font-size:12px;letter-spacing:.16em;color:var(--gold);font-weight:600}
h1{font-family:var(--serif);font-size:clamp(26px,4vw,36px);line-height:1.25;margin:8px 0 10px;letter-spacing:-.01em}
.deck{font-family:var(--serif);font-size:17px;line-height:1.6;color:var(--ink2);margin:0 0 14px}
.meta{font-size:12.5px;color:var(--ink2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:8px 0;display:flex;flex-wrap:wrap;gap:6px 18px;margin-bottom:22px}
.body{font-size:17px;line-height:1.95;font-family:var(--serif)}
.body p{margin:0 0 1em}.body h3{font-family:var(--sans);font-size:17px;margin:1.6em 0 .5em;letter-spacing:.02em}
.body blockquote{margin:1em 0;padding:2px 0 2px 16px;border-left:2px solid var(--gold2);color:var(--ink2)}
.body ul{padding-left:1.2em}.body .bk-em{background:rgba(210,151,33,.16);padding:0 2px}
.tags{margin:26px 0 10px;font-size:12.5px;color:var(--ink2)}.tags a{display:inline-block;border:1px solid var(--rule);border-radius:3px;padding:2px 8px;margin:0 6px 6px 0;color:var(--ink2)}
.box{border:1px solid var(--rule);background:#fff;padding:14px 16px;margin:26px 0;font-size:14px}
.box b{display:block;font-size:12px;letter-spacing:.14em;color:var(--gold);margin-bottom:6px}
.box ul{margin:0;padding-left:1.1em}.box li{margin:2px 0}
.pn{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--rule);padding-top:14px;margin-top:30px;font-size:14px}
.pn a{max-width:48%}.pn small{display:block;color:var(--faint);font-size:11.5px;letter-spacing:.1em}
.vol-list{font-size:13.5px;color:var(--ink2);columns:2;column-gap:28px;margin:8px 0 0}.vol-list li{break-inside:avoid;margin:2px 0}
.vol-list .cur{color:var(--ink);font-weight:600}
.ft{border-top:1px solid var(--rule);margin-top:40px;padding:18px 0 30px;font-size:12px;color:var(--ink2)}
.comment{border-top:1px dashed var(--rule);padding-top:10px;margin-top:22px;font-size:14px;color:var(--ink2)}
.comment b{color:var(--ink)}
/* 索引页 */
.lead{max-width:720px;margin:24px 0 10px}.lead h1{font-size:clamp(30px,5vw,44px)}
.lead p{font-size:15px;color:var(--ink2);margin:6px 0}
.facts{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px;color:var(--ink2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:8px 0;margin:14px 0 20px}
.facts b{color:var(--ink);font-weight:600}
.volnav{font-size:13px;margin:0 0 18px;line-height:2}.volnav a{margin-right:14px;white-space:nowrap}
h2.vol{font-family:var(--serif);font-size:20px;margin:26px 0 6px;padding-top:6px;border-top:2px solid var(--ink)}
h2.vol small{font-family:var(--sans);font-size:12px;color:var(--ink2);font-weight:400;margin-left:10px}
table.idx{width:100%;border-collapse:collapse;font-size:14px}
table.idx th{text-align:left;font-size:11.5px;letter-spacing:.1em;color:var(--ink2);font-weight:600;padding:6px 8px 6px 0;border-bottom:1px solid var(--rule)}
table.idx td{padding:7px 8px 7px 0;border-bottom:1px solid var(--rule);vertical-align:top}
table.idx td.no{color:var(--faint);width:44px;font-variant-numeric:tabular-nums}
table.idx td.t a{color:var(--ink);font-weight:600}table.idx td.t small{display:block;color:var(--ink2);font-weight:400;font-size:12.5px;margin-top:2px}
table.idx td.d{color:var(--ink2);width:78px;white-space:nowrap}table.idx td.n{color:var(--ink2);width:90px;white-space:nowrap;font-variant-numeric:tabular-nums}
table.idx td.g{color:var(--ink2);font-size:12.5px}
@media(max-width:700px){.vol-list{columns:1}table.idx td.d,table.idx td.n,table.idx th.d,table.idx th.n{display:none}table.idx td.g{display:none}.hd .wrap{height:auto;padding:10px 20px;flex-wrap:wrap;gap:6px}.nav a{margin-left:0;margin-right:14px}}
/* 横版字标 */
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand picture,.brand img{display:block}
.brand img{height:30px;width:auto}
.brand small{font-family:var(--sans);font-weight:500;color:var(--ink2);font-size:12px;letter-spacing:.12em;margin:0}
/* 左侧常驻索引（≥1100px 才出现，手机端零影响） */
.toc{display:none}
@media(min-width:1100px){
  .toc{display:block}
  main.page{max-width:1500px;display:grid;grid-template-columns:264px minmax(0,1fr);column-gap:46px;row-gap:0;align-items:start}
  main.page>*{grid-column:2;min-width:0}
  main.page>.toc{grid-column:1;grid-row:1/span 200;position:sticky;top:16px;margin:0;
    max-height:calc(100vh - 36px);overflow:auto;overscroll-behavior:contain;padding:16px 18px 26px 0;
    border-right:1px solid var(--rule);scrollbar-width:thin;scrollbar-color:var(--gold) transparent;scrollbar-gutter:stable;
    -webkit-mask-image:linear-gradient(#000 calc(100% - 26px),transparent);mask-image:linear-gradient(#000 calc(100% - 26px),transparent)}
  .volbox{display:none}
}
.toc h3{font-size:11.5px;letter-spacing:.16em;color:var(--gold);margin:0 0 10px;font-weight:700}
.toc h3 + p{font-size:12.5px;color:var(--faint);margin:-6px 0 10px}
.toc ol,.toc ul{list-style:none;margin:0 0 14px;padding:0;font-size:13.2px;line-height:1.55}
.toc li{margin:0 0 8px}
.toc a{color:var(--ink2);display:block}
.toc a:hover{color:var(--ink);text-decoration:none}
.toc li.cur>a{color:var(--ink);font-weight:600;border-left:2px solid var(--gold);padding-left:9px;margin-left:-11px}
.toc .tocfoot{border-top:1px solid var(--rule);padding-top:11px;font-size:12.5px;color:var(--faint)}
.toc .tocfoot a{display:inline;color:var(--ink2)}

/* 0830: view-only. Plain text untouched; machines still read everything. */
body{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,select,[data-copy],a[href^="mailto:"],a[href^="tel:"]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-touch-callout:default}
.gx-wc{position:fixed;top:8px;right:10px;z-index:70;pointer-events:none;font:500 11.5px/1.5 -apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#6e6e75;background:rgba(255,255,255,.86);-webkit-backdrop-filter:saturate(140%) blur(6px);backdrop-filter:saturate(140%) blur(6px);border:1px solid rgba(4,22,63,.10);border-radius:3px;padding:3px 8px;letter-spacing:.02em;font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:700px){.gx-wc{top:6px;right:6px;font-size:10.5px;padding:2px 6px}}@media print{.gx-wc{display:none}}/* 0831 随笔线：页眉复合徽 + 品牌页尾（与研究院同款处理） */.brand .hd-mark{display:inline-block;width:44px;flex:0 0 auto;line-height:0}.brand .hd-mark svg{width:100%;height:auto;display:block}.ft .arc-brandfoot{padding:10px 0 0;margin:0 0 18px;text-align:center}.arc-brandfoot .arc-foot-mark{display:block;width:170px;line-height:0;margin:0 auto 14px}.arc-brandfoot .arc-foot-mark svg{width:100%;height:auto;display:block}.arc-foot-slogan-en{font-weight:700;color:var(--ink);font-size:15px;letter-spacing:.35em;margin:0 0 6px;text-transform:uppercase}.arc-foot-slogan-zh{color:var(--gold);font-size:14px;letter-spacing:.5em;margin:0 0 10px}.arc-foot-copyright{color:var(--ink2);font-size:12.5px;letter-spacing:.02em;margin:0}@media(max-width:760px){.arc-foot-slogan-en{font-size:12.5px;letter-spacing:.22em}.arc-foot-slogan-zh{font-size:13px;letter-spacing:.34em}}@media print{.arc-brandfoot{display:none}}@media(max-width:700px){.hd .gx-secwrap{display:none}.brand .hd-mark{width:36px}}body:not(:has(#arc-top)) .gx-wc{top:52px!important}.gx-family{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:7px max(22px,4vw);background:#04163f;color:#c4a46b;font:600 12px/1.4 Poppins,-apple-system,"PingFang SC",sans-serif;letter-spacing:.06em;border-bottom:1px solid rgba(196,164,107,.28)}.gx-family a{color:#c4a46b;text-decoration:none;display:inline-flex;align-items:baseline;gap:6px}.gx-family a:hover{color:#f0dcb0}.gx-family a[aria-current]{color:#fff}.gx-family a small{font-weight:500;font-size:10.5px;opacity:.75;letter-spacing:.04em}.gx-family .f-root{font-size:13px;color:#fff}.gx-family .f-kids{display:inline-flex;gap:16px;padding-left:16px;border-left:1px solid rgba(196,164,107,.5)}.gx-family .f-lang{margin-left:auto;padding:3px 10px;border:1px solid rgba(196,164,107,.5);border-radius:3px;font-size:11.5px;letter-spacing:.12em;color:#fff}.gx-family .f-lang:hover{border-color:#f0dcb0;color:#f0dcb0}.gx-family.gx-family-foot{border-top:1px solid rgba(196,164,107,.28);border-bottom:0;padding:16px max(22px,4vw)}@media(max-width:639px){.gx-family{gap:10px}.gx-family .f-kids{gap:12px;padding-left:12px}.gx-family a small{display:none}}@media print{.gx-family{display:none}}.w652{margin:26px 0 6px;padding:16px 18px;border:1px solid rgba(196,164,107,.45);border-left:3px solid #c4a46b;border-radius:3px;background:rgba(196,164,107,.05)}.w652-k{font-size:11px;letter-spacing:.18em;color:#9a7b3c;margin:0 0 7px}.w652-q{margin:0 0 12px;padding:0;border:0;font-family:"Songti SC",STSong,Georgia,serif;font-size:15px;line-height:1.7}.w652-q cite{display:block;margin-top:5px;font-style:normal;font-size:12.5px;color:#6b7280}.w652-p{margin:0 0 12px;font-size:14px;line-height:1.75;color:#4b5563}.w652-r{display:flex;gap:14px 20px;flex-wrap:wrap;align-items:center;font-size:13.5px}.w652-btn{display:inline-flex;align-items:center;min-height:42px;padding:0 16px;border-radius:3px;background:#04163f;color:#fff!important;font-weight:700;text-decoration:none}.w652-btn:hover{background:#1b3761}@media(max-width:639px){.w652-btn{width:100%;justify-content:center}}/* 护城河：正文恢复可选中（取代 0830 的 body 全禁选中——防的是批量拷贝不是读者）；图片限定禁拖拽/长按；打印水印 */
body{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-touch-callout:default}
img{-webkit-user-drag:none;-webkit-touch-callout:none}
#gx-moat-wm{display:none}
@media print{#gx-moat-wm{display:block;position:fixed;inset:0;z-index:2147483647;pointer-events:none;overflow:hidden;opacity:.1}#gx-moat-wm span{display:inline-block;margin:34px 46px;font:700 17px/1 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:#152e68;transform:rotate(-28deg);white-space:nowrap}}
/* W93 标语气质与「盛世祥升」侧标（.gc-name/.gc-hanzi）拉齐：只改字体家族/字重/字距/颜色，字号分档不变 */
.gx-brand-claim,.site-header .gx-brand-claim{font-family:Inter,"PingFang SC",sans-serif!important;font-weight:600!important;letter-spacing:.02em!important;color:#c4a46b!important}
.gx-brand-claim em,.site-header .gx-brand-claim em{font-style:normal!important;font-family:Inter,"PingFang SC",sans-serif!important;font-weight:600!important;letter-spacing:.02em!important;color:#c4a46b!important}
.gx-tagline-en,.gx-hero-tagline .gx-tagline-en{font-family:Inter,"PingFang SC",sans-serif!important;font-weight:600!important;letter-spacing:.02em!important;color:#edb222!important}
.gx-tagline-zh,.gx-hero-tagline .gx-tagline-zh{font-family:"PingFang SC",serif!important;font-weight:500!important;letter-spacing:.34em!important;color:#edb222!important}
.arc-foot-slogan-en,.arc-brandfoot .arc-foot-slogan-en,.ft .arc-foot-slogan-en{font-family:Inter,"PingFang SC",sans-serif!important;font-weight:600!important;letter-spacing:.02em!important;color:#edb222!important}
.arc-foot-slogan-zh,.arc-brandfoot .arc-foot-slogan-zh,.ft .arc-foot-slogan-zh{font-family:"PingFang SC",serif!important;font-weight:500!important;letter-spacing:.34em!important;color:#edb222!important}
.manifesto-slogan{font-family:Inter,"PingFang SC",sans-serif!important;font-weight:600!important;letter-spacing:.02em!important;color:#c4a46b!important}
/* W92 · 随笔正文页精修（只改样式与结构，正文一字未动）
   [1] 桌面右副栏：正文行宽仍是 720px，把右侧死区改成一条常驻副栏
   [2] 装饰动画的无障碍降级：prefers-reduced-motion 下全部静止 */

/* 副栏容器在窄屏是透明的：children 直接参与 article 正常流，与改版前逐像素一致 */
.w92-rail{display:contents}

/* 1100–1399：正文在正文列内居中，把单边偏左改成对称 */
@media (min-width:1100px) and (max-width:1399.98px){
  main.wrap.page>article{margin-inline:auto}
}

/* >=1400：正文列拆成「720px 正文 + 右副栏」，右侧死区被真内容占满 */
@media (min-width:1400px){
  main.wrap.page>article{
    max-width:none;
    display:grid;
    grid-template-columns:720px minmax(0,340px);
    column-gap:56px;
    justify-content:space-between;
    align-items:start;
  }
  main.wrap.page>article>*{grid-column:1;min-width:0}
  main.wrap.page>article>.w92-rail{
    display:block;
    grid-column:2;
    grid-row:1 / span 5;
    align-self:start;
    position:sticky;
    top:64px;
    min-width:0;
    border-top:1px solid var(--rule);
    padding-top:14px;
  }
  main.wrap.page>article>.w92-rail>.tags{margin:0}
  main.wrap.page>article>.w92-rail>.box{margin:16px 0 0}
  main.wrap.page>article>.w92-rail .vol-list{columns:1}
}

/* 减少动态偏好：CSS 动画一并停掉（SMIL 由下方脚本 pauseAnimations 处理） */
@media (prefers-reduced-motion:reduce){
  svg,svg *{animation:none!important;transition:none!important}
}
@media print{
  main.wrap.page>article{display:block;max-width:720px}
  .w92-rail{display:contents}
}

/* ── W92 精修 · 随笔正文页 ──────────────────────────────────
   只改样式与可点区域，正文一字未动。
   [2] 换页入口触达面积  [5] 低对比度文字  [6] 键盘焦点
   ───────────────────────────────────────────────────────── */

/* [5] 对比度（纸底 #f9f9fa 上量）：--faint 2.07:1 → 4.74:1；--ink2 3.36:1 → 5.15:1 */
:root{--faint:#6e6e75;--ink2:#6e6e75;--muted:#6e6e75;--focus-ring:#152e68}

/* [6] 键盘焦点：本页原有 focus / focus-visible 规则 0 条 */
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:2px}

/* [2] 主导航是正文页唯一的换页入口，原本只有 18.5px 高。
   任何视口都抬到 44px：≥700px 时页眉本就是固定 54px 高，改后版式零位移。 */
.nav a{display:inline-flex;align-items:center;min-height:44px}

@media(max-width:760px){
  .nav{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px}
  .nav a{padding:0 4px;margin:0;font-size:14px}
}

/* 其余换页入口：窄屏生效，触屏设备（iPad / 触控本）不论宽度一律生效 */
@media(max-width:760px),(pointer:coarse){
  /* 面包屑 16.5px → 40px */
  .crumb{display:flex;flex-wrap:wrap;align-items:center}
  .crumb a{display:inline-flex;align-items:center;min-height:40px;padding:0 2px}
  /* 上一篇 / 下一篇：小字 11.5px → 13px，链接块高 ≥44px */
  .pn a{display:inline-flex;flex-direction:column;justify-content:center;min-height:44px}
  .pn a small{font-size:13px}
  /* 标签是正文页的横向导航，22px → 40px */
  .tags a{min-height:40px;display:inline-flex;align-items:center;padding:2px 10px;margin:0 6px 8px 0}
}

/* ── W92 精修 · 随笔正文页（第三块）───────────────────────────────
   [1] 断点收敛成四层并对齐真实设备；[3] 左栏索引门槛 1100 → 1024；
   [5] 行高补全；[6] 金色收敛成三档。
   只增样式，不改任何文字，不动文件中段既有规则，也不覆盖前两块 W92 的落点。
   zh/en 差异一律走 html[lang] 前缀，两站同一份。
   ──────────────────────────────────────────────────────────── */

/* ── [6] 金色三档：浅底文字 / 描边 / 深底文字 ───────────────────── */
:root{
  --gold-ink:#7d6232;   /* 浅底上的文字 on #f9f9fa = 4.97:1，AA 通过（原 #b08a46 仅 3.13:1） */
  --gold-line:#c4a46b;  /* 仅描边、分隔线等非文字用途（2.27:1，不承载文字） */
  --gold-dark:#edb222;  /* 仅深底上的文字 on #04163f = 8.66:1 */
  --gold:#7d6232;
  --gold2:#7d6232;
}
.body blockquote{border-left-color:var(--gold-line)}
.toc li.cur>a{border-left-color:var(--gold-line)}
.body .bk-em{background:rgba(125,98,50,.13)}
/* 纸底页尾标语原被 W93 强制成 #edb222（1.85:1），改回浅底档 */
.arc-foot-slogan-en,.arc-brandfoot .arc-foot-slogan-en,.ft .arc-foot-slogan-en,
.arc-foot-slogan-zh,.arc-brandfoot .arc-foot-slogan-zh,.ft .arc-foot-slogan-zh{color:var(--gold-ink)!important}
.gx-brand-claim,.site-header .gx-brand-claim,
.gx-brand-claim em,.site-header .gx-brand-claim em{color:var(--gold-ink)!important}

/* ── [5] 行高补全：原先继承 body 1.65/1.95 而偏挤或偏松的元素 ───── */
.body h3{line-height:1.45}
.body blockquote{line-height:1.9}
.crumb,.meta{line-height:1.75}
.box b{line-height:1.6}
.tags a{line-height:1.75}
.pn a{line-height:1.5}
.pn small{line-height:1.9}
html[lang^="en"] body{line-height:1.6}
html[lang^="en"] .body{line-height:1.78}
html[lang^="en"] .deck{line-height:1.5}

/* ── [1] 第一层 · 手机 ≤767 ─────────────────────────────────────
   原 ≤700 排版层保留原样；这里只补换页入口的竖排与正文行距。 */
@media (max-width:700px){
  .body{line-height:1.9}
  html[lang^="en"] .body{line-height:1.72}
  .meta{gap:4px 14px}
  .pn{display:grid;grid-template-columns:1fr;gap:14px}
  .pn a{max-width:none;text-align:left!important}
}
/* 原 ≤760 的品牌页尾层按四层规范延伸到 767（761–767 无实机，零风险） */
@media (min-width:761px) and (max-width:767px){
  .arc-foot-slogan-en{font-size:12.5px;letter-spacing:.22em}
  .arc-foot-slogan-zh{font-size:13px;letter-spacing:.34em}
  .nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 4px;margin-left:0;margin-right:12px;font-size:14px}
  .crumb{display:flex;flex-wrap:wrap;align-items:center}
  .crumb a{display:inline-flex;align-items:center;min-height:40px;padding:0 2px}
  .pn a{display:inline-flex;flex-direction:column;justify-content:center;min-height:44px}
  .pn a small{font-size:13px}
  .tags a{min-height:40px;display:inline-flex;align-items:center;padding:2px 10px;margin:0 6px 8px 0}
}
/* ── [1] 第二层 · 平板竖屏 768–1023（新增层）────────────────────
   701–767 是手机层与平板层之间的过渡带，实机只有 iPad mini 竖屏 744，一并按平板处理。 */
@media (min-width:701px) and (max-width:1023px){
  .wrap{max-width:860px;padding:0 34px}
  article{max-width:720px;margin-inline:auto}
  .toc{display:none}
  .volbox{display:block}
  .crumb{margin:22px 0 8px}
  .body{font-size:17.5px}
}
/* ── [1][3] 第三层 · 平板横屏/小笔电 1024–1099（新增层）──────────
   原门槛 1100 使 1024–1099 落进缝里：导航已是桌面态，左栏索引却还没出现。 */
@media (min-width:1024px) and (max-width:1099px){
  .toc{display:block}
  .volbox{display:none}
  main.page{max-width:1180px;padding:0 28px;
    display:grid;grid-template-columns:216px minmax(0,720px);
    column-gap:34px;row-gap:0;justify-content:center;align-items:start}
  main.page>*{grid-column:2;min-width:0}
  main.page>.toc{grid-column:1;grid-row:1/span 200;position:sticky;top:68px;margin:0;
    max-height:calc(100vh - 88px);overflow:auto;overscroll-behavior:contain;
    padding:14px 16px 24px 0;border-right:1px solid var(--rule);font-size:12.6px;
    scrollbar-width:thin;scrollbar-color:var(--gold-line) transparent;scrollbar-gutter:stable;
    -webkit-mask-image:linear-gradient(#000 calc(100% - 24px),transparent);
    mask-image:linear-gradient(#000 calc(100% - 24px),transparent)}
  .toc ol,.toc ul{font-size:12.6px;line-height:1.5}
  .hd .wrap,.ft .wrap{max-width:1180px;padding-left:28px;padding-right:28px}
  article{max-width:720px}
}
/* ── [1] 第四层 · 桌面 ≥1100：页眉页尾与正文同宽，不再是 1100 对 1500 ── */
@media (min-width:1100px){
  .hd .wrap,.ft .wrap{max-width:1500px}
  main.page>.toc{top:70px;max-height:calc(100vh - 92px);
    scrollbar-color:var(--gold-line) transparent}
}
/* ── ≥768 共通：页眉常驻，101 篇长文里随时可回到索引 ─────────────── */
@media (min-width:768px){
  .hd{position:sticky;top:0;z-index:50;background:#fff}
  :target{scroll-margin-top:72px}
}
@media print{
  .hd{position:static}
  main.page{display:block;max-width:none;padding:0}
  .toc{display:none}
}

/* ── W92 精修 · 随笔正文页（第四块）─────────────────────────────
   只补前三块没落点的三条，不覆盖它们任何一条规则：
   [14] 正文链接与正文同色又无下划线，肉眼分不出是链接；
   [13] 标题阶梯与全站同一把尺子；
   [1][20] 字数牌固定在右上角，会压页眉与正文；窄屏还带高斯模糊。
   正文一字未动，zh/en 同一份。
   ──────────────────────────────────────────────────────────── */

/* ── [14] 正文里的链接：#04163f（与正文同色）→ #27407a + 下划线 ── */
.body p a,.body li a,.body blockquote a,.box li a,.box p a,.comment a,.ft .wrap a{
  color:#27407a;text-decoration:underline;text-underline-offset:.22em;
  text-decoration-thickness:.06em;text-decoration-color:rgba(39,64,122,.45)}
.body p a:hover,.body li a:hover,.body blockquote a:hover,.box li a:hover,
.box p a:hover,.comment a:hover,.ft .wrap a:hover{text-decoration-color:currentColor}

/* ── [13] 标题阶梯：h1 与随笔索引（44px）对齐；小节标题与正文拉开一档 ── */
h1{font-size:clamp(28px,2.4vw + 10px,42px)}
.lead h1{font-size:clamp(30px,3vw + 10px,48px)}
.body h3{font-size:19px;font-weight:700}

/* ── [1][20] 字数牌：一律收到右下角（页眉 ≥768 已改常驻，右上角会打架），
   滚动时淡出让路；窄屏取消高斯模糊，改用不透明底色 ── */
body>.gx-wc{top:auto;left:auto;right:12px;
  bottom:calc(12px + env(safe-area-inset-bottom,0px));
  font-size:12.5px;color:#6e6e75;background:rgba(255,255,255,.96);
  box-shadow:0 2px 10px rgba(4,22,63,.12);padding:4px 9px;
  transition:opacity .22s ease}
@media (max-width:768px){
  body{padding-bottom:52px}
  body>.gx-wc{-webkit-backdrop-filter:none;backdrop-filter:none;
    background:rgba(255,255,255,.97);right:10px;
    bottom:calc(10px + env(safe-area-inset-bottom,0px))}
  /* 读的时候一点不挡：静止即隐去，滚动时与开篇三秒才现身（无 JS 则一直可见） */
  html.gx-js body>.gx-wc{opacity:0}
  html.gx-js.gx-scrolling body>.gx-wc,html.gx-js.gx-wc-intro body>.gx-wc{opacity:1}
}
@media (prefers-reduced-motion:reduce){body>.gx-wc{transition:none}}
/* W105 跨浏览器兼容层 */

/* ── 1 · iOS / 微信 WKWebView：禁止横屏文字自动放大 ───────────────
   Safari 与 WKWebView 独有的 text autosizing，横屏时把正文吹大，
   中英字号比例被破坏。index / blog / essays 已有，其余页面此前缺。 */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

/* ── 2 · 字体渲染统一 ────────────────────────────────────────────
   首页由 styles.css / anniversary-8th.css 设 antialiased；研究院与内页
   实测是 auto，同一品牌字在不同页面粗细不一（macOS 上尤其明显）。
   统一到首页的表述，并补 Firefox/macOS 对应属性。 */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* ── 3 · 中文字形兜底（只接管 CJK 码位，Latin 与 macOS 表现完全不变）──
   站内少数选择器的字体栈只写了 Inter / SF Pro / Helvetica Neue，没有中文
   字体，Windows / Android 上中文会落到浏览器默认字体（常见是宋体）。
   用 local() + unicode-range 给这些家族补一层中文回退：macOS/iOS 命中
   PingFang SC（与现状一致），Windows 命中微软雅黑。全部 local()，
   不产生网络请求，不会有 FOIT/FOUT。 */
@font-face{font-family:"Inter";src:local("PingFang SC"),local("Microsoft YaHei"),local("Hiragino Sans GB"),local("Noto Sans CJK SC"),local("Source Han Sans SC"),local("HarmonyOS Sans SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+3200-33FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF}
@font-face{font-family:"SF Pro Display";src:local("PingFang SC"),local("Microsoft YaHei"),local("Hiragino Sans GB"),local("Noto Sans CJK SC"),local("Source Han Sans SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+3200-33FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF}
@font-face{font-family:"SF Pro Text";src:local("PingFang SC"),local("Microsoft YaHei"),local("Hiragino Sans GB"),local("Noto Sans CJK SC"),local("Source Han Sans SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+3200-33FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF}
@font-face{font-family:"Helvetica Neue";src:local("PingFang SC"),local("Microsoft YaHei"),local("Hiragino Sans GB"),local("Noto Sans CJK SC"),local("Source Han Sans SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+3200-33FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF}
@font-face{font-family:"PingFang SC";src:local("PingFang SC"),local("Microsoft YaHei"),local("Hiragino Sans GB"),local("Noto Sans CJK SC"),local("Source Han Sans SC"),local("Heiti SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+3200-33FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF}
@font-face{font-family:"Songti SC";src:local("Songti SC"),local("STSong"),local("Source Han Serif SC"),local("Noto Serif CJK SC"),local("Noto Serif SC"),local("SimSun");unicode-range:U+2E80-2EFF,U+3000-303F,U+3200-33FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF}

/* ── 4 · background-clip:text 兜底 ───────────────────────────────
   金属渐变数字用 color:transparent + background-clip:text 实现；万一
   background-clip:text 不被支持，!important 的透明色会让数字整个消失。
   只在「两种写法都不支持」时才回落成实心金色。 */
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .hero-copy .hero-facts dt,.hero-facts dt,.gx-vm-num,.hero h1 em{
    color:#d29721!important;-webkit-text-fill-color:#d29721!important;background:none!important}
}

/* ── 5 · SVG SMIL 的静态回退 ─────────────────────────────────────
   站内图表有两类靠动画才显形的内容：
   (a) <g opacity="0"> 由 fill="freeze" 的 animate 揭幕（百分比、年份等数据标签）；
   (b) <text opacity="0"> 轮播标签，t=0 那一帧的 values 以 "1;" 开头。
   四个目标浏览器都支持 SMIL，所以屏幕上不缺；但打印时时间线停在 0，
   标签会整片缺失，图变成没有数字的骨架。降低动态效果偏好下也应给静态可读版本。
   两条都用 :has()，不支持 :has() 的浏览器整组被丢弃——即维持现状，不会更糟。 */
@media print{
  svg [opacity="0"]:has(>animate[attributeName="opacity"][fill="freeze"]){opacity:1!important}
  svg [opacity="0"]:has(>animate[attributeName="opacity"][values^="1;"]){opacity:1!important}
}
@media (prefers-reduced-motion:reduce){
  svg [opacity="0"]:has(>animate[attributeName="opacity"][fill="freeze"]){opacity:1!important}
  svg [opacity="0"]:has(>animate[attributeName="opacity"][values^="1;"]){opacity:1!important}
}


/* ── 9 · 100vh -> 100dvh ─────────────────────────────────────────
   iOS Safari / 微信 的 100vh 把地址栏也算进去，粘性目录会比可视区高，
   底部条目滚不到也点不到。dvh 在桌面等于 vh，桌面表现零变化。
   裹 @media screen 是为了不覆盖既有的打印规则。 */
@media screen{
@media(min-width:1100px){@supports (height:100dvh){main.page>.toc{max-height:calc(100dvh - 36px)}}}
@media (min-width:1024px) and (max-width:1099px){@supports (height:100dvh){main.page>.toc{max-height:calc(100dvh - 88px)}}}
@media (min-width:1100px){@supports (height:100dvh){main.page>.toc{max-height:calc(100dvh - 92px)}}}
}

/* ══════════════════════════════════════════════════════════════════
   W110 · VI VISUAL SYSTEM
   Colour and type switched to 《庚辛资本VI视觉系统 202302》.
   A-11 standard colours and A-12 auxiliary colours are used verbatim;
   every other value is derived from one of them by a single documented
   operation (hold hue, move lightness). A-16 brand faces are self-hosted.
   Pure append: this block adds rules, it does not edit any earlier rule.
   ══════════════════════════════════════════════════════════════════ */

/* ── A-16 · brand faces, self-hosted, swap so text paints immediately ── */
@font-face{font-family:'Poppins';font-style:normal;font-weight:300;font-display:swap;src:url(/assets/fonts/poppins-300.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/poppins-400.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/poppins-500.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/poppins-600.woff2) format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/poppins-700.woff2) format('woff2')}
@font-face{font-family:'Alibaba PuHuiTi 3';font-style:normal;font-weight:300 450;font-display:swap;src:url(/assets/fonts/puhuiti-regular.woff2) format('woff2')}
@font-face{font-family:'Alibaba PuHuiTi 3';font-style:normal;font-weight:551 900;font-display:swap;src:url(/assets/fonts/puhuiti-bold.woff2) format('woff2')}

:root{
  /* navy */
  --gx-navy-950:#01091b;--gx-navy-900:#04163f;--gx-navy-800:#0a2154;--gx-navy-700:#152e68;--gx-navy-600:#27407a;--gx-navy-500:#3d568f;--gx-navy-400:#5971a6;--gx-navy-300:#808fb2;--gx-navy-200:#a0abc5;--gx-navy-150:#c0c7d8;--gx-navy-100:#d9dee8;--gx-navy-050:#ebeef4;
  /* gold */
  --gx-gold-950:#42331a;--gx-gold-800:#5f4a26;--gx-gold-ink:#7d6232;--gx-gold-lg:#b08a46;--gx-gold:#c4a46b;--gx-gold-deep:#d29721;--gx-gold-lit:#edb222;--gx-gold-pale:#ffcf72;--gx-gold-beige:#d1c1a0;--gx-gold-wash:#f6f2e9;
  /* grey */
  --gx-grey-900:#222226;--gx-grey-700:#494950;--gx-grey-600:#5d5d65;--gx-grey-500:#6e6e75;--gx-grey-400:#87878e;--gx-grey-300:#9c9c9e;--gx-grey-200:#b5b5ba;--gx-grey-150:#cfcfd3;--gx-grey-100:#e5e3eb;--gx-grey-050:#f2f2f5;
  /* ice */
  --gx-ice:#79a8d6;--gx-ice-pale:#a8c8e4;
  /* paper */
  --gx-paper:#f9f9fa;--gx-paper-warm:#faf8f3;--gx-card:#ffffff;
  /* A-04 · the manual sets the logo's clear space at 2x. The same breathing
     ratio drives component padding here: one unit, and multiples of it. */
  --gx-x:8px; --gx-2x:16px; --gx-3x:24px; --gx-4x:32px; --gx-6x:48px;
  /* A-16 · brand type stacks. Poppins carries Latin, PuHuiTi carries CJK. */
  --gx-sans:Poppins,"Alibaba PuHuiTi 3","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --gx-display:Poppins,"Alibaba PuHuiTi 3","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  --gx-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --gx-type-k:1.0000;
  /* legacy variables re-pointed at the VI palette */
  --paper:var(--gx-paper); --paper2:var(--gx-grey-050); --card:var(--gx-card);
  --ink:var(--gx-navy-900); --ink2:var(--gx-grey-500); --muted:var(--gx-grey-500);
  --faint:var(--gx-grey-500); --rule:var(--gx-grey-100); --line:var(--gx-grey-100);
  --navy:var(--gx-navy-700); --sub:var(--gx-grey-700); --teal:var(--gx-navy-900);
  --gold:var(--gx-gold-ink); --gold2:var(--gx-gold-ink);
  --gold-ink:var(--gx-gold-ink); --gold-line:var(--gx-gold); --gold-dark:var(--gx-gold-lit);
  --ice:var(--gx-ice); --mist:var(--gx-grey-050);
  --sans:var(--gx-sans); --serif:var(--gx-display);
  --w92-sans:var(--gx-sans); --w92-serif:var(--gx-display);
  --w92-dark:var(--gx-navy-900); --w92-dark2:var(--gx-navy-800);
  --w92-dark-ink:var(--gx-navy-050);
  --a8-mountain:var(--gx-navy-900); --a8-gold:var(--gx-gold); --a8-ice:var(--gx-ice);
  --a8-cloud:var(--gx-grey-050);
  --ed-ink:var(--gx-navy-900); --ed-gold:var(--gx-gold); --ed-gold2:var(--gx-gold-lit);
  --ed-ice:var(--gx-ice);
  --focus-ring:var(--gx-navy-500);
}

/* ── A-16 · put the brand faces on everything that had a non-mono stack ──
   The English root re-declares the type tracks at html[lang="en"] specificity
   and several component rules pin their own stack, so the brand faces are
   asserted here rather than merely offered. Monospace is re-asserted after,
   because figures and code need fixed advance widths. */
html[lang]{
  --w92-serif:var(--gx-display); --w92-sans:var(--gx-sans);
  --serif:var(--gx-display);     --sans:var(--gx-sans);
}
html,body,button,input,select,textarea,
h1,h2,h3,h4,h5,h6,p,li,td,th,dt,dd,blockquote,figcaption,summary,label,small,em,strong,b,i,
a,span,div,section,article,figure,nav,header,footer,main,aside,details,cite,q,time,address{
  font-family:var(--gx-sans) !important;
}
svg,svg text,svg tspan{font-family:var(--gx-sans) !important}
code,pre,kbd,samp,tt,var,.gx-mono,[class*="mono"],[class*="Mono"],
code *,pre *{font-family:var(--gx-mono) !important}
/* PuHuiTi ships a true bold, so never let the browser synthesise one */
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-synthesis-weight:none}

/* ── A-11 · the ground. The manual's navy is the page's dark ground and its
   ink; large light areas take the paper tint, pure white is kept for cards. */
body{background:var(--gx-paper);color:var(--gx-navy-900)}

/* ── hairlines: one weight, one colour, geometric ── */
hr,.rule,.divider{border:0;border-top:1px solid var(--gx-grey-100);margin:var(--gx-3x) 0}

/* ══ W110 · 2 · 空白治理 ══════════════════════════════════════════
   One section rhythm instead of seven. A section's last child no longer
   adds its own trailing margin on top of the section's padding, so every
   section boundary lands on the same interval. */
section > :last-child,
.section > :last-child,
.section > figure:last-child > figcaption,
.gx-w3-fig:last-child > figcaption{margin-bottom:0}
.gx-tbl-note,.gx-bond-links,.gx-vtx-axiom,.gx-forinvestors-foot,
.north-slope-visual,.gx-ott-cap{margin-bottom:0}
/* act transitions keep their pause, but a measured one */
.gx-act{margin-top:var(--gx-6x);margin-bottom:var(--gx-6x)}

/* ── large decorative art keeps its own rhythm ── */
.gx-jinshui-band svg{display:block}

/* ══════════════════════════════════════════════════════════════════
   W113 · 随笔升级 · 索引页 book.html 与正文页 essays/*.html
   同一份样式注入全部随笔页面，三站逐字节相同。
   纯追加：不改一条既有规则，不删一行，不加一个元素，正文一字未动。
   中英差异只经 html[lang] 前缀，两站同一份文件。
   本块不写任何色值字面量、不写任何字体名——颜色一律取站内既有语义
   变量，字体沿用全站已定的品牌字，随笔不另起一套。
   ══════════════════════════════════════════════════════════════════ */

/* ══ 1 · 阅读尺度 ═══════════════════════════════════════════════════
   中文一行 28–36 字最舒服，英文一行 60–75 字母最舒服。同一个 720px
   版心，中文落到 43 字（太长，眼睛回行会丢行），英文落到 68 字母
   （正好）。所以版心与字号按语言各给一档，规则本身两站完全一样。 */
:root{
  --w113-measure:660px;  /* 中文版心 660 ÷ 19 = 34 字/行 */
  --w113-fs:19px;
  --w113-lh:1.9;         /* 19 × 1.9 = 36.1px 行距 */
  --w113-gap:1.35em;     /* 段距 ≈ 0.71 行：段落终于分得开 */
  --w113-deck:20px;
  --w113-h3:22px;
}
html[lang^="en"]{
  --w113-measure:720px;  /* 英文版心 720px ≈ 64 字母/行 */
  --w113-fs:18px;
  --w113-lh:1.75;
  --w113-gap:1.2em;
  --w113-deck:19px;
  --w113-h3:21px;
}
/* 手机：版心由屏幕决定，字号退半档，行距不动 */
@media (max-width:700px){
  :root{--w113-fs:17.5px;--w113-lh:1.9;--w113-deck:18px;--w113-h3:20px}
  html[lang^="en"]{--w113-fs:17px;--w113-lh:1.7;--w113-deck:17px;--w113-h3:19px}
}

/* ══ 2 · 版心落地 ═══════════════════════════════════════════════════
   正文页四个断点都用同一个变量。索引页没有 article，下面这些选择器
   天然只命中正文页，长表不受影响。 */
article{max-width:var(--w113-measure)}
/* 1024–1099：左栏索引已出现，正文在正文列里居中 */
@media (min-width:1024px) and (max-width:1399.98px){
  main.wrap.page>article{margin-inline:auto}
}
/* ≥1400：正文列是「正文 + 右副栏」，正文那一格跟着版心走 */
@media (min-width:1400px){
  main.wrap.page>article{grid-template-columns:var(--w113-measure) minmax(0,340px)}
}

/* ══ 3 · 正文节奏 ═══════════════════════════════════════════════════
   原来段距 1em 只有行距的一半，两段之间看不出断句；抬到 0.71 行。 */
.body{font-size:var(--w113-fs);line-height:var(--w113-lh)}
.body p{margin:0 0 var(--w113-gap);text-wrap:pretty}
.body p:last-child{margin-bottom:0}
.body li{margin:.35em 0}

/* ══ 4 · 标题阶梯 ═══════════════════════════════════════════════════
   眉标 → 大标题 → 导语 → 小节标题 → 正文，五档各差一步，
   小节标题原本与正文同号，只靠加粗区分，抬到正文的 1.16 倍。 */
.kick{margin:0 0 2px}
h1{margin:10px 0 12px;text-wrap:balance}
.deck{font-size:var(--w113-deck);line-height:1.7;margin:0 0 18px;text-wrap:pretty}
.meta{padding:10px 0;margin-bottom:30px}
.body h3{font-size:var(--w113-h3);line-height:1.5;margin:2em 0 .6em;letter-spacing:.01em;text-wrap:balance}
.body h3+p{margin-top:0}

/* ══ 5 · 强调与引文 ═════════════════════════════════════════════════
   着重句原来跨行会断成两个方块，且底色偏灰；改成整句连续的一道
   荧光笔，边角收 2px。全站 297 处着重句共用这一条。 */
.body .bk-em{
  padding:.12em .22em;border-radius:2px;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
  background:color-mix(in srgb,var(--gold-line) 26%,transparent)}
/* 引文块：101 篇里目前一处未用，样式先按住，日后写进来就是这个样子 */
.body blockquote{margin:1.6em 0;padding:.2em 0 .2em 1em;line-height:1.85}

/* ══ 6 · 组件与官网、研究院同源 ═════════════════════════════════════ */
/* 标签：索引页与正文页同一枚 chip */
.tags{margin:30px 0 10px}
.tags a{border-radius:3px;padding:3px 11px;transition:border-color .18s ease,background-color .18s ease,color .18s ease}
.tags a:hover{color:var(--ink);border-color:var(--gold-line);text-decoration:none;
  background:color-mix(in srgb,var(--gold-line) 12%,transparent)}
/* 研究院条目盒：与展板同一套内边距与小字距 */
.box{border-radius:3px;padding:16px 18px;margin:32px 0;line-height:1.75}
.box b{letter-spacing:.16em}
.box li{margin:4px 0}
/* 上一篇 / 下一篇：从两行小字变成两张可点的卡 */
.pn{gap:18px;padding-top:18px;margin-top:36px}
.pn a{display:flex;flex-direction:column;gap:4px;padding:12px 14px;
  border:1px solid var(--rule);border-radius:3px;
  transition:border-color .18s ease,background-color .18s ease}
.pn a:hover{border-color:var(--gold-line);text-decoration:none;
  background:color-mix(in srgb,var(--gold-line) 9%,transparent)}
.pn small{letter-spacing:.12em;color:var(--gold-ink)}
@media (min-width:701px){.pn a{flex:0 1 48%;max-width:48%}}
/* 左栏索引：当前篇之外的条目给一点悬停反馈 */
.toc a{border-radius:2px}
.toc li>a:hover{color:var(--ink)}

/* ══ 7 · 索引页：101 篇要一眼扫得动 ═════════════════════════════════ */
h2.vol{font-size:22px;margin:34px 0 8px;padding-top:8px;letter-spacing:.01em;text-wrap:balance}
h2.vol small{letter-spacing:.02em}
table.idx th{padding-bottom:8px}
table.idx td{padding:9px 8px 9px 0}
table.idx td.t a{line-height:1.5}
/* 标题字号只抬中文那一边：中文篇名十来个字，从不折行，抬一档是白赚；
   英文篇名长，抬一档每行多折一行，101 行加起来多滚两千多像素。
   这条语言差与索引长表的双栏排布同源，两站仍是同一份文件。 */
html[lang^="zh"] table.idx td.t a{font-size:15px}
table.idx td.t small{line-height:1.6;margin-top:3px}
.facts{padding:10px 0;margin:16px 0 22px}
.lead p{font-size:16px;line-height:1.8}
.tagidx .nm{letter-spacing:.01em}

/* 标签索引在中文站占了整页三分之一。宽屏 ≥1400 早已是双栏，
   768–1399 之间照做，平板上少滚将近三千像素。 */
@media (min-width:768px) and (max-width:1399.98px){
  main.page>section.tagidx{column-count:2;column-gap:40px}
  main.page>section.tagidx>h2,main.page>section.tagidx>p.lead{column-span:all}
  main.page>section.tagidx>.grp{break-inside:avoid}
}

/* 卷次导航：≤1023 收成一行横向卷轴。中文站它是普通行内流，英文站是
   一个会换行的 flex（英文卷名长，手机上摊成十一行、占 342px）。这里
   两边统一成不换行的 flex 卷轴，英文省下三百像素、中文省下一百二，
   并在 ≤767 常驻页顶，成为 101 篇随时可用的跳转条。 */
@media (max-width:1023px){
  .volnav{display:flex;flex-wrap:nowrap;align-items:center;gap:0 18px;
    overflow-x:auto;overflow-y:hidden;
    overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;margin-inline:-20px;padding-inline:20px;line-height:1.6;
    -webkit-mask-image:linear-gradient(90deg,transparent 0,black 20px,black calc(100% - 26px),transparent);
            mask-image:linear-gradient(90deg,transparent 0,black 20px,black calc(100% - 26px),transparent)}
  .volnav::-webkit-scrollbar{display:none}
  .volnav a{flex:0 0 auto;margin-right:0;white-space:nowrap}
}
@media (max-width:767px){
  .volnav{position:sticky;top:0;z-index:40;background:var(--paper);
    border-bottom:1px solid var(--rule);padding-top:6px;padding-bottom:6px;margin-bottom:16px}
  h2.vol{scroll-margin-top:58px}
  :target{scroll-margin-top:58px}
}

/* ══ 8 · 固定字数牌归位（索引页的一处实测错位）═══════════════════════
   ≥768 的页眉是常驻的，而索引页两枚字数牌仍钉在右上角：实测「全集」
   那一枚与主导航最后一项横向重叠 18px，把「常见问题」压掉一截。
   正文页早已把字数牌收到右下角，索引页照同一处理，两枚一左一右。 */
body>.gx-wc{top:auto;left:auto;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px))}
body>.gx-total{top:auto;right:auto;left:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px))}
@media (max-width:768px){
  body{padding-bottom:52px}
  body>.gx-wc{right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px))}
  body>.gx-total{left:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px))}
}

/* ══ 9 · 阅读进度 ═══════════════════════════════════════════════════
   与研究院顶部那条同款：2px，金色，钉在视口顶边。走 CSS 滚动时间线，
   不加一个元素、不加一行脚本；不支持的浏览器整条规则被丢弃，页面
   与改版前一模一样。 */
@supports (animation-timeline:scroll()){
  @keyframes w113-read{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  .hd::after{content:"";position:fixed;left:0;top:0;width:100%;height:2px;z-index:90;
    pointer-events:none;transform:scaleX(0);transform-origin:0 50%;
    background:linear-gradient(90deg,var(--gold-line),var(--gold-dark));
    animation-name:w113-read;animation-duration:auto;animation-timing-function:linear;
    animation-fill-mode:both;animation-timeline:scroll(root block)}
}

/* ══ 10 · 手机 ══════════════════════════════════════════════════════
   随笔最可能在手机上读。≥768 的页眉是常驻的，回索引一直在；手机上
   页眉会滚走，于是把面包屑（本来就有「随笔」这一环）钉在页顶，
   不加一个字、不加一个元素，长文里随时能回去。 */
@media (max-width:767px){
  .crumb{position:sticky;top:0;z-index:45;background:var(--paper);
    margin:0 -20px 14px;padding:7px 20px;border-bottom:1px solid var(--rule)}
  .body h3{margin-top:1.8em}
  .pn{margin-top:30px}
  .box{margin:24px 0}
}

/* ══ 11 · 打印 ══════════════════════════════════════════════════════ */
@media print{
  .hd::after{display:none}
  .gx-total{display:none}
  body{padding-bottom:0}
  main.wrap.page>article{max-width:var(--w113-measure)}  /* 打印版心与屏幕一致 */
  .volnav{position:static;overflow:visible;white-space:normal;
    -webkit-mask-image:none;mask-image:none}
}

/* W141 · 随笔线补丁层：只追加，不改任何既有规则；zh/en 同一份 */
/* ── 断句：短标题按标点切片，片段 inline-block —— 放得下就整段不拆，放不下才在片内折行，不溢出 ── */
.nb{display:inline-block}
.w141-nbp,.w141-pull{text-wrap:pretty}
/* 空间不够时放行（只中文大标题）：手机 28px 一行只容 11.9 字，12–13 字的片段成块必占整行再折，反而多出一行；
   24px 上浮句一行容 13.9 字，nb-l（≤13 字）放得下，不放行；
   英文片段按 em 估宽 11–14em 在 375 多半放得下，成块不放行（实测 375 档 h1 可避免错断 9→0） */
@media (max-width:430px){html[lang^="zh"] h1 .nb-l{display:inline}}
/* 15–18em 的长片段：只在大标题有 ≥633px 可用、字号 ≤36px 时成块；英文版心 720px，≥1100 也放得下；上浮句 26px/660px 容 25em，≥701 也成块 */
.nb-x{display:inline}
@media (min-width:701px) and (max-width:1099.98px){h1 .nb-x{display:inline-block}}
@media (min-width:1100px){html[lang^="en"] h1 .nb-x{display:inline-block}}
@media (min-width:701px){.w141-pull .nb-x{display:inline-block}}

/* ── 记忆点：本篇正文原句逐字上浮（aria-hidden 防重读；正文本身一字未动）── */
.w141-pull{font-size:24px;line-height:1.5;font-weight:500;color:var(--ink);letter-spacing:.01em;
  margin:0 0 30px;padding:0 0 0 16px;border-left:3px solid var(--gold-line,#c4a46b)}
@media (min-width:701px){.w141-pull{font-size:26px;margin-bottom:36px}}

/* ── 守卫：正文字号只认 W113 变量，不随样式块次序变化（平板 17.5px 那条旧规则永远压不回来）── */
.body{font-size:var(--w113-fs);line-height:var(--w113-lh)}
/* ≥1400 右副栏原本跨 5 行（到 .body）；多了一行上浮句后仍要跨到 .body */
@media (min-width:1400px){main.wrap.page>article>.w92-rail{grid-row:1/span 6}}
html body{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-touch-callout:none}html body input,html body textarea,html body [contenteditable="true"],html body .gx-sgbox,html body .gx-sgbox *,html body a[href^="mailto:"]{-webkit-user-select:text!important;-moz-user-select:text!important;user-select:text!important;-webkit-touch-callout:default}.bk-em{font-weight:700;color:#04163f}.bk-ul{text-decoration:none;background:linear-gradient(transparent 68%,rgba(196,164,107,.42) 68%)}.bk-pull{margin:18px 0 20px;padding:12px 0 12px 20px;border-left:3px solid #c4a46b;font:500 clamp(18px,1.9vw,22px)/1.55 "Songti SC",STSong,"Noto Serif SC",Georgia,serif;color:#04163f}html[lang="en"] .bk-pull{font-family:Georgia,"Times New Roman",serif;font-style:italic}@media(max-width:639px){.bk-pull{padding-left:15px;font-size:17px}}@media print{.bk-pull{break-inside:avoid}}