/* ── Self-hosted type. Never a third-party CDN. ───────────────────────────────────────────────
   Two variable faces, both already licensed and shipped by the Astro build at ../pokefin-web:

     Fraunces        display — headings, the marquee, the big numerals. Variable weight AND an
                     optical-size axis, which is why `font-optical-sizing: auto` is set globally in
                     theme/10-reset-type.css: at 6.4rem Fraunces should not be drawn with the same
                     contrast it uses at 1rem.
     Hanken Grotesk  body — everything else.

   `font-display: swap` is safe here because both files are PRELOADED in the document head, so the
   swap window is measured in a frame or two. The fallback stacks are chosen to be metrically close
   enough that the swap does not throw the page around. */

@font-face {
  font-family: 'Fraunces';
  src: url('fonts/fraunces-var.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* ⚠️ THERE IS NO ITALIC FACE, ON PURPOSE. This cut of Fraunces carries exactly two axes — `opsz`
   9→144 and `wght` 100→900 — and no slant or italic axis at all (checked with fontTools, not
   assumed). Declaring a second @font-face with `font-style: italic` and the SAME file would tell
   the browser a real italic exists, and it would then stop synthesising the oblique and draw the
   roman instead: the hero's one emphasised word would silently lose its slant. Leaving the italic
   undeclared is what makes `font-style: italic` produce a synthesised oblique, which is what the
   approved concept shipped.

   ⚠️ Fraunces' `wght` DEFAULT is 900. Anything that renders it without stating a weight comes out
   black. Every rule in theme/ that sets --display also sets a font-weight. */

@font-face {
  font-family: 'Hanken Grotesk';
  src: url('fonts/hanken-grotesk-var.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
