/* DynRes — style komponentów motywu (paleta i fonty: theme.json).
   Kolory wyłącznie z księgi znaku: Kość, Piasek, Grafit, Terakota, Szałwia. */

:root{
  /* kolory: assets/css/dynres-tokeny.css (kopia tokenów 2.0, tokeny_motyw.py) — tu tylko aliasy */
  --terakota-tekst:var(--tekst-akcent);  /* Terakota głęboka — tekst akcentowy (role tokenów) */
  --accent:var(--terakota);            /* aliasy używane przez mapę zasięgu */
  --accent-sage:var(--szalwia);
  --head:var(--font-tresc);              /* 2.0: interfejs w Lato (Jost wycofany, S-261008-15) */
  --display:var(--font-naglowek);       /* Marcellus: H1, H2, duże liczby i ceny (≥ 24 px) */
  --body:var(--font-tresc);
  --content:var(--wp--style--global--content-size,1160px);
  --tabela-bg:var(--kosc);              /* tło pod tabelami przewijanymi w bok — dopasowane do sekcji, patrz .bg-piasek */
}
html{scroll-behavior:smooth}
*,*::before,*::after{box-sizing:border-box}
[id]{scroll-margin-top:140px}
body{-webkit-font-smoothing:antialiased}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--grafit);outline-offset:3px}
/* fokus w Grafit (kontrast ≥ 11:1), na ciemnych tłach w Kości — 27.09.2026 */
.bg-grafit :focus-visible,.audience :focus-visible,.site-footer :focus-visible,.site-footer-part :focus-visible,.mobile-bar a+a:focus-visible,.btn-primary:focus-visible,.cta-band :focus-visible{outline-color:var(--kosc)}
@media (prefers-reduced-motion: reduce){*{transition:none !important;animation:none !important;scroll-behavior:auto !important}}
.wp-site-blocks > main{margin-block-start:0}
/* Kontekst dla czytników ekranu przy linkach z ogólnym tekstem („Pełny opis →" itp.) — etap 8, E4, 27.09.2026.
   Motyw nie miał własnej klasy .screen-reader-text; standardowe, sprawdzone ukrycie wizualne z WordPressa. */
.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute !important;width:1px;word-wrap:normal !important}

/* ---------- Sekcje ---------- */
.dr-section{padding-top:clamp(64px,10vw,128px);padding-bottom:clamp(64px,10vw,128px);margin-block-start:0 !important}
.bg-piasek{background:var(--piasek);--tabela-bg:var(--piasek)}
.bg-grafit{background:var(--grafit);color:var(--kosc)}
.bg-grafit a{color:var(--kosc)}
/* węższe bloki tekstu wyrównane do lewej krawędzi kolumny treści */
.dr-section > :is(.measure,.team-intro,.form-wrap,.faq,.note,.closing,.more-row,.towns,.redflags){max-width:min(34em,100%);margin-left:max(0px,calc((100% - var(--content)) / 2)) !important;margin-right:auto !important}
.dr-section > .faq{max-width:min(52em,100%)}
.dr-section > .team-intro{max-width:min(40em,100%)}
.dr-section > .redflags{max-width:min(46em,100%)}
/* Bezpiecznik długości wiersza dla „nagich" akapitów bez własnej szerokości — 27.09.2026.
   Specyficzność zerowa (:where), żeby nie nadpisywać już ustawionych szerokości
   (.lead, .hero-fakty, .closing/.note/.more-row z reguły > :is(...) wyżej). */
:where(.dr-section p:not(.label)){max-width:35em}   /* ok. 70 znaków przy 18 px (S-261008-08) */

/* ---------- Typografia ---------- */
.label{font-family:var(--t-etykieta-rodzina);font-weight:var(--t-etykieta-waga);font-size:var(--t-etykieta-rozmiar);letter-spacing:var(--t-etykieta-swiatlo);line-height:var(--t-etykieta-interlinia);text-transform:uppercase;color:var(--t-etykieta-kolor);margin:0 0 1.4em}   /* nadtytuł: maks. 3 słowa */
.label::before{content:"";display:inline-block;width:22px;height:1px;background:var(--terakota);vertical-align:middle;margin:0 12px 3px 0}
.bg-grafit .label{color:var(--akcent-na-ciemnym)}
.bg-grafit .label::before{background:var(--szalwia)}
.lead{font-size:var(--wp--preset--font-size--large);line-height:1.65;font-weight:400}
.small{font-size:var(--wp--preset--font-size--small)}
p.small{max-width:35em}   /* długość wiersza — etap 8, E2, 27.09.2026 */
.small + .label{margin-top:2.4em}   /* odstęp przed etykietą po notce (np. dojazd nad „Pakiety wizyt” na /cennik/, 9.10.2026) */
h1,h2{margin-top:0}
/* Typografia (stała zasada 28.09.2026): akapity bez wiszących krótkich końcówek, nagłówki wyrównane; dymek słowniczka z interpunkcją za nim w jednym wierszu */
p,li,dd,figcaption,summary,.lead{text-wrap:pretty}
h1,h2,h3,h4{text-wrap:balance}
.dx-razem{white-space:nowrap}
h2.wp-block-heading{margin-bottom:.9em}
h2.wp-block-heading.label{margin-bottom:1.4em}   /* H2 w stylu etykiety (sekcje z listą H3) */
.dr-section h3 a,.name a{text-decoration:none}

/* ---------- Przyciski i linki ---------- */
.wp-block-button__link{transition:background .2s,color .2s}
.bg-grafit .wp-block-button__link,.bg-grafit .btn-primary{background:var(--kosc);color:var(--grafit);border-color:var(--kosc)}
.bg-grafit .wp-block-button__link:hover{background:transparent;color:var(--kosc)}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--przycisk-min-wysokosc);font-family:var(--t-przycisk-rodzina);font-weight:var(--t-przycisk-waga);font-size:var(--t-przycisk-rozmiar);letter-spacing:var(--t-przycisk-swiatlo);text-transform:none;text-decoration:none;padding:.75em 1.6em;border:1px solid var(--grafit);background:transparent;color:var(--grafit);cursor:pointer;transition:background .2s,color .2s}
.btn-primary{background:var(--grafit);color:var(--kosc)}
.btn-primary:hover{background:transparent;color:var(--grafit)}
.link{text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:1px}
.link:hover{color:var(--terakota-tekst)}
a[href^="tel:"]{white-space:nowrap}   /* numer telefonu nie łamie się w wąskich miejscach (27.09.2026) */
.call-line{margin-top:1.6em}
.hero-fakty{font-size:1.125rem;line-height:1.6;margin:1.2em 0 0;max-width:34em}
.hero-opis{font-size:1.125rem;line-height:1.65;margin:.6em 0 0;max-width:34em}   /* 2.0: zdanie o usłudze pod hasłem i leadem (W1-19) */
.hero-haslo{font-family:var(--wp--preset--font-family--marcellus);font-weight:400;font-size:var(--wp--preset--font-size--xx-large);line-height:1.15;margin:0;text-wrap:balance}   /* SEO-1: hasło w wyglądzie H1, H1 = opis usługi */
h1.hero-opis{font-family:var(--wp--preset--font-family--lato);font-weight:400;text-wrap:pretty}
.orbit-dopisek{text-align:center;max-width:40em;margin:2.4em auto 0}   /* SEO-1: link do strony o endoprotezie pod kołem */
.more{display:inline-flex;gap:10px;align-items:center;font-family:var(--head);font-weight:400;font-size:1rem;letter-spacing:.01em;text-transform:none;text-decoration:none;border-bottom:1px solid var(--grafit);padding-bottom:4px}
.more span{color:var(--terakota-tekst);transition:transform .2s}
.more:hover span{transform:translateX(4px)}

/* ---------- Oznaczenia robocze (usuń przed publikacją) ---------- */
.todo{font-family:var(--body);font-weight:400;font-size:.88em;background:var(--piasek);outline:1px dashed var(--terakota);outline-offset:2px;padding:0 .3em;color:var(--grafit)}
.bg-piasek .todo{background:var(--kosc)}
.bg-grafit .todo{background:transparent;color:var(--kosc)}

/* ---------- Zdjęcia (ilustracje AI z podpisem) ---------- */
.photo-img{margin:0}
.photo-img img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.card .photo-img img{aspect-ratio:3/4}
.photo-img figcaption{margin:.6em 0 0;font-size:.875rem;line-height:1.5;color:var(--tekst-2);opacity:1;text-align:left}   /* podpis AI: 14 px (2.0, strażnik 9.10; było 12 px, decyzja 28.09), Grafit 70: 5,39:1 na Kości, 4,68:1 na Piasku */
.photo-img figcaption a{color:inherit;text-decoration:underline;text-underline-offset:3px}

/* ---------- Formularz (wbudowany w motyw, inc/formularze.php) ---------- */
.dr-form{display:grid;gap:18px;margin-top:1em}
.dr-form .dr-field,.dr-form .dr-field--checkboxy{margin:0;border:0;padding:0}
.dr-form label,.dr-form legend{display:block;font-family:var(--body);font-weight:400;font-size:1rem;letter-spacing:normal;text-transform:none;padding:0}
.dr-form input[type=text],.dr-form input[type=tel],.dr-form input[type=email],.dr-form select,.dr-form textarea{display:block;width:100%;margin-top:8px;padding:14px 16px;border:var(--pole-obramowanie-grubosc,1px) solid var(--pole-obramowanie);border-radius:0;background:var(--kosc);color:var(--grafit);font:inherit;font-family:var(--body);font-size:1rem;letter-spacing:normal;text-transform:none}
.dr-form textarea{min-height:140px;resize:vertical}
.dr-field--zgoda label{font-family:var(--body);font-size:.9rem;letter-spacing:normal;text-transform:none;display:flex;gap:10px;align-items:flex-start}
.dr-field--zgoda input{margin-top:4px;accent-color:var(--grafit)}
.dr-field--checkboxy{display:grid;gap:10px;margin-top:8px}
.dr-checkbox{display:flex !important;gap:10px;align-items:flex-start;font-family:var(--body) !important;font-size:1rem !important;letter-spacing:normal !important;text-transform:none !important}
.dr-checkbox input{margin-top:4px;accent-color:var(--grafit)}
.dr-field--submit{justify-self:start}
.dr-form button[type=submit]{justify-self:start;min-height:var(--przycisk-min-wysokosc);font-family:var(--t-przycisk-rodzina);font-weight:var(--t-przycisk-waga);font-size:var(--t-przycisk-rozmiar);letter-spacing:var(--t-przycisk-swiatlo);text-transform:none;padding:.75em 1.6em;border:1px solid var(--grafit);background:var(--grafit);color:var(--kosc);border-radius:0;cursor:pointer}
.dr-form button[type=submit]:hover{background:transparent;color:var(--grafit)}
.dr-form button[type=submit][disabled]{opacity:.7;cursor:progress}
.dr-form-msg{margin:0;padding:14px 16px;border:1px solid var(--grafit);font-size:1.125rem}
.dr-form-msg--ok{border-color:var(--tekst-sukces)}
.dr-form-msg--err{border-color:var(--tekst-blad)}
.dr-form-msg--err ul{margin:.4em 0 0;padding-left:1.2em}
/* Komunikat po wysłaniu formularza u góry strony + pola z błędem (poprawka UX 28.09.2026) */
.dr-toast{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:2500;width:min(560px,calc(100vw - 32px));display:flex;gap:12px;align-items:flex-start;background:var(--kosc);color:var(--grafit);border:1px solid var(--grafit);border-left-width:6px;box-shadow:0 8px 24px color-mix(in srgb,var(--grafit) 18%,transparent);padding:14px 12px 14px 16px;font-family:var(--body);font-size:.95rem;line-height:1.5}
.dr-toast--ok{border-left-color:var(--tekst-sukces)}
.dr-toast--err{border-left-color:var(--tekst-blad)}
/* komunikat nie tylko kolorem: ikona ✓ / ! obok słów (daltonizm, W1-17) */
.dr-toast::before{flex:none;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:2px solid currentColor;border-radius:50%;font-weight:700;line-height:1}
.dr-toast--ok::before{content:"✓";content:"✓" / ""}
.dr-toast--err::before{content:"!";content:"!" / ""}
.dr-form .dr-field--blad:not(.dr-field--zgoda) > label::after{content:" — do poprawy";font-weight:700}
html[lang^="en"] .dr-form .dr-field--blad:not(.dr-field--zgoda) > label::after{content:" — please correct"}
.dr-toast:focus{outline:2px solid var(--grafit);outline-offset:2px}
.dr-toast-tresc{flex:1}
.dr-toast-tresc p{margin:0}
.dr-toast-tresc ul{margin:.4em 0 0;padding-left:1.2em}
.dr-toast-popraw{display:inline-block;margin-top:8px;font-size:.95rem}
.dr-toast-zamknij{flex:none;width:36px;height:36px;margin:-6px -2px 0 0;border:0;background:none;color:var(--grafit);font-size:1.5rem;line-height:1;cursor:pointer}
.dr-toast-zamknij:focus-visible{outline:2px solid var(--grafit)}
.dr-form .dr-field--blad input,.dr-form .dr-field--blad select,.dr-form .dr-field--blad textarea{border-color:var(--tekst-blad);box-shadow:0 0 0 1px var(--tekst-blad)}
.dr-form .dr-field--blad.dr-field--zgoda label{outline:2px solid var(--tekst-blad);outline-offset:6px}
/* Pole-pułapka: ukryte poza ekranem (nie display:none — czytelne dla botów bez wizji, niewidoczne dla ludzi) */
.dr-form-hp{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;left:-9999px}

/* ---------- Nagłówek ---------- */
.site-header-part{position:sticky;top:0;z-index:1300}
.admin-bar .site-header-part{top:32px}
/* Telefon poziomo: przy bardzo niskim viewporcie przyklejony nagłówek zajmuje zbyt dużą część ekranu — wyłączamy sticky */
@media (max-height: 500px){
  .site-header-part{position:relative}
  /* Baner cookies na niskim viewporcie: treść i przyciski w jednym wierszu, mniej miejsca pionowo (27.09.2026) */
  .consent{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 16px}
  .consent p{margin:0;flex:1 1 200px;font-size:.8rem;line-height:1.3}
  .consent-actions{flex:0 0 auto;gap:8px}
  .consent-actions .btn{padding:.5em .8em;font-size:.8rem}
}
.audience{background:var(--grafit);color:var(--kosc);padding-top:0;padding-bottom:0}
.audience-nav{display:flex;height:44px;align-items:stretch}
.audience-nav a{display:flex;align-items:center;padding:0 16px;font-family:var(--head);font-weight:400;font-size:.875rem;letter-spacing:.01em;text-transform:none;text-decoration:none;color:var(--kosc);opacity:.7;border-bottom:2px solid transparent}
.audience-nav a:first-child{padding-left:0}
.audience-nav a:hover{opacity:1;color:var(--kosc)}
.audience-nav a[aria-current="page"]{opacity:1;border-bottom-color:var(--terakota)}
/* Przełącznik języka PL/EN w górnym pasku (inc/jezyki.php; widoczny tylko, gdy obie wersje strony są opublikowane) */
.audience-row{display:flex;justify-content:space-between;align-items:stretch}
.lang-switch{display:flex}
.lang-switch a{display:flex;align-items:center;padding:0 0 0 16px;font-family:var(--head);font-weight:400;font-size:.875rem;letter-spacing:.01em;text-transform:none;text-decoration:none;color:var(--kosc);opacity:.7}
.lang-switch a:hover{opacity:1;color:var(--kosc)}
.lang-krotki{display:none}
@media (max-width: 480px){ .lang-dlugi{display:none} .lang-krotki{display:inline} }
.site-header{background:var(--kosc);border-bottom:1px solid var(--piasek)}
.header-row{min-height:84px;gap:24px}
.brand{display:block;padding:10px 0}                /* pole ochronne 1x = 10 px przy wysokości znaku 40 px */
.brand img{height:48px;width:auto;display:block}   /* 2.0: logo poziome = wysokość sygnetu 48 px (telefon 40 px) */
.site-header .wp-block-navigation,.site-header .wp-block-navigation__container{gap:20px}
.site-header .wp-block-navigation{margin-left:auto;font-family:var(--head);font-weight:400;font-size:.875rem;letter-spacing:.01em;text-transform:none}
.site-header .wp-block-navigation a{text-decoration:none}
.site-header .wp-block-navigation a:hover{color:var(--terakota-tekst)}
.site-header .wp-block-navigation a[aria-current="page"]{text-decoration:underline;text-decoration-color:var(--terakota);text-underline-offset:6px;text-decoration-thickness:1px}
.wp-block-navigation__responsive-container.is-menu-open{background:var(--kosc) !important;padding:32px 24px}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{font-size:1rem;padding:10px 0}
.header-actions{display:flex;align-items:center;gap:22px;flex:none}
.header-actions .btn{padding:.85em 1.4em;white-space:nowrap}
.tel-link{font-family:var(--head);font-weight:400;font-size:1rem;letter-spacing:.06em;text-decoration:none;white-space:nowrap;padding-block:9px}   /* dopełnienie pionowe: cel dotyku ≥44 px (tekst sam w sobie ma ~27 px), bez zmiany wyglądu — element wyśrodkowany w .header-actions */
.tel-link::before{content:"Tel.";font-size:.875rem;letter-spacing:.2em;text-transform:uppercase;color:var(--tekst-2);margin-right:.6em}

/* ---------- Hero ---------- */
.hero{padding-top:clamp(48px,8vw,104px)}
.hero-cols{gap:clamp(40px,6vw,96px);align-items:center}
.wp-block-columns.hero-cols > .wp-block-column:first-child{flex:1.35 1 0}
.wp-block-columns.hero-cols > .wp-block-column:last-child{flex:1 1 0}
.hero .lead{margin-top:1.4em;max-width:34em}
.b2b-teaser{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:2.6em;padding:18px 0;border-top:1px solid var(--piasek);border-bottom:1px solid var(--piasek);text-decoration:none}
.b2b-teaser .t{font-size:1.125rem}
.b2b-teaser .t b{font-family:var(--head);font-weight:700;display:block;font-size:1.05rem}
.b2b-teaser .arrow{font-family:var(--head);font-weight:400;font-size:1.6rem;color:var(--terakota-tekst);transition:transform .2s}
.b2b-teaser:hover .arrow{transform:translateX(4px)}
.sub-hero--text{padding-bottom:clamp(40px,6vw,72px)}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;font-size:.875rem;margin-bottom:2.2em}
.crumbs a{text-decoration:none}
.crumbs span{color:var(--grafit-70)}

/* ---------- Kroki / kolumny ---------- */
.steps{gap:clamp(32px,4vw,56px);margin-top:1em}
.steps > .wp-block-column{border-top:1px solid var(--piasek);padding-top:28px}
.bg-piasek .steps > .wp-block-column{border-color:var(--grafit)}
.num{font-family:var(--display);font-weight:400;font-size:3.2rem;line-height:1;color:var(--terakota-tekst);margin:0 0 .35em}
.note{border-left:2px solid var(--terakota);padding:4px 0 4px 20px;margin-top:2em}
.note + .label{margin-top:2.5em}   /* ramka „Od czego zacząć?” nad etykietą sekcji cennika (27.09.2026) */
.split-text{gap:clamp(32px,6vw,96px)}
/* „Czego się obawiasz”: zdanie-obawa to od etapu 8 (27.09.2026) H3, nie H2 (struktura nagłówków, E3) —
   domyślny styl H3 z theme.json (1.3rem, waga 300) zastępujemy tu wyglądem dawnego H2, żeby nic się nie zmieniło. */
.split-text h3{font-family:var(--display);font-weight:400;font-size:var(--wp--preset--font-size--x-large);line-height:1.15;margin-bottom:0}

/* ---------- Dla kogo + Dlaczego u Ciebie (koło z dymkami) ---------- */
.orbit-kicker{text-align:center}
.orbit{position:relative;width:min(100%,900px);aspect-ratio:1;margin:0 auto}   /* kwadrat: dymki na prawdziwym okręgu (zgłoszenie Michała 9.10.2026 — wcześniej szeroka elipsa) */
.orbit > *{margin:0 !important}
.orbit-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.orbit-lines line{stroke:var(--grafit);stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:2 6;transition:stroke .25s}
.orbit-lines line.on{stroke:var(--terakota);stroke-dasharray:none}
.orbit-center{position:absolute !important;left:50%;top:50%;transform:translate(-50%,-50%);width:500px;aspect-ratio:1;border-radius:50%;background:var(--kosc);outline:1px solid var(--kosc);outline-offset:14px;display:flex;align-items:center;justify-content:center;text-align:center;padding:clamp(40px,4.5vw,64px);z-index:1}
.center-default{transition:opacity .25s,visibility .25s}
.center-default h2{font-size:clamp(1.6rem,2.7vw,2.3rem);margin-bottom:.55em}
.center-default p{font-size:1.125rem;margin:0 0 .8em}
.center-default .label{margin-bottom:1em}
.center-default .center-extra{margin:0;font-size:1rem}
.orbit.has-active .center-default{opacity:0;visibility:hidden}
.cases,.case{margin:0 !important}
.case-bubble{position:absolute;translate:-50% -50%;z-index:2;width:clamp(150px,16vw,188px);aspect-ratio:1;border-radius:50%;border:1px solid var(--grafit);background:var(--kosc);display:flex;align-items:center;justify-content:center;padding:22px;margin:0;text-align:center;font-family:var(--head);font-weight:400;font-size:1rem;line-height:1.3;transition:scale .25s,background .25s,border-color .25s;animation:dr-float 7s ease-in-out infinite}
.case-bubble a{text-decoration:none;color:inherit}
.case-bubble a::after{content:"";position:absolute;inset:0;border-radius:50%}
.case:nth-child(1) .case-bubble{left:29%;top:13.6%}   /* okrąg r = 42% kwadratu, sześciokąt; te same punkty co linie w generuj-motyw.rb */
.case:nth-child(2) .case-bubble{left:71%;top:13.6%;animation-delay:-1.8s}
.case:nth-child(3) .case-bubble{left:8%;top:50%;animation-delay:-3.6s}
.case:nth-child(4) .case-bubble{left:92%;top:50%;animation-delay:-5.4s}
.case:nth-child(5) .case-bubble{left:29%;top:86.4%;animation-delay:-2.7s}
.case:nth-child(6) .case-bubble{left:71%;top:86.4%;animation-delay:-4.5s}
@keyframes dr-float{50%{transform:translateY(-7px)}}
.case-bubble:hover{scale:1.05;border-color:var(--terakota)}
.case.active .case-bubble{scale:1.08;background:var(--grafit);border-color:var(--grafit);animation-play-state:paused}
.case.active .case-bubble a{color:var(--kosc)}
.case-detail{position:absolute !important;left:50%;top:50%;transform:translate(-50%,-50%);width:min(300px,31vw);text-align:center;z-index:3;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s,visibility .25s;margin:0 !important}
.case.active .case-detail{opacity:1;visibility:visible}
.case-detail p{margin:0 0 1em}
.case-text{font-family:var(--head);font-weight:400;font-size:1.2rem;line-height:1.45}
.case-home{font-size:1.125rem;padding-top:1em;border-top:1px solid var(--piasek)}
.case-more{font-family:var(--head);font-weight:400;font-size:.75rem;letter-spacing:.01em;text-transform:none;text-decoration:underline;text-underline-offset:4px}

/* ---------- Mapa zasięgu ---------- */
#dynres-leaflet-map{width:100%;height:560px}

/* ---------- O nas ---------- */
.card{gap:clamp(32px,5vw,64px);border-top:1px solid var(--piasek);padding-top:40px;align-items:center}
.wp-block-columns.card > .wp-block-column:first-child{flex:0 0 280px}
.card-short .name{font-size:1.9rem;font-weight:400;margin-bottom:.5em}
.card-short p{font-size:1.125rem}
.closing{margin-top:clamp(48px,7vw,88px) !important;padding-top:32px;border-top:1px solid var(--piasek);font-size:1.125rem}
.profile p:first-of-type:not(.label){font-family:var(--head);font-weight:400;font-size:1.3rem;line-height:1.5}
.kif{font-size:.9rem}

/* ---------- Cennik (tabela) ---------- */
.price-table{margin:2em 0 0}
.price-table table{width:100%;border-collapse:collapse}
.price-table table{table-layout:fixed}   /* siatka cen (28.09.2026): nazwa 38% | opis | kwota 11rem do prawej, wspólna linia bazowa */
.price-table td{border:0;border-top:1px solid var(--grafit);padding:22px 24px 22px 0;vertical-align:baseline}
.price-table tr:last-child td{border-bottom:1px solid var(--grafit)}
.price-table td:first-child{font-family:var(--head);font-weight:400;font-size:1.15rem;width:38%}
.price-table td:first-child a{text-decoration:none;border-bottom:1px solid var(--grafit)}
.price-table td:nth-child(2){font-size:1rem}
.price-table td:last-child{font-family:var(--head);font-weight:700;font-size:1.3rem;white-space:nowrap;text-align:right;padding-right:0;width:11rem}
.price-table td:last-child small{font-family:var(--body);font-size:.875rem;white-space:normal}
.price-table + .label{margin-top:2.4em}

/* ---------- Programy ---------- */
.programs{gap:clamp(24px,3vw,40px);margin-top:1.4em}
.program{border:1px solid var(--piasek);padding:clamp(28px,3.5vw,44px);position:relative;display:flex;flex-direction:column;height:100%}
.bg-piasek .program{border-color:var(--grafit);background:var(--kosc)}
.program::before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:2px;background:var(--terakota)}
.programs > .wp-block-column:nth-child(2) .program::before{background:var(--szalwia)}
.program h3{font-size:1.1rem;letter-spacing:.2em;margin-bottom:1em}
.program h3 b{font-weight:700}
.program .price{font-family:var(--display);font-weight:400;font-size:2.2rem;margin:auto 0 0;padding-top:.6em;line-height:1.2}
.program .price small{font-size:1rem;font-weight:400}
.price-big{font-family:var(--display);font-weight:400;font-size:2.6rem;line-height:1.2;margin-bottom:.6em}
.price-big small{font-size:1.1rem;font-weight:400}

/* ---------- Listy „co obejmuje" ---------- */
.includes{border-top:1px solid var(--grafit);max-width:900px}
.include-item{display:grid;grid-template-columns:4rem 1fr;gap:16px;padding:24px 0;border-bottom:1px solid var(--grafit);margin:0 !important}
.include-item > *{margin:0 !important}
.include-item .num{font-size:1.8rem}
.include-item h3{margin:0 0 .3em}
.include-item p{margin:0}

/* ---------- Pytania ---------- */
.faq{margin-top:0}
.faq .wp-block-details{border-top:1px solid var(--piasek);margin:0}
.bg-piasek .faq .wp-block-details{border-color:var(--grafit)}
.faq .wp-block-details:last-child{border-bottom:1px solid var(--piasek)}
.bg-piasek .faq .wp-block-details:last-child{border-color:var(--grafit)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:24px;padding:24px 0;font-family:var(--head);font-weight:700;font-size:1.2rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-weight:400;font-size:1.6rem;line-height:1;color:var(--terakota-tekst);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding:0 0 24px;max-width:38em;margin:0}

/* ---------- Kontakt i rezerwacja ---------- */
.form-wrap{max-width:640px}
.booking-slot{border:1px dashed var(--grafit);padding:24px 28px;margin:1em 0 0;background:var(--kosc)}
.booking-slot p{margin:0 0 .6em}
.booking-note{margin-top:1em !important}
/* Notka (potwierdzenie terminu, adres siedziby w Medfile) nad kalendarzem, nie pod nim; przewijanie „Umów wizytę” do kalendarza (27.09.2026) */
.booking-slot{display:flex;flex-direction:column;scroll-margin-top:140px}
[data-medfile-src]{scroll-margin-top:120px}   /* przewinięcie do samego kalendarza pod nagłówkiem (9.10.2026) */
.booking-slot > .booking-note{order:1;margin:0 0 1em !important}
.booking-slot > .booking-load{order:2}
.booking-load .btn{margin:.4em 0 1em}
.booking-load .small{margin:0}
/* Otoczka widżetu Medfile (iframe z cudzej domeny — wnętrza nie stylujemy; inwentarz Medfile 2.1 §3, COO 9.10.2026):
   po wczytaniu kalendarza ramka przerywana „miejsce na kalendarz” zmienia się w spokojną ramkę 1 px na Kości */
.booking-slot:has(iframe[src*="rejestracja.medfile.pl"]){border:1px solid var(--linia-jasna);border-radius:var(--promien);background:var(--kosc)}
.booking-slot iframe[src*="rejestracja.medfile.pl"]{display:block;width:100%;border:0;border-radius:var(--promien);background:var(--kosc)}

/* ---------- Zaproszenie, powiązane, źródła ---------- */
.cta-cols{align-items:flex-end;gap:clamp(32px,6vw,96px)}
.cta-band h2{margin-bottom:0}
.related{list-style:none;margin:0;padding:0;border-top:1px solid var(--grafit)}
.related a{display:flex;align-items:center;gap:20px;padding:20px 0;border-bottom:1px solid var(--grafit);text-decoration:none;font-family:var(--head);font-weight:700;font-size:1.1rem}
.related .arrow{margin-left:auto;font-weight:400;font-size:1.5rem;color:var(--terakota-tekst);transition:transform .2s}
.related a:hover .arrow{transform:translateX(4px)}
.redflags{margin-top:2.4em !important;padding:24px 28px;border:1px solid var(--grafit)}
.redflags h3{font-size:1.1rem;margin:0 0 .8em}
/* Śródtytuły H3 w treści (np. sekcja #po-udarze na stronie seniorów, 28.09.2026) — płynny rozmiar WP schodził na telefonie do 14 px */
.article-body > h3{font-size:clamp(1.15rem,1rem + .6vw,1.35rem);line-height:1.3;margin:1.8em 0 .6em}
.redflags ul{margin:0 0 1em;padding-left:1.2em}
.redflags .small{margin:0}
sup a{text-decoration:none;font-size:.875em;border-bottom:1px solid var(--terakota)}
.sources-title{font-size:1rem;margin:2em 0 .6em}
.sources{margin:0;padding-left:1.6em;font-size:1rem;line-height:1.6}
.sources li{margin-bottom:.5em}
.sources a{text-decoration:none;border-bottom:1px solid currentColor}

/* ---------- Zasięg (podstrona) ---------- */
.towns-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--grafit)}
.towns-list li{font-family:var(--head);font-weight:400;font-size:1.25rem;padding:14px 0;border-bottom:1px solid var(--grafit)}
.towns-list--cols{columns:2;column-gap:clamp(24px,4vw,56px)}
.towns-list--cols li{break-inside:avoid}
.wp-block-columns.towns-cols > .wp-block-column:first-child{flex:0 0 33%}

/* ---------- Dokumenty ---------- */
.docs{border-top:1px solid var(--grafit);max-width:900px}
.doc{display:grid;grid-template-columns:1fr auto;gap:24px;padding:28px 0;border-bottom:1px solid var(--grafit);align-items:start}
.doc h3{margin:0 0 .3em}
.doc p{margin:0;font-size:1.125rem}
.dr-tekst{padding-top:clamp(48px,8vw,96px);padding-bottom:clamp(64px,10vw,128px)}
/* Długość wiersza w dokumentach (szablon templates/page-tekst.html, kontener treści .entry-content) —
   etap 8, E2, 27.09.2026. Tabele (figure.wp-block-table) zostają bez ograniczenia szerokości. */
.dr-tekst .entry-content p,.dr-tekst .entry-content ul,.dr-tekst .entry-content ol{max-width:38em}

/* ---------- Poradnik: treść wpisu (odstępy między sekcjami H2) ---------- */
.article-body h2{margin-top:2.2em}
.article-body h2:first-child{margin-top:0}

/* ---------- Poradnik: lista wpisów (templates/home.html) ---------- */
.poradnik-lista{border-top:1px solid var(--grafit);list-style:none;margin:0;padding:0}
.poradnik-lista li{padding:28px 0;border-bottom:1px solid var(--grafit)}
.poradnik-lista .wp-block-post-title{font-family:var(--head);font-weight:700;font-size:1.3rem;line-height:1.35;margin:0 0 .5em}
.poradnik-lista .wp-block-post-title a{text-decoration:none}
.poradnik-lista .wp-block-post-excerpt{margin:0;font-size:1.125rem}
.poradnik-lista .wp-block-post-excerpt__more-link,.poradnik-lista .wp-block-read-more{display:inline-block;margin-top:.6em;font-family:var(--head);font-weight:400;font-size:.78rem;letter-spacing:.01em;text-transform:none;text-decoration:none;border-bottom:1px solid var(--grafit)}
.poradnik-lista .wp-block-query-pagination{margin-top:2em;display:flex;gap:16px;font-family:var(--head);font-weight:400;font-size:.85rem;letter-spacing:.01em;text-transform:none}
.poradnik-lista .wp-block-query-pagination a{text-decoration:none;border-bottom:1px solid var(--grafit)}

/* ---------- Stopka ---------- */
.site-footer{padding-top:clamp(64px,8vw,104px);padding-bottom:40px;margin-block-start:0}
.site-footer p{font-size:1rem;margin:0 0 .45em}
.site-footer a{text-decoration:none}
.site-footer a:hover{text-decoration:underline}
.footer-h{font-family:var(--head);font-weight:400;font-size:.875rem !important;letter-spacing:.24em;text-transform:uppercase;color:var(--tekst-2-na-ciemnym);margin:1.6em 0 1.2em !important}
.footer-cols > .wp-block-column > .footer-h:first-child{margin-top:0 !important}
.footer-towns{margin-top:.6em;font-size:.9rem}
.social{display:flex;flex-wrap:wrap;gap:4px;list-style:none;margin:.6em 0 0 -12px;padding:0}   /* ikony profili (10.10.2026): kolor z tekstu, pole 48 px */
.social a{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;color:inherit;text-decoration:none}
.social svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.social a:hover{color:var(--terakota-gl)}
.site-footer .social a:hover{color:var(--akcent-na-ciemnym);text-decoration:none}
.social-label{margin:1.4em 0 0}
.footer-logo{padding:25px;margin:-25px}                 /* 2.0: pole ochronne 1x = ¼ wysokości sygnetu = 25 px przy logo pionowym 178 px */
.footer-logo img{width:178px;height:auto;display:block;margin-bottom:28px}
.footer-bottom{margin-top:72px;padding-top:24px;border-top:1px solid var(--szalwia);font-size:.875rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
.linklike{display:inline-block;background:none;border:0;padding-block:11px;margin-block:-11px;font:inherit;color:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}   /* dopełnienie + ujemny margines: cel dotyku ≥44 px bez przesunięcia tekstu w stopce */
.mobile-bar{display:none}

/* ---------- Baner cookies ---------- */
.consent{position:fixed;left:24px;bottom:24px;z-index:2000;max-width:520px;background:var(--kosc);border:1px solid var(--grafit);padding:24px 26px}
.consent[hidden]{display:none}
.consent p{font-size:1rem;margin:0 0 18px}
.consent-actions{display:flex;gap:12px;flex-wrap:wrap}
.consent-actions .btn{flex:1 1 160px;text-align:center;padding:.9em 1em}
/* Baner v2 (g10-27): wybór kategorii i trzy przyciski o tej samej wadze */
.consent--v2 .consent-actions{display:grid;grid-template-columns:repeat(3,1fr)}   /* równa szerokość = równa waga */
.consent--v2 .consent-actions .btn{padding-inline:.6em}
@media (max-width: 480px){ .consent--v2 .consent-actions{grid-template-columns:1fr} }
.consent-opcje{border:0;margin:0 0 16px;padding:0;display:grid;gap:10px}
.consent-opcje label{display:flex;gap:.6em;align-items:flex-start;font-size:.9rem;line-height:1.4}
.consent-opcje input{margin-top:.2em;width:1.1em;height:1.1em;accent-color:var(--grafit);flex:none}

/* ---------- Tabele porównawcze i listy (programy miesięczne) ---------- */
.compare-table{margin:1.6em 0 0}
.compare-table table{width:100%;border-collapse:collapse;font-size:1rem}
.compare-table th,.compare-table td{border:0;border-bottom:1px solid var(--grafit);padding:14px 16px 14px 0;text-align:left;vertical-align:top}
.compare-table thead th{font-family:var(--head);font-weight:400;font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;border-bottom-width:1px;padding-bottom:10px}
.compare-table td:first-child{font-family:var(--head);font-weight:700;font-size:1rem;width:28%}
.plain-list{list-style:none;margin:1em 0 0;padding:0;border-top:1px solid var(--grafit)}
.plain-list li{padding:12px 0 12px 22px;border-bottom:1px solid var(--grafit);position:relative}
.plain-list li::before{content:"";position:absolute;left:0;top:1.35em;width:10px;height:1px;background:var(--terakota)}
.bg-piasek .compare-table th,.bg-piasek .compare-table td{border-color:var(--grafit)}
.price-table-firmy td{vertical-align:baseline}
.price-table-firmy small{font-size:.875rem}   /* dopiski „(przy abonamencie: …)" — poniżej 14 px, etap 8, E6, 27.09.2026 */

/* ---------- Strony dokumentów (szablon „Strona tekstowa”) ---------- */
.doc-meta{font-size:.875rem;color:var(--grafit-70);margin-bottom:2em}
.doc-list{margin:.4em 0 1.2em;padding-left:1.3em}
.doc-list li{margin-bottom:.4em}
/* Ramka „W skrócie” nad Regulaminem i Polityką (S-261013-32): tło piasek + linia terakoty jak .note; nie trafia do PDF/docx */
.doc-skrot{background:var(--piasek);border-left:2px solid var(--terakota);padding:18px 22px 6px;margin:0 0 2.5em;max-width:40em}
.doc-skrot .label{margin:0 0 .6em}
.doc-skrot .doc-list{margin-bottom:.8em}
.doc-skrot .small{color:var(--grafit-70);margin:0 0 .8em}
.doc-table{margin:1.2em 0 1.6em}
.doc-table table{width:100%;border-collapse:collapse;font-size:1rem}
.doc-table th,.doc-table td{border:1px solid var(--piasek);padding:10px 12px;text-align:left;vertical-align:top}
.doc-table thead th{background:var(--piasek);font-weight:400}
.dokument-dzieci{font-size:1.15rem;line-height:1.75}
.dokument-dzieci .doc-list{list-style:none;padding-left:0}
.dokument-dzieci .doc-list li{padding:10px 0 10px 26px;position:relative;border-bottom:1px solid var(--piasek)}
.dokument-dzieci .doc-list li::before{content:"";position:absolute;left:4px;top:1.25em;width:10px;height:10px;border-radius:50%;background:var(--szalwia)}
.dokument-dzieci h2{margin-top:1.6em}

/* ---------- Szerokości pośrednie ---------- */
.site-header .wp-block-navigation a{white-space:nowrap}
@media (max-width: 1200px){
  .site-header .wp-block-navigation,.site-header .wp-block-navigation__container{gap:16px}
  .site-header .wp-block-navigation{letter-spacing:.1em}
  .tel-link::before{display:none}
}
/* Progi zmierzone w headless Chrome na żywej stronie (/ i /dla-firm/, z powiększoną czcionką menu z etapu 8,
   27.09.2026): pełne menu (6 pozycji, .875rem/400, rozstrzelenie .12em, odstęp 20 px) + przycisk mieszczą się w jednym
   wierszu poniżej 1150 px, a z telefonem — od ok. 1270 px (/dla-firm/, dłuższy przycisk „Poproś o ofertę”);
   decyzja Michała: telefon w nagłówku ma zostać na laptopach 1366/1440 px, stąd mniejsze rozstrzelenie niż w 1.6.6. Poniżej 1151 px menu chowa się pod przyciskiem-hamburgerem. */
/* Laptop 1151–1299 px (menu zwija się do ikony poniżej 1151 px): pełne menu (6 pozycji) + telefon + przycisk nie mieszczą się w jednym wierszu —
   numer telefonu chowamy w nagłówku (jest w sekcji Kontakt i w stopce). Regresja po 1.6.1, poprawka 27.09.2026, progi zaktualizowane w etapie 8. */
@media (min-width: 1151px) and (max-width: 1299px){ .header-actions .tel-link{display:none} }
@media (max-width: 1150px){
  .site-header .wp-block-navigation__responsive-container-open:not(.always-shown){display:flex}
  /* Cel dotyku ≥44 px na przycisku-hamburgerze (dziś ok. 24×24): dopełnienie + ujemny margines,
     żeby powiększyć tylko obszar kliknięcia, bez zmiany widocznego rozmiaru ikony ani układu. */
  .site-header .wp-block-navigation__responsive-container-open{padding:10px;margin:-10px}
  /* menu mobilne: odstęp od krawędzi ekranu i większy obszar krzyżyka */
  .site-header .wp-block-navigation__responsive-container.is-menu-open{padding:14px 24px 32px !important}
  .site-header .wp-block-navigation__responsive-container-close{padding:10px;margin:-10px;top:14px !important;right:24px !important}
  .site-header .is-menu-open .wp-block-navigation__responsive-container-content{padding-top:56px}
  .site-header .is-menu-open .wp-block-navigation__responsive-container-content,.site-header .is-menu-open .wp-block-navigation__container,.site-header .is-menu-open .wp-block-navigation-item{align-items:flex-start !important}
  .site-header .is-menu-open .wp-block-navigation__container{margin-left:0 !important}
  .site-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){display:none}
  .site-header .wp-block-navigation{order:3;margin-left:0;flex:none}
  /* Global styles WordPressa (justify-content:space-between z layoutu bloku header-row) są wstrzykiwane
     inline w <head> PO tym arkuszu i mają tę samą specyficzność (jedna klasa) — przy równej specyficzności
     wygrywa reguła późniejsza w kodzie źródłowym, więc margin-left:auto bez !important bywał
     nadpisywany i przyciski „stawały” na środku zamiast przy prawej krawędzi. */
  .header-actions{margin-left:auto !important}
  .steps{flex-direction:column}
}

/* ---------- Telefon ---------- */
@media (max-width: 781px){
  .wp-block-columns.card > .wp-block-column:first-child{flex:1 1 100%}
  .towns-list--cols{columns:2}
  .doc{grid-template-columns:1fr}
  /* Sygnał, że tabelę można przesunąć w bok: cień przy krawędzi, znika po dojechaniu do końca
     ("scroll shadows" — dwie warstwy przesuwają się z treścią (local) i maskują cień w miejscu,
     do którego już dojechano, dwie kolejne stoją w miejscu (scroll) i dają sam cień). */
  .compare-table,.doc-table{
    overflow-x:auto;
    background:
      linear-gradient(to right, var(--tabela-bg) 30%, transparent) 0 0,
      linear-gradient(to left, var(--tabela-bg) 30%, transparent) 100% 0,
      radial-gradient(farthest-side at 0 50%, color-mix(in srgb,var(--grafit) 18%,transparent), transparent) 0 0,
      radial-gradient(farthest-side at 100% 50%, color-mix(in srgb,var(--grafit) 18%,transparent), transparent) 100% 0;
    background-repeat:no-repeat;
    background-size:32px 100%,32px 100%,12px 100%,12px 100%;
    background-attachment:local,local,scroll,scroll;
  }
  .compare-table table{min-width:520px}
  /* Tabela „Jak wygląda miesiąc” (programy-miesieczne): węższa pierwsza kolumna („Tydzień") i mniejsze
     min-width, żeby trzy kolumny zmieściły się przy 375 px bez ucinania kolumny TERAPIA; poziome
     przewijanie z reguły .compare-table,.doc-table wyżej zostaje jako zabezpieczenie. */
  .cykl-table td:first-child,.cykl-table th:first-child{width:3.5em}
  .compare-table.cykl-table table{min-width:300px}
  /* Tabele porównawcze na telefonie bez przewijania w bok (ponowny audyt 27.09.2026) */
  .compare-table table{min-width:0;font-size:.9rem}
  .compare-table td:first-child{width:30%}
  .price-table-firmy thead{display:none}
  .price-table-firmy tr{display:grid;grid-template-columns:1fr auto;align-items:baseline;border-bottom:1px solid var(--grafit)}
  .price-table-firmy td{border:0 !important}
  .price-table-firmy td:first-child{width:auto;padding-bottom:4px}
  .price-table-firmy td:nth-child(2){grid-column:1 / -1;grid-row:2;padding-top:0}
  .price-table-firmy td:last-child{font-family:var(--head);white-space:nowrap;text-align:right;padding-right:0;padding-bottom:4px}
  /* Dolny pasek chowa się, gdy pisze się w polu formularza/wyszukiwarki (klawiatura zasłaniała wyniki) */
  body:has(input:focus, textarea:focus, select:focus) .mobile-bar{display:none}
  .price-table tr{display:grid;grid-template-columns:1fr auto;align-items:baseline;border-top:1px solid var(--grafit)}
  .price-table tr:last-child{border-bottom:1px solid var(--grafit)}
  .price-table td,.price-table tr:last-child td{border:0}
  .price-table td:first-child{width:auto;padding-bottom:4px}
  .price-table td:last-child{width:auto}
  .price-table td:nth-child(2){grid-column:1 / -1;grid-row:2;padding-top:0;font-size:1rem}
  .price-table td:last-child{padding-bottom:4px}
  #dynres-leaflet-map{height:520px !important}
}
@media (max-width: 760px){
  .hero .b2b-teaser{display:none}
  .header-row{min-height:72px}
  .brand img{height:40px}
  .header-actions{display:none}
  .site-header .wp-block-navigation{margin-left:auto}
  .audience-nav a{padding:0 12px}
  .mobile-bar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:1500;border-top:1px solid var(--grafit);background:var(--kosc)}
  .mobile-bar a{text-align:center;padding:16px 8px calc(16px + env(safe-area-inset-bottom,0px));font-family:var(--head);font-weight:400;font-size:.875rem;letter-spacing:.01em;text-transform:none;text-decoration:none;color:var(--grafit)}
  .mobile-bar a + a{background:var(--grafit);color:var(--kosc)}
  body{padding-bottom:57px}   /* wyrównane do rzeczywistej wysokości .mobile-bar (27.09.2026) */
  /* Kalendarz Medfile na telefonie: mniej paddingu wokół, widżet/iframe na całą szerokość (27.09.2026) */
  .booking-slot{padding:18px 12px}
  .booking-slot #medfile-register-widget, .booking-slot iframe{width:100% !important;max-width:none}
  .consent{left:12px;right:12px;bottom:76px;max-width:none;padding:16px 18px}
  .consent p{font-size:.875rem;line-height:1.5;margin:0 0 12px}
  .consent-actions{gap:8px;flex-wrap:wrap}
  .consent-actions .btn{flex:1 1 0;padding:.8em .5em;font-size:.875rem}
}

/* Orbita jako lista do 1000 px (9.10.2026): koło ze środkiem 500 px i dymkami na okręgu potrzebuje ok. 900 px szerokości */
@media (max-width: 1000px){
  /* koło z dymkami → lista linków */
  .orbit-kicker{display:none}
  .orbit{height:auto;width:auto;aspect-ratio:auto}
  .orbit-lines{display:none}
  .orbit-center{position:static !important;transform:none;width:auto;aspect-ratio:auto;border-radius:0;background:transparent;outline:0;padding:0;display:block;text-align:left;margin:0 0 28px !important}
  .orbit.has-active .center-default{opacity:1;visibility:visible}
  .cases::before{content:"Kiedy warto nas wezwać";display:block;font-family:var(--head);font-weight:400;font-size:.8rem;letter-spacing:.24em;text-transform:uppercase;margin:12px 0 10px}
  .case-bubble{position:relative;inset:auto !important;translate:none;animation:none;width:100%;aspect-ratio:auto;border-radius:0;border:0;border-top:1px solid var(--grafit);background:transparent;justify-content:space-between;gap:16px;padding:18px 0;text-align:left}
  .case-bubble::after{content:"→";font-family:var(--head);font-weight:400;font-size:1.4rem;line-height:1;color:var(--terakota-tekst)}
  .case:last-child .case-bubble{border-bottom:1px solid var(--grafit)}
  .case-bubble a::after{border-radius:0}
  .case-bubble:hover,.case.active .case-bubble{scale:1;background:transparent;border-color:var(--grafit)}
  .case.active .case-bubble a{color:inherit}
  .case-detail{display:none}
}

/* Dymki słowniczka na stronach treści (27.09.2026). Reguły ograniczone do stron bez
   wyszukiwarki rozpoznań (.dx-app) — tam .dx-term/.dx-tip stylizuje rozpoznania.css, które
   ładuje się po dynres.css i ma pierwszeństwo w kaskadzie; ten wybór to dodatkowe zabezpieczenie. */
body:not(:has(.dx-app)) .dx-term{font:inherit;color:inherit;background:none;border:0;border-bottom:1px dashed var(--terakota);padding:0;margin:0;cursor:help;line-height:inherit;text-align:inherit}
body:not(:has(.dx-app)) .dx-term:hover,body:not(:has(.dx-app)) .dx-term.on{border-bottom-style:solid}
body:not(:has(.dx-app)) .dx-term:focus-visible{outline:2px solid var(--grafit);outline-offset:2px}
body:not(:has(.dx-app)) .dx-tip{position:fixed;z-index:2600;max-width:min(340px,calc(100vw - 24px));background:var(--kosc);color:var(--grafit);border:1px solid var(--piasek);box-shadow:0 8px 24px color-mix(in srgb,var(--grafit) 18%,transparent);border-radius:4px;padding:14px 16px;font-family:var(--body);font-weight:400;font-size:.95rem;line-height:1.55}
body:not(:has(.dx-app)) .dx-tip b{display:block;font-family:var(--head);font-weight:400;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--terakota-tekst);margin-bottom:6px}
.site-footer p.footer-note{font-size:.82rem;line-height:1.45;margin-top:1em;max-width:34ch}
/* Akcent na ciemnym tle: Terakota światło z tokenów (rola akcent_na_ciemnym). */
.bg-grafit .link:hover,.bg-grafit .more span,.site-footer .link:hover,.site-footer .more span{color:var(--akcent-na-ciemnym)}
/* Tabele w dokumentach na telefonie (Cennik w Regulaminie 1.0, 30.09.2026): mniejsze odstępy, a gdy tabela i tak jest szersza — przewijanie w poziomie tylko w tabeli, nie całej strony. */
@media (max-width:600px){.doc-table{overflow-x:auto;-webkit-overflow-scrolling:touch}.doc-table table{font-size:.84rem}.doc-table th,.doc-table td{padding:8px 7px}}

/* Animacje orbity i kroków (prośba Michała 01.10.2026, wersja 4 — bez bibliotek, natywne Web Animations).
   Ukrywanie przed pokazaniem działa tylko z klasą .dr-anim na <html> (ustawia ją dynres.js przy IntersectionObserver i bez „ogranicz ruch”),
   więc bez JS i przy prefers-reduced-motion wszystko jest widoczne od razu. Klasa .gotowe (po zakończeniu wejścia) przywraca zwykłe, szybkie przejścia.
   Zmiana opisu w środku: stary znika w .15 s; nowy wchodzi wierszami (JS), więc dwa teksty nigdy się nie nakładają. */
.center-default{transition:opacity .45s cubic-bezier(.16,1,.3,1) .1s,visibility 0s linear .1s}
.orbit.has-active .center-default{transition:opacity .15s ease-out,visibility 0s linear .15s}
.case-detail{transition:opacity .15s ease-out,visibility 0s linear .15s}
.case.active .case-detail{transition:none}
.orbit-lines line{transition:stroke .3s ease-out}
.dr-anim .orbit:not(.gotowe) .orbit-center{transition:opacity .7s cubic-bezier(.16,1,.3,1),scale .7s cubic-bezier(.16,1,.3,1)}
.dr-anim .orbit:not(.gotowe) .case-bubble{transition:opacity .7s cubic-bezier(.16,1,.3,1),scale .7s cubic-bezier(.16,1,.3,1),translate .7s cubic-bezier(.16,1,.3,1)}
.dr-anim .orbit:not(.gotowe) .orbit-lines line{transform-box:view-box;transform-origin:50% 50%;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.dr-anim .orbit:not(.widoczne) .orbit-center{opacity:0;scale:.94}
.dr-anim .orbit:not(.widoczne) .case-bubble{opacity:0;scale:.85}
.dr-anim .orbit:not(.widoczne) .orbit-lines line{opacity:0;transform:scale(0)}
.dr-anim .steps > .wp-block-column{transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.dr-anim .steps:not(.widoczne) > .wp-block-column{opacity:0;transform:translateY(20px)}
/* Wybór przypadku (JS): kropla płynie po linii od dymka do środka, koło „przyjmuje” ją jedną falą, a opis wchodzi wierszami. */
.orbit-kropla{position:absolute;z-index:4;left:0;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--terakota);box-shadow:0 0 0 5px color-mix(in srgb,var(--terakota) 16%,transparent),0 0 22px color-mix(in srgb,var(--terakota) 45%,transparent);pointer-events:none;will-change:transform,opacity}
.orbit-fala{position:absolute;z-index:0;border-radius:50%;border:1px solid var(--terakota);pointer-events:none;will-change:transform,opacity}
@media (max-width:1000px){.dr-anim .orbit:not(.widoczne) .case-bubble{scale:1;translate:0 12px}}
/* „Zatrzymaj animacje” (panel ułatwień 2.0): bez kropli i fali */
html.u-ruch .orbit-kropla,html.u-ruch .orbit-fala{display:none}
/* Strona podziękowań (/dziekujemy/, 01.10.2026): prośba o opinię w Google na samym końcu, oddzielona od przycisku. */
.dr-opinia{margin-top:clamp(40px,6vw,72px) !important;padding-top:18px;border-top:1px solid var(--piasek)}
/* Na stronie podziękowań bez dolnego paska „Zadzwoń / Umów wizytę” (decyzja COO 01.10: po rezerwacji „Umów wizytę” myli). */
body:has(.dr-dziekujemy) .mobile-bar{display:none !important}
body:has(.dr-dziekujemy){padding-bottom:0 !important}

/* S-261017-02: tabela „Pakiet czy program” (cennik) i dopisek pod „Umów wizytę” */
.co-dostajesz table{width:100%;border-collapse:collapse;table-layout:fixed;border:0!important}
.co-dostajesz col:nth-child(1){width:30%}
.co-dostajesz col:nth-child(2){width:32%}
.co-dostajesz th,.co-dostajesz td{padding:.7rem .6rem;border:0!important;border-bottom:1px solid #d9d4c7!important;overflow-wrap:break-word;hyphens:auto;text-align:left;vertical-align:top;font-size:1rem;font-weight:400;white-space:normal}
.co-dostajesz th{font-weight:700}
.co-dostajesz tbody th{font-weight:600}
.dopisek-rezerwacja{font-size:1rem;margin-top:.4rem}
