/* =====================================================
   MW AUTO KOSMETYKA V2
   ===================================================== */

:root {
    /* === MARKA === czerwień MW + czernie nośne */
    --brand-red:            #e21a22;
    --brand-red-dark:       #b8141b;   /* hover przycisku */
    --brand-red-light:      #ff4d54;   /* akcent na ciemnym tle */
    --brand-red-deep:       #7a1218;   /* głęboka czerwień — obrysy, tła */
    --brand-red-deepest:    #5c0f13;

    /* === WHATSAPP === barwy serwisu; przycisk kontaktu przez WhatsApp musi być
       rozpoznawalny (zielony), a nie w czerwieni marki */
    --wa-green:             #25D366;
    --wa-green-dark:        #1da851;

    /* === MW CLUB === złoto programu lojalnościowego (używane też na stronie głównej,
       dlatego zmienne żyją w :root, a nie tylko w .club-page) */
    --club-gold:            #d4af37;
    --club-gold-light:      #f0d878;
    --club-gold-dim:        rgba(212,175,55,0.22);

    /* === POWIERZCHNIE === */
    --surface-black:        #0d0d0f;
    --surface-black-deep:   #050505;
    --surface-light:        #f5f5f7;   /* jasne sekcje */
    --surface-light-dim:    #b8b8bc;
    --ink-on-light:         #111114;   /* tekst na jasnym tle */
    --bg-dark:              #0a0a0c;
    --bg-darker:            #050505;

    /* === POŁYSK === sygnatura „mokrego lakieru” */
    --gloss-highlight:      rgba(255,255,255,0.30);
    --gloss-soft:           rgba(255,255,255,0.13);
    --gloss-edge:           rgba(255,255,255,0.16);
    --gloss-sweep-time:     7s;

    /* === TYPOGRAFIA === */
    --font-display: 'Oswald', 'Arial Narrow', sans-serif;
    --font-body:    'Inter', system-ui, sans-serif;

    /* === RESZTA === */
    --radius-lg: 4px;   /* ostre krawędzie — lakier, nie papier */
    --radius-md: 2px;
    --shadow-deep: 0 18px 48px rgba(0,0,0,0.55);
    --transition: 0.3s ease;
}

* { box-sizing: border-box; }

/* Zabezpieczenie przed poziomym scrollem.
   MUSI być `clip`, nie `hidden`: `overflow-x: hidden` czyni z przodka kontener
   przewijania, co ŁAMIE `position: sticky` u potomków — przez to topbar przestawał
   się przyklejać i nie wracał przy scrollu w górę. `clip` przycina bez tworzenia
   kontenera, więc sticky działa. Przeglądarki bez wsparcia po prostu pomijają
   deklarację (brak przycięcia, ale sticky nadal sprawne). */
html, body { overflow-x: clip; }

body {
    font-family: var(--font-body);
    background: var(--bg-darker);
    color: #fff;
    margin: 0;
}

a { text-decoration: none; }

/* =====================================================
   PRIMITIVES
   ===================================================== */

/* ---------------------------------------------------------------
   POŁYSK — sygnatura marki („mokry lakier”).
   Zastępuje odziedziczoną po 18w warstwę druku (ziarno papieru,
   raster halftone, sepia, przechylone ramki). Wszystko czystym CSS.
   --------------------------------------------------------------- */

/* SMUGA POŁYSKU — pasmo światła przesuwające się po kadrze.
   Wymaga rodzica z position:relative + overflow:hidden (np. .hero). */
.gloss-sweep {
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    overflow: hidden;
}
.gloss-sweep::before {
    content: "";
    position: absolute;
    top: -40%;
    bottom: -40%;
    width: 38%;
    left: -45%;
    background: linear-gradient(100deg,
        rgba(255,255,255,0) 0%,
        var(--gloss-soft) 42%,
        var(--gloss-highlight) 50%,
        var(--gloss-soft) 58%,
        rgba(255,255,255,0) 100%);
    transform: skewX(-14deg);
    animation: gloss-sweep var(--gloss-sweep-time) ease-in-out infinite;
}
@keyframes gloss-sweep {
    0%   { left: -45%; }
    55%  { left: 115%; }
    100% { left: 115%; }
}

/* KRAWĘDŹ LAKIERU — hairline zamykający sekcję; zastępuje ziarno
   jako element rytmizujący stronę. */
.gloss-line {
    position: relative;
    height: 1px;
    border: 0;
    margin: 0;
    background: linear-gradient(90deg,
        rgba(226,26,34,0) 0%,
        rgba(226,26,34,0.85) 22%,
        rgba(255,255,255,0.7) 50%,
        rgba(226,26,34,0.85) 78%,
        rgba(226,26,34,0) 100%);
}
.gloss-line--edge {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 5;
}

/* ZDJĘCIE — filmowy kontrast, bez tonowania; rozjaśnia się na hover */
.media-image {
    filter: contrast(1.1) saturate(0.96);
    transition: filter 0.5s ease;
}
.media-image:hover { filter: contrast(1.02) saturate(1.04); }

/* RAMKA ZDJĘCIA — cienka krawędź + refleks u góry zamiast grubego passe-partout */
.photo-frame {
    position: relative;
    padding: 0;
    background: var(--surface-black);
    border: 1px solid rgba(255,255,255,0.10);
    box-shadow: var(--shadow-deep);
    overflow: hidden;
}
.photo-frame::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(160deg, var(--gloss-edge) 0%, rgba(255,255,255,0) 34%);
}
.photo-frame img { display: block; width: 100%; height: auto; }

@media (prefers-reduced-motion: reduce) {
    .gloss-sweep::before { animation: none; left: 62%; opacity: 0.45; }
}


/* CHAPTER MARK */
.eyebrow {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--brand-red);
    display: inline-flex;
    align-items: center;
    gap: 12px;
}
.eyebrow::before {
    content: "";
    width: 36px;
    height: 1px;
    background: var(--brand-red);
}
.eyebrow .num {
    font-size: 32px;
    line-height: 1;
    color: var(--brand-red);
    font-weight: 500;
}

.eyebrow--center {
    justify-content: center;
}
.eyebrow--center::after {
    content: "";
    width: 36px;
    height: 1px;
    background: var(--brand-red);
}


.kicker {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--brand-red-deep);
    font-size: 13px;
    margin-bottom: 18px;
}
.kicker::before, .kicker::after {
    content: "";
    width: 28px;
    height: 1px;
    background: var(--brand-red-deep);
}
.kicker--gold { color: var(--brand-red); }
.kicker--gold::before, .kicker--gold::after { background: var(--brand-red); }

/* =====================================================
   TOPBAR
   ===================================================== */
.topbar {
    position: sticky;
    top: 0;
    z-index: 100;
    background: rgba(5, 5, 5, 0.92);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(226, 26, 34,0.18);
    padding: 14px 0;
    transition: transform 0.35s ease;
    will-change: transform;
}
/* Smart-hide: JS toggles this on scroll-down, removes on scroll-up (see topbar script in master). */
.topbar--hidden { transform: translateY(-100%); }
.topbar .brand {
    display: flex;
    align-items: center;
    gap: 14px;
}
.topbar .brand-logo {
    width: 46px;
    height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.topbar .brand-logo img { max-width: 100%; max-height: 100%; }
.topbar .brand-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    letter-spacing: 0.14em;
    color: var(--brand-red);
    text-transform: uppercase;
    line-height: 1;
}
.topbar .brand-subtitle {
    font-family: var(--font-display);
    font-size: 14px;
    color: var(--brand-red-light);
    margin-top: 2px;
}
.topbar .nav-link,
.topbar a.nav-link {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 14px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.85);
    text-decoration: none;
    padding: 10px 14px;
    transition: var(--transition);
    position: relative;
    background: transparent;
    border: none;
}
.topbar a.nav-link:hover,
.topbar .nav-link:hover { color: var(--brand-red); }
.topbar .nav-link.active { color: var(--brand-red); }

/* Mobile menu */
#v2MobileMenu .nav-link {
    display: block;
    width: 100%;
    padding: 14px 4px;
    font-size: 15px;
    border-bottom: 1px solid rgba(226, 26, 34,0.10);
}
#v2MobileMenu .nav-link:last-of-type { border-bottom: none; }
#v2MobileMenu .phone-pill { width: 100%; }
/* Mobilne menu: rozwijana grupa "Usługi" (details) zamiast płaskiej listy 7 usług */
#v2MobileMenu .mobile-submenu { border-bottom: 1px solid rgba(226, 26, 34,0.10); }
#v2MobileMenu .mobile-submenu > summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    list-style: none;
    border-bottom: none;
}
#v2MobileMenu .mobile-submenu > summary::-webkit-details-marker { display: none; }
#v2MobileMenu .mobile-submenu > summary i { transition: transform 0.2s ease; flex: none; }
#v2MobileMenu .mobile-submenu[open] > summary i { transform: rotate(180deg); }
#v2MobileMenu .mobile-submenu__items { display: flex; flex-direction: column; padding-left: 16px; }
#v2MobileMenu .mobile-submenu__items .nav-link {
    font-size: 14px;
    opacity: 0.85;
    padding-top: 11px;
    padding-bottom: 11px;
    border-bottom: 1px solid rgba(226, 26, 34,0.06);
}
#v2MobileMenu .mobile-submenu__items .nav-link:last-child { border-bottom: none; }

.topbar .dropdown-menu {
    background: var(--bg-dark);
    border: 1px solid rgba(226, 26, 34,0.2);
    border-radius: 6px;
    padding: 8px 0;
    min-width: 280px;
    box-shadow: 0 15px 40px rgba(0,0,0,0.4);
}
.topbar .dropdown-item {
    color: rgba(255,255,255,0.8);
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 13px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 10px 18px;
}
.topbar .dropdown-item:hover {
    background: rgba(226, 26, 34,0.1);
    color: var(--brand-red);
}

.phone-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--brand-red);
    color: var(--bg-darker);
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 10px 18px;
    border-radius: 999px;
    text-decoration: none;
    font-size: 14px;
    transition: var(--transition);
}
.phone-pill:hover { background: #fff; color: var(--bg-dark); }

/* =====================================================
   BUTTONS
   ===================================================== */
.btn-gloss,
.btn-ghost,
.btn-solid-dark {
    position: relative;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-display);
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    font-size: 14px;
    padding: 16px 32px;
    border-radius: var(--radius-md);
    text-decoration: none;
    cursor: pointer;
    transition: background var(--transition), color var(--transition), border-color var(--transition);
}

/* REFLEKS — pasmo światła przebiega po przycisku na hover/focus.
   ::after leży nad tłem, ale pod treścią (z-index na .btn-*__label nie jest
   potrzebny, bo tekst jest dzieckiem, a ::after ma opacity/blend bez tła). */
.btn-gloss::after,
.btn-ghost::after,
.btn-solid-dark::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 45%;
    left: -60%;
    background: linear-gradient(100deg, transparent, rgba(255,255,255,0.5), transparent);
    transform: skewX(-18deg);
    transition: left 0.55s cubic-bezier(0.22, 0.61, 0.36, 1);
    pointer-events: none;
}
.btn-gloss:hover::after,
.btn-gloss:focus-visible::after,
.btn-ghost:hover::after,
.btn-ghost:focus-visible::after,
.btn-solid-dark:hover::after,
.btn-solid-dark:focus-visible::after { left: 130%; }

@media (prefers-reduced-motion: reduce) {
    .btn-gloss::after,
    .btn-ghost::after,
    .btn-solid-dark::after { transition: none; display: none; }
}

/* PEŁNY — główne CTA */
.btn-gloss {
    background: linear-gradient(180deg, var(--brand-red) 0%, var(--brand-red-dark) 100%);
    color: #fff;
    border: 1px solid var(--brand-red);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 10px 26px rgba(226,26,34,0.22);
}
.btn-gloss:hover,
.btn-gloss:focus-visible {
    background: linear-gradient(180deg, #f22a32 0%, var(--brand-red) 100%);
    border-color: #f22a32;
    color: #fff;
}

/* OBRYS — CTA drugorzędne */
.btn-ghost {
    background: transparent;
    color: #fff;
    border: 1px solid rgba(255,255,255,0.42);
}
.btn-ghost:hover,
.btn-ghost:focus-visible {
    background: rgba(255,255,255,0.06);
    border-color: #fff;
    color: #fff;
}

/* CIEMNY — na jasnych sekcjach */
.btn-solid-dark {
    background: var(--surface-black);
    color: var(--surface-light);
    border: 1px solid var(--surface-black);
    padding: 14px 28px;
    font-size: 13px;
}
.btn-solid-dark:hover,
.btn-solid-dark:focus-visible {
    background: var(--brand-red);
    border-color: var(--brand-red);
    color: #fff;
}


/* Obrys na jasnym tle — biała ramka .btn-ghost byłaby niewidoczna */
.btn-ghost--on-light {
    color: var(--surface-black);
    border-color: rgba(17,17,20,0.28);
}
.btn-ghost--on-light:hover,
.btn-ghost--on-light:focus-visible {
    background: rgba(17,17,20,0.06);
    border-color: var(--surface-black);
    color: var(--surface-black);
}

/* =====================================================
   HERO (główny + per-usługa)
   ===================================================== */
.hero {
    position: relative;
    min-height: 92vh;
    overflow: hidden;
    isolation: isolate;
}
.hero--compact { min-height: 70vh; }

.hero__bg {
    position: absolute;
    inset: 0;
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    filter: contrast(1.1) saturate(0.9) brightness(0.5);
    z-index: 0;
}

/* Hero <img> (LCP candidate - priorytetyzowane przez Google przez fetchpriority='high') */
.hero__bg-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    filter: contrast(1.1) saturate(0.9) brightness(0.5);
    z-index: 0;
}
/* Przyciemnienie hero + miękki refleks w prawym górnym rogu (światło na masce auta).
   Radial MUSI być pierwszy — leży nad gradientem przyciemniającym. */
.hero__overlay {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(120% 85% at 78% 10%, rgba(255,255,255,0.14) 0%, rgba(255,255,255,0) 45%),
        linear-gradient(
            100deg,
            rgba(5, 5, 5, 0.92) 0%,
            rgba(5, 5, 5, 0.78) 35%,
            rgba(5, 5, 5, 0.42) 65%,
            rgba(5, 5, 5, 0.86) 100%
        );
    z-index: 1;
}
.hero__inner {
    position: relative;
    z-index: 5;
    min-height: inherit;
    display: flex;
    align-items: center;
    padding: 80px 0;
}
.hero__content { max-width: 680px; }
.hero__kicker { margin-bottom: 28px; }
.hero__title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(40px, 6.5vw, 78px);
    line-height: 0.98;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    color: #fff;
    margin: 0;
}
/* Akcent nagłówka — przejście bieli w czerwień, jak refleks schodzący po lakierze.
   Fallback: czysta czerwień dla przeglądarek bez background-clip:text. */
.hero__title .accent {
    color: var(--brand-red);
    display: block;
}
@supports (-webkit-background-clip: text) or (background-clip: text) {
    .hero__title .accent {
        color: transparent;
        background: linear-gradient(92deg, #fff 0%, #fff 28%, var(--brand-red-light) 52%, var(--brand-red) 78%);
        -webkit-background-clip: text;
        background-clip: text;
    }
}
.hero__title .city {
    font-family: var(--font-display);
    font-size: 0.55em;
    font-weight: 400;
    color: var(--brand-red-light);
    text-transform: none;
    letter-spacing: 0;
    display: block;
    margin-top: -4px;
    margin-left: 6px;
}
.hero__lead {
    font-size: 18px;
    line-height: 1.6;
    color: rgba(255,255,255,0.85);
    margin: 28px 0 40px;
    max-width: 560px;
}
.hero__note {
    font-size: 14px;
    line-height: 1.5;
    color: rgba(255,255,255,0.7);
    margin: -24px 0 40px;
    max-width: 560px;
}
.hero__note strong { color: var(--brand-red); font-weight: 600; }
.hero__cta { display: flex; gap: 14px; flex-wrap: wrap; }

/* Zdjęcie w hero — kadr w cienkiej ramce z refleksem (dawny polaroid) */
.hero__figure {
    position: relative;
    z-index: 5;
    display: none;
}
@media (min-width: 992px) {
    .hero__figure { display: block; max-width: 380px; margin-left: auto; }
}
.hero__figure img {
    display: block;
    width: 100%;
    height: 420px;
    object-fit: cover;
}
.hero__figure .caption {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 12px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.62);
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 14px;
}
.hero__figure .caption::before {
    content: "";
    width: 26px;
    height: 1px;
    background: var(--brand-red);
    flex: none;
}

/* Rząd przycisków CTA — kilka wyjść z sekcji obok siebie, zawijane na mobile */
.cta-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 14px;
    margin-top: 48px;
}

/* =====================================================
   SECTION SHELLS
   ===================================================== */
.section {
    position: relative;
    padding: 90px 0;
    overflow: hidden;
}
.section--cream {
    background: var(--surface-light);
    color: var(--ink-on-light);
}
.section--cream h2,
.section--cream h3 { color: var(--surface-black); }

.section--dark {
    background: linear-gradient(180deg, var(--bg-darker) 0%, var(--bg-dark) 60%, var(--bg-darker) 100%);
}

/* Górna krawędź ciemnej sekcji — hairline „światła na krawędzi lakieru”.
   Zastępuje ziarno papieru jako element rytmizujący stronę: pojawia się
   tylko tam, gdzie ciemna sekcja realnie się zaczyna. */
.section--dark::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    z-index: 3;
    background: linear-gradient(90deg,
        rgba(226,26,34,0) 0%,
        rgba(226,26,34,0.55) 26%,
        rgba(255,255,255,0.42) 50%,
        rgba(226,26,34,0.55) 74%,
        rgba(226,26,34,0) 100%);
    pointer-events: none;
}


.section__header {
    text-align: center;
    max-width: 760px;
    margin: 0 auto 60px;
}
.section__title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: clamp(30px, 4vw, 46px);
    text-transform: uppercase;
    line-height: 1.05;
    margin: 0 0 18px;
}
/* Akcent w tytule sekcji — dawniej pisanka o 35% mniejsza (relikt 18w).
   Teraz ta sama skala i krój co reszta nagłówka, wyróżniona wyłącznie kolorem. */
.section__title .accent {
    font-family: inherit;
    font-weight: inherit;
    font-size: inherit;
    text-transform: inherit;
    color: var(--brand-red);
    display: inline;
}
.section__title.text-light .accent { color: var(--brand-red); }
.section__lead {
    font-size: 17px;
    line-height: 1.65;
    opacity: 0.85;
}
.section--cream .section__lead { color: var(--ink-on-light); }

/* =====================================================
   TRUST STRIP — pas certyfikatów (kremowy)
   ===================================================== */
.trust-strip {
    position: relative;
    background: var(--surface-light);
    color: var(--ink-on-light);
    padding: 36px 0;
    border-top: 1px solid rgba(226,26,34,0.55);
    border-bottom: 1px solid rgba(226,26,34,0.55);
}
.trust-strip__title {
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    font-size: 13px;
    color: var(--ink-on-light);
    text-align: center;
    margin-bottom: 22px;
}
.trust-strip__items {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 18px 28px;
}
.cert-stamp {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-on-light);
    border: 2px solid var(--ink-on-light);
    background: rgba(255,255,255,0.25);
    padding: 10px 18px;
    font-size: 12px;
    border-radius: 4px;
    box-shadow: inset 0 0 0 1px rgba(17,17,20,0.3);
    transition: var(--transition);
}
.cert-stamp:hover {
    background: var(--brand-red-deep);
    color: var(--surface-light);
    border-color: var(--brand-red-deep);
    transform: translateY(-2px);
}
.cert-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: var(--transition);
}
.cert-logo img {
    display: block;
    height: 56px;
    width: auto;
}
.cert-logo:hover {
    transform: translateY(-2px);
}

/* =====================================================
   NUMBERED CARDS (Why us / Process / Threats)
   ===================================================== */
/* Refleks realizowany TŁEM karty, nie nakładką.
   Powód: ikona/numer (.numbered-card__num) celowo wystaje ponad górną krawędź
   (top:-22px). Nakładka wymagałaby overflow:hidden, które ucinałoby ten element.
   Tło nigdy nie wychodzi poza obrys i nie przycina dzieci. */
.numbered-card {
    position: relative;
    background-color: #fff;
    background-image: linear-gradient(100deg,
        rgba(226,26,34,0) 38%,
        rgba(226,26,34,0.09) 50%,
        rgba(226,26,34,0) 62%);
    background-repeat: no-repeat;
    background-size: 220% 100%;
    background-position: 168% 0;
    border: 1px solid var(--surface-light-dim);
    padding: 36px 28px 30px;
    border-radius: var(--radius-lg);
    box-shadow: 0 8px 24px rgba(17, 17, 20,0.08);
    height: 100%;
    transition: transform var(--transition), box-shadow var(--transition),
                border-color var(--transition),
                background-position 0.75s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.numbered-card:hover,
.numbered-card:focus-visible {
    transform: translateY(-4px);
    box-shadow: 0 16px 38px rgba(17, 17, 20,0.14);
    border-color: var(--brand-red-deep);
    background-position: -68% 0;
}
@media (prefers-reduced-motion: reduce) {
    .numbered-card { transition: box-shadow var(--transition), border-color var(--transition); }
    .numbered-card:hover { transform: none; background-position: 168% 0; }
}
.numbered-card__num {
    position: absolute;
    top: -22px;
    left: 24px;
    width: 56px;
    height: 56px;
    border-radius: var(--radius-md);
    background: linear-gradient(180deg, var(--brand-red) 0%, var(--brand-red-deep) 100%);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    letter-spacing: 0.05em;
    border: 1px solid rgba(255,255,255,0.18);
    box-shadow: 0 8px 18px rgba(226,26,34,0.28), inset 0 1px 0 rgba(255,255,255,0.3);
}
/* Wariant ciemny: warstwa refleksu (ruchoma) + warstwa bazowa (statyczna) */
.numbered-card--dark {
    background-color: transparent;
    background-image:
        linear-gradient(100deg,
            rgba(255,255,255,0) 38%,
            rgba(255,255,255,0.14) 50%,
            rgba(255,255,255,0) 62%),
        linear-gradient(165deg,
            rgba(255,255,255,0.075) 0%,
            rgba(255,255,255,0.022) 42%,
            rgba(255,255,255,0.012) 100%);
    background-repeat: no-repeat, no-repeat;
    background-size: 220% 100%, auto;
    background-position: 168% 0, 0 0;
    border: 1px solid rgba(226, 26, 34,0.22);
    color: #fff;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.08);
}
.numbered-card--dark:hover,
.numbered-card--dark:focus-visible {
    border-color: rgba(226,26,34,0.55);
    background-position: -68% 0, 0 0;
}
@media (prefers-reduced-motion: reduce) {
    .numbered-card--dark:hover { background-position: 168% 0, 0 0; }
}
.numbered-card--dark .numbered-card__num {
    background: var(--brand-red);
    color: var(--bg-darker);
    border-color: var(--bg-darker);
}
.numbered-card__title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--surface-black);
    margin: 14px 0 12px;
}
.numbered-card--dark .numbered-card__title { color: var(--brand-red); }
.numbered-card__text {
    color: var(--ink-on-light);
    line-height: 1.6;
    opacity: 0.9;
    font-size: 15px;
}
.numbered-card--dark .numbered-card__text {
    color: rgba(255,255,255,0.78);
}

/* =====================================================
   SCOPE LIST (Zakres usług — service subpage)
   ===================================================== */
.scope-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px 32px;
}
@media (max-width: 767px) {
    .scope-list { grid-template-columns: 1fr; }
}
.scope-list li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid rgba(17, 17, 20,0.1);
    color: var(--ink-on-light);
    font-size: 15px;
    line-height: 1.5;
}
.scope-list li i {
    color: var(--brand-red-deep);
    flex: 0 0 18px;
    margin-top: 3px;
    font-size: 18px;
}

.voucher-nominal { padding-top: 30px; }
.voucher-nominal__amount {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 48px;
    line-height: 1;
    color: var(--brand-red);
}
.voucher-nominal__amount span {
    font-size: 20px;
    margin-left: 5px;
    font-weight: 600;
}
.voucher-nominal__label {
    font-family: var(--font-display);
    font-size: 13px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.6);
    margin: 8px 0 14px;
}

.voucher-rules-wrapper { max-width: 920px; margin: 0 auto; }
.voucher-rule-highlight {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 22px 24px;
    border-radius: 10px;
    background: rgba(226, 26, 34,0.08);
    border: 1px solid rgba(226, 26, 34,0.35);
    color: rgba(255,255,255,0.88);
    font-size: 15px;
    line-height: 1.6;
    margin-bottom: 26px;
}
.voucher-rule-highlight i {
    color: var(--brand-red);
    font-size: 28px;
    line-height: 1;
    flex-shrink: 0;
    margin-top: 2px;
}
.voucher-rule-highlight strong {
    display: block;
    color: var(--brand-red);
    font-weight: 800;
    margin-bottom: 4px;
    font-size: 16px;
}
.voucher-rules-list {
    list-style: none;
    counter-reset: voucher-rule;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 12px;
}
.voucher-rules-list li {
    counter-increment: voucher-rule;
    position: relative;
    padding: 18px 22px 18px 64px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(226, 26, 34,0.14);
    border-radius: 8px;
    color: rgba(255,255,255,0.78);
    font-size: 14px;
    line-height: 1.65;
    transition: var(--transition);
}
.voucher-rules-list li:hover {
    border-color: rgba(226, 26, 34,0.28);
    transform: translateX(3px);
}
.voucher-rules-list li::before {
    content: counter(voucher-rule);
    position: absolute;
    left: 18px;
    top: 50%;
    transform: translateY(-50%);
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(226, 26, 34,0.1);
    border: 1px solid rgba(226, 26, 34,0.25);
    color: var(--brand-red);
    font-weight: 800;
    font-size: 13px;
}
.voucher-rules-list li strong { color: var(--brand-red); font-weight: 800; }

@media (max-width: 768px) {
    .voucher-rule-highlight { gap: 12px; padding: 18px; }
    .voucher-rules-list li { padding: 16px 16px 16px 56px; font-size: 13.5px; }
    .voucher-rules-list li::before { left: 14px; width: 28px; height: 28px; font-size: 12px; }
}

.signature {
    text-align: center;
    margin-top: 60px;
    font-family: var(--font-display);
    font-size: 26px;
    color: var(--brand-red);
}
.section--dark .signature { color: var(--brand-red); }

/* =====================================================
   PACKAGE CARDS (Pakiety usług)
   ===================================================== */
.package-card {
    position: relative;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(226, 26, 34,0.18);
    padding: 36px 28px;
    border-radius: 6px;
    height: 100%;
    color: #fff;
    transition: var(--transition);
    display: flex;
    flex-direction: column;
}
.package-card:hover {
    border-color: var(--brand-red);
    transform: translateY(-6px);
    box-shadow: 0 18px 40px rgba(0,0,0,0.4);
}
.package-card--featured {
    background: linear-gradient(180deg, rgba(226, 26, 34,0.08) 0%, rgba(226, 26, 34,0.02) 100%);
    border-color: var(--brand-red);
    transform: scale(1.03);
}
.package-card--featured::before {
    content: "Polecane";
    position: absolute;
    top: -14px;
    right: 24px;
    background: var(--brand-red);
    color: var(--bg-darker);
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    padding: 6px 14px;
    border-radius: var(--radius-md);
}

.package-card__head {
    border-bottom: 1px solid rgba(226, 26, 34,0.18);
    padding-bottom: 20px;
    margin-bottom: 22px;
}
.package-card__title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--brand-red);
    margin: 0 0 6px;
}
.package-card__subtitle {
    font-family: var(--font-display);
    font-size: 16px;
    color: var(--brand-red-light);
}
.package-card__lead {
    color: rgba(255,255,255,0.85);
    font-size: 15px;
    line-height: 1.6;
    margin-bottom: 18px;
}
.package-card__subhead {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--brand-red-light);
    margin: 0 0 10px;
}
.package-card__list {
    list-style: none;
    padding: 0;
    margin: 0 0 22px;
}
.package-card__list li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 6px 0;
    color: rgba(255,255,255,0.85);
    font-size: 14px;
    line-height: 1.5;
}
.package-card__list li i {
    color: var(--brand-red);
    flex: 0 0 16px;
    margin-top: 3px;
}

.package-card__effects {
    background: rgba(226, 26, 34,0.05);
    border-left: 3px solid var(--brand-red);
    padding: 14px 16px;
    margin-bottom: 24px;
}
.package-card__effects-title {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--brand-red);
    margin-bottom: 4px;
}
.package-card__effects-text {
    color: rgba(255,255,255,0.8);
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
}

.package-card__footer {
    margin-top: auto;
    padding-top: 18px;
    border-top: 1px solid rgba(226, 26, 34,0.18);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
}
.package-card__time {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--brand-red-light);
}
.package-card__btn {
    padding: 10px 18px;
    font-size: 12px;
    letter-spacing: 0.16em;
}

/* =====================================================
   PROCESS STEPS (numerowana oś czasu)
   ===================================================== */
.process-steps {
    counter-reset: step;
}
.process-step {
    position: relative;
    padding-left: 80px;
    padding-bottom: 36px;
    counter-increment: step;
}
.process-step::before {
    content: counter(step, decimal-leading-zero);
    position: absolute;
    top: 0;
    left: 0;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 44px;
    line-height: 1;
    color: var(--brand-red);
    width: 60px;
}
.process-step:not(:last-child)::after {
    content: "";
    position: absolute;
    left: 28px;
    top: 56px;
    bottom: 12px;
    width: 1px;
    background: rgba(226, 26, 34,0.3);
}
.process-step h4 {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 20px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin: 0 0 8px;
    color: #fff;
}
.process-step p {
    color: rgba(255,255,255,0.8);
    line-height: 1.6;
    margin: 0;
}
.section--cream .process-step h4 { color: var(--surface-black); }
.section--cream .process-step p { color: var(--ink-on-light); }
.section--cream .process-step::after { background: rgba(17, 17, 20,0.2); }

/* =====================================================
   SOON BADGE (np. MW Club — "Wkrótce")
   ===================================================== */
.badge-soon {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 11px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--bg-darker);
    background: var(--brand-red);
    padding: 7px 18px;
    border-radius: 999px;
    box-shadow: 0 6px 14px rgba(226,26,34,0.35);
    margin-bottom: 18px;
}

/* =====================================================
   GALLERY GRID (Realizacje)
   ===================================================== */
/* auto-FILL, nie auto-fit: auto-fit zwija puste kolumny, więc kategoria z jednym
   zdjęciem rozciągała kafelek na całą szerokość kontenera (kadr ~1140px). */
.gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: 18px;
}
/* Wspólny rytm kadrów. Materiał ma proporcje od 0,46 (pionowe z telefonu) po 1,25
   (poziome) — bez wymuszonej proporcji każdy kafelek dyktuje własną wysokość
   i siatka się rozjeżdża. Pełny kadr zawsze dostępny w lightboxie. */
.gallery-item {
    position: relative;
    overflow: hidden;
    cursor: pointer;
    aspect-ratio: 4 / 5;
}
.gallery-item > a { display: block; width: 100%; height: 100%; }
.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* =====================================================
   CONTACT SECTION
   ===================================================== */
.contact-section {
    background: linear-gradient(180deg, var(--bg-darker) 0%, var(--bg-dark) 60%, var(--bg-darker) 100%);
    color: #fff;
    padding: 100px 0;
}
.contact-card {
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(226, 26, 34,0.18);
    border-radius: 8px;
    padding: 32px;
    height: 100%;
    transition: var(--transition);
}
.contact-card:hover {
    border-color: var(--brand-red);
    transform: translateY(-4px);
}
.contact-card h3 {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 18px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--brand-red);
    margin: 0 0 18px;
}
.contact-card p { color: rgba(255,255,255,0.85); line-height: 1.6; margin-bottom: 8px; }
.contact-card strong { color: var(--brand-red-light); }
.contact-card a {
    color: var(--brand-red);
    transition: var(--transition);
}
.contact-card a:hover { color: #fff; }
.contact-card a.btn-gloss,
.contact-card a.btn-gloss:hover { color: var(--bg-darker); }
.contact-card iframe {
    border-radius: 6px;
    width: 100%;
    border: 0;
    min-height: 220px;
}


/* =====================================================
   REALIZACJE — podział na rodzaje prac
   ===================================================== */
.gallery-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin: 0 0 56px;
}
.gallery-nav__link {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 13px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--ink-on-light);
    border: 1px solid rgba(17,17,20,0.18);
    border-radius: var(--radius-md);
    padding: 9px 16px;
    transition: var(--transition);
}
.gallery-nav__link:hover,
.gallery-nav__link:focus-visible {
    background: var(--brand-red);
    border-color: var(--brand-red);
    color: #fff;
}

.gallery-cat { scroll-margin-top: 90px; }
.gallery-cat + .gallery-cat { margin-top: 72px; padding-top: 56px; border-top: 1px solid rgba(17,17,20,0.12); }
.gallery-cat__head { max-width: 62ch; margin-bottom: 28px; }
.gallery-cat__title {
    font-family: var(--font-display);
    font-weight: 700;
    text-transform: uppercase;
    font-size: clamp(22px, 2.4vw, 30px);
    margin: 0 0 10px;
    color: var(--surface-black);
}
.gallery-cat__lead { margin: 0 0 12px; line-height: 1.6; color: var(--ink-on-light); opacity: 0.9; }
.gallery-cat__more {
    font-family: var(--font-display);
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-size: 13px;
    color: var(--brand-red);
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.gallery-cat__more:hover { color: var(--brand-red-dark); }

/* WIDEO z pracy — bez dźwięku, zapętlone; poster niesie pierwszą klatkę */
.gallery-video { margin: 0 0 28px; max-width: 340px; }
.gallery-video__el {
    display: block;
    width: 100%;
    height: auto;
    max-height: 68vh;          /* nagranie nigdy nie przerasta ekranu */
    object-fit: contain;
    border: 1px solid rgba(17,17,20,0.14);
    border-radius: var(--radius-lg);
    background: #000;
}
.gallery-video__caption {
    margin-top: 10px;
    font-size: 13px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-on-light);
    opacity: 0.7;
}


/* Rząd materiału wyróżnionego: suwak przed/po i nagranie stoją obok siebie
   ze WSPÓLNĄ wysokością — szerokość wynika z proporcji pliku, więc pionowy film
   z telefonu nie przerasta sąsiada ani ekranu. */
.media-row {
    /* Wymiarujemy SZEROKOŚCIĄ, nie wysokością: suwak (0,564) i nagranie (0,563)
       mają praktycznie tę samą proporcję, więc przy wspólnej szerokości stoją
       w równym rzędzie, a wysokość nigdy nie ucieka poza ekran. */
    --media-w: clamp(240px, 32vw, 370px);
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 22px;
    margin-bottom: 32px;
}
.media-row--center { justify-content: center; }
.media-row > .ba,
.media-row > .gallery-video {
    margin: 0;
    max-width: none;
    width: var(--media-w);
    flex: 0 0 auto;
}
.media-row .ba__frame {
    width: 100%;
    height: auto;
    aspect-ratio: var(--ba-ratio, 4 / 5);
}
.media-row .gallery-video__el {
    width: 100%;
    height: auto;
    max-height: none;
}
@media (max-width: 575.98px) {
    .media-row { --media-w: 100%; }
}

/* =====================================================
   SUWAK PRZED / PO
   ===================================================== */
.ba { margin: 0 auto 28px; max-width: 560px; }
.ba__frame {
    position: relative;
    aspect-ratio: var(--ba-ratio, 620 / 954);
    overflow: hidden;
    border-radius: var(--radius-lg);
    border: 1px solid rgba(17,17,20,0.14);
    background: #000;
    touch-action: pan-y;               /* pion zostaje przy stronie — poziom obsługujemy sami */
    user-select: none;
}
.ba__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
/* Warstwa "po" przycinana od lewej do pozycji uchwytu (--ba-pos ustawia JS) */
.ba__after-clip {
    position: absolute;
    inset: 0;
    clip-path: inset(0 0 0 var(--ba-pos, 50%));
}
.ba__badge {
    position: absolute;
    top: 12px;
    z-index: 4;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 12px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    padding: 6px 12px;
    border-radius: var(--radius-md);
    background: rgba(0,0,0,0.62);
    border: 1px solid rgba(255,255,255,0.22);
    color: #fff;
}
.ba__badge--before { left: 12px; }
.ba__badge--after  { right: 12px; background: var(--brand-red); border-color: var(--brand-red); }

.ba__handle {
    position: absolute;
    top: 0;
    bottom: 0;
    left: var(--ba-pos, 50%);
    width: 2px;
    z-index: 6;
    transform: translateX(-1px);
    background: linear-gradient(180deg, rgba(255,255,255,0.25), #fff 18%, #fff 82%, rgba(255,255,255,0.25));
}
.ba__grip {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: var(--brand-red);
    border: 2px solid #fff;
    box-shadow: 0 6px 20px rgba(0,0,0,0.5);
    cursor: ew-resize;
    display: grid;
    place-items: center;
    padding: 0;
}
.ba__grip:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.ba__grip-arrows {
    width: 20px;
    height: 10px;
    background:
        linear-gradient(45deg, transparent 46%, #fff 46%, #fff 54%, transparent 54%) left / 50% 100% no-repeat,
        linear-gradient(-45deg, transparent 46%, #fff 46%, #fff 54%, transparent 54%) right / 50% 100% no-repeat;
}
.ba__caption {
    margin-top: 10px;
    font-size: 13px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-on-light);
    opacity: 0.7;
}
/* Bez JS: pokazujemy kadr "po" w całości (klasa zdejmowana przez skrypt) */
.ba:not([data-ba-ready]) .ba__after-clip { clip-path: none; }
.ba:not([data-ba-ready]) .ba__handle { display: none; }

/* =====================================================
   FOOTER
   ===================================================== */
.site-footer {
    background: linear-gradient(180deg, var(--bg-dark), var(--bg-darker));
    padding: 80px 0 30px;
    border-top: 1px solid rgba(226,26,34,0.45);
    color: rgba(255,255,255,0.7);
}
.site-footer .footer-grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr;
    gap: 40px;
}
.site-footer h4 {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 14px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--brand-red);
    margin: 0 0 20px;
}
.site-footer .brand-block {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 18px;
}
.site-footer .brand-block .brand-logo {
    width: 56px;
    height: 56px;
    display: flex; align-items: center; justify-content: center;
}
.site-footer .brand-block .brand-logo img { max-width: 100%; max-height: 100%; }
.site-footer .brand-block .brand-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    letter-spacing: 0.14em;
    color: var(--brand-red);
    text-transform: uppercase;
    line-height: 1;
}
.site-footer .brand-block .brand-subtitle {
    font-family: var(--font-display);
    font-size: 14px;
    color: var(--brand-red-light);
    margin-top: 2px;
}
.site-footer p { font-size: 14px; line-height: 1.6; }
.site-footer p a { color: rgba(255,255,255,0.75); transition: var(--transition); }
.site-footer p a:hover { color: var(--brand-red); }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer ul li { padding: 4px 0; }
.site-footer ul li a { color: rgba(255,255,255,0.75); font-size: 14px; transition: var(--transition); }
.site-footer ul li a:hover { color: var(--brand-red); }

.site-footer .socials {
    display: flex;
    gap: 12px;
    margin-top: 18px;
}
.site-footer .socials a {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: rgba(226, 26, 34,0.08);
    border: 1px solid rgba(226, 26, 34,0.25);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brand-red);
    font-size: 18px;
    transition: var(--transition);
}
.site-footer .socials a:hover {
    background: var(--brand-red);
    color: var(--bg-darker);
    transform: translateY(-3px);
}

.footer-bottom {
    margin-top: 60px;
    padding-top: 24px;
    border-top: 1px solid rgba(226, 26, 34,0.18);
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 13px;
    color: rgba(255,255,255,0.55);
    flex-wrap: wrap;
    gap: 12px;
}
.footer-bottom .made-in {
    font-family: var(--font-display);
    color: var(--brand-red-light);
    font-size: 16px;
}

/* =====================================================
   RELATED SERVICES — kafle na dole stron usług
   ===================================================== */
.related-services { padding-top: 80px; padding-bottom: 100px; }

.related-card {
    position: relative;
    display: flex;
    flex-direction: column;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(226, 26, 34,0.18);
    border-radius: 6px;
    padding: 36px 28px 28px;
    height: 100%;
    text-decoration: none;
    color: #fff;
    transition: var(--transition);
    overflow: hidden;
}
.related-card::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(61,110,117,0) 0%, rgba(226, 26, 34,0.05) 100%);
    opacity: 0;
    transition: var(--transition);
    pointer-events: none;
}
.related-card:hover {
    transform: translateY(-6px);
    border-color: var(--brand-red);
    box-shadow: 0 18px 38px rgba(0,0,0,0.4);
    color: #fff;
}
.related-card:hover::after { opacity: 1; }
.related-card:hover .related-card__cta { color: #fff; }

.related-card__chapter {
    position: absolute;
    top: 16px;
    right: 22px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 32px;
    line-height: 1;
    color: var(--brand-red);
    opacity: 0.4;
    transition: var(--transition);
}
.related-card:hover .related-card__chapter { opacity: 1; }

.related-card__icon {
    color: var(--brand-red-light);
    font-size: 38px;
    margin-bottom: 18px;
    transition: var(--transition);
}
.related-card:hover .related-card__icon { color: var(--brand-red); }

.related-card__title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 22px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--brand-red);
    margin: 0 0 12px;
}

.related-card__text {
    color: rgba(255,255,255,0.78);
    font-size: 14px;
    line-height: 1.55;
    margin: 0 0 22px;
    flex: 1;
}

.related-card__cta {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--brand-red-light);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: auto;
    transition: var(--transition);
}

/* =====================================================
   BREADCRUMBS (retro signage)
   ===================================================== */
.v2-breadcrumbs {
    background: var(--bg-dark);
    border-bottom: 1px solid rgba(226, 26, 34,0.18);
    padding: 14px 0;
    font-family: var(--font-display);
}
.v2-breadcrumbs ol {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}
.v2-breadcrumbs li {
    font-size: 12px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.6);
    font-weight: 500;
}
.v2-breadcrumbs li a {
    color: var(--brand-red-light);
    text-decoration: none;
    transition: var(--transition);
}
.v2-breadcrumbs li a:hover {
    color: var(--brand-red);
}
.v2-breadcrumbs li[aria-current="page"] {
    color: var(--brand-red);
    font-weight: 600;
}
.v2-breadcrumbs li.sep {
    color: var(--brand-red);
    opacity: 0.6;
    letter-spacing: 0;
    font-size: 10px;
}

/* =====================================================
   STICKY CTA (floating WhatsApp + mobile bottom bar)
   ===================================================== */

/* Desktop: pulsujacy WhatsApp FAB */
.sticky-cta-fab {
    position: fixed;
    right: 24px;
    bottom: 24px;
    z-index: 90;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--wa-green);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 32px;
    box-shadow: 0 8px 24px rgba(37, 211, 102,0.40),
                0 2px 8px rgba(0,0,0,0.2);
    text-decoration: none;
    transition: var(--transition);
    animation: stickyCtaPulse 2.4s ease-in-out infinite;
}
.sticky-cta-fab:hover {
    transform: scale(1.1);
    background: var(--wa-green-dark);
    box-shadow: 0 12px 32px rgba(37, 211, 102,0.55),
                0 4px 12px rgba(0,0,0,0.3);
    color: #fff;
    animation: none;
}

@keyframes stickyCtaPulse {
    0%, 100% { box-shadow: 0 8px 24px rgba(37, 211, 102,0.40), 0 2px 8px rgba(0,0,0,0.2), 0 0 0 0 rgba(37, 211, 102,0.5); }
    50%      { box-shadow: 0 8px 24px rgba(37, 211, 102,0.40), 0 2px 8px rgba(0,0,0,0.2), 0 0 0 18px rgba(37, 211, 102,0); }
}

/* Mobile: bottom bar 2-column */
.sticky-cta-mobile {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 90;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    /* Bezpieczny margines pod belką gestów iPhone'a — bez tego dolny rząd
       przycisków wchodzi pod systemowy pasek i klika się na ślepo. */
    padding-bottom: env(safe-area-inset-bottom, 0);
    background: rgba(8, 8, 10, 0.97);
    backdrop-filter: blur(10px);
    border-top: 1px solid rgba(255,255,255,0.10);
    box-shadow: 0 -10px 30px rgba(0,0,0,0.5);
}

/* Wszystkie trzy segmenty mają IDENTYCZNĄ budowę: kółko z ikoną + podpis.
   Wcześniej każdy miał własne tło (dwa odcienie czerni + pełna zieleń), więc pasek
   czytał się jak trzy niepowiązane guziki. Teraz barwa serwisu siedzi wyłącznie
   w ikonie i jej obwódce — pasek jest spójny, a WhatsApp nadal rozpoznawalnie zielony. */
.sticky-cta-mobile__btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 9px 4px 10px;
    background: none;
    border: 0;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11px;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.92);
    text-decoration: none;
    white-space: nowrap;
    transition: var(--transition);
    -webkit-tap-highlight-color: transparent;
}
.sticky-cta-mobile__btn + .sticky-cta-mobile__btn {
    box-shadow: inset 1px 0 0 rgba(255,255,255,0.07);
}
.sticky-cta-mobile__btn i {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    font-size: 19px;
    /* Barwa segmentu wstrzykiwana zmienną — jedna reguła kształtu dla wszystkich. */
    color: var(--cta-accent, #fff);
    background: color-mix(in srgb, var(--cta-accent, #fff) 16%, transparent);
    border: 1px solid color-mix(in srgb, var(--cta-accent, #fff) 45%, transparent);
    transition: var(--transition);
}
/* Przeglądarki bez color-mix(): jednolite, dyskretne tło ikony — kolor zostaje na samej ikonie. */
@supports not (background: color-mix(in srgb, red 10%, transparent)) {
    .sticky-cta-mobile__btn i {
        background: rgba(255,255,255,0.10);
        border-color: rgba(255,255,255,0.20);
    }
}
.sticky-cta-mobile__btn:active { background: rgba(255,255,255,0.05); }
.sticky-cta-mobile__btn:active i { transform: scale(0.94); }

.sticky-cta-mobile__btn--lead     { --cta-accent: #ffffff; }
.sticky-cta-mobile__btn--call     { --cta-accent: var(--brand-red); }
.sticky-cta-mobile__btn--whatsapp { --cta-accent: var(--wa-green); }

/* Nie nakladaj mobile bottom bara na contact section - dodaj padding bottom do body na mobile */
@media (max-width: 767.98px) {
    /* Wysokość paska (≈72 px) + bezpieczny margines urządzenia, żeby stopka
       i sekcja kontaktu nie chowały się pod przyciskami. */
    body { padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px)); }
}

/* =====================================================
   PREVIEW BANNER (banner ostrzegawczy że to /v2/)
   ===================================================== */
.preview-banner {
    background: var(--brand-red);
    color: #fff;
    text-align: center;
    padding: 8px 16px;
    font-family: var(--font-display);
    font-size: 12px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}
.preview-banner a {
    color: var(--brand-red);
    margin-left: 12px;
    text-decoration: underline;
}

/* =====================================================
   PRICE TABLE (cennik)
   ===================================================== */
.price-table {
    width: 100%;
    border-collapse: collapse;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(226, 26, 34,0.18);
    border-radius: 6px;
    overflow: hidden;
}
.price-table th {
    background: var(--surface-black);
    color: var(--brand-red);
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    padding: 14px 18px;
    text-align: left;
}
.price-table td {
    padding: 14px 18px;
    color: rgba(255,255,255,0.85);
    border-top: 1px solid rgba(226, 26, 34,0.1);
    font-size: 14px;
}
.price-table tr:hover td { background: rgba(226, 26, 34,0.04); }
.price-table .price {
    font-family: var(--font-display);
    font-weight: 700;
    color: var(--brand-red);
    font-size: 16px;
    white-space: nowrap;
}
.price-table .price__gross {
    display: block;
    margin-top: 3px;
    font-family: var(--font-body, inherit);
    font-weight: 400;
    font-size: 11px;
    letter-spacing: 0.04em;
    color: rgba(255,255,255,0.5);
}
/* Linki w nagłówkach cennika dziedziczą złoty kolor th (nie bootstrapowy niebieski). */
.price-table th a { color: inherit; }
.price-table th a:hover { text-decoration: underline; }
/* Mobile: tabela cennika przewijana w poziomie zamiast ucinana
   (body ma overflow-x:hidden, wiec szeroka tabela bez tego znika po prawej).
   Pierwsza kolumna zawijana i ograniczona, zeby kolumny cen wchodzily w kadr
   (widac, ze sa ceny) + zawsze widoczny zloty pasek przewijania. */
@media (max-width: 767px) {
    .price-table {
        display: block;
        overflow-x: scroll;
        -webkit-overflow-scrolling: touch;
        white-space: nowrap;
        scrollbar-width: thin;
        scrollbar-color: var(--brand-red) rgba(255,255,255,0.12);
    }
    .price-table::-webkit-scrollbar { height: 8px; -webkit-appearance: none; }
    .price-table::-webkit-scrollbar-thumb { background: var(--brand-red); border-radius: 4px; }
    .price-table::-webkit-scrollbar-track { background: rgba(255,255,255,0.12); border-radius: 4px; }
    .price-table th,
    .price-table td { padding: 10px 12px; }
    .price-table th:first-child,
    .price-table td:first-child { white-space: normal; max-width: 44vw; min-width: 40vw; }
    .price-table .price { font-size: 14px; }
    /* Tabele 2-kolumnowe (przyciemnianie) mieszczą się bez scrolla — pełna szerokość, bez cap/scroll. */
    .price-table.price-table--narrow { display: table; overflow-x: visible; white-space: normal; }
    .price-table.price-table--narrow th:first-child,
    .price-table.price-table--narrow td:first-child { max-width: none; min-width: 0; }
}

/* =====================================================
   RESPONSIVE
   ===================================================== */
@media (max-width: 991px) {
    .hero { min-height: 80vh; }
    .hero__inner { min-height: 80vh; padding: 60px 0; }
    .hero__lead { font-size: 16px; }
    .btn-gloss, .btn-ghost { width: 100%; justify-content: center; }
    .site-footer .footer-grid { grid-template-columns: 1fr 1fr; }
    .package-card--featured { transform: none; }
    .section { padding: 70px 0; }
}
@media (max-width: 600px) {
    .site-footer .footer-grid { grid-template-columns: 1fr; }
}

/* FAQ accordion */
.faq { max-width: 820px; margin: 0 auto; }
.faq__item { border-bottom: 1px solid rgba(13, 13, 15,0.15); }
.faq__q {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 4px;
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 600;
    color: var(--surface-black);
}
.faq__q::-webkit-details-marker { display: none; }
.faq__q::after {
    content: "+";
    font-size: 26px;
    line-height: 1;
    color: var(--brand-red);
    flex-shrink: 0;
}
.faq__item[open] .faq__q::after { content: "\2212"; }
.faq__a {
    padding: 0 4px 20px;
    font-size: 16px;
    line-height: 1.7;
    color: var(--ink-on-light);
}

/* Opinie / reviews */
.review-card {
    background: #f5efe2;
    border: 1px solid rgba(13, 13, 15, 0.12);
    border-radius: 6px;
    padding: 26px 24px;
    height: 100%;
    display: flex;
    flex-direction: column;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
}
.review-card__stars {
    color: var(--brand-red);
    font-size: 18px;
    letter-spacing: 2px;
    line-height: 1;
    margin-bottom: 14px;
}
.review-card__text {
    font-size: 15.5px;
    line-height: 1.7;
    color: var(--ink-on-light);
    flex: 1 0 auto;
    margin-bottom: 18px;
}
.review-card__author {
    display: flex;
    flex-direction: column;
    gap: 2px;
    border-top: 1px solid rgba(13, 13, 15, 0.12);
    padding-top: 14px;
}
.review-card__name {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 16px;
    color: var(--surface-black);
}
.review-card__source {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 13px;
    color: rgba(17, 17, 20, 0.7);
}
.review-card__source i { color: #4285F4; }

/* ============================================================
   BLOG
   ============================================================ */

/* Karty wpisów (lista + powiązane) */
.blog-card {
    background: #f5efe2;
    border: 1px solid rgba(13, 13, 15, 0.12);
    border-radius: 6px;
    height: 100%;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.blog-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.18);
}
.blog-card__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 26px 24px;
    text-decoration: none;
}
.blog-card__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}
.blog-card__cat {
    font-family: var(--font-display);
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-size: 12px;
    font-weight: 600;
    color: var(--surface-black);
    background: rgba(226, 26, 34, 0.18);
    padding: 4px 10px;
    border-radius: 4px;
}
.blog-card__date {
    font-size: 13px;
    color: rgba(17, 17, 20, 0.7);
}
.blog-card__title {
    font-family: var(--font-display);
    font-size: 21px;
    line-height: 1.3;
    color: var(--surface-black);
    margin-bottom: 12px;
}
.blog-card__excerpt {
    font-size: 15px;
    line-height: 1.65;
    color: var(--ink-on-light);
    flex: 1 0 auto;
    margin-bottom: 18px;
}
.blog-card__more {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-display);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 13px;
    color: var(--surface-black);
}
.blog-card__more i { transition: transform 0.2s ease; }
.blog-card:hover .blog-card__more i { transform: translateX(4px); }

/* Wariant ciemny (powiązane wpisy na section--dark) */
.blog-card--dark {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(226, 26, 34, 0.22);
    box-shadow: none;
}
.blog-card--dark .blog-card__cat {
    color: var(--brand-red);
    background: rgba(226, 26, 34, 0.12);
}
.blog-card--dark .blog-card__date { color: rgba(255, 255, 255, 0.55); }
.blog-card--dark .blog-card__title { color: #f5efe2; }
.blog-card--dark .blog-card__more { color: var(--brand-red); }

/* Treść artykułu (prose) */
.blog-article {
    font-size: 17px;
    line-height: 1.8;
    color: var(--ink-on-light);
}
.blog-article > *:first-child { margin-top: 0; }
.blog-article h2 {
    font-family: var(--font-display);
    font-size: 28px;
    line-height: 1.25;
    color: var(--surface-black);
    margin: 42px 0 16px;
}
.blog-article h3 {
    font-family: var(--font-display);
    font-size: 22px;
    line-height: 1.3;
    color: var(--surface-black);
    margin: 32px 0 12px;
}
.blog-article p { margin: 0 0 20px; }
.blog-article a {
    color: var(--surface-black);
    text-decoration: underline;
    text-decoration-color: var(--brand-red);
    text-underline-offset: 3px;
    font-weight: 600;
}
.blog-article a:hover { color: var(--brand-red); }
.blog-article ul,
.blog-article ol {
    margin: 0 0 20px;
    padding-left: 24px;
}
.blog-article li { margin-bottom: 8px; }
.blog-article ul li::marker { color: var(--brand-red); }
.blog-article blockquote {
    margin: 28px 0;
    padding: 4px 0 4px 22px;
    border-left: 3px solid var(--brand-red);
    font-style: italic;
    color: var(--surface-black);
}
.blog-article img {
    max-width: 100%;
    height: auto;
    border-radius: 6px;
    margin: 24px 0;
}
.blog-article strong { color: var(--surface-black); }
.blog-article hr {
    border: none;
    border-top: 1px solid rgba(13, 13, 15, 0.15);
    margin: 36px 0;
}

/* CTA pod artykułem */
.blog-cta {
    margin-top: 44px;
    padding: 30px 32px;
    background: var(--surface-black);
    border-radius: 8px;
    text-align: center;
}
.blog-cta p {
    color: #f5efe2;
    font-family: var(--font-display);
    font-size: 20px;
    margin-bottom: 18px;
}

/* Powrót do listy */
.blog-back {
    margin-top: 36px;
    padding-top: 24px;
    border-top: 1px solid rgba(13, 13, 15, 0.15);
}
.blog-back a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-display);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 14px;
    color: var(--surface-black);
    text-decoration: none;
}
.blog-back a:hover { color: var(--brand-red); }

/* =====================================================
   CONTACT FORM (lead) — formularz + modal + stany
   ===================================================== */
.contact-lead { max-width: 720px; margin: 0 auto 46px; }
.cf-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.cf-row { display: flex; gap: 16px; }
.cf-row .cf-field { flex: 1; }
.cf-field { margin-bottom: 18px; }
.cf-label {
    display: block; font-family: var(--font-display); font-size: 12px; font-weight: 600;
    letter-spacing: 0.14em; text-transform: uppercase; color: var(--surface-light); margin-bottom: 8px;
}
.cf-req { color: var(--brand-red); }
.cf-input, .cf-select, .cf-textarea {
    width: 100%; background: rgba(255,255,255,0.05); border: 1px solid rgba(226, 26, 34,0.22);
    border-radius: 6px; padding: 13px 15px; color: #fff; font-family: var(--font-body);
    font-size: 15px; transition: var(--transition);
}
.cf-input::placeholder, .cf-textarea::placeholder { color: rgba(255,255,255,0.38); }
.cf-input:focus, .cf-select:focus, .cf-textarea:focus {
    outline: none; border-color: var(--brand-red); background: rgba(255,255,255,0.08);
    box-shadow: 0 0 0 3px rgba(226, 26, 34,0.15);
}
.cf-select { appearance: none; cursor: pointer;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%23e21a22'><path d='M7 10L2 4h10z'/></svg>");
    background-repeat: no-repeat; background-position: right 15px center;
}
/* Native dropdown list — theme it to match the vintage palette (dark list, cream text,
   gold for the selected row). Honored by Chrome/Edge/Firefox on desktop; Safari/macOS and
   mobile fall back to the OS-native picker (still readable, just not themed). */
.cf-select option { background: var(--surface-black-deep); color: var(--surface-light); }
.cf-select option:checked { background: var(--brand-red); color: var(--surface-black); }
.cf-textarea { resize: vertical; min-height: 96px; }
.cf-phone { display: flex; gap: 8px; }
.cf-phone .cf-prefix { flex: 0 0 auto; width: auto; min-width: 96px; padding-right: 34px; }
.cf-phone .cf-input { flex: 1 1 auto; min-width: 0; }
.cf-field--error { border-color: var(--brand-red) !important; }
.cf-error { display: block; color: #e8a0a0; font-size: 12.5px; margin-top: 6px; min-height: 1em; }
.cf-consent { display: flex; gap: 11px; align-items: flex-start; margin: 4px 0 6px; }
.cf-consent input { margin-top: 3px; width: 17px; height: 17px; accent-color: var(--brand-red); flex-shrink: 0; }
.cf-consent label { font-size: 12.5px; line-height: 1.5; color: rgba(255,255,255,0.62); }
.cf-consent a { color: var(--brand-red); }
.cf-submit { width: 100%; justify-content: center; margin-top: 14px; }
.cf-submit:disabled { opacity: 0.6; cursor: default; transform: none; }
.cf-alt { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 18px;
    flex-wrap: wrap; font-size: 13px; color: rgba(255,255,255,0.55); }
.cf-alt a { color: var(--brand-red); font-weight: 500; }
.cf-dot { width: 4px; height: 4px; border-radius: 50%; background: rgba(226, 26, 34,0.5); }
.contact-form__success { text-align: center; padding: 24px 10px; }
.cf-ok-icon { width: 54px; height: 54px; border-radius: 50%; margin: 0 auto 14px;
    display: flex; align-items: center; justify-content: center; font-size: 28px;
    color: var(--brand-red); background: rgba(226, 26, 34,0.15); border: 1px solid rgba(226, 26, 34,0.4); }
.contact-form__success h3 { font-family: var(--font-display); text-transform: uppercase;
    letter-spacing: 0.1em; color: #fff; margin: 0 0 8px; }
.contact-form__success p { color: rgba(255,255,255,0.7); }
.contact-form__success a { color: var(--brand-red); }

/* MODAL */
.contact-modal__content { background: linear-gradient(180deg, var(--bg-dark), var(--bg-darker));
    border: 1px solid rgba(226, 26, 34,0.28); border-radius: 12px; color: #fff; }
.contact-modal__bar { display: flex; align-items: center; justify-content: space-between;
    padding: 18px 22px; border-bottom: 1px solid rgba(226, 26, 34,0.16); }
.contact-modal__bar h3 { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: 18px;
    letter-spacing: 0.12em; text-transform: uppercase; color: var(--brand-red); }
.contact-modal__bar h3 .accent { font-family: var(--font-display); color: #fff; text-transform: none;
    font-size: 0.8em; letter-spacing: 0; }
.contact-modal__x { background: none; border: none; color: rgba(255,255,255,0.55); font-size: 24px; cursor: pointer; }
.contact-modal__x:hover { color: #fff; }
.contact-modal__body { padding: 22px; }
.contact-modal__lead { font-size: 13px; color: rgba(255,255,255,0.7); margin: 0 0 16px; }

/* ===== Door to Door — nav accent + amenities + FAQ ===== */
.nav-link--accent { color: var(--brand-red, #e21a22); }
.dtd-hotel__media { position: relative; display: block; border-radius: 10px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.12); }
.dtd-hotel__media:hover .dtd-hotel__img { transform: scale(1.03); }
.dtd-hotel__img { width: 100%; height: auto; display: block; transition: transform .4s ease; }
.dtd-hotel__badge { position: absolute; right: 12px; bottom: 12px; display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 13px; font-weight: 600; color: #1a1a1a; background: var(--brand-red, #e21a22); border-radius: 999px; box-shadow: 0 4px 12px rgba(0,0,0,0.2); }
.dtd-hotel__desc { font-size: 16px; line-height: 1.7; margin: 0 0 20px; opacity: 0.9; }
.dtd-hotel__cta { margin-top: 4px; }
.dtd-amenities { list-style: none; padding: 0; margin: 0 0 22px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.dtd-amenities li { display: flex; align-items: center; gap: 10px; font-weight: 500; padding: 10px 14px; background: rgba(255,255,255,0.6); border: 1px solid rgba(0,0,0,0.07); border-radius: 8px; transition: border-color .2s ease, transform .2s ease; }
.dtd-amenities li:hover { border-color: var(--brand-red, #e21a22); transform: translateY(-1px); }
.dtd-amenities li i { color: var(--brand-red, #e21a22); font-size: 20px; flex: none; }
@media (max-width: 575px) { .dtd-amenities { grid-template-columns: 1fr; } }
.dtd-faq { display: flex; flex-direction: column; gap: 12px; }
.dtd-faq__item { border: 1px solid rgba(0,0,0,0.12); border-radius: 8px; background: rgba(255,255,255,0.5); overflow: hidden; }
.dtd-faq__q { cursor: pointer; list-style: none; padding: 16px 20px; font-weight: 600; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.dtd-faq__q::-webkit-details-marker { display: none; }
.dtd-faq__q i { transition: transform .2s ease; flex: none; }
.dtd-faq__item[open] .dtd-faq__q i { transform: rotate(180deg); }
.dtd-faq__a { padding: 0 20px 18px; line-height: 1.65; }

@media (max-width: 560px) { .cf-row { flex-direction: column; gap: 0; } }

/* =====================================================
   REALIZACJE — kafelki jako „stos zdjęć" + lightbox
   ===================================================== */
.realizations-grid .realization-card { padding: 12px 16px 26px; }
.realization-stack { position: relative; display: block; }
/* kartki „pod spodem" — sugerują stos zdjęć */
.realization-stack__paper {
    position: absolute; inset: 0; border-radius: 4px;
    background: var(--surface-light); border: 1px solid var(--surface-light-dim);
    box-shadow: var(--shadow-deep);
    transition: transform 0.35s ease;
}
.realization-stack__paper--back { z-index: 1; transform: rotate(-4deg) translate(-9px, 7px); }
.realization-stack__paper--mid  { z-index: 2; transform: rotate(3.2deg) translate(8px, 5px); }
.realization-stack__photo {
    position: relative; z-index: 3; display: block; margin: 0;
    transition: transform 0.35s ease;
}
.realization-stack__photo img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
/* rozjazd „wachlarza" na hover */
.realization-stack:hover .realization-stack__paper--back { transform: rotate(-7deg) translate(-15px, 9px); }
.realization-stack:hover .realization-stack__paper--mid  { transform: rotate(6deg) translate(14px, 7px); }
.realization-stack:hover .realization-stack__photo { transform: translateY(-4px); }
/* licznik zdjęć */
.realization-stack__badge {
    position: absolute; top: 24px; left: 24px; z-index: 4;
    display: inline-flex; align-items: center; gap: 5px;
    background: rgba(5, 5, 5,0.8); color: var(--brand-red);
    font-family: var(--font-display); font-weight: 600; font-size: 12px; letter-spacing: 0.08em;
    padding: 5px 11px; border-radius: 999px; border: 1px solid rgba(226, 26, 34,0.4);
}
/* lupa na hover (obszar zdjęcia = po paddingu 14px photo-frame) */
.realization-stack__zoom {
    position: absolute; inset: 14px; z-index: 4;
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 34px; background: rgba(5, 5, 5,0.35);
    opacity: 0; transition: opacity 0.3s ease; pointer-events: none;
}
.realization-stack:hover .realization-stack__zoom { opacity: 1; }
.realization-caption {
    text-align: center; font-family: var(--font-display); font-size: 20px;
    color: #fff; margin-top: 18px;
}

/* =====================================================
   LEGAL PAGES — polityka prywatności / regulamin
   ===================================================== */
.legal-page { background: var(--bg-darker); color: #fff; padding: 120px 0 80px; }
.legal-page__title { font-family: var(--font-display); font-weight: 700; text-transform: uppercase;
    font-size: clamp(28px, 4vw, 42px); margin: 14px 0 6px; }
.legal-page__updated { color: rgba(255,255,255,0.5); font-size: 13px; margin-bottom: 32px; }
.legal-page h2 { font-family: var(--font-display); font-weight: 600; text-transform: uppercase;
    letter-spacing: 0.08em; font-size: 19px; color: var(--brand-red); margin: 30px 0 12px; }
.legal-page p, .legal-page li { color: rgba(255,255,255,0.82); line-height: 1.7; max-width: 760px; }
.legal-page ul { padding-left: 20px; }
.legal-page a { color: var(--brand-red); }
.legal-page__note { font-size: 13px; color: rgba(255,255,255,0.45); margin-top: 36px; }
.footer-legal { display: flex; gap: 18px; flex-wrap: wrap; margin-bottom: 14px; }
.footer-legal a { color: rgba(255,255,255,0.6); font-size: 13px; }
.footer-legal a:hover { color: var(--brand-red); }

/* =====================================================
   LANG SUGGEST — pasek sugestii jezyka (JS-only, SEO-safe)
   ===================================================== */
.lang-suggest { display: flex; gap: 12px; align-items: center; justify-content: center;
    flex-wrap: wrap; padding: 10px 16px; background: var(--surface-black);
    color: var(--surface-light); font-family: var(--font-body); font-size: 14px;
    position: relative; z-index: 10; text-align: center; }
.lang-suggest[hidden] { display: none; }
.lang-suggest__go { color: var(--brand-red); font-weight: 600; text-decoration: underline;
    cursor: pointer; }
.lang-suggest__go:hover { color: var(--brand-red-dark); }
.lang-suggest__dismiss { background: none; border: none; color: var(--surface-light-dim);
    cursor: pointer; text-decoration: underline; font-size: 13px; font-family: var(--font-body); }
.lang-suggest__dismiss:hover { color: var(--surface-light); }

/* =====================================================
   BRAND WORDMARK — logo podłużne z napisem w jednym pliku
   -----------------------------------------------------
   Gdy w public/images/mw/ leży logo-wordmark.(png|webp|svg), topbar i stopka
   renderują JE zamiast pary "emblemat + tekst MW Auto Kosmetyka" (napis jest
   już częścią grafiki). Brak pliku = stary układ, więc podmiana logo to samo
   wrzucenie pliku, bez zmian w kodzie.
   ===================================================== */
.brand--wordmark { gap: 0; }
/* Wordmark ma proporcję ok. 9:1, więc sterujemy SZEROKOŚCIĄ (wysokość wynika sama).
   Sterowanie wysokością, jak przy kwadratowym emblemacie, rozlałoby logo w szerz
   poza pasek. */
.topbar .brand--wordmark .brand-logo {
    width: clamp(200px, 26vw, 300px);
    height: auto;
    max-width: none;
    display: block;
}
.topbar .brand--wordmark .brand-logo img { width: 100%; height: auto; max-height: none; display: block; }
.site-footer .brand-block--wordmark { display: block; }
.site-footer .brand-block--wordmark .brand-logo {
    width: clamp(220px, 30vw, 320px);
    height: auto;
    max-width: none;
}
.site-footer .brand-block--wordmark .brand-logo img { width: 100%; height: auto; display: block; }
.brand--wordmark .brand-subtitle,
.brand-block--wordmark .brand-subtitle {
    font-family: var(--font-display);
    font-size: 13px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--brand-red-light);
    margin-top: 6px;
}
@media (max-width: 480px) {
    /* Na wąskim ekranie w pasku jest jeszcze hamburger — logo nie może zjeść całej szerokości. */
    .topbar .brand--wordmark .brand-logo { width: min(210px, 58vw); }
    .brand--wordmark .brand-subtitle { display: none; }
}

/* =====================================================
   SOCIALS — ikony w kolorach oryginalnych serwisów
   -----------------------------------------------------
   Kolor marki nadajemy na hover/pełne tło (a nie od razu na wszystkich), żeby
   pasek nie rozsypywał się kolorystycznie w stopce; sama ikona jest w barwie
   serwisu od pierwszego wejrzenia.
   ===================================================== */
.site-footer .socials a.social {
    background: rgba(255,255,255,0.04);
    border-color: rgba(255,255,255,0.14);
}
.site-footer .socials a.social--fb       { color: #1877F2; }
.site-footer .socials a.social--ig       { color: #E4405F; }
.site-footer .socials a.social--tiktok   { color: #ffffff; }
.site-footer .socials a.social--yt       { color: #FF0000; }
.site-footer .socials a.social--wa       { color: #25D366; }
.site-footer .socials a.social:hover     { transform: translateY(-3px); color: #fff; }
.site-footer .socials a.social--fb:hover     { background: #1877F2; border-color: #1877F2; }
.site-footer .socials a.social--ig:hover     { background: linear-gradient(45deg,#F58529,#DD2A7B,#8134AF); border-color: #DD2A7B; }
.site-footer .socials a.social--tiktok:hover { background: #000; border-color: #25F4EE; color: #25F4EE; }
.site-footer .socials a.social--yt:hover     { background: #FF0000; border-color: #FF0000; }
.site-footer .socials a.social--wa:hover     { background: #25D366; border-color: #25D366; }

/* =====================================================
   MW CLUB — przycisk w topbarze (złoty, odcina się od czerwieni marki)
   ===================================================== */
.club-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 10px 18px;
    border: 1px solid var(--club-gold, #d4af37);
    color: var(--club-gold, #d4af37);
    background: linear-gradient(180deg, rgba(212,175,55,0.12), rgba(212,175,55,0.04));
    transition: var(--transition);
    white-space: nowrap;
}
.club-pill:hover,
.club-pill:focus-visible {
    background: linear-gradient(180deg, #f0d878, #d4af37);
    color: #0a0a0c;
    border-color: #f0d878;
}

/* =====================================================
   MW CLUB — podstrona programu lojalnościowego (czarno-złota)
   ===================================================== */
.club-page {
    background: var(--bg-darker);
    color: rgba(255,255,255,0.82);
}
.club-page .v2-breadcrumbs a { color: var(--club-gold); }

.club-hero {
    position: relative;
    padding: 120px 0 80px;
    background:
        radial-gradient(900px 420px at 50% -10%, rgba(212,175,55,0.16), transparent 70%),
        linear-gradient(180deg, #08080a, var(--bg-darker));
    border-bottom: 1px solid var(--club-gold-dim);
    overflow: hidden;
}
.club-hero__glow {
    position: absolute; inset: auto 0 -60% 0; height: 60%;
    background: radial-gradient(600px 200px at 50% 0, rgba(212,175,55,0.10), transparent 70%);
    pointer-events: none;
}
.club-hero__inner { max-width: 760px; margin: 0 auto; text-align: center; position: relative; }
.club-kicker {
    display: inline-block;
    font-family: var(--font-display);
    font-size: 13px;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--club-gold);
    margin-bottom: 18px;
}
.club-hero__title {
    font-family: var(--font-display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: clamp(30px, 5vw, 54px);
    line-height: 1.08;
    color: #fff;
    margin: 0 0 22px;
}
.club-accent {
    background: linear-gradient(180deg, var(--club-gold-light), var(--club-gold));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    /* Fallback dla przeglądarek bez background-clip:text — złoty tekst wprost. */
    -webkit-text-fill-color: transparent;
}
@supports not ((-webkit-background-clip: text) or (background-clip: text)) {
    .club-accent { color: var(--club-gold); -webkit-text-fill-color: currentColor; }
}
.club-hero__lead { font-size: 17px; line-height: 1.75; color: rgba(255,255,255,0.78); margin: 0 auto 14px; max-width: 660px; }
.club-hero__lead--tight { color: var(--club-gold-light); font-family: var(--font-display); letter-spacing: 0.04em; }
.club-hero__cta { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; margin-top: 30px; }

.btn-club {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 14px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    padding: 15px 30px;
    background: linear-gradient(180deg, var(--club-gold-light), var(--club-gold));
    color: #0a0a0c;
    border: 1px solid var(--club-gold-light);
    transition: var(--transition);
}
.btn-club:hover, .btn-club:focus-visible { filter: brightness(1.08); transform: translateY(-2px); color: #0a0a0c; }
.btn-club--ghost {
    background: transparent;
    color: var(--club-gold);
    border-color: var(--club-gold-dim);
}
.btn-club--ghost:hover, .btn-club--ghost:focus-visible { background: rgba(212,175,55,0.12); color: var(--club-gold-light); }

.club-section { padding: 72px 0; }
.club-section--alt { background: linear-gradient(180deg, #08080a, #0c0c0f); border-top: 1px solid rgba(212,175,55,0.10); border-bottom: 1px solid rgba(212,175,55,0.10); }
.club-section__header { text-align: center; margin-bottom: 36px; }
.club-section__title {
    font-family: var(--font-display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: clamp(22px, 3vw, 32px);
    color: #fff;
    margin: 0;
}
.club-rate {
    display: inline-block;
    margin-top: 16px;
    font-family: var(--font-display);
    font-size: clamp(20px, 3vw, 28px);
    letter-spacing: 0.08em;
    color: var(--club-gold);
    border: 1px solid var(--club-gold-dim);
    padding: 10px 24px;
}

.club-card {
    height: 100%;
    padding: 32px 28px;
    background: linear-gradient(180deg, rgba(212,175,55,0.07), rgba(255,255,255,0.02));
    border: 1px solid var(--club-gold-dim);
    text-align: center;
    transition: var(--transition);
}
.club-card:hover { border-color: var(--club-gold); transform: translateY(-4px); }
.club-card__icon { font-size: 30px; color: var(--club-gold); margin-bottom: 14px; }
.club-card__title {
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 16px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #fff;
    margin: 0 0 12px;
}
.club-card__value {
    font-family: var(--font-display);
    font-size: 19px;
    color: var(--club-gold-light);
    margin: 0;
}
.club-card__text { color: rgba(255,255,255,0.82); line-height: 1.7; margin: 0; }
.club-card__text strong { color: var(--club-gold-light); }
.club-card--rule { text-align: left; }
.club-card--rule .club-card__icon { text-align: center; }

.club-table-wrap { max-width: 560px; margin: 0 auto; overflow-x: auto; }
.club-table { width: 100%; border-collapse: collapse; }
.club-table th {
    font-family: var(--font-display);
    font-size: 12px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--club-gold);
    text-align: left;
    padding: 12px 16px;
    border-bottom: 1px solid var(--club-gold-dim);
}
.club-table td {
    font-family: var(--font-display);
    font-size: 18px;
    color: rgba(255,255,255,0.9);
    padding: 14px 16px;
    border-bottom: 1px solid rgba(255,255,255,0.07);
}
.club-table__value { color: var(--club-gold-light); }
.club-table tbody tr:hover td { background: rgba(212,175,55,0.06); }

.club-note { text-align: center; color: rgba(255,255,255,0.6); font-size: 14px; margin: 26px auto 0; max-width: 640px; }
.club-account { max-width: 700px; margin: 0 auto; text-align: center; }
.club-account__icon { font-size: 38px; color: var(--club-gold); margin-bottom: 14px; }
.club-account__text { color: rgba(255,255,255,0.8); line-height: 1.75; margin-top: 16px; }
.club-cta { background: radial-gradient(700px 300px at 50% 0, rgba(212,175,55,0.12), transparent 70%); }
.club-cta__text { color: rgba(255,255,255,0.8); max-width: 620px; margin: 16px auto 18px; line-height: 1.7; }
.club-cta__tagline {
    font-family: var(--font-display);
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--club-gold);
    margin-bottom: 26px;
}
.club-legal { color: rgba(255,255,255,0.45); font-size: 13px; max-width: 660px; margin: 34px auto 0; line-height: 1.6; }

/* Teaser klubu na stronie głównej — złota ramka odcinająca sekcję od czerwieni.
   Karty nie mają ikony, więc górny zapas (36 px, robiony pod wystający kafel
   z ikoną) schodzi do normalnego odstępu — inaczej tytuł wisiałby w pustce. */
.club-teaser-card { border-color: rgba(212,175,55,0.28) !important; padding-top: 28px; }
.club-teaser-card .numbered-card__title { color: #f0d878 !important; margin-top: 0; }

/* =====================================================
   SERVICE BLOCK — sekcje opisowe na podstronach usług
   ===================================================== */
.service-block { margin-bottom: 44px; }
.service-block:last-child { margin-bottom: 0; }
.service-block__title {
    font-family: var(--font-display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: clamp(20px, 2.4vw, 27px);
    color: var(--ink-on-light);
    margin: 0 0 16px;
}
.section--dark .service-block__title { color: #fff; }
.service-block__text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--ink-on-light);
    margin: 0 0 14px;
}
.section--dark .service-block__text { color: rgba(255,255,255,0.82); }
.scope-list--tight { margin-top: 8px; }

/* Podtytuł usługi w hero — obietnica pod H1, przed właściwym leadem */
.hero__subtitle {
    font-family: var(--font-display);
    font-size: clamp(17px, 2vw, 22px);
    letter-spacing: 0.04em;
    color: var(--brand-red-light);
    margin: -8px 0 18px;
}

/* Topbar 992–1199 px: brand + nawigacja + dwa przyciski nie mieszczą się w jednym
   rzędzie. Przycisk MW CLUB ma priorytet (życzenie klienta), telefon zostaje
   dostępny w pasku sticky-CTA i w menu mobilnym, więc tutaj go chowamy. */
@media (min-width: 992px) and (max-width: 1199px) {
    .topbar .phone-pill { display: none !important; }
    .club-pill { padding: 9px 13px; font-size: 12px; letter-spacing: 0.08em; }
}

/* Ikona usługi jako własna grafika (public/images/mw/ikony-uslug/<klucz>.png) —
   bez czerwonego kaflu pod spodem, bo takie ikony mają własny kształt i tło. */
.numbered-card__num--image {
    /* Ikony marki zawierają wewnątrz logo i podpis, więc rozmiar kafla z numerem (56 px)
       robiłby z nich nieczytelną plamkę — stąd 104 px. Przy takiej średnicy rezygnujemy
       też z wystawania ponad krawędź karty: ikona siedzi w normalnym przepływie, więc
       nie zachodzi na tytuł i nie wymaga korekty paddingu karty (ani reguły :has()). */
    position: static;
    width: 104px;
    height: 104px;
    background: none;
    border: 0;
    border-radius: 50%;
    box-shadow: none;
    padding: 0;
    margin: 0 0 4px;
}
.numbered-card--dark .numbered-card__num--image {
    background: none;
    border: 0;
    box-shadow: none;
}
.numbered-card__num--image img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}
@media (max-width: 575px) {
    .numbered-card__num--image { width: 88px; height: 88px; }
}

/* =====================================================
   MENU MOBILNE — nakładka na pełny ekran
   -----------------------------------------------------
   Pierwsze podejście (ograniczenie wysokości + własne przewijanie wewnątrz paska)
   NIE zadziałało na telefonie: palec przewijał stronę pod menu, a listy usług nie
   dało się przejrzeć do końca. Przyczyna jest strukturalna — menu rozwija się
   WEWNĄTRZ paska przyklejonego do góry ekranu, a przewijanie zagnieżdżone w takim
   elemencie jest na mobilnych przeglądarkach zawodne.

   Rozwiązanie nie walczy o przewijanie, tylko je rozdziela: rozwinięte menu staje
   się nakładką na cały ekran (pasek rysuje się na niej) i ma własne przewijanie,
   a strona pod nim dostaje blokadę (klasa .menu-open, ustawiana skryptem). Tło nie
   ma wtedy czego przewijać, więc nie ma o co konkurować.

   Wysokość paska podaje skrypt w zmiennej --topbar-h (mierzona z DOM, nie zgadywana
   — logo bywa różnej wysokości zależnie od szerokości ekranu).
   ===================================================== */
@media (max-width: 991.98px) {
    #v2MobileMenu.collapse.show,
    #v2MobileMenu.collapsing {
        position: fixed;
        /* Nakładka celowo zaczyna się od GÓRY EKRANU, nie od dołu paska. Wersja
           z `top: var(--topbar-h)` zostawiała prześwit, przez który widać było
           treść strony, ilekroć zmierzona wysokość paska nie zgadzała się co do
           piksela z realną (logo skaluje się do szerokości, więc rozjazd wraca
           przy każdej podmianie grafiki). Tło startuje od zera, a pasek rysuje
           się na nim, bo ma wyższą warstwę — luka nie ma z czego powstać.
           Wysokość paska służy już tylko za wewnętrzny odstęp treści. */
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        /* Dopóki menu było dzieckiem paska, dziedziczyło jego kontekst nakładania
           (z-index: 100) i leżało nad całą stroną. Po wyprowadzeniu na zewnątrz ma
           własny — a bez z-index nakładka ląduje POD treścią (.hero__inner ma 5)
           i pod dolnym paskiem CTA (90): menu wygląda, jakby się nie otworzyło,
           choć blokada tła już działa. 95 = nad treścią i dolnym paskiem, pod
           paskiem górnym (100), żeby hamburger zamykający pozostał widoczny. */
        z-index: 95;
        margin-top: 0;
        padding: 0 16px;
        /* Pierwsza pozycja startuje pod paskiem; przy przewijaniu lista przejeżdża
           pod nim, a pasek ma własne tło z rozmyciem, więc czyta się to czysto.
           Nawet gdy skrypt nie wystartuje, wartość zapasowa daje sensowny odstęp. */
        padding-top: var(--topbar-h, 74px);
        padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
        background: rgba(5, 5, 5, 0.985);
        backdrop-filter: blur(12px);
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
    /* Bootstrap animuje rozwijanie zmianą wysokości. W nakładce (top/bottom) inline
       height z animacji wygrywa nad `bottom: 0`, więc panel na moment wylewa się
       poza ekran. Nakładka i tak nie potrzebuje animacji — wyłączamy ją. */
    #v2MobileMenu.collapsing {
        transition: none;
        height: auto !important;
    }

    /* Strona pod otwartym menu stoi. `overflow: hidden` na body nie wystarcza
       na iOS — dopiero position: fixed realnie zatrzymuje przewijanie; skrypt
       zapamiętuje i przywraca pozycję, żeby zamknięcie menu nie przenosiło
       użytkownika na górę strony. */
    html.menu-open, html.menu-open body {
        overflow: hidden;
    }
    html.menu-open body {
        position: fixed;
        top: calc(-1 * var(--menu-scroll-y, 0px));
        left: 0;
        right: 0;
        width: 100%;
    }
    /* Pasek jest `position: sticky`, a sticky wymaga przewijalnego przodka. Blokada
       powyżej odbiera body przewijanie i przesuwa je o -scrollY, więc przyklejony
       pasek degraduje do zwykłego i odjeżdża poza ekran razem z treścią — przy
       otwarciu menu na przewiniętej stronie znika hamburger, którym się je zamyka.
       Na czas otwartego menu przypinamy pasek wprost do okna. */
    html.menu-open .topbar {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
    }
}

/* =====================================================
   KARTA USŁUGI — układ poziomy (ikona po lewej, treść po prawej)
   -----------------------------------------------------
   Karta w siatce 3-kolumnowej ma ok. 320 px treści, więc ikona schodzi z 104 px
   do 80 px — inaczej na tekst zostaje tak wąski słupek, że opis rozjeżdża się
   na sześć wierszy. Poniżej 576 px (jedna kolumna na telefonie) wracamy do pionu:
   tam pełna szerokość dla tekstu jest ważniejsza niż układ obok siebie.
   ===================================================== */
.numbered-card--media {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    padding: 26px 24px;
}
.numbered-card--media .numbered-card__num--image {
    width: 80px;
    height: 80px;
    margin: 0;
    flex: 0 0 80px;   /* nie kurczy się przy długim tytule */
}
/* Wariant zapasowy (usługa bez własnej ikony) — kafel z ikoną z biblioteki */
.numbered-card--media .numbered-card__num:not(.numbered-card__num--image) {
    position: static;
    margin: 0;
    flex: 0 0 56px;
}
.numbered-card__body { min-width: 0; }   /* pozwala tekstowi zawijać się w wąskiej kolumnie */
.numbered-card--media .numbered-card__title { margin-top: 0; }
.numbered-card--media .numbered-card__text { margin-bottom: 0; }

@media (min-width: 1200px) {
    .numbered-card--media .numbered-card__num--image { width: 92px; height: 92px; flex-basis: 92px; }
}
@media (max-width: 575px) {
    .numbered-card--media { display: block; padding: 26px 24px 24px; }
    .numbered-card--media .numbered-card__num--image { width: 88px; height: 88px; margin-bottom: 6px; }
}

/* =====================================================
   FILMY (YouTube facade) — kadr z lokalnej miniatury + przycisk odtwarzania
   -----------------------------------------------------
   Kafle mają wyglądać jak odtwarzacz, nie jak pusty guzik: pełny kadr 9:16
   (Shorts), przycisk play na środku, podpis pod spodem. Player YouTube wchodzi
   na miejsce kafla po kliknięciu (patrz js/v2/youtube-facade.js).
   ===================================================== */
.yt-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
}
/* Kadry są pionowe, więc przy szerokim ekranie auto-fit upchnąłby ich sześć w rzędzie
   i zrobiły się paski. Cztery w rzędzie to maksimum, przy którym zachowują czytelną
   wielkość (7 filmów układa się wtedy 4 + 3). */
@media (min-width: 992px) {
    .yt-grid { grid-template-columns: repeat(4, 1fr); max-width: 900px; margin: 0 auto; }
}
.yt-facade { margin: 0; }
.yt-facade__btn {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 9 / 16;
    padding: 0;
    overflow: hidden;
    cursor: pointer;
    background: #0f0f12;
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: var(--radius-md);
    transition: border-color var(--transition), transform var(--transition);
}
.yt-facade__btn:hover,
.yt-facade__btn:focus-visible {
    border-color: var(--brand-red);
    transform: translateY(-3px);
}
.yt-facade__poster {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s ease, filter var(--transition);
}
.yt-facade__btn:hover .yt-facade__poster { transform: scale(1.04); }
/* Tło zastępcze, gdy dla filmu nie ma jeszcze lokalnej miniatury */
.yt-facade__bg {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(360px 220px at 50% 34%, rgba(226,26,34,0.22), transparent 70%),
        linear-gradient(180deg, #17171b, #0a0a0c);
}
.yt-facade__play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 58px;
    height: 58px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(226, 26, 34, 0.92);
    color: #fff;
    font-size: 30px;
    padding-left: 3px;                    /* trójkąt optycznie na środku kółka */
    box-shadow: 0 8px 26px rgba(0,0,0,0.45);
    transition: var(--transition);
}
.yt-facade__btn:hover .yt-facade__play {
    background: var(--brand-red);
    transform: translate(-50%, -50%) scale(1.08);
}
.yt-facade__frame {
    width: 100%;
    aspect-ratio: 9 / 16;
    border: 0;
    display: block;
    border-radius: var(--radius-md);
}
.yt-facade__caption {
    font-size: 13px;
    line-height: 1.5;
    color: rgba(255,255,255,0.72);
    margin-top: 10px;
    text-align: center;
}
.section--cream .yt-facade__caption { color: var(--ink-on-light); }
