/* ==========================================================================
   Source Sans 3 — vendored locally, weights 400/600/700, latin + latin-ext.
   Files from @fontsource/source-sans-3 5.0.12 (SIL Open Font License 1.1).

   WHY THIS FILE IS HAND-WRITTEN RATHER THAN THE UPSTREAM index.min.css
   ---------------------------------------------------------------------------
   The upstream stylesheet the platform loaded from the CDN declares ONE
   @font-face, at weight 400. The platform uses 600 and 700 constantly — every
   heading, every `fw-semibold`, every table header, every button label. All of
   it was being SYNTHESISED by the browser: a fake bold, smeared from the
   regular outlines, which is why headings looked slightly muddy at small sizes
   and never quite matched the design.

   So this declares the three weights the platform actually uses, with the real
   outlines for each. Nothing here is a subset of the CDN behaviour — it is
   strictly more correct than what shipped.

   WOFF2 ONLY. Every browser that can run this platform supports it, and it is
   roughly 30% smaller than WOFF. Shipping both would double the payload for a
   fallback nothing reaches.

   `font-display: swap` — text renders immediately in the fallback and swaps
   when the face arrives. On a village connection a blank heading for two
   seconds is worse than a heading in the wrong face for two seconds.
   ========================================================================== */

/* ---- 400 regular ---- */
@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('files/source-sans-3-latin-400-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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,
        U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('files/source-sans-3-latin-ext-400-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
        U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---- 600 semibold: card titles, table headers, button labels ---- */
@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('files/source-sans-3-latin-600-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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,
        U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('files/source-sans-3-latin-ext-600-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
        U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---- 700 bold: page titles, the platform name, stat figures ---- */
@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('files/source-sans-3-latin-700-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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212,
        U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Source Sans 3';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('files/source-sans-3-latin-ext-700-normal.woff2') format('woff2');
    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
        U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
