/* DM Sans, self-hosted.
 *
 * Was two <link> elements to fonts.googleapis.com in index.html and admin.html.
 * Three reasons that had to go, in descending order of how much they matter:
 *
 *  1. In the native app it is a THIRD-PARTY REQUEST AT LAUNCH. The bundle is
 *     served from https://localhost with no network guarantee, so the first
 *     paint of a signed-in dashboard depended on Google resolving — and on a
 *     cold cellular launch that is the splash sitting in the system font until
 *     it does. App Review reads a font fetch at launch as a network dependency
 *     the app does not need.
 *  2. It is data leaving the device to a party the privacy policy does not name.
 *     A font request carries the IP and the User-Agent. Nothing about it is
 *     hostile; it is simply a collection point we would have to declare, for a
 *     file we can ship in the bundle.
 *  3. It costs the CSP two Google-owned origins. With this file, `font-src` is
 *     'self' alone and `style-src` drops fonts.googleapis.com — it KEEPS
 *     'unsafe-inline', which privacy.html's entire stylesheet depends on
 *     (frontend/vercel.json).
 *
 * These are the SAME FOUR FILES Google serves for the requested range, fetched
 * once and committed — DM Sans is a variable font, so weights 300–900 all come
 * out of one face per subset rather than one file per weight. Downloading them
 * is what makes the italic and latin-ext coverage identical to what shipped
 * before; dropping either would silently change how accented staff names and
 * the few <i> runs render.
 *
 * DM Sans is SIL Open Font License 1.1 — self-hosting is expressly permitted.
 * The OFL requires the license travel with the font: see fonts/OFL.txt.
 *
 * Paths are root-relative, which resolves to the app bundle on native and to
 * the origin on the web. Do NOT make them absolute — that reintroduces (1).
 */

/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 300 900;
  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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 300 900;
  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;
}

/* latin-ext, italic */
@font-face {
  font-family: 'DM Sans';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(/fonts/dm-sans-italic-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;
}

/* latin, italic */
@font-face {
  font-family: 'DM Sans';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(/fonts/dm-sans-italic-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;
}
