/* Archivo — SELF-HOSTED. Phase 1 of the Modernist reskin (RESKIN_IMPLEMENTATION_PLAN.md §4).
 *
 * ⚠️ DO NOT replace this with the `<link href="https://fonts.googleapis.com/css2?family=Archivo…">`
 * that the design bundle's `03-implementation-guide.md` Step 1 asks for. This app's CSP
 * (app.py::_build_content_security_policy, the GENERAL branch that serves `/` and every
 * `/sync/<tile>` page) is `style-src 'self' 'unsafe-inline'; font-src 'self'` with no Google
 * hosts — so that link is blocked on all 40+ authenticated pages. Google's hosts are allowlisted
 * ONLY on `/login` and the Maps-configured `/sync/bag-donor-pickup`, which is exactly how the
 * failure hides: a developer who tests on /login sees Archivo and concludes fonts work, while
 * the real app silently falls back to the system stack. See CLAUDE.md gotcha #339(a).
 *
 * Self-hosting needs NO CSP edit — `font-src 'self'` already permits these files, so this whole
 * phase touches zero `.py`.
 *
 * ONE VARIABLE FILE PER SUBSET covers the spec's full weight range (`font-weight: 100 900`);
 * `01-design-spec.md` calls for 400–900 and the recipes lean on 400/600/700/800. Shipping the
 * variable file means a future recipe reaching for 600 needs no new download.
 *
 * ALL THREE of Google's subsets are shipped, and that is deliberate. A subset is only
 * downloaded by a browser that actually renders one of its codepoints (`unicode-range` gates
 * it), so the extra two are free for the common case — and each one prevents a name from
 * rendering half-Archivo, half-system-font mid-word.
 *
 * ⚠️ The `vietnamese` subset is NOT optional here. Verified by decoding the shipped cmaps:
 * latin covers 230 codepoints, latin-ext 262, and NEITHER contains ễ ạ ế ộ (U+1EC5, U+1EA1,
 * U+1EBF, U+1ED9). FFN operates in Northern Virginia, home to one of the largest Vietnamese
 * communities in the country, so those codepoints appear in real donor and driver names
 * pulled from Salesforce/Donorbox. Ship all three or those names break mid-word.
 * (This was missed on the first pass — two subsets were downloaded and the comment claimed
 * the problem was solved. Check the vendor's own CSS output for the full subset list.)
 *
 * Source: Google Fonts (fonts.gstatic.com), Archivo v25, SIL Open Font License 1.1.
 * License text: ../fonts/archivo/OFL.txt. Paths are relative to this file (static/css/).
 * Block order mirrors Google's own emission order.
 */

/* vietnamese */
@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 100 900;
    font-stretch: 100%;
    font-display: swap;
    src: url('../fonts/archivo/archivo-vietnamese.woff2') format('woff2');
    unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0,
        U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* latin */
@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 100 900;
    font-stretch: 100%;
    font-display: swap;
    src: url('../fonts/archivo/archivo-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;
}

/* latin-ext */
@font-face {
    font-family: 'Archivo';
    font-style: normal;
    font-weight: 100 900;
    font-stretch: 100%;
    font-display: swap;
    src: url('../fonts/archivo/archivo-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;
}
