/* KOLORYT WŁASNY TEGO DZIAŁU — Atlantyk i biało-niebieskie azulejo; zimniej i bardziej morsko niż Hiszpania.
   Grunt #061016. Gradienty podłoża biorą barwę z palety tego działu,
   a nie z neutralnej szarości: 21 modułów miało wcześniej to samo
   `--tlo: #0e0c0b` i cały serwis świecił jedną szarością. */

/* Portugalia — linia oczekiwania i leczenie modlitwą.  Prefiks `tpt-`.

   MATERIAŁ: azulejo i sól. ŚWIATŁO: oceaniczne, rozproszone.
   Rozpiska z `BACKLOG-EUROPA.md`.

   Sąsiadująca Hiszpania dostała wysokie słońce i twardy cień. Tutaj jest
   dokładnie odwrotnie, choć to ten sam półwysep i częściowo ten sam materiał:
   światło znad oceanu jest rozproszone przez wilgoć, więc cienie są miękkie,
   a biel wapna i soli świeci szeroko zamiast odcinać. Stąd w tym dziale
   NAJSZERSZY zakres półtonów w całym filarze — i to jest różnica zamierzona,
   bo dwa kraje jednego półwyspu musi coś odróżniać oprócz nazwy.

   Cztery barwy z rzeczy, o których dział mówi: błękit płytki, biel soli,
   szarość mgły znad wody i jeden akcent złota — ten sam, który kładziono
   na rzeźbionym drewnie ołtarzy. Złoto jest AKCENTEM OCZEKIWANIA: pojawia się
   przy wybranym punkcie linii i przy roku bitwy, i nigdzie indziej.

   SZEROKOŚĆ 1520 px i blok wyłamania z układu motywu są od pierwszej wersji.
   Motyw narzuca `--wp--style--global--content-size: 645px` i bez tego dział
   wygląda na ściśnięty do połowy ekranu, a test tego NIE widzi, bo ściśnięta
   strona niczego nie przepełnia. */

.tpt-strona {
	--tlo: #061016; --panel: rgba( 14, 30, 40, .84 );
	--obrys: rgba( 74, 127, 168, .30 ); --wlos: rgba( 74, 127, 168, .14 );
	--plytka: #4a7fa8; --plytka-j: #8fb6d4;
	--sol: #c9cdc9; --sol-j: #ecefec;
	--mgla: #8d949a; --mgla-j: #b7bdc3;
	--zloto: #b8912f; --zloto-j: #ddb85e;
	--cien: #343a3e; --cien-j: #6e767d;
	--etyk: #a89a7c;
	--tekst: #b3ab97; --tekst-slaby: #8b8472; --tekst-mocny: #ece6d6;
	--serif: 'Cormorant Garamond', Georgia, serif; --sans: Jost, system-ui, sans-serif;

	position: relative; max-width: 1520px; margin: 0 auto; padding: 0 40px 90px;
	color: var( --tekst ); font: 300 17px var( --serif );
	background:
		radial-gradient( 1200px 640px at 50% -10%, rgba( 74, 127, 168, .16 ), transparent 72% ),
		radial-gradient( 900px 520px at 86% 40%, rgba( 201, 205, 201, .10 ), transparent 74% ),
		radial-gradient( 760px 440px at 8% 78%, rgba( 157, 68, 56, .08 ), transparent 74% ),
		linear-gradient( 180deg, #1a2024, var( --tlo ) 48% );
	overflow-x: clip;
}
.tpt-strona *, .tpt-strona *::before, .tpt-strona *::after { box-sizing: border-box; }

/* WYŁAMANIE Z UKŁADU MOTYWU. Bez tego dział stoi w kolumnie 645 px. */
body:has( .tpt-strona ) .wp-site-blocks > header, body:has( .tpt-strona ) header.wp-block-template-part,
body:has( .tpt-strona ) .wp-site-blocks > footer, body:has( .tpt-strona ) footer.wp-block-template-part,
body:has( .tpt-strona ) .wp-block-post-title { display: none !important; }
body:has( .tpt-strona ) .wp-site-blocks, body:has( .tpt-strona ) .wp-block-group,
body:has( .tpt-strona ) .wp-block-post-content { padding: 0 !important; margin: 0 !important; max-width: none !important; }
body:has( .tpt-strona ) .wp-block-post-content > *, body:has( .tpt-strona ) .entry-content > * { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
body:has( .tpt-strona ) { background: #0e0f10; }
body:has( .tpt-strona ) .wp-block-post-content > .tpt-strona, body:has( .tpt-strona ) .entry-content > .tpt-strona,
.tpt-strona { box-sizing: border-box; max-width: 1600px !important; margin-left: auto !important; margin-right: auto !important; }
.tpt-strona button { font-family: inherit; }

/* ══════════════  UWERTURA  ══════════════ */

.tpt-hero {
	position: relative; margin: 26px 0 0; padding: 62px 44px 54px; border-radius: 28px;
	border: 1px solid var( --wlos ); overflow: hidden;
	background:
		radial-gradient( 900px 420px at 22% 0%, rgba( 216, 219, 216, .1 ), transparent 70% ),
		linear-gradient( 180deg, rgba( 24, 25, 28, .9 ), rgba( 14, 15, 16, .96 ) );
}
/* Uwertura z grafika nosi `tpt-sekcja--tlo tpt-hero`, a NIE `tpt-hero--tlo`
   — nazwa modyfikatora pochodzi z `tlo()` i jest wspolna dla obu. */
.tpt-sekcja--tlo::before {
	content: ''; position: absolute; inset: 0; z-index: -1;
	background: var( --tlo ) 50% 50% / cover no-repeat; opacity: .92;
}
.tpt-sekcja--tlo::after {
	content: ''; position: absolute; inset: 0; z-index: -1;
	background:
		radial-gradient( 900px 520px at 16% 16%, rgba( 10, 11, 12, .68 ), transparent 76% ),
		linear-gradient( 180deg, rgba( 10, 11, 12, .14 ), rgba( 10, 11, 12, .5 ) );
}
.tpt-hero__nad {
	margin: 0 0 16px; font: 400 11px var( --sans ); letter-spacing: .3em; text-transform: uppercase;
	color: var( --etyk );
}
.tpt-hero__tytul {
	margin: 0 0 26px; max-width: 20ch;
	font: 300 clamp( 40px, 5.2vw, 72px ) / 1.07 var( --serif ); color: var( --tekst-mocny );
	text-shadow: 0 0 60px rgba( 216, 219, 216, .16 );
}

/* ══════════════  SEKCJE  ══════════════ */

.tpt-sekcja { position: relative; margin: 84px 0 0; padding: 0; }
.tpt-sekcja--tlo { padding: 54px 40px 48px; border-radius: 26px; border: 1px solid var( --wlos ); overflow: hidden; }
.tpt-sekcja__nad {
	margin: 0 0 12px; font: 400 11px var( --sans ); letter-spacing: .28em; text-transform: uppercase;
	color: var( --etyk );
}
.tpt-sekcja__tytul {
	margin: 0 0 16px; max-width: 26ch;
	font: 300 clamp( 30px, 3.4vw, 46px ) / 1.12 var( --serif ); color: var( --tekst-mocny );
	text-shadow: 0 0 40px rgba( 216, 219, 216, .13 );
}
.tpt-sekcja__lead { margin: 0 0 32px; max-width: 78ch; font-size: 19px; line-height: 1.66; color: var( --tekst ); }

.tpt-przerywnik { display: block; width: 100%; height: 44px; margin: 66px 0 0; color: var( --sol ); opacity: .5; }

/* ══════════════  LINIA OCZEKIWANIA  ══════════════
   Rysunek dostaje JAWNĄ szerokość, bo SVG w siatce kurczy się do 300 px,
   a wtedy podpisy punktów nachodzą na siebie i cały sens przestaje działać. */

.tpt-linia {
	width: 100%; max-width: 860px; margin: 0 auto; position: relative;
	/* Światło pod rysunkiem — niskie i rozproszone, zgodnie ze światłem działu.
	   Bez niego koło wisi na płaskim tle i nie ma żadnej głębi. */
	background: radial-gradient( 60% 55% at 50% 46%, rgba( 201, 169, 97, .07 ), transparent 72% );
}

/* RYSUNEK NA CAŁĄ SZEROKOŚĆ, OPIS POD SPODEM — odwrotnie niż w działach
   sąsiednich, i to jest różnica wymuszona kształtem rysunku, a nie gustem.
   Róża odległości i plan zagrody są kwadratowe, więc mieszczą się w połowie
   pasma i zostawiają miejsce na opis obok. Pasmo dwunastu dni jest z natury
   szerokie: wciśnięte w połowę dawało słupki po czterdzieści pikseli,
   w których podpis pogody przestawał być czytelny. Dlatego tutaj rysunek
   bierze całe pasmo, a opis staje pod nim i zostaje zwężony do szerokości
   wygodnej do czytania. */
.tpt-linia { max-width: 1120px; }
.tpt-linia__opis { max-width: 78ch; margin-left: auto; margin-right: auto; }
.tpt-linia__svg { display: block; width: 100%; height: auto; overflow: visible; }

/* Punkt na linii. Rodzaj punktu niesie KSZTAŁT, nie tylko barwę: zdarzenie
   to koło pełne, obalenie — koło przekreślone, zapis — kwadrat, przeniesienie
   — romb. Różnica ma być czytelna bez rozróżniania barw. */
.tpt-punkt { cursor: pointer; outline: none; }
.tpt-punkt__pole { fill: transparent; }
.tpt-punkt__znak { fill: var( --tlo ); stroke: var( --plytka-j ); stroke-width: 1.6; }
.tpt-punkt.jest-obaleniem .tpt-punkt__znak { stroke: var( --sol ); }
.tpt-punkt__przekreslenie { stroke: var( --sol ); stroke-width: 1.6; stroke-linecap: round; }
.tpt-punkt__rok { fill: var( --tekst-slaby ); font: 400 11px var( --sans ); letter-spacing: .1em; text-anchor: middle; }
.tpt-punkt__etyk { fill: var( --tekst ); font: 300 14px var( --serif ); }

/* Linia wiary. Nie opada po żadnym obaleniu — to jest cała teza działu
   i dlatego rysowana jest grubiej niż oś czasu. */
.tpt-wiara { fill: none; stroke: var( --zloto ); stroke-width: 2.2; opacity: .85; }
.tpt-wiara__pole { fill: var( --zloto ); opacity: .08; }
.tpt-os { stroke: var( --wlos ); stroke-width: 1; }
.tpt-os__etyk { fill: var( --tekst-slaby ); font: 400 10px var( --sans ); letter-spacing: .18em; text-transform: uppercase; }
.tpt-linia__nota { fill: var( --tekst-slaby ); font: 300 13px var( --serif ); text-anchor: middle; }

.tpt-punkt:hover .tpt-punkt__etyk,
.tpt-punkt:focus-visible .tpt-punkt__etyk { fill: var( --tekst-mocny ); }
.tpt-punkt.jest-wybrany .tpt-punkt__znak { fill: var( --zloto ); stroke: var( --zloto-j ); }
.tpt-punkt.jest-wybrany .tpt-punkt__etyk { fill: var( --tekst-mocny ); font-weight: 500; }
.tpt-punkt.jest-wybrany { filter: drop-shadow( 0 0 14px rgba( 221, 184, 94, .45 ) ); }

.tpt-linia__opis {
	max-width: 78ch; margin: 26px auto 0; padding: 30px 34px;
	border: 1px solid var( --wlos ); border-radius: 22px; background: var( --panel );
}
.tpt-linia__opis h3 { margin: 0 0 6px; font: 300 30px var( --serif ); color: var( --tekst-mocny ); }
.tpt-linia__opis p { margin: 0 0 14px; font-size: 18px; line-height: 1.74; }
.tpt-linia__opis p:last-child { margin-bottom: 0; }
.tpt-linia__rok { font: 400 11px var( --sans ) !important; letter-spacing: .24em; text-transform: uppercase; color: var( --sol ); margin-bottom: 8px !important; }
.tpt-linia__kto { font: 400 12px var( --sans ) !important; letter-spacing: .1em; text-transform: uppercase; color: var( --etyk ); }
.tpt-linia__krotko { color: var( --tekst-mocny ); font-style: italic; }
.tpt-linia__zrodlo { font-size: 15px !important; color: var( --tekst-slaby ); border-top: 1px solid var( --wlos ); padding-top: 12px; }
.tpt-linia__zrodlo b { display: block; font: 400 10.5px var( --sans ); letter-spacing: .22em; text-transform: uppercase; color: var( --etyk ); margin-bottom: 4px; }

/* ══════════════  SIATKI KAFLI  ══════════════ */

.tpt-siatka { display: grid; gap: 22px; grid-template-columns: repeat( auto-fill, minmax( 300px, 1fr ) ); align-items: start; }
.tpt-siatka--zabiegi { grid-template-columns: repeat( auto-fill, minmax( 360px, 1fr ) ); }
.tpt-siatka--slowa { grid-template-columns: repeat( auto-fill, minmax( 260px, 1fr ) ); }

.tpt-kafel {
	position: relative; padding: 26px 26px 24px; border-radius: 20px;
	border: 1px solid var( --wlos ); background: var( --panel ); cursor: pointer;
	transition: border-color .2s, transform .2s;
}
.tpt-kafel:hover, .tpt-kafel:focus-visible { border-color: var( --obrys ); transform: translateY( -2px ); }
.tpt-kafel h3 { margin: 0 0 8px; font: 300 25px / 1.18 var( --serif ); color: var( --tekst-mocny ); }
.tpt-kafel p { margin: 0; font-size: 17px; line-height: 1.66; }
.tpt-kafel__nad {
	display: block; margin: 0 0 10px; font: 400 10.5px var( --sans ); letter-spacing: .22em;
	text-transform: uppercase; color: var( --etyk );
}
.tpt-kafel__nad i { font-style: normal; margin-right: 8px; color: var( --sol ); }

.tpt-foto { margin: 0 0 18px; border-radius: 14px; overflow: hidden; }
.tpt-foto img { display: block; width: 100%; height: auto; }

.tpt-pole { margin: 0 0 14px !important; padding: 12px 16px; border-radius: 12px; font-size: 16px !important; }
.tpt-pole b { display: block; font: 400 10.5px var( --sans ); letter-spacing: .22em; text-transform: uppercase; margin-bottom: 5px; }
.tpt-pole--zrodlo { background: rgba( 109, 122, 124, .12 ); color: var( --tekst-slaby ); }
.tpt-pole--zrodlo b { color: var( --cien-j ); }
.tpt-pole--zamiast { background: rgba( 168, 98, 74, .15 ); color: var( --tekst-mocny ); }
.tpt-pole--zamiast b { color: var( --sol-j ); }

/* ── siedem składników zabiegu ──
   Etykieta i treść w dwóch kolumnach, żeby dało się czytać PIONOWO po
   etykietach i porównywać zabiegi między sobą. To jest cel tego rozkładu:
   nie ozdoba, tylko możliwość zestawienia. */
.tpt-rozklad {
	margin: 0 0 18px; padding: 16px 18px; border-radius: 14px;
	border: 1px solid var( --wlos ); background: rgba( 201, 169, 97, .06 );
}
.tpt-rozklad__pole { display: grid; grid-template-columns: 116px 1fr; gap: 14px; padding: 7px 0; border-bottom: 1px solid var( --wlos ); }
.tpt-rozklad__pole:last-child { border-bottom: 0; }
.tpt-rozklad__pole b { font: 400 10.5px var( --sans ); letter-spacing: .18em; text-transform: uppercase; color: var( --sol ); padding-top: 3px; }
.tpt-rozklad__pole span { font-size: 16.5px; line-height: 1.6; color: var( --tekst ); }

/* ══════════════  LICZNIK  ══════════════ */

.tpt-liczby { display: grid; gap: 20px; grid-template-columns: repeat( auto-fit, minmax( 250px, 1fr ) ); align-items: start; }
.tpt-karta { padding: 28px 24px; border-radius: 20px; border: 1px solid var( --wlos ); background: var( --panel ); }
.tpt-karta__ile {
	margin: 0 0 10px; font: 300 clamp( 38px, 4vw, 56px ) / 1 var( --serif ); color: var( --sol-j );
	text-shadow: 0 0 34px rgba( 227, 196, 133, .22 );
}
.tpt-karta__co { margin: 0 0 10px; font: 400 12px var( --sans ); letter-spacing: .14em; text-transform: uppercase; color: var( --etyk ); line-height: 1.5; }
.tpt-karta__krotko { margin: 0; font-size: 16.5px; line-height: 1.64; }

/* ══════════════  OKNO  ══════════════ */

.tpt-okno {
	max-width: 82ch; padding: 30px 34px; border-radius: 20px;
	border: 1px solid var( --wlos ); background: rgba( 20, 21, 23, .7 );
}
.tpt-okno p { margin: 0; font-size: 19px; line-height: 1.74; color: var( --tekst ); }

/* ══════════════  WĄSKIE EKRANY  ══════════════ */

@media ( max-width: 900px ) {
	.tpt-strona { padding: 0 20px 60px; }
	.tpt-hero { padding: 44px 24px 38px; }
	.tpt-sekcja { margin-top: 60px; }
	.tpt-sekcja--tlo { padding: 36px 22px 32px; }
	.tpt-linia__opis { padding: 22px 20px; }
	.tpt-rozklad__pole { grid-template-columns: 1fr; gap: 3px; }
	/* Siatka zabiegów ma `minmax( 360px )`, co przy 390 px ekranu i marginesach
	   wychodziło 10 px poza stronę — zmierzone, nie założone. Jedna kolumna. */
	.tpt-siatka, .tpt-siatka--zabiegi, .tpt-siatka--slowa { grid-template-columns: 1fr; }
	.tpt-punkt__etyk { font-size: 12px; }
}

/* GRUNT CAŁEJ STRONY. Motyw daje `body` czerń, a kolumna działu ma 1520 px — na
   ekranie 2560 px zostawało po ~470 px czarnego pasa z każdej strony.
   `body:has()` ma swoistość 0,2,1 wobec `body` 0,0,1, więc wygrywa
   z motywem bez `!important`.
   NIE robimy tego pseudoelementem: `background: inherit` na `::after`
   dziedziczy też ZDJĘCIE sekcji, a `cover` przelicza się na szerokości
   pseudoelementu — wychodzą dwa te same zdjęcia w różnych skalach.
   Sprawdzone i cofnięte 2026-09-12. */
body:has( .tpt-strona ) {
	background-color: #061016;
	background-image: radial-gradient( 1600px 900px at 50% 0%, rgba( 74, 127, 168, .07 ), transparent 68% );
	background-attachment: fixed;
}


/* ===== POPRAWKA WARSTW 2026-09-12 =====
   `z-index: -1` na obu pseudoelementach wrzucal ZDJECIE POD wlasne,
   nieprzezroczyste tlo sekcji (.tpt-hero ma pelny linear-gradient),
   wiec grafika nie byla widoczna w ogole. Sprawdzone na zywo.
   Pseudoelementy ida nad tlo elementu, tresc nad nie. */
.tpt-sekcja--tlo::before,
.tpt-sekcja--tlo::after { z-index: 0; }
.tpt-sekcja--tlo > * { position: relative; z-index: 1; }


/* ===== MIT W KAFLU 2026-09-12 =====
   Naglowek kafla w sekcji „Czego nie bylo” to CUDZE falszywe zdanie.
   Ma wygladac na cytat, nie na teze strony. */
.tpt-kafel__nad--mit { color: #c4826e; letter-spacing: .16em; }
.tpt-kafel__mit { color: var( --tekst-slaby ); font-style: italic; }
.tpt-kafel__nie { color: #c4826e; font-style: normal; letter-spacing: .04em; }

/* OKNO TEZY — przejscie tonalne.
   Wspolna warstwa daje oknu tezy plaska pobialke rgba(255,255,255,.028)
   regulami o swoistosci 0,2,0 i 0,3,0 — jedna wartosc dla wszystkich dzialow
   naraz. Dublowana klasa daje 0,4,0 i zamyka sprawe bez !important.
   Barwy sa z palety TEGO dzialu. Dopisane po stronie SERWERA, bo lokalna
   kopia modulu bywa starsza niz wgrana. */
.tpt-strona .tpt-hero .tpt-okno.zd-okno,
.tpt-strona .tpt-hero .zd-okno.zd-okno,
.tpt-strona .tpt-hero .tpt-okno.tpt-okno {
	background:
		radial-gradient( 720px 240px at 42% 0%, rgba( 14, 30, 40, .10 ), transparent 70% ),
		linear-gradient( 168deg, #111b21, #061016 );
}
