/**
 * Warstwa semantyczna frameworka: sloty --lukuro-color-*.
 *
 * ZASADA: modul cytuje SLOT, nigdy tokenu AT bezposrednio.
 *
 * Powod jest praktyczny, nie estetyczny. Framework jest pakietem instalowanym u
 * wielu klientow, a tokeny `--at-*` istnieja wylacznie tam, gdzie stoi Advanced
 * Themer. Modul cytujacy token wprost dziala u jednego klienta i cicho gasnie u
 * drugiego. Slot ma fallback, wiec dziala zawsze - a przy zmianie palety albo
 * przy ewentualnej zmianie nazewnictwa w AT poprawka idzie w JEDNYM pliku.
 *
 * Sloty sa celowo semantyczne (rola), nie opisowe (wyglad): `hairline`, nie
 * `light-grey`. Rola przezywa zmiane palety, opis wygladu nie.
 *
 * Wartosci wyprowadzone z pomiaru kontrastu (WCAG 2.x, luminancja wzgledna,
 * kompozycja alfy nad realnym tlem), nie z oka. Pelny kontrakt z uzasadnieniem
 * per pozycja: docs/design-tokens.md.
 *
 * Klient nadpisuje dowolny slot u siebie (Advanced CSS w AT, custom CSS motywu),
 * albo wylacza calosc: wp_dequeue_style( 'lukuro-tokens' ).
 *
 * NIE WKLADAC TEGO PLIKU DO @layer. Sloty maja stac POZA warstwami kaskady i jest
 * to decyzja, nie przeoczenie przy okazji 2.2.3. Dwa powody:
 *
 *   1. Deklaracja spoza warstw bije KAZDA warstwe, wiec sloty automatycznie
 *      wygrywaja z aliasami zgodnosci z `acss-to-at-map.css` (@layer lukuro.compat),
 *      bez zadnej wojny specyficznosci.
 *   2. Picker zmiennych Advanced Themera pomija reguly w warstwach (skanuje plasko
 *      po `cssRules` i szuka `selectorText` z ":root", czego CSSLayerBlockRule nie
 *      ma). Sloty MAJA sie podpowiadac autorowi - w odroznieniu od tamtych aliasow,
 *      ktore sa dlugiem i maja zniknac.
 *
 * Nadpisania klienta dzialaja bez zmian: tez sa poza warstwami, a tam rozstrzyga
 * zwykla kaskada. Szerzej: `docs/design-tokens.md`, sekcja "Warstwy kaskady".
 */

:root {
	/* ============================================================
	 * TEKST
	 * ============================================================ */

	/* 19.81:1 na `surface`. Ton marki zamiast zimnej czerni. */
	--lukuro-color-text: var(--at-primary-d-6, #222);

	/* 8.75:1, z zapasem nad AAA (7.0). Wczesniejsze `d-5` dawalo 14.20:1, czyli
	   wartosc bezpieczna, ale bezuzyteczna w swojej roli: na projekcie z AT
	   `--at-primary-d-5` jest JEDNOCZESNIE domyslnym kolorem tekstu strony, wiec
	   tekst "przygaszony" wychodzil co do bitu taki sam jak tekst zwykly.
	   Rozroznialnosc wobec `text`: `d-5` dawalo 1.40:1, `d-4` daje 2.26:1. */
	--lukuro-color-text-muted: var(--at-primary-d-4, #666);

	/* ============================================================
	 * POWIERZCHNIE
	 *
	 * Trzy rozne role, celowo nie scalone:
	 *   page    - tlo DOKUMENTU. Uzywane tam, gdzie element ma sie z nim zlac
	 *             (technika knockout: pierscien wycinajacy ksztalt z linii pod nim).
	 *   surface - powierzchnia KARTY, panelu, szuflady. Lezy NA tle strony.
	 *   subtle  - delikatnie wyrozniona sekcja.
	 *   alt     - naprzemienny wiersz listy. Musi byc odrozniany od `subtle`,
	 *             inaczej naprzemiennosc znika.
	 * ============================================================ */
	--lukuro-color-page: var(--at-white, #fff);
	--lukuro-color-surface: var(--at-white, #fff);

	/* 1.119:1 wobec `surface`. Skrajnosc skali (`l-6`, 1.054:1) daje sekcje
	   nieodroznialna od karty, stad `l-5`. */
	--lukuro-color-surface-subtle: var(--at-primary-l-5, #f5f5f5);

	/* 1.201:1 wobec `surface`, wyraznie ciemniejszy niz `subtle`. */
	--lukuro-color-surface-alt: var(--at-primary-l-4, #e9e9e9);

	/* ============================================================
	 * LINIE I OBRAMOWANIA
	 * ============================================================ */

	/* Linia wlosowa rozdzielajaca tresc: dekoracyjna, poza SC 1.4.11.
	   1.65:1 - alfa 0.05 (`t-6`) dawala 1.12:1, czyli ponizej progu percepcji
	   przy linii 1 px, slabiej niz jakikolwiek wczesniejszy fallback. */
	--lukuro-color-hairline: var(--at-black-t-5, #e0e0e0);

	/* Granica pola formularza to komponent UI: SC 1.4.11 Non-text Contrast (AA)
	   wymaga 3:1. 4.42:1 przy alfie 0.53. Wczesniejsze wartosci (#ccc = 1.61:1,
	   alfa 0.21 = 1.65:1) progu nie spelnialy. */
	--lukuro-color-border-control: var(--at-black-t-3, #767676);

	/* ============================================================
	 * KOLOR MARKI - PARA
	 *
	 * Fallbacki maja CELOWO przeciwna jasnosc niz tokeny AT, zeby para dzialala
	 * po obu stronach:
	 *   z AT:   tlo jasne (primary), tekst ciemny (d-6)  -> 12.52:1
	 *   bez AT: tlo ciemne (#111),   tekst jasny (#fff)  -> 18.88:1
	 *
	 * Dlatego `on-primary` NIE moze dostac fallbacku `#222`, mimo ze taki
	 * wyglada naturalnie obok `--at-primary-d-6`. Bez AT trafilby na `#111`.
	 *
	 * UWAGA przy zakladaniu projektu: powyzsze zaklada JASNY kolor marki.
	 * Klient z ciemnym `--at-primary` musi nadpisac `on-primary` na jasny,
	 * inaczej ciemny tekst laduje na ciemnym tle. Patrz checklista w docs.
	 * ============================================================ */
	--lukuro-color-primary: var(--at-primary, #111);
	--lukuro-color-on-primary: var(--at-primary-d-6, #fff);

	/* Kolor marki w roli TRESCI, nie tla: 5.28:1 na `surface`.
	 *
	 * Osobny slot jest konieczny, bo `primary` jest dobrany pod role tla i przy
	 * jasnym kolorze marki nie nadaje sie na tekst - na tej samej bieli daje
	 * 1.58:1, czyli dokladnie to naruszenie, ktore para `primary`/`on-primary`
	 * naprawia po stronie tla. Ta sama klasa bledu co `success` i `danger`
	 * mapowane na jasne kolory bazowe AT: jeden kolor nie obsluzy obu rol.
	 *
	 * Uzywac wszedzie, gdzie kolor marki jest kolorem TEKSTU: stany hover
	 * i focus pozycji nawigacji, aktywna kategoria, linki akcentowane,
	 * komunikaty w tonie marki.
	 *
	 * Fallback jest ciemny i celowo nie probuje zgadywac odcienia marki
	 * u klienta bez AT. Kosztem jest to, ze bez AT stan hover niewiele rozni
	 * sie od stanu spoczynku - to strata sygnalu, nie naruszenie kontrastu.
	 */
	--lukuro-color-primary-text: var(--at-primary-d-3, #111);

	/* ============================================================
	 * OCENA (gwiazdki)
	 *
	 * Ocena NIESIE INFORMACJE (ile gwiazdek wypelnionych), wiec podlega
	 * SC 1.4.11 jako grafika istotna, a rozroznienie nie moze opierac sie
	 * na samym odcieniu (SC 1.4.1 Use of Color).
	 *
	 * Bazowy `--at-secondary` wobec pustej gwiazdki dawal 1.06:1 - para
	 * nierozroznialna w skali szarosci i przy deuteranopii. `d-2` daje
	 * 3.80:1 wobec tla i 3.40:1 wobec pustej, zachowujac zloty charakter.
	 * ============================================================ */
	--lukuro-color-star: var(--at-secondary-d-2, #b8952a);
	--lukuro-color-star-empty: var(--at-black-t-6, rgba(0, 0, 0, .05));

	/* ============================================================
	 * STANY
	 *
	 * AT generuje dla stanow WYLACZNIE kolor bazowy plus skladowe h/s/l -
	 * nie ma `--at-success-l-5` ani `--at-danger-d-4`. Wartosci liczymy wiec
	 * ze skladowych, co ma te przewage nad recznym generowaniem shade'ow w AT,
	 * ze nie dodaje kroku przy zakladaniu kazdego projektu.
	 *
	 * Fallback siedzi WEWNATRZ var(), nie za funkcja: `hsl()` z pustym var()
	 * daje wartosc niepoprawna, a nie fallback - czyli deklaracja zostalaby
	 * odrzucona zamiast zadzialac.
	 *
	 * Kolory bazowe AT sa jasne i nadaja sie na wypelnienia, NIE na tekst:
	 * `--at-success` jako `color:` daje 1.98:1. Sloty ponizej sa liczone pod
	 * role tekstowa, bo tak sa uzywane w modulach.
	 * ============================================================ */

	/* 7.20:1 na bieli, 6.32:1 na wlasnym tle. */
	--lukuro-color-success: hsl(var(--at-success-h, 124) var(--at-success-s, 58%) 25%);
	--lukuro-color-success-bg: hsl(var(--at-success-h, 124) var(--at-success-s, 58%) 92%);
	--lukuro-color-success-text: var(--lukuro-color-success);

	/* 6.86:1 na bieli, 9.21:1 na wlasnym tle. */
	--lukuro-color-danger: hsl(var(--at-danger-h, 0) var(--at-danger-s, 75%) 40%);
	--lukuro-color-danger-bg: hsl(var(--at-danger-h, 0) var(--at-danger-s, 75%) 92%);
	--lukuro-color-danger-text: var(--lukuro-color-danger);

	/**
	 * Trzeci stan obok powodzenia i bledu: "wymaga uwagi, ale nic sie nie zepsulo".
	 * Pierwszy konsument to znacznik wpisu roboczego w module szkolen. Rola byla luka
	 * w kontrakcie, nie wartoscia pochodna - `danger` klamalby (szkic to nie blad),
	 * a `star` niesie role opinii i cytowanie jej tutaj byloby naduzyciem semantyki.
	 *
	 * Liczone tak samo jak dwa stany wyzej. AT nie generuje `--at-warning-*` na kazdej
	 * instalacji (zmierzone u konsumenta: brak), wiec fallback bursztynowy niesie
	 * cala wartosc - i tak samo jak tam siedzi WEWNATRZ var().
	 *
	 * 6.94:1 na bieli, 8.42:1 na wlasnym tle.
	 */
	--lukuro-color-warning: hsl(var(--at-warning-h, 32) var(--at-warning-s, 88%) 32%);
	--lukuro-color-warning-bg: hsl(var(--at-warning-h, 32) var(--at-warning-s, 88%) 92%);
	--lukuro-color-warning-text: var(--lukuro-color-warning);
}
