/* ============================================================
   TCR PRO SKIN — 06 · audyty i punch-listy (nawarstwione poprawki 2026-07)
   Część motywu (Lumoria dark). Kolejność plików = kaskada;
   ładowane jawnie w inc/enqueue.php (skin → utilities na końcu).
   NIE zmieniać kolejności bez re-audytu wizualnego.
   ============================================================ */

/* ── 22. AUDYT v9 — WCAG + wyrównania ────────────────────── */
/* Services = KAFELKI (Lumoria): karta z tłem, foto 16:10 na absolute (wysokość
   niezależna od atrybutów/lazy-load — wcześniej różne proporcje miniatur dawały 165 vs 194px),
   body z paddingiem, hover lift+gold. Grid 3 kolumny przy 3 kartach. */
@media (min-width: 1000px) { #services .iab-media-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-6); } }
.iab-media-grid { align-items: stretch; grid-auto-rows: auto; } /* starter ucinał karty do 300px */
.iab-media-card {
	background: var(--c-card);
	border: 1px solid var(--c-line);
	border-radius: var(--radius-lg);
	overflow: hidden;
	height: auto;
	min-height: 0;
	transition: border-color var(--dur-base) var(--ease), transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease);
}
.iab-media-card:hover { border-color: var(--c-brand); transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.iab-media-card__media { display: block; position: relative; width: 100%; flex: none; height: clamp(200px, 17.5vw, 252px); aspect-ratio: auto; border-radius: 0; background: var(--c-bg-alt); }
.iab-media-card__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.iab-media-card__body { padding: var(--sp-5) var(--sp-5) var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-2); flex: 1; }
.iab-media-card__title { font-size: var(--text-lg); line-height: 1.3; min-height: calc(2 * 1.3em); display: flex; align-items: flex-start; }
.iab-media-card__desc { -webkit-line-clamp: 2; min-height: calc(2 * 1.55em); }
.iab-media-card__arrow { margin-top: auto; padding-top: var(--sp-2); }
/* Pill "All N Services": starterowy p ma max-width 65ch -> centrowanie w kolumnie, nie w kontenerze */
.iab-offer-all { max-width: none; display: flex; justify-content: center; }
/* RVR: callout „Repaired" kolidował z badge 1998 (oba top-right) */
.iab-rvr__callout--top { right: auto; left: var(--sp-4); }
/* Kropki slidera: cel dotykowy ≥24px (WCAG 2.5.8) bez zmiany wyglądu */
.iab-hero-slider__dot { position: relative; width: 12px; height: 12px; }
.iab-hero-slider__dot::after { content: ""; position: absolute; inset: -8px; border-radius: 50%; }
/* Topbar: linki z minimalnym celem (ikona FB 14px → 24px+) */
.iab-topbar span, .iab-topbar a { padding-block: 6px; }
.iab-topbar__right a[aria-label] { min-width: 28px; min-height: 28px; justify-content: center; }
/* Zgoda RODO: checkbox ≥24px */
.wpcf7 input[type="checkbox"] { width: 24px; height: 24px; accent-color: var(--c-brand); }
/* Stopka: kolory solidne zamiast color-mix z alfą (zakaz przezroczystych fontów) */
.iab-footer { color: #C2BFB9; }
.iab-footer a { color: #C2BFB9; }
.iab-footer a:hover, .iab-footer__cities a:hover { color: var(--c-accent); }
.iab-footer__desc { color: #A5A19A; }
.iab-footer__cities-label { color: #A5A19A; }
.iab-footer__cities a { color: #C2BFB9; }
.iab-footer__bottom-inner { color: #A5A19A; }
.iab-footer__social a { color: #E4E2DF; border-color: #4A463F; }
.iab-footer__credit a { color: #C2BFB9; }
/* BA: 2 projekty w 3-kolumnowym gridzie zostawiały pustą kolumnę */
.iab-beforeafter-teaser .iab-grid--3 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--sp-6); }
.iab-ba-hint { margin: var(--sp-1) 0 var(--sp-5); }
/* Feature row: wspólna linia opisów — tytuł rezerwuje 2 linie */
.iab-feature-card h3 { min-height: calc(2 * 1.3em); margin-bottom: var(--sp-2); display: flex; align-items: flex-start; }
/* Błędy walidacji CF7: jasna czerwień ≥4.5:1 na ciemnym tle */
.wpcf7 .wpcf7-not-valid-tip { color: #F49A91; font-size: var(--text-xs); margin-top: 4px; }
.wpcf7 .wpcf7-not-valid { border-color: #F49A91 !important; }
.wpcf7 form.invalid .wpcf7-response-output, .wpcf7 form.failed .wpcf7-response-output { background: #2A1715; border: 1px solid #F49A91; color: #F4C7C2; border-radius: var(--radius-sm); }
.wpcf7 form.sent .wpcf7-response-output { background: #16211A; border: 1px solid #7FBF8E; color: #C4E3CC; border-radius: var(--radius-sm); }

/* ── 23. KAFELKI: news + spójny rytm ─────────────────────── */
/* Wpisy na home jako kafelki (obraz góra + body padding), spójne z services/packages */
body .iab-news-grid .iab-blog-card, body .iab-news-grid > article, body .iab-news-grid > * {
	background: var(--c-card); border: 1px solid var(--c-line); border-radius: var(--radius-lg);
	overflow: hidden; transition: border-color var(--dur-base) var(--ease), transform var(--dur-base) var(--ease);
}
body .iab-news-grid > *:hover { border-color: var(--c-brand); transform: translateY(-4px); }

/* ── 24. LUMORIA KOMPOZYCJA (pomiar demo 2026-07-12) ─────── */
/* Nagłówki sekcji: wariant wycentrowany (services panel w demo) */
.iab-section-head--center { text-align: center; margin-inline: auto; }
.iab-section-head--center h2 { margin-inline: auto; }
.iab-section-head--center p { margin-inline: auto; }

/* SERVICES = ciemniejszy zaokrąglony panel inset (1:1 „Our Path To…") */
.iab-svc-band { background: var(--c-bg); padding: var(--sp-5); }
.iab-svc-band__panel { background: #0E0D0C; border: 1px solid var(--c-line); border-radius: var(--radius-xl); max-width: calc(var(--container) + 80px); margin-inline: auto; padding: clamp(48px, 6vw, 88px) 0; }
.iab-svc-band .iab-media-grid { margin-top: var(--sp-7); }
.iab-svc-band .iab-media-card { background: transparent; border: 0; overflow: visible; }
.iab-svc-band .iab-media-card:hover { border: 0; box-shadow: none; }
.iab-svc-band .iab-media-card__media { border-radius: var(--radius-md); overflow: hidden; }
.iab-svc-band .iab-media-card__media img { transition: transform var(--dur-slow) var(--ease); }
.iab-svc-band .iab-media-card:hover .iab-media-card__media img { transform: scale(1.05); }
.iab-svc-band .iab-media-card__body { padding: var(--sp-4) var(--sp-1) 0; }
.iab-svc-band .iab-media-card__title { color: #fff; }
.iab-svc-band .iab-media-card__desc { color: var(--c-dark-soft, #C9C6C0); }
/* „View Details ○→" — tekst + złote kółko ze strzałką */
.iab-media-card__circle { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--c-brand); color: var(--c-brand); margin-left: var(--sp-2); transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }
.iab-media-card:hover .iab-media-card__circle { background: var(--c-brand); color: var(--c-on-brand); }
.iab-svc-band .iab-offer-all { margin-top: var(--sp-7); }

/* FEATURE ROW: ikony KONTUROWE w okręgu (demo), nie solid */
.iab-feature-card__ico { background: transparent; border: 1px solid var(--c-brand); color: var(--c-brand); width: 64px; height: 64px; }
.iab-feature-card { padding: var(--sp-6) var(--sp-6) var(--sp-7); }
.iab-feature-card__ico { margin-bottom: var(--sp-5); }

/* TRUST: logotypy w obramowanych komórkach siatki (demo) */
.iab-trust-badges__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0; border: 1px solid var(--c-line); border-radius: var(--radius-md); overflow: hidden; }
.iab-trust-badges__item { display: flex; align-items: center; justify-content: center; min-height: 96px; border-right: 1px solid var(--c-line); padding: var(--sp-4); }
.iab-trust-badges__item:last-child { border-right: 0; }
@media (max-width: 860px) { .iab-trust-badges__item { border-bottom: 1px solid var(--c-line); border-right: 0; } .iab-trust-badges__item:last-child { border-bottom: 0; } }
.iab-trust-badges__logo { font-size: var(--text-lg); }

/* RVR: kolaż — mała fotka nachodząca na dużą (lewy dół), jak w demo */
.iab-rvr__photo-sm { position: absolute; left: calc(-1 * var(--sp-4)); bottom: var(--sp-6); width: clamp(140px, 14vw, 200px); aspect-ratio: 4 / 3; border-radius: var(--radius-md); overflow: hidden; border: 4px solid var(--c-bg); box-shadow: var(--shadow-lift); display: none; }
.iab-rvr__photo-sm img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (min-width: 900px) { .iab-rvr__photo-sm { display: block; } .iab-rvr__callout--bottom { left: auto; right: var(--sp-4); } }

/* Hero: kropki na prawym dole pod strzałkami (demo) + chip-eyebrow */
.iab-hero-slider__dots { left: auto; right: clamp(24px, 4vw, 56px); bottom: clamp(88px, 10vw, 116px); }

/* ── 25. BRANŻOWY POMARAŃCZ + MIKROINTERAKCJE ────────────── */
/* Wyraźne hovery (feedback: „przechodzi z bezu na bez") */
.iab-fab:hover { background: #fff; color: #161616; }
.iab-footer .iab-footer__cta:hover { background: #fff; border-color: #fff; color: #161616; }
.iab-hero-slider__arrow:hover { background: #fff; border-color: #fff; color: #161616; }
/* Menu: animowane pomarańczowe podkreślenie */
.iab-menu__link { position: relative; }
.iab-menu__link::after { content: ""; position: absolute; left: 0; right: auto; bottom: -4px; width: 100%; height: 2px; background: var(--c-brand); transform: scaleX(0); transform-origin: left; transition: transform var(--dur-base) var(--ease); }
.iab-menu__link:hover::after, .iab-menu__link:focus-visible::after { transform: scaleX(1); }
/* Feature-karta: okrąg ikony wypełnia się pomarańczem */
.iab-feature-card:hover .iab-feature-card__ico { background: var(--c-brand); color: var(--c-on-brand); }
.iab-feature-card__ico { transition: background var(--dur-base) var(--ease), color var(--dur-base) var(--ease); }
/* Kafelki foto: zoom obrazu na hover wszędzie (spójny język ruchu) */
.iab-beforeafter-teaser .iab-card__ba img, .iab-blog-card__media img { transition: transform var(--dur-slow) var(--ease); }
.iab-beforeafter-teaser .iab-card:hover .iab-card__ba img { transform: scale(1.04); }
.iab-news-grid > *:hover .iab-blog-card__media img { transform: scale(1.04); }
/* Textlink: podkreślenie „dojeżdża" na hover */
.iab-textlink { border-bottom: 0; background: linear-gradient(currentColor, currentColor) no-repeat left bottom / 100% 1px; padding-bottom: 3px; transition: background-size var(--dur-base) var(--ease), opacity var(--dur-fast) var(--ease); }
.iab-textlink:hover { background-size: 40% 1px; opacity: 1; }
/* Chipy/pigułki: pomarańcz na hover */
.iab-rvr__tags span { transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }
.iab-areas-map__list a:hover { background: var(--c-brand); color: var(--c-on-brand); border-color: var(--c-brand); }
a.iab-filter-pills__pill:hover { background: var(--c-brand); color: var(--c-on-brand); border-color: var(--c-brand); }
/* BA na home: suwak USUNIĘTY (karta jest linkiem — range nie działał); czyste Before|After */
.iab-beforeafter-teaser a .iab-ba-range, .iab-beforeafter-teaser a .iab-ba-seam { display: none; }

/* ── 26. AUDYT (2): białe CTA, FAB pulse, news kafelki, hero chips ── */
/* Przyciski: BIAŁY tekst na ciemniejszym pomarańczu (#C94E00 = 4.7:1 z bielą);
   jasny #F26A1B zostaje dla tekstów/ikon na ciemnym tle. Hover: białe tło (bez zmian). */
.iab-btn--primary { background: #C94E00; border-color: #C94E00; color: #fff; }
.iab-offer-all a { background: #C94E00; color: #fff; }
.iab-offer-all a:hover { background: #fff; color: #161616; }
.iab-drawer__cta { background: #C94E00; color: #fff; }
.iab-drawer__cta:hover, .iab-drawer__cta:focus-visible { background: #fff; color: #161616; }
.iab-footer .iab-footer__cta { background: #C94E00; border-color: #C94E00; color: #fff; }
.iab-media-card:hover .iab-media-card__circle { background: #C94E00; color: #fff; }
/* FAB: filled, BIAŁA ikona, pulsująca obwódka (wyłączona przy reduced-motion) */
.iab-fab { background: #C94E00; color: #fff; border: 2px solid #fff; animation: iab-fab-pulse 2.4s var(--ease) infinite; }
.iab-fab:hover { background: #fff; color: #161616; animation-play-state: paused; }
.iab-fab svg { fill: currentColor; }
@keyframes iab-fab-pulse {
	0% { box-shadow: 0 0 0 0 rgba(242, 106, 27, 0.55); }
	70% { box-shadow: 0 0 0 16px rgba(242, 106, 27, 0); }
	100% { box-shadow: 0 0 0 0 rgba(242, 106, 27, 0); }
}
@media (prefers-reduced-motion: reduce) { .iab-fab { animation: none; } }
/* NEWS: style bazowe karty (starter ich NIE MA) — foto 16:10, padding treści, równa siatka 3 */
body .iab-news-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); grid-auto-rows: auto; }
body .iab-news-grid > *:first-child { grid-row: auto; }
.iab-blog-card { display: flex; flex-direction: column; }
.iab-blog-card__link { display: flex; flex-direction: column; height: 100%; text-decoration: none; }
.iab-blog-card__media { position: relative; display: block; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: var(--c-bg-alt); }
.iab-blog-card__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.iab-blog-card__cat { position: absolute; left: var(--sp-4); bottom: var(--sp-4); z-index: 1; }
.iab-blog-card__content { display: flex; flex-direction: column; gap: var(--sp-3); padding: var(--sp-5) var(--sp-5) var(--sp-6); flex: 1; }
.iab-blog-card__title { font-size: var(--text-lg); line-height: 1.35; margin: 0; }
.iab-blog-card__excerpt { margin: 0; font-size: var(--text-sm); color: var(--c-ink-soft); }
.iab-blog-card__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); padding-top: var(--sp-2); }
/* HERO: chipy outline nad tytułem + wyższa rama + pełniejszy overlay (1:1 demo) */
.iab-hero-slider__frame { min-height: clamp(560px, 82vh, 820px); }
.iab-hero-slider__overlay { background: linear-gradient(75deg, rgba(10, 9, 8, 0.85) 0%, rgba(10, 9, 8, 0.5) 52%, rgba(10, 9, 8, 0.18) 100%); }
.iab-hero-slider__chips { display: inline-flex; flex-wrap: wrap; gap: var(--sp-2); }
.iab-hero-slider__chip { font-family: var(--font-display); font-size: 13px; font-weight: var(--fw-medium); letter-spacing: 0.08em; text-transform: uppercase; color: #fff; border: 1px solid rgba(255, 255, 255, 0.45); border-radius: var(--radius-pill); padding: 8px 16px 6px; backdrop-filter: blur(4px); }
.iab-hero-slider__title { margin-top: var(--sp-5); }

/* ── 27. SPÓJNOŚĆ PODSTRON (audyt szablonów 2026-07-13) ──── */
/* Wycentrowany head działa też z H1 (archiwa) — wcześniej h1 zostawał z lewej */
.iab-section-head--center :is(h1, h2, h3) { margin-inline: auto; }
.iab-section-head--center h1 { max-width: 24ch; }
/* Local-hero: starter malował przyciski kolorami on-brand (niewidoczne na ciemnym panelu) */
.iab-local-hero .iab-btn--primary { background: #C94E00; border-color: #C94E00; color: #fff; }
.iab-local-hero .iab-btn--primary:hover { background: #fff; border-color: #fff; color: #161616; }
.iab-local-hero .iab-btn--secondary { background: transparent; border: 1px solid rgba(255, 255, 255, 0.4); color: var(--c-ink); }
.iab-local-hero .iab-btn--secondary:hover { background: #fff; border-color: #fff; color: #161616; }
.iab-local-hero .iab-eyebrow { color: var(--c-brand); }
.iab-local-hero__ctas { margin-top: var(--sp-5); gap: var(--sp-3); flex-wrap: wrap; }
/* Banner featured pod hero usługi */
.iab-svc-banner { margin: var(--sp-5) 0 0; border-radius: var(--radius-xl); overflow: hidden; }
.iab-svc-banner img { display: block; width: 100%; height: auto; max-height: 480px; object-fit: cover; }
/* Kafelki miast w archiwum — kompaktowe, spójne z chipami na home */
.iab-area-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--sp-3); margin-top: var(--sp-6); }
.iab-area-tile { display: flex; align-items: center; gap: var(--sp-3); background: var(--c-card); border: 1px solid var(--c-line); border-radius: var(--radius-md); padding: var(--sp-4) var(--sp-5); text-decoration: none; transition: border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease); }
.iab-area-tile:hover { border-color: var(--c-brand); transform: translateY(-2px); }
.iab-area-tile__pin { color: var(--c-brand); flex: none; display: inline-flex; }
.iab-area-tile__name { font-family: var(--font-display); font-weight: var(--fw-medium); font-size: var(--text-base); color: var(--c-ink); }
.iab-area-tile__arrow { margin-left: auto; color: var(--c-brand); display: inline-flex; transition: transform var(--dur-fast) var(--ease); }
.iab-area-tile:hover .iab-area-tile__arrow { transform: translateX(3px); }
/* Kompaktowy tytuł stron core (contact — była pusta dziura między H1 a sekcją) */
.iab-page-title { padding: var(--sp-7) var(--sp-5) 0; text-align: center; }
.iab-page-title h1 { margin-inline: auto; }
/* Reviews page: sekcja pod treścią powtarzała ten sam nagłówek */
.page-template-page-reviews #reviews .iab-section-head { display: none; }
.page-template-page-reviews #reviews { padding-top: var(--sp-7); }

/* Single project: para before/after w RÓWNYM kadrze 4:3 (zdjęcia miały różne proporcje) */
.iab-beforeafter { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4); }
.iab-beforeafter figure { margin: 0; }
.iab-beforeafter figure > span, .iab-beforeafter figure img { display: block; }
.iab-beforeafter img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-md); }
.iab-beforeafter figcaption { margin-top: var(--sp-2); font-family: var(--font-display); font-size: var(--text-xs); font-weight: var(--fw-medium); letter-spacing: 0.06em; text-transform: uppercase; color: var(--c-brand); }
@media (max-width: 640px) { .iab-beforeafter { grid-template-columns: 1fr; } }

/* Search/archiwa: karta bez zdjęcia = kompaktowa tekstowa (placeholder wyglądał jak dziura) */
.iab-blog-card__media:has(.iab-blog-card__ph) { display: none; }
/* Paginacja WP: sr-only nagłówek (starter nie definiował klasy) + pille numerów */
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
nav.pagination { margin-top: var(--sp-7); }
nav.pagination .nav-links { display: flex; justify-content: center; flex-wrap: wrap; gap: var(--sp-2); }
nav.pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 14px; border: 1px solid var(--c-line); border-radius: var(--radius-pill); background: var(--c-card); color: var(--c-ink-soft); text-decoration: none; font-family: var(--font-display); font-size: var(--text-sm); transition: border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease); }
nav.pagination .page-numbers.current { background: var(--c-brand); border-color: var(--c-brand); color: var(--c-on-brand); }
nav.pagination a.page-numbers:hover { border-color: var(--c-brand); color: var(--c-brand); }
nav.pagination .page-numbers.dots { border: 0; background: transparent; }

/* ── 28. PUNCH-LISTA v11 ─────────────────────────────────── */
/* 1. Mega menu: karta była brand-na-brand (pomarańczowy przycisk na pomarańczu) */
.iab-mega__card { background: var(--c-card); border: 1px solid var(--c-line); color: var(--c-ink); }
.iab-mega__card strong { color: var(--c-ink); }
.iab-mega__card p { color: var(--c-ink-soft); }
/* 2. Badge nie klei się do tytułu; H1 na singlach nie łamie się na 3 linie */
.iab-badge { display: inline-flex; margin-bottom: var(--sp-4); }
.single-project h1 { font-size: var(--text-xl); max-width: 26ch; margin-top: var(--sp-2); }
/* 3. Galeria: karty-zdjęcia bez podstron (div zamiast <a>) — kursor neutralny */
.iab-card--static { cursor: default; }
.iab-card--static:hover { transform: none; }
/* 5. Ściany tekstu: prose h2 = rytm sekcji site-wide (hairline + oddech) */
.iab-prose h2 { margin-top: clamp(40px, 4vw, 56px); padding-top: clamp(20px, 2vw, 28px); border-top: 1px solid var(--c-line); }
.iab-prose h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
/* About: hero-panel + naprzemienne sekcje tekst|foto + panel CTA */
.iab-about-sec { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-6); align-items: center; margin-top: clamp(48px, 5vw, 72px); }
@media (min-width: 920px) {
	.iab-about-sec { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); gap: clamp(40px, 5vw, 80px); }
	.iab-about-sec--flip { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); }
	.iab-about-sec--flip .iab-about-sec__body { order: 2; }
	.iab-about-sec--flip .iab-about-sec__photo { order: 1; }
}
.iab-about-sec__body h2 { margin: 0 0 var(--sp-4); border: 0; padding: 0; }
.iab-about-sec__body :is(p, ul) { color: var(--c-ink-soft); }
.iab-about-sec__photo { margin: 0; border-radius: var(--radius-lg); overflow: hidden; }
.iab-about-sec__photo img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.iab-about-cta { background: var(--c-card); border: 1px solid var(--c-line); border-radius: var(--radius-xl); padding: clamp(32px, 4vw, 56px); margin-top: clamp(48px, 5vw, 72px); }
.iab-about-cta h2 { margin: 0 0 var(--sp-3); border: 0; padding: 0; }
.iab-about-cta p { color: var(--c-ink-soft); max-width: 56ch; }
.iab-about-cta .iab-btn { margin-top: var(--sp-4); }
/* 7. Single service: checklista w siatce 2 kolumn */
.single-service .iab-why__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--sp-3); }
.single-service .iab-why__item { background: var(--c-card); border: 1px solid var(--c-line); border-radius: var(--radius-md); padding: var(--sp-4) var(--sp-5); border-top: 1px solid var(--c-line); }
.single-service .iab-why__item:last-child { border-bottom: 1px solid var(--c-line); }

/* ── 29. ANTY-ŚCIANA-TEKSTU: sekcje treści (usługi/comba/huby) ── */
.iab-prose-lead { max-width: var(--container-narrow, 860px); margin: var(--sp-6) auto 0; }
.iab-prose-lead :is(p) { font-size: var(--text-lg); line-height: 1.6; color: var(--c-ink-soft); }
/* Panel-karta dla co trzeciej sekcji */
.iab-prose-panel { background: var(--c-card); border: 1px solid var(--c-line); border-radius: var(--radius-xl); padding: clamp(28px, 4vw, 56px); margin-top: clamp(40px, 5vw, 64px); }
.iab-prose-panel .iab-prose { max-width: 70ch; }
.iab-prose-panel h2, .iab-about-sec__body h2 { border-top: 0; padding-top: 0; margin-top: 0; }
.iab-prose-panel h2 { margin-bottom: var(--sp-4); }
/* Sekcje split mają duży odstęp również na tych szablonach */
.iab-about-sec + .iab-prose-panel, .iab-prose-panel + .iab-about-sec { margin-top: clamp(40px, 5vw, 64px); }
/* Listy w sekcjach: pomarańczowe checki (skanowalność) */
.iab-prose--rich ul { list-style: none; padding: 0; margin: var(--sp-4) 0; display: grid; gap: var(--sp-2); }
.iab-prose--rich ul li { position: relative; padding-left: 30px; }
.iab-prose--rich ul li::before { content: "✓"; position: absolute; left: 0; top: 0; color: var(--c-brand); font-weight: 700; }
.iab-prose--rich ol { padding-left: 22px; }
/* Pasek CTA w środku treści (konwersja) */
.iab-cta-strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-4) var(--sp-5); background: #0E0D0C; border: 1px solid var(--c-line); border-radius: var(--radius-lg); padding: clamp(20px, 3vw, 32px) clamp(24px, 3vw, 40px); margin-top: clamp(40px, 5vw, 64px); }
.iab-cta-strip__txt { display: flex; flex-direction: column; gap: 4px; min-width: 240px; }
.iab-cta-strip__txt strong { font-family: var(--font-display); font-weight: var(--fw-display); font-size: var(--text-lg); color: #fff; }
.iab-cta-strip__txt span { color: var(--c-ink-soft); font-size: var(--text-sm); }
.iab-cta-strip__btns { display: flex; flex-wrap: wrap; gap: var(--sp-3); }

/* ── 30. DOC-LAYOUT v2 (senior pass): jeden rytm treści + hero split ── */
/* Hero split: treść | featured w JEDNYM panelu (banner OUT) */
.iab-local-hero--split { padding: 0; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 920px) { .iab-local-hero--split { grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); } }
.iab-local-hero--split .iab-local-hero__content { padding: clamp(32px, 4vw, 64px) clamp(24px, 4vw, 56px); }
.iab-local-hero:not(.iab-local-hero--split) .iab-local-hero__content { display: contents; }
.iab-local-hero__media { margin: 0; min-height: 260px; }
.iab-local-hero__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.iab-local-hero--split .iab-badge { margin: var(--sp-4) 0 0; }
/* Doc: nagłówek sekcji w lewej szynie (sticky), treść w prawej — JEDNA szerokość */
.iab-doc { margin-top: clamp(32px, 4vw, 48px); }
.iab-doc__lead { max-width: 72ch; padding-bottom: clamp(28px, 3vw, 40px); }
.iab-doc__lead p { font-size: var(--text-lg); line-height: 1.6; color: var(--c-ink-soft); }
.iab-doc__sec { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-4); padding-block: clamp(32px, 4vw, 52px); border-top: 1px solid var(--c-line); }
@media (min-width: 920px) {
	.iab-doc__sec { grid-template-columns: minmax(220px, 340px) minmax(0, 1fr); gap: clamp(40px, 6vw, 110px); }
	.iab-doc__head { position: sticky; top: calc(var(--header-h) + var(--sp-5)); align-self: start; }
}
.iab-doc__head h2 { margin: 0; font-size: clamp(22px, 2vw, 28px); line-height: 1.3; border: 0; padding: 0; }
.iab-doc__head .iab-eyebrow { display: block; margin-bottom: var(--sp-2); }
.iab-doc__body { max-width: 68ch; }
.iab-doc__body > :first-child { margin-top: 0; }
.iab-doc__body p { color: var(--c-ink-soft); }
.iab-doc__body .iab-why__list { max-width: none; }
/* CTA-strip w rytmie doc: bez własnego border-top-hairline konfliktu */
.iab-doc .iab-cta-strip { margin: 0 0 0; }
.iab-doc .iab-cta-strip + .iab-doc__sec { border-top: 0; padding-top: clamp(32px, 4vw, 52px); }
.iab-cta-strip { margin-top: 0; }
/* stare pomocnicze z v1 neutralne (nieużywane): panel/lead marginesy zostają dla about */

/* ── 31. FULL-WIDTH PAGE HERO + next-steps + lead w siatce ── */
/* Hero podstron: PEŁNOEKRANOWE FOTO w tle + gradient overlay (wzorzec Magic/Stalver) */
.iab-page-hero { position: relative; isolation: isolate; background: #0E0D0C; border-bottom: 1px solid var(--c-line); padding-block: clamp(64px, 9vw, 128px); display: flex; align-items: center; }
.iab-page-hero--photo { min-height: clamp(420px, 56vh, 620px); }
.iab-page-hero__bg { position: absolute; inset: 0; z-index: -2; background-image: var(--iab-bg); background-size: cover; background-position: center 38%; }
.iab-page-hero__overlay { position: absolute; inset: 0; z-index: -1; background: linear-gradient(78deg, rgba(10, 9, 8, 0.9) 0%, rgba(10, 9, 8, 0.62) 52%, rgba(10, 9, 8, 0.28) 100%); }
.iab-page-hero > .iab-container { width: 100%; }
.iab-page-hero__content .iab-eyebrow { color: var(--c-brand-ink); }
.iab-page-hero__content h1 { color: #fff; margin-top: var(--sp-3); max-width: 20ch; }
.iab-page-hero__content > p, .iab-page-hero__lead p { color: #E6E4E1; font-size: var(--text-lg); line-height: 1.6; margin-top: var(--sp-4); max-width: 50ch; }
.iab-page-hero__ctas { margin-top: var(--sp-6); gap: var(--sp-3); flex-wrap: wrap; }
.iab-page-hero__content .iab-badge { margin: var(--sp-4) 0 0; }
/* Lead w siatce doc: pierwsza sekcja bez hairline, intro typografia */
.iab-doc__sec--lead { border-top: 0; padding-top: clamp(20px, 2.5vw, 32px); }
.iab-doc__lead p:first-child { font-size: clamp(19px, 1.6vw, 23px); line-height: 1.55; color: var(--c-ink); }
.iab-doc__lead p { font-size: var(--text-base); color: var(--c-ink-soft); }
/* Next-steps: kafle akcji zamiast gołych przycisków */
.iab-next-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--sp-4); margin-top: clamp(32px, 4vw, 48px); }
.iab-next-card { display: flex; align-items: center; gap: var(--sp-4); background: var(--c-card); border: 1px solid var(--c-line); border-radius: var(--radius-lg); padding: var(--sp-5) var(--sp-6); text-decoration: none; transition: border-color var(--dur-base) var(--ease), transform var(--dur-base) var(--ease); }
.iab-next-card:hover { border-color: var(--c-brand); transform: translateY(-3px); }
.iab-next-card__ico { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--c-brand); color: var(--c-brand); transition: background var(--dur-base) var(--ease), color var(--dur-base) var(--ease); }
.iab-next-card:hover .iab-next-card__ico { background: var(--c-brand); color: var(--c-on-brand); }
.iab-next-card__txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.iab-next-card__txt strong { font-family: var(--font-display); font-weight: var(--fw-display); font-size: var(--text-lg); color: var(--c-ink); }
.iab-next-card__txt span { font-size: var(--text-sm); color: var(--c-ink-soft); }
.iab-next-card__arrow { margin-left: auto; color: var(--c-brand); flex: none; transition: transform var(--dur-fast) var(--ease); }
.iab-next-card:hover .iab-next-card__arrow { transform: translateX(4px); }

/* ── 32. INTRO-STATEMENT pod hero (lead przestaje być gołym blokiem) ── */
.iab-doc__intro { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-5); padding-block: clamp(40px, 5vw, 72px); align-items: start; }
@media (min-width: 920px) { .iab-doc__intro { grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); gap: clamp(48px, 7vw, 120px); } }
.iab-doc__intro-main p { font-family: var(--font-display); font-weight: var(--fw-medium); font-size: clamp(19px, 1.6vw, 24px); line-height: 1.5; color: var(--c-ink); margin: 0; max-width: 32ch; text-wrap: balance; }
.iab-doc__intro-rest p { color: var(--c-ink-soft); font-size: var(--text-base); line-height: 1.65; }
.iab-doc__intro-rest p:first-child { margin-top: 6px; }

/* ── 33. Service areas na usłudze: siatka kafli zamiast pigułek ── */
.iab-doc__body--wide { max-width: none; }
.iab-area-grid--inline { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); margin-top: var(--sp-4); }
.iab-area-tile--more { border-color: var(--c-brand); justify-content: space-between; }
.iab-area-tile--more .iab-area-tile__name { color: var(--c-brand); }
.iab-area-tile--more:hover { background: var(--c-brand); }
.iab-area-tile--more:hover :is(.iab-area-tile__name, .iab-area-tile__arrow) { color: var(--c-on-brand); }

/* ── 34. POMARAŃCZOWE TŁA = BIAŁA CZCIONKA (AA przez #C94E00) + blog polish ── */
.iab-rvr__callout,
.iab-rvr__badge,
.iab-filter-pills__pill.is-active,
a.iab-filter-pills__pill:hover,
.iab-blog-card__cat,
body .iab-art-hero__cat,
.iab-filter__btn.is-active,
nav.pagination .page-numbers.current,
.iab-areas-map__list a:hover,
.search-submit,
.searchform [type="submit"] { background: #C94E00 !important; color: #fff !important; border-color: #C94E00 !important; }
.iab-rvr__badge { background: #C94E00; }
.iab-area-tile--more:hover { background: #C94E00; border-color: #C94E00; }
.iab-next-card:hover .iab-next-card__ico,
.iab-feature-card:hover .iab-feature-card__ico { background: #C94E00; border-color: #C94E00; color: #fff; }
.iab-drawer__service-icon, .iab-drawer__cta { background: #C94E00; color: #fff; }
/* uchwyt suwaka BA: strzałki białe */
.iab-ba-seam i { background: #C94E00; }
.iab-ba-seam i::before { border-right-color: #fff; }
.iab-ba-seam i::after { border-left-color: #fff; }
/* Sidebar: licznik kategorii nie łamie się do 2. linii */
.iab-blog-aside .cat-item { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); white-space: nowrap; }
.iab-blog-aside .cat-item a { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* Listing: poziome, KOMPAKTOWE kafelki */
.iab-blog-card--horizontal { display: grid; }
.iab-blog-card--horizontal .iab-blog-card__link { display: grid; grid-template-columns: minmax(180px, 240px) minmax(0, 1fr); gap: 0; align-items: stretch; height: 100%; }
.iab-blog-card--horizontal .iab-blog-card__media { aspect-ratio: auto; min-height: 168px; height: 100%; }
.iab-blog-card--horizontal .iab-blog-card__content { padding: var(--sp-4) var(--sp-5); gap: var(--sp-2); }
.iab-blog-card--horizontal .iab-blog-card__title { font-size: var(--text-base); line-height: 1.35; }
.iab-blog-card--horizontal .iab-blog-card__excerpt { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: var(--text-sm); }
.iab-blog-card--horizontal .iab-blog-card__cat { left: var(--sp-3); bottom: var(--sp-3); }
@media (max-width: 640px) {
	.iab-blog-card--horizontal .iab-blog-card__link { grid-template-columns: minmax(0, 1fr); }
	.iab-blog-card--horizontal .iab-blog-card__media { aspect-ratio: 16 / 10; min-height: 0; }
}
/* Lista wpisów: karty jedna pod drugą z odstępem */
.iab-blog-list { display: grid; gap: var(--sp-4); }

/* ── 35. Single post: share równe + related kompaktowe poziome ── */
/* Ikony share: jeden rozmiar (SVG w markupie mają 16-18px — stąd „krzywo") */
.iab-art-share__btn svg { width: 18px; height: 18px; display: block; }
.iab-art-share__btn { flex: none; }
.iab-art-share__btn:hover { background: #C94E00; color: #fff; border-color: #C94E00; }
/* Related: 2 poziome karty wypełniają kontener (bez pustej 1/3 po prawej) */
body .iab-blog-related { grid-template-columns: 1fr; }
@media (min-width: 860px) { body .iab-blog-related { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ── 36. Artykuł: share bez przesunięcia, szersza kolumna, hero jak page-hero ── */
/* Whitespace w <a> spychał SVG o 7px (button był czysty) — zabij text-nodes */
/* share w <aside.iab-art-toc> lapal `.iab-art-toc a{display:block;padding;border-left}` z blog.css (+7px przesuniecia) */
body .iab-art-toc a.iab-art-share__btn, body a.iab-art-share__btn, body button.iab-art-share__btn {
	display: inline-flex; align-items: center; justify-content: center;
	padding: 0; border-left: 1px solid var(--c-line); font-size: 0; line-height: 0;
}
/* Kolumna treści dochodzi do prawej krawędzi siatki (było 720px pływające na środku) */
@media (min-width: 1000px) { body .iab-art-layout { grid-template-columns: minmax(280px, 320px) minmax(0, 1fr); justify-content: stretch; } }
body .iab-art-prose { max-width: 78ch; }
/* Hero artykułu: gradient jak page-hero (ostry kadr, czytelna treść), meta jaśniejsze */
body .iab-art-hero { min-height: clamp(380px, 50vh, 560px); }
body .iab-art-hero__scrim { background: linear-gradient(78deg, rgba(10, 9, 8, 0.9) 0%, rgba(10, 9, 8, 0.6) 52%, rgba(10, 9, 8, 0.3) 100%); }
body .iab-art-hero__media { background-position: center 40%; }
body .iab-art-hero__cat { margin-top: var(--sp-4); margin-bottom: var(--sp-4); }
body .iab-art-meta { color: #E6E4E1; }
body .iab-art-meta__sep { color: var(--c-brand-ink); }

/* ── 37. Head-row (przycisk w prawym rogu przy tytule) + kontrast secondary ── */
.iab-section-head--row { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--sp-4); flex-wrap: wrap; max-width: none; }
.iab-section-head--row h2 { margin-bottom: 0; }
.iab-section-head--row .iab-btn { flex: none; margin-bottom: 4px; }
/* Secondary: wyraźny kontrast na ciemnym (border był ledwo widoczny) */
.iab-btn--secondary { border: 1px solid rgba(255, 255, 255, 0.55); color: #fff; }
.iab-btn--secondary:hover { background: #fff; border-color: #fff; color: #161616; }

/* ── 38. Sitemap w rytmie motywu ─────────────────────────── */
.iab-sitemap__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--sp-2) var(--sp-5); }
.iab-sitemap__list li { margin: 0; }
.iab-sitemap__list a { display: inline-flex; align-items: baseline; gap: 8px; color: var(--c-ink-soft); text-decoration: none; padding: 6px 0; font-size: var(--text-sm); transition: color var(--dur-fast) var(--ease); }
.iab-sitemap__list a::before { content: "→"; color: var(--c-brand-ink); flex: none; }
.iab-sitemap__list a:hover { color: var(--c-brand-ink); }

/* ── 39. WARSTWA MOTION v12 (loader/ambient/tilt/modal) ──── */
/* LOADER: logo + „wylewka" (listwa screed wygładza pomarańczowy pas) */
.iab-loader { position: fixed; inset: 0; z-index: 9999; background: #0E0D0C; display: flex; align-items: center; justify-content: center; opacity: 1; transition: opacity 0.5s var(--ease), visibility 0.5s; }
html.iab-no-loader .iab-loader { display: none; }
.iab-loader.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
html.iab-loading { overflow: hidden; }
.iab-loader__inner { display: flex; flex-direction: column; align-items: center; gap: var(--sp-5); }
.iab-loader__logo { width: 180px; height: auto; animation: iab-loader-in 0.7s var(--ease-out) both; }
.iab-loader__screed { position: relative; width: min(260px, 60vw); height: 8px; border-radius: 4px; background: #2A2724; overflow: visible; }
.iab-loader__fill { position: absolute; inset: 0; border-radius: 4px; background: linear-gradient(90deg, #C94E00, var(--c-brand)); transform-origin: left; transform: scaleX(0); animation: iab-screed-fill 1.6s var(--ease) 0.3s infinite; }
.iab-loader__blade { position: absolute; top: -7px; left: 0; width: 4px; height: 22px; border-radius: 2px; background: #F5F4F2; box-shadow: 0 0 12px rgba(242, 106, 27, 0.55); animation: iab-screed-blade 1.6s var(--ease) 0.3s infinite; }
.iab-loader__label { font-family: var(--font-display); font-weight: var(--fw-medium); font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--c-muted); animation: iab-loader-in 0.7s var(--ease-out) 0.25s both; }
@keyframes iab-loader-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes iab-screed-fill { 0% { transform: scaleX(0); } 70% { transform: scaleX(1); } 100% { transform: scaleX(1); } }
@keyframes iab-screed-blade { 0% { transform: translateX(0); } 70% { transform: translateX(min(256px, calc(60vw - 4px))); } 100% { transform: translateX(min(256px, calc(60vw - 4px))); } }
@media (prefers-reduced-motion: reduce) {
	.iab-loader__fill { animation: none; transform: scaleX(1); }
	.iab-loader__blade { display: none; }
}

/* AMBIENT TŁA: dryfujące pomarańczowe glow + ziarno betonu (pod całą treścią) */
body::before {
	content: ""; position: fixed; inset: -20%; z-index: -2; pointer-events: none;
	background:
		radial-gradient(42% 34% at 18% 22%, rgba(242, 106, 27, 0.07), transparent 70%),
		radial-gradient(38% 30% at 84% 76%, rgba(242, 106, 27, 0.05), transparent 70%);
	animation: iab-ambient 38s var(--ease) infinite alternate;
	will-change: transform;
}
body::after {
	content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: 0.035;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
@keyframes iab-ambient { from { transform: translate3d(0, 0, 0) scale(1); } to { transform: translate3d(4%, -3%, 0) scale(1.06); } }
@media (prefers-reduced-motion: reduce), (max-width: 760px) { body::before { animation: none; } }

/* TILT: płynny powrót; transformy nie gryzą się z hover-liftami (transform nadpisuje) */
.iab-tilt { transition: transform 0.35s var(--ease-out), border-color var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); will-change: transform; }

/* MODAL Free Estimate */
.iab-exit { position: fixed; inset: 0; z-index: 9000; display: flex; align-items: center; justify-content: center; padding: var(--sp-4); opacity: 0; transition: opacity 0.3s var(--ease); }
.iab-exit.is-open { opacity: 1; }
.iab-exit[hidden] { display: none; }
.iab-exit__backdrop { position: absolute; inset: 0; background: rgba(8, 7, 6, 0.72); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.iab-exit__card { position: relative; width: min(480px, 100%); background: #1C1B19; border: 1px solid var(--c-line); border-radius: var(--radius-xl); padding: clamp(28px, 4vw, 44px); box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55); transform: translateY(14px) scale(0.97); transition: transform 0.35s var(--ease-out); outline: none; }
.iab-exit.is-open .iab-exit__card { transform: none; }
.iab-exit__card h2 { font-size: clamp(24px, 2.4vw, 32px); margin: var(--sp-3) 0 var(--sp-3); color: #fff; }
.iab-exit__card > p { color: var(--c-ink-soft); font-size: var(--text-sm); margin: 0 0 var(--sp-4); }
.iab-exit__points { list-style: none; margin: 0 0 var(--sp-5); padding: var(--sp-4) 0 0; border-top: 1px solid var(--c-line); display: grid; gap: var(--sp-2); }
.iab-exit__points li { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--text-sm); color: var(--c-ink-soft); }
.iab-exit__points svg { color: var(--c-brand-ink); flex: none; }
.iab-exit__ctas { display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.iab-exit__close { position: absolute; top: 14px; right: 14px; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--c-line); background: transparent; color: var(--c-ink-soft); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }
.iab-exit__close:hover { border-color: var(--c-brand); color: #fff; }
html.iab-modal-open { overflow: hidden; }
@media (prefers-reduced-motion: reduce) { .iab-exit, .iab-exit__card { transition: none; } }

/* ── 40. BLUEPRINT-GRID FX (animowane tła paneli) ────────── */
.iab-has-grid { position: relative; }
.iab-has-grid::before {
	content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
	background-image:
		linear-gradient(rgba(246, 140, 70, 0.055) 1px, transparent 1px),
		linear-gradient(90deg, rgba(246, 140, 70, 0.055) 1px, transparent 1px);
	background-size: 48px 48px;
	-webkit-mask-image: radial-gradient(80% 75% at 50% 45%, #000 25%, transparent 100%);
	mask-image: radial-gradient(80% 75% at 50% 45%, #000 25%, transparent 100%);
}
/* treść sekcji nad dekoracją */
.iab-has-grid > :not(.iab-bgfx) { position: relative; z-index: 1; }
.iab-bgfx { position: absolute; inset: 0; overflow: hidden; pointer-events: none; border-radius: inherit; z-index: 0; }
.iab-bgfx__cell { position: absolute; width: 47px; height: 47px; background: rgba(242, 106, 27, 0.09); box-shadow: inset 0 0 0 1px rgba(242, 106, 27, 0.14); opacity: 0; animation: iab-cell 4s var(--ease) infinite; }
@keyframes iab-cell { 0%, 100% { opacity: 0; } 50% { opacity: 1; } }
.iab-bgfx__beam { position: absolute; left: -200px; width: 180px; height: 1px; background: linear-gradient(90deg, transparent, rgba(242, 106, 27, 0.55), transparent); animation: iab-beam-x 8s linear infinite; }
@keyframes iab-beam-x { to { transform: translateX(var(--travel-x, 120vw)); } }
.iab-bgfx__beam--v { left: 0; top: -200px; width: 1px; height: 180px; background: linear-gradient(180deg, transparent, rgba(242, 106, 27, 0.45), transparent); animation: iab-beam-y 9s linear infinite; }
@keyframes iab-beam-y { to { transform: translateY(var(--travel-y, 120vh)); } }
/* Ciemne panele-karty: siatka delikatniejsza na małych powierzchniach */
.iab-testi__card.iab-has-grid::before { background-size: 40px 40px; opacity: 0.7; }
@media (prefers-reduced-motion: reduce) { .iab-bgfx { display: none; } }

/* ── 41. HEADER CTA — micro-interaction premium (strzałka wsuwana + lift) ──
   Strzałka rozwija się przez max-width (zero skoku layoutu). Uzupełnia
   istniejący white-fill + shine (effects.css). prefers-reduced-motion respektowane. */
.iab-header__cta { position: relative; }
.iab-header__cta > span { display: inline-flex; align-items: center; }
.iab-header__cta > span::after {
	content: "\2192"; /* → */
	display: inline-block;
	max-width: 0;
	margin-left: 0;
	opacity: 0;
	overflow: hidden;
	white-space: nowrap;
	transform: translateX(-3px);
	transition: max-width var(--dur-base, .28s) var(--ease, ease), opacity var(--dur-fast, .18s) var(--ease, ease),
		margin-left var(--dur-base, .28s) var(--ease, ease), transform var(--dur-base, .28s) var(--ease, ease);
}
.iab-header__cta:hover > span::after,
.iab-header__cta:focus-visible > span::after {
	max-width: 1.4em;
	margin-left: 0.4em;
	opacity: 1;
	transform: translateX(0);
}
.iab-header__cta:hover { transform: translateY(-1px); box-shadow: 0 10px 22px -12px rgba(242, 106, 27, 0.55); }
@media (prefers-reduced-motion: reduce) {
	.iab-header__cta > span::after { transition: none; }
}

/* ── 42. reCAPTCHA v3 — badge ukryty (notka w stopce wg wymogu Google) ──── */
.grecaptcha-badge { visibility: hidden !important; }
.iab-footer__recaptcha { margin: var(--sp-3) 0 0; font-size: 12px; line-height: 1.5; color: var(--c-muted); }
.iab-footer__recaptcha a { color: var(--c-ink-soft); text-decoration: underline; text-underline-offset: 2px; }
.iab-footer__recaptcha a:hover { color: var(--c-brand); }

/* ── 43. MOBILE: pary przycisków CTA na 100% szerokości (bez brzydkiego zawijania 2-liniowego) ── */
@media (max-width: 600px) {
	.iab-flow-cta { flex-direction: column; align-items: stretch; }
	.iab-flow-cta > .iab-btn { width: 100%; }
	.iab-flow-cta > .iab-textlink { text-align: center; }
}

/* ── 44. HERO: mniejszy obraz na mobile (LCP) — osobny --iab-bg-m z hero.php ── */
@media (max-width: 600px) {
	.iab-hero-slider__media { background-image: var(--iab-bg-m, var(--iab-bg)); }
}
