/* ============================================================
   FONTS — self-hosted Outfit + DM Sans (latin subset, variable).

   Served same-origin, so they are no longer gated behind a second
   DNS lookup + TLS handshake to fonts.gstatic.com. Both files are
   preloaded from the page <head>.

   Each family is paired with per-weight metric-adjusted fallback faces.
   The fallback is the local Arial/Helvetica remapped so it occupies the
   SAME space as the webfont, which means the swap costs no layout shift.
   size-adjust values were measured in-browser; see the generator notes.
   ============================================================ */

@font-face {
    font-family: 'Outfit';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('/fonts/outfit-latin-var.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-weight: 400 600;
    font-display: swap;
    src: url('/fonts/dmsans-latin-var.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 (no-shift swap) ---------- */

@font-face {
    font-family: 'Outfit Fallback';
    font-style: normal;
    font-weight: 400;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 101.43%;
    ascent-override: 98.59%;
    descent-override: 25.63%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'Outfit Fallback';
    font-style: normal;
    font-weight: 500;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 102.06%;
    ascent-override: 97.98%;
    descent-override: 25.48%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'Outfit Fallback';
    font-style: normal;
    font-weight: 600;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 94.76%;
    ascent-override: 105.53%;
    descent-override: 27.44%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'Outfit Fallback';
    font-style: normal;
    font-weight: 700;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 96.72%;
    ascent-override: 103.39%;
    descent-override: 26.88%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'Outfit Fallback';
    font-style: normal;
    font-weight: 800;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 86.46%;
    ascent-override: 115.66%;
    descent-override: 30.07%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'DM Sans Fallback';
    font-style: normal;
    font-weight: 400;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 106.11%;
    ascent-override: 93.49%;
    descent-override: 29.21%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'DM Sans Fallback';
    font-style: normal;
    font-weight: 500;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 108.70%;
    ascent-override: 91.26%;
    descent-override: 28.52%;
    line-gap-override: 0.00%;
}

@font-face {
    font-family: 'DM Sans Fallback';
    font-style: normal;
    font-weight: 600;
    src: local('Arial'), local('Helvetica'), local('Liberation Sans');
    size-adjust: 101.70%;
    ascent-override: 97.54%;
    descent-override: 30.48%;
    line-gap-override: 0.00%;
}
