/* =========================================================================
   USCARS — system typograficzny
   -------------------------------------------------------------------------
   Font: Geist Sans + Geist Mono, wersje zmienne (wagi 100–900 w jednym pliku).
   Licencja: SIL Open Font License 1.1 — pełny tekst w /static/fonts/GEIST-OFL.txt
   Pliki pobrane z oficjalnego CDN Google Fonts, hostowane lokalnie.

   Jeden plik jest źródłem prawdy dla: rodziny fontu, skali rozmiarów, wag,
   wysokości linii, świateł międzyliterowych i kolorów tekstu. Reguły layoutu
   NIE należą tutaj — ten arkusz nie stylizuje żadnego elementu poza `html`.
   ========================================================================= */

/* --- Geist Sans (zmienny) ------------------------------------------------ */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/static/fonts/geist-sans-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;
}

/* Polskie znaki diakrytyczne (ą ć ę ł ń ś ź ż) leżą w tym subsecie. */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/static/fonts/geist-sans-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;
}

/* --- Geist Mono (zmienny) — wyłącznie VIN i numer lotu ------------------- */
/* Zakres ograniczony do ASCII: kody pojazdów nie zawierają diakrytyków,
   więc plik nie schodzi na stronach bez VIN-u. */
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/static/fonts/geist-mono-latin.woff2') format('woff2');
  unicode-range: U+0020-007E;
}

/* --- Fallback z dopasowanymi metrykami ----------------------------------- */
/* Zmierzone w przeglądarce: tekst w Geiście jest o 1,57 % szerszy od Arial,
   ascent 1,01 em, descent 0,30 em. Dzięki temu podmiana fontu po wczytaniu
   (`font-display: swap`) nie przesuwa layoutu. */
@font-face {
  font-family: 'Geist Fallback';
  font-style: normal;
  font-weight: 100 900;
  src: local('Arial'), local('Helvetica Neue'), local('Liberation Sans');
  size-adjust: 101.57%;
  ascent-override: 99.44%;
  descent-override: 29.54%;
  line-gap-override: 0%;
}

/* =========================================================================
   Tokeny
   ========================================================================= */
:root {
  /* --- Rodziny --- */
  --t-font-body: 'Geist', 'Geist Fallback', system-ui, -apple-system,
    'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --t-font-heading: var(--t-font-body);
  --t-font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas,
    'Liberation Mono', monospace;

  /* --- Rozmiary ---
     Tytuł strony skaluje się płynnie 22 px (telefon) → 28 px (desktop).
     Pozostałe rozmiary są stałe: na stronie referencyjnej dane pojazdu i ceny
     mają na telefonie dokładnie ten sam rozmiar co na desktopie i to jest
     właściwe — problem gęstości rozwiązują odstępy, nie zmniejszanie tekstu. */
  --t-page-title: clamp(1.375rem, 0.95rem + 1.35vw, 1.75rem); /* 22 → 28 px */
  --t-section-title: 1.0625rem;  /* 17 px — nagłówek karty (h2) */
  --t-group-title: 0.6875rem;    /* 11 px — nagłówek grupy danych (h3) */
  --t-field-label: 0.75rem;      /* 12 px — etykieta pola */
  --t-field-value: 0.8125rem;    /* 13 px — wartość pola */
  --t-meta: 0.6875rem;           /* 11 px — metadane, tekst pomocniczy */
  --t-price: 1.625rem;           /* 26 px — cena główna */
  --t-price-sec: 0.9375rem;      /* 15 px — ceny drugorzędne */
  --t-price-label: 0.625rem;     /* 10 px — etykieta ceny */
  --t-body: 0.875rem;            /* 14 px — tekst ciągły */
  --t-btn: 0.90625rem;           /* 14,5 px — przyciski */
  --t-btn-sm: 0.8125rem;         /* 13 px — przyciski pomocnicze */
  --t-badge: 0.6875rem;          /* 11 px — badge statusowy */

  /* --- Wagi --- */
  --t-fw-regular: 400;
  --t-fw-medium: 500;
  --t-fw-semibold: 600;
  --t-fw-bold: 700;

  /* --- Wysokości linii --- */
  --t-lh-tight: 1.15;
  --t-lh-snug: 1.35;
  --t-lh-normal: 1.55;

  /* --- Światło międzyliterowe --- */
  --t-ls-title: -0.02em;    /* duże nagłówki */
  --t-ls-tight: -0.01em;    /* średnie nagłówki, przyciski */
  --t-ls-normal: 0;
  --t-ls-eyebrow: 0.12em;   /* małe nagłówki pisane wersalikami */
  --t-ls-mono: 0.01em;      /* VIN, numer lotu */

  /* --- Kolory tekstu ---
     Kontrast policzony na dwóch podłożach, bo katalog ma jasnoszare tło strony
     (#f4f6f9) i białe karty. Każdy kolor tekstu przechodzi WCAG AA (4,5:1)
     na obu — dlatego metadane są ciemniejsze niż typowe „szare 500”.
     Kolejność: biel / #f4f6f9. */
  --t-ink: #0d1b2a;      /* 18,0:1 / 16,7:1 — tytuł, wartość pola, cena */
  --t-label: #4d5c70;    /*  6,8:1 /  6,3:1 — etykieta pola */
  --t-muted: #5f6f86;    /*  5,2:1 /  4,8:1 — metadane, tekst pomocniczy */
  --t-ok: #15803d;       /*  5,0:1 /  4,6:1 — status pozytywny */
  --t-warn: #b45309;     /*  4,9:1 /  4,5:1 — ostrzeżenie */
  --t-bad: #b91c1c;      /*  6,4:1 /  5,9:1 — status negatywny / zakończony */
  --t-link: #1d4ed8;     /*  6,6:1 /  6,1:1 — link, akcja informacyjna */
  /* Czerwień marki jest kolorem TŁA przycisków (biały tekst na niej ma 4,6:1).
     Jako kolor tekstu na jasnym tle nie przechodzi AA — do tego służy
     --t-brand-text. */
  --t-brand: #e52229;
  --t-brand-text: #bd171d; /* 6,0:1 na #fff5f5 — czerwony tekst na jasnym tle */
  --t-on-dark: #ffffff;
  --t-on-dark-soft: #c3d0de;
}

html {
  font-family: var(--t-font-body);
  -webkit-text-size-adjust: 100%;
}
