/* Self-hosted DM Sans and Sora. Variable files cover the weights the
   pages actually set: DM Sans 400–700, Sora 400–800. */
@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/fonts/dm-sans-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: "DM Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/fonts/dm-sans-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: "Sora";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/fonts/sora-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: "Sora";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("/fonts/sora-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;
}

/* Metric-matched fallbacks. While Sora and DM Sans load, text renders in a
   local font scaled to the same size, so nothing reflows when the web fonts
   swap in. Arial/Helvetica cover desktop and iOS, Roboto covers Android.
   Values follow Capsize's method, measured from the self-hosted files at
   wght 400 and 700. Weights 600 and up use the 700 face. */

@font-face {
  font-family: "Sora Fallback";
  font-weight: 400;
  src: local("Arial"), local("ArialMT"), local("Helvetica"), local("Liberation Sans");
  ascent-override: 85.3939%;
  descent-override: 25.5301%;
  line-gap-override: 0%;
  size-adjust: 113.5912%;
}

@font-face {
  font-family: "Sora Fallback";
  font-weight: 700;
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Helvetica Bold"), local("Liberation Sans Bold");
  ascent-override: 90.0794%;
  descent-override: 26.9310%;
  line-gap-override: 0%;
  size-adjust: 107.6828%;
}

@font-face {
  font-family: "Sora Fallback Roboto";
  font-weight: 400;
  src: local("Roboto"), local("Roboto Regular"), local("Roboto-Regular");
  ascent-override: 85.2137%;
  descent-override: 25.4762%;
  line-gap-override: 0%;
  size-adjust: 113.8315%;
}

@font-face {
  font-family: "Sora Fallback Roboto";
  font-weight: 700;
  src: local("Roboto Bold"), local("Roboto-Bold");
  ascent-override: 84.8624%;
  descent-override: 25.3712%;
  line-gap-override: 0%;
  size-adjust: 114.3027%;
}

@font-face {
  font-family: "DM Sans Fallback";
  font-weight: 400;
  src: local("Arial"), local("ArialMT"), local("Helvetica"), local("Liberation Sans");
  ascent-override: 93.9354%;
  descent-override: 29.3548%;
  line-gap-override: 0%;
  size-adjust: 105.6044%;
}

@font-face {
  font-family: "DM Sans Fallback";
  font-weight: 700;
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Helvetica Bold"), local("Liberation Sans Bold");
  ascent-override: 95.2305%;
  descent-override: 29.7595%;
  line-gap-override: 0%;
  size-adjust: 104.1683%;
}

@font-face {
  font-family: "DM Sans Fallback Roboto";
  font-weight: 400;
  src: local("Roboto"), local("Roboto Regular"), local("Roboto-Regular");
  ascent-override: 93.7372%;
  descent-override: 29.2929%;
  line-gap-override: 0%;
  size-adjust: 105.8278%;
}

@font-face {
  font-family: "DM Sans Fallback Roboto";
  font-weight: 700;
  src: local("Roboto Bold"), local("Roboto-Bold");
  ascent-override: 89.7152%;
  descent-override: 28.0360%;
  line-gap-override: 0%;
  size-adjust: 110.5721%;
}
