/* Self-hosted typefaces (2026-10-07). DM Sans and Outfit, SIL Open Font
   License 1.1 (OFL-DMSans.txt, OFL-Outfit.txt beside these files): free for
   commercial use and for bundling with a website. Served from our own domain
   so no visitor's IP address goes to Google Fonts. Variable files (every
   weight in one file), from @fontsource-variable 5.3.0. Each file covers one
   character range, so the browser only downloads Latin Extended when a page
   uses those letters; font-display: swap shows text at once. */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 100 1000;
  src: url(/static/fonts/dm-sans-latin-opsz-normal.woff2) format('woff2-variations'),
       url(/static/fonts/dm-sans-latin-opsz-normal.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: 'DM Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 100 1000;
  src: url(/static/fonts/dm-sans-latin-ext-opsz-normal.woff2) format('woff2-variations'),
       url(/static/fonts/dm-sans-latin-ext-opsz-normal.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: 'Outfit';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/static/fonts/outfit-latin-wght-normal.woff2) format('woff2-variations'),
       url(/static/fonts/outfit-latin-wght-normal.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: 'Outfit';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(/static/fonts/outfit-latin-ext-wght-normal.woff2) format('woff2-variations'),
       url(/static/fonts/outfit-latin-ext-wght-normal.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;
}

/* Metric-matched fallbacks: until the woff2 arrives the text is drawn in
   Arial (or Liberation Sans / Helvetica) scaled to the same width and line
   height, so the swap does not move anything (the 2026-10-07 audit traced
   0.34 of /explore's CLS to the footer reflowing on the font swap).
   Values measured from these exact files against Liberation Sans. */
@font-face {
  font-family: 'DM Sans Fallback';
  src: local('Arial'), local('ArialMT'), local('Liberation Sans'), local('Helvetica');
  size-adjust: 104.46%;
  ascent-override: 94.96%;
  descent-override: 29.68%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Outfit Fallback';
  src: local('Arial'), local('ArialMT'), local('Liberation Sans'), local('Helvetica');
  size-adjust: 97.77%;
  ascent-override: 102.28%;
  descent-override: 26.59%;
  line-gap-override: 0%;
}
