/* Sprint J (2026-06-02) — self-hosted font declarations.
 *
 * Latin variants are tiny (~14KB each); they're declared without
 * unicode-range so they load on any page that references the family.
 *
 * Chinese (chinese-simplified subset) variants are 1.1-1.5MB each; they're
 * declared WITH `unicode-range` so the browser only fetches them when a
 * CJK glyph in the listed range is actually rendered. For an English-
 * primary site this means CN users incur a one-time download and English
 * users never download the 4-5MB of CN fonts at all.
 *
 * font-display: swap means the system font shows immediately and the
 * custom font swaps in once loaded — no flash of invisible text.
 *
 * License: SIL OFL 1.1 — see public/fonts/LICENSE.md.
 */

/* ── DM Sans (Latin) — 4 weights ──────────────────────────────────── */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/dm-sans-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/dm-sans-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/fonts/dm-sans-latin-600-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/dm-sans-latin-700-normal.woff2') format('woff2');
}

/* ── DM Serif Display — display weight only ──────────────────────── */
@font-face {
  font-family: 'DM Serif Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/dm-serif-display-latin-400-normal.woff2') format('woff2');
}

/* ── DM Mono — 2 weights ─────────────────────────────────────────── */
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/dm-mono-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/dm-mono-latin-500-normal.woff2') format('woff2');
}

/* ── Noto Sans SC — chinese-simplified subset, 3 weights ─────────── */
/* unicode-range covers CJK Unified Ideographs + common CJK punctuation.
 * Source: https://en.wikipedia.org/wiki/CJK_Unified_Ideographs#Blocks
 */
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/noto-sans-sc-chinese-simplified-400-normal.woff2') format('woff2');
  unicode-range: U+2E80-2EFF, U+2F00-2FDF, U+2FF0-2FFF, U+3000-303F, U+3040-309F,
                 U+30A0-30FF, U+3100-312F, U+3190-319F, U+31C0-31EF, U+3200-32FF,
                 U+3300-33FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE30-FE4F,
                 U+FF00-FFEF;
}
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/noto-sans-sc-chinese-simplified-500-normal.woff2') format('woff2');
  unicode-range: U+2E80-2EFF, U+2F00-2FDF, U+2FF0-2FFF, U+3000-303F, U+3040-309F,
                 U+30A0-30FF, U+3100-312F, U+3190-319F, U+31C0-31EF, U+3200-32FF,
                 U+3300-33FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE30-FE4F,
                 U+FF00-FFEF;
}
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/noto-sans-sc-chinese-simplified-700-normal.woff2') format('woff2');
  unicode-range: U+2E80-2EFF, U+2F00-2FDF, U+2FF0-2FFF, U+3000-303F, U+3040-309F,
                 U+30A0-30FF, U+3100-312F, U+3190-319F, U+31C0-31EF, U+3200-32FF,
                 U+3300-33FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE30-FE4F,
                 U+FF00-FFEF;
}

/* ── Noto Serif SC — chinese-simplified subset, 3 weights ────────── */
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/noto-serif-sc-chinese-simplified-400-normal.woff2') format('woff2');
  unicode-range: U+2E80-2EFF, U+2F00-2FDF, U+2FF0-2FFF, U+3000-303F, U+3040-309F,
                 U+30A0-30FF, U+3100-312F, U+3190-319F, U+31C0-31EF, U+3200-32FF,
                 U+3300-33FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE30-FE4F,
                 U+FF00-FFEF;
}
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/fonts/noto-serif-sc-chinese-simplified-500-normal.woff2') format('woff2');
  unicode-range: U+2E80-2EFF, U+2F00-2FDF, U+2FF0-2FFF, U+3000-303F, U+3040-309F,
                 U+30A0-30FF, U+3100-312F, U+3190-319F, U+31C0-31EF, U+3200-32FF,
                 U+3300-33FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE30-FE4F,
                 U+FF00-FFEF;
}
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/noto-serif-sc-chinese-simplified-700-normal.woff2') format('woff2');
  unicode-range: U+2E80-2EFF, U+2F00-2FDF, U+2FF0-2FFF, U+3000-303F, U+3040-309F,
                 U+30A0-30FF, U+3100-312F, U+3190-319F, U+31C0-31EF, U+3200-32FF,
                 U+3300-33FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FE30-FE4F,
                 U+FF00-FFEF;
}
