/* ============================================================================
   fonts.css — 全场唯一的字体来源
   ----------------------------------------------------------------------------
   ⚠ 所有页面都必须 <link> 这一个文件，不要再在页面里内联 @font-face 或 .kaiti。
      在此之前，12 个 HTML 各内联一份，结果 P4-P5 / P6 / P10 / P16 漏改，
      一直带着「Kaiti SC + 字重 900 = 合成粗体」的老 bug 没人发现。

   用法：
     <link rel="stylesheet" href="styles/fonts.css">   （页面在根目录）
     标题类元素加 class="kaiti"，或直接用 var(--font-kai)

   ── 两个字体，两件事 ────────────────────────────────────────────────

   1) 中文 —— 霞鹜文楷（LXGW WenKai），已内嵌，离线可用、跨平台安全。
      它只有 Light / Regular / Medium，**没有 Bold**。
      所以用「字重区间」把 500–1000 全部映射到真实的 Medium 字形：
      页面里写 font-weight:900 也会命中真实字形，不会触发合成粗体。
      Medium 就是它最重的真实字重 —— 想让标题更有分量，靠字号和颜色，别靠字重。

   2) 拉丁 —— 单独钉住，这是关键。
      霞鹜文楷自带一套「手写衬线」拉丁字形。如果让它接管英文，
      "Agent" / "Case" / "Check List" 就全变成衬线体。
      但只是把无衬线排到前面还不够：中文最重才 Medium(500)，
      而标题写 900 —— 拉丁字体真按 900 渲染（Avenir Next Heavy），
      英文就比中文粗一大截，看着又肉又突兀。

      修法：给拉丁单开一个 face —— unicode-range 只覆盖拉丁，
      并声明 font-weight:1 1000。浏览器认为这一款「覆盖所有字重」，
      于是既不合成粗体、也不会去选 Heavy，永远用这一款 Medium，
      和中文的视觉重量正好配平。中文字符不在 unicode-range 里，
      自动落回霞鹜文楷 —— 字体回退是逐字符的。

   子集：GB2312 全字集 + 拉丁 + 常用标点，共 7544 字，两个字重各约 1.5MB。
        重新生成见 tools/subset-fonts.sh
   许可：SIL OFL 1.1，见 assets/fonts/OFL.txt（不要删）。
   ========================================================================== */

/* ---- 拉丁：钉死在 Medium ---------------------------------------------- */
@font-face{
  font-family:"Kai Latin";
  src:local("Avenir Next Medium"), local("AvenirNext-Medium"),
      local("HelveticaNeue-Medium"), local("Helvetica Neue");
  font-weight:1 1000;          /* 任何字重都用这一款 → 不合成、不选 Heavy */
  font-style:normal;
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+2000-206F,
                U+2074, U+20A0-20BF, U+2122, U+2190-21FF, U+2212;
}

/* ---- 中文：霞鹜文楷 --------------------------------------------------- */
@font-face{
  font-family:"LXGW WenKai";
  src:url("../assets/fonts/LXGWWenKai-Regular.woff2") format("woff2");
  font-weight:1 499;
  font-style:normal;
  font-display:block;
}
@font-face{
  font-family:"LXGW WenKai";
  src:url("../assets/fonts/LXGWWenKai-Medium.woff2") format("woff2");
  font-weight:500 1000;        /* 覆盖 900/950，避免合成粗体 */
  font-style:normal;
  font-display:block;
}

:root{
  /* 标题 / 卡片标题 / 胶囊句 */
  --font-kai:"Kai Latin","LXGW WenKai","Kaiti SC","STKaiti",sans-serif;
  /* 正文 / 小字 / 口径 */
  --font-sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;
  /* 代码 / 文件名 / 终端 / SQL —— 所有等宽场景只认这一个 */
  --font-mono:"SF Mono","JetBrains Mono","Menlo","Consolas",monospace;
}

.kaiti{font-family:var(--font-kai)}
.mono{font-family:var(--font-mono)}
