/* TippyTaps — self-hosted webfonts.
 *
 * Why these files sit in the repo instead of a Google Fonts <link>: the browser
 * was hiding ALL text until the font arrived. Measured on prod 2026-08-12:
 * TTFB 8 ms, first contentful paint 1964 ms — nearly two seconds of blank page
 * while the server had already finished its work.
 *
 * The cause is a rewrite we do not control. `inc/enqueue.php` asked for
 * `&display=swap` and always had; LiteSpeed replaces that enqueued URL and loads
 * the CSS through `webfontloader.min.js`, and the faces that came back carried
 * `font-display: auto`. `auto` means "hide the text for up to 3 s" — classic
 * FOIT. Self-hosting takes the rewrite out of the path: these rules are ours and
 * say `swap`.
 *
 * Toplekari is the control in this experiment. Same server, same stack, 1800
 * doctors against our 24 venues, and it paints immediately — because it already
 * self-hosts. Its TTFB and page-generation time are within noise of ours (0.09 s
 * cached / ~0.3 s cold, both sites), so "it feels slower" was never about the
 * amount of data.
 *
 * Second bug this fixes: only Hanken was ever arriving. Bricolage Grotesque —
 * every heading on the site — was silently falling back to a system face.
 *
 * VARIABLE files, one per family per subset. A weight RANGE is one file;
 * enumerating weights makes Google serve a static file per weight per subset,
 * measured previously at 18 files / 737 kB.
 *
 * Subsets: latin + latin-ext only. latin-ext carries U+0100-02BA, where Slovak
 * č ť ľ ž ď ň ĺ ŕ live. Vietnamese and Cyrillic are dropped — 164 kB total.
 *
 * ⚠️ Keep the weight ranges in step with the CSS: Bricolage is 600..800 because
 * that is the lightest `--disp` rule on the site; Hanken is 400..700. Asking for
 * a weight outside the range makes the browser synthesise it, which looks wrong
 * in a way that is hard to trace back here.
 */

@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('../fonts/bricolage-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;
}

@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('../fonts/bricolage-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: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/hanken-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;
}

@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/hanken-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;
}

/* Urbanist — the v2 redesign's only family (Claude Design handoff, 2026-10-06).
   Self-hosted for the same reason as the two above; the handoff linked Google.
   An @font-face costs nothing until a rule uses the family, and only v2.css
   does, so sites without the redesign never download it. Variable 300..800,
   normal only — no design file uses italic. */
@font-face {
  font-family: 'Urbanist';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url('../fonts/urbanist-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: 'Urbanist';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url('../fonts/urbanist-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;
}
