/* ============================================================================
   fonts.css — self-hosted webfaces, no CDN.

   Five faces, all SIL Open Font License, so self-hosting and redistributing
   them inside the product is permitted:

     Cinzel               variable 500-900   --font-cinzel     body of chrome, labels
     Cinzel Decorative    700 / 900 static   --font-display    hero titles, chapter names
     Uncial Antiqua       400 static         --font-rune-latin fallback only — see note below
     MedievalSharp        400 static         --font-scroll     narrative prose (Chronicle, Journal)
     Plus Jakarta Sans    variable 300-700   --font-sans       UI copy, buttons, forms

   SELF-HOSTED, NOT LINKED, for three reasons — any one would be enough:
     1. The whole point of this rebuild is that the app works with zero network.
        A Google Fonts request is the single biggest reason "100% Offline Ready"
        was false in the previous build (sw.js could never cache a cross-origin,
        non-basic response).
     2. A font request from file:// (the standalone hand-off HTML) needs
        crossorigin, and crossorigin over file:// is a CORS failure against a
        null origin — console errors and dead requests for a buyer who asked
        the shop for the raw HTML file.
     3. _headers below locks script-src/style-src/font-src to 'self', so a CDN
        font would be blocked by our own CSP anyway.

   Only latin + latin-ext are shipped (rider names need accented Latin
   characters; no other script is needed) — 222 KB for all 12 files. Variable
   instances (Cinzel, Plus Jakarta Sans) are stored ONCE per subset and the
   weight range is declared on the @font-face rule instead of duplicating the
   same bytes per weight — that also matters for build-single.js, which
   base64-inlines whatever this file references: three copies of the same
   25 KB variable font would have meant +50 KB of dead weight in the
   standalone hand-off for nothing.

   NOTE on Uncial Antiqua: it does NOT cover the Runic Unicode block (U+16A0–
   U+16FF). The previous build used it to render literal rune glyphs (ᛟ, ᚠ, ᚢ…)
   and they silently fell back to the system font — invisible or tofu boxes on
   most Android devices. Runes are drawn as inline SVG now (see decor.css /
   the icon sprite in index.html), not as Unicode text in this font. Uncial
   Antiqua is kept only for the rare decorative Latin drop-cap or label that
   wants that specific illuminated-manuscript letterform.
   ============================================================================ */

/* -- Cinzel (chrome / labels) — variable, one file per subset -------------- */

@font-face {
  font-family: 'Cinzel';
  font-style: normal;
  font-weight: 500 900;
  font-display: swap;
  src: url('../assets/fonts/cinzel-500-700-900-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: 'Cinzel';
  font-style: normal;
  font-weight: 500 900;
  font-display: swap;
  src: url('../assets/fonts/cinzel-500-700-900-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* -- Cinzel Decorative (display) — two discrete static cuts ---------------- */

@font-face {
  font-family: 'Cinzel Decorative';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../assets/fonts/cinzel-decorative-700-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: 'Cinzel Decorative';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../assets/fonts/cinzel-decorative-700-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Cinzel Decorative';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url('../assets/fonts/cinzel-decorative-900-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: 'Cinzel Decorative';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url('../assets/fonts/cinzel-decorative-900-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* -- Uncial Antiqua — kept only for the rare decorative Latin use ---------- */

@font-face {
  font-family: 'Uncial Antiqua';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/fonts/uncial-antiqua-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: 'Uncial Antiqua';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/fonts/uncial-antiqua-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* -- MedievalSharp (narrative prose) --------------------------------------- */

@font-face {
  font-family: 'MedievalSharp';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/fonts/medievalsharp-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: 'MedievalSharp';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/fonts/medievalsharp-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* -- Plus Jakarta Sans (UI copy) — variable, one file per subset ----------- */

@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../assets/fonts/plus-jakarta-sans-300-400-500-600-700-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2122, U+2191, U+2193, U+2212, U+2215;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../assets/fonts/plus-jakarta-sans-300-400-500-600-700-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-024F, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  --font-cinzel: 'Cinzel', Georgia, 'Times New Roman', serif;
  --font-display: 'Cinzel Decorative', Georgia, serif;
  --font-rune-latin: 'Uncial Antiqua', var(--font-display);
  --font-scroll: 'MedievalSharp', Georgia, serif;
  --font-sans: 'Plus Jakarta Sans', -apple-system, 'Segoe UI', system-ui, sans-serif;
}
