/* ════════════════════════════════════════════════════════════════════════════
   Self-hosted fonts, so the game looks right with no network at all.

   washi.css pulls DM Mono and Noto Serif JP from Google Fonts. Those files are
   requested by the page before the service worker takes control on a first
   visit, so they never reliably land in the cache — offline, the board would
   fall back to system fonts. Declaring the same families here (this file loads
   after washi.css, so these win) keeps every glyph local and stops the Google
   font files being fetched at all.

   DM Mono is the whole board: every digit, total and label. It is carried in
   full, latin and latin-ext, for 29KB.

   Noto Serif JP is the display face, and is only ever asked for three glyphs —
   和 and 算 in the masthead, 完 on the win screen. Rather than ship 21MB of CJK
   subsets, each glyph gets its one subset file, with unicode-range narrowed to
   exactly the character it serves. Latin headings fall through to Georgia,
   which is what the stack asks for next and is present everywhere.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── DM Mono · body, board and UI ────────────────────────────────────────── */
@font-face {
  font-family: 'DM Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url(fonts/dmmono-400-latinext.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: 'DM Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url(fonts/dmmono-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: 'DM Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url(fonts/dmmono-500-latinext.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: 'DM Mono';
  font-style: normal; font-weight: 500; font-display: swap;
  src: url(fonts/dmmono-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;
}

/* ── Noto Serif JP · one file per kanji actually used ─────────────────────── */
@font-face {                                    /* 和 — masthead */
  font-family: 'Noto Serif JP';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url(fonts/notoserifjp-700-112.woff2) format('woff2');
  unicode-range: U+548C;
}
@font-face {                                    /* 算 — masthead */
  font-family: 'Noto Serif JP';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url(fonts/notoserifjp-700-103.woff2) format('woff2');
  unicode-range: U+7B97;
}
@font-face {                                    /* 完 — win screen */
  font-family: 'Noto Serif JP';
  font-style: normal; font-weight: 700; font-display: swap;
  src: url(fonts/notoserifjp-700-111.woff2) format('woff2');
  unicode-range: U+5B8C;
}
