/* ==========================================================================
   Farmersi 2.0 — base.css
   Czcionki lokalne, reset, typografia bazowa, dostępność.
   Mobile-first (375 px).
   ========================================================================== */

/* --- Czcionki ------------------------------------------------------------
   „Bitter” (szeryfowa płyta, gazetowy charakter XIX wieku) — hostowana
   lokalnie: zero zapytań do Google Fonts, zero opóźnień zależnych od obcej
   sieci. Podzbiory latin + latin-ext (polskie znaki diakrytyczne są
   w latin-ext). Poprzednia czcionka („Rye”) nie miała polskich znaków —
   szczegóły i pomiar niżej, przy deklaracjach.
   font-display: swap — tekst jest widoczny natychmiast, font dochodzi. */

@font-face {
  font-family: 'Bitter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/bitter-400-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: 'Bitter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/bitter-400-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: 'Bitter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/bitter-700-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: 'Bitter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/bitter-700-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;
}

/* UZUPEŁNIENIE BRAKUJĄCYCH POLSKICH ZNAKÓW — USUNIĘTE.
 *
 * Wcześniej stał tu osobny krój (`Rye-Uzupelnienie`) z `unicode-range`
 * obejmującym trzy znaki, których brakowało Rye, wskazujący na lokalne
 * Clarendon/Rockwell. Zmierzyliśmy, że na tej maszynie tych krojów NIE MA,
 * więc przeglądarka i tak brała znaki z czcionki zapasowej — czyli litery
 * wyglądały obco, dokładnie tak, jak opisał właściciel. Skoro czcionka
 * nagłówkowa (Bitter, wyżej) ma KOMPLET polskich znaków, żadne łatki nie są
 * potrzebne. Pomiar: `.narzedzia/sprawdz-czcionke-w-przegladarce.js`. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

/* --- Atrybut `hidden` MUSI naprawdę ukrywać -------------------------------
 * `hidden` to atrybut HTML, ale przeglądarka obsługuje go regułą
 * `[hidden] { display: none }` z arkusza UA — a KAŻDA reguła autora, która
 * ustawia `display` (np. `.forum-formularz { display: grid }`), wygrywa z nią.
 * Skutek (zgłoszenie właściciela 18.10.2026, forum): formularz miał `hidden`,
 * a i tak był widoczny — także dla gościa, który nie może pisać.
 * Ten `!important` przywraca sens atrybutu w CAŁYM projekcie i zdejmuje
 * potrzebę pamiętania o `[hidden]` w każdej regule z `display`.
 * Pomiar i reprodukcja: `.narzedzia/proba-forum-dom.js`.
 * ------------------------------------------------------------------------ */
[hidden] {
  display: none !important;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

body {
  margin: 0;
  padding: 0;
  font-family: var(--font-tresc);
  font-size: var(--rozmiar-m);
  line-height: var(--wysokosc-linii);
  color: var(--tekst);
  background-color: var(--tlo-noc);
  /* Papierowa faktura: subtelne gradienty + drobna siatka, zero obrazków. */
  background-image:
    radial-gradient(
      ellipse at 50% 0%,
      rgba(201, 162, 39, 0.10) 0%,
      transparent 60%
    ),
    linear-gradient(180deg, #2e2314 0%, #1d150c 100%);
  background-attachment: fixed;
  min-height: 100vh;
}

/* --- Typografia -------------------------------------------------------- */

h1,
h2,
h3,
h4 {
  font-family: var(--font-naglowek);
  line-height: var(--wysokosc-linii-naglowek);
  margin: 0 0 var(--odst-3);
  font-weight: 700;
  color: var(--tekst);
  text-wrap: balance;
}

/* CZCIONKA NAGŁÓWKÓW (h1–h4) — BITTER.
   Właściciel: „czcionka w nagłówkach — przydałaby się jakaś mniej banalna",
   a po pierwszej rundzie: „może pozostałe nagłówki h3 też zrobisz tą
   stylizowaną czcionką?" — i potem, gdy zobaczył efekt: „co z tą czcionką
   w końcu? bo nie zrobiłeś zmiany."

   Miał rację. Poprzednia czcionka (Rye) NIE MIAŁA polskich znaków —
   zmierzone narzędziem, które sprawdza w przeglądarce, KTÓRA czcionka
   faktycznie narysowała znak:
       Rye 400        → brak ą ć ę ś ź ż Ą Ć Ę Ś Ź Ż
       Bitter 700     → komplet
   Litera „ą" w nagłówku „Majątek gracza" była więc rysowana przez czcionkę
   zapasową i wyglądała obco — dokładnie to, co opisał właściciel.

   Bitter jest węższy i ma prawdziwe pogrubienie, więc hierarchię budujemy
   WAGĄ i ROZMIAREM. Każdy stopień ma płynny `clamp()`, żeby długie tytuły
   („mieszkańcy posiadają", „wykorzystanie ziemi") mieściły się na 375 px. */
h1 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--rozmiar-2xl);
  letter-spacing: 0.01em;
  line-height: 1.25;
}

h2 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.0625rem, 4.4vw, var(--rozmiar-xl));
  letter-spacing: 0.01em;
  line-height: 1.3;
}

h3 {
  font-family: var(--font-display);
  font-weight: 700;
  /* 15–18 px: mniejszy stopień niż h2, ale wciąż czytelny na telefonie. */
  font-size: clamp(0.9375rem, 3.9vw, var(--rozmiar-l));
  letter-spacing: 0.01em;
  line-height: 1.35;
}

h4 {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(0.875rem, 3.5vw, var(--rozmiar-m));
  letter-spacing: 0.01em;
  line-height: 1.35;
}

p {
  margin: 0 0 var(--odst-4);
  text-wrap: pretty;
}

p:last-child {
  margin-bottom: 0;
}

ul,
ol {
  margin: 0 0 var(--odst-4);
  padding-left: var(--odst-5);
}

li {
  margin-bottom: var(--odst-1);
}

li:last-child {
  margin-bottom: 0;
}

strong,
b {
  font-weight: 700;
}

small {
  font-size: var(--rozmiar-s);
}

a {
  color: var(--akcent);
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--czas-szybki) var(--krzywa);
}

a:hover {
  color: var(--akcent-czerwony);
}

/* Liczby, waluta, współczynniki — efekt stempla, wyrównanie kolumn. */
.liczby,
.tabularnie {
  font-family: var(--font-liczby);
  font-variant-numeric: tabular-nums;
}

/* --- Dostępność -------------------------------------------------------- */

/* Widoczny fokus dla klawiatury — wymóg, w 1.0 nie istniał. */
:focus-visible {
  outline: 2px solid var(--akcent-czerwony);
  outline-offset: 2px;
  border-radius: var(--promien-s);
}

/* AUDYT WIZUALNY (19.10.2026, pkt 3): na drewnie czerwony wskaźnik fokusu
   dawał kontrast 1,2–1,45 : 1, czyli w praktyce go nie było (WCAG wymaga
   3 : 1). Złoto `--fokus-na-ciemnym` daje 4,6–6,9 : 1 i pasuje do złotego
   paska aktywnej pozycji menu, więc fokus wygląda na część projektu,
   a nie na błąd przeglądarki. */
.nawigacja :focus-visible,
.pasek-skrotow :focus-visible,
.stopka :focus-visible {
  outline: 2px solid var(--fokus-na-ciemnym);
  outline-offset: 2px;
}

/* Ukryte wizualnie, dostępne dla czytników ekranu. */
.wizualnie-ukryte {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Link "przejdź do treści" — pierwszy element tab-order. */
.przejdz-do-tresci {
  position: absolute;
  left: var(--odst-3);
  top: -100px;
  z-index: 100;
  padding: var(--odst-2) var(--odst-4);
  background: var(--akcent-czerwony);
  color: #fff;
  text-decoration: none;
  border-radius: var(--promien-s);
  font-weight: 700;
  transition: top var(--czas) var(--krzywa);
}

.przejdz-do-tresci:focus {
  top: var(--odst-3);
  color: #fff;
}

/* Cele o minimalnym rozmiarze dotykowym 44x44 px. */
@media (pointer: coarse) {
  a,
  button,
  summary,
  input[type="submit"] {
    min-height: 44px;
  }
}

/* --- Media -------------------------------------------------------------- */

img,
svg,
picture {
  max-width: 100%;
  display: block;
}

img {
  height: auto;
}

/* --- Formularze --------------------------------------------------------- */

input,
select,
textarea,
button {
  font: inherit;
  color: inherit;
}

/* ==========================================================================
   Druk — 1.0 miało "obj_ukrytydruk"; tutaj upraszczamy.
   ========================================================================== */

@media print {
  body {
    background: #fff;
    color: #000;
  }

  .nie-drukowac {
    display: none !important;
  }
}
