/* Mity i eposy — sieć, nie lista lektur.
 *
 * Paleta świadomie NIE jest ciemnym tłem z neonem. Tak wygląda dziś każdy graf
 * w sieci, a te opowieści są starsze od kabla. Zamiast tego atrament, glina
 * tabliczki i nitka złota: węzły ciepłe jak wypalona glina, nici cienkie jak
 * pociągnięcie pióra, tło głębokie jak kałamarz.
 *
 * Barwy węzłów przychodzą z danych, po jednej na typ hasła, i to jest jedyna
 * informacja, którą niosą. Nie kolorujemy nimi nastroju.
 *
 * Cała śmiałość siedzi w ŚLADZIE WĘDRÓWKI: pasek u góry zapisuje drogę, którą
 * czytelnik przeszedł, i to on pokazuje tezę strony mocniej niż jakikolwiek
 * akapit — po trzech kliknięciach jest się poza eposem, od którego się zaczęło.
 */
.tmi-strona {
	--atrament: #0e0f13; --dno: #08090c;
	--wlos: rgba( 216, 161, 92, .14 ); --obrys: rgba( 216, 161, 92, .32 );
	--glina: #d8a15c; --glina-j: #eec288; --glina-c: #8a6236;
	--papier: #efe6d6; --papier-c: #b6ab98;
	--tekst: #9d9689; --tekst-slaby: #7a7469; --tekst-mocny: #efe6d6; --etyk: #837c70;
	--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 15px var( --sans );
	background:
		radial-gradient( 1150px 600px at 50% -12%, rgba( 216, 161, 92, .14 ), transparent 70% ),
		radial-gradient( 900px 520px at 14% 46%, rgba( 127, 179, 216, .06 ), transparent 72% ),
		radial-gradient( 820px 500px at 86% 74%, rgba( 216, 161, 92, .06 ), transparent 72% ),
		linear-gradient( 180deg, #14161c, var( --atrament ) 45%, var( --dno ) );
	overflow-x: clip;
}
.tmi-strona *, .tmi-strona *::before, .tmi-strona *::after { box-sizing: border-box; }
body:has( .tmi-strona ) .wp-site-blocks > header, body:has( .tmi-strona ) header.wp-block-template-part, body:has( .tmi-strona ) .wp-site-blocks > footer, body:has( .tmi-strona ) footer.wp-block-template-part, body:has( .tmi-strona ) .wp-block-post-title { display: none !important; }
body:has( .tmi-strona ) .wp-site-blocks, body:has( .tmi-strona ) .wp-block-group, body:has( .tmi-strona ) .wp-block-post-content { padding: 0 !important; margin: 0 !important; max-width: none !important; }
body:has( .tmi-strona ) .wp-block-post-content > *, body:has( .tmi-strona ) .entry-content > * { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
body:has( .tmi-strona ) { background: #0e0f13; }
body:has( .tmi-strona ) .wp-block-post-content > .tmi-strona, body:has( .tmi-strona ) .entry-content > .tmi-strona, .tmi-strona { box-sizing: border-box; max-width: 1600px !important; margin-left: auto !important; margin-right: auto !important; }
.tmi-strona button { font-family: inherit; }

.tmi-sciezka { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 18px 0 6px; font-size: 10.5px; letter-spacing: .26em; text-transform: uppercase; color: var( --tekst-slaby ); }
.tmi-sciezka i { font-style: normal; color: var( --etyk ); }
.tmi-sciezka b { font-weight: 400; color: var( --glina-j ); }
.tmi-poziom { margin: 0 0 0 auto; }
.tmi-poziom span { display: inline-flex; align-items: center; gap: 7px; padding: 5px 11px; border: 1px solid var( --wlos ); border-radius: 999px; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var( --tekst ); }
.tmi-poziom span::before { content: ''; width: 8px; height: 8px; border-radius: 999px; background: var( --glina ); box-shadow: 0 0 10px var( --glina ); }

.tmi-hero { max-width: 84ch; padding: 44px 0 8px; }
.tmi-nad { margin: 0 0 12px; font-size: 11px; letter-spacing: .34em; text-transform: uppercase; color: var( --etyk ); }
.tmi-tytul { margin: 0; font: 500 clamp( 44px, 5.4vw, 80px )/1.02 var( --serif ); color: var( --glina-j ); letter-spacing: -.01em; }
.tmi-tytul small { display: block; margin-top: 10px; font: 300 16px var( --sans ); letter-spacing: .13em; line-height: 1.5; color: var( --papier-c ); }
.tmi-lead { margin: 24px 0 0; font-size: 16.5px; line-height: 1.78; color: var( --tekst-mocny ); }
.tmi-hero__liczby { display: flex; flex-wrap: wrap; gap: 12px 34px; margin: 28px 0 0; }
.tmi-hero__liczby span { display: inline-flex; align-items: baseline; gap: 10px; font-size: 12.5px; letter-spacing: .1em; color: var( --tekst-slaby ); }
.tmi-hero__liczby b { font: 500 34px var( --serif ); color: var( --glina-j ); text-shadow: 0 0 26px rgba( 216, 161, 92, .45 ); }

.tmi-sekcja { margin: 84px 0 0; }
.tmi-sekcja--scisla { position: relative; padding: 36px 32px 40px; border: 1px solid var( --wlos ); border-radius: 26px; background: radial-gradient( 960px 460px at 50% 0%, rgba( 216, 161, 92, .09 ), transparent 66% ), linear-gradient( 180deg, rgba( 24, 26, 32, .88 ), rgba( 9, 10, 13, .96 ) ); box-shadow: inset 0 1px 0 rgba( 255, 255, 255, .05 ), 0 44px 96px -54px rgba( 0, 0, 0, .96 ); }
.tmi-sekcja__nad { margin: 0 0 8px; font-size: 10.5px; letter-spacing: .3em; text-transform: uppercase; color: var( --etyk ); }
.tmi-sekcja__tytul { margin: 0; font: 500 clamp( 28px, 3.1vw, 42px )/1.14 var( --serif ); color: var( --glina-j ); }
.tmi-sekcja__lead { max-width: 80ch; margin: 14px 0 0; font-size: 15px; line-height: 1.76; color: var( --tekst ); }

/* ══════════════  ŚLAD WĘDRÓWKI — podpis strony  ══════════════ */
.tmi-slad { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 40px; margin: 26px 0 18px; padding: 10px 14px; border: 1px dashed var( --wlos ); border-radius: 14px; background: rgba( 239, 230, 214, .025 ); }
.tmi-slad i { font-style: normal; color: var( --etyk ); opacity: .7; }
.tmi-slad__krok { padding: 5px 12px; border: 1px solid transparent; border-radius: 999px; background: color-mix( in srgb, var( --barwa, var( --glina ) ) 14%, transparent ); font-size: 12.5px; color: var( --tekst ); cursor: pointer; transition: color .2s, background .2s, border-color .2s; }
.tmi-slad__krok:hover { color: var( --tekst-mocny ); border-color: var( --barwa, var( --glina ) ); }
.tmi-slad__krok.jest-tu { color: var( --atrament ); background: var( --barwa, var( --glina ) ); font-weight: 400; }

/* ══════════════  plansza  ══════════════ */
.tmi-graf__uklad { display: grid; grid-template-columns: minmax( 0, 1.4fr ) minmax( 0, 1fr ); gap: 24px 34px; align-items: start; }
.tmi-plansza { position: relative; aspect-ratio: 1 / .78; min-height: 380px; border: 1px solid var( --wlos ); border-radius: 22px; background: radial-gradient( 70% 70% at 50% 50%, rgba( 216, 161, 92, .07 ), transparent 70% ), rgba( 239, 230, 214, .02 ); overflow: hidden; }
.tmi-nici { position: absolute; inset: 0; width: 100%; height: 100%; }
.tmi-nici line { stroke-width: .35; opacity: .45; vector-effect: non-scaling-stroke; }
.tmi-wezly { position: absolute; inset: 0; }

/* Węzeł jak odcisk w glinie: ciepły, lekko wypukły, bez neonowej poświaty. */
.tmi-wezel { position: absolute; transform: translate( -50%, -50% ); max-width: 150px; padding: 8px 13px; border: 1px solid color-mix( in srgb, var( --barwa, var( --glina ) ) 55%, transparent ); border-radius: 12px; background: linear-gradient( 180deg, color-mix( in srgb, var( --barwa, var( --glina ) ) 22%, rgba( 20, 20, 24, .9 ) ), rgba( 14, 15, 19, .95 ) ); font-size: 12.5px; line-height: 1.3; color: var( --tekst-mocny ); text-align: center; cursor: pointer; transition: transform .22s, box-shadow .22s, border-color .22s; }
.tmi-wezel:hover { transform: translate( -50%, -50% ) scale( 1.06 ); border-color: var( --barwa, var( --glina ) ); box-shadow: 0 0 0 1px color-mix( in srgb, var( --barwa, var( --glina ) ) 40%, transparent ), 0 18px 40px -22px rgba( 0, 0, 0, .95 ); }
.tmi-wezel.jest-srodkiem { max-width: 190px; padding: 14px 20px; border-width: 2px; border-radius: 16px; font: 500 19px var( --serif ); background: linear-gradient( 180deg, color-mix( in srgb, var( --barwa, var( --glina ) ) 34%, rgba( 22, 22, 26, .95 ) ), rgba( 12, 13, 17, .96 ) ); box-shadow: inset 0 1px 0 rgba( 255, 255, 255, .12 ), 0 22px 50px -26px rgba( 0, 0, 0, .95 ); cursor: default; }
.tmi-wezel.jest-srodkiem:hover { transform: translate( -50%, -50% ); }

/* Wąski ekran: układ kołowy przestaje mieć sens. Decyzja należy w całości do
   CSS-u — skrypt zawsze ustawia pozycje, a te reguły je unieważniają. Dzięki
   temu przełączanie nie zależy od żadnego zdarzenia, którego moglibyśmy nie
   dostać. Nici znikają, bo linia bez punktu docelowego myli bardziej, niż pomaga. */
@media ( max-width: 640px ) {
	.tmi-plansza { aspect-ratio: auto; min-height: 0; padding: 16px; }
	.tmi-nici { display: none; }
	.tmi-wezly { position: static; display: flex; flex-wrap: wrap; gap: 8px; }
	.tmi-wezel { position: static !important; left: auto !important; top: auto !important; transform: none !important; max-width: none; }
	.tmi-wezel:hover { transform: none !important; }
	.tmi-wezel.jest-srodkiem { flex: 1 0 100%; margin-bottom: 6px; }
}

.tmi-karta { padding: 22px 24px 24px; border: 1px solid var( --wlos ); border-radius: 20px; background: linear-gradient( 180deg, rgba( 239, 230, 214, .05 ), rgba( 239, 230, 214, .012 ) ); }
.tmi-karta__typ { margin: 0 0 8px; font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: var( --barwa, var( --glina-j ) ); }
.tmi-karta h3 { margin: 0 0 10px; font: 500 26px var( --serif ); color: var( --tekst-mocny ); }
.tmi-karta__opis { margin: 0; font-size: 13.5px; line-height: 1.72; color: var( --tekst ); }
.tmi-karta__nad { margin: 20px 0 8px; font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: var( --etyk ); }
.tmi-karta__eposy { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.tmi-karta__eposy li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 9px 12px; border-left: 2px solid var( --glina ); border-radius: 0 10px 10px 0; background: rgba( 216, 161, 92, .075 ); }
.tmi-karta__eposy b { font: 400 14px var( --serif ); font-size: 15px; color: var( --glina-j ); }
.tmi-karta__eposy span { font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var( --tekst-slaby ); }

.tmi-legenda { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 22px 0 0; }
.tmi-legenda span { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; letter-spacing: .12em; color: var( --tekst-slaby ); }
.tmi-legenda span::before { content: ''; width: 10px; height: 10px; border-radius: 3px; background: var( --barwa ); }

/* ══════════════  kafle  ══════════════ */
.tmi-zrodla, .tmi-praktyki, .tmi-ramy__siatka { display: grid; grid-template-columns: repeat( auto-fit, minmax( 262px, 1fr ) ); gap: 16px; margin-top: 28px; }
.tmi-kafel, .tmi-ramy__siatka > div { position: relative; display: flex; flex-direction: column; min-width: 0; padding: 22px 22px 20px; border: 1px solid var( --wlos ); border-radius: 18px; background: linear-gradient( 180deg, rgba( 239, 230, 214, .045 ), rgba( 239, 230, 214, .01 ) ); text-align: left; transition: border-color .3s, transform .3s, box-shadow .3s, background .3s; }
.tmi-kafel--motyw { cursor: pointer; }
.tmi-kafel:hover, .tmi-ramy__siatka > div:hover { border-color: var( --obrys ); transform: translateY( -3px ); background: linear-gradient( 180deg, rgba( 216, 161, 92, .09 ), rgba( 239, 230, 214, .02 ) ); box-shadow: 0 30px 66px -40px rgba( 0, 0, 0, .92 ), 0 0 34px -18px rgba( 216, 161, 92, .38 ); }
.tmi-kafel h3 { margin: 0 0 8px; font: 500 21px var( --serif ); color: var( --tekst-mocny ); }
.tmi-kafel p { margin: 0 0 8px; font-size: 13.5px; line-height: 1.68; color: var( --tekst ); }
.tmi-kafel__ile { font-size: 10.5px !important; letter-spacing: .2em; text-transform: uppercase; color: var( --glina-j ) !important; }
.tmi-kafel__krag { display: flex; align-items: center; gap: 8px; font-size: 10.5px !important; letter-spacing: .2em; text-transform: uppercase; color: var( --etyk ) !important; }
.tmi-kafel__krag i { font-style: normal; }
.tmi-wiecej { display: block; margin-top: auto; padding-top: 12px; border-top: 1px solid var( --wlos ); font: 400 10px var( --sans ); letter-spacing: .2em; text-transform: uppercase; color: var( --glina-j ); opacity: .75; transition: opacity .2s, letter-spacing .2s; }
.tmi-kafel--motyw:hover .tmi-wiecej { opacity: 1; letter-spacing: .24em; }
.tmi-pole { margin-top: 10px !important; padding: 11px 14px; border-left: 2px solid rgba( 239, 230, 214, .26 ); border-radius: 0 10px 10px 0; background: rgba( 239, 230, 214, .035 ); font-size: 12.5px !important; }
.tmi-pole b { display: block; margin-bottom: 4px; font: 400 9.5px var( --sans ); letter-spacing: .22em; text-transform: uppercase; color: var( --papier-c ); }
/* Data zapisu dostaje mocniejszy akcent niż data powstania — bo to ona
   rozstrzyga, jakim rodzajem świadectwa tekst jest. */
.tmi-pole--zapis { border-left-color: var( --glina ); background: rgba( 216, 161, 92, .085 ); }
.tmi-pole--zapis b { color: var( --glina-j ); }
.tmi-ramy__siatka i { display: block; margin-bottom: 10px; font-style: normal; font-size: 16px; color: var( --glina-j ); }
.tmi-ramy__siatka b { display: block; margin-bottom: 8px; font: 500 18px var( --serif ); color: var( --tekst-mocny ); }
.tmi-ramy__siatka p { margin: 0; font-size: 13.5px; line-height: 1.68; color: var( --tekst ); }

@media ( max-width: 1000px ) {
	.tmi-graf__uklad { grid-template-columns: minmax( 0, 1fr ); }
}
@media ( max-width: 780px ) {
	.tmi-strona { padding: 0 18px 70px; }
	.tmi-sekcja { margin-top: 58px; }
	.tmi-sekcja--scisla { padding: 26px 20px 30px; }
	.tmi-poziom { margin: 6px 0 0; }
}
@media ( prefers-reduced-motion: reduce ) {
	.tmi-strona *, .tmi-strona *::before { transition: none !important; animation: none !important; }
}


/* TŁA SEKCJI — reguły trzymają się atrybutu data-tlo, który PHP dokłada dopiero,
   gdy plik leży na serwerze. Bez grafiki blok wygląda dokładnie jak dziś.
   Obraz wchodzi WARSTWĄ background, nie przez ::before — tych pseudoelementów
   używa wspólny zdobienia.css. Zmienna to --obraz-tla, a NIE --tlo, które
   w większości arkuszy jest już barwą tła strony. */

.tmi-hero[data-tlo] {
	position: relative; max-width: none;
	padding: 64px 36px 52px; border-radius: 26px;
	border: 1px solid rgba( 255, 255, 255, .10 );
	box-shadow: inset 0 1px 0 rgba( 255, 255, 255, .05 ), 0 40px 90px -50px rgba( 0, 0, 0, .95 );
	background:
		linear-gradient( 90deg, rgba( 12, 10, 14, .90 ) 0%, rgba( 12, 10, 14, .70 ) 34%, rgba( 12, 10, 14, .34 ) 64%, rgba( 12, 10, 14, 0 ) 100% ),
		var( --obraz-tla ) 50% 46% / cover no-repeat;
}
.tmi-hero[data-tlo] > * { max-width: 80ch; }

.tmi-sekcja[data-tlo] {
	position: relative;
	padding: 40px 36px 44px; border-radius: 26px;
	border: 1px solid rgba( 255, 255, 255, .10 );
	box-shadow: inset 0 1px 0 rgba( 255, 255, 255, .05 ), 0 40px 90px -50px rgba( 0, 0, 0, .95 );
	background:
		radial-gradient( 880px 500px at 12% 16%, rgba( 15, 13, 18, .62 ), transparent 74% ),
		linear-gradient( 180deg, rgba( 15, 13, 18, .10 ) 0%, rgba( 15, 13, 18, .22 ) 48%, rgba( 15, 13, 18, .48 ) 100% ),
		var( --obraz-tla ) 62% 52% / cover no-repeat;
}

/* Czytelność nad zdjęciem: kafle są przezroczyste z założenia, więc nad fotografią
   tekst spada do 1,23:1. Próg 4,5:1 wypada przy kryciu 0,845; stąd 0,90. */
.tmi-sekcja[data-tlo] .zd-pas > li,
.tmi-sekcja[data-tlo] .zd-klocek {
	background-color: rgba( 12, 10, 14, .90 );
	backdrop-filter: blur( 2px );
	border-color: rgba( 255, 255, 255, .16 );
	box-shadow: 0 18px 40px -26px rgba( 0, 0, 0, .9 );
}

@media ( max-width: 680px ) {
	.tmi-sekcja[data-tlo], .tmi-hero[data-tlo] { padding: 28px 20px 32px; border-radius: 18px; }
}

/* TEKST POBOCZNY NAD TŁEM — podpisy i nadtytuły są ciemniejsze od tekstu głównego
   i przy kryciu kafla 0,90 wypadały PONIŻEJ progu 4,5:1. Podnoszenie krycia nic tu
   nie daje — dla najciemniejszych barw trzeba by 0,99, czyli kafel nieprzezroczysty.
   Dlatego rozjaśniam SAMĄ BARWĘ, w tej samej rodzinie, i tylko pod [data-tlo]. */
.tmi-sekcja[data-tlo] {
	--tekst-slaby: #97938a;	/* #7a7469 dawało 3.37:1, teraz 5.1:1 */
	--etyk: #989288;	/* #837c70 dawało 3.78:1, teraz 5.06:1 */
}


/* NADTYTUL JAKO <span>, wiec musi dostac `display:block`, zeby stal w osobnym
   wierszu tak jak wczesniej. Zamiana z <p> byla konieczna, bo w torze widac tylko
   PIERWSZY akapit kafla i nadtytul zjadal opis — 24 kafle, 2026-09-11. */
.tmi-kafel__krag, .tmi-kafel__ile { display: block; }
