/* ==========================================================================
   BizJump Start LLP — self-hosted type
   --------------------------------------------------------------------------
   Self-hosted rather than loaded from Google Fonts, for three reasons:

   1. Privacy. A Google Fonts request hands the visitor's IP address to a
      third party on every page view. Removing it is what lets this site ship
      with no cookie/consent banner and a privacy policy that is simply true.
   2. Performance. No extra DNS + TLS handshake to fonts.googleapis.com and
      fonts.gstatic.com before the first glyph can be requested.
   3. Stability. The files cannot change or disappear underneath the design.

   Files are variable fonts instanced down to the axis ranges this design
   actually uses (see tools/make-fonts.py), which takes the set from 288 KB
   to 222 KB.

   The @font-face fallback blocks at the bottom carry ascent/descent overrides
   so the fallback occupies the same vertical space as the real face. Without
   them, `font-display: swap` reflows the page when the webfont lands.
   ========================================================================== */

/* Archivo — display. wght 440–660, wdth 108–122%. */
@font-face {
  font-family: 'Archivo';
  src: url('/assets/fonts/archivo.woff2') format('woff2-variations');
  font-weight: 440 660;
  font-stretch: 108% 122%;
  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+2074, U+20AC,
                 U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Newsreader — body serif. wght 340–580, optical size retained. */
@font-face {
  font-family: 'Newsreader';
  src: url('/assets/fonts/newsreader.woff2') format('woff2-variations');
  font-weight: 340 580;
  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+2074, U+20AC,
                 U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Newsreader italic — the clause inside headlines, and pull quotes. */
@font-face {
  font-family: 'Newsreader';
  src: url('/assets/fonts/newsreader-italic.woff2') format('woff2-variations');
  font-weight: 340 520;
  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+2074, U+20AC,
                 U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* IBM Plex Mono — eyebrows, codes, coordinates, status. Static cuts. */
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/plexmono-400.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/plexmono-500.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

/* --------------------------------------------------------------------------
   Metric-matched fallbacks.

   Percentages are taken from each real face (tools/make-fonts.py prints them)
   so the substitute renders at the same ascent, descent and line box. The
   swap then changes the letterforms without moving a single line of text.
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Archivo Fallback';
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  ascent-override: 87.8%;
  descent-override: 21%;
  line-gap-override: 0%;
  size-adjust: 100%;
}

@font-face {
  font-family: 'Newsreader Fallback';
  src: local('Georgia'), local('Times New Roman'), local('Liberation Serif');
  ascent-override: 73.5%;
  descent-override: 26.5%;
  line-gap-override: 0%;
  size-adjust: 106%;
}

@font-face {
  font-family: 'Plex Mono Fallback';
  src: local('Consolas'), local('Menlo'), local('DejaVu Sans Mono');
  ascent-override: 102.5%;
  descent-override: 27.5%;
  line-gap-override: 0%;
  size-adjust: 100%;
}
