/**
 * Self-hosted Geist.
 *
 * These faces used to come from fonts.googleapis.com, which meant every visitor
 * to every page -- including /login -- had their IP address, User-Agent and
 * Referer sent to Google before a single byte of our own content rendered. On a
 * product whose /compare/google-analytics page tells readers that GA "hands your
 * data to Google" while ours goes "into your own PostgreSQL database, and
 * nowhere else", that was the one third party we could least afford to embed.
 * It is also the specific arrangement a Munich court found unlawful under GDPR
 * in January 2022 (LG Munchen I, 3 O 17493/20): serving Google Fonts from
 * Google's CDN transmits the visitor's IP without consent.
 *
 * Serving the files ourselves removes the request entirely rather than making it
 * cheaper. There is no consent question left to answer, because there is no
 * third party.
 *
 * ## Why these files
 *
 * Geist and Geist Mono are variable fonts, so one file per subset spans the
 * whole 400-800 range the site uses -- four files, 83 KB total, versus the eight
 * static faces the old stylesheet URL enumerated. The unicode-range values are
 * copied verbatim from what Google served, so a page of pure ASCII still fetches
 * only the `latin` file and never touches `latin-ext`.
 *
 * `font-display: swap` matches the `&display=swap` the old URL carried, so
 * first-paint behaviour is unchanged: text shows immediately in the fallback and
 * swaps when Geist arrives.
 *
 * Loaded from config/ui.ts `app.head.link` so it reaches all 32 views. It cannot
 * live in public/marketing.css, which the 5 app/auth pages do not load.
 *
 * Files are downloaded from Google's own CDN at the version pinned below; Geist
 * is SIL Open Font License 1.1, which permits redistribution.
 *   Geist v5, Geist Mono v6 -- refresh by re-downloading the woff2 the css2 API
 *   serves for `family=Geist:wght@400..800` and `family=Geist+Mono:wght@400..600`.
 */

@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/geist/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;
}

@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/assets/fonts/geist/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 Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/assets/fonts/geist/geist-mono-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: 'Geist Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/assets/fonts/geist/geist-mono-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;
}
