/**
 * Strony produktów czterech rozkładów (Pełny, Partnerski, Mini, Finansowy; plik strony wybiera dyspozytor
 * po ID produktu, inc/rozklady-strony.php) — jeden arkusz od T-200, wygląd makiet z 03–05.10.2026.
 * Wzór: assets/css/rozklady-tarota.css (T-195). Przekład wspólnej bazy makiet (_makiety/ceremonie.css:
 * tokeny, noc i dzień, nagłówki, przycisk, cytat opinii, suwak opinii, pasek na telefonie), warstw stron
 * szczegółów (_makiety/szczegoly.css) i <style> makiet (akcenty stron) na klasy rs-. Wszystko pod .rs,
 * tokeny --rs-* na korzeniu, stany is-*, haki JS wyłącznie data-rs-*. Wspólne elementy serwisu (opinie
 * z reviews.php, nagłówek, stopka) zachowują swoje arkusze.
 *
 * Strona ma na <main> modyfikator rs--<slug>. Reguła bez zawężenia jest wspólna dla czterech stron.
 * Reguła, która na stronach się różni, występuje w grupach stron o tej samej treści, zawężona przez
 * :where(.rs--<slug>, …). :where() ma specyficzność 0, więc na każdej stronie kaskada jest dokładnie
 * ta sama co w jej dawnym osobnym arkuszu, a kolejność reguł strony jest zachowana. Nową różnicę
 * między stronami dopisuje się tak samo: obok reguły wspólnej, w tym samym @media, zawężoną do strony.
 * Regiony RS:* dzielą plik między sekcje stron w kolejności strony: RS:BAZA, RS:HERO (§1),
 * RS:PYTANIE (§2), RS:BRAMY (§2a), RS:ROZKLAD (§3), RS:KONIEC (§4 PDF, §6 pytania, §7 zakończenie),
 * RS:OPINIE (§5, wspólne opinie); każdy niesie swoje @media i reduced-motion. Opisy różnic stron:
 * docs/theme.md §23–§26.
 */

/* ==== RS:BAZA ==== */
.rs {
    --rs-night: #0f0c16;
    --rs-bg: var(--rs-night);
    --rs-surface: #120e1a;
    --rs-ink: #f1e8d8;
    --rs-muted: #cfc4b2;
    --rs-faint: #958b7d;
    --rs-gold: #d4b05a;
    --rs-bright: #e8c978;
    --rs-deep: #a8853f;
    --rs-glow: #fff1c8;
    --rs-wine: #7a2433;
    --rs-line: rgb(212 176 90 / 22%);
    --rs-hairline: rgb(241 232 216 / 10%);
    --rs-paper: #fbf8f2;
    --rs-btn-border: rgb(241 232 216 / 45%);
    --rs-btn-accent-bg: #e8c978;
    --rs-btn-accent-fg: #1a1406;
    --rs-btn-accent-fill: #fff1c8;
    --rs-btn-accent-fill-fg: #1a1406;
    --rs-heading: 'Cormorant Garamond', Georgia, serif;
    --rs-reading: 'Fraunces', Georgia, serif;
    --rs-ui: 'Inter', system-ui, sans-serif;
    --rs-ease: cubic-bezier(.2, .7, .15, 1);
    --rs-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .28 0 0 0 0 .2 0 0 0 .06 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    position: relative;
    isolation: isolate;
    color: var(--rs-ink);
    font: 300 18px/1.7 var(--rs-reading);
    font-variation-settings: 'opsz' 14;
    -webkit-font-smoothing: antialiased;
}
.rs:where(.rs--pelny) {
    /* Akcent Pełnego (fiolet kafla ze strony głównej, makieta: .detail--pelny{--accent:#A99BE0}). */
    --rs-akcent: #a99be0;
}
.rs:where(.rs--partnerski) {
    /* Akcent Partnerskiego (róż kafla „On i ja” ze strony głównej, makieta: .detail--partnerski{--accent:#D9808F}). */
    --rs-akcent: #d9808f;
}
.rs:where(.rs--mini) {
    /* Akcent Mini (złoto kafla ze strony głównej, makieta: .detail--mini{--accent:#D9B85E}). */
    --rs-akcent: #d9b85e;
}
.rs:where(.rs--finansowy) {
    /* Akcent Finansowego (zieleń kafla „Pieniądze i praca” ze strony głównej, makieta: .detail--finansowy{--accent:#86BC9C}). */
    --rs-akcent: #86bc9c;
}
.rs *, .rs *::before, .rs *::after { box-sizing: border-box; }
.rs [hidden] { display: none !important; }
/* Reset elementów na poziomie arkusza głównego (0,0,1 / 0,1,1): klasy komponentów wygrywają bez podbijania.
   Wspólne opinie (.rs-reviews) zostają poza resetem. */
.rs :is(h1, h2, h3, h4, figure, blockquote, ul, ol, li, table, details, summary):where(:not(.rs-reviews *)) { margin: 0; padding: 0; }
.rs p:where(:not(.rs-reviews *)) { margin: 0 0 18px; line-height: inherit; }
.rs :is(h1, h2, h3, h4):where(:not(.rs-reviews *)) { color: inherit; font-family: var(--rs-heading); font-weight: 500; line-height: 1.08; letter-spacing: normal; }
:where(.rs) a:where(:not(.rs-reviews *)), :where(.rs) a:hover:where(:not(.rs-reviews *)) { color: inherit; }
:where(.rs) button:where(:not(.rs-reviews *)) { margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-align: center; cursor: pointer; }
.rs img:where(:not(.rs-reviews *)) { display: block; max-width: 100%; }
/* Pierścień fokusu: kolor i odstęp z tokenów pasma (noc: akcent; dzień niżej: wino, bo lawenda na papierze
   ma kontrast 2,1:1, poniżej 3:1 z WCAG 1.4.11). */
.rs :is(button, a, summary, [tabindex]):focus-visible:where(:not(.rs-reviews *)) { outline: 2px solid var(--rs-focus, var(--rs-akcent)); outline-offset: var(--rs-focus-offset, 4px); }
/* Rezerwa celów kotwic pod przyklejony header (docs/theme.md §13). */
.rs :is(section, article) { scroll-margin-top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--zoriana-header-h, 4rem) + 1rem); }
.rs .rs-oferta { scroll-margin-top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--zoriana-header-h, 4rem) + 30px); }
.rs-wrap { position: relative; width: min(100%, 1200px); margin-inline: auto; padding-inline: 20px; }
.rs-wrap--narrow { max-width: 900px; }
.rs-icon { display: inline-block; flex: none; width: 20px; height: 20px; vertical-align: middle; }
/* Ukryty sprite SVG w treści sekcji: zerowy rozmiar zamiast display:none, bo filtr cienia
   w ukrytym sprite przestaje działać (docs/gotchas.md, Ceremonia Nowiu p. 3). */
.rs-sprite { position: absolute; width: 0; height: 0; overflow: hidden; pointer-events: none; }
/* Cyfry krojem UI jak .num makiety: tylko krój, waga i rozmiar (skrót font zerowałby kursywę). */
.rs-num { font-family: var(--rs-ui); font-weight: 500; font-size: .92em; }
.rs .rs-link { color: var(--rs-bright); text-decoration: none; background: linear-gradient(currentColor, currentColor) left bottom / 100% 1px no-repeat; transition: background-size .6s ease; }
.rs .rs-link:hover { color: var(--rs-bright); background-size: 0 1px; }
/* Nocne niebo pod treścią (płótno rysuje assets/js/strona-glowna.js po [data-sg-niebo]; księżyca brak,
   jak data-ksiezyc="brak" w makiecie). */
.rs-sky {
    position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none;
    background: radial-gradient(ellipse 70% 50% at 80% 8%, rgb(122 36 51 / 22%), transparent 60%), radial-gradient(ellipse 60% 50% at 10% 60%, rgb(70 52 120 / 20%), transparent 65%), radial-gradient(ellipse 80% 60% at 60% 110%, rgb(212 176 90 / 7%), transparent 60%), var(--rs-night);
}
.rs-sky canvas { position: fixed; inset: 0; width: 100%; height: 100%; }
/* Pasma: noc (domyślnie, przezroczyste nad niebem) i dzień (papier). */
.rs-band { position: relative; padding-block: 110px; }
.rs-band--paper {
    --rs-bg: #f4efe6; --rs-ink: #1c1a17; --rs-muted: #57504a; --rs-faint: #8b8175; --rs-gold: #a8853f; --rs-bright: #8e6e2f;
    --rs-line: rgb(168 133 63 / 30%); --rs-hairline: rgb(28 26 23 / 10%);
    --rs-btn-border: #1c1a17; --rs-btn-accent-bg: #7a2433; --rs-btn-accent-fg: #fff6ea; --rs-btn-accent-fill: #1c1a17; --rs-btn-accent-fill-fg: #fff6ea;
    --rs-focus: var(--rs-wine); --rs-focus-offset: 2px;
    color: var(--rs-ink);
    background: var(--rs-bg) var(--rs-grain);
}
.rs-band--continue { padding-top: 30px; }
/* Złota kreska u góry pasma (makieta: .section--day-start::after / .section--night-start::before)
   i jej szeroka, świecąca odmiana nad ofertą (.offer-night). */
.rs-band--kreska::before, .rs-band--oferta::before { content: ''; position: absolute; top: 0; left: 50%; width: min(560px, 70%); height: 1px; transform: translateX(-50%); background: linear-gradient(90deg, transparent, #c9a84c, transparent); }
.rs-band--oferta::before { width: min(760px, 80%); background: linear-gradient(90deg, transparent, #e8c978, transparent); box-shadow: 0 0 18px rgb(232 201 120 / 45%); }
.rs-band.rs-band--oferta { padding-top: 130px; }
/* Typografia sekcji. */
.rs .rs-eyebrow { display: flex; align-items: center; gap: 16px; margin: 0 0 24px; color: var(--rs-gold); font: 500 12px/1 var(--rs-ui); letter-spacing: .32em; text-transform: uppercase; }
.rs-eyebrow__star { flex: 0 1 auto; width: 12px; height: 12px; color: var(--rs-bright); }
.rs-eyebrow::after { content: ''; flex: 0 0 56px; height: 1px; background: linear-gradient(90deg, transparent, var(--rs-gold)); transform-origin: left; transition: transform 2s ease .3s; }
.rs .rs-eyebrow--center { justify-content: center; }
.rs-eyebrow--center::before { content: ''; order: -1; flex: 0 0 56px; height: 1px; background: linear-gradient(90deg, var(--rs-gold), transparent); transform-origin: right; transition: transform 2s ease .3s; }
.rs .rs-title { max-width: 820px; margin-bottom: 24px; font-size: clamp(34px, 4.6vw, 58px); text-wrap: balance; }
.rs .rs-title--center { margin-inline: auto; text-align: center; }
.rs .rs-lead { max-width: 700px; margin: 20px 0 0; color: var(--rs-muted); font: italic 300 20px/1.6 var(--rs-reading); }
.rs .rs-lead--center { margin-inline: auto; text-align: center; }
.rs .rs-text { max-width: 680px; margin: 0 0 18px; color: var(--rs-muted); text-wrap: pretty; }
/* Nagłówek sekcji (makieta: .section-head) — wyśrodkowany blok etykiety, tytułu i wstępu. */
.rs .rs-head { max-width: 860px; margin: 0 auto 56px; text-align: center; }
.rs .rs-head :is(.rs-title, .rs-lead) { margin-inline: auto; }
/* Przycisk: obrysowany (domyślny) i pełny w akcencie pasma (noc: złoto, dzień: wino); wypełnienie od lewej. */
.rs .rs-btn {
    position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    padding: 15px 26px; border: 1px solid var(--rs-btn-border); border-radius: 2px;
    background: transparent; color: var(--rs-ink); font: 500 15px/1.2 var(--rs-ui);
    letter-spacing: .01em; text-decoration: none; cursor: pointer; isolation: isolate; overflow: hidden;
    transition: color .5s var(--rs-ease), border-color .5s;
}
.rs-btn::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--rs-ink); transform: scaleX(0); transform-origin: right; transition: transform .6s var(--rs-ease); }
.rs .rs-btn:hover { color: var(--rs-bg); border-color: var(--rs-ink); }
.rs-btn:hover::before { transform: scaleX(1); transform-origin: left; }
.rs .rs-btn--accent { background: var(--rs-btn-accent-bg); border-color: var(--rs-btn-accent-bg); color: var(--rs-btn-accent-fg); }
.rs-btn--accent::before { background: var(--rs-btn-accent-fill); }
.rs .rs-btn--accent:hover { color: var(--rs-btn-accent-fill-fg); border-color: var(--rs-btn-accent-bg); }
.rs-btn__arrow { width: 16px; height: 16px; transition: transform .5s var(--rs-ease); }
.rs-btn:hover .rs-btn__arrow { transform: translateX(5px); }
.rs .rs-btn-note { margin: 12px 0 0; color: var(--rs-faint); font: 500 13px/1.5 var(--rs-ui); }
/* Złoty połysk w tekście (wyróżnienie H1 i tytułu PDF; złoty także na Pełnym, jak w makiecie). */
.rs-shine { background: linear-gradient(100deg, #a8853f 0%, #e8c978 30%, #fff1c8 45%, #e8c978 60%, #a8853f 100%); background-size: 250% 100%; background-clip: text; -webkit-background-clip: text; color: transparent; animation: rs-shine 14s ease-in-out infinite; }
@keyframes rs-shine { 0%, 100% { background-position: 100% 0; } 50% { background-position: 0 0; } }
.rs-stars { display: block; margin-bottom: 8px; color: #f5b400; font: normal 400 15px/1 var(--rs-ui); letter-spacing: 2px; }
/* Ruch współdzielony przez sekcje (makieta: dial-spin, dial-breathe, dial-card-glow, stage-twinkle);
   migoczące gwiazdki SVG sceny i łuku zdjęcia: klasa .rs-star (opóźnienia inline w SVG). */
@keyframes rs-spin { to { transform: rotate(360deg); } }
@keyframes rs-breathe { 0%, 100% { opacity: .75; } 50% { opacity: 1; } }
@keyframes rs-card-glow { 50% { box-shadow: 0 0 0 1px rgb(255 241 200 / 100%), 0 0 44px 10px rgb(255 241 200 / 45%), 0 18px 34px -12px rgb(0 0 0 / 85%); } }
@keyframes rs-twinkle { 0%, 100% { opacity: .2; } 50% { opacity: 1; } }
.rs-star { animation: rs-twinkle 3.6s ease-in-out infinite; }
/* Iskry wznoszące się nad świecą (makieta .rite__sparks): poświata bram i łuk zdjęcia; wysokość
   startu (bottom) ustawia sekcja. Bez ruchu znikają (reduced-motion niżej). */
.rs-iskry { position: absolute; inset: 0; pointer-events: none; }
.rs-iskry i { position: absolute; width: 4px; height: 4px; border-radius: 50%; background: #ffe3a1; box-shadow: 0 0 8px 2px rgb(255 196 110 / 75%); opacity: 0; animation: rs-iskra 6s linear infinite; }
.rs-iskry i:nth-child(1) { left: 30%; animation-delay: -.4s; }
.rs-iskry i:nth-child(2) { left: 39%; animation-delay: -1.9s; animation-duration: 7s; }
.rs-iskry i:nth-child(3) { left: 47%; animation-delay: -3.2s; }
.rs-iskry i:nth-child(4) { left: 55%; animation-delay: -4.4s; animation-duration: 5.4s; }
.rs-iskry i:nth-child(5) { left: 62%; animation-delay: -2.6s; }
.rs-iskry i:nth-child(6) { left: 69%; animation-delay: -5.1s; animation-duration: 6.8s; }
.rs-iskry i:nth-child(7) { left: 35%; animation-delay: -5.8s; animation-duration: 7.4s; }
.rs-iskry i:nth-child(8) { left: 58%; animation-delay: -.9s; animation-duration: 6.2s; }
@keyframes rs-iskra { 0% { opacity: 0; transform: translate(0, 0) scale(.6); } 12% { opacity: 1; } 100% { opacity: 0; transform: translate(16px, -240px) scale(.2); } }
/* Pauza animacji poza ekranem i w ukrytej karcie ([data-rs-motion], JS RS:BAZA; SMIL przez pauseAnimations). */
.rs [data-rs-motion].is-paused *, .rs [data-rs-motion].is-paused::before, .rs [data-rs-motion].is-paused::after { animation-play-state: paused !important; }
/* Pojawianie się: ukrywa JS (is-enhanced; pierwszą klatkę przed skryptem patrz niżej), bez JS i przy
   reduced-motion treść widoczna od razu.
   translate (nie transform), żeby nie kolidować z transformami komponentów. Chowanie bez przejścia:
   is-waiting dochodzi po pierwszym malowaniu, więc z przejściem treść widoczna od wczytania (hero,
   wejście przez kotwicę) najpierw gasłaby, a potem wracała; przejście ma tylko pojawianie się. */
.rs.is-enhanced [data-rs-reveal] { transition: opacity 1.6s ease, translate 1.6s ease; }
.rs.is-enhanced [data-rs-reveal].is-waiting { opacity: 0; translate: 0 10px; transition: none; }
.rs.is-enhanced .rs-eyebrow.is-waiting::after, .rs.is-enhanced .rs-eyebrow.is-waiting::before { transform: scaleX(0); transition: none; }
/* Pierwsza klatka przed skryptem (defer): gdy przeglądarka wykonuje JS i ruch jest dozwolony, treść
   do pojawienia i H1 są ukryte już w CSS, jak w makiecie. Inaczej pierwsza klatka pokazałaby hero,
   które skrypt zaraz chowa (mignięcie 1 → 0 → 1). Skrypt na starcie dodaje .rs is-ready, dalej rządzi
   is-waiting. Bez JS (scripting: none) i przy reduced-motion reguła nie działa. Gdy skrypt nie dojdzie
   (błąd sieci), treść wraca sama po 4 s (rs-bez-skryptu). */
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
    .rs:not(.is-ready) [data-rs-reveal] { opacity: 0; translate: 0 10px; animation: rs-bez-skryptu 0s 4s forwards; }
    .rs:not(.is-ready) [data-rs-title] { visibility: hidden; animation: rs-bez-skryptu 0s 4s forwards; }
}
@keyframes rs-bez-skryptu { to { opacity: 1; translate: none; visibility: visible; } }
/* H1 słowo po słowie od razu po wczytaniu ([data-rs-title]; JS dzieli tekst, bez JS nagłówek jest zwykły). */
.rs-title-word { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .1em; margin-bottom: -.1em; }
.rs-title-word__inner { display: inline-block; animation: rs-word 1.6s var(--rs-ease) both; }
@keyframes rs-word { from { translate: 0 105%; } to { translate: 0 0; } }
/* Słowo akcentu niesie połysk samo na czas wjazdu (JS dokłada mu .rs-shine): background-clip:text rodzica
   nie sięga animowanych warstw. Po wjeździe JS zdejmuje słowu klasę i animację, więc wraca jeden gradient
   rodzica przez całą frazę, jak w makiecie. */
.rs-title-word__inner.rs-shine { animation: rs-word 1.6s var(--rs-ease) both, rs-shine 14s ease-in-out infinite; }
/* Nagłówek słowo po słowie przy wejściu w ekran ([data-rs-split], makieta: data-gm-split; JS dzieli tekst
   i trzyma is-waiting do progu 0,4; bez JS i przy reduced-motion zwykły nagłówek). */
.rs-split-word { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .1em; margin-bottom: -.1em; }
.rs-split-word__inner { display: inline-block; transition: translate 1.6s var(--rs-ease); }
.rs.is-enhanced [data-rs-split].is-waiting .rs-split-word__inner { translate: 0 105%; }
.rs-split-word__inner.rs-shine { animation: rs-shine 14s ease-in-out infinite; }
/* Cena i przełącznik tempa (kup.php; hero i blok rozkładu, makieta: .buy, .tempo). Cena ze sklepu
   (wc_price): kwota krojem UI jak .num, waluta kursywą jak .buy__currency, VAT wersalikami. */
.rs-buy { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; margin: 0 0 24px; }
.rs .rs-buy__price { margin: 0; color: var(--rs-ink); font: 400 46px/1 var(--rs-heading); white-space: nowrap; }
.rs-buy__amount .woocommerce-Price-amount { font-family: var(--rs-ui); font-weight: 500; font-size: .92em; }
.rs-buy__amount .woocommerce-Price-currencySymbol { color: var(--rs-faint); font: italic 400 21px var(--rs-heading); }
.rs .rs-buy__amount .z-vat-note { display: block; margin: 7px 0 0; padding: 0; color: var(--rs-faint); font: 500 11.5px/1 var(--rs-ui); letter-spacing: .06em; text-transform: uppercase; opacity: 1; }
.rs-tempo-field { display: flex; flex-direction: column; gap: 8px; }
.rs-tempo-field__label { color: var(--rs-faint); font: 500 11px/1 var(--rs-ui); letter-spacing: .2em; text-transform: uppercase; }
.rs-tempo { display: inline-flex; flex-wrap: wrap; gap: 3px; padding: 3px; border: 1px solid color-mix(in srgb, var(--rs-akcent) 38%, transparent); border-radius: 40px; background: rgb(255 255 255 / 3%); }
.rs .rs-tempo__opt { padding: 9px 15px; border: 0; border-radius: 30px; background: transparent; color: var(--rs-muted); font: 500 13px/1.2 var(--rs-ui); cursor: pointer; transition: background .45s var(--rs-ease), color .45s, box-shadow .45s; }
.rs .rs-tempo__opt:hover { color: var(--rs-ink); }
.rs .rs-tempo__opt.is-active { background: color-mix(in srgb, var(--rs-akcent) 16%, transparent); box-shadow: inset 0 0 0 1px var(--rs-akcent); color: var(--rs-ink); }
.rs-tempo__opt.is-active .rs-tempo__name { color: var(--rs-akcent); }
.rs .rs-tempo__opt:focus-visible { outline: 2px solid var(--rs-akcent); outline-offset: 2px; }
/* Przycisk z notką: hero (makieta .hero__cta) i zakończenie (.closing__actions, wyśrodkowane). */
.rs-cta { display: flex; flex-direction: column; align-items: flex-start; }
.rs-cta--center { align-items: center; gap: 6px; margin-top: 30px; }
/* Panel zakupu w bloku rozkładu (makieta .buy-panel): cena z przełącznikiem nad przyciskiem, kreska u góry. */
.rs-buy-panel { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; align-self: stretch; margin-top: 26px; padding-top: 24px; border-top: 1px solid var(--rs-hairline); }
.rs-buy-panel .rs-buy { margin: 0; }
.rs-buy-panel__cta { display: flex; flex-direction: column; align-items: flex-start; }
/* Pojedyncza opinia (opinia.php; makieta .proof): pod sceną bram i w zakończeniu. */
.rs-proof { display: grid; gap: 22px; max-width: 640px; margin: 46px 0 0; }
.rs-proof--center { margin-inline: auto; text-align: center; justify-items: center; }
.rs .rs-proof__quote { position: relative; margin: 0; padding: 22px 26px; border: 1px solid var(--rs-line); border-radius: 4px; background: rgb(255 255 255 / 3%); color: var(--rs-ink); font: italic 400 21px/1.45 var(--rs-heading); }
.rs-band--paper .rs-proof__quote { background: var(--rs-paper); }
.rs-proof__source { display: flex; align-items: center; gap: 8px; margin-top: 12px; color: var(--rs-faint); font: normal 500 12.5px var(--rs-ui); }
.rs-proof--center .rs-proof__source { justify-content: center; }
.rs-proof__source .rs-icon { width: 15px; height: 15px; }
/* Suwak opinii (opinie-suwak.php; makieta .review-slider): przewijalny także bez skryptu. */
.rs-slider { align-self: stretch; width: 100%; min-width: 0; margin-top: 28px; }
.rs-slider__track { display: flex; gap: 16px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.rs-slider__track::-webkit-scrollbar { display: none; }
.rs .rs-slider__slide { flex: 0 0 100%; margin: 0; padding: 16px 18px 14px; border: 1px solid color-mix(in srgb, var(--rs-akcent) 28%, transparent); border-left: 2px solid var(--rs-akcent); border-radius: 6px; background: rgb(255 255 255 / 3.5%); color: var(--rs-ink); font: italic 400 19px/1.45 var(--rs-heading); scroll-snap-align: start; }
.rs-slider__slide .rs-stars { margin-bottom: 6px; }
.rs-slider__source { display: flex; align-items: center; gap: 8px; margin-top: 10px; color: var(--rs-faint); font: normal 500 12.5px var(--rs-ui); }
.rs-slider__source .rs-icon { width: 15px; height: 15px; }
.rs-slider__nav { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 14px; }
.rs .rs-slider__next { display: grid; place-items: center; width: 46px; height: 46px; padding: 0; border: 1px solid var(--rs-akcent); border-radius: 50%; background: color-mix(in srgb, var(--rs-akcent) 12%, transparent); color: var(--rs-akcent); cursor: pointer; transition: background .4s, color .4s, translate .4s; }
.rs-slider__next .rs-icon { width: 18px; height: 18px; }
.rs .rs-slider__next:is(:hover, :focus-visible) { background: var(--rs-akcent); color: #1a1406; translate: 2px 0; }
/* Pasek przyklejony na telefonie: po minięciu przycisku hero, schowany przy [data-rs-dock-hide]
   (blok rozkładu, akcje zakończenia). Bez JS zostaje schowany atrybutem hidden; JS zdejmuje go raz i przełącza is-on. */
.rs-dock { position: fixed; inset: auto 12px calc(12px + env(safe-area-inset-bottom)); z-index: 20; opacity: 0; visibility: hidden; translate: 0 140%; transition: translate .4s var(--rs-ease), opacity .4s, visibility 0s .4s; }
.rs-dock.is-on { opacity: 1; visibility: visible; translate: none; transition: translate .4s var(--rs-ease), opacity .4s; }
.rs .rs-dock .rs-btn { width: 100%; box-shadow: 0 12px 30px rgb(0 0 0 / 50%); }
/* Pasek pływa nad każdym tłem (noc, papier, białe karty opinii): pierścień dwukolorowy, ciemny obrys
   z lawendową obwódką, widoczny wszędzie (WCAG 1.4.11). */
.rs .rs-dock .rs-btn:focus-visible { outline: 2px solid var(--rs-night); outline-offset: 2px; box-shadow: 0 0 0 4px var(--rs-akcent), 0 12px 30px rgb(0 0 0 / 50%); }
@media (min-width: 760px) {
    .rs-dock { display: none; }
}
@media (max-width: 860px) {
    .rs-band { padding-block: 76px; }
    .rs-band--continue { padding-top: 20px; }
}
@media (max-width: 600px) {
    .rs-band { padding-block: 58px; }
    .rs-band--continue { padding-top: 14px; }
    .rs-band.rs-band--oferta { padding-top: 64px; }
    .rs .rs-title { margin-bottom: 16px; }
    .rs .rs-head { margin-bottom: 34px; }
    .rs .rs-eyebrow { gap: 10px; letter-spacing: .2em; }
    .rs-eyebrow::after, .rs-eyebrow--center::before { flex-basis: 26px; }
    /* Cena: przełącznik NAD ceną, dwie równe opcje, nazwa i czas w dwóch liniach, bez nawiasów. */
    .rs-buy { flex-direction: column; align-items: stretch; gap: 18px; margin-bottom: 20px; }
    .rs .rs-buy__price { font-size: 40px; }
    .rs-tempo-field { order: -1; }
    .rs-tempo { display: grid; grid-template-columns: 1fr 1fr; width: 100%; border-radius: 12px; }
    .rs .rs-tempo__opt { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px; border-radius: 9px; font-size: 12.5px; line-height: 1.2; }
    .rs-tempo__name { font-weight: 600; }
    .rs-tempo__time { color: var(--rs-faint); font-size: 11.5px; }
    .rs-tempo__paren { display: none; }
    .rs-cta { align-items: stretch; }
    .rs-cta--center { align-items: center; }
    .rs .rs-cta .rs-btn { width: 100%; }
    .rs-buy-panel__cta { align-items: stretch; width: 100%; }
    .rs .rs-buy-panel__cta .rs-btn { width: 100%; }
    .rs .rs-proof__quote { padding: 18px; font-size: 19px; }
    .rs .rs-slider__slide { font-size: 17px; }
}
@media (prefers-reduced-motion: reduce) {
    .rs *, .rs *::before, .rs *::after { animation: none !important; transition: none !important; }
    .rs.is-enhanced [data-rs-reveal].is-waiting { opacity: 1; translate: none; }
    .rs.is-enhanced .rs-eyebrow.is-waiting::after, .rs.is-enhanced .rs-eyebrow.is-waiting::before { transform: none; }
    .rs.is-enhanced [data-rs-split].is-waiting .rs-split-word__inner { translate: none; }
    .rs-iskry { display: none; }
}
/* ==== /RS:BAZA ==== */
/* ==== RS:HERO ==== */
/* §1 Hero (template-parts/rozklad-strona/hero.php; makieta: .hero, .trust, .ask-stage--celtic).
   Cena, przełącznik tempa i przycisk z notką to kup.php (RS:BAZA: .rs-buy, .rs-tempo, .rs-cta). */
.rs-hero { position: relative; padding: 34px 0 100px; }
.rs-hero__grid { display: grid; grid-template-columns: 1.12fr .88fr; gap: 44px; align-items: center; }
.rs-hero__copy { min-width: 0; }
.rs .rs-hero__title { max-width: 720px; margin: 4px 0 24px; font-size: clamp(40px, 5vw, 66px); font-weight: 400; line-height: 1.04; text-wrap: balance; }
.rs-hero__accent { font-style: italic; }
.rs .rs-hero__scene { max-width: 590px; margin: 0 0 14px; color: var(--rs-ink); font: italic 300 22px/1.55 var(--rs-reading); text-wrap: pretty; }
.rs .rs-hero__offer { max-width: 590px; margin: 0 0 32px; color: var(--rs-muted); text-wrap: pretty; }
/* Zaufanie: odznaka oceny Google i bezpieczne płatności (wzór .rt-trust huba). */
.rs-trust { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 30px; }
.rs .rs-rating { display: flex; align-items: center; gap: 14px; padding: 12px 18px 12px 12px; border-radius: 4px; background: var(--rs-paper); color: #1c1a17; text-decoration: none; box-shadow: 0 12px 30px -14px rgb(0 0 0 / 70%); }
.rs .rs-rating:hover { color: #1c1a17; }
.rs-rating__logo { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1px #ece6da; }
.rs-rating__logo .rs-icon { width: 22px; height: 22px; }
.rs-rating__score { font: 600 28px/1 var(--rs-heading); }
.rs-rating__stars { display: block; color: #f5b400; font-size: 15px; line-height: 1; letter-spacing: 1.5px; }
.rs-rating__count { display: block; margin-top: 3px; color: #4a4440; font: 500 12.5px/1.2 var(--rs-ui); }
.rs-payments { display: flex; flex-direction: column; justify-content: center; gap: 8px; padding: 10px 16px; border: 1px solid var(--rs-hairline); border-radius: 4px; background: rgb(255 255 255 / 3%); }
.rs .rs-payments__label { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--rs-ink); font: 500 12.5px var(--rs-ui); }
.rs-payments__label .rs-icon { width: 15px; height: 15px; color: var(--rs-bright); }
.rs .rs-payments__list { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.rs .rs-payments__logo { display: inline-flex; align-items: center; height: 24px; padding: 0 8px; border-radius: 3px; background: #fff; color: #1c1a17; font: 800 10.5px/1 var(--rs-ui); letter-spacing: .02em; }
.rs .rs-payments__logo--blik { background: #000; color: #fff; }
.rs .rs-payments__logo--payu { color: #a6c307; }
.rs .rs-payments__logo--stripe { color: #635bff; font-weight: 700; }
.rs .rs-payments__logo--visa { color: #1a1f71; font-style: italic; font-weight: 900; letter-spacing: .04em; }
.rs .rs-payments__logo--mastercard { padding: 0 6px; }
.rs-payments__logo--mastercard span { display: block; width: 14px; height: 14px; border-radius: 50%; background: #eb001b; }
.rs-payments__logo--mastercard span + span { margin-left: -6px; background: #f79e1b; mix-blend-mode: multiply; }
/* Scena: kartka z pytaniami nad Krzyżem Celtyckim (makieta .ask-stage.ask-stage--celtic). */
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; max-width: 540px; aspect-ratio: 1 / 1.16; margin-left: auto; }
:where(.rs--mini) .rs-ask { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; max-width: 540px; aspect-ratio: 1 / 1.04; margin-left: auto; }
.rs-ask__glow { position: absolute; left: 50%; top: 56%; width: 96%; aspect-ratio: 1; border-radius: 50%; transform: translate(-50%, -50%); background: radial-gradient(circle, color-mix(in srgb, var(--rs-akcent) 20%, transparent) 0%, color-mix(in srgb, var(--rs-akcent) 6%, transparent) 42%, transparent 68%); animation: rs-breathe 12s ease-in-out infinite; }
.rs-ask__sky { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; color: var(--rs-akcent); pointer-events: none; }
:where(.rs--pelny, .rs--partnerski, .rs--mini) .rs-ask__motif { transform-origin: 200px 132px; animation: rs-spin 240s linear infinite; }
:where(.rs--finansowy) .rs-ask__motif { transform-origin: 200px 132px; translate: 0 -11.3px; animation: rs-spin 240s linear infinite; }
/* Kartka papieru z pinezką w akcencie. */
.rs-ask__note { position: relative; z-index: 2; width: 88%; max-width: 440px; padding: 24px 28px 22px; border-radius: 3px; background: var(--rs-paper) var(--rs-grain); color: #2a1f18; box-shadow: 0 30px 60px -26px rgb(0 0 0 / 90%), 0 0 0 1px rgb(232 201 120 / 35%); transform: rotate(-2deg); }
.rs-ask__note::before { content: ''; position: absolute; inset: 7px; border: 1px solid rgb(168 133 63 / 25%); border-radius: 2px; pointer-events: none; }
.rs-ask__pin { position: absolute; left: 50%; top: -9px; width: 16px; height: 16px; margin-left: -8px; border-radius: 50%; background: radial-gradient(circle at 38% 34%, #fff7e2, var(--rs-akcent) 55%, color-mix(in srgb, var(--rs-akcent) 62%, #000)); box-shadow: 0 3px 6px rgb(0 0 0 / 50%); }
.rs:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask__text { min-height: 4.1em; margin: 0; color: #2a1f18; font: italic 500 clamp(19px, 1.75vw, 22px)/1.36 var(--rs-heading); }
.rs:where(.rs--mini) .rs-ask__text { min-height: 2.7em; margin: 0; color: #2a1f18; font: italic 500 clamp(23px, 2.5vw, 29px)/1.3 var(--rs-heading); }
.rs-ask__caret { display: inline-block; width: 2px; height: 1em; margin-left: 3px; vertical-align: -.14em; background: var(--rs-wine); animation: rs-caret 1.05s steps(1) infinite; }
@keyframes rs-caret { 50% { opacity: 0; } }
.rs-ask__line { display: block; height: 1px; margin-top: 12px; background: linear-gradient(90deg, var(--rs-akcent), color-mix(in srgb, var(--rs-akcent) 15%, transparent)); }
/* Układ dziesięciu kart: pozycje i obroty z PHP (--x, --y, --r, % pudełka układu). Karty mają
   proporcje talii motywu (337 × 610, makieta 128 × 212), więc pudełko jest wyższe w tej samej
   proporcji: odstępy w pionie liczone w wysokościach karty zostają jak w makiecie. */
:where(.rs--pelny) .rs-ask__cards { position: relative; z-index: 1; width: min(48%, 250px); aspect-ratio: 4.54 / 7.6545; margin-top: 30px; }
:where(.rs--partnerski) .rs-ask__cards { position: relative; z-index: 1; width: min(48%, 250px); aspect-ratio: 1 / 1.4596; margin-top: 30px; }
:where(.rs--mini) .rs-ask__cards { position: relative; z-index: 1; display: flex; justify-content: center; align-items: flex-start; gap: 7.3%; width: 84%; margin-top: 38px; }
:where(.rs--finansowy) .rs-ask__cards { position: relative; z-index: 1; width: min(48%, 250px); aspect-ratio: 1 / 1.6276; margin-top: 30px; }
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask__card { position: absolute; left: var(--x); top: var(--y); width: 22.03%; aspect-ratio: 337 / 610; perspective: 700px; transform: rotate(var(--r, 0deg)); }
:where(.rs--mini) .rs-ask__card { position: relative; width: 24.7%; aspect-ratio: 337 / 610; perspective: 700px; }
:where(.rs--mini) .rs-ask__card:nth-child(1) { transform: rotate(-9deg) translateY(14px); }
:where(.rs--mini) .rs-ask__card:nth-child(3) { transform: rotate(9deg) translateY(14px); }
.rs-ask__inner { position: absolute; inset: 0; transform-style: preserve-3d; transition: transform 1.1s var(--rs-ease); }
.rs-ask__card.is-flipped .rs-ask__inner { transform: rotateY(180deg); }
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask__face { position: absolute; inset: 0; display: block; width: 100%; height: 100%; border-radius: 3px; backface-visibility: hidden; box-shadow: 0 0 0 1px rgb(232 201 120 / 55%), 0 12px 22px -10px rgb(0 0 0 / 90%); }
:where(.rs--mini) .rs-ask__face { position: absolute; inset: 0; display: block; width: 100%; height: 100%; border-radius: 5px; backface-visibility: hidden; box-shadow: 0 0 0 1px rgb(232 201 120 / 60%), 0 20px 36px -12px rgb(0 0 0 / 90%); }
.rs .rs-ask__face { max-width: none; }
/* Karty to <img>, nie SVG jak w makiecie: bez natywnego przeciągania i menu obrazka (jak karty bram). */
.rs-ask__face { -webkit-user-drag: none; -webkit-touch-callout: none; user-select: none; }
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask__face--front { transform: rotateY(180deg); box-shadow: 0 0 0 1px rgb(255 241 200 / 95%), 0 0 18px 2px rgb(255 241 200 / 22%), 0 12px 22px -10px rgb(0 0 0 / 90%); }
:where(.rs--mini) .rs-ask__face--front { transform: rotateY(180deg); box-shadow: 0 0 0 1px rgb(255 241 200 / 95%), 0 0 30px 4px rgb(255 241 200 / 28%), 0 20px 36px -12px rgb(0 0 0 / 90%); }
:where(.rs--partnerski, .rs--finansowy) .rs-ask__face[hidden] { display: none; }
.rs-ask__card.is-flipped .rs-ask__face--front { animation: rs-card-glow 3.2s ease-in-out infinite; }
/* Powrót kart rewersem do góry przy starcie skryptu: bez obrotu (scena czeka wtedy ukryta). */
:where(.rs--finansowy) .rs-ask__coin { position: absolute; left: 42%; top: 23.76%; width: 16%; aspect-ratio: 1; pointer-events: none; filter: drop-shadow(0 0 10px rgb(232 201 120 / 35%)); }
:where(.rs--finansowy) .rs-ask__coin svg { display: block; width: 100%; height: 100%; }
.rs-ask.is-instant .rs-ask__inner { transition: none; }
@media (max-width: 980px) {
    .rs-hero__grid { grid-template-columns: 1fr; gap: 40px; }
    .rs-ask { max-width: 440px; margin: 0 auto; }
}
@media (max-width: 600px) {
    .rs-hero { padding-top: 20px; padding-bottom: 58px; }
    .rs .rs-hero .rs-eyebrow { margin-bottom: 14px; }
    .rs .rs-hero__title { margin-bottom: 16px; font-size: 37px; }
    .rs .rs-hero__scene { margin-bottom: 10px; font-size: 18.5px; line-height: 1.5; }
    .rs .rs-hero__offer { margin-bottom: 22px; font-size: 16px; line-height: 1.6; }
    .rs-ask { max-width: 340px; aspect-ratio: auto; padding: 16px 0 26px; }
    .rs-ask__note { padding: 20px 20px 18px; }
    .rs:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask__text { min-height: 4.2em; font-size: 17.5px; }
    .rs:where(.rs--mini) .rs-ask__text { min-height: 2.6em; font-size: 21px; }
    :where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-ask__cards { width: min(62%, 210px); }
    :where(.rs--mini) .rs-ask__cards { margin-top: 30px; }
}
@media (prefers-reduced-motion: reduce) {
    /* Animacje i przejścia wyłącza RS:BAZA; iskra SMIL nie podlega CSS, więc znika. */
}
@media (max-width: 600px) {
    :where(.rs--partnerski) .rs-ask__motif { translate: 0 -15.2px; }
    :where(.rs--finansowy) .rs-ask__motif { translate: 0 -14.5px; }
}
@media (prefers-reduced-motion: reduce) {
    .rs-ask__spark { display: none; }
}
/* ==== /RS:HERO ==== */
/* ==== RS:PYTANIE ==== */
/* §2 „Twoja sytuacja” (#pytanie, template-parts/rozklad-strona/pytanie.php; makieta: .portraits, .q-card,
   .stake-permission, .stake, .ask, .swap z _makiety/szczegoly.css). Pas dnia (.rs-band--paper) daje tokeny,
   złotą kreskę u góry .rs-band--kreska. Reguły pod .rs-pytanie: reset akapitów bazy (.rs p) ma 0,1,1. */
.rs-pytanie__portrety { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-top: 8px; }
/* Kartka z portretem: obrót zostaje także po pojawieniu (makieta: transform kartki wygrywa z wjazdem reveal). */
.rs-portret { position: relative; padding: 30px 30px 26px; border: 1px solid rgb(168 133 63 / 35%); border-radius: 4px; background: var(--rs-paper); box-shadow: 0 26px 50px -34px rgb(60 40 10 / 50%); }
.rs-portret::before { content: ''; position: absolute; inset: 7px; border: 1px solid rgb(168 133 63 / 16%); border-radius: 2px; pointer-events: none; }
.rs-portret:nth-child(4n+1) { transform: rotate(-.7deg); }
.rs-portret:nth-child(4n+2) { transform: rotate(.6deg); }
.rs-portret:nth-child(4n+3) { transform: rotate(.4deg); }
.rs-portret:nth-child(4n+4) { transform: rotate(-.5deg); }
/* Kartki pojawiają się samym kryciem, bez wjazdu o 10px (jak w makiecie). */
.rs.is-enhanced .rs-portret.is-waiting { translate: none; }
.rs-pytanie .rs-portret__pytanie { display: flex; align-items: flex-start; gap: 14px; margin: 0 0 12px; color: var(--rs-ink); font: italic 500 26px/1.25 var(--rs-heading); }
.rs-pytanie .rs-portret__znak { flex: none; width: 34px; height: 34px; padding: 7px; margin-top: 2px; border: 1px solid rgb(168 133 63 / 55%); border-radius: 50%; color: #8e6e2f; }
.rs-pytanie .rs-portret__scena { margin: 0; color: var(--rs-muted); font-size: 17px; line-height: 1.6; text-wrap: pretty; }
/* Pozwolenie i stawka pod portretami (stawka zawsze tuż pod pozwoleniem: 14px, także na telefonie). */
.rs-pytanie .rs-pytanie__pozwolenie { max-width: 640px; margin: 48px auto 0; color: var(--rs-muted); font-size: 18px; line-height: 1.6; text-align: center; text-wrap: balance; }
.rs-pytanie .rs-pytanie__stawka { max-width: 760px; margin: 14px auto 0; color: var(--rs-wine); font: italic 400 clamp(25px, 2.7vw, 32px)/1.4 var(--rs-heading); text-align: center; text-wrap: balance; }
/* „Jak pytać”: kreska nad blokiem, wstęp i trzy pary „Zamiast / Zapytaj”. */
.rs-jak { margin-top: 100px; padding-top: 76px; border-top: 1px solid var(--rs-line); }
.rs-jak__head { max-width: 780px; }
.rs-pytanie .rs-jak__wstep { max-width: 680px; margin: 0; color: var(--rs-muted); font: italic 300 21px/1.6 var(--rs-reading); }
.rs-jak__pary { display: grid; gap: 18px; margin: 38px 0 0; }
.rs-para { display: grid; grid-template-columns: minmax(0, 1fr) 46px minmax(0, 1.1fr); align-items: center; gap: 8px 18px; padding: 24px 28px 22px; border: 1px solid var(--rs-line); border-radius: 4px; background: rgb(251 248 242 / 75%); }
.rs-para__etykieta { display: block; margin-bottom: 8px; color: var(--rs-faint); font: 500 11px/1 var(--rs-ui); letter-spacing: .24em; text-transform: uppercase; }
.rs-para__na .rs-para__etykieta { color: #8e6e2f; }
/* Przekreślenie „Zamiast” (wino) i podkreślenie „Zapytaj” (akcent) rysują się po pojawieniu pary.
   Stan końcowy jest domyślny (bez JS, reduced-motion); zero tylko w oczekiwaniu, bez przejścia w tę stronę. */
.rs-para__q { display: inline; background-repeat: no-repeat; font: italic 400 22px/1.4 var(--rs-heading); transition: background-size 1.4s var(--rs-ease) .5s; }
.rs-para__z .rs-para__q { color: var(--rs-faint); background-image: linear-gradient(var(--rs-wine), var(--rs-wine)); background-position: 0 58%; background-size: 100% 1.5px; }
.rs-para__na .rs-para__q { color: var(--rs-ink); font-weight: 500; background-image: linear-gradient(var(--rs-akcent), var(--rs-akcent)); background-position: 0 100%; background-size: 100% 2px; transition-delay: 1.3s; }
.rs.is-enhanced .rs-para.is-waiting .rs-para__q { background-size: 0 1.5px; transition: none; }
.rs.is-enhanced .rs-para.is-waiting .rs-para__na .rs-para__q { background-size: 0 2px; }
.rs-para__strzalka { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid rgb(168 133 63 / 50%); border-radius: 50%; color: #8e6e2f; }
.rs-para__strzalka .rs-icon { width: 16px; height: 16px; }
.rs-pytanie .rs-para__uwaga { grid-column: 1 / -1; margin: 10px 0 0; padding-top: 12px; border-top: 1px solid var(--rs-hairline); color: var(--rs-muted); font: 400 15.5px/1.55 var(--rs-ui); }
.rs-pytanie .rs-jak__wiecej { max-width: 760px; margin: 30px 0 0; color: var(--rs-muted); font: italic 300 20px/1.6 var(--rs-reading); }
:where(.rs--finansowy) .rs-pytanie .rs-jak__wiecej b { color: var(--rs-ink); font-style: normal; font-weight: 500; }
@media (max-width: 860px) {
    .rs-pytanie__portrety { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .rs-portret { padding: 24px 22px 22px; }
    .rs-pytanie .rs-portret__pytanie { gap: 12px; font-size: 23px; }
    .rs-pytanie .rs-portret__znak { width: 30px; height: 30px; padding: 6px; }
    .rs-pytanie .rs-pytanie__pozwolenie { margin-top: 36px; font-size: 17px; }
    .rs-jak { margin-top: 64px; padding-top: 52px; }
    .rs-pytanie .rs-jak__wstep { font-size: 19px; }
    .rs-para { grid-template-columns: 1fr; gap: 10px; padding: 20px 20px 18px; }
    .rs-para__strzalka { width: 34px; height: 34px; transform: rotate(90deg); }
    .rs-para__q { font-size: 20px; }
    .rs-pytanie .rs-jak__wiecej { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) {
    /* Jak makieta (.swap__q{background-size:100% 1.5px!important}): obie kreski 1,5px. */
    .rs-para__na .rs-para__q { background-size: 100% 1.5px; }
}
/* ==== /RS:PYTANIE ==== */
/* ==== RS:BRAMY ==== */
/* §2a „W twoim rozkładzie” (#w-rozkladzie, template-parts/rozklad-strona/bramy.php, bramy-rytual.php
   i rekwizyty-<slug>.php; liczby sceny z dostawcy w inc/rozklad-strona-bramy.php):
   scena bram Krzyża Celtyckiego z notatkami kroków dookoła (makieta: _makiety/szczegoly.css §scena bram,
   opcje strony gate-map--celtic, --gm-ar 520/500, --gs .42, --gm-label 14px, --gm-track .16em,
   --gm-num 12.5px, --gm-ignite 2.15s). Kolor sceny = akcent Pełnego (--rs-akcent).
   Stan domyślny (bez JS, reduced-motion) = koniec rozdania: karty licem do góry, strzałki narysowane,
   notatki widoczne. Ukrycie przed rozdaniem dopiero z klasą is-armed (JS, gdy jest IO i ruch).
   Karta: transform = rozdanie/obrót/skala, osobna właściwość translate = uniesienie aktywnej karty
   (karta) i unoszenie się (obrót) — dwie niezależne warstwy ruchu jak w makiecie. */
.rs-bramy { overflow-x: clip; }
.rs-bramy__head { max-width: 820px; margin: 0 auto 54px; text-align: center; }
:where(.rs--pelny) .rs-bramy__mapa {
    --rs-bramy-label: 14px; --rs-bramy-track: .16em; --rs-bramy-num: 12.5px; --rs-bramy-ignite: 2.15s;
    position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(520px, 1.7fr) minmax(0, 1fr);
    grid-template-areas: "left fig right"; gap: 40px 44px; align-items: center;
}
:where(.rs--partnerski) .rs-bramy__mapa {
    --rs-bramy-label: 14px; --rs-bramy-track: .16em; --rs-bramy-num: 12.5px; --rs-bramy-ignite: 2.05s;
    position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(520px, 1.7fr) minmax(0, 1fr);
    grid-template-areas: "left fig right"; gap: 40px 44px; align-items: center;
}
:where(.rs--mini) .rs-bramy__mapa {
    --rs-bramy-label: 16px; --rs-bramy-track: .22em; --rs-bramy-num: 15px; --rs-bramy-ignite: 1.8s;
    position: relative; display: grid; grid-template-columns: minmax(0, .8fr) minmax(500px, 1.8fr) minmax(0, .8fr);
    grid-template-areas: "left fig right"; gap: 44px 48px; align-items: center;
}
:where(.rs--finansowy) .rs-bramy__mapa {
    --rs-bramy-label: 14px; --rs-bramy-track: .16em; --rs-bramy-num: 12.5px; --rs-bramy-ignite: 2.1s;
    position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(520px, 1.7fr) minmax(0, 1fr);
    grid-template-areas: "left fig right"; gap: 40px 44px; align-items: center;
}
.rs-bramy__paski { display: none; }
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-bramy__noty { display: flex; flex-direction: column; gap: 26px; }
:where(.rs--mini) .rs-bramy__noty { display: flex; flex-direction: column; gap: 40px; }
.rs-bramy__noty--lewe { grid-area: left; }
.rs-bramy__noty--prawe { grid-area: right; }
.rs .rs-bramy__figura { grid-area: fig; margin: 0; }
:where(.rs--pelny, .rs--finansowy) .rs-bramy__scena {
    position: relative; aspect-ratio: 520 / 500; container-type: inline-size;
    transform: perspective(1100px) rotateX(var(--rs-bramy-rx, 0deg)) rotateY(var(--rs-bramy-ry, 0deg));
    transition: transform .6s cubic-bezier(.2, .7, .2, 1);
}
:where(.rs--partnerski) .rs-bramy__scena {
    position: relative; aspect-ratio: 520 / 470; container-type: inline-size;
    transform: perspective(1100px) rotateX(var(--rs-bramy-rx, 0deg)) rotateY(var(--rs-bramy-ry, 0deg));
    transition: transform .6s cubic-bezier(.2, .7, .2, 1);
}
:where(.rs--mini) .rs-bramy__scena {
    position: relative; aspect-ratio: 520 / 440; container-type: inline-size;
    transform: perspective(1100px) rotateX(var(--rs-bramy-rx, 0deg)) rotateY(var(--rs-bramy-ry, 0deg));
    transition: transform .6s cubic-bezier(.2, .7, .2, 1);
}
/* Bez przejść na chwilę uzbrojenia (JS): stan rozdania znika bez ruchu, zanim scena wejdzie w ekran. */
.rs-bramy__mapa.is-instant *, .rs-bramy__mapa.is-instant *::before, .rs-bramy__mapa.is-instant *::after { transition: none !important; }
/* Warstwy SVG: tło (poświata, pierścienie) i tusz (strzałki, podpisy, komety). */
.rs-bramy__warstwa { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.rs-bramy__warstwa--tusz { z-index: 3; transition: opacity .5s ease; }
.rs-bramy__mapa:is(.is-odp, .is-rytual) .rs-bramy__warstwa--tusz { opacity: 0; }
.rs-bramy__akcent { stop-color: var(--rs-akcent); }
.rs-bramy__pierscien { stroke: var(--rs-akcent); transform-box: fill-box; transform-origin: center; animation: rs-spin 120s linear infinite; }
.rs-bramy__pierscien--tyl { animation-duration: 170s; animation-direction: reverse; }
/* Poświata z iskrami za kartami bieżącej bramy (pozycję i rozmiar ustawia JS: --fx --fy --fw --fh). */
:where(.rs--finansowy) .rs-bramy__moneta { transition: opacity .6s ease; }
:where(.rs--finansowy) .rs-bramy__mapa:is(.is-odp, .is-rytual) .rs-bramy__moneta { opacity: 0; }
.rs-bramy__fokus {
    position: absolute; z-index: 1; top: var(--fy, 16%); left: var(--fx, 37%); width: var(--fw, 26%); height: var(--fh, 62%);
    opacity: 0; pointer-events: none;
    transition: left .9s cubic-bezier(.3, .7, .2, 1), width .9s cubic-bezier(.3, .7, .2, 1), top .9s cubic-bezier(.3, .7, .2, 1), height .9s cubic-bezier(.3, .7, .2, 1), opacity .6s ease;
}
.rs-bramy__fokus::before { content: ''; position: absolute; inset: -14%; border-radius: 50%; background: radial-gradient(closest-side, color-mix(in srgb, var(--rs-akcent) 34%, transparent), color-mix(in srgb, var(--rs-akcent) 9%, transparent) 62%, transparent); }
.rs-bramy__mapa.is-focus .rs-bramy__fokus { opacity: 1; }
.rs-bramy__mapa.is-odp .rs-bramy__fokus { opacity: 0; }
/* Iskry (.rs-iskry, RS:BAZA) startują w poświacie wyżej niż nad zdjęciem. */
.rs-bramy__iskry i { bottom: 30%; }
/* Karty: miejsce (--x --y --r), rozdanie z dołu sceny (--dx --dy, --deal), odkrycie (--flip),
   unoszenie (--float), miniatura na stronie PDF (--gx --gy --gr), znikanie przy rytuale (--rs-bramy-cx). */
:where(.rs--pelny) .rs-bramy__karta {
    position: absolute; z-index: 2; left: var(--x); top: var(--y); width: var(--rs-bramy-cw, 9.15%); aspect-ratio: 337 / 610; perspective: 800px;
    transform: translate(0, 0) rotate(var(--r)) scale(1);
    transition: transform 1.1s cubic-bezier(.2, .8, .2, 1) var(--deal), opacity .7s ease var(--deal), translate .7s cubic-bezier(.3, .7, .2, 1), left .9s cubic-bezier(.3, .7, .2, 1) var(--deal), top .9s cubic-bezier(.3, .7, .2, 1) var(--deal);
}
:where(.rs--partnerski, .rs--finansowy) .rs-bramy__karta {
    position: absolute; z-index: 2; left: var(--x); top: var(--y); width: var(--rs-bramy-cw, 10.065%); aspect-ratio: 337 / 610; perspective: 800px;
    transform: translate(0, 0) rotate(var(--r)) scale(1);
    transition: transform 1.1s cubic-bezier(.2, .8, .2, 1) var(--deal), opacity .7s ease var(--deal), translate .7s cubic-bezier(.3, .7, .2, 1), left .9s cubic-bezier(.3, .7, .2, 1) var(--deal), top .9s cubic-bezier(.3, .7, .2, 1) var(--deal);
}
:where(.rs--mini) .rs-bramy__karta {
    position: absolute; z-index: 2; left: var(--x); top: var(--y); width: var(--rs-bramy-cw, 18.3%); aspect-ratio: 337 / 610; perspective: 800px;
    transform: translate(0, 0) rotate(var(--r)) scale(1);
    transition: transform 1.1s cubic-bezier(.2, .8, .2, 1) var(--deal), opacity .7s ease var(--deal), translate .7s cubic-bezier(.3, .7, .2, 1), left .9s cubic-bezier(.3, .7, .2, 1) var(--deal), top .9s cubic-bezier(.3, .7, .2, 1) var(--deal);
}
.rs-bramy__mapa.is-armed:not(.is-dealt) .rs-bramy__karta { opacity: 0; transform: translate(var(--dx), var(--dy)) rotate(0deg) scale(.88); }
.rs-bramy__obrot {
    position: absolute; inset: 0; transform-style: preserve-3d; transform: rotateY(180deg);
    transition: transform 1s cubic-bezier(.3, .7, .2, 1) var(--flip);
    animation: rs-bramy-unies 6.5s ease-in-out infinite; animation-delay: var(--float);
}
.rs-bramy__mapa.is-armed:not(.is-dealt) .rs-bramy__obrot { transform: none; }
@keyframes rs-bramy-unies { 0%, 100% { translate: 0 0; } 50% { translate: 0 -6px; } }
.rs .rs-bramy__strona {
    position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none; border-radius: 4px; backface-visibility: hidden;
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--rs-akcent) 60%, transparent), 0 18px 30px -10px rgb(0 0 0 / 90%);
}
.rs .rs-bramy__strona--lico { overflow: hidden; transform: rotateY(180deg); box-shadow: 0 0 0 1px rgb(255 241 200 / 90%), 0 18px 30px -10px rgb(0 0 0 / 90%); transition: box-shadow .7s ease; }
.rs:where(.rs--pelny, .rs--mini) .rs-bramy__strona--lico img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; }
/* Karty to <img> (lica z talii), nie SVG jak w makiecie: bez natywnego przeciągania (zatrzymywałoby
   paralaksę) i bez menu obrazka po przytrzymaniu palcem w relacjach. */
.rs:where(.rs--partnerski, .rs--finansowy) .rs-bramy__strona--lico :is(img, svg) { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.rs-bramy__karta img { -webkit-user-drag: none; -webkit-touch-callout: none; user-select: none; }
.rs-bramy__strona--lico::after { content: ''; position: absolute; top: -20%; bottom: -20%; left: -60%; width: 60%; background: linear-gradient(100deg, transparent, rgb(255 244 214 / 80%), transparent); transform: translateX(-60%) skewX(-14deg); opacity: 0; }
.rs-bramy__strona--lico.is-shine::after { animation: rs-bramy-blysk 1.15s cubic-bezier(.3, .6, .3, 1); }
@keyframes rs-bramy-blysk { 0% { transform: translateX(-60%) skewX(-14deg); opacity: 0; } 20% { opacity: 1; } 100% { transform: translateX(330%) skewX(-14deg); opacity: 0; } }
.rs-bramy__karta.is-active { translate: 0 -6%; }
.rs .rs-bramy__karta.is-active .rs-bramy__strona--lico { box-shadow: 0 0 0 1px #fff1c8, 0 0 28px 6px color-mix(in srgb, var(--rs-akcent) 48%, transparent), 0 24px 34px -12px rgb(0 0 0 / 90%); }
/* Podpisy bram: strzałka rysuje się po rozdaniu (--d), grot na końcu, kometa po ścieżce (SMIL, JS). */
.rs-bramy__brama { transition: opacity .6s ease var(--d); }
.rs-bramy__mapa.is-armed:not(.is-dealt) .rs-bramy__brama { opacity: 0; }
.rs-bramy__tusz { opacity: .7; transition: opacity .6s ease; }
.rs-bramy__brama.is-active .rs-bramy__tusz { opacity: 1; }
.rs-bramy__strzalka, .rs-bramy__grot { fill: none; stroke: var(--rs-akcent); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.rs-bramy__strzalka { stroke-dasharray: 1; stroke-dashoffset: 0; transition: stroke-dashoffset 1s ease calc(var(--d) + .2s); }
.rs-bramy__mapa.is-armed:not(.is-dealt) .rs-bramy__strzalka { stroke-dashoffset: 1; }
.rs-bramy__grot { transition: opacity .3s ease calc(var(--d) + 1.1s); }
.rs-bramy__mapa.is-armed:not(.is-dealt) .rs-bramy__grot { opacity: 0; }
.rs-bramy__kolko { fill: var(--rs-akcent); }
.rs-bramy__numer { fill: #1a1406; font: 600 var(--rs-bramy-num) var(--rs-ui); text-anchor: middle; }
.rs-bramy__podpis { fill: #f1e8d8; font: 500 var(--rs-bramy-label) var(--rs-ui); letter-spacing: var(--rs-bramy-track); }
/* Krok „odpowiedzi”: karty jako wachlarz miniatur u góry strony PDF, pismo rośnie linijka po linijce. */
:where(.rs--pelny) .rs-bramy__mapa.is-odp .rs-bramy__karta { left: var(--gx); top: var(--gy); transform: translate(0, 0) rotate(var(--gr)) scale(.42); }
:where(.rs--partnerski, .rs--finansowy) .rs-bramy__mapa.is-odp .rs-bramy__karta { left: var(--gx); top: var(--gy); transform: translate(0, 0) rotate(var(--gr)) scale(.4); }
:where(.rs--mini) .rs-bramy__mapa.is-odp .rs-bramy__karta { left: var(--gx); top: var(--gy); transform: translate(0, 0) rotate(var(--gr)) scale(.41); }
/* Krok „rytuał”: karty i strona znikają w środku, rekwizyty spadają z odbiciem, świeca się zapala. */
:where(.rs--pelny) .rs-bramy__mapa.is-rytual .rs-bramy__karta { left: var(--rs-bramy-cx, 45.425%); top: 37.388%; opacity: 0; transform: translate(0, 0) rotate(0deg) scale(.5); }
:where(.rs--partnerski) .rs-bramy__mapa.is-rytual .rs-bramy__karta { left: var(--rs-bramy-cx, 44.967%); top: 38%; opacity: 0; transform: translate(0, 0) rotate(0deg) scale(.5); }
:where(.rs--mini) .rs-bramy__mapa.is-rytual .rs-bramy__karta { left: var(--rs-bramy-cx, 40.85%); top: 27.273%; opacity: 0; transform: translate(0, 0) rotate(0deg) scale(.5); }
:where(.rs--finansowy) .rs-bramy__mapa.is-rytual .rs-bramy__karta { left: var(--rs-bramy-cx, 44.967%); top: 40%; opacity: 0; transform: translate(0, 0) rotate(0deg) scale(.5); }
.rs-bramy__pdf { position: absolute; z-index: 1; left: 27%; top: 13%; width: 46%; height: 72%; opacity: 0; transform: translateY(3%) scale(.94); transition: opacity .45s ease, transform .7s cubic-bezier(.3, .7, .2, 1); pointer-events: none; }
.rs-bramy__mapa.is-odp .rs-bramy__pdf { opacity: 1; transform: none; transition-delay: .3s; }
.rs-bramy__kartka { position: absolute; inset: 0; padding: 40% 10% 0; border-radius: 1cqw; background: #f4ecdb; box-shadow: 0 0 0 1px rgb(255 241 200 / 90%), 0 3cqw 6cqw -2cqw rgb(0 0 0 / 90%), 0 0 9cqw rgb(255 214 130 / 20%); }
.rs-bramy__kartka::before { content: ''; position: absolute; inset: 2.4%; border: 1px solid rgb(122 36 51 / 42%); border-radius: .6cqw; }
.rs .rs-bramy__pdf-tytul { margin: 0 0 7%; color: #7a2433; font: 600 2.2cqw/1 var(--rs-ui); letter-spacing: .24em; text-align: center; text-transform: uppercase; }
.rs-bramy__linia { display: block; width: var(--w); height: 1.1cqw; margin: 0 0 3.5cqw; border-radius: 1cqw; background: rgb(122 36 51 / 30%); transform: scaleX(0); transform-origin: left center; transition: transform .2s ease; }
.rs-bramy__mapa.is-odp .rs-bramy__linia { transform: scaleX(1); transition: transform .34s ease calc(.9s + var(--i) * .2s); }
.rs-bramy__rytual { position: absolute; inset: 0; z-index: 1; display: block; width: 100%; height: 100%; overflow: visible; pointer-events: none; opacity: 0; transition: opacity .3s ease; }
.rs-bramy__mapa.is-rytual .rs-bramy__rytual { opacity: 1; transition: opacity .4s ease .3s; }
:where(.rs--finansowy) .rs-bramy__material { opacity: 0; transform-box: fill-box; transform-origin: 50% 50%; transform: scaleX(.6); transition: opacity .2s ease, transform .2s ease; }
:where(.rs--finansowy) .rs-bramy__mapa.is-rytual .rs-bramy__material { opacity: 1; transform: none; transition: opacity .6s ease var(--pd, .35s), transform .8s cubic-bezier(.3, .8, .3, 1) var(--pd, .35s); }
.rs-bramy__rekwizyt { opacity: 0; transform-box: fill-box; transform-origin: 50% 100%; }
.rs-bramy__mapa.is-rytual .rs-bramy__rekwizyt { animation: rs-bramy-rekwizyt .75s cubic-bezier(.3, .6, .4, 1) var(--pd) both; }
@keyframes rs-bramy-rekwizyt { 0% { opacity: 0; transform: translateY(-34px) scale(.9); } 45% { opacity: 1; transform: translateY(0) scale(1.07, .93); } 68% { transform: translateY(-6px) scale(.98, 1.03); } 86% { transform: translateY(0) scale(1.01, .99); } 100% { opacity: 1; transform: none; } }
.rs-bramy__blysk { opacity: 0; }
.rs-bramy__mapa.is-rytual .rs-bramy__blysk { animation: rs-bramy-rozblysk 1.1s ease calc(var(--pd) + .3s) both; }
@keyframes rs-bramy-rozblysk { 0% { opacity: 0; } 25% { opacity: .95; } 100% { opacity: 0; } }
.rs-bramy__swieca { position: absolute; z-index: 2; left: 31%; top: 9%; width: 38%; opacity: 0; transform: translateY(4%) scale(.9); transition: opacity .5s ease, transform .8s cubic-bezier(.3, .7, .2, 1); pointer-events: none; }
.rs-bramy__mapa.is-rytual .rs-bramy__swieca { opacity: 1; transform: none; transition-delay: .35s; }
.rs-bramy__swieca-rys { display: block; width: 100%; height: auto; overflow: visible; }
.rs-bramy__swiatlo { opacity: 0; transition: opacity .2s ease; }
.rs-bramy__mapa.is-rytual .rs-bramy__swiatlo { opacity: 1; transition: opacity 1.1s ease calc(var(--rs-bramy-ignite) + .1s); }
.rs-bramy__swiatlo-kolo { animation: rs-breathe 4.6s ease-in-out infinite; }
.rs-bramy__zaplon { transform-box: fill-box; transform-origin: 50% 100%; transform: scale(0); transition: transform .2s ease; }
.rs-bramy__mapa.is-rytual .rs-bramy__zaplon { transform: scale(1); transition: transform .7s cubic-bezier(.3, 1.7, .5, 1) var(--rs-bramy-ignite); }
.rs-bramy__plomien { transform-box: fill-box; transform-origin: 50% 100%; animation: rs-bramy-plomien 3.4s ease-in-out infinite; }
@keyframes rs-bramy-plomien { 0%, 100% { transform: scaleY(1) skewX(0); } 22% { transform: scaleY(1.07) skewX(-2.5deg); } 48% { transform: scaleY(.94) skewX(1.8deg); } 74% { transform: scaleY(1.04) skewX(-1deg); } }
/* Notatki kroków: numer w kółku (świeci przy bieżącym kroku), tytuł, tekst; kreska do sceny na komputerze. */
.rs-bramy__nota { position: relative; }
.rs-bramy__nota-num {
    display: inline-flex; flex: none; align-items: center; justify-content: center; min-width: 26px; height: 26px; padding: 0 8px; border-radius: 13px;
    background: var(--rs-akcent); color: #1a1406; font: 600 12.5px/1 var(--rs-ui); letter-spacing: 0;
    transition: box-shadow .6s ease, transform .6s ease;
}
.rs-bramy__nota.is-on .rs-bramy__nota-num { box-shadow: 0 0 0 6px color-mix(in srgb, var(--rs-akcent) 30%, transparent); transform: scale(1.08); }
.rs .rs-bramy__nota-tytul { display: flex; align-items: baseline; gap: 12px; margin: 0 0 8px; color: var(--rs-ink); font: 500 26px/1.2 var(--rs-heading); text-wrap: balance; }
.rs .rs-bramy__nota-tekst { margin: 0; color: var(--rs-muted); font-size: 17px; line-height: 1.62; text-wrap: pretty; }
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-bramy__noty--lewe .rs-bramy__nota::after { content: ''; position: absolute; top: 15px; right: -40px; width: 32px; height: 1px; background: linear-gradient(90deg, transparent, var(--rs-akcent)); }
:where(.rs--mini) .rs-bramy__noty--lewe .rs-bramy__nota::after { content: ''; position: absolute; top: 15px; right: -44px; width: 36px; height: 1px; background: linear-gradient(90deg, transparent, var(--rs-akcent)); }
:where(.rs--pelny, .rs--partnerski, .rs--finansowy) .rs-bramy__noty--prawe .rs-bramy__nota::before { content: ''; position: absolute; top: 15px; left: -40px; width: 32px; height: 1px; background: linear-gradient(90deg, var(--rs-akcent), transparent); }
:where(.rs--mini) .rs-bramy__noty--prawe .rs-bramy__nota::before { content: ''; position: absolute; top: 15px; left: -44px; width: 36px; height: 1px; background: linear-gradient(90deg, var(--rs-akcent), transparent); }
.rs .rs-bramy__opinia { margin-top: 50px; }
@media (min-width: 981px) {
    /* Notatki pojawiają się kaskadą razem z rozdaniem (--rs-bramy-reveal ustawia JS). */
    .rs.is-enhanced .rs-bramy__nota[data-rs-reveal] { transition-delay: var(--rs-bramy-reveal, 0s); }
}
/* Telefon i tablet: scena nad notatkami. Z JS (is-stories) jak relacje: dziewięć pasków, pod sceną
   notatka bieżącego kroku; bez JS wszystkie notatki jedna pod drugą. */
@media (max-width: 980px) {
    .rs-bramy__mapa { grid-template-columns: 1fr; grid-template-areas: "bar" "fig" "left" "right"; gap: 18px; max-width: 560px; margin: 0 auto; }
    .rs .rs-bramy__figura { width: 100%; max-width: 460px; margin: 0 auto; }
    .rs-bramy__scena { transform: none; }
    .rs-bramy__nota::before, .rs-bramy__nota::after { display: none; }
    .rs-bramy__mapa.is-stories { grid-template-areas: "bar" "fig" "note"; }
    .rs-bramy__mapa.is-stories .rs-bramy__figura { touch-action: pan-y; cursor: pointer; -webkit-tap-highlight-color: transparent; }
    .rs-bramy__mapa.is-stories .rs-bramy__noty { display: contents; }
    .rs-bramy__mapa.is-stories .rs-bramy__paski { grid-area: bar; display: flex; gap: 6px; width: 100%; max-width: 460px; margin: 0 auto; }
    .rs-bramy__pasek { flex: 1; height: 3px; overflow: hidden; border-radius: 2px; background: rgb(241 232 216 / 20%); }
    .rs-bramy__pasek i { display: block; width: 100%; height: 100%; background: var(--rs-akcent); transform: scaleX(0); transform-origin: left center; }
    .rs-bramy__pasek.is-done i { transform: scaleX(1); }
    .rs-bramy__pasek.is-current i { animation: rs-bramy-pasek var(--t, 1500ms) linear forwards; }
    /* Wyższa specyficzność niż pojawianie się bazy (.rs.is-enhanced [data-rs-reveal].is-waiting). */
    .rs .rs-bramy__mapa.is-stories .rs-bramy__nota[data-rs-reveal] { grid-area: note; align-self: start; opacity: 0; visibility: hidden; translate: none; transition: opacity .25s ease, visibility 0s linear .25s; }
    .rs .rs-bramy__mapa.is-stories .rs-bramy__nota.is-on[data-rs-reveal] { opacity: 1; visibility: visible; transition: opacity .4s ease .25s, visibility 0s linear .25s; }
}
@keyframes rs-bramy-pasek { to { transform: scaleX(1); } }
@media (max-width: 600px) {
    .rs .rs-bramy__nota-tekst { font-size: 16px; }
    .rs .rs-bramy__nota-tytul { font-size: 23px; }
}
@media (prefers-reduced-motion: reduce) {
    /* Baza wyłącza animacje i przejścia całej strony; rekwizyty stoją widoczne (scena rytuału po najechaniu/dotknięciu). */
    .rs-bramy__rekwizyt { opacity: 1; }
}
/* ==== /RS:BRAMY ==== */
/* ==== RS:ROZKLAD ==== */
/* §3 Rozkład (#rozklad; template-parts/rozklad-strona/rozklad.php). Przekład makiety 05.10.2026:
   ceremonie.css (.rite, .rite--featured, .package-card__fact*, .packages__pay, .rite__sparks) i szczegoly.css
   (.arch*, .offer-axis, .rite__art-sticky, panel i suwak w bloku). Pasmo, nagłówek, cena, przełącznik,
   przycisk i suwak — z RS:BAZA; tu tylko blok oferty, łuk zdjęcia i płatność. */
/* Blok rozkładu: dwie kolumny (zdjęcie .85, treść 1.15), mocna ramka w akcencie Pełnego. */
.rs-oferta {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    border: 1.5px solid var(--rs-akcent);
    border-radius: 8px;
    background: #15111d;
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--rs-akcent) 28%, transparent), 0 50px 90px -40px rgb(0 0 0 / 90%);
}
/* Blok pojawia się od razu, bez przejścia bazy (makieta: własne transition .rite kasuje przejście
   [data-reveal], więc blok wskakuje, a nagłówek nad nim wjeżdża łagodnie). */
.rs.is-enhanced .rs-oferta[data-rs-reveal] { transition: none; }
.rs-oferta__art { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 16px; padding: 46px 34px 36px; border-right: 1px solid var(--rs-hairline); }
/* Na komputerze zdjęcie jedzie obok treści (top makiety 48px pod przyklejonym nagłówkiem serwisu). */
.rs-oferta__sticky { position: sticky; top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--zoriana-header-h, 0px) + 48px); display: flex; flex-direction: column; align-items: center; gap: 24px; width: 100%; }
/* Łuk ze zdjęciem: podwójna rama w akcencie, oddech zdjęcia, gwiazdki wokół i iskry znad świecy. */
.rs-luk { position: relative; width: 100%; max-width: 380px; aspect-ratio: 3 / 4; }
.rs-luk::before { content: ''; position: absolute; inset: -14px; border: 1px solid color-mix(in srgb, var(--rs-akcent) 30%, transparent); border-radius: 50% 50% 12px 12px / 37.5% 37.5% 12px 12px; pointer-events: none; }
.rs-luk__frame { position: absolute; inset: 0; overflow: hidden; border-radius: 50% 50% 8px 8px / 37.5% 37.5% 8px 8px; box-shadow: 0 0 0 1px color-mix(in srgb, var(--rs-akcent) 75%, transparent), 0 0 0 7px rgb(15 12 22 / 92%), 0 0 0 8px color-mix(in srgb, var(--rs-akcent) 30%, transparent), 0 34px 70px -24px rgb(0 0 0 / 95%); }
.rs .rs-luk__photo { display: block; width: 100%; max-width: none; height: 100%; object-fit: cover; animation: rs-rozklad-breathe 16s ease-in-out infinite alternate; }
@keyframes rs-rozklad-breathe { from { transform: scale(1.02); } to { transform: scale(1.08) translate(-1%, -.8%); } }
.rs-luk__stars { position: absolute; left: -12%; top: -8%; width: 124%; height: 116%; overflow: visible; pointer-events: none; }
.rs-luk__twinkle { fill: #fff1c8; }
.rs-luk__glints { fill: var(--rs-akcent); }
/* Iskry (.rs-iskry, RS:BAZA) startują nad świecą na zdjęciu. */
.rs-luk__sparks i { bottom: 16%; }
/* Znak pod zdjęciem (kartka z pytaniami → krzyż kart → PDF) i podpis. */
.rs-oferta__axis { display: block; width: 100%; max-width: 300px; height: auto; color: var(--rs-akcent); }
.rs .rs-oferta__caption { margin: 0; color: var(--rs-muted); font: 500 12.5px/1.4 var(--rs-ui); text-align: center; }
/* Treść bloku. */
.rs-oferta__body { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: 44px 48px 40px; }
.rs-oferta__tag { display: inline-block; margin-bottom: 18px; padding: 10px 20px; border: 1px solid var(--rs-akcent); border-radius: 30px; background: var(--rs-akcent); color: #1a1406; font: 600 12.5px/1 var(--rs-ui); letter-spacing: .04em; }
.rs .rs-oferta__title { font-size: clamp(34px, 3.6vw, 46px); }
.rs .rs-oferta__lead { margin: 10px 0 22px; color: var(--rs-akcent); font: italic 300 19px/1.5 var(--rs-reading); }
.rs .rs-oferta__facts { align-self: stretch; margin: 0; padding: 0; border-bottom: 1px solid var(--rs-hairline); list-style: none; }
.rs .rs-oferta__fact { display: flex; align-items: flex-start; gap: 14px; padding: 11px 0; border-top: 1px solid var(--rs-hairline); color: var(--rs-ink); font: 400 15.5px/1.45 var(--rs-ui); }
.rs .rs-oferta__fact--key { font-weight: 600; }
.rs-oferta__icon.rs-icon { flex: 0 0 32px; width: 32px; height: 32px; padding: 7px; border: 1px solid color-mix(in srgb, var(--rs-akcent) 45%, transparent); border-radius: 50%; color: var(--rs-akcent); }
.rs-oferta__fact--key .rs-oferta__icon { border-color: var(--rs-akcent); background: color-mix(in srgb, var(--rs-akcent) 22%, transparent); }
/* Suwak w bloku stoi bliżej panelu zakupu (makieta: .detail .rite .review-slider 26px zamiast 28px). */
.rs-oferta .rs-slider { margin-top: 26px; }
/* Płatność pod blokiem. */
.rs .rs-rozklad__pay { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 36px 0 0; color: var(--rs-muted); font: 500 14px/1.4 var(--rs-ui); }
.rs-rozklad__pay .rs-icon { width: 15px; height: 15px; color: var(--rs-bright); }
@media (max-width: 980px) {
    .rs-oferta { grid-template-columns: minmax(0, 1fr); }
    .rs-oferta__art { border: 0; border-bottom: 1px solid var(--rs-hairline); }
    .rs-oferta__sticky { position: static; }
    .rs-luk { max-width: 320px; }
    .rs-oferta__body { padding: 34px 30px 32px; }
}
@media (max-width: 600px) {
    .rs-oferta__art { padding: 34px 24px 26px; }
    .rs-luk { max-width: 250px; }
    .rs-oferta__body { padding: 28px 20px 26px; }
    .rs .rs-rozklad__pay { margin-top: 26px; }
}
/* Ruch i iskry wyłącza reduced-motion w RS:BAZA. */
/* ==== /RS:ROZKLAD ==== */
/* ==== RS:KONIEC ==== */
/* §4 PDF (pdf.php): ciemna ramka w jasnym pasie (makieta: .pdf-feature, ceremonie.css sekcja 17,
   wygląd z /o-mnie/), tokeny nocy lokalnie na ramce; tło ramki = --rs-surface (pas dnia go nie zmienia). */
.rs-pdf {
    --rs-ink: #f1e8d8; --rs-muted: #cfc4b2; --rs-gold: #d4b05a; --rs-bright: #e8c978;
    position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center;
    padding: 64px; overflow: hidden;
    border: 1px solid rgb(212 176 90 / 55%); outline: 1px solid rgb(212 176 90 / 20%); outline-offset: -12px;
    background: radial-gradient(ellipse 60% 80% at 76% 50%, rgb(232 201 120 / 14%), transparent 70%), var(--rs-surface);
    color: var(--rs-ink);
    box-shadow: 0 50px 90px -50px rgb(15 12 22 / 85%);
}
.rs .rs-pdf__corner { position: absolute; width: 18px; height: 18px; color: var(--rs-gold); }
.rs-pdf__corner--tl { top: -1px; left: -1px; }
.rs-pdf__corner--tr { top: -1px; right: -1px; transform: scaleX(-1); }
.rs-pdf__corner--bl { bottom: -1px; left: -1px; transform: scaleY(-1); }
.rs-pdf__corner--br { right: -1px; bottom: -1px; transform: scale(-1); }
.rs .rs-pdf__title { max-width: 520px; font-size: clamp(38px, 4.6vw, 58px); }
.rs-pdf__accent { font-style: italic; }
.rs .rs-pdf__text { max-width: 520px; margin: 0; color: var(--rs-muted); }
.rs-pdf__stack { align-self: end; width: 100%; max-width: 470px; margin: 0 auto -64px; }
.rs-pdf__art { display: block; width: 100%; height: auto; overflow: hidden; }
/* „Kiedy już przeczytasz” (makieta .after): podkreślenie na kartce rysuje się przy wejściu;
   bez JS i przy reduced-motion jest od razu narysowane (is-waiting stawia tylko JS RS:BAZA). */
.rs-after { display: grid; grid-template-columns: .9fr 1.1fr; gap: 64px; align-items: center; margin-top: 110px; }
.rs-after__art { display: block; width: 100%; max-width: 340px; height: auto; margin: 0 auto; color: var(--rs-gold); }
.rs-after__underline { stroke-dasharray: 1; stroke-dashoffset: 0; transition: stroke-dashoffset 2.2s var(--rs-ease) .6s; }
.rs.is-enhanced .rs-after.is-waiting .rs-after__underline { stroke-dashoffset: 1; transition: none; }
/* §6 Pytania (pytania.php; makieta .faq): natywne details, plus obraca się w × przez [open]. */
.rs-faq { max-width: 860px; margin: 44px auto 0; border-top: 1px solid var(--rs-line); }
.rs-faq__item { border-bottom: 1px solid var(--rs-line); }
.rs .rs-faq__summary { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 22px 0; list-style: none; cursor: pointer; }
.rs-faq__summary::-webkit-details-marker { display: none; }
.rs-faq__question { color: var(--rs-ink); font: 500 clamp(21px, 2vw, 25px)/1.3 var(--rs-heading); }
.rs-faq__icon { position: relative; flex: none; width: 30px; height: 30px; margin-top: 2px; border: 1px solid var(--rs-line); border-radius: 50%; transition: transform .5s var(--rs-ease), border-color .5s; }
.rs-faq__icon::before, .rs-faq__icon::after { content: ''; position: absolute; top: 50%; left: 50%; width: 11px; height: 1px; margin: -.5px 0 0 -5.5px; background: var(--rs-bright); }
.rs-faq__icon::after { transform: rotate(90deg); }
.rs-faq__item[open] .rs-faq__icon { transform: rotate(45deg); border-color: var(--rs-gold); }
.rs .rs-faq__answer { max-width: 740px; margin: 0 0 24px; color: var(--rs-muted); }
/* §7 Zakończenie (koniec.php; makieta .closing). Opinia: .rs-proof (BAZA), akcje: .rs-cta--center (BAZA). */
.rs-closing { max-width: 780px; margin: 0 auto; text-align: center; }
.rs .rs-closing__text { max-width: 660px; margin: 22px auto 0; color: var(--rs-muted); font: italic 300 21px/1.65 var(--rs-reading); }
@media (max-width: 860px) {
    .rs-pdf { grid-template-columns: 1fr; gap: 40px; padding: 48px 32px; }
    .rs-pdf__stack { max-width: 400px; margin-bottom: -48px; }
    .rs-after { grid-template-columns: 1fr; gap: 40px; margin-top: 80px; }
}
@media (max-width: 600px) {
    .rs-pdf { padding: 40px 22px 34px; outline-offset: -8px; }
    .rs-pdf__stack { margin-bottom: -34px; }
    .rs-after__art { max-width: 260px; }
}
@media (prefers-reduced-motion: reduce) {
    .rs.is-enhanced .rs-after.is-waiting .rs-after__underline { stroke-dashoffset: 0; }
}
/* ==== /RS:KONIEC ==== */
/* ==== RS:OPINIE ==== */
/* §5 Opinie: wspólna sekcja reviews.php w wariancie papier (opinie-papier.css, ładowany później,
   priorytet 56). Reset kroju zostaje, bo .rs ustawia krój czytania; resety .rs omijają .rs-reviews. */
.rs-reviews { position: relative; font: 400 1rem/1.6 Poppins, sans-serif; font-variation-settings: normal; }
/* ==== /RS:OPINIE ==== */
