/* THE HOUSE FONTS, SERVED FROM HERE. Every page used to open with a stylesheet from Google Fonts, and a
 * <link rel="stylesheet"> in the <head> blocks the parse: when Google was unreachable the request hung, the page
 * never got past it, window.base never appeared, and eleven checks went red (2026-10-01). A player would have
 * waited on Google the same way. Nothing here reaches off this site.
 *
 * These are Google's own files, unmodified, fetched once: the same woff2 the old link served, the same weights, and
 * only the LATIN subset - every character the pages and their scripts draw is in it (scanned 2026-10-01: nothing in
 * latin-ext or vietnamese; the arrows, suits and maths signs the pages use are in no subset of these fonts and fall
 * back to the system face, exactly as they did before). Names are [A-Za-z0-9] (names.py), so a player's name is too.
 * The unicode-range is Google's latin range, copied, so the browser falls back on exactly the characters it did.
 *
 * Archivo and Sometype Mono are variable fonts: Google served one file for every weight, and declared one face per
 * weight asked for. That is repeated here rather than collapsed into a range, so a weight the pages never asked for
 * (an 800, say) still snaps to the nearest one declared, as it did - the type looks the same, not merely similar.
 *
 * Licences (all SIL OFL 1.1) and where each file came from: CREDITS.txt, beside this file.
 */
@font-face { font-family: 'Silkscreen'; font-style: normal; font-weight: 400; font-display: swap;
  src: url(silkscreen-400-latin.woff2?v=17bb6d80) 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: 'Silkscreen'; font-style: normal; font-weight: 700; font-display: swap;
  src: url(silkscreen-700-latin.woff2?v=30ad65d8) 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: 'Sometype Mono'; font-style: normal; font-weight: 400; font-display: swap;
  src: url(sometype-mono-latin.woff2?v=bfedd7ac) 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: 'Sometype Mono'; font-style: normal; font-weight: 500; font-display: swap;
  src: url(sometype-mono-latin.woff2?v=bfedd7ac) 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; }

/* Archivo: THE READING FACE, on every page. The deployer, 2026-10-05: "all pages aside from headings should use the text
   we use for Q's and A's on the Q&A .. it is easier to read". The FAQ's questions and answers are Archivo (faq.html .q, and
   .a through the body), so every page's body text is too. Since 2026-10-10 (the deployer, q258/q280/q291: "Everything uses the FAQ font. The pixel
   font is only for H1 titles on the website and for navigation") buttons, headings below h1, labels and the words drawn on
   the map are Archivo too; Silkscreen is left to h1, the brand and the page buttons,
   and only code - verbatim or column-aligned text (pre, .formula, .a-math, code) - and, since q418, every number that lines
   up in a column (.num, below) are Sometype Mono. Its one home is here, the stylesheet every page already loads: --body below. Proved by estate/bodyfontproof.test.js. */
:root { --body: Archivo, system-ui, -apple-system, "Segoe UI", sans-serif; }
/* EVERY BUTTON AND ALL NAVIGATION IN BOLD (the deployer, 2026-10-11, replacing ruling 378's split: "make the button text bold
   ... the navigation letters are also from the faq and bold"). Archivo's file is a variable font whose wght axis runs 100 to
   900 (read off its fvar table), so 700 is a real bold, never one the browser fakes; the face declared at 700 below is
   what it snaps to. This is the one rule every page shares; each page's own button and menu rules say 700 as well, so a
   later `font: inherit` cannot quietly take it back. Silkscreen is left to h1 and the brand. */
button, .btn, nav a, nav button, .toc a, footer a { font-weight: 700; }
/* NUMBERS THAT LINE UP ARE THE TYPEWRITER FACE (the deployer, q418, 2026-10-11: "Keep the typewriter font for these boxes,
   and use it in EVERY place where numbers are lined up, so it is consistent across all pages. Everything else stays in the
   FAQ font."). A number that sits in a column under other numbers - a table's figure, a list's right-hand amount - carries
   .num and is Sometype Mono, whose every letter is the same width, so the columns line up. Its one home is here, beside
   --body. A single figure on its own (the HUD, a fact card, the pot) is not lined up and stays the FAQ's face (q170); a
   column's heading (th) is a heading. The odds and formula boxes (.formula, .a-math) keep it too. Proved by
   estate/bodyfontproof.test.js, part L. */
:root { --mono: "Sometype Mono", ui-monospace, monospace; }
:is(td, dd, span, b).num { font-family: var(--mono); font-variant-numeric: tabular-nums; }
/* THE FOCUS RING (M22 item 6, 2026-10-12): every control the keyboard reaches shows where it is. :focus-visible is drawn
   only when focus arrived by the keyboard, never on a click or a tap, so the look the deployer approved is unchanged for a
   pointer. A 2px ring in the signal, 2px clear of the control so it never sits on a [ BUTTON ]'s own rule or shadow; on the
   light theme (start.html and faq.html's [data-theme=invert]) the signal measures 1.01:1 on #EEEEEE, so the ring is the
   light theme's ink there. Its one home is here, the stylesheet every page loads. Proved by estate/a11yproof.test.js. */
:root { --focus-ring: #CCFF00; }
[data-theme="invert"] { --focus-ring: #111111; }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400; font-stretch: 100%; font-display: swap;
  src: url(archivo-latin.woff2?v=7150c0ec) 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: 'Archivo'; font-style: normal; font-weight: 500; font-stretch: 100%; font-display: swap;
  src: url(archivo-latin.woff2?v=7150c0ec) 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: 'Archivo'; font-style: normal; font-weight: 600; font-stretch: 100%; font-display: swap;
  src: url(archivo-latin.woff2?v=7150c0ec) 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: 'Archivo'; font-style: normal; font-weight: 700; font-stretch: 100%; font-display: swap;
  src: url(archivo-latin.woff2?v=7150c0ec) 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; }
