/* ============================================================================
   文枢 · 字体系统（唯一来源，2026-10-04）
   ----------------------------------------------------------------------------
   为什么内置字体：
     项目是 Swiss Grid，规范要求 Helvetica 那一脉的 grotesque。但实测本机
     **没有** Helvetica Neue / Inter，拉丁字母与数字实际是用「微软雅黑」渲染的
     （同字号宽度 527.9px 与雅黑完全一致）—— 分发到别人机器更是各家不同。
     于是把 Inter（拉丁/数字）与 JetBrains Mono（DOI/代码/数字）以 woff2 随包分发；
     中日韩字形仍走系统字（PingFang SC / 微软雅黑 / Noto Sans SC，体积太大不内置）。
     两款字体均为 SIL OFL-1.1，允许随产品分发，许可全文见 assets/fonts/OFL-*.txt。

   统一管理口径（改字体只改这一个文件）：
     · 字体族     --font-sans / --font-mono（拉丁内置 + 中日韩系统回退）
     · 字号阶梯   --fs-3xs … --fs-6xl（12 档）+ 语义别名 --fs-body-* / --fs-title-* / --fs-display-*
     · 行高       --lh-flat / --lh-tight / --lh-snug / --lh-body / --lh-loose
     · 字重       --fw-regular(400) / --fw-bold(700) —— 规范只允许这两档
     · 字距       --ls-tight / --ls-none / --ls-wide / --ls-wider
     · 数字       .tnum 走 tabular-nums（表格/计数/日期对齐用）
   ============================================================================ */

@font-face {
  font-family: 'Inter LH';
  src: url('assets/fonts/inter-latin-400-normal.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter LH';
  src: url('assets/fonts/inter-latin-700-normal.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'JetBrains Mono LH';
  src: url('assets/fonts/jetbrains-mono-latin-400-normal.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'JetBrains Mono LH';
  src: url('assets/fonts/jetbrains-mono-latin-700-normal.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
    U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* ---- 字体族 ---- */
  --font-sans: 'Inter LH', 'Helvetica Neue', 'Neue Haas Grotesk', Inter, -apple-system, 'Segoe UI',
    'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', 'Source Han Sans SC', sans-serif;
  --font-mono: 'JetBrains Mono LH', 'JetBrains Mono', 'SF Mono', Menlo, Consolas, 'Cascadia Mono', monospace;

  /* ---- 字号阶梯(12 档) ---- */
  --fs-3xs: 9px;
  --fs-2xs: 10px;
  --fs-xs: 11px;
  --fs-sm: 12px;
  --fs-md: 13px;
  --fs-lg: 14px;
  --fs-xl: 16px;
  --fs-2xl: 18px;
  --fs-3xl: 24px;
  --fs-4xl: 32px;
  --fs-5xl: 48px;
  --fs-6xl: 64px;

  /* ---- 语义别名(沿用既有命名,新代码优先用语义名) ---- */
  --fs-body-sm: var(--fs-2xs);    /* 小标签/角标 */
  --fs-body-md: var(--fs-sm);     /* 正文 */
  --fs-body-lg: var(--fs-lg);     /* 大正文 */
  --fs-title-md: var(--fs-lg);
  --fs-title-lg: var(--fs-2xl);
  --fs-display-sm: var(--fs-3xl);
  --fs-display-md: var(--fs-4xl);
  --fs-display-lg: var(--fs-5xl);
  --fs-display-xl: var(--fs-6xl);

  /* ---- 行高 ---- */
  --lh-flat: 1;
  --lh-tight: 1.25;
  --lh-snug: 1.45;
  --lh-body: 1.62;
  --lh-loose: 1.72;

  /* ---- 字重(规范只允许这两档) ---- */
  --fw-regular: 400;
  --fw-bold: 700;

  /* ---- 字距 ---- */
  --ls-tight: -0.015em;
  --ls-none: 0;
  --ls-wide: 0.05em;
  --ls-wider: 0.1em;
}

html {
  /* 拉丁走内置 Inter,中日韩按平台回退;整页只此一套 */
  font-family: var(--font-sans);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-synthesis-weight: none;   /* 没有 700 时不要伪加粗 */
}

/* 数字对齐:计数、日期、体量、指标一律等宽数字 */
.tnum,
.meta-date,
.tab-count,
.export-size,
.hits-number,
.metric-value,
.status-value {
  font-variant-numeric: tabular-nums;
}
