/* ============================================================================
 * ARGUS LANDING — SELF-HOSTED WEBFONTS
 * Sprint: landing-unify, 2026-08-28.  Load FIRST, before tokens.css.
 *
 * Replaces the Google Fonts <link> that the 6 font-loading pages carried and
 * that the other 4 never had at all. One sheet, ten pages, no third party.
 *
 * ── WHY SELF-HOSTED ───────────────────────────────────────────────────────
 * The old <link> to fonts.googleapis.com was a render-blocking request to a
 * third-party origin on the critical path: the browser had to resolve DNS,
 * open a TLS connection, fetch a CSS file, and only THEN discover the woff2
 * URLs on a SECOND origin (fonts.gstatic.com) and connect again. Two extra
 * connections before the first glyph. Served from /assets/fonts/ the files sit
 * on a connection the browser has already opened for the HTML.
 *
 * It also removes a silent failure mode: when Google Fonts was unreachable the
 * pages fell back to `sans-serif` with no error anywhere. The four Group B
 * pages were ALREADY in that state permanently — they declared Inter in
 * tokens.css and never loaded it, so they had been rendering in -apple-system
 * since 2026-08-03. A dependency you never fetch is not a dependency, it is a
 * fallback you did not know you shipped.
 *
 * ── THESE ARE VARIABLE FONTS — 4 FILES, NOT 14 ────────────────────────────
 * Google's css2 API emits one @font-face per (family, weight, subset) and
 * would suggest 14 files for the 7 weights used here. It is the same file
 * repeated: Inter v20 and JetBrains Mono v24 are single variable fonts with a
 * continuous wght axis, and Google serves the identical woff2 URL for every
 * weight of a family/subset pair. Verified by URL comparison at download time.
 *
 * So the whole axis is already paid for. Declaring the RANGE rather than the
 * seven discrete weights costs nothing and means a future weight change is a
 * CSS edit, not another download. This is what makes the hero title's 700
 * (landing-unify) free — under discrete weights it would have been a 5th file.
 *
 *     Inter            wght 100..900   (Google 400 on 100..900+)
 *     JetBrains Mono   wght 100..800   (Google 400s on ..900 — axis stops at 800)
 *
 * ── SUBSETS: latin + latin-ext ONLY ───────────────────────────────────────
 * Google offers 7 (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext,
 * vietnamese). The landing is English; the briefings are EN/FR. latin covers
 * U+0000-00FF, which is every accented character French uses. latin-ext is
 * kept for European issuer and index names that reach the EU book's universe
 * (Société, Ørsted, Ahold Delhaize, Škoda). The other five are not downloaded.
 *
 * unicode-range is copied VERBATIM from Google's own css2 output. It is not
 * decoration: it is what lets the browser skip the latin-ext download entirely
 * for a page with no extended glyph on it, which is most of them.
 *
 * ── font-display: swap ────────────────────────────────────────────────────
 * Text paints immediately in the fallback and re-paints when the woff2 lands.
 * The alternative, `block`, gives up to 3s of invisible text. On a page whose
 * job is to be read in two minutes, a flash of fallback beats a blank screen.
 *
 * Fallback stacks live in tokens.css (--sans / --mono), not here.
 *
 * Provenance: fonts.googleapis.com/css2, fetched 2026-08-28.
 *   inter-latin.woff2              48,256 B    Inter v20
 *   inter-latin-ext.woff2          85,068 B    Inter v20
 *   jetbrainsmono-latin.woff2      31,432 B    JetBrains Mono v24
 *   jetbrainsmono-latin-ext.woff2  11,624 B    JetBrains Mono v24
 *                                 ---------
 *                                 176,380 B total, both families, both subsets
 * Licences: Inter and JetBrains Mono are both SIL Open Font License 1.1,
 * which permits self-hosting and redistribution.
 * ========================================================================= */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/assets/fonts/inter-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: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/assets/fonts/inter-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;
}

@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url('/assets/fonts/jetbrainsmono-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url('/assets/fonts/jetbrainsmono-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;
}
