/* ---------------------------------------------------------------------------
   Self-hosted fonts. No third-party font requests, so the app can run under a strict CSP -
   which matters here, because the auth token lives in browser storage and script injection
   is the threat that replaces the OS keychain mobile relies on.

   Both files are variable fonts, so one file covers every weight we use.

   material-symbols-rounded.woff2 is SUBSET to only the icon codepoints the apps actually
   use (5.1MB full font -> 113KB). Adding a new icon to a screen therefore requires
   regenerating it: see tools/fonts/regenerate-icon-font.sh. If an icon renders as an empty
   box, that is the cause.
   --------------------------------------------------------------------------- */

/* Encode Sans - the text face registered in the MAUI heads as
   Regular / Medium / SemiBold / Bold. Variable across 400-700. */
@font-face {
    font-family: "Encode Sans";
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url("../fonts/encode-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+2074, U+20AC, U+2122, U+2191,
                   U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Material Symbols Rounded - the "Icons" alias on mobile. Shares codepoints with the
   bundled MaterialSymbolsRounded.ttf, so every glyph hardcoded in the XAML renders the same.
   display:block rather than swap: a fallback face has no glyphs at these private-use
   codepoints, so swapping would flash replacement boxes rather than readable text. */
@font-face {
    font-family: "Material Symbols Rounded";
    font-style: normal;
    font-weight: 100 700;
    font-display: block;
    src: url("../fonts/material-symbols-rounded.woff2") format("woff2");
}
