/* =============================================================================
 * fonts.css —— 本地字体
 * =============================================================================
 * 这里取代的是原来每个 HTML 头里那两行 fonts.googleapis.com：
 *
 *   <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=…">
 *
 * 原来那两行不只是"下载字体"，它还**定义了两个类**：`.material-symbols-outlined`
 * 的 font-family 就在 Google 那份 CSS 里。所以这一份不是把 @font-face 抄过来
 * 就完事 —— app.css 负责图标的 variation settings，字体名得由这里补上。
 * 漏了那一条，八个屏的图标会全部渲染成字面文字（"receipt_long" 直接显示成
 * 一串字母），而且不会有任何报错。
 *
 * 产物由 tools/fonts-build.mjs 生成，规则和取舍都在那个脚本的注释里。
 * 要改字体，改脚本再重跑，不要手改这里的二进制。
 *
 * 体积（全部本地，运行时零外网请求）：
 *   noto-sans-sc-400/500      185.8 + 188.1 KB   正文中文，只含应用源码里的 1281 个字符
 *   jetbrains-mono-400/500     17.5 +  18.1 KB   金额数字
 *   material-symbols-outlined      287.6 KB      图标，67 个连字
 * ========================================================================== */

/* --- 正文中文 ------------------------------------------------------------
 * 只有 400 与 500 两档：全站 38 处 font-medium(500)，其余一律 400，
 * 没有任何一处用到 700。第三档打进来就是每次加载都白付的 190KB。
 *
 * 字重写死成单个值而不是 `400 500` 区间，是因为产物已经是两个静态实例，
 * 不是一条可变轴 —— 浏览器按字重精确选面，选不到才合成。
 *
 * 字体里没有的字（用户在备注里手打的生僻字）逐字回落到 tailwind.config.js
 * 里那一串后备（PingFang SC → sans-serif）。这是选"只打应用自身的字"时
 * 就认下的代价，写在 README 的偏离表里。 */
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/noto-sans-sc-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/noto-sans-sc-500.woff2') format('woff2');
}

/* --- 金额等宽 ------------------------------------------------------------
 * `.tnum` 与 font-mono 系字号用。同样只有 400 / 500。 */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/jetbrains-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/jetbrains-mono-500.woff2') format('woff2');
}

/* --- 图标 ----------------------------------------------------------------
 * font-display 用 block 不用 swap：图标字体用 swap 会先亮出一串字面文字
 * （"edit_note"）再换成图形，闪得比空白刺眼得多。本地加载没有网络等待，
 * block 的阻塞期实际感知不到。
 *
 * wght 声明成 `100 700` 是照抄 Google 原来那份 CSS —— 它描述的是字体支持
 * 的范围。真正生效的字重来自 app.css 的 font-variation-settings。 */
@font-face {
  font-family: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 100 700;
  font-display: block;
  src: url('../fonts/material-symbols-outlined.woff2') format('woff2');
}

/* 这一条是从 Google 那份 CSS 里接过来的，**不能删**。
   app.css 的同名规则只管 variation settings 与防溢出，没有 font-family ——
   字体名一直由 Google 提供。现在那份 CSS 没了，这里不接上，
   所有 .material-symbols-outlined 就会用正文字体去排 "receipt_long"。 */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal;
  font-style: normal;
  /* 连字开关。默认就是开，写出来是为了它别再被哪次 reset 顺手关掉 ——
     关掉的后果同样是图标变文字，而且只在某些元素上出现，极难查。 */
  font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}
