/*
Theme Name: Wykładnia
Theme URI: https://www.szablonstrony.pl/project/wykladnia/
Author: Krzysztof Miller
Description: Motyw dla serwisów, w których tekst musi się wylegitymować z daty i podstawy prawnej. Margines nosi identyfikator (§, data, hasło, numer źródła), kolumna nosi treść. Aparat prawny czytany jest z samego tekstu — bez pól własnych i bez wtyczki. Zero JavaScriptu, zero plików graficznych w rusztowaniu, kontrast AAA.
Version: 1.0.1
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: wykladnia
Tags: classic, accessibility-ready, no-javascript, editorial, legal

Kroje (OFL, hostowane lokalnie, subsety z pomiaru treści):
  Faustina — Omnibus-Type, https://github.com/Omnibus-Type/Faustina
  Sofia Sans Semi Condensed — Lettersoup, https://github.com/lettersoup/Sofia-Sans
*/

/* =====================================================================
   0. KROJE — pięć plików, 50,5 kB zmierzone (budżet 58 kB)
   ⚠ Subsety budowane z POMIARU treści (_znaki-pomiar.txt), weryfikowane
   OSOBNYM skryptem — kontrola porównująca font z własnym źródłem błędu
   zawsze świeci na zielono (pułapka SP-021).
   ===================================================================== */

@font-face{font-family:'Faustina';src:url('fonts/faustina-400.woff2') format('woff2');
	font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Faustina';src:url('fonts/faustina-600.woff2') format('woff2');
	font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Faustina';src:url('fonts/faustina-400i.woff2') format('woff2');
	font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'SofiaSC';src:url('fonts/sofia-400.woff2') format('woff2');
	font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'SofiaSC';src:url('fonts/sofia-600.woff2') format('woff2');
	font-weight:600;font-style:normal;font-display:swap}

/* =====================================================================
   1. PALETA — atrament urzędowy (kontrakt §2)
   Zieleń w katalogu jest wyczerpana: sześć kart w paśmie 71–151°, wszystkie
   o tej samej formule „jasny papier + ciemny zielony tusz". Wychodzimy
   z zieleni w szczelinę 200,8–224,3°, środek 212,6°.
   Kontrasty policzone `analiza/_kontrast.py` — 0 błędów.
   ===================================================================== */

:root{
	--papier:#E9ECF1;        /* grunt strony — przygaszony offset, celowo NIE biel */
	--pole:#FFFFFF;          /* WYBICIE W BIELI — w tym motywie biel jest akcentem */
	--wyroznik:#CFDCEE;      /* wiersz obowiązujący, :target, aria-current */
	--winieta:#101A28;       /* pas nagłówka i stopki */
	--atrament:#111823;      /* proza, tytuły */
	--meta:#374357;          /* APARAT: podstawa prawna, daty, metryki, źródła */
	--akcent:#1C4474;        /* ATRAMENT URZĘDOWY — odnośniki, §, romb, focus */
	--akcent-jasny:#A8C4E8;  /* odnośniki W WINIECIE (para wymuszona) */
	--kreska:#6C7787;        /* kreski dokumentu, obrysy pól, oś wykazu */
	--dekor:#BEC7D4;         /* linie włoskowate — NIGDY nośnik sensu */

	--proza:'Faustina',Georgia,'Times New Roman',serif;
	--aparat:'SofiaSC',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;

	--szpalta:36rem;
	--boczek:13rem;
	--rynna:2.5rem;
}

/* =====================================================================
   2. RESET I TYPOGRAFIA
   Skala: 13 / 15 / 16 / 17 / 19 / 21 / 26 / 32 px — zapisana w REM
   (0,8125 / 0,9375 / 1 / 1,0625 / 1,1875 / 1,3125 / 1,625 / 2 rem).
   ⚠⚠ DLACZEGO REM, A NIE PX: rusztowanie jest w rem (`--szpalta:36rem`),
   więc podniesienie domyślnego rozmiaru pisma w przeglądarce — standardowe
   ustawienie dla słabowidzących — poszerzało szpaltę, NIE powiększając ani
   jednej litery. Miara wiersza skakała z 66–70 znaków do ~100, czyli
   czytelnik proszący o łatwiejszy tekst dostawał trudniejszy.
   ⚠ Zero wersalików w prozie — wersaliki wyłącznie w etykietach aparatu.
   ===================================================================== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
	margin:0;
	background:var(--papier);
	color:var(--atrament);
	font:400 1.1875rem/1.62 var(--proza);
	font-variant-numeric:oldstyle-nums;
	text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto}
a{color:var(--akcent);text-underline-offset:.14em;text-decoration-thickness:.06em}
a:hover,a:focus{text-decoration-thickness:.12em}
h1,h2,h3{margin:0;font-weight:600;line-height:1.24;text-wrap:balance}
p{margin:0 0 1.1rem}
ul,ol{margin:0 0 1.1rem;padding-left:1.4rem}
li{margin:0 0 .45rem}
strong{font-weight:600}
code,kbd{font-family:var(--aparat);font-size:.94em}
hr{border:0;border-top:1px solid var(--dekor);margin:2rem 0}

.wy-meta{font-family:var(--aparat);font-size:0.9375rem;color:var(--meta)}

/* =====================================================================
   3. RUSZTOWANIE I BOCZEK (kontrakt §5.2)
   `[boczek 13rem] [rynna 2,5rem] [tekst 36rem]` — razem 51,5rem wyśrodkowane.
   Zero pływaków; pozycjonowanie bezwzględne WYŁĄCZNIE dla znaków § i numerów.
   ===================================================================== */

.wy-main{display:block}

.wy-uklad{
	display:grid;
	grid-template-columns:var(--boczek) var(--rynna) minmax(0,var(--szpalta));
	justify-content:center;
	padding:2.6rem 1.25rem 4rem;
}
.wy-uklad>*{grid-column:3;min-width:0}

/* Mniej niż trzy ustępy → jedna kolumna, bez pionowego pasa pustki. */
.wy-uklad--bez-boczka{grid-template-columns:minmax(0,var(--szpalta))}
.wy-uklad--bez-boczka>*{grid-column:1}
/* Widoki listowe (front, wykaz pozycji, 404, szukanie) — szersza kolumna. */
.wy-uklad--szeroki{grid-template-columns:minmax(0,44rem)}

/* ⚠ Poniżej 68rem margines SIĘ ROZPUSZCZA, a nie zwija: identyfikatory wchodzą
   w jedną kolumnę NAD swoją treścią. Nic nie znika, nic nie wymaga kliknięcia. */
@media (max-width:68rem){
	.wy-uklad,.wy-uklad--bez-boczka,.wy-uklad--szeroki{
		grid-template-columns:minmax(0,var(--szpalta));
	}
	.wy-uklad>*{grid-column:1}
}

/* =====================================================================
   4. WINIETA I NAWIGACJA (kontrakt §7)
   ⭐ Ten motyw NICZEGO nie zwija: bez details/summary, bez hamburgera,
   bez :target, bez :hover-only. Nawigacja zawsze w pełni widoczna.
   ===================================================================== */

.wy-skip{
	position:absolute;left:-9999px;top:0;z-index:10;
	background:var(--pole);color:var(--akcent);
	font-family:var(--aparat);font-size:0.9375rem;
	padding:.6rem 1rem;border:2px solid var(--akcent);
}
.wy-skip:focus{left:1rem;top:1rem}

.wy-winieta{background:var(--winieta);color:var(--papier);padding:1.5rem 1.25rem 1.2rem}
.wy-winieta__srodek{max-width:51.5rem;margin:0 auto}
.wy-winieta__nazwa{margin:0;font-size:1.625rem;font-weight:600;line-height:1.2}
.wy-winieta__nazwa a{color:var(--papier);text-decoration:none}
.wy-winieta__nazwa a:hover{text-decoration:underline}
.wy-winieta__tagline{
	margin:.2rem 0 .9rem;font-family:var(--aparat);font-size:0.9375rem;color:var(--papier);opacity:.86;
}
.wy-menu{
	display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;
	margin:0;padding:0;list-style:none;
	font-family:var(--aparat);font-weight:600;font-size:0.9375rem;
}
.wy-menu li{margin:0}
.wy-menu a{color:var(--akcent-jasny);text-decoration:none}
.wy-menu a:hover{text-decoration:underline}
.wy-menu a[aria-current="page"]{
	color:var(--pole);
	/* stan bieżący niesie PODKREŚLENIE, nie sama barwa */
	border-bottom:2px solid var(--pole);
}

/* ⚠⚠ WERSALIKI ROBI CSS, NIE TREŚĆ. Wielkie litery wpisane wprost w DOM
   bywają przez czytniki ekranu literowane („Ź-R-Ó-D-Ł-A"), a w wyszukiwarce
   i w druku niosą krzyk zamiast etykiety. W DOM stoi normalna pisownia. */
.wy-glowka__rodzaj,
.wy-klauzula__etykieta,
.wy-zrodla__tytul,
.wy-metryka__etykieta,
.wy-patronat__etykieta,
.wy-powiazane__etykieta,
.wy-spis__naglowek,
.wy-stopka__pod,
.wy-tabliczka__etykieta,
.wy-wykaz__stan{
	text-transform:uppercase;
}

/* Schowek wzrokowy — treść dla czytnika ekranu, niewidoczna na ekranie.
   ⚠ NIE `display:none` (to wycina także z drzewa dostępności — lekcja SP-021). */
.wy-tylko-czytnik{
	position:absolute;width:1px;height:1px;margin:-1px;padding:0;
	overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;
}

/* =====================================================================
   5. TROP
   ===================================================================== */

.wy-trop{
	font-family:var(--aparat);font-size:0.9375rem;color:var(--meta);
	margin:0 0 1.4rem;
}
.wy-trop__sep{margin:0 .4rem;color:var(--kreska)}

/* =====================================================================
   6. GŁÓWKA AKTU (kontrakt §5.1)
   ⭐ Podwójna kreska + stopniowanie pisma niosą ciężar wizualny strony,
   która nie ma ani jednego obrazka w rusztowaniu.
   ===================================================================== */

.wy-glowka{
	position:relative;
	border-top:3px solid var(--atrament);
	/* kreska zamykająca — kontrakt §5.1 */
	border-bottom:1px solid var(--kreska);
	padding-top:1.05rem;padding-bottom:1.1rem;margin:0 0 1.6rem;
}
.wy-glowka::before{
	content:"";position:absolute;left:0;right:0;top:3px;
	border-top:1px solid var(--atrament);
	transform:translateY(3px);
}
.wy-glowka__rodzaj{
	margin:0 0 .55rem;
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);
}
.wy-glowka__tytul{font-size:2rem;margin:0 0 .7rem}
.wy-glowka__lead{font-size:1.3125rem;line-height:1.5}
.wy-glowka__lead p{margin:0 0 .6rem}
.wy-glowka__lead p:last-child{margin-bottom:0}

/* =====================================================================
   7. POLE BIAŁE I KRAWĘDŹ DATOWANIA (kontrakt §5.10)
   ⭐ „Krawędź znaczy: ta treść ma datę". Dokładnie pięć miejsc:
   klauzula · wiersz wykazu zmian · wykaz źródeł · nota redakcyjna wpisu ·
   tabliczka domykająca. ⚠ NIGDY przy haśle słowniczka.
   ===================================================================== */

.wy-pole{
	background:var(--pole);
	border:1px solid var(--kreska);
	padding:1rem 1.15rem;
	margin:0 0 1.6rem;
}
.wy-datowane{border-left:3px solid var(--akcent);padding-left:1rem}

/* =====================================================================
   8. KLAUZULA „STAN NA" (kontrakt §5.3)
   ⚠ To NIE jest okrągła pieczątka ani stempel — to klauzula drukowana,
   bo serwis nie udaje urzędu.
   ===================================================================== */

.wy-klauzula{position:relative}
.wy-klauzula__znak{
	position:absolute;left:-.62rem;top:.9rem;
	background:var(--pole);color:var(--akcent);
	font-family:var(--aparat);font-weight:600;font-size:1.0625rem;
	line-height:1;padding:.1rem .12rem;
}
.wy-klauzula__wiersz{margin:0 0 .55rem;padding-bottom:.5rem;border-bottom:1px solid var(--dekor)}
.wy-klauzula__etykieta{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);
}
.wy-klauzula__data{font-weight:600}
.wy-klauzula__podstawa{
	margin:0;font-family:var(--aparat);font-size:0.9375rem;line-height:1.5;color:var(--meta);
}

/* =====================================================================
   9. SPIS USTĘPÓW I USTĘPY § (kontrakt §5.4)
   ⚠ Numerację nadaje PHP, nie licznik CSS — spis, kotwica i znak
   na marginesie nie mogą się rozjechać.
   ===================================================================== */

.wy-spis-ustepow{margin:0 0 2rem}
.wy-spis-ustepow ul{
	columns:2;column-gap:2rem;
	margin:0;padding:0;list-style:none;
	font-family:var(--aparat);font-size:0.9375rem;line-height:1.45;
}
.wy-spis-ustepow li{margin:0 0 .38rem;break-inside:avoid}
.wy-spis-ustepow a{text-decoration:none}
.wy-spis-ustepow a:hover{text-decoration:underline}
.wy-spis-ustepow__nr{font-weight:600;color:var(--akcent)}
.wy-spis-ustepow__sep{color:var(--kreska)}
@media (max-width:48rem){.wy-spis-ustepow ul{columns:1}}

.wy-ustep,.wy-wykaz{position:relative;margin:0 0 2.1rem;scroll-margin-top:1.5rem}
.wy-ustep__znak{
	position:absolute;
	left:calc(-1 * (var(--boczek) + var(--rynna)));
	width:var(--boczek);text-align:right;top:.35rem;
	font-family:var(--aparat);font-weight:600;font-size:1.0625rem;
	color:var(--akcent);white-space:nowrap;
}
.wy-ustep__tytul{
	font-family:var(--aparat);font-size:1.3125rem;
	border-top:1px solid var(--dekor);padding-top:.85rem;margin:0 0 .8rem;
}
@media (max-width:68rem){
	.wy-ustep__znak{
		position:static;display:block;width:auto;text-align:left;
		font-size:0.9375rem;margin:0 0 .2rem;
	}
}

.wy-proza p:last-child{margin-bottom:0}
.wy-proza--calosc h2{
	font-family:var(--aparat);font-size:1.3125rem;
	border-top:1px solid var(--dekor);padding-top:.85rem;margin:1.8rem 0 .8rem;
}
.wy-proza--calosc h3{font-family:var(--aparat);font-size:1.1875rem;margin:1.4rem 0 .6rem}

/* =====================================================================
   10. WYKAZ ZMIAN (kontrakt §5.5) — rejestr nowelizacji, NIE oś czasu
   ⚠ Zero kratki kalendarza, zero kartek, zero miesięcy — to nie planer.
   Stan niesie: kształt rombu + styl kreski + SŁOWO w etykiecie + słowo
   w treści. Cztery niezależne kodowania — komunikat przeżywa druk,
   forced-colors i ślepotę barw.
   ===================================================================== */

.wy-wykaz__lista{list-style:none;margin:0;padding:0}
/* Oś wykazu = krawędź datowania (`.wy-datowane` na wierszu). Styl kreski
   niesie stan: CIĄGŁA = obowiązuje, PRZERYWANA = zapowiadane. */
.wy-wykaz__wiersz{
	display:grid;
	grid-template-columns:11rem minmax(0,1fr);
	gap:0 1.2rem;
	position:relative;
	margin:0;padding:.7rem 0 .7rem 1.1rem;
	border-top:1px solid var(--dekor);
}
.wy-wykaz__wiersz--zapowiedz{border-left-style:dashed}
.wy-wykaz__wiersz--biezacy{background:var(--wyroznik)}
.wy-wykaz__romb{
	position:absolute;left:-6px;top:1.15rem;
	width:9px;height:9px;
	background:var(--akcent);transform:rotate(45deg);
}
.wy-wykaz__wiersz--zapowiedz .wy-wykaz__romb{
	background:var(--pole);border:1px dashed var(--akcent);
}
.wy-wykaz__data{
	font-family:var(--aparat);font-weight:600;font-size:0.9375rem;
	color:var(--meta);line-height:1.4;
}
.wy-wykaz__stan{
	display:block;
	font-size:0.8125rem;letter-spacing:.08em;font-weight:600;
	color:var(--akcent);
}
.wy-wykaz__stan--zapowiedz{color:var(--meta)}
.wy-wykaz__tresc{line-height:1.55}
.wy-wykaz__lista--skrot .wy-wykaz__tresc{font-size:1.0625rem}
@media (max-width:68rem){
	.wy-wykaz__wiersz{grid-template-columns:minmax(0,1fr)}
	.wy-wykaz__data{margin-bottom:.3rem}
	.wy-wykaz__stan{display:inline;margin-left:.5rem}
}

/* =====================================================================
   11. OBJAŚNIENIE OKREŚLEŃ (kontrakt §5.6)
   Zbudowane jak art. 2 ustawy: hasło na marginesie, definicja w szpalcie.
   ⚠ Bez zakładek literowych i bez szyn A–Z (to SP-014).
   ⚠ Hasło NIGDY nie dostaje krawędzi datowania — pojęcie nie ma daty ważności.
   ===================================================================== */

.wy-skorowidz{
	margin:0 0 2rem;padding:.9rem 1.1rem;
	background:var(--pole);border:1px solid var(--dekor);
	font-family:var(--aparat);font-size:0.9375rem;line-height:1.7;
}
.wy-skorowidz p{margin:0}
.wy-skorowidz__sep{color:var(--kreska)}

.wy-hasla{margin:0}
.wy-haslo{
	position:relative;
	font-family:var(--aparat);font-weight:600;font-size:1.0625rem;
	color:var(--akcent);
	margin:1.6rem 0 .35rem;
	scroll-margin-top:1.5rem;
}
/* ⚠ `--kreska` niesie WYŁĄCZNIE kreski (3:1). Numer hasła jest częścią aparatu
   (§5.6), więc chodzi w `--meta` — 8,43:1 na papierze, 7,19:1 na wyróżniku. */
.wy-haslo__nr{color:var(--meta);font-weight:400;font-size:0.9375rem}
.wy-haslo__def{margin:0 0 1.3rem}
.wy-haslo:target{background:var(--wyroznik)}
/* ⭐ Hasło i definicja stoją w JEDNYM wierszu siatki: margines niesie hasło,
   szpalta niesie definicję — to jest prawo naczelne motywu zastosowane do
   słowniczka. Skanowanie polega na przebiegnięciu wzrokiem jednej kolumny
   haseł, tej samej, w której na innych stronach stoją znaki §. */
@media (min-width:68.01rem){
	.wy-hasla{
		display:grid;
		grid-template-columns:var(--boczek) minmax(0,var(--szpalta));
		column-gap:var(--rynna);
		margin-left:calc(-1 * (var(--boczek) + var(--rynna)));
	}
	.wy-haslo{grid-column:1;text-align:right;margin:1.6rem 0 0}
	.wy-haslo__def{grid-column:2;margin:1.6rem 0 0}
}

/* =====================================================================
   12. WYKAZ ŹRÓDEŁ (kontrakt §5.7)
   ⚠ Znacznik odnośnika zewnętrznego rysuje CSS — strzałek nie ma w subsecie.
   ===================================================================== */

.wy-zrodla{
	border-top:3px solid var(--atrament);
	padding-top:1rem;margin:2.4rem 0 1.6rem;
}
.wy-zrodla__tytul{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);margin:0 0 .9rem;
}
.wy-zrodla__lista{list-style:none;margin:0;padding:0}
.wy-zrodla__lista li{
	position:relative;
	font-family:var(--aparat);font-size:0.9375rem;line-height:1.5;
	color:var(--meta);margin:0 0 .6rem;padding-left:2.4rem;
}
.wy-zrodla__nr{
	position:absolute;left:0;top:0;width:2rem;text-align:right;
	color:var(--akcent);font-weight:600;
}
.wy-zrodla a[href^="http"]::after{
	content:"";display:inline-block;
	width:.38em;height:.38em;margin-left:.28em;
	border-top:1px solid currentColor;border-right:1px solid currentColor;
	vertical-align:.12em;
}
@media (min-width:68.01rem){
	.wy-zrodla__lista li{padding-left:0}
	.wy-zrodla__nr{
		left:calc(-1 * (var(--boczek) + var(--rynna)));
		width:var(--boczek);
	}
}

/* =====================================================================
   13. „NA CO UWAŻAĆ", ZASTRZEŻENIE ZAKRESU, NOTA (kontrakt §5.8)
   ===================================================================== */

.wy-uwaga{margin:0 0 2rem}
.wy-uwaga__tytul{
	font-family:var(--aparat);font-size:1.3125rem;
	border-top:1px solid var(--kreska);padding-top:.85rem;margin:0 0 .8rem;
}
.wy-zastrzezenie__tytul{
	font-family:var(--aparat);font-weight:600;font-size:1.0625rem;margin:0 0 .7rem;
}
.wy-zastrzezenie .wy-proza{font-size:1.0625rem;line-height:1.55}

/* ⚠ §5.8: nota to „Faustina italic 15 px meta" — kursywa jest DOGRANA
   (faustina-400i.woff2), więc `em` nie jest syntetyzowana pochyłką. */
.wy-nota{
	position:relative;
	border-top:1px solid var(--dekor);padding-top:.8rem;margin:1.6rem 0 0;
	font-family:var(--proza);font-size:0.9375rem;color:var(--meta);
}
.wy-nota em{font-style:italic}
.wy-nota__sztylet{color:var(--akcent);font-weight:600;margin-right:.35rem}
@media (min-width:68.01rem){
	.wy-nota__sztylet{
		position:absolute;
		left:calc(-1 * (var(--boczek) + var(--rynna)));
		width:var(--boczek);text-align:right;margin:0;
	}
}

.wy-nota-red__tekst{margin:0;font-family:var(--aparat);font-size:0.9375rem;color:var(--meta)}

/* =====================================================================
   14. TABLICZKA DOMYKAJĄCA (kontrakt §5.11)
   ===================================================================== */

.wy-tabliczka{
	font-family:var(--aparat);font-size:0.9375rem;color:var(--meta);
	padding:.7rem 1rem;margin:2rem 0 0;
	align-self:start;   /* nie rozciągaj się na wysokość wiersza siatki */
}
.wy-tabliczka__etykieta{font-weight:600;letter-spacing:.08em;font-size:0.8125rem}
.wy-tabliczka__data{font-weight:600;color:var(--atrament)}

/* =====================================================================
   15. PATRONAT (kontrakt §5.9)
   ⚠ Obraz NIGDY nie jest skalowany; gdy baneru brak — pole zapada się
   do wizytówki typograficznej. Pusta ramka nie powstaje nigdy.
   ===================================================================== */

.wy-patronat{
	max-width:51.5rem;margin:0 auto;padding:0 1.25rem 3rem;
	border-top:3px solid var(--atrament);padding-top:1.1rem;
}
.wy-patronat__etykieta{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);margin:0 0 .9rem;
}
.wy-patronat__siatka{
	display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,336px));
	gap:1.2rem;justify-content:start;
}
.wy-patronat__pole{
	margin:0;padding:.6rem;
	background:var(--pole);border:1px solid var(--kreska);
}
.wy-patronat__pole img{display:block;width:auto;max-width:100%;height:auto}
.wy-patronat__pole figcaption{margin-top:.45rem}
.wy-patronat__wizytowka{margin:0;font-family:var(--aparat);font-size:0.9375rem;color:var(--meta)}

/* =====================================================================
   16. SPIS WYDANIA (kontrakt §6.1)
   ===================================================================== */

.wy-front__naglowek,.wy-stopka__naglowek{
	font-family:var(--aparat);font-weight:600;font-size:1.3125rem;
	border-top:3px solid var(--atrament);padding-top:.9rem;margin:2.4rem 0 1.2rem;
}
.wy-front__spis,.wy-front__zmiany{margin:0 0 1.6rem}

.wy-spis__dzial{margin:0 0 1.6rem}
.wy-spis__naglowek{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);
	border-top:1px solid var(--dekor);padding-top:.6rem;margin:0 0 .7rem;
}
.wy-spis__dzial ul{list-style:none;margin:0;padding:0}
.wy-spis__pozycja{
	display:grid;grid-template-columns:11rem minmax(0,1fr);
	gap:0 1.2rem;margin:0 0 .9rem;
}
.wy-spis__data{
	font-family:var(--aparat);font-size:0.9375rem;color:var(--meta);line-height:1.5;
}
.wy-spis__tresc{min-width:0}
.wy-spis__tytul{font-weight:600;text-decoration:none;display:block}
.wy-spis__tytul:hover{text-decoration:underline}
.wy-spis__opis{
	display:block;font-family:var(--aparat);font-size:0.9375rem;
	color:var(--meta);line-height:1.5;margin-top:.15rem;
}
@media (max-width:68rem){
	.wy-spis__pozycja{grid-template-columns:minmax(0,1fr)}
	.wy-spis__data{margin-bottom:.15rem}
}

.wy-front__wiecej{font-family:var(--aparat);font-size:0.9375rem;margin:.9rem 0 0}

/* =====================================================================
   17. WYKAZ POZYCJI, PAGINACJA, POWIĄZANE
   ===================================================================== */

.wy-licznik{font-family:var(--aparat);font-size:0.9375rem;color:var(--meta);margin:0 0 1.4rem}
.wy-pusto{font-family:var(--aparat);font-size:1.0625rem;color:var(--meta)}

.wy-wykaz-pozycji{list-style:none;margin:0 0 2rem;padding:0}
.wy-wykaz-pozycji__wiersz{
	display:grid;grid-template-columns:11rem minmax(0,1fr);
	gap:0 1.2rem;margin:0;padding:.9rem 0;border-top:1px solid var(--dekor);
}
.wy-wykaz-pozycji__data{font-family:var(--aparat);font-size:0.9375rem;color:var(--meta)}
.wy-wykaz-pozycji__tytul{font-size:1.3125rem;font-weight:600;text-decoration:none}
.wy-wykaz-pozycji__tytul:hover{text-decoration:underline}
.wy-wykaz-pozycji__opis{
	display:block;font-family:var(--aparat);font-size:0.9375rem;
	color:var(--meta);line-height:1.5;margin-top:.25rem;
}
@media (max-width:68rem){
	.wy-wykaz-pozycji__wiersz{grid-template-columns:minmax(0,1fr)}
}

.wy-paginacja{font-family:var(--aparat);font-size:0.9375rem;margin:0 0 2rem}
.wy-paginacja__stan{color:var(--meta);margin:0 0 .5rem}
.wy-paginacja ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}
.wy-paginacja li{margin:0}
.wy-paginacja a,.wy-paginacja span{
	display:inline-block;padding:.25rem .6rem;
	border:1px solid var(--kreska);background:var(--pole);text-decoration:none;
}
.wy-paginacja .current{background:var(--wyroznik);font-weight:600}

.wy-powiazane{margin:2rem 0 0}
.wy-powiazane__etykieta{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);
	border-top:1px solid var(--dekor);padding-top:.7rem;margin:0 0 .6rem;
}
.wy-powiazane ul{list-style:none;margin:0;padding:0;font-family:var(--aparat);font-size:0.9375rem}
.wy-powiazane li{margin:0 0 .35rem}

/* =====================================================================
   18. ODBITKA (kontrakt §6.4) — NIGDY nie skalujemy w górę
   ===================================================================== */

/* ⚠ §6.4: metryka odbitki stoi NA MARGINESIE — to ten sam mechanizm, co znak §
   przy śródtytule. Bez tego widok odbitki miał pusty pas 13rem na całej
   wysokości, a motyw łamał własne prawo naczelne. */
@media (min-width:68.01rem){
	.wy-uklad .wy-metryka{grid-column:1;align-self:start;margin-top:0}
	.wy-uklad .wy-odbitka{grid-column:3}
	/* W kolumnie 13rem para „nazwa / wartość" nie mieści się obok siebie —
	   wartość wchodzi POD nazwę, tak jak identyfikatory poniżej 68rem. */
	.wy-uklad .wy-metryka dl{grid-template-columns:minmax(0,1fr);gap:0}
	.wy-uklad .wy-metryka dt{margin-top:.5rem}
	.wy-uklad .wy-metryka dd{color:var(--atrament)}
}
.wy-odbitka{
	margin:0 0 1.2rem;padding:.8rem;
	background:var(--pole);border:1px solid var(--kreska);
}
.wy-odbitka img{display:block;width:auto;height:auto;max-width:min(100%,730px);margin:0 auto}
/* ⚠ `/ikona-zielonyelektron/` to 32 × 32 px — renderuje się w rozmiarze
   pierwotnym, wyśrodkowana w polu 120 × 120. Rozdmuchana do szpalty
   wyglądałaby na błąd. */
/* ⚠ Rozmiar 120 × 120 dotyczy POLA, nie obrazu — `min-width` na `img`
   rozdmuchiwał ikonę 32 px do 120 px (3,75×, rozmyta), a podpis pod spodem
   zapewniał „w rozmiarze pierwotnym 32 × 32 px". Podpis ma mówić prawdę. */
.wy-odbitka--mala{
	width:max-content;min-width:calc(120px + 2rem);min-height:calc(120px + 1.6rem);
	display:grid;place-items:center;padding:.8rem 1rem;
}
.wy-odbitka--mala img{width:auto;min-width:0;max-width:none}
.wy-odbitka--mala figcaption{
	margin-top:.5rem;font-family:var(--aparat);font-size:0.8125rem;color:var(--meta);
}
.wy-odbitka--brak{
	min-height:140px;display:grid;place-items:center;
	background:
		repeating-linear-gradient(45deg,transparent 0 7px,var(--kreska) 7px 8px),
		var(--pole);
}
.wy-odbitka--brak p{margin:0;background:var(--pole);padding:.2rem .5rem}

.wy-metryka{margin:0 0 1.4rem}
.wy-metryka__etykieta{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;color:var(--meta);
	border-top:1px solid var(--dekor);padding-top:.6rem;margin:0 0 .6rem;
}
.wy-metryka dl{
	display:grid;grid-template-columns:9rem minmax(0,1fr);gap:.2rem 1rem;
	margin:0;font-family:var(--aparat);font-size:0.9375rem;
}
.wy-metryka dt{color:var(--meta)}
.wy-metryka dd{margin:0}
.wy-powrot{font-family:var(--aparat);font-size:0.9375rem}

/* =====================================================================
   19. SZUKAJKA (kontrakt §7) — widoczny <label>, nie placeholder
   ===================================================================== */

.wy-szukajka{
	display:flex;flex-wrap:wrap;gap:.5rem;align-items:end;
	margin:0 0 1.6rem;font-family:var(--aparat);font-size:0.9375rem;
}
.wy-szukajka__etykieta{flex:1 0 100%;color:var(--meta)}
.wy-szukajka__pole{
	flex:1 1 12rem;min-width:0;
	font:inherit;padding:.4rem .6rem;
	background:var(--pole);color:var(--atrament);
	border:1px solid var(--kreska);
}
.wy-szukajka__przycisk{
	font:600 0.9375rem var(--aparat);
	padding:.42rem 1rem;cursor:pointer;
	background:var(--akcent);color:var(--pole);border:1px solid var(--akcent);
}
.wy-szukajka__przycisk:hover{background:var(--winieta);border-color:var(--winieta)}
.wy-stopka .wy-szukajka__etykieta{color:var(--papier)}
.wy-stopka .wy-szukajka__przycisk{
	background:var(--akcent-jasny);color:var(--winieta);border-color:var(--akcent-jasny);
}

/* =====================================================================
   20. STOPKA
   ⭐ Gwarancja dostępu bez interakcji: pełny spis wydania na każdej stronie.
   ⚠ Wizytówka wydawcy stoi TU, nigdy w nawigacji (lekcja SP-012).
   ===================================================================== */

.wy-stopka{background:var(--winieta);color:var(--papier);padding:2.4rem 1.25rem 3rem}
.wy-stopka__srodek{max-width:51.5rem;margin:0 auto}
.wy-stopka a{color:var(--akcent-jasny)}
.wy-stopka__naglowek{border-top-color:var(--papier);color:var(--papier);margin-top:0}
.wy-stopka .wy-spis__naglowek,
.wy-stopka .wy-spis__opis,
.wy-stopka .wy-stopka__pod{color:var(--papier);opacity:.86}
.wy-stopka .wy-spis__naglowek{border-top-color:var(--kreska);opacity:1}
.wy-stopka .wy-spis__tytul{color:var(--akcent-jasny)}

.wy-spis--zwarty{columns:3;column-gap:2rem}
.wy-spis--zwarty .wy-spis__dzial{break-inside:avoid;margin-bottom:1.2rem}
.wy-spis--zwarty .wy-spis__pozycja{display:block;margin-bottom:.4rem}
.wy-spis--zwarty a{font-size:1.0625rem;font-weight:400}
@media (max-width:68rem){.wy-spis--zwarty{columns:1}}

.wy-stopka__pasy{
	display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
	gap:1.6rem;margin-top:1.6rem;
	border-top:1px solid var(--kreska);padding-top:1.4rem;
}
.wy-stopka__pod{
	font-family:var(--aparat);font-weight:600;font-size:0.8125rem;
	letter-spacing:.1em;margin:0 0 .6rem;
}
.wy-stopka__pas ul{list-style:none;margin:0;padding:0;font-family:var(--aparat);font-size:0.9375rem}
.wy-stopka__pas li{margin:0 0 .35rem}
.wy-stopka__wydawca p{font-family:var(--aparat);font-size:0.9375rem;line-height:1.55}
.wy-stopka__nota{opacity:.86}

/* =====================================================================
   21. FOCUS — widoczny WSZĘDZIE, także na ciemnych pasach
   ⚠ Lekcja SP-021: akcent na winiecie ma 1,77:1 (para zakazana), więc
   w winiecie i w stopce obrys MUSI być w akcent_jasny (9,77:1).
   ===================================================================== */

:focus-visible{outline:2px solid var(--akcent);outline-offset:2px}
.wy-winieta :focus-visible,
.wy-stopka :focus-visible,
.wy-skip:focus-visible{outline-color:var(--akcent-jasny)}

/* =====================================================================
   22. DRUK (kontrakt §11)
   Patronat znika; w Wykazie źródeł dopisują się pełne adresy; winieta traci
   tło; ⚠ TABLICZKA ZOSTAJE — wydruk musi nieść datę stanu prawnego.
   ===================================================================== */

@media print{
	body{background:var(--pole);font-size:11pt}
	.wy-winieta,.wy-stopka{background:var(--pole);color:var(--atrament);padding:0 0 .6rem}
	.wy-winieta__nazwa a,.wy-stopka a{color:var(--atrament)}
	.wy-winieta{border-bottom:1px solid var(--atrament);margin-bottom:1rem}
	.wy-nawigacja,.wy-patronat,.wy-szukajka,.wy-skip,.wy-paginacja,
	.wy-stopka__pasy,.wy-spis--zwarty{display:none}
	.wy-uklad{display:block;padding:0}
	.wy-ustep__znak,.wy-zrodla__nr,.wy-nota__sztylet,.wy-haslo{
		position:static;width:auto;text-align:left;
	}
	/* ⚠ TYLKO w wykazie źródeł — wydruk ma nieść pełne adresy źródeł
	   i nic więcej (kontrakt §5.7). */
	.wy-zrodla a[href^="http"]::after{content:" (" attr(href) ")";border:0;width:auto;height:auto}
	.wy-wykaz__wiersz--biezacy{background:transparent;outline:1px solid var(--atrament)}
	.wy-pole{border-color:var(--atrament)}
}

/* =====================================================================
   23. FORCED-COLORS (kontrakt §11)
   Tła znikają — sens musi przeżyć. Krawędź datowania zostaje (to `border`),
   romby rysowane `transform` zostają, wiersz obowiązujący dostaje obrys.
   ===================================================================== */

@media (forced-colors:active){
	.wy-wykaz__wiersz--biezacy{background:transparent;outline:2px solid CanvasText}
	.wy-haslo:target{background:transparent;outline:2px solid CanvasText}
	.wy-wykaz__romb{background:CanvasText;forced-color-adjust:none}
	.wy-wykaz__wiersz--zapowiedz .wy-wykaz__romb{background:Canvas;border-color:CanvasText}
	.wy-datowane{border-left-color:CanvasText}
	.wy-paginacja .current{outline:2px solid CanvasText}
}
