/* ════════════════════════════════════════════════════════════════════
   Self-hosted @font-face rules — the SINGLE source for both the app
   surfaces (build.py inlines this file into styles.css at its
   FONT_FACES token) and the legal pages (src/legal.css, same token).
   The token is not spelled out here: this file is substituted INTO
   those, so a literal copy of it would ride into the shipped CSS
   looking like a substitution that failed. Extracted so the privacy/terms
   pages could stop @import-ing Google Fonts (issue #478) without
   hand-copying ten @font-face blocks that would then drift.

   Bricolage Grotesque = UI (.disp); Noto Serif SC = hanzi (.han)
   fallback. Files + unicode-range copied from fontsource's generated
   CSS (cdn.jsdelivr.net/fontsource/css/<pkg>@latest/<weight>.css) — see
   the commit body for exact source URLs. Latin-subset rules are listed
   before the catch-all CJK rule per family/weight so latin glyphs use
   the small subset.

   LXGW WenKai — the primary .han face — is NOT here: it is ~200KB of
   unicode-range-split rules, so it ships as its own content-hashed
   stylesheet (assets/fonts/lxgw.css, built by tools/vendor-lxgw.mjs)
   linked per page rather than inlined into every document.
   ════════════════════════════════════════════════════════════════════ */
@font-face{
  font-family:'Bricolage Grotesque';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/bricolage-400.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:'Bricolage Grotesque';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/bricolage-500.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:'Bricolage Grotesque';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/fonts/bricolage-600.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:'Bricolage Grotesque';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/bricolage-700.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:'Noto Serif SC';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/noto-serif-sc-latin-400.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:'Noto Serif SC';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/noto-serif-sc-cjk-400.woff2') format('woff2');
}
@font-face{
  font-family:'Noto Serif SC';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/noto-serif-sc-latin-500.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:'Noto Serif SC';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/noto-serif-sc-cjk-500.woff2') format('woff2');
}
@font-face{
  font-family:'Noto Serif SC';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/noto-serif-sc-latin-700.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:'Noto Serif SC';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/noto-serif-sc-cjk-700.woff2') format('woff2');
}
