/* =====================================================================
   FWRD type stack — licensed PP Right Grotesk FIRST, free Archivo fallback
   (Kakadu type tokens; the Archivo fallback is metric-matched to the PP
   faces). Paths are root-relative, i.e. /assets/fonts/...
   ===================================================================== */

/* ---------------------------------------------------------------------
   1. Licensed faces (Pangram Pangram). Not in the repo yet. While a file
      is missing its request 404s, the face errors and the browser moves
      on to the next family in the stack. Drop the .woff2 in and it wins.
      One family per role, each with exactly one face, so a missing file
      can never cause faux-bold of another PP face.
   --------------------------------------------------------------------- */
/* PPRightGrotesk-WideMedium.woff2 not installed */
/* PPRightGrotesk-Light.woff2 not installed */
/* Same mechanism for the two other cuts the Kakadu type scale uses (Wide Dark 800 = emphasis
   words + card titles, Bold 700 = links/buttons/footer heads). Keep these if
   you license them; otherwise they cost one 404 each on pages that use them. */
/* PPRightGrotesk-WideDark.woff2 not installed */
/* PPRightGrotesk-Bold.woff2 not installed */

/* ---------------------------------------------------------------------
   2. Free substitute: Archivo variable (SIL OFL 1.1, wdth 62–125, wght 100–900).
      Each role is its own family whose font-weight / font-stretch descriptors
      are SINGLE values: the browser clamps any requested weight/stretch into
      the descriptor range, so the face always renders at the fitted axis
      values (no font-variation-settings needed on elements, and the element's
      font-weight 500/800/200/700 still matches the PP face when it exists).
      size-adjust = PP/Archivo advance-width ratio for the role;
      ascent/descent/line-gap overrides = PP metrics (asc .8984, desc .2442, gap 0)
      divided by size-adjust, so line boxes and baselines are identical to PP.
      src: self-hosted file first, pinned jsDelivr (Fontsource 5.3.0) as backup.
   --------------------------------------------------------------------- */
/* Wide Medium (500) -> Archivo wdth 105, wght 680 */
@font-face {
  font-family: "FWRD Wide Medium";
  src: url("/assets/fonts/archivo-latin-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-wdth-normal.woff2") format("woff2");
  font-weight: 680; font-stretch: 105%; font-style: normal; font-display: swap;
  size-adjust: 99.93%; ascent-override: 89.90%; descent-override: 24.44%; line-gap-override: 0%;
  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;
}
@font-face {
  font-family: "FWRD Wide Medium";
  src: url("/assets/fonts/archivo-latin-ext-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-ext-wdth-normal.woff2") format("woff2");
  font-weight: 680; font-stretch: 105%; font-style: normal; font-display: swap;
  size-adjust: 99.93%; ascent-override: 89.90%; descent-override: 24.44%; line-gap-override: 0%;
  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;
}
/* Wide Dark (800) -> Archivo wdth 99.5, wght 900 (axis max; stems still ~5.7% lighter than PP) */
@font-face {
  font-family: "FWRD Wide Dark";
  src: url("/assets/fonts/archivo-latin-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-wdth-normal.woff2") format("woff2");
  font-weight: 800; font-stretch: 125%; font-style: normal; font-display: swap;
  ascent-override: 89.84%; descent-override: 24.42%; line-gap-override: 0%; /* client choice: prototype wide cut */
  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;
}
@font-face {
  font-family: "FWRD Wide Dark";
  src: url("/assets/fonts/archivo-latin-ext-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-ext-wdth-normal.woff2") format("woff2");
  font-weight: 800; font-stretch: 125%; font-style: normal; font-display: swap;
  ascent-override: 89.84%; descent-override: 24.42%; line-gap-override: 0%; /* client choice: prototype wide cut */
  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;
}
/* Light (200) -> Archivo wdth 89.5, wght 280 */
@font-face {
  font-family: "FWRD Light";
  src: url("/assets/fonts/archivo-latin-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-wdth-normal.woff2") format("woff2");
  font-weight: 280; font-stretch: 89.5%; font-style: normal; font-display: swap;
  size-adjust: 99.79%; ascent-override: 90.03%; descent-override: 24.47%; line-gap-override: 0%;
  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;
}
@font-face {
  font-family: "FWRD Light";
  src: url("/assets/fonts/archivo-latin-ext-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-ext-wdth-normal.woff2") format("woff2");
  font-weight: 280; font-stretch: 89.5%; font-style: normal; font-display: swap;
  size-adjust: 99.79%; ascent-override: 90.03%; descent-override: 24.47%; line-gap-override: 0%;
  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;
}
/* Bold (700) -> Archivo wdth 83.5, wght 770 */
@font-face {
  font-family: "FWRD Bold";
  src: url("/assets/fonts/archivo-latin-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-wdth-normal.woff2") format("woff2");
  font-weight: 770; font-stretch: 83.5%; font-style: normal; font-display: swap;
  size-adjust: 99.57%; ascent-override: 90.23%; descent-override: 24.53%; line-gap-override: 0%;
  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;
}
@font-face {
  font-family: "FWRD Bold";
  src: url("/assets/fonts/archivo-latin-ext-wdth-normal.woff2") format("woff2"),
       url("https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/files/archivo-latin-ext-wdth-normal.woff2") format("woff2");
  font-weight: 770; font-stretch: 83.5%; font-style: normal; font-display: swap;
  size-adjust: 99.57%; ascent-override: 90.23%; descent-override: 24.53%; line-gap-override: 0%;
  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;
}

/* ---------------------------------------------------------------------
   3. Metric-matched local Arial: only visible for the few hundred ms before
      any web font arrives (font-display: swap). Same width + line box as PP,
      so the swap does not reflow lines. Android has no Arial -> sans-serif.
   --------------------------------------------------------------------- */
@font-face {
  font-family: "FWRD Wide Medium Local"; src: local("Arial"), local("ArialMT");
  font-weight: 500; font-style: normal;
  size-adjust: 111.55%; ascent-override: 80.54%; descent-override: 21.89%; line-gap-override: 0%;
}
@font-face {
  font-family: "FWRD Wide Dark Local"; src: local("Arial Bold"), local("Arial-BoldMT");
  font-weight: 800; font-style: normal;
  size-adjust: 108.80%; ascent-override: 82.57%; descent-override: 22.44%; line-gap-override: 0%;
}
@font-face {
  font-family: "FWRD Light Local"; src: local("Arial"), local("ArialMT");
  font-weight: 200; font-style: normal;
  size-adjust: 87.83%; ascent-override: 102.29%; descent-override: 27.80%; line-gap-override: 0%;
}
@font-face {
  font-family: "FWRD Bold Local"; src: local("Arial Bold"), local("Arial-BoldMT");
  font-weight: 700; font-style: normal;
  size-adjust: 87.02%; ascent-override: 103.24%; descent-override: 28.06%; line-gap-override: 0%;
}

/* ---------------------------------------------------------------------
   4. Role tokens. Elements only set family + the PP weight; never set
      font-stretch / font-variation-settings for these roles (the fallback
      faces pin their own axes, the PP files are static).
   --------------------------------------------------------------------- */
:root {
  --font-display:       "PP Right Grotesk Wide Medium", "FWRD Wide Medium", "FWRD Wide Medium Local", sans-serif; /* weight 500 */
  --font-display-heavy: "FWRD Wide Dark", "FWRD Wide Dark Local", sans-serif; /* weight 800 — Archivo wide cut (prototype look), not the PP Wide Dark substitute */
  --font-body:          "PP Right Grotesk Light",       "FWRD Light",       "FWRD Light Local",       sans-serif; /* weight 200 */
  --font-body-strong:   "PP Right Grotesk Bold",        "FWRD Bold",        "FWRD Bold Local",        sans-serif; /* weight 700 */
  --tracking: .02em; /* Kakadu: letter-spacing 2% of font-size on every text style */
}
body                 { font-family: var(--font-body); font-weight: 200; letter-spacing: var(--tracking); font-synthesis: none; }
h1, h2, h3, .display { font-family: var(--font-display); font-weight: 500; letter-spacing: var(--tracking); }
h1 strong, h2 strong, h3 strong, .display strong, .display-heavy
                     { font-family: var(--font-display-heavy); font-weight: 800; }
strong, b, .btn      { font-family: var(--font-body-strong); font-weight: 700; }
