/* css/fonts.css — self-hosted Google Fonts (genererad av scripts/fetch_self_hosted_fonts.py).
 *
 * Latin-subset (U+0000-00FF) räcker för svenska + engelska. För andra
 * scripts: lägg till relevanta unicode-range-block manuellt eller
 * regenerera med utökat parsing-filter.
 *
 * `-sub`-filerna kommer ur `scripts/subset_fonts.py`, som klipper variabel-
 * axlarna till de spann vi faktiskt ritar i (2026-08-04: 143,6 → 116,9 KB,
 * −19 %). Googles filer är redan teckensubsettade — vinsten ligger helt i
 * `gvar`-deltan för axelvärden ingen regel når. Fraunces opsz är klippt till
 * 9–96 mot största Fraunces-regeln, clamp(46px, 7vw, 88px); en rubrik ÖVER
 * taket renderas tyst med takets optiska storlek, så scripts/check_sidfel.js
 * vaktar gränsen på varje sida i sid-svepet.
 * Kör om scriptet efter varje fetch_self_hosted_fonts.py — annars pekar
 * src nedan på en -sub-fil som är byggd ur en äldre källa (`--check`).
 *
 * EN fil per familj, inte en per vikt. Alla tre familjerna är VARIABLA fonter
 * med en `wght`-axel, och Google Fonts svarar därför med byte-identiskt
 * innehåll för varenda begärd vikt. Fram till 2026-07-27 sparades samma bytes
 * under fyra filnamn och deklarerades som fyra faces, så /karta hämtade
 * inter-tight ×3 + fraunces ×2 = 269 KB där 157 KB var rena dubbletter.
 *
 * Viktintervallen nedan matchar exakt de vikter som fanns som egna filer
 * förut. Uppmätt konsekvens för renderingen (samma fontfil, pinnad vikt mot
 * intervall, mätt i browsern): 300/400/500/600/700/750/800 blir IDENTISKA —
 * 300 klampas upp till 400 och 750/800 ner till 700, precis som nearest-match
 * gjorde mot vikt-filerna. Den enda som ändras är **650**, som förut snappade
 * upp till 700-filen och nu renderas som 650 (−1,2 % bredd). Det är de tolv
 * `font-weight: 650`-reglerna i css/karta.css, alltså rank-listans kommunnamn
 * och några etiketter i kart-UI:t vid 13–15 px. Skärmdumps-jämförd mot prod:
 * inte urskiljbart. Vill man ha exakt gamla utseendet är fixen att skriva 700
 * i de reglerna, inte att dela upp fonten i filer igen.
 *
 * font-display: optional (INTE swap) — med `swap` målas texten först i
 * fallback-fonten och byter sedan till web-fonten när woff2:an laddat, vilket
 * ger en synlig reflow ("nav-knapparna twitchar/rör sig" vid varje sidbyte).
 * `optional` ger en kort block-period: är fonten cachad (all intern navigering
 * efter första sidan) används den från första paint UTAN byte → noll layout-
 * shift. Kall första-vy kan visa fallback den sidan men byter aldrig mitt i.
 * Faces:arna preloadas i varje HTML-<head>. Rör inte utan att förstå denna
 * avvägning.
 *
 * De gamla `-500`/`-600`/`-700`-filerna ligger kvar i vendor/fonts/ trots att
 * inget refererar dem: fonts.css cachas ett år immutable hos Bunny, så en
 * besökare med den gamla filen i disk-cachen skulle annars få 404 på sin font.
 */

@font-face {
    font-family: 'Fraunces';
    font-style: normal;
    font-weight: 400 700;
    font-display: optional;
    src: url(/vendor/fonts/fraunces-sub.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: 'Inter Tight';
    font-style: normal;
    font-weight: 400 700;
    font-display: optional;
    src: url(/vendor/fonts/inter-tight-sub.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: 'JetBrains Mono';
    font-style: normal;
    font-weight: 400 500;
    font-display: optional;
    src: url(/vendor/fonts/jetbrains-mono-sub.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;
}
