/* ── Rubik — the game's one typeface ─────────────────────────────────────────
   SELF-HOSTED ON PURPOSE. The old Fredoka <link> was injected from JS only after
   the player accepted cookies (viewer.html's loadGoogleFonts), so anyone who
   declined played the whole game in a system fallback. A local @font-face has no
   consent question to ask, and costs one fewer third-party round trip.

   ONE VARIABLE FILE PER SCRIPT, weight axis 300-900. The stylesheets ask for 800
   (107 declarations) and 900 (18); Fredoka only ever loaded 400-700, so every one
   of those was faux-bold — the browser smearing the 700 face. That was a large
   part of why players called the text unclear. Do not replace these with static
   single-weight files without checking what breaks.

   Rubik is one of only two families on Google Fonts covering Latin + Latin-ext +
   Cyrillic + Hebrew in a single design (the other is Open Sans). Fredoka had NO
   Cyrillic at all, so Russian players never saw the game font. Any replacement
   must clear the same bar or the 9 locales stop matching each other.

   The unicode-ranges are copied verbatim from Google's own css2 response so the
   browser still fetches only the scripts a player actually reads: a Latin-only
   player downloads ~53KB of the 89KB total. Re-copy them if the files are ever
   regenerated; a hand-edited range silently stops loading a script.
   ──────────────────────────────────────────────────────────────────────────── */

/* cyrillic-ext */
@font-face {
  font-family: 'Rubik';
  font-style: normal;
  font-weight: 300 900;          /* real weights — nothing here is ever synthesised */
  font-display: swap;
  src: url('/fonts/rubik-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Rubik';
  font-style: normal;
  font-weight: 300 900;          /* real weights — nothing here is ever synthesised */
  font-display: swap;
  src: url('/fonts/rubik-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* hebrew */
@font-face {
  font-family: 'Rubik';
  font-style: normal;
  font-weight: 300 900;          /* real weights — nothing here is ever synthesised */
  font-display: swap;
  src: url('/fonts/rubik-hebrew.woff2') format('woff2');
  unicode-range: U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;
}

/* latin-ext */
@font-face {
  font-family: 'Rubik';
  font-style: normal;
  font-weight: 300 900;          /* real weights — nothing here is ever synthesised */
  font-display: swap;
  src: url('/fonts/rubik-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;
}

/* latin */
@font-face {
  font-family: 'Rubik';
  font-style: normal;
  font-weight: 300 900;          /* real weights — nothing here is ever synthesised */
  font-display: swap;
  src: url('/fonts/rubik-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;
}

/* The single family token. Every surface in the game reads this — React styles,
   the viewer chrome, and the lobby. It is deliberately ALSO defined in
   src/react/styles/typography.css: the React overlay is bundled into JS and must
   still have a font if this file ever fails to load. Keep the two values equal. */
:root {
  --wom-font: 'Rubik', 'Segoe UI', system-ui, sans-serif;
}
