/**
 * Styl uniwersalny (pilotaz) - user 2026-08-06: "Robimy styl uniwersalny dla
 * wszystkich for [...] Wywalamy te naglowki i tabele trzymajace forum -
 * calosc przechodzi w skalowalny CSS [...] Baza jest styl zero jasny -
 * dorob rowniez wersje ciemna [...] Szerokosc bazowa 1200px."
 *
 * Zastepuje tabelkowy uklad styl_forum0-9.css semantycznym HTML + CSS
 * (flex/grid). Kolory jasnego motywu wziete 1:1 ze styl_forum0.css (baza
 * per zadanie). Uzywane WYLACZNIE przez layouts/forum-v2.php + pages/v2/*
 * (patrz Forum::biezace()/View::render() - pilotaz, na razie tylko
 * sp7pki.iq24.pl). Stare style_forumN.css zostaja bez zmian.
 *
 * Motyw: :root = jasny (domyslny i jedyny, dopoki odwiedzajacy sam nie
 * wybierze inaczej - user 2026-08-06: "niech domyslnym trybem bedzie tryb
 * jasny"; CELOWO bez auto-wykrywania prefers-color-scheme systemu). Ciemny
 * wlacza sie WYLACZNIE jawnym wyborem w przelaczniku - atrybutem
 * data-motyw="ciemny" na <html> (ustawianym server-side z ciasteczka
 * iq24_motyw w forum-v2.php, zeby nie bylo mrugniecia przy ladowaniu).
 *
 * Skala czcionki: przelacznik A-/A+ (public/js/preferencje.js) zmienia
 * --skala inline na <html> (krok -2..+2, patrz forum-v2.php); cala reszta
 * pliku jest w rem, wiec skaluje sie proporcjonalnie.
 */

/* ===================================================== RESET / PODSTAWY */

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

html {
  /* 100% = domyslny rozmiar przegladarki (zwykle 16px); --skala mnozy go,
     NIE mnozy wlasnego font-size (uniknieta cyrkularnosc rem-do-rem). */
  font-size: calc(100% * var(--skala, 1));
}

body {
  margin: 0;
  font-family: var(--font);
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--tekst);
  background: var(--tlo);
}

a { color: var(--link); text-decoration: none; }
a:hover, a:focus-visible { color: var(--link-hover-tekst); background: var(--link-hover-tlo); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--link-hover-tlo);
  outline-offset: 1px;
}

h1 { font-size: 1.5rem; font-weight: bold; text-wrap: balance; margin: 0.6em 0; }
h2 { font-size: 1.125rem; font-weight: bold; margin: 0.6em 0; }

/* tlo/kolor jawnie, nie tylko font - <meta name="color-scheme" content="light
   dark"> w layouts/forum-v2.php (potrzebne, zeby np. suwaki/scrollbar tez
   podazaly za motywem) ma efekt uboczny: przegladarka sama nakleja WLASNE,
   natywne ciemne tlo na kazdy input/textarea/select bez jawnego tla, gdy
   system/przegladarka odwiedzajacego jest w trybie ciemnym - NIEZALEZNIE od
   wybranego na stronie data-motyw="jasny" (zgloszenie usera: pola logowania,
   Szukaj, ShoutBox wygladaly na ciemno mimo jasnego motywu strony). */
textarea, input, select {
  font-family: var(--font);
  font-size: 0.875rem;
  background: var(--tlo-karty);
  color: var(--tekst-mocny);
  /* <select> sam sie rozciaga do szerokosci najdluzszej <option> (nazwy
     dzialow potrafia byc dlugie) i bez tego wychodzil poza ramke na mobile
     (zgloszenie usera - "przenieś do działu" w administruj-tematem.php). */
  max-width: 100%;
}
button {
  font-family: var(--font);
  font-size: 0.875rem;
}

img { max-width: 100%; height: auto; }

table { border-collapse: collapse; } /* tresc wlasciciela forow czesto ma wlasne tabele */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}

/* ===================================================== TOKENY: JASNY */

:root {
  --font: verdana, tahoma, helvetica, arial, sans-serif;

  --tlo: #FFFFFF;
  --tlo-karty: #f7f7fb;
  --tlo-karty-alt: #ececf5;
  --tekst: #535353;
  --tekst-mocny: #272727;
  --tekst-przygaszony: #6b6b6b;

  --link: #3300CC;
  --link-hover-tekst: #000000;
  --link-hover-tlo: #ff9a00;

  --akcent-tekst: #000099;
  --akcent-tlo: #C9CDEF;

  --naglowek-tekst: #ffffff;
  --naglowek-tlo: #5353C4;

  --tytul-watku: #330099;
  --tytul-watku-alt: #B74F35;

  --komunikat-neutralny-tlo: #C9CDEF;
  --komunikat-neutralny-ramka: #000099;
  --komunikat-pozytywny-tlo: #C8E2C5;
  --komunikat-pozytywny-ramka: #41893D;
  --komunikat-negatywny-tlo: #FAD0C9;
  --komunikat-negatywny-ramka: #FF0000;

  --przycisk-tlo: #6c7bff;
  --przycisk-tekst: #ffffff;
  --przycisk-tlo-cichy: #e4e4e4;
  --przycisk-tekst-cichy: #3a3a3a;

  --linia: #d8d8e6;
  --ramka-obwodka: #000099;

}

/* ===================================================== TOKENY: CIEMNY */

/* User 2026-08-06: "niech domyslnym trybem bedzie tryb jasny" - bez
   ciasteczka strona ZAWSZE startuje jasno, niezaleznie od preferencji
   systemu/przegladarki odwiedzajacego. Ciemny wlacza sie WYLACZNIE
   jawnym wyborem w przelaczniku (data-motyw="ciemny" ponizej) - celowo
   USUNIETY wczesniejszy @media (prefers-color-scheme:dark) fallback. */
:root[data-motyw="ciemny"] {
  --tlo: #1a1c25;
  --tlo-karty: #242631;
  --tlo-karty-alt: #2b2e3a;
  --tekst: #d8d9e2;
  --tekst-mocny: #eef0f8;
  --tekst-przygaszony: #a9abb8;

  --link: #8c96ff;
  /* Pomaranczowe tlo jak w jasnym motywie (user 2026-08-06: probowalismy
     innej barwy tla - #aab3ff - ale user wrocil do pomaranczowego "co
     poprzednio", tylko z czarnym tekstem zamiast #1a1c25 tla strony -
     "po najechaniu zmieniaj kolor czcionki na czarny"). Efekt: hover w
     ciemnym motywie identyczny jak w jasnym. */
  --link-hover-tekst: #000000;
  --link-hover-tlo: #ff9a00;

  --akcent-tekst: #c7ccff;
  --akcent-tlo: #2b2e6b;

  --naglowek-tekst: #e4e6ff;
  --naglowek-tlo: #3d3f8f;

  --tytul-watku: #a6b0ff;
  --tytul-watku-alt: #e08a6f;

  --komunikat-neutralny-tlo: #2b2e6b;
  --komunikat-neutralny-ramka: #8c96ff;
  --komunikat-pozytywny-tlo: #1f3d24;
  --komunikat-pozytywny-ramka: #5fbf68;
  --komunikat-negatywny-tlo: #3d1f1f;
  --komunikat-negatywny-ramka: #ff6b6b;

  --przycisk-tlo-cichy: #333648;
  --przycisk-tekst-cichy: #d8d9e2;

  --linia: #383b4a;
  --ramka-obwodka: #4d51a8;
}

/* ===================================================== UKLAD STRONY */

.ramka {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 10px;
}

/* ===================================================== TYTUL FORUM */
/* Nazwa forum (fora.nazwa_www - to samo zrodlo co <title>/og:title, skrocone
   do 3 slow w layouts/forum-v2.php - patrz $tytulMasztu tam) jako maly
   masztowy naglowek na samej gorze strony, nad trescia wlasciciela - jedyny
   <h1> na stronie. Font Rockwell/Georgia to SWIADOMY, punktowy wyjatek od
   "font strony zostaje verdana/tahoma" (user 2026-08-06 wczesniej) - dotyczy
   WYLACZNIE tego jednego masztowego elementu, wybrany recznie z 12
   pokazanych propozycji ("Mocny maszt"), reszta strony (belka, tresc,
   przyciski) zostaje bez zmian na --font. */
.tytul-forum {
  text-align: left;
  font-family: Rockwell, Georgia, serif;
  font-size: 1.75rem;
  font-weight: bold;
  color: var(--tytul-watku);
  text-wrap: balance;
  overflow-wrap: anywhere; /* siatka bezpieczenstwa: limit 3 slow w PHP nie
    lapie jednego bardzo dlugiego "slowa" bez spacji (np. wpisanego bez
    spacji przez wlasciciela forum) - to i tak zawinie sie zamiast rozepchac
    uklad, patrz cel usera "zeby nie rozwalilo layoutu". */
  margin: 10px 0 6px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--linia);
}
@media (max-width: 768px) {
  .tytul-forum { font-size: 1.375rem; }
}

/* ===================================================== PASEK MOTYWU */
/* Przelacznik motywu + A-/A+ (public/js/preferencje.js) - jeden pasek nad
   belka-gorna, wyrownany do prawej. .preferencje grupuje tylko A-/A+
   (odstep miedzy nimi wlasny), przycisk motywu jest bezposrednim dzieckiem
   .pasek-motywu - styl przycisku wspolny dla obu przez selektor ponizej. */

.pasek-motywu { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin: 8px 0 0; }
.preferencje { display: flex; gap: 4px; align-items: center; }
.pasek-motywu button {
  background: var(--przycisk-tlo-cichy);
  color: var(--przycisk-tekst-cichy);
  border: 1px solid var(--linia);
  border-radius: 3px;
  padding: 2px 8px;
  cursor: pointer;
  font-size: 0.8125rem;
  line-height: 1.4;
}
.pasek-motywu button:hover { background: var(--link-hover-tlo); color: #000; }

/* ===================================================== BELKA GORNA */

.belka-gorna {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 20px;
  background: var(--akcent-tlo);
  color: var(--akcent-tekst);
  border: 2px solid var(--ramka-obwodka);
  border-radius: 4px;
  padding: 8px 12px;
  margin: 8px 0;
  font-size: 0.8125rem;
}
.belka-gorna a { color: var(--akcent-tekst); text-decoration: underline; }
.belka-gorna a:hover { color: var(--link-hover-tekst); background: var(--link-hover-tlo); }
.belka-gorna__nav { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; }
.belka-gorna__login { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; margin: 0; }
.belka-gorna__login label { white-space: nowrap; }
.belka-gorna__login input {
  width: 8rem;
  max-width: 30vw;
  padding: 2px 4px;
  border: 1px solid var(--linia);
  border-radius: 3px;
}
@media (max-width: 700px) {
  .belka-gorna { justify-content: center; text-align: center; }
  .belka-gorna__login input { width: 6rem; }
}

/* ===================================================== OKRUSZKI */

.okruszki {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 8px 0;
  font-size: 0.8125rem;
}
.okruszki a { text-decoration: underline; }

/* ===================================================== KOMUNIKATY */

.komunikat {
  border: 1px solid;
  border-radius: 4px;
  padding: 10px;
  margin: 8px 0;
  text-align: center;
}
.komunikat--neutralny { background: var(--komunikat-neutralny-tlo); border-color: var(--komunikat-neutralny-ramka); color: var(--akcent-tekst); }
.komunikat--pozytywny { background: var(--komunikat-pozytywny-tlo); border-color: var(--komunikat-pozytywny-ramka); color: #1f3d24; }
.komunikat--negatywny { background: var(--komunikat-negatywny-tlo); border-color: var(--komunikat-negatywny-ramka); color: #5a1a1a; }
:root[data-motyw="ciemny"] .komunikat--pozytywny { color: var(--tekst-mocny); }
:root[data-motyw="ciemny"] .komunikat--negatywny { color: var(--tekst-mocny); }

/* ===================================================== LISTY (dzialy/tematy) */

.lista { display: flex; flex-direction: column; gap: 2px; margin: 8px 0; border-radius: 4px; overflow: hidden; }
.lista__kategoria {
  background: var(--akcent-tlo);
  color: var(--akcent-tekst);
  padding: 8px 10px;
  margin: 8px 0 2px;
  border-radius: 4px;
  font-size: 0.8125rem;
}
.lista__kategoria-nazwa { font-size: 1.0625rem; font-weight: bold; margin-right: 8px; }
.lista__naglowek {
  display: grid;
  gap: 8px;
  background: var(--naglowek-tlo);
  color: var(--naglowek-tekst);
  font-size: 0.6875rem;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  padding: 8px 10px;
}
.lista__wiersz {
  display: grid;
  gap: 8px;
  align-items: center;
  background: var(--tlo-karty);
  padding: 8px 10px;
}
.lista__wiersz:nth-child(even) { background: var(--tlo-karty-alt); }
.lista__tytul { display: block; font-size: 1rem; font-weight: bold; }
.lista__tytul a { color: var(--tytul-watku); text-decoration: underline; }
/* Bez tego ":hover" tutaj, samo "a:hover" nie wygrywalo - rowna
   specyficznosc (0,1,1) z ".lista__tytul a" powyzej, a ta jest PO
   "a:hover" w pliku, wiec przy remisie wygrywala kolejnosc zrodlowa
   (user 2026-08-06: "czcionki nie zmieniaja sie na czarny po najechaniu
   w ciemnym motywie" - ten sam mechanizm co wczesniejszy blad .bbc/a.bbc
   w tej samej sesji). Ten sam wzorzec co .belka-gorna a:hover ponizej. */
.lista__tytul a:hover { color: var(--link-hover-tekst); background: var(--link-hover-tlo); }
.lista__opis { display: block; font-size: 0.8125rem; color: var(--tekst-przygaszony); margin-top: 2px; }
.lista__licznik { text-align: center; font-size: 0.875rem; white-space: nowrap; }
.lista__ostatni { font-size: 0.75rem; color: var(--tekst-przygaszony); }

@media (max-width: 768px) {
  .lista__naglowek { display: none; }
  .lista__wiersz { grid-template-columns: 1fr !important; gap: 2px; }
  .lista__licznik { text-align: left; }
  .lista__licznik::before { content: attr(data-etykieta) ": "; font-weight: bold; }
}

/* ===================================================== POSTY (watek.php) */

.post { display: flex; gap: 12px; background: var(--tlo-karty); border-radius: 4px; padding: 10px; margin: 8px 0; }
.post__autor {
  flex: 0 0 160px;
  font-size: 0.75rem;
  color: var(--tekst-przygaszony);
  text-align: center;
  overflow-wrap: anywhere;
  border-right: 1px solid var(--linia);
  padding-right: 12px;
}
.post__autor strong { display: block; font-size: 0.9375rem; color: var(--tekst-mocny); }
.post__autor img { border-radius: 4px; }
.post__tresc { flex: 1 1 auto; min-width: 0; }
.post__tresc-glowna { overflow-wrap: break-word; }
.post__stopka { margin-top: 8px; font-size: 0.75rem; color: var(--tekst-przygaszony); display: flex; flex-wrap: wrap; gap: 8px; }
/* Numer wpisu/data przeniesione z lewej sekcji (user 2026-08-06). */
.post__nrwpisu { font-size: 0.75rem; color: var(--tekst-przygaszony); margin-bottom: 6px; }
/* Blok admina (IP/Tracker) przeniesiony na koniec prawej sekcji - "delikatne
   odciecie" tlem, nie ostry czerwony komunikat (to nie blad/ostrzezenie). */
.post__admin { margin-top: 8px; padding: 6px 8px; background: var(--tlo-karty-alt); border-radius: 4px; font-size: 0.75rem; color: var(--tekst-przygaszony); }

/* Core\Bbcode::render() opakowuje kazdy [quote] w <div class="cytuj"> (patrz
   Bbcode.php ~168-174) - klasa ta byla stylowana w kazdym starym
   styl_forumN.css, ale zabraklo jej w nowym arkuszu, wiec cytaty w tresci
   wpisu nie odrozznialy sie wizualnie od reszty (zgloszenie usera). */
.cytuj { background: var(--tlo-karty-alt); border: 1px solid var(--linia); border-radius: 4px; padding: 8px 10px; margin: 6px 0; overflow-wrap: break-word; }

@media (max-width: 600px) {
  .post { flex-direction: column; }
  /* .post__autor tresc to zwykly ciag inline/<br> (nick, data, gwiazdki,
     avatar, grupa, QTH...), NIE osobne flex-dzieci - display:flex tutaj
     (wczesniejsza wersja) sciskal ten tekst do wasko-auto-liczonej kolumny,
     a overflow-wrap:anywhere (potrzebne na sztywnej 160px kolumnie desktop)
     lamalo go pojedynczymi znakami w pionie. Zwykly blok pelnej szerokosci. */
  .post__autor {
    flex: none;
    width: 100%;
    text-align: left;
    border-right: none;
    padding-right: 0;
    border-bottom: 1px solid var(--linia);
    padding-bottom: 10px;
  }
  .post__autor img { margin-top: 4px; }
}

/* ===================================================== FORMULARZE */

.formularz { display: flex; flex-direction: column; gap: 12px; max-width: 480px; margin: 12px 0; }
/* width:100% (nie tylko max-width) - potrzebne gdy .formularz jest dzieckiem
   flex-rowa (np. .belka-gorna przy odpowiedzi w watku/nowym temacie): bez
   niego formularz kurczyl sie do szerokosci tresci zamiast wypelniac ramke
   (zgloszenie usera - pasek BBCode i pole tekstowe zajmowaly pol szerokosci). */
.formularz--szeroki { max-width: 100%; width: 100%; }
.pole { display: flex; flex-direction: column; gap: 4px; }
.pole label { font-weight: bold; font-size: 0.8125rem; }
/* :not(checkbox/radio) - bez tego wykluczenia ta regula (zwlaszcza
   width:100%) naciagala tez checkboxy (np. /ustawienia: powiadomienia) na
   pelna szerokosc wiersza zamiast malego kwadracika - zgloszenie usera
   "rozjechały się checkboxy z opisami". */
.pole input:not([type="checkbox"]):not([type="radio"]), .pole select, .pole textarea {
  padding: 6px 8px;
  border: 1px solid var(--linia);
  border-radius: 3px;
  background: var(--tlo-karty);
  color: var(--tekst-mocny);
  width: 100%;
}
.pole textarea { resize: vertical; min-height: 6rem; }
.pole .podpowiedz { font-size: 0.75rem; color: var(--tekst-przygaszony); }
.pole input[type="checkbox"], .pole input[type="radio"] { width: auto; flex-shrink: 0; }
.formularz .dalej_btn, .formularz button[type="submit"] {
  align-self: flex-start;
  background: var(--przycisk-tlo);
  color: var(--przycisk-tekst);
  border: 0;
  border-radius: 4px;
  padding: 8px 20px;
  font-weight: bold;
  font-size: 1rem;
  cursor: pointer;
}

/* ===================================================== EDYTOR / BBCODE */

.bbc-pasek { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-bottom: 6px; }
/* .bbc nie jest juz scope'owana do .bbc-pasek - uzywana tez samodzielnie
   (ZGLOS WPIS / ODPOWIEDZ CYTUJACA w watek.php, user 2026-08-06: "sformatuj
   go w takim stylu jak przyciski do dodawania [bbcode]"). Celowo BEZ "a.bbc"
   w selektorze - (0,1,1) bylo bardziej specyficzne niz .bbc--male ponizej
   (0,1,0), wiec modyfikator byl cicho przegrywany na kazdej wlasciwosci,
   ktora probowal nadpisac (zgloszenie usera: "nie widzę zmniejszenia").
   Sama ".bbc" wystarcza (dopasowuje <a> i <button> jednakowo), a rownej
   specyficznosci z .bbc--male rostrzyga juz kolejnosc w pliku. */
.bbc-pasek button, .bbc {
  display: inline-block;
  background: var(--przycisk-tlo);
  color: var(--przycisk-tekst);
  border: 0;
  border-radius: 3px;
  padding: 4px 8px;
  font-size: 0.75rem;
  font-weight: bold;
  cursor: pointer;
  text-decoration: none;
}
.bbc-pasek button:hover, .bbc:hover { filter: brightness(1.1); }
/* Modyfikator dla ZGLOS WPIS / ODPOWIEDZ CYTUJAC (user 2026-08-06: "duzo
   mniejszymi czcionkami", potem "jeszcze mniejsze i może bez bold") - tylko
   te dwa, NIE pasek BBCode w edytorze. */
.bbc--male { font-size: 0.5rem; padding: 1px 5px; font-weight: normal; }
/* edytor.js chowa/pokazuje przez atrybut [hidden], nie klase - nie dawac tu
   bezwarunkowego display na klasie, bo wygralby z UA-owym [hidden]. */
.paleta-emotikon { display: flex; flex-wrap: wrap; gap: 2px; padding: 4px 0; }
.paleta-emotikon[hidden] { display: none; }
.paleta-emotikon button { background: none; border: 0; padding: 1px; cursor: pointer; }

/* ===================================================== STRONICOWANIE */

.stronicowanie { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 8px 0; font-size: 0.8125rem; }
.stronicowanie a { text-decoration: underline; }
.stronicowanie__biezaca { color: var(--tytul-watku); font-weight: bold; text-decoration: none; }

/* ===================================================== SHOUTBOX */

.shoutbox { background: var(--tlo-karty); border-radius: 4px; padding: 10px; margin: 8px 0; }
.shoutbox__naglowek { margin-bottom: 6px; }
.shoutbox__wiadomosci { display: flex; flex-direction: column; gap: 4px; max-height: 220px; overflow-y: auto; font-size: 0.8125rem; margin-bottom: 8px; }
.shoutbox__wiadomosc strong { color: var(--tytul-watku); }
.shoutbox__formularz { display: flex; gap: 6px; }
.shoutbox__formularz input[type="text"] { flex: 1 1 auto; padding: 4px 6px; border: 1px solid var(--linia); border-radius: 3px; }

/* ===================================================== NARZEDZIA */

.tekst-przygaszony { color: var(--tekst-przygaszony); }
.tylko-desktop { display: initial; }
.tylko-mobile { display: none; }
@media (max-width: 700px) {
  .tylko-desktop { display: none; }
  .tylko-mobile { display: initial; }
}
