/* Self-hosted Inter variable font, no CDN tracking.
   The den's pages are deliberately standalone (they share no layout stylesheet),
   but six of them NAMED 'Inter' in their font stack while loading it nowhere, so
   the declaration was a lie and every one of them silently fell back to the
   system sans. This file is the one place the face is declared for the den.
   ⚠ Inter sits FOURTH in those stacks, behind -apple-system / BlinkMacSystemFont /
   Segoe UI, so this changes nothing on macOS or Windows; it is Linux and Android
   that were being promised a font that never arrived.
   Faces copied byte-for-byte from src/style.css, including the unicode-ranges. */
@font-face {
  font-family: 'Inter';
  src: url('/vendor/fonts/inter-latin-wght-normal.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  src: url('/vendor/fonts/inter-latin-ext-wght-normal.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Fraunces, the brand's display face - the same one the hub and ops wordmarks
   wear. Self-hosted. ⚠ s177: this comment used to end "unlike the three documents
   that still pull it from fonts.googleapis.com (see FRAUNCES-CDN)" - and s99 had
   already removed all three. A comment naming a defect that no longer exists is
   how FRAUNCES-CDN stayed open for three sessions after it was fixed. The rule is
   now enforced rather than described: tests/test_font_declared.mjs fails on any
   shipped document that links a remote font stylesheet. ⚠ `assets/game-title.css` styles the
   den's shared wordmark as `Georgia, "Iowan Old Style", serif`, so on any page
   that loads no webfont the "brand" title renders in a system serif. */
@font-face {
  font-family: 'Fraunces';
  src: url('/vendor/fonts/fraunces-latin-wght-normal.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* ⚠⚠ NUMBERS ARE A DIFFERENT FACE ON PURPOSE. Sean, s102: *"the number s gott a be a
   different font it is hard to tell what the 2s are i think. needs ot be more accessible
   just the numbers though"*, after asking for Fraunces on *"all font every singly word"*.
   He is right: Fraunces is a display serif, and its figures are hard to tell apart at UI
   size. Ambiguous numerals are a real error risk in a way ambiguous letters are not - you
   read a word by shape and context, and a misread digit has no context to rescue it.
   This is the standard fix, and it is done ONCE here rather than rule by rule: 'TurtlelyNum'
   is Inter restricted by `unicode-range` to digits and the characters that travel with them
   (decimal point, comma, %, :, +, -, /, degree, currency, the fraction slash). Put it FIRST
   in a stack and every non-digit falls straight through to Fraunces.
   ▶ So every number in the app is Inter and every word is Fraunces, automatically, including
   numbers drawn by code written after this - nothing has to remember to opt in.
   ⚠ It applies to canvas text too (`ctx.font`), which is where the game HUDs and the chart
   labels live, because canvas uses the same font matching. */
@font-face {
  font-family: 'TurtlelyNum';
  src: url('/vendor/fonts/inter-latin-wght-normal.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0030-0039, U+002B, U+002C, U+002D, U+002E, U+002F, U+0025, U+003A,
                 U+00B0, U+0024, U+00A3, U+20AC, U+2044, U+2212;
}
