/* 自托管字体 —— 拉丁三家。
   这个应用是**私有化部署**的, 客户内网未必通 Google Fonts。取不到时:
     拉丁标题的 Sora 缺席 → 掉到系统无衬线, 丢掉品牌调性;
     正文 Inter 缺席 → 掉到系统字体, 小字质感变差。
   这些都是每个页面每个字都看得见的东西, 所以自托管。

   **中文思源宋没有自托管, 是有意的取舍。** 它有 101 个分片共 3.09 MB,
   会让这个仓库(工作区 6.7 MB)接近翻倍; 而它缺席时的兜底是系统宋体
   (Songti SC / SimSun / 思源宋本地版)—— 中文衬线掉到另一个中文衬线,
   观感差别小。拉丁那边的兜底才是坏的(Sora → Times New Roman), 所以
   优先解决那一边。
   将来要连中文一起自托管: 见 scripts/fetch-fonts.py, 把 CJK 也加进去,
   或者先用 fonttools 按常用字子集化。

   只保留 latin + latin-ext 分片, 丢掉西里尔/希腊/越南文 —— 这个界面是
   中英双语, 那几档下下来也没人用。省了 231 KB。

   文件由 scripts/fetch-fonts.py 生成, 别手改。 */

@font-face {
  font-family: 'Sora';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/static/fonts/Sora-700-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Sora';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/static/fonts/Sora-700-latin.woff2') format('woff2');
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/Inter-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/Inter-400-latin.woff2') format('woff2');
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/Inter-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/Inter-500-latin.woff2') format('woff2');
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/static/fonts/Inter-600-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/static/fonts/Inter-600-latin.woff2') format('woff2');
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/IBMPlexMono-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/IBMPlexMono-400-latin.woff2') format('woff2');
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/IBMPlexMono-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/IBMPlexMono-500-latin.woff2') format('woff2');
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ── 状态标记 ✓ ✕ ✗ ⚠ —— 只含这四个码位的字体子集 ──────────────────
   这四个字符全仓库 179 处, 几乎全在**可翻译文本里当前缀**("✓ 采纳"的 msgid
   就带着 ✓), 还有一批在 JS 字串里。换成 SVG 图标就得改上百条 msgid 和翻译,
   JS 字串还得改成拼 DOM —— 之前正是这类改动让 msgid 里混进了 Jinja 表达式。

   它们看着像表情包, 实测是两个原因:
     · Sora / Inter 都没有这四个字形, 浏览器回退到系统字体 —— Linux 是
       DejaVu, Mac 是 Apple Symbols, Windows 是 Segoe UI Symbol, 三个平台
       三副模样;
     · 少数几处带了 U+FE0F(强制 emoji 呈现), 那才真变成 Noto Color Emoji 的
       黄三角 —— 那几个已经清掉。

   解法: 把 DejaVu Sans 的这四个字形单独切出来(每个文件 1-2 KB), 用
   unicode-range 只接管这四个码位, 排在字体栈最前面。于是:
     · 零模板改动、零 i18n 改动, JS 字串一样覆盖;
     · 三个平台长一样;
     · 别的字符一个都不受影响 —— unicode-range 之外的它根本不供字形。
   subset 命令见 scripts/make-mark-font.sh。 */
@font-face {
  font-family: 'wx-marks';
  font-style: normal;
  font-weight: 400;
  font-display: block;   /* 就四个字形 1KB, 不值得闪一下回退字形 */
  src: url('/static/fonts/wx-marks-400.woff2') format('woff2');
  unicode-range: U+2713, U+2715, U+2717, U+26A0;
}
@font-face {
  font-family: 'wx-marks';
  font-style: normal;
  font-weight: 700;
  font-display: block;
  src: url('/static/fonts/wx-marks-700.woff2') format('woff2');
  unicode-range: U+2713, U+2715, U+2717, U+26A0;
}
