/* ============================================================
   TOM IT — kanon tokenów marki (brand single source of truth)
   Źródło palety: wordmark marki (clients/tomit/brand/logo/wordmark-kolor.png)
                  — granat #101B25 + cyjan #57B2D2; czerwień dobrana jako akcent sygnałowy.
   Decyzja B1: clients/tomit/docs/sesje/2026-08-06-strona-internetowa-ustalenia.md
   Instancje (website/strona) wskazują TEN plik przez symlink _tokens.css.

   🔴 TO JEST JEDYNE MIEJSCE, GDZIE WOLNO ZAPISAĆ HEX I NAZWĘ KROJU.
      Szablony i CSS instancji używają wyłącznie var(--tomit-*).
      Egzekwuje to bramka WA04 (core/web-app/validate-web-app.py).

   --- Web fonts (self-hosted; TIT-01) -------------------------
   Space Grotesk (display) + Public Sans (treść), pobrane z Google Fonts (SIL OFL 1.1),
   pliki woff2 w shared/fonts/tomit/ (symlink brand/fonts → ../../../shared/fonts/tomit).
   Strona NIE ładuje z fonts.googleapis.com — decyzja B2 (RODO: transfer IP + koszt PC04).
   Licencje: shared/fonts/tomit/OFL-NOTE.txt.

   🔴 JEDEN PLIK NA RODZINĘ+SUBSET, NIE JEDEN NA WAGĘ (reguła WP-74).
      Oba kroje są ZMIENNE, więc deklaracja niesie ZAKRES (font-weight: 300 700),
      a nazwa pliku NIE zawiera numeru wagi. Dokładanie wagi z zakresu NIE wymaga
      nowego pliku. Font STATYCZNY musiałby dostać własny plik i własny blok.

   🔴 OBA SUBSETY SĄ OBOWIĄZKOWE. Google rozdziela polskie diakrytyki:
      'ó/Ó' → latin, 'ąćęłńśźż' → latin-ext. Usunięcie jednego pliku daje
      tekst z dziurami, a nie „trochę gorsze pokrycie".

   --- Dlaczego src ładuje z katalogu fonts/ i dlaczego symlink brand/fonts (SYS-20 →
   backport SYS-66, docblock core/web-app/new-web-app.sh:24-38): ścieżka w
   @font-face rozwiązuje się względem URL-a PLIKU TOKENÓW, nie względem pliku na
   dysku. W instancji tokeny są widoczne jako /_tokens.css, więc "../fonts/X.woff2"
   przeglądarka normalizuje do /fonts/X.woff2 — stąd scaffold zakłada symlink
   `fonts` w korzeniu instancji. Ten sam powód wymaga bliźniaczego symlinku
   clients/tomit/brand/fonts → ../../../shared/fonts/tomit, żeby ta sama
   ścieżka relatywna działała też przy czytaniu tokenów bezpośrednio z katalogu
   marki (np. Wizualne QA fali 0, gate-runnery). Musi być RELATYWNY, nie
   absolutny — inaczej nie przetrwa klonu repo gdzie indziej.
   ============================================================ */

@font-face{
  font-family:"Space Grotesk"; font-style:normal; font-weight:300 700; font-display:swap;
  src:url("../fonts/SpaceGrotesk-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;
}
@font-face{
  font-family:"Space Grotesk"; font-style:normal; font-weight:300 700; font-display:swap;
  src:url("../fonts/SpaceGrotesk-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;
}
@font-face{
  font-family:"Public Sans"; font-style:normal; font-weight:100 900; font-display:swap;
  src:url("../fonts/PublicSans-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;
}
@font-face{
  font-family:"Public Sans"; font-style:normal; font-weight:100 900; font-display:swap;
  src:url("../fonts/PublicSans-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;
}

:root{
  /* --- Paleta. Adnotacja `rola:` jest CZYTANA PRZEZ BRAMKĘ verify-contrast.py.
         Dozwolone wartości: tekst | dekor | tlo. Zmiana adnotacji zmienia próg. --- */
  --tomit-navy-900:#101B25;  /* rola: tekst — nagłówki, tekst podstawowy */
  --tomit-navy-700:#1C3348;  /* rola: tekst — nawigacja, stopka */
  --tomit-cyan-500:#57B2D2;  /* rola: dekor — 🔴 NIGDY POD TEKST (2,4:1 na bieli) */
  --tomit-cyan-800:#16607A;  /* rola: tekst — linki, ikony */
  --tomit-red-600:#C1121F;   /* rola: tekst — CTA, alert */
  --tomit-grey-100:#F3F4F6;  /* rola: tlo — tło boksów */
  --tomit-grey-300:#D1D5DB;  /* rola: tlo — obrysy */
  --tomit-white:#FFFFFF;     /* rola: tlo — tło strony */

  /* --- Aliasy semantyczne (szablony używają TYCH, nie nazw kolorów) --- */
  --tomit-bg:var(--tomit-white);
  --tomit-bg-box:var(--tomit-grey-100);
  --tomit-border:var(--tomit-grey-300);
  --tomit-text:var(--tomit-navy-900);
  --tomit-text-muted:var(--tomit-navy-700);
  --tomit-link:var(--tomit-cyan-800);
  --tomit-accent:var(--tomit-cyan-500);      /* dekor: kreski, tła, ikony bez tekstu */
  --tomit-cta:var(--tomit-red-600);
  --tomit-cta-text:var(--tomit-white);

  /* --- Ciemne tło sekcji (hero, cta-band). ---------------------------------
     🔴 NA GRANACIE ZAKAZY SIĘ ODWRACAJĄ. --tomit-cyan-500 ma twardy zakaz pod
        tekstem NA BIELI (2,41:1), ale na granacie jest czytelny; za to
        --tomit-link (cyan-800), poprawny na bieli, na granacie OBLEWA AA.
        Dlatego tekst na ciemnym bierze WYŁĄCZNIE tokeny z tego bloku, nigdy
        --tomit-text/--tomit-link. Egzekwuje to bramka par:
        clients/tomit/website/strona/tools/check-contrast-pairs.py
        (verify-contrast.py w tym katalogu mierzy tylko wobec bieli — NIE łapie tej klasy). */
  --tomit-bg-dark:var(--tomit-navy-900);          /* tło sekcji ciemnej */
  --tomit-bg-dark-soft:var(--tomit-navy-700);     /* wariant lżejszy / pasy wewnętrzne */
  --tomit-fg-on-dark:var(--tomit-white);          /* nagłówki i tekst na ciemnym */
  --tomit-fg-on-dark-muted:var(--tomit-grey-300); /* tekst przygaszony na ciemnym */
  --tomit-accent-on-dark:var(--tomit-cyan-500);   /* akcent czytelny NA GRANACIE */
  --tomit-border-dark:var(--tomit-navy-700);      /* obrysy wewnątrz sekcji ciemnej */

  /* --- Typografia --- */
  --tomit-font-display:"Space Grotesk", ui-sans-serif, system-ui, sans-serif;
  --tomit-font-body:"Public Sans", ui-sans-serif, system-ui, sans-serif;

  --tomit-fs-h1:clamp(2rem, 4vw, 3.25rem);
  --tomit-fs-h2:clamp(1.5rem, 2.5vw, 2.125rem);
  --tomit-fs-h3:1.25rem;
  --tomit-fs-body:1.0625rem;
  --tomit-fs-small:0.875rem;
  --tomit-lh-tight:1.12;
  --tomit-lh-body:1.65;
  --tomit-tracking-display:-0.02em;

  /* --- Rytm i forma --- */
  --tomit-space-1:0.5rem;  --tomit-space-2:1rem;   --tomit-space-3:1.5rem;
  --tomit-space-4:2.5rem;  --tomit-space-5:4rem;
  --tomit-radius:14px;
  --tomit-radius-pill:999px;
  --tomit-maxw:1140px;
  --tomit-shadow:0 8px 24px rgba(16,27,37,0.06);
}
