/* =============================================================================
   Raven — fonts. SELF-HOSTED, ALWAYS.
   =============================================================================
   ⚠ UNTIL 2026-08-19 THIS FILE DID NOT EXIST, www/assets/fonts/ WAS EMPTY, AND
   THERE WAS NO @font-face ANYWHERE. tokens-base.css named 'Inter' and
   'JetBrains Mono' and neither was ever installed, so every screen in the
   product had silently been rendering in whatever system-ui and the platform's
   default monospace happened to be. The design decision that "machine data is
   monospace, and that is FUNCTIONAL — it makes a transposed digit visible and
   distinguishes 0/O and 1/l" was, in practice, delegated to whatever the
   viewer's OS shipped. On this box that meant DejaVu Sans Mono; on a Mac it
   meant Menlo; the fingerprints did not line up the same way twice.

   Nothing here is fetched at runtime. The CSP forbids third-party origins, and
   the system this replaces pulled a font from unpkg into a page rendering SSH
   config — which is the exact pattern Raven exists to stop.

   LATIN SUBSET ONLY. The Cyrillic, Greek and Vietnamese cuts are ~90% of the
   bytes for a tool used in English by a handful of people. If that ever changes,
   re-run the fetch and keep the other subsets' unicode-range blocks — do not
   widen these, or the browser will download a Cyrillic face to render "root".

   Files: 112KB total, four files, downloaded 2026-08-19.
   ========================================================================== */

/* --- Inter (OFL 1.1) — the UI face ---------------------------------------
   ONE VARIABLE FILE for the whole 100–900 range. Google serves the same file
   for every weight you ask for, so shipping four copies would have been 144KB
   of identical bytes. font-weight is declared as the RANGE the file actually
   covers; the browser interpolates 500 and 600 rather than faking them. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;   /* text is readable immediately; the face swaps in */
  src: url('/assets/fonts/inter-var-latin.woff2') format('woff2-variations');
}

/* --- Fira Mono (OFL 1.1) — MACHINE DATA -----------------------------------
   Every hostname, IP, MAC, fingerprint, port and secret. Fira Mono has a
   slashed zero and an unambiguous 1/l/I, which is the entire reason a monospace
   is mandated here — a transposed digit in an IP has to be visible, and 0/O has
   cost an hour before.

   Three STATIC weights, because Fira Mono has no variable cut. Only 400/500/700
   are shipped: nothing in the product asks for another, and an unused face is
   16KB somebody downloads for nothing. */
@font-face {
  font-family: 'Fira Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/firamono-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Fira Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/firamono-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Fira Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/firamono-700-normal.woff2') format('woff2');
}
