/* Self-hosted web fonts. Two faces, two jobs.
 *
 *   Schibsted Grotesk — display and body. A news grotesk, drawn for a
 *                       publisher: it carries authority at 4rem without the
 *                       novelty that got Space Grotesk pulled, and it stays
 *                       quiet at 0.9rem body. Its figures are the reason it
 *                       is here — tall, even-width, unmistakable one from
 *                       lowercase L, which matters on a page whose argument
 *                       is measurement. OFL, variable 400-900.
 *   JetBrains Mono    — data. Every IP, ASN, latency figure, signal name and
 *                       eyebrow. Purpose-drawn for reading code at small
 *                       sizes: a slashed zero, disambiguated 1/l/I, and a
 *                       taller x-height than Geist Mono, so a 0.68rem table
 *                       cell is still legible. OFL, variable 400-700.
 *
 * Replaces Geist + Geist Mono (21-26 Aug 2026). The Geist pairing was not
 * broken — it was neutral, and neutral is what the brand no longer wanted.
 * The predecessors, for whoever revisits this: Space Grotesk (rounded
 * geometry, no authority at display size) -> Archivo -> SF Pro via the system
 * stack (a UI face; at 3.6rem/700 it read as an unstyled page) -> Geist.
 *
 * BOTH ARE VARIABLE AND EACH IS ONE FILE PER SUBSET across its whole weight
 * range. Do not "restore" per-weight files; they would be duplicates. The
 * ranges are supersets of what the pages ask for (the CSS uses 400-800 sans,
 * 400-500 mono), so nothing is synthesised — which was not true of the old
 * mono at weight 600.
 *
 * Subsets: latin + latin-ext only. latin covers en/de and the Estonian vowels
 * (ä ö ü õ live in Latin-1); latin-ext carries š and ž.
 *
 * font-src is 'self' data: in the CSP (server.js), so these must stay
 * self-hosted — a Google Fonts <link> is blocked, not slow.
 *
 * The cache key is the ?v= on the referring <link>, not these filenames —
 * bump it and run `node scripts/check-asset-versions.js --update`.
 */

/* ── Schibsted Grotesk (variable, 400–900) ───────────────────────────────── */
/* latin-ext */
@font-face {
  font-family: 'Schibsted Grotesk';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url(/assets/fonts/schibsted-var-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: 'Schibsted Grotesk';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url(/assets/fonts/schibsted-var-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;
}

/* ── JetBrains Mono (variable, 400–700) ──────────────────────────────────── */
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-var-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-var-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;
}
