/* Alyte brand fonts — self-hosted, latin subset, variable weight.
   OFL-licensed: Hanken Grotesk, Newsreader (italic), JetBrains Mono.

   WHY self-hosted: the app CSP is `style-src 'self' 'unsafe-inline'` (no external
   host, by design) — a Google Fonts <link> is BLOCKED and silently falls back to
   system fonts (and logs a CSP error every page-load). Serving the woff2 from the
   same origin (/fonts/*) satisfies the CSP so the brand type actually renders.

   Each family ships as ONE variable woff2 covering its weight range (the browser
   interpolates the intermediate weights), so this is 3 files / ~215KB total for the
   whole design system — not one file per weight. Referenced by alyte-tokens.css
   --sans / --serif / --mono. Included by every screen alongside the tokens sheet.

   To refresh: re-fetch the css2 latin subset for each family (browser UA → woff2),
   keep only the `/* latin */` @font-face block, and re-download its url() target. */

@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 400 800;      /* variable — tokens use 400/500/600/700/800 */
  font-display: swap;
  src: url(/fonts/hanken-var.woff2) format('woff2');
}

@font-face {
  font-family: 'Newsreader';
  font-style: italic;        /* --serif is only ever used italic (see alyte-components.css .serif) */
  font-weight: 300 400;
  font-display: swap;
  src: url(/fonts/newsreader-italic-var.woff2) format('woff2');
}

@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url(/fonts/jetbrains-var.woff2) format('woff2');
}
