/* ============================================================
   INKSPOT — self-hosted webfonts
   Served from our own origin, never from Google, so no visitor
   IP is disclosed to a third party on page load (GDPR).
   Licences and provenance: assets/fonts/LICENCES.md
   Latin subset only. Variable where the family offers it.
   ============================================================ */

/* Archivo — display. Variable, 400 to 900. */
@font-face{
  font-family:'Archivo';
  font-style:normal;
  font-weight:400 900;
  font-display:swap;
  src:url('../fonts/archivo-var-latin.woff2') format('woff2-variations');
  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;
}

/* IBM Plex Sans — body. Variable, 400 to 700. */
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('../fonts/ibmplexsans-var-latin.woff2') format('woff2-variations');
  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;
}

/* IBM Plex Mono — specs, step numbers, colour figures. Static cuts. */
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('../fonts/ibmplexmono-400-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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../fonts/ibmplexmono-500-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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* ------------------------------------------------------------
   Metric-matched fallbacks for Archivo (24/09/2026).
   Until Archivo arrives, text renders in a local face scaled to
   Archivo's width, so headlines wrap the same way and nothing
   below them jumps when the real font swaps in (was CLS 0.107 on
   the mobile homepage). Ratios measured with fontTools on the
   headline copy: Archivo 800 vs Arial Bold 1.038, vs Roboto 700
   1.102; Archivo 400 vs Arial 0.990, vs Roboto 0.993. Arial covers
   Mac and Windows, Roboto covers Android. Ascent/descent from
   Archivo's hhea.
   ------------------------------------------------------------ */
@font-face{font-family:'Archivo Fallback';font-weight:600 900;src:local('Arial Bold'),local('Arial-BoldMT');size-adjust:103.8%;ascent-override:87.8%;descent-override:21%;line-gap-override:0%}
@font-face{font-family:'Archivo Fallback';font-weight:100 599;src:local('Arial'),local('ArialMT');size-adjust:99%;ascent-override:87.8%;descent-override:21%;line-gap-override:0%}
@font-face{font-family:'Archivo Fallback R';font-weight:600 900;src:local('Roboto Bold'),local('Roboto-Bold'),local('Roboto');size-adjust:110.2%;ascent-override:87.8%;descent-override:21%;line-gap-override:0%}
@font-face{font-family:'Archivo Fallback R';font-weight:100 599;src:local('Roboto'),local('Roboto-Regular');size-adjust:99.3%;ascent-override:87.8%;descent-override:21%;line-gap-override:0%}
