/* ============================================================
   Kropka — Webfonts (Design System)

   ŹRÓDŁO: docs/Nowy-Design-Kropka/_ds/kropka-eduhub-design-system-
           9cab01f8-efff-4109-8fa5-976f5fbd8656/tokens/fonts.css

   ODSTĘPSTWO OD ŹRÓDŁA (świadome): źródło ładuje Inter przez @import
   z fonts.googleapis.com; my serwujemy go z repozytorium. Chrome
   aplikacji nie wykonuje żadnego zapytania do zewnętrznego hosta,
   a krój działa przy odciętym CDN.

   Historia: pierwsza wersja pliku pomijała Inter w całości, bo jedynym
   konsumentem tokenów był pasek boczny, używający wyłącznie kroju
   display. Warunek spłaty tego długu („gdy na tokeny DS przejdą
   treściowe części aplikacji") spełniły dwie wyspy naraz: ekran
   wiadomości (redesign-messages-unified, dołożył @import) i ekran
   importu z GWS (redesign-gws-import, dołożył pliki). Przy scalaniu
   wybrany został wariant z plikami — patrz DECYZJE.md.

   ŹRÓDŁO PLIKÓW INTER: fonts.gstatic.com (dystrybucja Google Fonts,
   Inter v20), podzbiory `latin` i `latin-ext` w osi zmiennej wght
   400–700. latin-ext niesie polskie znaki diakrytyczne (ą ć ę ł ń ś ź ż),
   więc oba podzbiory są wymagane. Licencja: SIL Open Font License 1.1,
   pełny tekst w fonts/Inter-OFL.txt.
   ============================================================ */

@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('fonts/PlusJakartaSans-VariableFont_wght.ttf') format('truetype-variations');
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
}

/* Inter — dwa podzbiory z unicode-range; przeglądarka pobiera latin-ext
   dopiero, gdy na stronie pojawi się znak spoza podstawowej łacinki.

   ZAKRES WAG 100–900, nie 400–700: zmierzone bezpośrednio w plikach
   (fontTools, tabela `fvar`) — oba .woff2 to prawdziwe fonty zmienne
   z osią `wght` min=100 max=400(domyślna)…900, z nazwanymi instancjami
   aż po Black (900). Deklaracja 400–700 była węższa niż realna
   zawartość pliku i obcinała dostęp do wag, które fizycznie tam są —
   podniesiona, żeby `--fw-heavy` (tokens-typography.css) faktycznie
   renderował Inter 800, a nie fallback systemowy z sufiksem 700. */
@font-face {
  font-family: 'Inter';
  src: url('fonts/Inter-Variable-latin.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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';
  src: url('fonts/Inter-Variable-latin-ext.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  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;
}

/* Łańcuchy zastępcze przepisane 1:1 ze źródła DS
   (docs/Nowy-Design-Kropka/_ds/…/tokens/typography.css:8-9). Wcześniej stało tu
   `ui-sans-serif, system-ui, sans-serif` — skrót, który wygląda niewinnie, bo
   Inter i Plus Jakarta Sans ładują się z `@font-face` wyżej i do zastępców
   nigdy nie dochodzi. Kosztował jednak jeden FAIL na KAŻDEJ kotwicy w każdym
   kontrakcie: `getComputedStyle().fontFamily` zwraca zadeklarowany łańcuch,
   nie użyty krój, więc pomiar zgodności z makietą rozjeżdżał się na wszystkim,
   co ma tekst (zmierzone: 12 z 70 rozjazdów listy tablic). */
:root {
  /* Stosy krojów przepisane ZNAK W ZNAK ze źródła DS
     (_ds/…/tokens/typography.css). Wcześniej ogon obu stosów był
     inny niż w źródle (`ui-sans-serif, system-ui, sans-serif`), przez
     co dsprobe raportował FAIL na `fontFamily` każdego komponentu
     mimo identycznego pierwszego kroju. */
  --font-display: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
  --font-body:    'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;

  /* Stos o stałej szerokości. NIE pochodzi ze źródła DS — źródło nie zna
     kroju monospace, bo makiety nie mają ani jednego miejsca, w którym
     liczy się kolumna znaku. Produkt ma dwa, i oba pokazują tekst, którego
     SKŁADNIA jest treścią: podgląd GSM-7 w kompozytorze SMS (`.kp-msg-gsm7-text`,
     gdzie różnica między `"` a `”` decyduje o koszcie wiadomości) i lista
     tematów planu nauczania (`.tpe-topics`, gdzie sufiks `| 3 h` po tytule
     ustawia wymiar godzinowy tematu).

     Awans z gołego stosu wpisanego w `.kp-msg-gsm7-text` — dokładnie na
     warunkach, które ten blok sam zapisał: „prymityw awansuje do tokenu
     przy DRUGIM konsumencie, nie przy pierwszym". Żadnego webfontu to nie
     dokłada; to wyłącznie kroje, które system już ma. */
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
