/* ============================================================
   tokens.css — 三色设计令牌(纸 / 青 / 朱)
   规则:全站只用三个"具体颜色"锚点(色相 hue),
        其余一切颜色都是它们的 亮度/饱和度/透明度 派生。
   ① 纸 paper (hue≈33,暖)  → 背景、表面、文字、分隔线
   ② 青 azure (hue≈200)     → 装饰:链接、结构线、交互
   ③ 朱 cinnabar (hue≈9)    → 标注:标题印记、品牌、关键高亮
   亮/暗双模式皆带"一点点色彩",非纯黑白。
   ============================================================ */

:root {
  /* —— 三色锚点 + 本校装饰令牌(换站只动这一块;亮暗双模式自动派生) —— */
  --paper-h: 36;
  --azure-h: 200;
  --cinnabar-h: 92;        /* 青柠绿:反中大紫(野=反官色) */
  --mark-l-adj: 11%;       /* GV1 亮度补偿:绿/青系压暗保对比(品牌「野史」达 WCAG,用户拍板) */
  /* 背景纹样:抽象马赛克 —— 单张 SVG(只有深浅填充块,无网格线),
     11px 小砖、242px 平铺单元。alpha overlay 叠在真实 --bg 上,
     故同一张图自动适配 浅/中/深 三档主题与各站底色。build 内联进 main.css(随 ?v= 缓存失效)。
     整套零图片资源,强度只调 --motif-opacity。 */
  --motif: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22242%22%20height%3D%22242%22%20viewBox%3D%220%200%20242%20242%22%3E%3Cg%20fill%3D%22%23000%22%20opacity%3D%220.005%22%3E%3Crect%20x%3D%22209%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23000%22%20opacity%3D%220.01%22%3E%3Crect%20x%3D%2211%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23000%22%20opacity%3D%220.015%22%3E%3Crect%20x%3D%2255%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23000%22%20opacity%3D%220.02%22%3E%3Crect%20x%3D%2277%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23000%22%20opacity%3D%220.025%22%3E%3Crect%20x%3D%2266%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23000%22%20opacity%3D%220.03%22%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20opacity%3D%220.005%22%3E%3Crect%20x%3D%2233%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20opacity%3D%220.01%22%3E%3Crect%20x%3D%22187%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20opacity%3D%220.015%22%3E%3Crect%20x%3D%22143%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20opacity%3D%220.02%22%3E%3Crect%20x%3D%2244%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2222%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22176%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20opacity%3D%220.025%22%3E%3Crect%20x%3D%22176%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2222%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2277%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2211%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22121%22%20y%3D%2288%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22132%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22165%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2244%22%20y%3D%22176%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22187%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22198%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22209%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2255%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2266%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2288%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22231%22%20y%3D%22231%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20opacity%3D%220.03%22%3E%3Crect%20x%3D%2222%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22187%22%20y%3D%2211%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22132%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%2233%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2244%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2299%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%2255%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%220%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%2266%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22143%22%20y%3D%2299%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22110%22%20y%3D%22110%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2277%22%20y%3D%22121%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22154%22%20y%3D%22143%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22198%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22209%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%22220%22%20y%3D%22154%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3Crect%20x%3D%2233%22%20y%3D%22220%22%20width%3D%2210%22%20height%3D%2210%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
  --motif-size: 242px 242px;
  --motif-opacity: .6;

  /* 阅读与布局常量(非颜色) */
  --measure: 54rem;          /* 正文阅读宽度 */
  --measure-wide: 58rem;     /* 宽元素(表格/挂边引语)越界后的最大宽度 */
  --page-max: 90rem;
  --radius: 4px;
  --radius-lg: 8px;
  --rule: 1px;
  --space: clamp(1rem, 0.6rem + 1.6vw, 1.6rem);
  --gut: clamp(1.1rem, 0.7rem + 2.2vw, 2.6rem);
  --header-h: 60px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ===================== 浅色(暖米纸) ===================== */
:root,
:root[data-theme="light"] {
  color-scheme: light;
  --paper-s: 30%;
  --azure-s: 54%;
  --cinnabar-s: 64%;

  /* 背景与表面 —— 纯白(中性):页/卡纯白、靠描边分隔;次表面留极淡中性灰 */
  --bg:        #fff;
  --bg-tint:   hsl(0 0% 98%);
  --surface:   #fff;
  --surface-2: hsl(0 0% 95.5%);
  --line:      hsl(0 0% 88%);
  --line-soft: hsl(0 0% 93%);

  /* 文字 —— 纸色的低亮度派生(暖墨) */
  --text:      hsl(var(--paper-h) calc(var(--paper-s) - 6%) 16%);
  --text-soft: hsl(var(--paper-h) calc(var(--paper-s) - 12%) 36%);
  --text-faint:hsl(var(--paper-h) calc(var(--paper-s) - 16%) 40%);

  /* 装饰青 */
  --accent:      hsl(var(--azure-h) var(--azure-s) 35%);
  --accent-soft: hsl(var(--azure-h) calc(var(--azure-s) - 16%) 46%);
  --accent-wash: hsl(var(--azure-h) var(--azure-s) 35% / .08);

  /* 标注朱 */
  --mark:       hsl(var(--cinnabar-h) var(--cinnabar-s) calc(38% - var(--mark-l-adj, 0%)));
  --mark-soft:  hsl(var(--cinnabar-h) calc(var(--cinnabar-s) - 10%) 56%);
  --mark-wash:  hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .10);
  --mark-line:  hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .28);

  --shadow: 0 1px 2px hsl(var(--paper-h) 20% 20% / .06),
            0 6px 24px -8px hsl(var(--paper-h) 20% 20% / .12);
  --selection: hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .18);
}

/* ===================== 中(中性暖纸·比浅色略浅一档;背景不随各站主色调) ===================== */
:root[data-theme="mid"] {
  color-scheme: light;
  --paper-h: 34;           /* 锁定中性暖纸:中档背景统一暖白,不吃各站(冷色)主色调 */
  --paper-s: 30%;
  --azure-s: 54%;
  --cinnabar-s: 64%;

  --bg:        hsl(var(--paper-h) calc(var(--paper-s) + 8%) 95%);
  --bg-tint:   hsl(var(--paper-h) calc(var(--paper-s) + 6%) 94%);
  --surface:   hsl(var(--paper-h) var(--paper-s) 96.5%);
  --surface-2: hsl(var(--paper-h) calc(var(--paper-s) - 4%) 92.5%);
  --line:      hsl(var(--paper-h) calc(var(--paper-s) - 10%) 86%);
  --line-soft: hsl(var(--paper-h) calc(var(--paper-s) - 12%) 90.5%);

  --text:      hsl(var(--paper-h) calc(var(--paper-s) - 6%) 16%);
  --text-soft: hsl(var(--paper-h) calc(var(--paper-s) - 12%) 36%);
  --text-faint:hsl(var(--paper-h) calc(var(--paper-s) - 16%) 40%);

  --accent:      hsl(var(--azure-h) var(--azure-s) 35%);
  --accent-soft: hsl(var(--azure-h) calc(var(--azure-s) - 16%) 46%);
  --accent-wash: hsl(var(--azure-h) var(--azure-s) 35% / .08);

  --mark:       hsl(var(--cinnabar-h) var(--cinnabar-s) calc(38% - var(--mark-l-adj, 0%)));
  --mark-soft:  hsl(var(--cinnabar-h) calc(var(--cinnabar-s) - 10%) 56%);
  --mark-wash:  hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .10);
  --mark-line:  hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .28);

  --shadow: 0 1px 2px hsl(var(--paper-h) 20% 20% / .07),
            0 6px 24px -8px hsl(var(--paper-h) 20% 20% / .14);
  --selection: hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .18);
}

/* ===================== 深色(暖墨黑) ===================== */
:root[data-theme="dark"] {
  color-scheme: dark;
  --paper-s: 16%;
  --azure-s: 50%;
  --cinnabar-s: 66%;

  --bg:        hsl(var(--paper-h) calc(var(--paper-s) - 2%) 8%);
  --bg-tint:   hsl(var(--paper-h) var(--paper-s) 11%);
  --surface:   hsl(var(--paper-h) var(--paper-s) 12.5%);
  --surface-2: hsl(var(--paper-h) calc(var(--paper-s) + 2%) 17%);
  --line:      hsl(var(--paper-h) var(--paper-s) 26%);
  --line-soft: hsl(var(--paper-h) var(--paper-s) 20%);

  --text:      hsl(var(--paper-h) calc(var(--paper-s) + 6%) 88%);
  --text-soft: hsl(var(--paper-h) var(--paper-s) 66%);
  --text-faint:hsl(var(--paper-h) calc(var(--paper-s) - 2%) 50%);

  --accent:      hsl(var(--azure-h) calc(var(--azure-s) + 6%) 64%);
  --accent-soft: hsl(var(--azure-h) var(--azure-s) 72%);
  --accent-wash: hsl(var(--azure-h) var(--azure-s) 64% / .12);

  --mark:       hsl(var(--cinnabar-h) calc(var(--cinnabar-s) + 4%) 63%);
  --mark-soft:  hsl(var(--cinnabar-h) var(--cinnabar-s) 70%);
  --mark-wash:  hsl(var(--cinnabar-h) var(--cinnabar-s) 63% / .14);
  --mark-line:  hsl(var(--cinnabar-h) var(--cinnabar-s) 63% / .34);

  --shadow: 0 1px 2px hsl(0 0% 0% / .3),
            0 10px 30px -10px hsl(0 0% 0% / .5);
  --selection: hsl(var(--cinnabar-h) var(--cinnabar-s) 63% / .26);
}

/* 跟随系统(未手动指定时) */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    color-scheme: dark;
    --paper-s: 16%; --azure-s: 50%; --cinnabar-s: 66%;
    --bg:        hsl(var(--paper-h) calc(var(--paper-s) - 2%) 8%);
    --bg-tint:   hsl(var(--paper-h) var(--paper-s) 11%);
    --surface:   hsl(var(--paper-h) var(--paper-s) 12.5%);
    --surface-2: hsl(var(--paper-h) calc(var(--paper-s) + 2%) 17%);
    --line:      hsl(var(--paper-h) var(--paper-s) 26%);
    --line-soft: hsl(var(--paper-h) var(--paper-s) 20%);
    --text:      hsl(var(--paper-h) calc(var(--paper-s) + 6%) 88%);
    --text-soft: hsl(var(--paper-h) var(--paper-s) 66%);
    --text-faint:hsl(var(--paper-h) calc(var(--paper-s) - 2%) 50%);
    --accent:      hsl(var(--azure-h) calc(var(--azure-s) + 6%) 64%);
    --accent-soft: hsl(var(--azure-h) var(--azure-s) 72%);
    --accent-wash: hsl(var(--azure-h) var(--azure-s) 64% / .12);
    --mark:       hsl(var(--cinnabar-h) calc(var(--cinnabar-s) + 4%) 63%);
    --mark-soft:  hsl(var(--cinnabar-h) var(--cinnabar-s) 70%);
    --mark-wash:  hsl(var(--cinnabar-h) var(--cinnabar-s) 63% / .14);
    --mark-line:  hsl(var(--cinnabar-h) var(--cinnabar-s) 63% / .34);
    --shadow: 0 1px 2px hsl(0 0% 0% / .3), 0 10px 30px -10px hsl(0 0% 0% / .5);
    --selection: hsl(var(--cinnabar-h) var(--cinnabar-s) 63% / .26);
  }
}

/* ============================================================
   base.css — 字体、重置、排版基底、布局、背景纹理
   ============================================================ */

/* —— DreamHanSerifCN(梦源宋体):@font-face 由 build 注入 ——
   SC = unicode-range 分片(fonts/_ff.css,每页只载所需片);繁体镜像替换为单体。
   正文 W13=400 · Medium W18=600 · Bold W23=800 —— */

:root{
  --serif:"Noto Serif SC", "Noto Serif CJK SC", "Songti SC", "SimSun", ui-serif, serif;
  --mono:"DM Mono","SFMono-Regular",ui-monospace,"Cascadia Mono",monospace;
  --sans:"PingFang SC","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC",-apple-system,system-ui,"Helvetica Neue",Arial,sans-serif;
  --hazard:#f4c20d; --hazard-ink:#1a1a1a;  /* 港铁警示黄:仅 17/18 低可信 */
}

/* —— 重置 —— */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
/* —— 字号系统(从头梳理)——
   旧逻辑:html 固定 20px + body 另设 clamp(20–22px),两处叠加、且手机不缩小 → 窄屏拥挤。
   新逻辑:只有一个「流式字号根」,全站 rem/em 都从它缩放;body 不再二次设定字号。
   手机(~375px)≈17px、桌面(≥1200px)≈18.5px —— 较旧版整体缩小约 2px,手机尤其松一口气。
   data-fontsize 提供「小/标准/大」三档无障碍切换(JS 写到 <html>,localStorage 记忆)。 */
html{
  font-size:clamp(17.5px, 16.2px + .22vw, 18.8px);
  -webkit-text-size-adjust:100%; text-size-adjust:100%;
  scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 1rem);
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
}
:root[data-fontsize="s"]{font-size:clamp(16px, 14.9px + .2vw, 17.2px)}
:root[data-fontsize="l"]{font-size:clamp(19px, 17.5px + .25vw, 20.5px)}
body{
  font-family:var(--serif); font-weight:500;
  font-size:1rem; line-height:1.8;
  color:var(--text); background:var(--bg);
  letter-spacing:normal; text-rendering:optimizeLegibility;
  min-height:100vh; overflow-wrap:break-word;
  transition:background-color .4s var(--ease), color .4s var(--ease);
}
::selection{background:var(--selection)}
img,svg,video{max-width:100%; height:auto; display:block}
a{color:var(--accent); text-decoration:none}
button{font:inherit; color:inherit; background:none; border:none; cursor:pointer}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:2px}

/* —— 背景纹理:默认朱丝栏方格;每站可在 tokens.css 用 --motif / --motif-size / --motif-opacity 覆盖为本校专属纹样(均为色③ 朱的极淡派生,冻结其余结构) —— */
body::before{
  content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background-image: var(--motif,
    repeating-linear-gradient(to right,
      var(--mark-wash) 0 var(--rule), transparent var(--rule) 2.25rem),
    repeating-linear-gradient(to bottom,
      var(--mark-wash) 0 var(--rule), transparent var(--rule) 2.25rem));
  background-size: var(--motif-size, auto);
  background-position:center top;
  opacity:var(--motif-opacity, .24); -webkit-mask-image:linear-gradient(to bottom, transparent, #000 6rem);
  mask-image:linear-gradient(to bottom, transparent, #000 6rem);
}

/* —— 标题排版 —— */
h1,h2,h3,h4,h5,h6{
  font-weight:600; line-height:1.3; letter-spacing:.01em;
  color:var(--text); text-wrap:balance;
}
h1{font-size:clamp(1.9rem,1.4rem + 2.2vw,2.9rem); font-weight:800; line-height:1.18}
h2{font-size:clamp(1.45rem,1.2rem + 1.2vw,1.95rem)}
h3{font-size:clamp(1.2rem,1.05rem + .6vw,1.45rem)}
h4{font-size:1.08rem}
p{text-wrap:pretty}
strong,b{font-weight:600; color:var(--text)} /* 粗体=Medium(W18),非 Bold(W23):正文强调更克制 */
em,i{font-style:italic}
small{font-size:.84em; color:var(--text-soft)}
sup,sub{line-height:0}

code,kbd,samp{
  font-family:var(--mono); font-size:.86em;
  background:var(--surface-2); padding:.12em .4em; border-radius:var(--radius);
  border:1px solid var(--line-soft);
}

/* —— 布局容器 —— */
.wrap{width:100%; max-width:var(--page-max); margin-inline:auto; padding-inline:var(--gut)}
.flow > * + *{margin-block-start:1.05em}
.muted{color:var(--text-soft)}
.faint{color:var(--text-faint)}
.center{text-align:center}
hr{border:none; height:var(--rule); background:var(--line); margin-block:2.4rem}

/* 工具:视觉隐藏(无障碍) */
.visually-hidden{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}
/* skip-link 键盘聚焦时显形(P1-1 / WCAG 2.4.1) */
.visually-hidden:focus,.visually-hidden:focus-visible{
  position:fixed!important; inset-block-start:.6rem; inset-inline-start:.6rem;
  width:auto; height:auto; margin:0; padding:.55em 1em; clip:auto; overflow:visible;
  background:var(--surface); color:var(--text); border:2px solid var(--accent);
  border-radius:var(--radius); box-shadow:var(--shadow); z-index:200;
}

/* 减少动效偏好 */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important; transition-duration:.01ms!important; scroll-behavior:auto!important}
}

/* ============================================================
   components.css — 页头/页脚/导航/卡片/印章/目录/翻页/徽章/切换
   ============================================================ */

/* —————————————————— 盾徽 LOGO(青朱双分·火凤,品牌记忆点) —————————————————— */
.brand-logo{
  block-size:2.5em; inline-size:auto; flex:0 0 auto; display:block;
  filter:drop-shadow(0 1px 2.5px color-mix(in srgb, var(--mark) 24%, transparent));
  transition:transform .35s var(--ease);
}
a:hover > .brand-logo,.brand:hover .brand-logo{transform:rotate(-4deg) scale(1.05)}
.brand-logo--footer{block-size:3.4em}

/* —————————————————— 页头 —————————————————— */
.site-header{
  position:sticky; top:0; z-index:50;
  block-size:var(--header-h); display:flex; align-items:center;
  background:color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter:saturate(1.4) blur(10px);
  -webkit-backdrop-filter:saturate(1.4) blur(10px);
  border-block-end:var(--rule) solid var(--line);
}
.site-header .wrap{display:flex; align-items:center; gap:1.2rem; max-width:var(--page-max)}
.brand{display:flex; align-items:center; gap:.6rem; color:var(--text); font-weight:800; flex:0 0 auto; white-space:nowrap}
.brand-name{font-size:1.22rem; letter-spacing:.06em}
.brand-name b{color:var(--mark); font-weight:800}
.brand-sub{
  font-size:.7rem; letter-spacing:.34em; color:var(--text-faint);
  font-weight:400; text-transform:uppercase; padding-inline-start:.1rem;
}
@media (max-width:640px){.brand-sub{display:none}}

.nav{display:flex; align-items:center; gap:.7rem; margin-inline-start:auto}
/* 三大功能入口 */
.nav-feats{display:flex; align-items:center; gap:.1rem}
.nav-feat{
  display:inline-flex; align-items:center; gap:.32em; color:var(--text-soft); font-size:.9rem;
  padding:.38em .62em; border-radius:var(--radius); white-space:nowrap; transition:color .2s, background-color .2s;
}
.nav-feat .nf-g{color:var(--mark); font-size:1.04em; line-height:1}
.nav-feat:hover{color:var(--text); background:var(--surface-2)}
/* 模块区:野史直达 + 分组下拉 */
.nav-mods{display:flex; align-items:center; gap:.1rem; padding-inline-start:.7rem; border-inline-start:var(--rule) solid var(--line)}
.nav-primary{
  color:var(--mark); font-weight:800; font-size:.92rem; padding:.38em .62em; border-radius:var(--radius);
  white-space:nowrap; position:relative; transition:background-color .2s;
}
.nav-primary:hover{background:var(--mark-wash)}
.nav-primary.is-active::after{content:""; position:absolute; inset-inline:.62em; inset-block-end:.14em; block-size:2px; background:var(--mark); border-radius:2px}
.navgroup{position:relative}
.navgroup-btn{
  color:var(--text-soft); font-size:.92rem; padding:.38em .56em; border-radius:var(--radius);
  display:inline-flex; align-items:center; gap:.22em; white-space:nowrap; transition:color .2s, background-color .2s;
}
.navgroup-btn:hover{color:var(--text); background:var(--surface-2)}
.navgroup.is-active .navgroup-btn{color:var(--mark)}
.ng-caret{font-size:.68em; opacity:.6; transition:transform .2s}
.navgroup:hover .ng-caret,.navgroup.is-open .ng-caret{transform:rotate(180deg)}
.navdrop{
  position:absolute; inset-block-start:calc(100% + .45rem); inset-inline-start:50%; translate:-50% 0; min-inline-size:13rem;
  background:var(--surface); border:var(--rule) solid var(--line); border-radius:var(--radius-lg);
  box-shadow:var(--shadow); padding:.4rem; display:grid; gap:.08rem; z-index:60;
  opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .18s var(--ease), transform .18s var(--ease), visibility .18s;
}
.navdrop::before{content:""; position:absolute; inset-block-end:100%; inset-inline:0; block-size:.5rem} /* hover 桥 */
.navgroup:hover .navdrop,.navgroup:focus-within .navdrop,.navgroup.is-open .navdrop{opacity:1; visibility:visible; transform:none}
.navdrop a{display:grid; gap:.05rem; padding:.5em .7em; border-radius:var(--radius); color:var(--text); font-size:.92rem; line-height:1.3}
.navdrop a:hover{background:var(--accent-wash); color:var(--accent)}
.navdrop a[aria-current="page"]{color:var(--mark)}
.navdrop .nd-sub{font-size:.71rem; color:var(--text-faint); letter-spacing:.02em; font-weight:400}
.navdrop .nd-warn{color:var(--mark); font-weight:700; margin-inline-start:.15em}
/* —— 组总览页:每大类一段,锚点避开吸顶导航 —— */
.grp-mod{scroll-margin-top:calc(var(--header-h) + 1rem); margin-block-start:2.4rem}
.grp-mod:first-of-type{margin-block-start:1rem}
.grp-blurb{max-width:var(--measure); color:var(--text-soft); font-size:.92rem; line-height:1.7; margin-block:.2rem 1rem}

/* 导航在窄屏折叠为抽屉 */
.iconbtn.nav-toggle{display:none}
@media (max-width:980px){
  .iconbtn.nav-toggle{display:inline-grid; place-items:center; inline-size:2.2em; block-size:2.2em; border-radius:var(--radius); color:var(--text-soft)}
  .nav-toggle:hover{background:var(--surface-2); color:var(--text)}
  .nav{
    position:fixed; inset:var(--header-h) 0 auto 0; flex-direction:column; align-items:stretch; gap:0;
    background:var(--bg); border-block-end:var(--rule) solid var(--line);
    padding:.5rem var(--gut) 1.2rem; box-shadow:var(--shadow);
    max-height:0; overflow:hidden; visibility:hidden; transition:max-height .3s var(--ease), visibility .3s;
  }
  .nav[data-open="true"]{max-height:85vh; visibility:visible; overflow:auto}
  .nav-feats,.nav-mods{flex-direction:column; align-items:stretch; gap:0; padding:0; border:none}
  .nav-feat,.nav-primary,.navgroup-btn{padding:.7em .55em; min-block-size:44px; border-block-end:var(--rule) solid var(--line-soft); width:100%; justify-content:flex-start}
  .nav-feats{border-block-end:2px solid var(--line)}
  .navgroup{position:static}
  .ng-caret{margin-inline-start:auto}
  .navdrop{position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:none; background:transparent;
    padding:.2rem 0 .4rem 1.1rem; min-inline-size:0; translate:0 0}
  .navdrop::before{display:none}
  .nav-primary.is-active::after{display:none}
}

/* 图标按钮(切换/搜索/导航) */
.iconbtn{
  display:inline-grid; place-items:center; inline-size:2.3em; block-size:2.3em;
  border-radius:var(--radius); color:var(--text-soft); font-size:1rem;
  border:var(--rule) solid transparent; transition:.2s;
}
.iconbtn:hover{background:var(--surface-2); color:var(--text); border-color:var(--line)}
/* 日/月 主题切换 */
.theme-toggle .glyph-dark,.theme-toggle .glyph-mid{display:none}
:root[data-theme="mid"] .theme-toggle .glyph-light{display:none}
:root[data-theme="mid"] .theme-toggle .glyph-mid{display:inline}
:root[data-theme="dark"] .theme-toggle .glyph-light{display:none}
:root[data-theme="dark"] .theme-toggle .glyph-mid{display:none}
:root[data-theme="dark"] .theme-toggle .glyph-dark{display:inline}

/* —————————————————— 页脚:牌记 colophon —————————————————— */
.site-footer{
  margin-block-start:3.5rem; border-block-start:var(--rule) solid var(--line);
  background:var(--bg-tint);
}
.colophon{
  display:grid; gap:1.4rem 1.8rem; padding-block:2.1rem 1.3rem; align-items:start;
  grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));
}
/* 站点简介更宽,AI 标注紧随其右 */
.colophon-mark{grid-column:span 1}
@media (min-width:780px){.colophon{grid-template-columns:1.6fr 1.4fr 1fr 1.2fr}}
.colophon-ai .ai-disclaimer{margin-block-start:.1rem; font-size:.88rem}
.colophon h4{
  font-size:.78rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--text-faint); font-weight:600; margin-block-end:.7rem;
}
.colophon a{color:var(--text-soft)} .colophon a:hover{color:var(--accent)}
.colophon ul{list-style:none; padding:0; display:grid; gap:.35rem; font-size:.92rem}
.colophon-mark{display:flex; gap:.7rem; align-items:flex-start}
.colophon-mark p{font-size:.88rem; color:var(--text-soft); line-height:1.7}
.colophon-mark p.ai-disclaimer{font-size:.82rem; color:var(--text-faint); line-height:1.7;
  border-inline-start:2px solid color-mix(in srgb, var(--mark) 42%, transparent); padding-inline-start:.7rem}
.ai-disclaimer b{color:var(--text-soft); font-weight:600}
.footer-rule{
  display:flex; align-items:center; gap:1rem; padding-block:1.3rem;
  border-block-start:var(--rule) solid var(--line-soft);
  font-size:.8rem; color:var(--text-faint); flex-wrap:wrap;
}
.footer-rule .dot{inline-size:4px; block-size:4px; border-radius:50%; background:var(--mark)}

/* —————————————————— 首页 hero —————————————————— */
.hero{padding-block:clamp(3rem,2rem + 6vw,6.5rem) 2.5rem; position:relative}
.hero-kicker{
  display:inline-flex; align-items:center; gap:.6rem; margin-block-end:1.4rem;
  font-size:.8rem; letter-spacing:.28em; text-transform:uppercase; color:var(--text-faint);
}
.hero-kicker .line{inline-size:2.4rem; block-size:var(--rule); background:var(--mark-line)}
.hero h1{font-size:clamp(2.4rem,1.6rem + 4.4vw,4.6rem); letter-spacing:.02em; margin-block-end:1.1rem}
.hero h1 .em{color:var(--mark)}
.hero-lede{font-size:clamp(1.05rem,1rem + .5vw,1.3rem); color:var(--text-soft); max-width:38rem; line-height:1.9}
.hero-stats{display:flex; gap:2.4rem; flex-wrap:wrap; margin-block-start:2.4rem}
.stat .n{font-size:2.1rem; font-weight:800; color:var(--accent); line-height:1; font-feature-settings:"tnum"}
.stat--chars .n{font-size:1.7rem}
.stat .l{font-size:.82rem; color:var(--text-faint); letter-spacing:.1em; margin-block-start:.4rem}

/* —————————————————— 卡片网格(模块/文章) —————————————————— */
.section-head{display:flex; align-items:baseline; gap:1rem; margin-block:3.2rem 1.4rem}
.section-head h2{white-space:nowrap}
.section-head .rule{flex:1; height:var(--rule); background:var(--line); translate:0 -.3rem}
.section-head .count{color:var(--text-faint); font-size:.86rem}

.card-grid{display:grid; gap:1.1rem; grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}
.card{
  position:relative; display:flex; flex-direction:column; gap:.55rem;
  padding:1.3rem 1.35rem 1.4rem; background:var(--surface);
  border:var(--rule) solid var(--line); border-radius:var(--radius-lg);
  transition:border-color .25s, transform .25s var(--ease), box-shadow .25s;
  overflow:hidden;
}
.card::before{
  content:""; position:absolute; inset-block:0; inset-inline-start:0; inline-size:3px;
  background:var(--mark); scale:1 0; transform-origin:bottom; transition:scale .28s var(--ease);
}
.card:hover{transform:translateY(-3px); border-color:var(--line); box-shadow:var(--shadow)}
.card:hover::before{scale:1 1; transform-origin:top}
.card-idx{font-size:.74rem; letter-spacing:.18em; color:var(--text-faint); font-feature-settings:"tnum"}
/* 黑体层最小化:仅「图标符号 / 制表数字 / 拉丁副标」用黑体 —— 宋体无这些字形,否则 fallback 到默认字体;其余一切文字一律宋体 */
.iconbtn,.nf-g,.ng-caret,.ft-caret,.cred-sig,.gate-glyph{font-family:var(--sans)}
/* 卷宗编号:由实心圆牌改为 #NN 文字标号(双位数更清晰、不再挤在圆里) */
.idx-n{font-family:var(--serif); font-weight:700; font-style:normal; color:var(--mark); letter-spacing:.01em; font-feature-settings:"tnum"}
.idx-n::before{content:"#"; font-weight:600; opacity:.5}
.card h3{font-size:1.16rem} .card h3 a{color:var(--text)} .card:hover h3 a{color:var(--mark)}
.card p{font-size:.9rem; color:var(--text-soft); line-height:1.7; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden}
.card-foot{margin-block-start:auto; padding-block-start:.7rem; display:flex; gap:.6rem; align-items:center; color:var(--text-faint); font-size:.78rem}

/* —————————————————— 徽章 / 标签 —————————————————— */
.badge{
  display:inline-flex; align-items:center; gap:.35em; font-size:.74rem; font-weight:600;
  letter-spacing:.04em; padding:.18em .6em; border-radius:99px; line-height:1.5;
  background:var(--accent-wash); color:var(--accent); border:var(--rule) solid transparent;
}
.badge.mark{background:var(--mark-wash); color:var(--mark)}
.tag{font-size:.78rem; color:var(--text-soft); background:var(--surface-2); padding:.15em .55em; border-radius:var(--radius)}

/* —————————————————— 文章页布局 + 目录 —————————————————— */
.doc{display:grid; gap:var(--gut); align-items:start; padding-block:2rem 1rem}
/* 仅当本页确有目录(.doc--with-toc)时才预留 15rem 侧栏;tags/timeline/browse 等无 TOC 页保持单列,
   修复「右侧 15rem 空白、内容挤左」的布局 bug。 */
@media (min-width:1040px){ .doc--with-toc{grid-template-columns:minmax(0,var(--measure)) 15rem; justify-content:center} }
.doc-main{min-width:0; max-width:var(--measure); margin-inline:auto; inline-size:100%}
.doc-head{margin-block-end:2rem; padding-block-end:1.5rem; border-block-end:var(--rule) solid var(--line)}
.doc-head .crumb{font-size:.82rem; color:var(--text-faint); margin-block-end:1rem; display:flex; gap:.5rem; flex-wrap:wrap}
.doc-head .crumb a{color:var(--text-soft)} .doc-head .crumb a:hover{color:var(--accent)}
.doc-head h1{margin-block-end:.9rem}
.doc-head .lede{color:var(--text-soft); font-size:1.05rem; line-height:1.8}
.doc-head .meta{display:flex; gap:1.1rem; flex-wrap:wrap; margin-block-start:1.1rem; font-size:.8rem; color:var(--text-faint)}

.toc{
  position:sticky; top:calc(var(--header-h) + 1.4rem); font-size:.86rem; align-self:start;
  max-block-size:calc(100vh - var(--header-h) - 2.8rem);
  max-block-size:calc(100dvh - var(--header-h) - 2.8rem);
  display:grid; grid-template-rows:auto minmax(0,1fr);
}
@media (max-width:1039px){.toc{display:none}}
.toc-title{font-size:.74rem; letter-spacing:.2em; text-transform:uppercase; color:var(--text-faint); margin-block-end:.8rem; font-weight:600}
.toc ol{
  list-style:none; padding:0 .3rem .4rem 0; margin:0; display:grid; gap:.1rem;
  border-inline-start:var(--rule) solid var(--line);
  overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable;
  scrollbar-width:thin; scrollbar-color:var(--line) transparent;
}
.toc ol::-webkit-scrollbar{inline-size:8px}
.toc ol::-webkit-scrollbar-track{background:transparent}
.toc ol::-webkit-scrollbar-thumb{background:var(--line); border-radius:999px}
.toc ol::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}
.toc li{margin:0}
.toc a{display:block; padding:.32em .9em; color:var(--text-soft); border-inline-start:2px solid transparent; margin-inline-start:-1px; line-height:1.45}
.toc a:hover{color:var(--text)}
.toc a.lvl-3{padding-inline-start:1.7em; font-size:.95em}
.toc a[data-active="true"]{color:var(--mark); border-inline-start-color:var(--mark)}

/* —————————————————— 上一篇/下一篇 —————————————————— */
.pager{display:grid; gap:1rem; grid-template-columns:1fr 1fr; margin-block-start:3.5rem}
@media (max-width:560px){.pager{grid-template-columns:1fr}}
.pager a{
  display:flex; flex-direction:column; gap:.3rem; padding:1.1rem 1.2rem;
  border:var(--rule) solid var(--line); border-radius:var(--radius-lg);
  color:var(--text); transition:border-color .2s, background-color .2s;
}
.pager a:hover{background:var(--surface); border-color:var(--accent-soft)}
.pager .dir{font-size:.74rem; letter-spacing:.14em; color:var(--text-faint); text-transform:uppercase}
.pager .t{font-weight:600} .pager a:hover .t{color:var(--accent)}
.pager .next{text-align:end; grid-column:2} @media (max-width:560px){.pager .next{grid-column:1}}
.pager .prev{border-inline-start:3px solid var(--accent-soft)} .pager .next{border-inline-end:3px solid var(--accent-soft)} .pager .dir{color:var(--accent-soft)}

/* —————————————————— 返回顶部 + 阅读进度 —————————————————— */
.progress{position:fixed; inset-block-start:0; inset-inline:0; block-size:2px; z-index:60; background:transparent}
.progress > i{display:block; block-size:100%; inline-size:var(--p,0%); background:var(--mark); transition:width .1s linear}

/* —————————————————— 站内检索浮层 —————————————————— */
.search-overlay{
  position:fixed; inset:0; z-index:100; padding:14vh 1rem 1rem;
  background:color-mix(in srgb, var(--bg) 55%, transparent);
  backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); display:flex; justify-content:center;
}
.search-overlay[hidden]{display:none}
.search-panel{
  inline-size:min(40rem,100%); max-block-size:72vh; display:flex; flex-direction:column;
  background:var(--surface); border:var(--rule) solid var(--line); border-radius:var(--radius-lg);
  box-shadow:var(--shadow); overflow:hidden; animation:pop .22s var(--ease);
}
@keyframes pop{from{transform:translateY(-8px); opacity:0}to{transform:none; opacity:1}}
.search-input{
  font:inherit; font-size:1.1rem; padding:1.05rem 1.3rem; border:none; outline:none;
  background:transparent; color:var(--text); border-block-end:var(--rule) solid var(--line);
}
.search-results{overflow:auto; padding:.4rem}
.search-results a{display:grid; gap:.15rem; padding:.7rem .9rem; border-radius:var(--radius); color:var(--text)}
.search-results a:hover{background:var(--accent-wash)}
.sr-mod{font-size:.72rem; letter-spacing:.1em; color:var(--mark); text-transform:uppercase}
.sr-title{font-weight:600}
.sr-desc{font-size:.84rem; color:var(--text-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.search-hint{padding:.6rem 1.3rem; font-size:.76rem; border-block-start:var(--rule) solid var(--line-soft)}

/* —————————————————— 四维标签 chip —————————————————— */
.fchips{display:flex; flex-wrap:wrap; gap:.4rem; margin-block-start:1rem}
.fchip{
  display:inline-flex; align-items:center; gap:.3em; font-size:.76rem; line-height:1.45;
  padding:.2em .62em; border-radius:99px; border:1px solid transparent; cursor:pointer;
  background:transparent; transition:background-color .18s, color .18s, border-color .18s; white-space:nowrap;
}
.fchip .fk{font-size:.82em; opacity:.55; margin-inline-end:.05em}
.fchip .fn{font-size:.8em; opacity:.55; font-feature-settings:"tnum"; margin-inline-start:.1em}
.fchip.f-mark{color:var(--mark); border-color:var(--mark-line)}
.fchip.f-accent{color:var(--accent); border-color:var(--accent-wash)}
.fchip.f-mark:hover{background:var(--mark-wash)}
.fchip.f-accent:hover{background:var(--accent-wash)}
.fchip.is-on{color:var(--bg)}
.fchip.f-mark.is-on{background:var(--mark); border-color:var(--mark)}
.fchip.f-accent.is-on{background:var(--accent); border-color:var(--accent)}
.fchip.is-on .fk,.fchip.is-on .fn{opacity:.8}

/* —————————————————— 标签检索页 —————————————————— */
.tagfilter{margin-block-start:1.4rem}
.facet-group{margin-block:1.5rem}
.facet-group h3{font-size:1.02rem; display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap}
.facet-group h3 .muted{font-size:.76rem; font-weight:400; letter-spacing:.02em}
.facet-chips{display:flex; flex-wrap:wrap; gap:.45rem; margin-block-start:.7rem}
.facet-chips .fchip{font-size:.82rem; padding:.3em .72em}
.tf-bar{
  display:flex; align-items:center; gap:1rem; margin-block:1.8rem .4rem;
  padding-block-start:1rem; border-block-start:var(--rule) solid var(--line);
}
.tf-count{color:var(--text-soft); font-size:.9rem; font-feature-settings:"tnum"}
.tf-clear{font-size:.82rem; color:var(--accent); border:1px solid var(--accent-wash); padding:.26em .85em; border-radius:99px; margin-inline-start:auto}
.tf-clear:hover{background:var(--accent-wash)}
.tf-results{display:grid; gap:.7rem; margin-block-start:.9rem}
.tf-result{
  display:block; padding:.95rem 1.15rem; border:var(--rule) solid var(--line); border-radius:var(--radius-lg);
  background:var(--surface); transition:transform .2s var(--ease), border-color .2s, box-shadow .2s; color:var(--text);
}
.tf-result:hover{border-color:var(--accent-soft); transform:translateY(-2px); box-shadow:var(--shadow)}
.tf-result .tr-mod{font-size:.72rem; letter-spacing:.1em; color:var(--mark); text-transform:uppercase}
.tf-result h4{font-size:1.06rem; margin-block:.2rem; color:var(--text)}
.tf-result:hover h4{color:var(--accent)}
.tf-result p{font-size:.86rem; color:var(--text-soft); line-height:1.6}
.tf-empty{color:var(--text-faint); padding:1.4rem 0; font-size:.92rem}

/* —————————————————— 时间线 —————————————————— */
.timeline{list-style:none; padding:0; margin-block-start:1.5rem}
.tl-era{font-weight:800; color:var(--mark); font-size:1.06rem; letter-spacing:.06em; margin-block:1.9rem .7rem}
.tl-item{display:grid; grid-template-columns:3.2rem 1fr; gap:1rem; align-items:start}
.tl-year{text-align:end; font-weight:800; color:var(--accent); font-feature-settings:"tnum"; font-size:.92rem; padding-block-start:.18rem}
.tl-body{border-inline-start:2px solid var(--line); padding:.1rem 0 1.1rem 1.35rem; position:relative}
.tl-body::before{content:""; position:absolute; inset-inline-start:-6px; inset-block-start:.5rem; inline-size:11px; block-size:11px; border-radius:50%; background:var(--bg); border:3px solid var(--mark)}
.tl-body p{line-height:1.72}
.tl-body p a{color:var(--text); text-decoration:underline; text-decoration-color:var(--accent-wash); text-underline-offset:.2em}
.tl-body p a:hover{text-decoration-color:var(--accent); color:var(--accent)}
.tl-body .fchip{margin-block-start:.45rem}
@media(max-width:520px){
  .tl-item{grid-template-columns:2.4rem 1fr; gap:.7rem}
  .tl-year{font-size:.82rem}
}

/* ═══════════════ 改版:门户首页 ═══════════════ */
.home-hero{padding-block:clamp(2.4rem,1.8rem+3vw,3.8rem) .6rem}
/* ① 编者按条 */
.editor-note{
  margin-block:2rem 0; padding:1.1rem 1.4rem; border-radius:var(--radius-lg);
  background:var(--surface); border:var(--rule) solid var(--line);
  border-inline-start:3px solid var(--accent-soft);
}
.editor-note p{font-size:.94rem; color:var(--text-soft); line-height:1.85}
.editor-note b{color:var(--text); font-weight:600}
.editor-note .warn-ink{background:var(--hazard); color:var(--hazard-ink); padding:.08em .5em; border-radius:4px; font-family:var(--sans); font-weight:600}
.editor-note a{color:var(--accent); white-space:nowrap}
/* 精选「从这里开始」:精选卡统一为普通方卡(头条不再占整行——整行横卡是 hkuniwild 门户专用格式) */
.card .card-idx.mark{color:var(--mark)}
/* 专题研究卡(/analysis-*):同构卡的轻变体——强调色浅底 + 左侧标线常亮,置于精选网格首位 */
.card.feat-analysis{background:var(--mark-wash); border-color:var(--mark-line)}
.card.feat-analysis::before{scale:1 1}
.card.feat-analysis h3{color:var(--mark)}
/* ③ 换一种方式逛 */
.entryways{display:grid; gap:.9rem; margin-block:.4rem}
.entry-row{display:grid; grid-template-columns:4.2rem 1fr; gap:.8rem; align-items:start}
.entry-k{font-size:.82rem; color:var(--text-faint); font-weight:600; letter-spacing:.1em; padding-block-start:.3rem}
.entry-row .fchips{margin:0}
/* ④ 全部卷宗:5 扇门 */
.gates{display:grid; gap:1.6rem}
.gate-head{font-size:1.1rem; display:flex; align-items:center; gap:.5rem; margin-block-end:.9rem;
  padding-block-end:.5rem; border-block-end:var(--rule) solid var(--line)}
.gate-glyph{color:var(--mark); font-size:1.1em}
.gate-cards{display:grid; gap:1.1rem; grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr))}
.gate-hero .gate-head{color:var(--mark); font-size:1.25rem}
.gate-hero .gate-head::after{content:"本馆重心"; font-size:.62rem; letter-spacing:.18em; color:var(--text-faint); margin-inline-start:auto; font-weight:400}
.gate-lite .gate-head{color:var(--text-soft); font-size:.98rem}
.modlinks{display:flex; flex-wrap:wrap; gap:.5rem}
.modlink{display:inline-flex; align-items:baseline; gap:.4em; padding:.4em .8em; border-radius:99px;
  background:var(--surface-2); color:var(--text-soft); font-size:.9rem; border:var(--rule) solid transparent; transition:.2s}
.modlink:hover{color:var(--text); border-color:var(--line)}
.modlink .ml-n{font-size:.74em; color:var(--text-faint); font-feature-settings:"tnum"}
details.gate-warn{border:var(--rule) solid var(--mark-line); border-radius:var(--radius-lg); padding:0; background:var(--mark-wash)}
details.gate-warn > summary{cursor:pointer; list-style:none; padding:1rem 1.3rem; font-weight:800; color:var(--mark);
  display:flex; align-items:center; gap:.5rem; flex-wrap:wrap}
details.gate-warn > summary::-webkit-details-marker{display:none}
details.gate-warn > summary::after{content:"▾"; margin-inline-start:auto; transition:transform .2s}
details.gate-warn[open] > summary::after{transform:rotate(180deg)}
details.gate-warn .gate-sub{font-size:.74rem; font-weight:400; color:var(--text-faint); letter-spacing:0}
/* 可信度档标签(视觉层)+ 野史组内低可信折叠子块(IA 方案 C) */
.card-idx .tier{margin-inline-start:.5em; padding:.04em .5em; border-radius:99px; font-size:.92em; letter-spacing:.02em; font-weight:600}
.tier-mid{background:var(--accent-wash); color:var(--accent)}
.tier-warn{background:var(--hazard); color:var(--hazard-ink)}
.gate-warnsub{margin-block-start:1.1rem; border:var(--rule) solid var(--hazard); border-radius:var(--radius-lg); background:color-mix(in srgb, var(--hazard) 9%, transparent)}
.gate-warnsub > summary{cursor:pointer; list-style:none; padding:.7rem 1rem; font-weight:600; font-family:var(--sans); color:var(--hazard-ink); background:var(--hazard); border-radius:var(--radius-lg) var(--radius-lg) 0 0; display:flex; align-items:center; gap:.5em}
.gate-warnsub:not([open]) > summary{border-radius:var(--radius-lg)}
.gate-warnsub > summary::-webkit-details-marker{display:none}
.gate-warnsub > summary::after{content:"▾"; margin-inline-start:auto; transition:transform .2s}
.gate-warnsub[open] > summary::after{transform:rotate(180deg)}
.gate-warnsub > summary .gate-sub{font-size:.72rem; font-weight:400; color:var(--hazard-ink); opacity:.8; margin-inline-start:0}
.gate-warnsub .gate-cards{padding:1rem}
details.gate-warn .gate-cards{padding:0 1.3rem 1.3rem}
details.gate-warn{border-color:var(--hazard)}
details.gate-warn > summary{background:var(--hazard); color:var(--hazard-ink)}
details.gate-warn > summary .gate-sub{color:var(--hazard-ink)}
details.gate-warn > summary::after{color:var(--hazard-ink)}
/* ⑤ 工具台 */
.toolshelf{display:flex; flex-wrap:wrap; gap:.6rem}
.toollink{padding:.45em .9em; border-radius:var(--radius); background:var(--bg-tint); border:var(--rule) solid var(--line-soft);
  color:var(--text-soft); font-size:.88rem; transition:.2s}
.toollink:hover{color:var(--accent); border-color:var(--accent-wash); background:var(--accent-wash)}

/* ═══════════════ 改版:文章页(提要 / 来源 / 横向发现 / 可信度) ═══════════════ */
/* 提要盒(summary) */
.lede-card{margin-block:1.4rem; padding:1.1rem 1.3rem; background:var(--surface); border:var(--rule) solid var(--line);
  border-inline-start:3px solid var(--mark); border-radius:var(--radius-lg)}
.lede-card .lede-label{font-size:.72rem; letter-spacing:.2em; font-weight:800; color:var(--mark); text-transform:uppercase; margin-block-end:.4rem}
.lede-card p:last-child{font-size:1.02rem; color:var(--text-soft); line-height:1.85; margin:0}
/* 结构化来源块 */
.src-card{margin-block:2.6rem 1rem; padding:1.3rem 1.4rem; background:color-mix(in srgb,var(--surface-2) 45%,transparent);
  border:var(--rule) solid var(--line-soft); border-radius:var(--radius-lg); border-inline-start:3px solid var(--line); font-size:.9rem}
.src-card .src-head{font-size:.78rem; letter-spacing:.14em; text-transform:uppercase; color:var(--text-faint); font-weight:600; border:none; padding:0; margin-block-end:.8rem}
.src-card .src-head::before{content:none}
.src-lone{color:var(--mark); letter-spacing:0; text-transform:none; font-size:.92em}
.src-card ul{list-style:none; padding:0; display:grid; gap:.5rem}
.src-card li{display:flex; gap:.55rem; align-items:baseline; line-height:1.5}
.src-card a{color:var(--accent-soft); word-break:break-word}
.src-type{font-size:.7rem; font-weight:700; padding:.1em .5em; border-radius:99px; white-space:nowrap; flex:0 0 auto}
.st-strong{color:var(--accent); background:var(--accent-wash)}
.st-mid{color:var(--text-soft); background:var(--surface-2)}
.st-weak{color:var(--mark); background:var(--mark-wash)}
/* 文末横向发现 */
.related{margin-block-start:3rem}
.rel-grid{display:grid; gap:.9rem; grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr))}
.rel-card{display:flex; flex-direction:column; gap:.35rem; padding:1rem 1.1rem; background:var(--surface);
  border:var(--rule) solid var(--line); border-radius:var(--radius-lg); color:var(--text); transition:.2s}
.rel-card:hover{border-color:var(--accent-soft); transform:translateY(-2px); box-shadow:var(--shadow)}
.rel-mod{font-size:.7rem; letter-spacing:.08em; color:var(--mark); text-transform:uppercase}
.rel-t{font-weight:600; line-height:1.4} .rel-card:hover .rel-t{color:var(--accent)}
.rel-d{font-size:.8rem; color:var(--text-soft); line-height:1.5}
/* 可信度徽章 */
.cred-badge{display:inline-flex; align-items:center; gap:.3em; font-size:.74rem; font-weight:700; letter-spacing:.02em;
  padding:.16em .62em; border-radius:99px; border:var(--rule) solid transparent; line-height:1.5}
.cred-sig{font-weight:800}
.cred-ok{color:var(--accent); background:var(--accent-wash); border-color:var(--accent-wash)}
.cred-mid{color:var(--text-soft); background:var(--surface-2); border-color:var(--line)}
.cred-lore{color:var(--mark); background:var(--mark-wash); border-color:var(--mark-line)}
.cred-warn{color:var(--mark); background:var(--mark-wash); border-color:var(--mark-line)}
.cred-defs{display:grid; gap:.7rem; margin-block-start:1.4rem}
.cred-row{display:grid; grid-template-columns:7.5rem 1fr; gap:1rem; align-items:start; padding:.7rem .2rem; border-block-end:var(--rule) solid var(--line-soft); scroll-margin-top:5rem}
.cred-row p{font-size:.92rem; color:var(--text-soft); margin:0}

/* ═══════════════ 改版:浏览检索 /browse(卡片视图)═══════════════ */
.browse{padding-block:2rem 1rem}
.browse-body{display:grid; gap:var(--gut); align-items:start; margin-block-start:1.6rem}
@media (min-width:900px){.browse-body{grid-template-columns:16rem minmax(0,1fr)}}
.browse-facets{position:sticky; top:calc(var(--header-h) + 1rem)}
/* 桌面:标签过多时侧栏自身可滚动,不被截断 */
@media (min-width:900px){
  .browse-facets{max-block-size:calc(100dvh - var(--header-h) - 2rem); overflow-y:auto; overscroll-behavior:contain;
    scrollbar-width:thin; scrollbar-color:var(--line) transparent; padding-inline-end:.35rem}
  .browse-facets::-webkit-scrollbar{inline-size:8px}
  .browse-facets::-webkit-scrollbar-thumb{background:var(--line); border-radius:999px}
}
.browse-facets .facet-group{margin-block:0 1.25rem}
.browse-results .tf-results{display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr)); gap:.8rem; margin-block-start:.2rem}
.tl-meta{font-size:.74rem; color:var(--text-faint); margin-inline-start:.2rem}
.tl-item.tl-auto .tl-body::before{border-color:var(--accent-soft)}
/* 实体目录 / 聚合页 */
.ent-group{margin-block:0 1.6rem}
.ent-gh{font-size:1rem; color:var(--mark); margin-block-end:.7rem; padding-block-end:.4rem; border-block-end:var(--rule) solid var(--line-soft)}
.ent-chips,.entities-index .ent-chips{display:flex; flex-wrap:wrap; gap:.5rem}
.ent-chip{display:inline-flex; align-items:baseline; gap:.5em; padding:.55em 1.1em; border-radius:99px;
  background:var(--surface); border:var(--rule) solid var(--line); color:var(--text); font-size:1.06rem; transition:.2s}
.ent-chip:hover{border-color:var(--mark-line); color:var(--mark); transform:translateY(-1px)}
.ent-chip .ent-n{font-size:.68em; color:var(--text-faint); font-feature-settings:"tnum"}
/* 重点实体(关联篇目最多者):加粗高亮 */
.ent-chip--key{border-color:var(--mark-line); background:var(--mark-wash)}
.ent-chip--key .ent-name{font-weight:700; color:var(--mark)}
.ent-see{color:var(--accent); font-size:.82rem}

/* ═══════════════ 改版:阅读工具(浮动:字号 A−/A+ + 回到顶部)═══════════════ */
.read-tools{position:fixed; inset-block-end:1.3rem; inset-inline-end:1.3rem; z-index:40; display:flex; flex-direction:column; gap:.4rem}
.rt-btn{inline-size:2.5rem; block-size:2.5rem; border-radius:50%; background:var(--surface); color:var(--text-soft);
  border:var(--rule) solid var(--line); box-shadow:var(--shadow); font-size:.92rem; font-weight:600;
  display:grid; place-items:center; transition:color .2s, border-color .2s, background-color .2s}
.rt-btn:hover{color:var(--mark); border-color:var(--mark-line); background:var(--surface-2)}
.rt-top{font-size:1.05rem; opacity:0; transform:translateY(12px) scale(.85); pointer-events:none;
  transition:opacity .28s var(--ease), transform .28s var(--ease), color .2s, border-color .2s, background-color .2s}
.rt-top.is-on{opacity:1; transform:none; pointer-events:auto}
.rt-top:hover{transform:translateY(-2px)}
.rt-top .rt-ic{display:block; width:1.1em; height:1.1em}
@media (prefers-reduced-motion:reduce){.rt-top{transition:opacity .2s} .rt-top:hover{transform:none}}
@media print{.read-tools{display:none}}
@media (max-width:560px){.read-tools{inset-block-end:1rem; inset-inline-end:1rem} .rt-btn{inline-size:2.3rem; block-size:2.3rem}}

/* ═══════════════ 改版:pull quote(挂边大字引语,写作时用 :::pull)═══════════════ */
.prose .callout.is-pull{background:none; border:none; border-inline-start:none; padding:.4em 0; margin-block:1.8em}
.prose .callout.is-pull .callout-label{display:none}
.prose .callout.is-pull p{font-size:clamp(1.2rem,1.05rem+.7vw,1.55rem); line-height:1.5; color:var(--mark);
  font-weight:600; text-wrap:balance; border-inline-start:3px solid var(--mark-line); padding-inline-start:1rem}
@media (min-width:1100px){
  .prose .callout.is-pull{inline-size:min(20rem,42%); float:inline-end; margin-inline-start:2rem; margin-block:.4em}
  .prose .callout.is-pull p{border-inline-start:none; padding-inline-start:0; border-block-start:2px solid var(--mark-line); padding-block-start:.6rem}
}

/* ═══════════════ 改版:实体配图 + 移动端密度修正 ═══════════════ */
.ent-id{display:flex; gap:1.4rem; align-items:flex-start}
.ent-id-text{min-width:0}
.ent-id-text h1{margin-block:0 .2rem}
.ent-note{color:var(--text-soft); font-size:.98rem; line-height:1.75; margin-block-start:.7rem}
.ent-portrait{flex:0 0 auto; margin:0; inline-size:7.5rem}
.ent-portrait img{inline-size:7.5rem; block-size:9.6rem; object-fit:cover; border-radius:var(--radius-lg);
  border:var(--rule) solid var(--line); background:var(--surface-2); display:block}
.ent-portrait figcaption{font-size:.64rem; color:var(--text-faint); text-align:center; margin-block-start:.3rem; letter-spacing:.02em}
@media (max-width:560px){
  .ent-id{gap:1rem}
  .ent-portrait,.ent-portrait img{inline-size:5.5rem}
  .ent-portrait img{block-size:7rem}
}

/* —— 移动端:新组件的密度修正(首页统计带/入口chip/门/浏览侧栏)—— */
@media (max-width:640px){
  .hero-stats{gap:1.1rem 1.6rem; margin-block-start:1.6rem}
  .stat .n{font-size:1.6rem}
  .stat .l{font-size:.74rem}
  .editor-note{padding:.95rem 1.1rem}
  .editor-note p{font-size:.9rem; line-height:1.8}
  .entry-row{grid-template-columns:1fr; gap:.4rem}
  .entry-k{padding-block-start:0}
  .gate-cards{gap:.8rem}
  .browse-tabs{width:100%; justify-content:space-between}
  .browse-facets .facet-group{margin-block-end:1rem}
  .section-head{margin-block:2.4rem 1.1rem}
  .fchips{gap:.35rem}
  .fchip{padding:.18em .55em}
}
/* —— 移动端:四维筛选侧栏折叠为可展开(节省首屏高度,避免长尾标签墙)—— */
.facets-toggle{display:none}
@media (max-width:899px){
  .browse-facets{position:static; background:var(--surface); border:var(--rule) solid var(--line); border-radius:var(--radius-lg); padding:0}
  .facets-toggle{display:flex; align-items:center; gap:.5rem; inline-size:100%; padding:.75rem .95rem; color:var(--text); font-weight:600; font-size:.95rem}
  .facets-toggle .muted{font-weight:400; font-size:.78rem}
  .facets-toggle .ft-caret{margin-inline-start:auto; color:var(--text-faint); transition:transform .2s}
  .browse-facets.is-open .facets-toggle .ft-caret{transform:rotate(180deg)}
  .facets-inner{display:none; padding:0 .95rem .7rem}
  .browse-facets.is-open .facets-inner{display:block}
}

/* —————————————————— 页脚:友站 sister sites —————————————————— */
.footer-sib{
  display:flex; align-items:center; gap:.6rem 1rem; flex-wrap:wrap;
  padding-block:1.15rem; border-block-start:var(--rule) solid var(--line-soft);
}
.footer-sib .sib-label{
  flex:0 0 auto; font-size:.78rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--text-faint); font-weight:600;
}
.sib-links{display:flex; flex-wrap:wrap; gap:.5rem}
.sib-chip{
  display:inline-flex; align-items:center; gap:.42rem;
  padding:.3rem .68rem .3rem .4rem; border-radius:999px;
  border:var(--rule) solid var(--line); background:var(--surface);
  color:var(--text-soft); text-decoration:none; font-size:.86rem; line-height:1;
  transition:color .18s, border-color .18s, transform .18s;
}
.sib-chip:hover,.sib-chip:focus-visible{
  color:var(--accent); border-color:color-mix(in srgb, var(--accent) 45%, var(--line));
  transform:translateY(-1px);
}
.sib-chip img{
  inline-size:1.15rem; block-size:1.15rem; border-radius:5px;
  object-fit:cover; flex:0 0 auto; display:block;
}
@media (max-width:560px){
  .footer-sib{flex-direction:column; align-items:flex-start; gap:.6rem}
}

/* —————————————————— 排名 hub:香港五校横向对比互链 —————————————————— */
.xrank{margin-block:2.6rem 0; padding-block-start:1.7rem; border-block-start:var(--rule) solid var(--line)}
.xrank h2{font-size:1.08rem; margin:0 0 .35rem}
.xrank > p{color:var(--text-soft); font-size:.9rem; margin:0 0 1rem}
.xrank-row{display:flex; flex-wrap:wrap; gap:.7rem}
.xrank-chip{display:inline-flex; flex-direction:column; gap:.12rem; padding:.6rem .95rem;
  border:var(--rule) solid var(--line); border-radius:var(--radius); background:var(--surface);
  text-decoration:none; transition:border-color .18s, transform .18s}
.xrank-chip:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line)); transform:translateY(-1px)}
.xrank-chip b{font-size:1rem; color:var(--text); font-weight:600}
.xrank-chip span{font-size:.78rem; color:var(--text-faint)}

/* —————————————————— 排名 hub:速览 + 香港五校对比表 + 学科 + FAQ —————————————————— */
.rankhub{margin-block:2.6rem 0; padding-block-start:1.7rem; border-block-start:var(--rule) solid var(--line)}
.rankhub > h2{font-size:1.2rem; margin:0 0 1rem}
.rk-quick{display:flex; flex-wrap:wrap; gap:.8rem; margin-block-end:1.3rem}
.rk-stat{flex:1 1 14rem; border:var(--rule) solid var(--line); border-radius:var(--radius); background:var(--surface); padding:.8rem .95rem}
.rk-stat .rk-k{display:block; font-size:.78rem; color:var(--text-faint); letter-spacing:.04em}
.rk-stat .rk-v{display:inline-block; font-size:1.5rem; font-weight:700; color:var(--accent); margin-block:.2rem .1rem}
.rk-src{font-size:.74rem; color:var(--text-faint); text-decoration:none; margin-inline-start:.5rem; border-block-end:1px dotted currentColor}
.rk-src:hover{color:var(--accent)}
.rk-table{margin:0 0 1.4rem}
.rk-table figcaption{font-size:.84rem; color:var(--text-soft); margin-block-end:.5rem; font-weight:600}
.rk-table table{width:100%; border-collapse:collapse; font-size:.95rem}
.rk-table th,.rk-table td{text-align:left; padding:.5rem .6rem; border-block-end:var(--rule) solid var(--line-soft)}
.rk-table thead th{font-size:.8rem; color:var(--text-faint); font-weight:600; letter-spacing:.04em}
.rk-table tbody td:nth-child(n+2){font-variant-numeric:tabular-nums; font-weight:600}
.rk-table tr.is-self{background:color-mix(in srgb, var(--accent) 8%, transparent)}
.rk-table tr.is-self td{border-color:color-mix(in srgb, var(--accent) 30%, var(--line))}
.rk-table a{color:var(--accent); text-decoration:none}
.rk-table a:hover{text-decoration:underline}
.rk-note{font-size:.8rem; color:var(--text-faint); margin-block-start:.6rem}
.rk-subj{margin-block-end:1.4rem}
.rk-subj h3,.rk-faq h3{font-size:1rem; margin:0 0 .6rem}
.rk-subj ul{list-style:none; padding:0; margin:0; display:grid; gap:.4rem}
.rk-subj li{display:flex; align-items:baseline; gap:.6rem; font-size:.92rem}
.rk-subj li b{color:var(--accent); font-variant-numeric:tabular-nums; white-space:nowrap}
.rk-subj li span{flex:1 1 auto}
.rk-faq .rk-q{border:var(--rule) solid var(--line); border-radius:var(--radius); padding:.55rem .85rem; margin-block-end:.5rem; background:var(--surface)}
.rk-faq .rk-q summary{cursor:pointer; font-weight:600; font-size:.92rem}
.rk-faq .rk-q p{margin:.5rem 0 0; color:var(--text-soft); font-size:.9rem; line-height:1.7}

/* 具名编辑署名(排名 / 方法论页) */
.byline{font-size:.84rem; color:var(--text-faint); margin:.4rem 0 0}
.rankhub .byline{margin:-.4rem 0 1rem}
.byline a{color:var(--text-soft); text-decoration:none; border-block-end:1px dotted currentColor}
.byline a:hover{color:var(--accent)}

/* ============================================================
   prose.css — Markdown 正文渲染(.prose)
   特色:标题朱印记、朱丝栏表格、callout 特殊标识、脚注
   ============================================================ */

.prose{font-size:1.02rem; line-height:1.8}
.prose > * + *{margin-block-start:1.15em}
.prose > h2 + *,.prose > h3 + *{margin-block-start:.7em}

/* 段落首行可选缩进(中文阅读) — 通过 body class 控制,默认不缩进保证清晰 */

/* —— 标题:朱印记 —— */
.prose h2,.prose h3,.prose h4{position:relative; scroll-margin-top:calc(var(--header-h) + 1.2rem); clear:both}
.prose h2{
  margin-block-start:2.6em; padding-block-end:.4em; font-size:1.6rem;
  border-block-end:var(--rule) solid var(--line);
}
.prose h2::before{
  content:""; position:absolute; inset-inline-start:-.92em; inset-block-start:.16em;
  inline-size:.34em; block-size:1.05em; background:var(--mark); border-radius:1px;
  transition:inline-size .24s var(--ease), inset-inline-start .24s var(--ease);
}
/* 悬停:左侧实色条从右往左微伸约 10%(右缘不动,仅左缘外扩);取代旧的悬停浮出 # 锚点。仅真悬停设备 */
@media (hover:hover){ .prose h2:hover::before{ inline-size:.375em; inset-inline-start:-.955em; } }
.prose h3{margin-block-start:2em; font-size:1.28rem; color:var(--text)}
.prose h3::before{
  content:"—"; color:var(--mark); font-weight:800; margin-inline-end:.5em; opacity:.85;
}
.prose h4{margin-block-start:1.6em; font-size:1.08rem; color:var(--text-soft)}

/* 标题锚点:不再悬停浮出 #(观感不佳)——改由左侧实色条悬停横向延展提示。
   保留 anchor 为「覆盖实色条区域的隐形点击热区」,点它仍可复制/跳转该节链接。 */
.prose .anchor{
  position:absolute; inset-inline-start:-1.15em; inset-block-start:0;
  inline-size:1.3em; block-size:1.5em; opacity:0; overflow:hidden; text-indent:-999em;
  text-decoration:none;
}
@media (max-width:720px){.prose .anchor{display:none}}

/* —— 链接 —— */
.prose a{
  color:var(--accent); text-decoration:underline;
  text-decoration-color:var(--accent-wash); text-underline-offset:.22em;
  text-decoration-thickness:1.5px; transition:text-decoration-color .2s, color .2s;
}
.prose a:hover{text-decoration-color:var(--accent)}
.prose a[href^="http"]::after{content:"↗"; font-size:.72em; margin-inline-start:.15em; color:var(--text-faint); vertical-align:.1em}
.prose a.is-unpublished{color:var(--text-faint); text-decoration:none; cursor:default; border-block-end:1px dotted var(--line)}
.prose a.is-unpublished::after{content:"·未公开"; font-size:.76em; color:var(--text-faint); margin-inline-start:.15em}

/* —— 行内引注 cite:@[词](url | #锚点) —— */
.prose a.cite{
  color:inherit; text-decoration:underline; text-decoration-style:dotted;
  text-decoration-color:var(--mark-line); text-decoration-thickness:1px; text-underline-offset:.2em;
  transition:text-decoration-color .2s, color .2s;
}
.prose a.cite:hover{color:var(--mark); text-decoration-color:var(--mark)}
.prose a.cite::after{content:none}                 /* 用 ※ 取代外链的 ↗ */
.prose a.cite .cite-mark{font-size:.66em; color:var(--mark); font-weight:700; vertical-align:.36em; margin-inline-start:.04em; text-decoration:none}
/* 点引注跳到文末来源锚点时,目标短暂高亮(配合 html{scroll-behavior:smooth} 平滑滚动)*/
.prose :target{animation:cite-flash 2.2s ease}
@keyframes cite-flash{0%,50%{background:var(--mark-wash)}100%{background:transparent}}

/* —— 列表 —— */
.prose ul,.prose ol{padding-inline-start:1.5em}
.prose li{margin-block:.35em} .prose li::marker{color:var(--mark-soft)}
.prose ol li::marker{color:var(--accent); font-weight:600}
.prose li > ul,.prose li > ol{margin-block-start:.35em}

/* —— 强调 —— */
.prose strong{color:var(--text); font-weight:600; text-underline-offset:2px} /* 正文粗体=Medium(W18) */
.prose mark{background:var(--mark-wash); color:inherit; padding:.05em .2em; border-radius:2px}

/* —— 引用 / lede 摘要 —— */
.prose blockquote{
  margin-inline:0; padding:.2em 0 .2em 1.4em; color:var(--text-soft);
  border-inline-start:3px solid var(--mark-line); font-style:normal;
}
.prose blockquote p{margin-block:.5em}
/* 文首摘要(生成器把首个 blockquote 标记为 .lede) */
.prose .lede{
  border-inline-start:none; padding:1.2em 1.4em; background:var(--surface);
  border-radius:var(--radius-lg); color:var(--text-soft); font-size:1.02em;
  border:var(--rule) solid var(--line); position:relative;
}

/* —— 表格(朱丝栏)—— */
.prose .table-wrap{overflow-x:auto; margin-block:1.4em; border:var(--rule) solid var(--line); border-radius:var(--radius-lg);
  scrollbar-width:thin; scrollbar-color:var(--line) transparent; overscroll-behavior-inline:contain}
.prose table{border-collapse:collapse; inline-size:100%; font-size:.92rem; line-height:1.6}
.prose th,.prose td{padding:.6em .85em; text-align:start; vertical-align:top; border-block-end:var(--rule) solid var(--line-soft)}
.prose thead th{
  background:var(--bg-tint); color:var(--text); font-weight:600; white-space:nowrap;
  border-block-end:1.5px solid var(--mark-line); position:sticky; top:0; z-index:2;
}
.prose tbody tr:nth-child(even){background:color-mix(in srgb,var(--surface-2) 50%, transparent)}
.prose tbody tr:hover{background:var(--accent-wash)}
.prose td:first-child{color:var(--text); font-weight:600}
/* 横向滚动时:首列(行标题)粘住,始终可见;不透明底覆盖滚过的内容 + 细线分隔 */
.prose th:first-child,.prose td:first-child{position:sticky; inset-inline-start:0}
.prose tbody td:first-child{background:var(--surface); box-shadow:1px 0 0 0 var(--line-soft)}
.prose tbody tr:nth-child(even) td:first-child{background:color-mix(in srgb,var(--surface-2) 55%, var(--surface))}
.prose tbody tr:hover td:first-child{background:color-mix(in srgb,var(--accent) 14%, var(--surface))}
.prose thead th:first-child{z-index:3; box-shadow:1px 0 0 0 var(--mark-line)}

/* —— 宽元素越界:大屏(≥1200px)下,表格挣脱阅读宽度变宽;正文文字仍保持 measure 以利阅读 —— */
@media (min-width:75rem){
  .doc-main{max-inline-size:var(--measure-wide)}
  /* doc-main 内除正文外的块(标题/提要/来源/相关/翻页)与正文文字都收在 measure 内,左对齐 */
  .doc-main > :not(.prose){max-inline-size:var(--measure)}
  .prose > :not(.table-wrap):not(.callout.is-pull):not(hr){max-inline-size:var(--measure)}
  /* 表格越界:按内容自然宽度伸展,上限到 doc-main 全宽(--measure-wide),仍过宽才横向滚动 */
  .prose > .table-wrap{max-inline-size:100%; inline-size:max-content; min-inline-size:var(--measure)}
}

/* —— 代码块 —— */
.prose pre{
  background:var(--bg-tint); border:var(--rule) solid var(--line);
  border-radius:var(--radius-lg); padding:1em 1.2em; overflow-x:auto;
  font-size:.86rem; line-height:1.6;
}
.prose pre code{background:none; border:none; padding:0; font-size:inherit}

/* —— 图片 —— */
.prose img{border-radius:var(--radius-lg); border:var(--rule) solid var(--line); margin-inline:auto}
.prose figure{margin-block:1.6em} .prose figcaption{text-align:center; font-size:.84rem; color:var(--text-faint); margin-block-start:.6em}

/* —— 分隔线 —— */
.prose hr{margin-block:2.4rem; block-size:var(--rule); inline-size:3.5rem; margin-inline:auto; background:var(--line); border:none}
.prose hr::before{content:none}

/* ———————————— callout 特殊标识(:::note / :::key / :::warn / :::lore / :::source)———————————— */
.callout{
  --c:var(--accent); --cw:var(--accent-wash);
  margin-block:1.5em; padding:1em 1.2em 1em 1.15em; border-radius:var(--radius-lg);
  background:var(--cw); border:var(--rule) solid transparent;
  border-inline-start:3px solid var(--c); position:relative;
}
.callout > *{margin-block:.4em} .callout > :first-child{margin-block-start:0} .callout > :last-child{margin-block-end:0}
.callout .callout-label{
  display:flex; align-items:center; gap:.5em; font-weight:800; color:var(--c);
  font-size:.86rem; letter-spacing:.06em; margin-block-end:.5em;
}
.callout .callout-label .sigil{font-size:1em}
.callout.is-key{--c:var(--mark); --cw:var(--mark-wash)}
.callout.is-warn{--c:var(--mark); --cw:var(--mark-wash)}  /* P1-3:原 hsl(cinnabar-h 70% 50%) 绿/青系标签对比不足;改用已补偿的 --mark(过 4.5) */
.callout.is-lore{--c:var(--accent-soft); --cw:var(--accent-wash)}
.callout.is-source{--c:var(--text-faint); --cw:color-mix(in srgb,var(--surface-2) 60%,transparent); font-size:.9em}
.callout.is-source a{color:var(--accent)}

/* —— 脚注 —— */
.prose .footnotes{margin-block-start:3rem; padding-block-start:1.5rem; border-block-start:var(--rule) solid var(--line); font-size:.9rem; color:var(--text-soft)}
.prose .footnotes ol{padding-inline-start:1.2em}
.prose .footnote-ref a{text-decoration:none; color:var(--mark); font-weight:600; padding-inline:.1em}

/* —— 来源区块(文末「## 来源」自动柔化)—— */
.prose .sources-block{
  font-size:.88rem; color:var(--text-soft); margin-block-start:3rem;
  padding:1.4em 1.5em 1.2em; background:color-mix(in srgb,var(--surface-2) 45%,transparent);
  border:var(--rule) solid var(--line-soft); border-radius:var(--radius-lg);
  border-inline-start:3px solid var(--line);
}
.prose .sources-block > h2{
  margin-block-start:0; border:none; padding:0; font-size:.82rem; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--text-faint);
}
.prose .sources-block > h2::before{
  content:none; position:static; inline-size:auto; block-size:auto; background:none;
  color:var(--mark-line); margin-inline-end:.5em; border-radius:0;
}
.prose .sources-block > h3{font-size:1rem; color:var(--text-soft); margin-block-start:1.4em}
.prose .sources-block > h3::before{opacity:.6}
.prose .sources-block ul{padding-inline-start:1.2em}
.prose .sources-block li{margin-block:.2em; line-height:1.6}
.prose .sources-block li::marker{color:var(--line)}
.prose .sources-block a{word-break:break-all; color:var(--accent-soft)}

/* —— 首字下沉(野史文章首段)—— */
.prose.dropcap > p:first-of-type::first-letter{
  font-size:3.1em; font-weight:800; float:inline-start; line-height:.82;
  margin-inline-end:.12em; margin-block-start:.06em; color:var(--mark);
}

/* ———————————— 野史(模块13)版面签名 ———————————— */
/* 标题下的「青↔朱」细线 —— 呼应「争斗」二色 */
.is-lore .doc-head h1{position:relative}
.is-lore .doc-head h1::after{
  content:""; display:block; inline-size:3.4em; block-size:3px; margin-block-start:.6rem;
  background:linear-gradient(90deg, var(--mark) 0 42%, var(--accent)); border-radius:2px; opacity:.9;
}
/* 野史正文的引用收紧为「编按/旁注」体感:柔底 + 青线,区别于一手引文 */
.is-lore .prose blockquote:not(.lede){
  background:color-mix(in srgb, var(--accent) 5%, transparent);
  border-inline-start-color:var(--accent-soft); border-radius:0 var(--radius) var(--radius) 0;
  padding:.55em 1.1em .55em 1.3em;
}
/* 野史里 :::lore 野史·传说 callout 更具「轶闻」气质 */
.is-lore .callout.is-lore{ font-style:italic; }
.is-lore .callout.is-lore .callout-label{ font-style:normal; letter-spacing:.1em; }

/* ============================================================
   print.css — 打印 / 导出 PDF 友好
   目标:按 Print 时得到「暖纸背景 + 梦源宋体 + 三色标注 + 合适排版」的
        漂亮 PDF,便于分享野史。隐藏导航等屏幕外壳,保留内容与记忆点。
   ============================================================ */
@media print {
  /* —— 强制亮色暖纸调(无论屏幕处于深/浅色),让 PDF 落在暖纸上 —— */
  :root,
  :root[data-theme="dark"],
  :root[data-theme="light"] {
    color-scheme: light;
    --paper-s: 30%; --azure-s: 54%; --cinnabar-s: 64%;
    --bg:        hsl(var(--paper-h) calc(var(--paper-s) + 8%) 96.5%);
    --bg-tint:   hsl(var(--paper-h) calc(var(--paper-s) + 6%) 93%);
    --surface:   hsl(var(--paper-h) var(--paper-s) 97.5%);
    --surface-2: hsl(var(--paper-h) calc(var(--paper-s) - 4%) 91%);
    --line:      hsl(var(--paper-h) calc(var(--paper-s) - 10%) 78%);
    --line-soft: hsl(var(--paper-h) calc(var(--paper-s) - 12%) 85%);
    --text:      hsl(var(--paper-h) calc(var(--paper-s) - 6%) 14%);
    --text-soft: hsl(var(--paper-h) calc(var(--paper-s) - 12%) 34%);
    --text-faint:hsl(var(--paper-h) calc(var(--paper-s) - 16%) 48%);
    --accent:      hsl(var(--azure-h) var(--azure-s) 32%);
    --accent-soft: hsl(var(--azure-h) calc(var(--azure-s) - 16%) 44%);
    --accent-wash: hsl(var(--azure-h) var(--azure-s) 35% / .08);
    --mark:      hsl(var(--cinnabar-h) var(--cinnabar-s) 45%);
    --mark-soft: hsl(var(--cinnabar-h) calc(var(--cinnabar-s) - 10%) 54%);
    --mark-wash: hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .10);
    --mark-line: hsl(var(--cinnabar-h) var(--cinnabar-s) 47% / .26);
  }

  /* —— 强制打印背景色(否则浏览器默认丢弃底色与 callout 底纹) —— */
  *, *::before, *::after {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  @page {
    margin: 16mm 15mm 17mm;
  }

  html { background: var(--bg); font-size: 11pt; }
  body {
    background: var(--bg); color: var(--text);
    font-size: 11pt; line-height: 1.7;
  }

  /* —— 隐藏屏幕外壳 —— */
  .site-header, .site-footer, .progress, .toc, .pager, .nav, .nav-toggle,
  .theme-toggle, .iconbtn, .search-overlay, [data-open-search],
  .doc-head .crumb, .visually-hidden, .hero-stats { display: none !important; }

  main { margin: 0 !important; }
  .wrap, .doc, .doc-main {
    max-width: none !important; width: auto !important;
    margin: 0 !important; padding: 0 !important; display: block !important;
  }
  .doc { gap: 0 !important; }

  /* —— 暖纸朱丝栏:保留记忆点底纹(整页淡格) —— */
  body::before {
    position: fixed; inset: 0; z-index: -1; opacity: .4;
    mask: none !important; -webkit-mask: none !important;
  }

  /* —— 标题与正文 —— */
  .doc-head { border-block-end:1px solid var(--line); }
  .doc-head h1 { font-size: 1.9rem; }
  .doc-head .meta { color: var(--text-faint); }
  .prose { font-size: 11pt; line-height: 1.72; }
  h1, h2, h3, h4 { break-after: avoid-page; }
  .prose h2, .prose h3, .prose h4 { break-after: avoid-page; }
  p, li { orphans: 2; widows: 2; }

  /* —— 块级元素避免被切断 —— */
  .callout, .table-wrap, table, figure, blockquote, pre, .lede,
  .prose img, tr { break-inside: avoid; }

  /* —— 链接:正文保留色不展开;来源区显示 URL 便于离线引用 —— */
  .prose a { color: var(--accent); text-decoration: underline; }
  .prose a[href^="http"]::after { content: ""; }
  .sources-block a[href^="http"]::after {
    content: " ‹" attr(href) "›"; font-size: .8em; color: var(--text-faint); word-break: break-all;
  }

  /* —— 文末牌记(每篇 PDF 收尾的署名) —— */
  .prose::after {
    content: "凡述必溯源,仅供学习研究,引用请核对原始来源";
    display: block; margin-block-start: 2.4rem; padding-block-start: .8rem;
    border-block-start: 1px solid var(--line);
    font-size: .78rem; color: var(--text-faint); text-align: center;
  }

  /* 首页/模块页打印时也清爽呈现 */
  .hero { padding-block: 1rem 1.4rem !important; }
  .card { break-inside: avoid; box-shadow: none !important; }
}

/* i18n:语言层字体栈与切换器(build.mjs 注入,随移植走) */
html[lang="zh-Hant"]{--serif:"Noto Serif TC","Noto Serif CJK TC",serif}
html[lang="zh-Hant"] body{font-weight:450} /* 繁体正文 −50:450(需 TC 载 450 face)*/
html[lang="en"]{--serif:"Noto Serif","Noto Serif SC","Noto Serif CJK SC",Georgia,"Times New Roman",serif}
.lang-switch{display:inline-flex;align-items:center;gap:.1em;margin-inline:.15rem}
.lang-switch .lang-opt{font-size:.78rem;padding:.28em .5em;border-radius:.35em;color:var(--ink-soft,inherit);text-decoration:none;line-height:1}
.lang-switch .lang-opt:hover{background:color-mix(in oklab,currentColor 12%,transparent)}
.lang-switch .lang-opt.is-cur{color:var(--mark);font-weight:700}


/* ============ 专题页(mod)覆盖层:左侧大纲、宽版图表、旧组件按主站令牌重绘 ============ */
.mod-strip{border-block-end:var(--rule) solid var(--line); background:color-mix(in srgb,var(--mark-wash) 60%,var(--bg)); font-size:.86rem; color:var(--text-soft)}
.mod-strip .wrap{display:flex; flex-wrap:wrap; align-items:center; gap:.35rem .6rem; padding-block:.5rem}
.mod-strip .mod-tag{font-size:.72rem; letter-spacing:.16em; font-weight:800; color:var(--mark); border:1px solid var(--mark-line); border-radius:99px; padding:.12em .6em}
.mod-strip a{color:var(--accent); font-weight:600; white-space:nowrap} .mod-strip .sep{color:var(--text-faint)}
@media (max-width:640px){.mod-strip .mod-txt{display:none}}
.mod-note{margin-block:1.2rem 0}
@media (min-width:1040px){
  .doc--with-toc{grid-template-columns:15rem minmax(0,var(--measure-wide)); justify-content:center}
  .doc--with-toc > .toc{order:-1}
}
.doc-main{max-width:var(--measure-wide)}
@media (min-width:75rem){
  .doc-main > :not(.prose){max-inline-size:var(--measure-wide)}
  .prose > .ch > p,.prose > .ch > ul,.prose > .ch > ol,.prose > .ch > blockquote,.prose > .ch > .callout,.prose > .ch > .frag > p,.prose > .ch > .frag > ul,.prose > .ch > .frag > ol,.prose > .ch > .frag > .callout,.prose > .ch > .frag > blockquote,.prose > .ch > .frag > dl,.prose > .ch > .frag > details{max-inline-size:var(--measure)}
}
.toc ol{max-block-size:calc(100dvh - var(--header-h) - 6rem)}
.toc a.lvl-2{font-weight:600; color:var(--text); margin-block-start:.35rem}
.toc a.lvl-3{padding-inline-start:1.5em; font-size:.92em}
.toc-m{display:none; margin-block:1rem 0; border:var(--rule) solid var(--line); border-radius:var(--radius-lg); background:var(--surface); padding:.6rem .9rem; font-size:.9rem}
.toc-m summary{cursor:pointer; font-weight:600; color:var(--text)}
.toc-m ol{list-style:none; padding:.4rem 0 0; margin:0; display:grid; gap:.15rem}
.toc-m a{color:var(--text-soft); display:block; padding:.15em 0} .toc-m a.lvl-3{padding-inline-start:1.3em; font-size:.92em}
@media (max-width:1039px){.toc-m{display:block}}
.hero-stats--doc{gap:1.2rem 2rem; margin-block-start:1.6rem}
.stat--sm .n{font-size:1.35rem; color:var(--accent)} .stat--sm .l{font-size:.74rem; letter-spacing:.04em; max-width:15rem; line-height:1.5}
.doc-head .lede{margin:0}
/* 章节 */
.prose section.ch{margin-block-start:3.4rem; padding-block-start:.2rem}
.prose section.ch > * + *,.prose .frag > * + *,.prose .rcard > * + *,.prose .abs-card > * + *{margin-block-start:1.15em}
.prose section.ch > h2 + *,.prose section.ch > h3 + *,.prose .frag > h3 + *,.prose .frag > h4 + *{margin-block-start:.7em}
.prose h2.sech{margin-block-start:0}
.kicker{display:block; font-size:.72rem; letter-spacing:.28em; text-transform:uppercase; color:var(--text-faint); font-weight:600; margin-block-end:.3rem}
.secsub{color:var(--text-soft); font-size:.98rem; line-height:1.75; margin-block-start:.3em}
.prose h3.subh .hn{display:inline-grid; place-items:center; inline-size:1.5em; block-size:1.5em; border-radius:var(--radius); background:var(--mark-wash); color:var(--mark); font-size:.78em; margin-inline-end:.45em; vertical-align:.1em}
.prose h3.subh::before{content:none}
.frag h3::before{content:"—"}
/* 卡片 */
.rcard,.abs-card,.thcard,.gcard,.ev,.fw{background:var(--surface); border:var(--rule) solid var(--line); border-radius:var(--radius-lg); padding:1.2rem 1.35rem; min-width:0}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:1rem} .grid3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:1rem}
.grid2>*,.grid3>*{min-width:0} @media (max-width:920px){.grid2,.grid3{grid-template-columns:1fr}}
.abs-lead{font-size:1.12rem; line-height:1.95} .abs-lead b{color:var(--mark)}
.big-fact{display:grid; grid-template-columns:repeat(3,1fr); gap:.9rem; margin-block:1.2rem}
.big-fact .bf{background:var(--bg-tint); border:var(--rule) solid var(--line); border-radius:var(--radius-lg); padding:1rem 1rem .9rem; text-align:center}
.big-fact .bf b{display:block; font-size:1.7rem; font-weight:800; color:var(--accent); line-height:1.15; font-feature-settings:"tnum"}
.big-fact .bf.g b{color:var(--mark)} .big-fact .bf.r b{color:#b8573f}
.big-fact .bf span{font-size:.8rem; color:var(--text-soft); line-height:1.55; display:block; margin-block-start:.35rem}
@media (max-width:760px){.big-fact{grid-template-columns:1fr}}
/* 图表卡 */
.prose figure.chart-card{margin-block:1.4em; background:var(--surface); border:var(--rule) solid var(--line); border-radius:var(--radius-lg); padding:1.1rem 1.2rem .7rem; color:var(--text)}
.chart-card h4{margin:0; font-size:1rem; color:var(--text)}
.figno{display:inline-block; font-size:.7rem; font-weight:800; letter-spacing:.12em; color:var(--mark); background:var(--mark-wash); border-radius:var(--radius); padding:.1em .5em; margin-inline-end:.5em; vertical-align:.12em; font-family:var(--sans)}
.chart-card .note{font-size:.8rem; color:var(--text-faint); margin-block:.4rem .6rem}
.chart-card svg{width:100%; height:auto; display:block; margin-block-start:.2rem; font-family:var(--sans)}
.lchips{display:flex; flex-wrap:wrap; gap:.3rem .9rem; margin-block:.45rem .1rem; font-size:.76rem; color:var(--text-soft)}
.lch{display:inline-flex; align-items:center; gap:.4em; white-space:nowrap} .lch i{display:inline-block; width:11px; height:11px; border-radius:2px; flex:none}
.read{border-block-start:1px dashed var(--line); margin-block-start:.6rem; padding:.6rem .1rem .2rem; font-size:.88rem; line-height:1.8; color:var(--text-soft)}
.read p{margin:.25em 0}
.rtag{display:inline-block; font-size:.68rem; letter-spacing:.14em; margin-inline-end:.5em; font-weight:800; font-family:var(--sans); padding:.05em .45em; border-radius:var(--radius); vertical-align:.1em}
.rtag.t1{color:var(--accent); background:var(--accent-wash)} .rtag.t2{color:var(--mark); background:var(--mark-wash)} .rtag.t3{color:#b8573f; background:color-mix(in srgb,#b8573f 12%,transparent)}
.ev .rtag{color:var(--text-soft); background:var(--surface-2); letter-spacing:.06em}
a.figref{color:var(--accent); text-decoration:none; border-block-end:1px dotted var(--accent-soft); white-space:nowrap}
a.figref:hover{color:var(--mark); border-color:var(--mark)}
/* 表格:数值右对齐 */
.prose .table-wrap table.tbl{font-size:.86rem}
.prose .table-wrap td.num,.prose .table-wrap th.num{text-align:end; font-feature-settings:"tnum"; white-space:nowrap}
.prose .table-wrap td:first-child.num{text-align:start}
.prose .table-wrap td.txt,.prose .table-wrap th.txt{min-inline-size:11rem}
.prose .table-wrap td:first-child{white-space:nowrap}
/* 政策时间线 */
.tl{position:relative; margin-block:1.4rem; padding-inline-start:1.7rem}
.tl::before{content:""; position:absolute; inset-inline-start:.45rem; inset-block:.4rem; width:2px; background:var(--line)}
.ev{position:relative; margin-block-end:1rem}
.ev::before{content:""; position:absolute; inset-inline-start:-1.55rem; inset-block-start:1.35rem; width:.7rem; height:.7rem; border-radius:50%; background:var(--mark); box-shadow:0 0 0 3px var(--bg)}
.ev .yr{font-size:.8rem; font-weight:700; color:var(--accent); font-feature-settings:"tnum"}
.ev h4{margin:.3rem 0 .2rem; font-size:1.05rem; color:var(--text)} .ev p{font-size:.92rem; color:var(--text-soft); margin:0}
.ev .data{margin-block-start:.6rem; font-size:.84rem; background:var(--bg-tint); border-radius:var(--radius); padding:.45rem .7rem; color:var(--text-soft)} .ev .data b{color:#b8573f}
.ev .pd{margin-block-start:.45rem; font-size:.88rem; line-height:1.8; color:var(--text-soft)}
.ev .pd b{display:inline-block; font-size:.66rem; letter-spacing:.16em; margin-inline-end:.45em; font-weight:800; font-family:var(--sans)}
.ev .pd.b1 b{color:var(--accent)} .ev .pd.b2 b{color:var(--mark)} .ev .pd.b3 b{color:#b8573f}
.ev .chan{position:absolute; inset-inline-end:.9rem; inset-block-start:.9rem; font-size:.66rem; letter-spacing:.12em; padding:.15em .6em; border-radius:99px; font-family:var(--sans)}
.chan.c1{background:var(--mark-wash); color:var(--mark)} .chan.c2{background:color-mix(in srgb,#b8573f 12%,transparent); color:#b8573f} .chan.c3{background:var(--accent-wash); color:var(--accent)}
@media (max-width:560px){.ev .chan{position:static; display:inline-block; margin-block-end:.3rem}}
.fw svg{width:100%; height:auto; display:block}
/* 结论 / 理论 / 全球卡 */
ol.conc{list-style:none; counter-reset:cc; padding:0; margin-block:1rem}
ol.conc li{counter-increment:cc; position:relative; padding:.95rem 1.1rem .95rem 3.4rem; background:var(--surface); border:var(--rule) solid var(--line); border-radius:var(--radius-lg); margin-block-end:.7rem; font-size:.95rem; line-height:1.85}
ol.conc li::before{content:counter(cc); position:absolute; inset-inline-start:1rem; inset-block-start:.95rem; width:1.7rem; height:1.7rem; border-radius:50%; background:var(--mark); color:var(--bg); display:grid; place-items:center; font-weight:800; font-size:.9rem}
ol.conc li b{color:var(--mark)}
.thcard h4,.gcard h4{margin:0 0 .15rem; font-size:1.02rem; color:var(--text)}
.thcard .en,.gcard .flag{display:block; font-size:.72rem; letter-spacing:.06em; color:var(--text-faint); margin-block-end:.5rem; font-family:var(--sans)}
.thcard p,.gcard p{font-size:.9rem; line-height:1.85; color:var(--text-soft); margin:0}
.thcard .bib{font-size:.76rem; color:var(--text-faint); border-block-start:1px dashed var(--line); margin-block-start:.6rem; padding-block-start:.45rem}
.fitrow{display:flex; gap:.4rem; margin-block-start:.6rem; flex-wrap:wrap}
.fit{font-size:.7rem; border-radius:99px; padding:.15em .65em; line-height:1.5; font-family:var(--sans)}
.fit.y{background:var(--mark-wash); color:var(--mark)} .fit.n{background:color-mix(in srgb,#b8573f 12%,transparent); color:#b8573f} .fit.h{background:var(--accent-wash); color:var(--accent)}
.gcard .kn{margin-block-start:.6rem; font-size:.84rem; background:var(--bg-tint); border-radius:var(--radius); padding:.5rem .75rem; line-height:1.7; color:var(--text-soft)} .gcard .kn b{color:var(--accent)}
.trend{display:inline-block; font-size:.68rem; border-radius:99px; padding:.1em .6em; margin-inline-start:.5em; vertical-align:.15em; font-family:var(--sans)}
.trend.up{background:var(--mark-wash); color:var(--mark)} .trend.dn{background:color-mix(in srgb,#b8573f 12%,transparent); color:#b8573f} .trend.fl{background:var(--surface-2); color:var(--text-soft)}
ul.dl{list-style:none; padding:0; font-size:.9rem} ul.dl li{padding:.45rem 0; border-block-end:1px dashed var(--line)} ul.dl code{font-size:.82em}
.src{font-size:.78rem; color:var(--text-faint); word-break:break-all}
.frag dl{display:grid; grid-template-columns:minmax(7rem,auto) 1fr; gap:.45rem 1.2rem; font-size:.94rem}
.frag dt{font-weight:600; color:var(--text)} .frag dd{margin:0; color:var(--text-soft); line-height:1.75}
@media (max-width:560px){.frag dl{grid-template-columns:1fr} .frag dd{margin-block-end:.6rem}}
.frag details{border:var(--rule) solid var(--line); border-radius:var(--radius-lg); background:var(--surface); padding:.55rem .9rem}
.frag details + details{margin-block-start:.5rem}
.frag summary{cursor:pointer; font-weight:600; color:var(--text); line-height:1.6}
.frag details[open] summary{margin-block-end:.4rem; color:var(--mark)}
.frag details p{margin-block:.4em; font-size:.94rem}
.prose .frag h4{color:var(--text)}
.src-card{margin-block-start:2rem}
@media print{.mod-strip,.toc-m,.read-tools{display:none!important}}


/* ================= 分章版新增(v5 · 2026-09-09) ================= */
.prose .table-wrap.is-long{max-block-size:min(70vh,620px); overflow-y:auto}
.prose .table-wrap.is-long thead th{position:sticky; inset-block-start:0; background:var(--bg-tint); z-index:2}
.prose .read-paths{font-size:.92rem}
.lede-card ul.ch-brief{margin:.2em 0 0; padding-inline-start:1.15em}
.lede-card ul.ch-brief li{margin-block:.35em; line-height:1.75}
.chgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(17rem,1fr)); gap:.85rem;
  margin-block:1.5em; max-inline-size:var(--measure-wide)}
.chcard{display:block; text-decoration:none; color:inherit; background:var(--surface);
  border:var(--rule) solid var(--line); border-radius:var(--radius-lg); padding:.85rem 1rem;
  transition:border-color .18s var(--ease), transform .18s var(--ease)}
.chcard:hover,.chcard:focus-visible{border-color:var(--text-soft); transform:translateY(-2px)}
.chcard .chn{display:block; font-size:.74rem; letter-spacing:.07em; color:var(--text-soft)}
.chcard .cht{display:block; font-weight:700; line-height:1.45; margin-block:.3em .4em}
.chcard .chd{display:block; font-size:.85rem; color:var(--text-soft); line-height:1.65}
.chcard .chm{display:block; margin-block-start:.6em; font-size:.76rem; color:var(--text-soft);
  font-feature-settings:"tnum"; opacity:.85}
.prose .ch-back{margin-block:1.4em; font-size:.92rem}
.prose .fig-jump{margin:.6em 0 0; font-size:.86rem}
.prose .fig-jump a{font-weight:600}
@media (max-width:560px){.chgrid{grid-template-columns:1fr}}
