/* PokeTrack.io self-hosted fonts (visual overhaul T2). Linked by app/layout.tsx and by the SPA <head>; replaces the Google Fonts links.
   Three families, one job each: Inter (UI), Bebas Neue 400 (wordmark, display, hero figures), JetBrains Mono 500 (data).
   Sources, versions and sha256 of every file: SOURCES.md. Licences: Inter-OFL.txt, BebasNeue-OFL.txt, JetBrainsMono-OFL.txt (SIL OFL 1.1).
   URLs are relative so this file works from wherever the page is served. The woff2 files are versioned, so they are served immutable
   (next.config.js); to change a font, add a new versioned file and point the rule at it. This file itself is not versioned and revalidates. */

/* Inter: one variable file per script range, weights 300-700, optical size pinned at 14 (what Google served for wght-only requests). */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(inter-4.1-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;
}
/* The latin range is Google's, plus the arrows U+2190-2199 that the app and the up/down cues use. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(inter-4.1-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+2190-2199, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Bebas Neue 400 only. Every Bebas rule sets font-weight:400; asking for bold gets a synthesized bold, which looks wrong. */
@font-face {
  font-family: 'Bebas Neue';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(bebas-neue-2.000-regular.woff2) format('woff2');
}

/* Metric-matched fallback shown until Bebas Neue arrives, so the swap doesn't move the layout. Bebas is a narrow all-caps face, so
   a normal sans is scaled down to its width: size-adjust 62% sits between the measured width ratios (caps 0.575, digits 0.719,
   mixed headline text 0.589 against Arial/Liberation Sans). Bebas hhea metrics are ascent 900, descent 300, line gap 0 on a 1000
   em, divided by the size-adjust so line boxes match: 0.9/0.62 = 145.16%, 0.3/0.62 = 48.39%.
   Measured in Chromium at 48px (scripts/harness/overhaul-foundation/fallback.cjs): line box identical (57px); width against real Bebas is
   headline caps +8%, wordmark +8%, mixed text +4%, digits and $ , . -13% (plain Arial would be +74%, +74%, +68%, +40%).
   Roboto is last for Android, which has none of the others; it is not installed in the build sandbox, so its widths are unmeasured.
   Only a font stack that names this face uses it: today that is --pt-font-display alone (pt-tokens.css), so until pages move onto the
   token a held Bebas file still paints each page's own generic fallback (scripts/harness/overhaul-foundation/fallshot.cjs). */
@font-face {
  font-family: 'Bebas Fallback';
  src: local('Arial'), local('Helvetica'), local('Liberation Sans'), local('Arimo'), local('Roboto');
  size-adjust: 62%;
  ascent-override: 145.16%;
  descent-override: 48.39%;
  line-gap-override: 0%;
}

/* JetBrains Mono: the one Medium (500) file. It also answers 400 and 700 requests (the range below), so mono text is always the
   Medium weight and the browser never fakes a bold on top of it. Brand v3 retires the 400 and 700 weights. */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(jetbrains-mono-2.304-medium.woff2) format('woff2');
}
