/* Motyw adsdata.pl: to, czego nie da się zapisać w theme.json. Wartości z glowna_warianty/zrodlo/wspolne/baza.css
   (paleta P20, fonty T19, logo L03), żeby podstrony wyglądały tak samo jak wybrany wariant strony głównej. */

:root {
	--linia: rgba(250, 255, 243, .12);
	--linia-slaba: rgba(250, 255, 243, .06);
	--promien: 18px;
	--c-tlo: var(--wp--preset--color--tlo);
	--c-karta: var(--wp--preset--color--karta);
	--c-kosc: var(--wp--preset--color--kosc);
	--c-tekst: var(--wp--preset--color--tekst);
	--c-szary: var(--wp--preset--color--szary);
	--c-limonka: var(--wp--preset--color--limonka);
	--c-zielen: var(--wp--preset--color--zielen);
	--c-na-limonce: #0A0D04; /* tekst na limonce: stały w obu wersjach, bo limonka się nie zmienia */
	--f-naglowki: var(--wp--preset--font-family--naglowki);
	--fokus: var(--c-limonka); /* obrys fokusu: zmienia go wersja jasna i powierzchnie w kolorze obrysu (niżej) */
}

body { -webkit-font-smoothing: antialiased; font-variant-numeric: tabular-nums; }
/* stopka przy dolnej krawędzi okna także na krótkich stronach (404, podziękowanie) */
.wp-site-blocks { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; }
.wp-site-blocks > main { flex: 1 0 auto; }
body.admin-bar .wp-site-blocks { min-height: calc(100dvh - var(--wp-admin--admin-bar--height, 32px)); }
:where(a) { text-decoration-color: var(--c-limonka); text-underline-offset: 5px; text-decoration-thickness: 1px; }
:focus-visible { outline: 2px solid var(--fokus); outline-offset: 3px; border-radius: 4px; }
html:root :focus-visible { outline-color: var(--fokus); } /* mocniejsze od :focus-visible ze stylu strony głównej */
/* obrys znika na powierzchni w swoim kolorze: ciemny na limonce i kremowej karcie formularza, limonka na ciemnym panelu */
.glowna .ciemna { --fokus: var(--c-limonka); }
.kontakt-formularz, .kontakt-karta { --fokus: #0A0D04; }
::selection { background: var(--c-limonka); color: var(--c-na-limonce); }

/* ── nagłówek ───────────────────────────────────────────────────────────── */
.naglowek-pas { position: relative; z-index: 10; border-bottom: 1px solid var(--linia-slaba); }
.naglowek { gap: 24px; padding-block: 20px; }
.naglowek-prawa { gap: 28px; }
@media (max-width: 380px) { .naglowek, .naglowek-prawa { gap: 12px; } .naglowek .logo span { font-size: 13px; } }
/* poniżej 360 px (najmniejsze telefony, większy rozmiar wyświetlania w Androidzie, powiększenie 400%) nazwa w dwóch wierszach */
@media (max-width: 359px) { .naglowek .logo span { white-space: normal; font-size: 12px; line-height: 1.15; } }
.logo { display: inline-flex; align-items: center; gap: 12px; color: var(--c-kosc); text-decoration: none; }
.logo .znak { width: 56px; height: auto; flex: none; }
.logo span { font: 400 15px/1 var(--f-naglowki); white-space: nowrap; }
.logo:hover { color: var(--c-kosc); }
.menu-glowne .wp-block-navigation-item__content:hover { color: var(--c-kosc); }
.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close { color: var(--c-kosc); }
.wp-block-navigation__responsive-container-open { display: grid; place-items: center; width: 44px; height: 44px; margin: -10px; }
/* menu na telefonie: pełny ekran w kolorach motywu (kolory nadaje blok nawigacji), znak i krzyżyk tam, gdzie znak
   i ikona menu w nagłówku, duże linki od lewej, na dole przycisk przeglądu i e-mail; te dwa ostatnie linki menu widać
   tylko w nakładce. Selektory z nav.menu-glowne, bo reguły nakładki w WordPressie są mocniejsze od zwykłych klas. */
.wp-block-navigation__responsive-container:not(.is-menu-open) .menu-cta,
.wp-block-navigation__responsive-container:not(.is-menu-open) .menu-mail { display: none; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-dialog { min-height: 100%; padding: 0 0 32px; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-dialog::before { content: ""; position: absolute; top: 8px; left: 0; width: 46px; height: 22px; background: currentColor; -webkit-mask: url("../img/znak.svg") no-repeat left center / contain; mask: url("../img/znak.svg") no-repeat left center / contain; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-container-close { top: -4px; right: -10px; display: grid; place-items: center; width: 44px; height: 44px; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-container-content { align-items: stretch; gap: 0; padding-top: 64px; }
nav.menu-glowne .is-menu-open .wp-block-navigation__container { align-items: stretch !important; gap: 0; width: 100%; }
nav.menu-glowne .is-menu-open .wp-block-navigation-item { justify-content: flex-start; width: 100%; border-bottom: 1px solid var(--linia); }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content { box-sizing: border-box; display: block; width: 100%; padding: 16px 0; font: 400 26px/1.15 var(--f-naglowki); text-align: left; }
nav.menu-glowne .is-menu-open .menu-cta, nav.menu-glowne .is-menu-open .menu-mail { border-bottom: 0; }
nav.menu-glowne .is-menu-open .menu-cta { margin-top: 32px; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-container-content .menu-cta .wp-block-navigation-item__content { padding: 16px 24px; border-radius: 999px; background: var(--c-limonka); color: var(--c-na-limonce); font: 600 17px/1.2 var(--wp--preset--font-family--tekst); text-align: center; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-container-content .menu-mail .wp-block-navigation-item__content { padding: 12px 0; font: 400 16px/1.4 var(--wp--preset--font-family--tekst); color: var(--c-szary); text-align: center; }
/* nagłówek przyklejony u góry na telefonie; kotwice sekcji (#uslugi itd.), skok do pola po błędzie i fokus z klawiatury
   zatrzymują się pod nim, nie za nim. Odstęp mają tylko elementy treści: przy scroll-padding na całej stronie zamknięcie
   menu cofało stronę o pół ekranu, bo przeglądarka uznawała przycisk menu w nagłówku za zasłonięty i przewijała do niego. */
@media (max-width: 781px) {
	.wp-site-blocks > header.wp-block-template-part { position: sticky; top: 0; z-index: 50; }
	body.admin-bar .wp-site-blocks > header.wp-block-template-part { top: var(--wp-admin--admin-bar--height, 46px); }
	.naglowek-pas { background: var(--c-tlo); }
	.naglowek { padding-block: 12px; }
	.wp-site-blocks > main,
	.wp-site-blocks > :not(header) :is([id], a, button, summary) { scroll-margin-top: 80px; }
	.wp-site-blocks > :not(header) :is(input, select, textarea) { scroll-margin-top: 112px; } /* z etykietą nad polem */
}
/* 600-899 px (telefon poziomo, mały tablet, laptop w powiększeniu): ikona menu jak na telefonie. WordPress pokazuje pełne
   menu od 600 px, a pięć linków z przyciskiem mieści się w jednym rzędzie dopiero od 900 px; wcześniej łamały się
   w 2-5 wierszy i przyklejony nagłówek zasłaniał do 65% ekranu. Ikona menu z prawej, żeby krzyżyk pojawiał się tam,
   gdzie ją dotknięto. */
@media (min-width: 600px) and (max-width: 899px) {
	.menu-glowne .wp-block-navigation__responsive-container-open:not(.always-shown) { display: grid; }
	.menu-glowne .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
	.naglowek-prawa { gap: 16px; }
}
@media (max-width: 899px) {
	.naglowek-prawa .przelacznik-motywu { order: -2; }
	.naglowek-prawa .naglowek-cta { order: -1; }
}
/* przycisk „do góry”: pokazuje go motyw.js po przewinięciu o półtora ekranu, ale tylko przy przewijaniu w górę albo na
   końcu strony (przy czytaniu w dół nie zasłania plusów FAQ i pól) i nie nad formularzem */
.do-gory { position: fixed; right: 16px; bottom: max(16px, env(safe-area-inset-bottom)); z-index: 40; display: inline-flex; align-items: center; gap: 6px; height: 44px; padding: 0 16px 0 12px; border: 1px solid rgba(250, 255, 243, .45); border-radius: 999px; background: var(--c-karta); color: var(--c-kosc); box-shadow: 0 6px 18px rgba(0, 0, 0, .28); font: 600 14px/1 var(--wp--preset--font-family--tekst); cursor: pointer; }
.do-gory[hidden] { display: none; }
.do-gory svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.do-gory:hover, .do-gory:focus-visible { border-color: var(--c-limonka); }
.naglowek-cta .wp-block-button__link { white-space: nowrap; }
@media (max-width: 600px) {
	.naglowek-prawa .wp-block-buttons.naglowek-cta { display: none; }
	.logo .znak { width: 46px; }
}
/* na stronie podziękowania nie zachęcamy do przeglądu, o który gość właśnie poprosił */
body.strona-dziekuje .naglowek-prawa .naglowek-cta, body.strona-dziekuje li.menu-cta { display: none !important; }
/* bieżąca strona w menu (Kontakt, Usługi i strony usług; znacznik aria-current dodaje functions.php) */
.menu-glowne a[aria-current="page"] { color: var(--c-kosc); text-decoration: underline; text-decoration-color: var(--c-limonka); text-underline-offset: 6px; }
/* podmenu „Usługi” na komputerze: karta pod linkiem w kolorach motywu, linki w pełnej wysokości 44 px; strzałka obok
   „Usługi” to osobny przycisk rozwijania (WordPress dodaje mu aria-expanded), sam link prowadzi na /uslugi/ */
.menu-glowne .wp-block-navigation__submenu-container { min-width: 248px !important; padding: 8px !important; border: 1px solid var(--linia) !important; border-radius: 16px; background: var(--c-karta) !important; color: var(--c-kosc) !important; box-shadow: 0 14px 34px rgba(0, 0, 0, .38); }
.menu-glowne .wp-block-navigation__submenu-container .wp-block-navigation-item__content { box-sizing: border-box; display: block; width: 100%; min-height: 44px; padding: 11px 14px !important; border-radius: 10px; line-height: 1.3; }
.menu-glowne .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { background: var(--linia-slaba); }
.menu-glowne .menu-uslugi-wszystkie { border-bottom: 1px solid var(--linia); margin-bottom: 4px; padding-bottom: 4px; }
.menu-glowne .wp-block-navigation__submenu-icon { width: 20px; height: 20px; margin-left: 2px; padding: 0; }
.menu-glowne .wp-block-navigation__submenu-icon svg { width: 12px; height: 12px; stroke: currentColor; }
/* podmenu w nakładce na telefonie: zawsze rozwinięte, mniejsze linki z wcięciem pod „Usługi”; menu jest wyrównane do
   prawej, więc WordPress dosuwał podmenu do prawej krawędzi, stąd wyrównanie do lewej na całą szerokość */
nav.menu-glowne .is-menu-open .wp-block-navigation-item.has-child { align-items: stretch !important; }
nav.menu-glowne .is-menu-open .wp-block-navigation__submenu-container { box-sizing: border-box; width: 100% !important; margin: 0 0 14px !important; padding: 0 0 0 18px !important; border: 0 !important; border-left: 2px solid var(--c-limonka) !important; border-radius: 0; background: transparent !important; box-shadow: none; }
nav.menu-glowne .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item { align-items: stretch !important; border-bottom: 0; }
nav.menu-glowne .is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: 10px 0 !important; font: 400 18px/1.3 var(--wp--preset--font-family--tekst); color: var(--c-tekst); }
nav.menu-glowne .is-menu-open .menu-uslugi-wszystkie { margin: 0; padding: 0; border: 0; }
nav.menu-glowne .is-menu-open .wp-block-navigation__submenu-icon { display: none; }

/* ── przyciski: warianty ────────────────────────────────────────────────── */
.wp-element-button, .wp-block-button__link { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; text-decoration: none; transition: box-shadow .2s, background-color .2s, color .2s; }
.is-style-poswiata .wp-block-button__link { background: var(--c-tlo); color: var(--c-kosc); border-color: var(--c-limonka); box-shadow: 0 0 0 1px rgba(192, 245, 61, .2), 0 0 18px rgba(192, 245, 61, .35); min-height: 40px; padding: 8px 18px; font-size: 14px; }
.is-style-poswiata .wp-block-button__link:hover { background: var(--c-tlo); color: var(--c-kosc); box-shadow: 0 0 0 1px rgba(192, 245, 61, .5), 0 0 30px rgba(192, 245, 61, .6); }
.is-style-obrys .wp-block-button__link { background: transparent; color: var(--c-kosc); border-color: var(--c-kosc); }
.is-style-obrys .wp-block-button__link:hover { background: var(--c-kosc); color: var(--c-tlo); }
/* ciemny przycisk na limonce albo jasnej karcie: taki sam w obu wersjach strony */
.is-style-ciemny .wp-block-button__link { background: var(--c-na-limonce); color: #FAFFF3; }
.is-style-ciemny .wp-block-button__link:hover { background: var(--c-na-limonce); color: var(--c-limonka); }

/* ── treść stron ───────────────────────────────────────────────────────── */
/* długie dokumenty (polityka, narzędzie) w kolumnie 640 px, około 75 znaków w wierszu; kontakt ma bloki szerokie, więc się nie zmienia */
.tresc-strony { --wp--style--global--content-size: 640px; }
.tresc-strony .wp-block-post-title { margin-bottom: 0; }
.lead { max-width: 760px; font-size: 19px; color: var(--c-kosc); }
/* w kolumnie 640 px (dziękuję, narzędzie, polityka) akapit wstępny nie wystaje 60 px w lewo poza tytuł (29.10.2026) */
.tresc-strony .wp-block-post-content > .lead { max-width: var(--wp--style--global--content-size); }
.meta-strony { font-size: 14px; color: var(--c-szary); }
.wp-block-separator { border: 0; border-top: 1px solid var(--linia); opacity: 1; }
.wp-block-list li + li { margin-top: .45em; }
.wp-block-list li::marker { color: var(--c-zielen); }
code { padding: 1px 6px; border-radius: 6px; background: var(--linia-slaba); font-size: .86em; color: var(--c-kosc); overflow-wrap: anywhere; }
/* kod w bloku (np. wywołanie API we wpisie): łamie się w kolumnie zamiast rozpychać stronę na telefonie */
pre { max-width: 100%; white-space: pre-wrap; overflow-wrap: anywhere; }
.wp-block-table { overflow-x: auto; }
/* nazwy w kodzie w tabeli (np. analytics_storage) w jednym kawałku: tabela przewija się w bok, zamiast łamać słowo */
.wp-block-table td code, .wp-block-table th code { white-space: nowrap; overflow-wrap: normal; }
/* „server-side” w nagłówkach bez łamania na dywizie (span dokłada functions.php) */
.bez-lamania { white-space: nowrap; }
.wp-block-table table { width: 100%; border-collapse: collapse; }
.wp-block-table th, .wp-block-table td { padding: 10px 12px; border: 0; border-bottom: 1px solid var(--linia); text-align: left; vertical-align: top; }
.wp-block-table th { color: var(--c-kosc); font-weight: 600; }
.wp-block-table thead { border-bottom: 0; }
.is-style-karta { padding: 22px 24px; border: 1px solid var(--linia); border-radius: var(--promien); background: var(--c-karta); }
.is-style-karta > :first-child { margin-top: 0; }
.wersja-en { margin-top: var(--wp--preset--spacing--l); }
/* spis treści długiego dokumentu (polityka prywatności): linki do sekcji na początku strony */
.spis-tresci { margin-top: 28px; padding: 18px 22px; border: 1px solid var(--linia); border-radius: var(--promien); background: var(--c-karta); }
.spis-tresci-tytul { margin: 0; font-weight: 600; color: var(--c-kosc); }
.spis-tresci ul { margin: 8px 0 0; padding-left: 20px; }
.spis-tresci li + li { margin-top: 0; }
.spis-tresci a { display: inline-block; padding-block: 6px; }

/* znacznik roboczy: rzeczy do potwierdzenia przed publikacją (znika, gdy treść jest gotowa) */
.dp { display: inline-block; margin: 2px 0; padding: 1px 7px; vertical-align: middle; border: 1px dashed #B8941F; border-radius: 4px; background: #4A3A12; color: #FFE08A; font: 500 12px/1.45 var(--wp--preset--font-family--tekst); letter-spacing: 0; text-transform: none; }
/* propozycja do zatwierdzenia (np. cena): tekst zostaje widoczny w swoim kroju, przerywana ramka mówi, że to jeszcze
   nie decyzja; z propozycją wersja na żywo się nie zbuduje (buduj.py) */
mark.propozycja { padding: 0 4px; border-radius: 4px; outline: 2px dashed #E0A526; outline-offset: 1px; background: rgba(224, 165, 38, .16); color: inherit; }

/* ── kontakt ───────────────────────────────────────────────────────────── */
.kontakt-siatka { gap: 28px; }
.kontakt-formularz { padding: clamp(20px, 3vw, 30px); border-radius: 20px; background: var(--c-limonka); color: var(--c-na-limonce); }
.kontakt-formularz h2 { margin-top: 0; color: var(--c-na-limonce); }
.formularz { display: grid; gap: 12px; margin-top: 16px; }
.formularz label { display: block; font: 600 14px/1.2 var(--wp--preset--font-family--tekst); color: var(--c-na-limonce); }
.formularz label small { font-size: inherit; font-weight: 400; }
/* pola 16 px: przy mniejszym tekście iPhone przybliża stronę po dotknięciu pola i zostawia ją przybliżoną;
   ramka .55 odcina pole od karty (3:1 dla granic elementów), także w trybie wysokiego kontrastu */
.formularz input, .formularz select, .formularz textarea { box-sizing: border-box; display: block; width: 100%; margin-top: 6px; min-height: 44px; padding: 10px 12px; border: 1px solid rgba(10, 13, 4, .55); border-radius: 8px; background: rgba(10, 13, 4, .1); color: var(--c-na-limonce); font: 400 16px/1.3 var(--wp--preset--font-family--tekst); }
.formularz textarea { min-height: 96px; resize: vertical; }
.formularz ::placeholder { color: rgba(10, 13, 4, .68); opacity: 1; }
.formularz input:focus, .formularz select:focus, .formularz textarea:focus { outline: 2px solid var(--c-na-limonce); outline-offset: 1px; }
.formularz button { justify-self: start; min-height: 48px; margin-top: 4px; padding: 12px 24px; border: 1px solid transparent; border-radius: 999px; background: var(--c-na-limonce); color: #FAFFF3; font: 600 15px/1.2 var(--wp--preset--font-family--tekst); cursor: pointer; }
.formularz button:hover { color: var(--c-limonka); }
.formularz button:disabled { cursor: progress; opacity: .8; }
.formularz .drobne { font-size: 12.5px; line-height: 1.45; color: #2F3D12; }
.formularz .drobne a { color: var(--c-na-limonce); }
.kontakt-formularz a:not(.wp-block-button__link) { color: var(--c-na-limonce); text-decoration-color: currentColor; }
/* pole-pułapka na boty: niewidoczne dla ludzi i czytników ekranu; komunikat o błędzie po powrocie z wysyłki stoi nad
   pierwszym polem (formularz to siatka) i wygląda jak komunikat, a nie jak kolejne pole */
.formularz-pulapka { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.formularz-komunikat { order: -1; margin: 0; padding: 10px 12px; border-radius: 8px; background: var(--c-na-limonce); color: #FAFFF3; font-size: 14px; font-weight: 600; line-height: 1.45; }
.formularz .formularz-komunikat a { color: inherit; }
.kroki { counter-reset: krok; list-style: none; padding-left: 0; }
.kroki li { position: relative; padding-left: 52px; counter-increment: krok; }
.kroki li::before { content: counter(krok); position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: var(--c-limonka); font: 400 14px/1 var(--f-naglowki); color: var(--c-na-limonce); }
.kroki li + li { margin-top: 18px; }
.kroki b { display: block; color: var(--c-kosc); }
.kontakt-osoba { display: flex; align-items: center; gap: 14px; }
.kontakt-osoba img { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; object-position: 50% 18%; }
.kontakt-osoba strong { display: block; color: var(--c-kosc); }
.kontakt-osoba span { font-size: 14px; color: var(--c-szary); }

/* ── 404 ───────────────────────────────────────────────────────────────── */
.blad404-kod { margin: 0; font: 400 var(--wp--preset--font-size--gigant)/1 var(--f-naglowki); color: var(--c-limonka); text-shadow: 0 0 40px rgba(192, 245, 61, .35); }

/* ── podziękowanie ─────────────────────────────────────────────────────── */
.dziekuje-ikona { display: grid; place-items: center; width: 64px; height: 64px; margin: 0 auto; border-radius: 50%; background: var(--c-limonka); color: var(--c-na-limonce); }
.dziekuje-ikona svg { width: 30px; height: 30px; }

/* ── aktualności: lista z filtrem kategorii, karty wpisów, wpis ─────────── */
.aktualnosci-glowa > * { margin-block: 0; }
.aktualnosci-glowa h1 { margin-top: 6px; }
.aktualnosci-wstep { max-width: 640px; margin-top: 14px !important; font-size: 18px; color: var(--c-tekst); }
.aktualnosci-okruszki { font-size: 14px; }
.aktualnosci-okruszki a { display: inline-block; padding-block: 13px; margin-block: -13px; color: var(--c-szary); text-decoration: none; } /* 44 px do dotknięcia bez zmiany układu */
.aktualnosci-okruszki a::before { content: "← "; content: "← " / ""; } /* strzałka bez czytania na głos */
.aktualnosci-okruszki a:hover { color: var(--c-kosc); }
/* filtr: zwykłe linki do archiwów kategorii (każda ma swój adres), aktywna wypełniona limonką */
.filtr { gap: 8px; margin-top: 28px !important; }
.filtr-kategorie { display: contents; }
.filtr-kategorie li { margin: 0; list-style: none; }
.filtr-kategorie .cat-item-none { display: none; }
.filtr a { box-sizing: border-box; display: inline-flex; align-items: center; min-height: 44px; padding: 8px 18px; border: 1px solid var(--linia); border-radius: 999px; color: var(--c-kosc); font: 600 14px/1.2 var(--wp--preset--font-family--tekst); text-decoration: none; white-space: nowrap; }
.filtr a:hover { border-color: var(--c-limonka); }
.filtr a.aktywna, .filtr .current-cat > a { border-color: var(--c-limonka); background: var(--c-limonka); color: var(--c-na-limonce); }
@media (forced-colors: active) { .filtr [aria-current], .wpisy-strony .current { border-width: 3px; } }
/* siatka: 3 kolumny, na pierwszej stronie listy najnowszy wpis na całą szerokość (zdjęcie obok tekstu); cała karta klikalna */
.wpisy { margin-top: clamp(32px, 4vw, 48px) !important; }
.wpisy-siatka { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin: 0; padding: 0; list-style: none; }
.wpisy-siatka > li { margin: 0; }
.wpis-karta { position: relative; display: flex; flex-direction: column; height: 100%; padding: 14px; border: 1px solid var(--linia); border-radius: var(--promien); background: var(--c-karta); transition: border-color .2s; }
.wpis-karta:hover, .wpis-karta:focus-within { border-color: var(--c-limonka); }
.wpis-karta > .wpis-zdjecie { margin: 0 0 16px; overflow: hidden; border-radius: 10px; background: var(--wp--preset--color--oliwka); }
.wpis-zdjecie img { display: block; width: 100%; height: 100%; object-fit: cover; }
.wpis-tekst { display: flex; flex: 1; flex-direction: column; gap: 10px; padding: 0 4px 4px; }
.wpis-tekst > * { margin: 0 !important; }
.wpis-kategorie { font-size: 13px; color: var(--c-szary); }
.wpis-kategorie a { position: relative; z-index: 2; display: inline-block; padding-block: 4px; color: var(--c-szary); text-decoration: none; }
.wpis-kategorie a:hover { color: var(--c-kosc); text-decoration: underline; }
.wpis-tytul { font: 400 clamp(18px, 1.6vw, 21px)/1.3 var(--f-naglowki); }
.wpis-tytul a { color: var(--c-kosc); text-decoration: none; }
.wpis-tytul a::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.wpis-tytul a:focus-visible { outline: none; }
.wpis-karta:has(.wpis-tytul a:focus-visible) { outline: 2px solid var(--fokus); outline-offset: 3px; }
.wpis-zajawka { font-size: 15px; color: var(--c-tekst); }
.wpis-zajawka p { margin: 0; }
.wpis-tekst .wpis-data { margin-top: auto !important; padding-top: 4px; font-size: 13px; color: var(--c-szary); }
body:not(.paged) .aktualnosci .wpisy-siatka > li:first-child { grid-column: 1 / -1; }
body:not(.paged) .aktualnosci .wpisy-siatka > li:first-child .wpis-karta:has(> .wpis-zdjecie) { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(20px, 3vw, 40px); align-items: center; padding: 16px; }
body:not(.paged) .aktualnosci .wpisy-siatka > li:first-child .wpis-karta > .wpis-zdjecie { margin: 0; }
body:not(.paged) .aktualnosci .wpisy-siatka > li:first-child .wpis-tytul { font-size: clamp(22px, 2.4vw, 32px); }
@media (max-width: 1000px) { .wpisy-siatka { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) {
	.wpisy-siatka { grid-template-columns: 1fr; }
	/* wyróżniona karta jak zwykła: bez odstępu i wyśrodkowania z siatki komputera (ramka obrazka była wyższa niż grafika) */
	body:not(.paged) .aktualnosci .wpisy-siatka > li:first-child .wpis-karta:has(> .wpis-zdjecie) { display: flex; gap: 0; align-items: stretch; padding: 14px; }
	body:not(.paged) .aktualnosci .wpisy-siatka > li:first-child .wpis-karta > .wpis-zdjecie { margin-bottom: 16px; }
}
.wpisy-strony { gap: 8px; margin-top: 36px !important; font-size: 15px; }
.wpisy-strony a, .wpisy-strony .page-numbers { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 14px; border: 1px solid var(--linia); border-radius: 999px; color: var(--c-kosc); text-decoration: none; }
.wpisy-strony .current { border-color: var(--c-limonka); background: var(--c-limonka); color: var(--c-na-limonce); }
.wpisy-strony a:hover { border-color: var(--c-limonka); }
.wpisy-pusto { padding: 28px; border: 1px dashed var(--linia); border-radius: var(--promien); }
/* pas zaproszenia pod listą i pod wpisem (pod wpisem tak szeroki jak tekst) */
.aktualnosci-cta { margin-top: clamp(48px, 6vw, 80px) !important; padding: clamp(28px, 4vw, 48px); border: 1px solid var(--linia); border-radius: 24px; background: var(--c-karta); }
.aktualnosci-cta h2 { margin: 0; font-size: clamp(22px, 2.6vw, 32px); }
.aktualnosci-cta p { max-width: 560px; margin: 12px 0 0; }
.aktualnosci-cta .wp-block-buttons { margin-top: 22px; }
.wpis > .aktualnosci-cta { max-width: var(--wp--style--global--content-size); }
/* wpis: kolumna 800 px (31.10.2026, prośba właściciela: przy 640 px wpis był „bardzo wąsko napisany”), od 861 px tekst
   19 px, czyli około 80 znaków w wierszu; tytuł, zdjęcie, ramka autora i pas zaproszenia biorą tę samą szerokość
   z układu WordPressa. Telefon bez zmian; na tablecie kolumna zajmuje teraz całą szerokość ekranu (wcześniej
   trzymało ją 640 px), tekst 18 px. */
.wpis { --wp--style--global--content-size: 800px; }
.wpis-glowa > * { margin-block: 0; }
.wpis-glowa .wpis-kategorie { margin-top: 22px; }
/* tytuł wpisu mniejszy niż nagłówki stron: tytuły wpisów są długie (przy kolumnie 640 px w rozmiarze nagłówka strony
   miałby 5 wierszy); na telefonie 26-32 px, bo długie polskie słowa w 33 px łamały się bez dywizu */
.wpis-tytul-glowny { margin-top: 10px !important; font-size: clamp(30px, 3.4vw, 44px) !important; line-height: 1.12 !important; }
@media (max-width: 480px) { .wpis-tytul-glowny { font-size: clamp(26px, 7.2vw, 32px) !important; } }
.wpis-tytul-glowny, .wpis-tytul { -webkit-hyphens: auto; hyphens: auto; }
.wpis-meta { gap: 4px 12px; margin-top: 14px !important; font-size: 14px; color: var(--c-szary); }
.wpis-meta > * { margin: 0 !important; }
/* podpisy dat w środku <time>, kropki przed datą zmiany i autorem; na telefonie każda rzecz w swoim wierszu, bez kropek
   (dłuższa data zawijała wiersz i kropka lądowała na początku linii) */
.wpis-meta .wpis-data time::before { content: "Opublikowano "; }
.wpis-meta .wpis-data-zmiana time::before { content: "Zaktualizowano "; }
.wpis-meta .wpis-data-zmiana::before, .wpis-autor-krotko::before { content: "·"; content: "·" / ""; margin-right: 12px; }
@media (max-width: 480px) {
	.wpis-meta { flex-direction: column; align-items: flex-start; gap: 2px; }
	.wpis-meta .wpis-data-zmiana::before, .wpis-autor-krotko::before { content: none; }
}
.wpis-zdjecie-glowne { margin-top: 28px !important; overflow: hidden; border-radius: var(--promien); }
.wpis-tresc { margin-top: 28px !important; font-size: 18px; }
.wpis-tresc .wp-block-quote { margin-block: 28px; padding: 4px 0 4px 20px; border-left: 3px solid var(--c-limonka); font-size: 18px; color: var(--c-kosc); }
.wpis-tresc .wp-block-quote cite { display: block; margin-top: 8px; font-size: 14px; font-style: normal; color: var(--c-szary); }
@media (min-width: 861px) { .wpis-tresc, .wpis-tresc .wp-block-quote { font-size: 19px; } }
.wpis-autor { display: flex; align-items: flex-start; gap: 16px; margin-top: 48px !important; padding: 20px; border: 1px solid var(--linia); border-radius: var(--promien); background: var(--c-karta); }
.wpis-autor-zdjecie { flex: none; margin: 0; }
.wpis-autor-zdjecie img { border-radius: 50%; object-position: 50% 18%; }
.wpis-autor-tekst > * { margin: 0; }
.wpis-autor-tekst p + p { margin-top: 6px; font-size: 15px; }
.wpis-autor-imie { font-weight: 600; color: var(--c-kosc); }
.wpis-autor-imie a { color: inherit; }
@media (max-width: 400px) { .wpis-autor { flex-direction: column; } }
/* „Czytaj także”: do 3 wpisów z tej samej kategorii pod ramką autora, zwarta lista w kolumnie tekstu (zdjęcie z lewej,
   bez zajawki); bez innych wpisów sekcja znika */
.wpis-czytaj-tez:not(:has(.wp-block-post)) { display: none; }
.wpis-czytaj-tez-tytul { margin: 0 0 16px !important; font-size: clamp(22px, 2.2vw, 26px); }
.wpis-czytaj-tez .wpisy-siatka { grid-template-columns: minmax(0, 1fr); gap: 12px; }
.wpis-czytaj-tez .wpis-karta:has(> .wpis-zdjecie) { display: grid; grid-template-columns: 168px minmax(0, 1fr); gap: 18px; align-items: center; padding: 12px; }
.wpis-czytaj-tez .wpis-karta > .wpis-zdjecie { margin: 0; }
.wpis-czytaj-tez .wpis-tekst { gap: 6px; padding: 0; }
.wpis-czytaj-tez .wpis-zajawka { display: none; }
.wpis-czytaj-tez .wpis-tytul { font-size: clamp(16px, 1.3vw, 18px); }
.wpis-czytaj-tez .wpis-tekst .wpis-data { padding-top: 0; }
@media (max-width: 480px) { .wpis-czytaj-tez .wpis-karta:has(> .wpis-zdjecie) { grid-template-columns: 104px minmax(0, 1fr); gap: 14px; } }

/* ── stopka ────────────────────────────────────────────────────────────── */
.stopka { position: relative; isolation: isolate; overflow: hidden; overflow: clip; margin-top: 0; padding-top: 64px; border-top: 1px solid var(--linia-slaba); }
.stopka-siatka { gap: 40px; }
/* cztery kolumny (logo, zachęta, usługi, strona); między 782 a 1100 px logo i zachęta nad listami linków */
@media (min-width: 782px) and (max-width: 1100px) {
	.stopka-siatka { flex-wrap: wrap !important; }
	.stopka-siatka > .wp-block-column:nth-child(-n+2) { flex-basis: calc(50% - 20px) !important; }
	.stopka-siatka > .wp-block-column:nth-child(n+3) { flex-basis: calc(50% - 20px) !important; flex-grow: 0; }
}
/* na telefonie listy „Usługi” i „Strona” obok siebie: jedna pod drugą wydłużały stopkę o prawie 300 px */
@media (max-width: 781px) {
	.stopka-siatka { flex-wrap: wrap !important; column-gap: 20px !important; }
	.stopka-siatka > .wp-block-column:nth-child(n+3) { flex-basis: calc(50% - 10px) !important; flex-grow: 0; min-width: 0; }
}
.stopka-siatka > .wp-block-column:first-child { min-width: max-content; }
.stopka .logo .znak { width: 50px; }
.stopka-podpis { margin-top: 12px; font-size: 14px; color: var(--c-szary); }
.stopka-zacheta { font: 400 clamp(17px, 1.8vw, 20px)/1.35 var(--f-naglowki); color: var(--c-kosc); }
.stopka-kontakt { line-height: 2; }
.stopka-tytul { margin: 0 0 14px; font: 600 12.5px/1.3 var(--wp--preset--font-family--tekst); letter-spacing: .08em; color: var(--c-szary); }
.stopka-lista, .stopka .stopka-lista { padding: 0; list-style: none; font-size: 15px; }
.stopka-lista li::marker { content: none; }
.stopka-lista a, .stopka-kontakt a { text-decoration: none; }
/* linki stopki około 44 px wysokości: „Aktualności” w stopce to jedyna droga do wpisów */
.stopka-lista li + li { margin-top: 0; }
.stopka-lista a { display: inline-block; padding-block: 10px; }
.stopka-kontakt a { display: inline-block; padding-block: 5px; }
.stopka-lista a:hover, .stopka-kontakt a:hover { color: var(--c-limonka); }
.stopka-dol { margin-top: 56px; padding-block: 22px; border-top: 1px solid var(--linia-slaba); font-size: 13px; color: var(--c-szary); }
@media (max-width: 781px) { .stopka-dol { padding-bottom: 88px; } } /* przycisk „do góry” nie zasłania NIP-u na końcu strony */
/* znak jako tło stopki: do 1000 px szerokości, za tekstem od górnej krawędzi; dół ucina krawędź stopki, więc nie dodaje jej wysokości */
.stopka-znak { position: absolute; z-index: -1; top: 28px; left: 50%; width: min(1000px, 100% - var(--wp--style--root--padding-left, 24px) - var(--wp--style--root--padding-right, 24px)); max-width: none; margin: 0; color: var(--c-kosc); opacity: .08; pointer-events: none; transform: translateX(-50%); }
.stopka-znak svg { display: block; width: 100%; height: auto; }
@media (max-width: 781px) { .stopka-znak { top: auto; bottom: 0; transform: translate(-50%, 30%); } .stopka-dol { margin-top: 72px; } }
/* w edytorze blok HTML ma własną ramkę (position: relative), która przejmowała pozycjonowanie znaku */
.stopka > .wp-block-html.block-editor-block-list__block { position: static; }

/* ── przełącznik jasna / ciemna ────────────────────────────────────────── */
.przelacznik-motywu { display: inline-grid; place-items: center; flex: none; width: 44px; height: 44px; padding: 0; border: 1px solid var(--linia); border-radius: 50%; background: transparent; color: var(--c-kosc); cursor: pointer; transition: border-color .2s, color .2s; }
.przelacznik-motywu:hover { border-color: var(--c-limonka); }
.przelacznik-motywu svg { grid-area: 1 / 1; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.przelacznik-motywu .ikona-ksiezyc { display: none; }
html[data-motyw="jasny"] .przelacznik-motywu .ikona-slonce { display: none; }
html[data-motyw="jasny"] .przelacznik-motywu .ikona-ksiezyc { display: block; }

/* jasna wersja w stylu wariantu F: kremowe tło, czarny tekst, limonka jako akcent na jasnym */
html[data-motyw="jasny"] {
	color-scheme: light;
	--wp--preset--color--tlo: #FAFFF3;
	--wp--preset--color--karta: #FFFFFF;
	--wp--preset--color--oliwka: #E9F2D2;
	--wp--preset--color--kosc: #0A0D04;
	--wp--preset--color--tekst: #2C3424;
	--wp--preset--color--szary: #4F5A45;
	--linia: rgba(10, 13, 4, .14);
	--linia-slaba: rgba(10, 13, 4, .07);
	--fokus: #0A0D04;
}
html:not([data-motyw="jasny"]) { color-scheme: dark; }
html[data-motyw="jasny"] :where(a) { text-decoration-color: currentColor; }
html[data-motyw="jasny"] a:where(:not(.wp-element-button)):hover { color: var(--c-kosc); text-decoration-color: var(--c-limonka); }
html[data-motyw="jasny"] .menu-glowne .wp-block-navigation-item__content:hover { color: var(--c-kosc); }
html[data-motyw="jasny"] .menu-glowne a[aria-current="page"] { text-decoration-color: currentColor; } /* limonka na kremowym jest niewidoczna */
html[data-motyw="jasny"] .stopka-lista a:hover, html[data-motyw="jasny"] .stopka-kontakt a:hover { color: #136B42; }
html[data-motyw="jasny"] .do-gory { border-color: rgba(10, 13, 4, .45); }
html[data-motyw="jasny"] .do-gory:hover, html[data-motyw="jasny"] .do-gory:focus-visible { border-color: var(--c-kosc); }
/* karty wpisów i aktywny filtr w jasnej wersji: limonka na kremowym tle ma 1,26:1, więc stan pokazuje czerń */
html[data-motyw="jasny"] .wpis-karta:hover, html[data-motyw="jasny"] .wpis-karta:focus-within { border-color: var(--c-kosc); }
html[data-motyw="jasny"] .filtr a.aktywna, html[data-motyw="jasny"] .filtr .current-cat > a, html[data-motyw="jasny"] .wpisy-strony .current { border-color: var(--c-kosc); background: var(--c-kosc); color: #FAFFF3; }
html[data-motyw="jasny"] .is-style-poswiata .wp-block-button__link { background: var(--c-kosc); color: #FAFFF3; border-color: var(--c-kosc); box-shadow: none; }
html[data-motyw="jasny"] .is-style-poswiata .wp-block-button__link:hover { background: var(--c-kosc); color: var(--c-limonka); box-shadow: none; }
html[data-motyw="jasny"] .blad404-kod { color: var(--c-kosc); text-shadow: none; }
html[data-motyw="jasny"] .stopka-znak { opacity: .06; }

/* ── telefon (do 600 px, 30.10.2026): krótsze strony ─────────────────────────────────────────────────────────────
   Wszystko w @media do 600 px, komputer i tablet bez zmian. Przyciski zwijania wstawia motyw.js (bez JavaScriptu
   wszystko jest rozwinięte, jak dotąd); tytuł zostaje tym samym elementem, a jego tekst jest napisem przycisku. */
.zwin-przycisk { display: none; }
@media (max-width: 600px) {
	/* stopka: mniejsze odstępy, e-mail i LinkedIn w jednym wierszu; tekst z NIP-em zawija się z lewej, z dala od przycisku „Do góry” */
	.wp-site-blocks > footer.wp-block-template-part { margin-block-start: 0; }
	.stopka { padding-top: 32px; }
	.stopka-siatka { row-gap: 24px; }
	.stopka-podpis { margin-top: 8px; }
	.stopka-zacheta { font-size: 16px; }
	.stopka-kontakt { display: flex; flex-wrap: wrap; column-gap: 24px; margin-top: 8px; }
	.stopka-kontakt br { display: none; }
	.stopka-tytul { margin-bottom: 4px; }
	.stopka-dol { margin-top: 24px; padding-block: 16px 24px; }
	.stopka-dol p { max-width: min(15.5em, 100% - 130px); }
	/* zachęta „Napisz kilka zdań…” to trzecia kopia zdania nad formularzem i dopisku pod jego przyciskiem */
	body:has(form.formularz) .stopka-zacheta { display: none; }
	body:has(form.formularz) .stopka-kontakt { margin-top: 0; }
	/* /kontakt/: druga kolumna stopki (zachęta, e-mail, LinkedIn) powtarza kartę kontaktu tuż nad stopką */
	body:has(.kontakt-osoba) .stopka-siatka > .wp-block-column:nth-child(2) { display: none; }
	/* zwijanie: przycisk z napisem tytułu, plus i minus jak w FAQ */
	.zwin-napis { display: none; }
	.zwin-przycisk { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 44px; margin: 0; padding: 0; border: 0; border-radius: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-align: left; cursor: pointer; }
	.zwin-przycisk::after { content: "+"; content: "+" / ""; flex: none; font: 400 22px/1 var(--wp--preset--font-family--tekst); color: var(--c-limonka); }
	.zwin-przycisk[aria-expanded="true"]::after { content: "\2212"; content: "\2212" / ""; }
	html[data-motyw="jasny"] .zwin-przycisk::after { color: var(--c-zielen); }
	/* panel „Kiedy to nie ma sensu” na stronach usług: zieleń na jasnozielonym tle panelu ma 2,8:1, czerń jak inne stany */
	html[data-motyw="jasny"] .zasady-nie .zwin-przycisk::after { color: var(--c-kosc); }
	html[data-motyw="jasny"] .ciemna .zwin-przycisk::after { color: var(--c-limonka); }
	.zwiniete { display: none !important; }
	/* stopka: listy „Usługi” i „Strona” pod przyciskami; „Ustawienia cookies” widać zawsze (zmiana zgody ma być tak łatwa jak jej wyrażenie) */
	.stopka-tytul:has(> .zwin-przycisk) { margin-bottom: 0; }
	.stopka-tytul .zwin-przycisk { font: 600 15px/1.3 var(--wp--preset--font-family--tekst); letter-spacing: 0; color: var(--c-kosc); }
	.stopka-lista.zwiniete:has(.ustawienia-cookies) { display: block !important; }
	.stopka-lista.zwiniete > li:not(:has(.ustawienia-cookies)) { display: none; }
	/* strony z szablonu page (kontakt, polityka, narzędzie, dziękuję) i wpisy: presety odstępów z theme.json (l 24, xl 32,
	   xxl 40 zamiast 32, 48, 64) i tekst 16/1.5 jak w treści głównej; treść wpisów (18 px) bez zmian */
	body { --wp--preset--spacing--l: 24px; --wp--preset--spacing--xl: 32px; --wp--preset--spacing--xxl: 40px; }
	.tresc-strony { font-size: 16px; line-height: 1.5; }
	.lead { font-size: 17px; }
	.is-style-karta { padding: 18px; }
	/* /kontakt/: karta formularza ciaśniej (pola 44 px i 16 px bez zmian) */
	.kontakt-formularz { padding: 18px 16px; }
	.kontakt-formularz .formularz { gap: 10px; }
	.kontakt-formularz .formularz input, .kontakt-formularz .formularz select, .kontakt-formularz .formularz textarea { margin-top: 4px; }
	/* /kontakt/: „Co dalej” jako poziomy pasek kart z numerem (widać kawałek następnej, fokus i nazwę daje motyw.js) */
	.kontakt-siatka .kroki { display: grid; grid-auto-flow: column; grid-auto-columns: 80%; gap: 12px; margin-inline: -16px; padding: 0 16px 8px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-padding-inline: 16px 72px; }
	.kontakt-siatka .kroki li { margin: 0; padding: 60px 16px 16px; border: 1px solid var(--linia); border-radius: var(--promien); background: var(--c-karta); scroll-snap-align: start; }
	.kontakt-siatka .kroki li::before { left: 16px; top: 16px; }
	.kontakt-siatka .kroki li + li { margin-top: 0; }
	.kontakt-siatka .kroki:focus-visible { outline-offset: -2px; }
}

/* ── telefon (do 600 px, 30.10.2026): wskaźnik poziomych pasków ──────────────────────────────────────────────────
   Wymaganie właściciela: od razu widać, że pasek przesuwa się w bok, i nic nie wygląda na ucięte. Napis „Przesuń
   palcem” ze strzałką, kropki pod paskiem i stan krawędzi (data-pasek-kraj) wstawia motyw.js, tylko gdy pasek naprawdę
   przewija się w bok; bez JavaScriptu pasek działa palcem jak dotąd. Kropka to przycisk 44 × 44 px; wiersz ma 28 px,
   bo przyciski zachodzą na odstęp nad nim i pod nim. Aktywna kropka jest dłuższa: limonkowa na ciemnym tle, czarna na
   jasnym; napis i pozostałe kropki szare (kontrast powyżej 4,5:1 w obu wersjach). Na końcu paska strzałka wskazuje
   w lewo. Gdy napis i kropki nie mieszczą się w wierszu (6 kart w wąskiej karcie), kropki schodzą pod napis
   (klasa pasek-wskaznik--dwa). Od 601 px wskaźnika nie ma. */
.pasek-wskaznik { display: none; }
@media (max-width: 600px) {
	div.pasek-wskaznik { --pasek-szary: var(--szary, var(--c-szary)); --pasek-akt: var(--c-limonka); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 12px; min-height: 28px; margin: 2px 0 0; padding: 0; }
	html[data-motyw="jasny"] div.pasek-wskaznik { --pasek-akt: var(--c-kosc); }
	html[data-motyw="jasny"] .ciemna div.pasek-wskaznik { --pasek-akt: var(--c-limonka); }
	/* wiersz 12 px pod kartami: pasek ma od 6 do 20 px dolnego odstępu (biurko: cień kart), przykłady 12 px marginesu */
	.os + div.pasek-wskaznik { margin-top: 6px; }
	.typy-sciezka + div.pasek-wskaznik, .kroki + div.pasek-wskaznik { margin-top: 4px; }
	.biurko + div.pasek-wskaznik { margin-top: -8px; }
	.przyklady + div.pasek-wskaznik { margin: -10px 0 12px; }
	.tablica-lista + div.pasek-wskaznik { padding-inline: 16px; }
	.pasek-wskaznik .pasek-podpowiedz { display: flex; align-items: center; gap: 6px; margin: 0; font: 600 14px/1.3 var(--wp--preset--font-family--tekst); letter-spacing: 0; color: var(--pasek-szary); }
	.pasek-wskaznik .pasek-podpowiedz svg { display: block; flex: none; width: 16px; height: 16px; transition: transform .2s; }
	[data-pasek-kraj="koniec"] + .pasek-wskaznik .pasek-podpowiedz svg { transform: scaleX(-1); }
	.pasek-wskaznik .pasek-kropki { display: flex; margin: -8px -10px -8px auto; }
	div.pasek-wskaznik--dwa .pasek-kropki { margin: -8px 0 -8px -10px; }
	.pasek-wskaznik .pasek-kropka { position: relative; flex: none; width: 44px; height: 44px; margin: 0; padding: 0; border: 0; border-radius: 0; background: none; color: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
	.pasek-wskaznik .pasek-kropka::before { content: ""; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; border-radius: 99px; background: var(--pasek-szary); transform: translate(-50%, -50%); transition: width .2s, background-color .2s; }
	.pasek-wskaznik .pasek-kropka[aria-current="true"]::before { width: 24px; background: var(--pasek-akt); }
	/* pole dotyku to cały kwadrat 44 × 44 px (bez zaokrąglenia, które zawęża pole); obrys fokusu kołem wokół kropki */
	.pasek-wskaznik .pasek-kropka:focus-visible { outline-offset: -6px; border-radius: 50%; }
	/* krawędź, za którą są dalsze karty, wygasa na 44 px: krawędź następnej karty i początek tytułu widać, a tekst
	   przy brzegu ekranu rozpływa się zamiast urywać w pół słowa. Z lewej przy kartach ze środka wygasa tylko pas
	   odstępu (14 z 16 px), żeby bieżąca karta stała w pełnym kolorze; kadry (dwa na ekranie) 32 px. Na końcu paska
	   z lewej znika cały kawałek poprzedniej karty z tekstem, a zostaje 16 px jej krawędzi (szerokość kawałka
	   --pasek-lewa mierzy motyw.js). Tabela porównania: tylko prawa krawędź, 28 px (z lewej stoi przyklejona kolumna).
	   Przy fokusie z klawiatury bez wygaszania, bo obrys musi być widoczny w całości. */
	[data-pasek-kraj] { --pasek-wygas: 44px; -webkit-mask-image: var(--pasek-maska); mask-image: var(--pasek-maska); }
	.hasla-pas[data-pasek-kraj] { --pasek-wygas: 32px; }
	.porownanie[data-pasek-kraj] { --pasek-wygas: 28px; }
	[data-pasek-kraj="start"], .porownanie[data-pasek-kraj="srodek"] { --pasek-maska: linear-gradient(to left, transparent, #000 var(--pasek-wygas)); }
	[data-pasek-kraj="srodek"] { --pasek-maska: linear-gradient(to right, transparent, #000 14px, #000 calc(100% - var(--pasek-wygas)), transparent); }
	[data-pasek-kraj="koniec"] { --pasek-maska: linear-gradient(to right, transparent max(0px, var(--pasek-lewa, 44px) - 16px), #000 var(--pasek-lewa, 44px)); }
	.porownanie[data-pasek-kraj="koniec"], [data-pasek-kraj]:focus-visible { -webkit-mask-image: none; mask-image: none; }
	[data-pasek-kraj]:has(:focus-visible) { -webkit-mask-image: none; mask-image: none; }
}
@media (max-width: 600px) and (prefers-reduced-motion: reduce) {
	.pasek-wskaznik .pasek-kropka::before, .pasek-wskaznik .pasek-podpowiedz svg { transition: none; }
}
/* tryb wymuszonych kolorów (kontrast wysoki w Windows, np. przy powiększeniu strony do układu telefonu): tło kropek
   przeglądarka zamienia na kolor tła strony, więc kropki i aktywna kreska znikały; kolory systemowe: kropki jak tekst,
   aktywna jak zaznaczenie */
@media (max-width: 600px) and (forced-colors: active) {
	.pasek-wskaznik .pasek-kropka::before { forced-color-adjust: none; background: CanvasText; }
	.pasek-wskaznik .pasek-kropka[aria-current="true"]::before { background: Highlight; }
}
