/* The Marketing Cartel · fonts (self-hosted, OFL, latin subset from Google Fonts). font-display: swap.
   Each web font has a metric-matched local fallback, measured with fontTools against the Windows system
   fonts (verify/palette.py sibling notes in PLAN Task 4): the swap moves nothing, so CLS stays ≈ 0. */

/* Archivo — headings and UI. Variable wght 100–900 (34 KB). A wght+wdth file also exists
   (fonts/archivo-var-latin.woff2, 88 KB) but the system does not use the width axis, so it is not loaded. */
@font-face {
  font-family: 'Archivo';
  src: url('fonts/archivo-wght-latin.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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;
}

/* Newsreader italic, phone cut (E04): a static instance at opsz 36 — the phone's titles run 22–40px — subset to the
   characters the site uses: 23 KB instead of 62. Used below 1024px only (tokens.css swaps --font-serif there). */
@font-face {
  font-family: 'Newsreader Phone';
  src: url('fonts/newsreader-italic-400-opsz36.woff2') format('woff2');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
/* Newsreader italic — the accent, one phrase per title. opsz 6–72 (optical sizing follows font-size). 62 KB. */
@font-face {
  font-family: 'Newsreader';
  src: url('fonts/newsreader-italic-400-latin.woff2') format('woff2');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  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;
}

/* Roboto Flex — the statement (#10) only. Not loaded by the hero. 191 KB, variable wght/wdth/opsz. */
@font-face {
  font-family: 'Roboto Flex';
  src: url('fonts/robotoflex-latin.woff2') format('woff2');
  font-weight: 100 1000;
  font-stretch: 25% 151%;
  font-style: normal;
  font-display: swap;
}

/* Roboto Flex, statement cut — what the home's #10 statement actually uses: opsz pinned at 60 (display), wght 400–800,
   wdth 84–100, basic latin + curly quotes/dashes. 28 KB instead of 191. Activated only when the statement nears the
   viewport (sections.js), so it never competes with the LCP. The full face above stays for the guide's specimens. */
@font-face {
  font-family: 'Roboto Flex Statement';
  src: url('fonts/robotoflex-statement.woff2') format('woff2');
  font-weight: 400 800;
  font-stretch: 84% 100%;
  font-style: normal;
  font-display: swap;
}

/* ---------- metric-matched fallbacks -------------------------------------------------------------------
   Archivo 400 avg lowercase advance .4856 em vs Arial .4817 → size-adjust 100.8%; asc .878 / desc .210.
   Archivo 780 .5500 vs Arial Bold .5289 → 104%. Newsreader italic @opsz 72 .4527 vs Times Italic .4392
   → 103.1%; asc .735 / desc .265. Overrides are the web font's metrics divided by size-adjust. */
@font-face {
  font-family: 'Archivo Fallback';
  src: local('Arial'), local('ArialMT'), local('Helvetica Neue'), local('Helvetica');
  size-adjust: 100.8%;
  ascent-override: 87.1%;
  descent-override: 20.8%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Archivo Heavy Fallback';
  src: local('Arial Bold'), local('Arial-BoldMT'), local('Helvetica Neue Bold'), local('Helvetica Bold');
  font-weight: 700 900;
  size-adjust: 104%;
  ascent-override: 84.4%;
  descent-override: 20.2%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Newsreader Fallback';
  src: local('Times New Roman Italic'), local('TimesNewRomanPS-ItalicMT'), local('Times Italic');
  font-style: italic;
  size-adjust: 103.1%;
  ascent-override: 71.3%;
  descent-override: 25.7%;
  line-gap-override: 0%;
}
