/* Fresh brand fonts (Chris approved the Fresh look on Oct 10, 2026). Used by BOTH apps: classic (index.html) and v3 (v3/index.html).
 *
 * The brand font is GeoSlab703. It is a licensed DESKTOP font, so the web app ships a free look-alike until Chris confirms a web licence:
 *   Arvo (geometric slab serif, SIL Open Font License 1.1)   Regular 400 for reading, Bold 700 for headings.   fonts/Arvo-OFL.txt
 *   Rock Salt (hand-lettered, Apache License 2.0)            ONLY for a one-word or short-phrase emphasis      fonts/RockSalt-LICENSE.txt
 *                                                            ("Hi", "Welcome", "Good morning", "Tonight", "Fresh"). Never body text, never numbers.
 *
 * Where the files came from (all self-hosted here; the page never calls an outside font server):
 *   arvo-400-v5.3.0.woff2, arvo-700-v5.3.0.woff2   npm @fontsource/arvo 5.3.0, latin subset (cdn.jsdelivr.net)
 *   rock-salt-letters-v24.woff2                    Google Fonts Rock Salt v24, cut to the letters A-Z a-z plus space ! & ' , - . ?  (23 KB instead of 58 KB)
 *                                                  The unicode-range below matches that cut, so any other character simply falls back.
 * File names carry the version: /fonts/* is cached for a year (immutable), so a NEW file must get a NEW name.
 *
 * Speed: font-display: swap (text shows at once in the fallback, then swaps). Nothing is preloaded: a browser downloads a face only when a
 * visible element uses it, so classic and v3 fetch at most these three small files, once, then serve them from the cache.
 *
 * SWAPPING TO THE REAL BRAND FONT LATER (one line): add GeoSlab703 @font-face rules here (web licence first; NEVER copy the PRIVATE-GeoSlab files
 * from docs/mockups into web/src or anything published) and change --font-main below to start with "GeoSlab703". Every screen reads --font-main.
 */
@font-face {
  font-family: 'Arvo';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/arvo-400-v5.3.0.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;
}
@font-face {
  font-family: 'Arvo';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/arvo-700-v5.3.0.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;
}
@font-face {
  font-family: 'Rock Salt';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/rock-salt-letters-v24.woff2) format('woff2');
  unicode-range: U+20-21, U+26-27, U+2C-2E, U+3F, U+41-5A, U+61-7A;
}
/* FALLBACK FACES WITH ARVO'S SIZE (no jump when the real font arrives). Until the brand font has downloaded, text is drawn in the phone's
 * own Georgia (iPhone and Mac have it), stretched to take the same room as Arvo: same line widths, same line heights. So when Arvo swaps in,
 * lines do not re-wrap and nothing below moves (layout shift). Numbers measured in Chrome on Oct 11 2026 with a 100-character sample
 * (canvas measureText): Arvo 400 is 9.0% wider than Georgia 400, Arvo 700 0.8% narrower than Georgia Bold; Arvo ascent 0.96 em, descent 0.25 em.
 * ascent/descent below = Arvo's value divided by size-adjust. A phone without Georgia simply skips these faces. Same idea for Rock Salt
 * (Bradley Hand on Apple phones). When GeoSlab703 replaces Arvo, measure again and change these numbers. */
@font-face { font-family: 'Arvo Fallback'; font-weight: 400; src: local('Georgia'); size-adjust: 109%; ascent-override: 88%; descent-override: 23%; line-gap-override: 0%; }
@font-face { font-family: 'Arvo Fallback'; font-weight: 700; src: local('Georgia Bold'), local('Georgia-Bold'); size-adjust: 99.2%; ascent-override: 96.8%; descent-override: 25.2%; line-gap-override: 0%; }
@font-face { font-family: 'Rock Salt Fallback'; src: local('Bradley Hand'), local('BradleyHandITCTT-Bold'); size-adjust: 128%; ascent-override: 123.4%; descent-override: 60.2%; line-gap-override: 0%; }
:root {
  --font-main: 'Arvo', 'Arvo Fallback', 'Rockwell', 'Roboto Slab', Georgia, serif;   /* EVERYTHING (body 400, headings 700). The one line to change for GeoSlab703. */
  --font-accent: 'Rock Salt', 'Rock Salt Fallback', 'Bradley Hand', 'Segoe Print', cursive;   /* one-word emphasis only */
}
