/* Nash self-hosted webfonts.
 *
 * Replaces the render-blocking https://fonts.googleapis.com/css2 <link>. That
 * link cost ~780ms on the critical path on throttled mobile: a DNS + TLS +
 * fetch to fonts.googleapis.com, whose response then pointed at a SECOND
 * origin (fonts.gstatic.com) for another DNS + TLS before a single glyph
 * started downloading. Same-origin woff2 removes both hops, and the
 * @font-face rules are inlined into <head> on the pages that matter, so
 * there is no stylesheet round trip at all.
 *
 * All four families are VARIABLE fonts: Google's css2 API pointed every
 * requested weight (300..700) at one file per family+subset, which a static
 * font cannot do. So each block below declares the weight RANGE the variable
 * axis covers instead of Google's one-block-per-weight expansion (75 blocks
 * -> 8), and the browser interpolates exactly as before.
 *
 * Subsets: latin + latin-ext only. Google also served cyrillic, cyrillic-ext,
 * vietnamese and symbols2; the site is English and never matched them, so
 * they are dropped. unicode-range values are copied verbatim from Google's
 * output, so the browser still only downloads a file when a glyph needs it
 * (latin-ext stays lazy).
 *
 * font-display: swap everywhere — text paints immediately in the fallback and
 * swaps when the webfont lands. Several other pages requested display=block,
 * which hides text until the font arrives; do not reintroduce that.
 *
 * Regenerating: refetch the css2 URL, re-extract the latin/latin-ext woff2
 * URLs, and re-download into assets/fonts/. Bump ?v= on every consumer.
 */

/* Host Grotesk — headings, body copy. Primary brand face. */
@font-face {
  font-family: 'Host Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('fonts/hostgrotesk-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: 'Host Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('fonts/hostgrotesk-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;
}

/* Geist Mono — eyebrows, kickers, tick feeds, tabular numerics. */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('fonts/geistmono-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: 'Geist Mono';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('fonts/geistmono-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;
}

/* Geist — secondary sans, used in platform/agent surfaces. */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('fonts/geist-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: 'Geist';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('fonts/geist-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;
}

/* Montserrat — .spark-* only. Never preloaded: it stays unfetched until a
   .spark-* element actually renders, which is why 400/500 is the whole ask. */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url('fonts/montserrat-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: 'Montserrat';
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url('fonts/montserrat-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;
}
