/* REVISI - wspólne tokeny. Wartości projektowe zmieniamy tutaj.
   Breakpoint 48rem pozostaje literalny: zmienne CSS nie działają w media queries. */
:root {
 --rv-line-body:1.6; --rv-line-heading:1.06;
 --rv-track-display:-.065em; --rv-track-heading:-.04em; --rv-track-label:.12em;
 --rv-size-label:.8rem; --rv-size-note:.85rem; --rv-size-subheading:1.5rem;
 --rv-size-specimen:clamp(1.6rem,4vw,3rem);
 --rv-logo-width:8rem; --rv-copy-width:38rem; --rv-title-width:10ch;
 --rv-button-height:3rem; --rv-swatch-height:10rem;
 --rv-border-width:1px; --rv-focus-width:3px; --rv-focus-offset:5px;
 --rv-skip-offset:-6rem; --rv-motion-fast:.15s; --rv-motion-button:.25s; --rv-ease-button:cubic-bezier(.2,.7,.3,1); --rv-arrow-turn:45deg;
}
@font-face{font-family:Space Grotesk;src:url('../assets/fonts/SpaceGrotesk-variable.ttf') format('truetype');font-weight:300 700;font-display:swap}
:root{--rv-red:#BC1824;--rv-paper:#F2EBEF;--rv-ink:#13080C;--rv-grey:#C1C1C1;--rv-font:'Space Grotesk',sans-serif;--rv-light:300;--rv-bold:700;--rv-space-1:.5rem;--rv-space-2:1rem;--rv-space-3:1.5rem;--rv-space-4:2rem;--rv-space-5:4rem;--rv-space-6:clamp(4rem,8vw,8rem);--rv-container:88rem;--rv-gutter:clamp(1.25rem,5vw,5rem);--rv-display:clamp(3rem,8vw,8rem);--rv-heading:clamp(2rem,4vw,4rem);--rv-body:clamp(1rem,1.2vw,1.2rem)}
*{box-sizing:border-box}body{margin:0;background:var(--rv-paper);color:var(--rv-ink);font-family:var(--rv-font);font-weight:var(--rv-light);font-size:var(--rv-body);line-height:var(--rv-line-body)}img{display:block;max-width:100%;height:auto}a{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:var(--rv-bold);line-height:var(--rv-line-heading)}h1{font-size:var(--rv-display);letter-spacing:var(--rv-track-display)}h2{font-size:var(--rv-heading);letter-spacing:var(--rv-track-heading)}h3{font-size:var(--rv-size-subheading)}.rv-container{max-width:var(--rv-container);margin-inline:auto;padding-inline:var(--rv-gutter)}.rv-label{font-size:var(--rv-size-label);letter-spacing:var(--rv-track-label);text-transform:uppercase;font-weight:var(--rv-bold)}.rv-hero{padding-block:var(--rv-space-6);display:grid;gap:var(--rv-space-5);align-items:center}.rv-hero h1{margin-block:var(--rv-space-3);max-width:var(--rv-title-width)}.rv-hero h1 span{color:var(--rv-red)}.rv-hero p{max-width:var(--rv-copy-width)}.rv-actions{display:flex;flex-wrap:wrap;gap:var(--rv-space-2);margin-top:var(--rv-space-4)}.rv-button{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--rv-space-4);padding:var(--rv-space-2) var(--rv-space-3);background:var(--rv-red);color:var(--rv-paper);text-decoration:none;font-weight:var(--rv-bold);min-height:var(--rv-button-height);border:var(--rv-border-width) solid var(--rv-red)}.rv-button--outline{background:transparent;color:var(--rv-ink);border-color:var(--rv-ink)}a:focus-visible{outline:var(--rv-focus-width) solid var(--rv-red);outline-offset:var(--rv-focus-offset)}.rv-section{padding-block:var(--rv-space-6);border-top:var(--rv-border-width) solid var(--rv-grey)}.rv-section h2{margin-block:var(--rv-space-2) var(--rv-space-5)}.rv-services{display:grid;gap:var(--rv-space-4)}.rv-service{border-top:var(--rv-border-width) solid var(--rv-ink);padding-top:var(--rv-space-3)}.rv-service h3{margin-block:var(--rv-space-3) var(--rv-space-2)}.rv-swatches{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--rv-space-2)}.rv-swatch{min-height:var(--rv-swatch-height);display:flex;align-items:flex-end;padding:var(--rv-space-3);font-weight:var(--rv-bold);border:var(--rv-border-width) solid var(--rv-grey)}.rv-swatch--red{background:var(--rv-red);color:var(--rv-paper)}.rv-swatch--ink{background:var(--rv-ink);color:var(--rv-paper)}.rv-swatch--grey{background:var(--rv-grey)}.rv-type{font-size:var(--rv-size-specimen);overflow-wrap:anywhere}.rv-footer{padding-block:var(--rv-space-4);border-top:var(--rv-border-width) solid var(--rv-grey)}.rv-skip{position:absolute;top:var(--rv-skip-offset);padding:var(--rv-space-2);background:var(--rv-paper)}.rv-skip:focus{top:0}.rv-note{font-size:var(--rv-size-note);margin-top:var(--rv-space-3)}
@media(min-width:48rem){.rv-services{grid-template-columns:repeat(3,minmax(0,1fr))}.rv-swatches{grid-template-columns:repeat(4,minmax(0,1fr))}}



/* Motyw marki: dwa paski tworzone w CSS. Używaj wyłącznie w obszarach
   wizualnych, przy zdjęciach/kartach; nie dodawaj do kontenerów tekstu.
   Element dekoracyjny: <span class="rv-bars" aria-hidden="true"></span>.
   Obrót: rv-bars--angled. Tło ciemne: rv-bars--on-dark.
   Tło czerwone: rv-bars--on-red. Pozycję ustala komponent nadrzędny. */
:root {
 --rv-bar-width:clamp(.75rem,2.5vw,2rem);
 --rv-bar-gap:var(--rv-space-2);
 --rv-bar-height:clamp(8rem,20vw,20rem);
 --rv-bar-angle:32deg;
}
.rv-bars {
 --rv-bar-first:var(--rv-ink);
 --rv-bar-second:var(--rv-red);
 --rv-bars-rotation:0deg;
 display:inline-flex;
 gap:var(--rv-bar-gap);
 width:max-content;
 height:var(--rv-bar-height);
 transform:rotate(var(--rv-bars-rotation));
 pointer-events:none;
 flex-shrink:0;
}
.rv-bars::before,.rv-bars::after {
 content:"";
 display:block;
 width:var(--rv-bar-width);
 height:100%;
 background:var(--rv-bar-first);
}
.rv-bars::after{background:var(--rv-bar-second)}
.rv-bars--angled{--rv-bars-rotation:var(--rv-bar-angle)}
.rv-bars--on-dark{--rv-bar-first:var(--rv-paper)}
.rv-bars--on-red{--rv-bar-second:var(--rv-paper)}

/* Spójne stany wszystkich przycisków: kolor, wypełnienie, obrót strzałki.
   Bez przesuwania przycisku. Te same stany dla focus klawiatury. */
.rv-button {
 --rv-button-hover-bg:var(--rv-ink);
 --rv-button-hover-text:var(--rv-paper);
 transition:background-color var(--rv-motion-button) var(--rv-ease-button),
            border-color var(--rv-motion-button) var(--rv-ease-button),
            color var(--rv-motion-button) var(--rv-ease-button);
}
.rv-button:hover,.rv-button:focus-visible {
 background-color:var(--rv-button-hover-bg);
 border-color:var(--rv-button-hover-bg);
 color:var(--rv-button-hover-text);
}
.rv-button-icon {
 display:inline-block;
 flex-shrink:0;
 line-height:1;
 transform:rotate(0deg);
 transition:transform var(--rv-motion-button) var(--rv-ease-button);
}
.rv-button:hover .rv-button-icon,.rv-button:focus-visible .rv-button-icon {
 transform:rotate(var(--rv-arrow-turn));
}
.rv-button--outline {
 background-color:transparent;
 background-image:linear-gradient(var(--rv-button-hover-bg),var(--rv-button-hover-bg));
 background-repeat:no-repeat;
 background-position:left center;
 background-size:0% 100%;
 transition:background-size var(--rv-motion-button) var(--rv-ease-button),
            border-color var(--rv-motion-button) var(--rv-ease-button),
            color var(--rv-motion-button) var(--rv-ease-button);
}
.rv-button--outline:hover,.rv-button--outline:focus-visible {
 background-color:transparent;
 background-size:100% 100%;
}
@media(prefers-reduced-motion:reduce) {
 .rv-button,.rv-button-icon {transition:none}
}

/* Hero: dekoracja ma własny obszar, nigdy nie leży pod tekstem. */
:root {
 --rv-hero-bar-height:clamp(12rem,28vw,28rem);
 --rv-hero-bar-width:clamp(1.5rem,3vw,3rem);
 --rv-hero-art-height:clamp(16rem,36vw,36rem);
 --rv-hero-art-padding:var(--rv-space-4);
}
.rv-hero-decoration{display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:var(--rv-hero-art-height);padding:var(--rv-hero-art-padding);pointer-events:none}
.rv-hero-decoration .rv-bars{--rv-bar-height:var(--rv-hero-bar-height);--rv-bar-width:var(--rv-hero-bar-width);--rv-bar-gap:var(--rv-space-3)}
@media(min-width:64rem){.rv-hero{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}}
@media(max-width:63.999rem){.rv-hero-decoration{display:none}}

/* Strzałki SVG: cienka kreska niezależna od grubości fontu przycisku. */
:root{--rv-button-icon-size:1.25rem;--rv-button-icon-stroke:1.2}
.rv-button-icon{width:var(--rv-button-icon-size);height:var(--rv-button-icon-size);overflow:visible;stroke:currentColor;stroke-width:var(--rv-button-icon-stroke);stroke-linecap:round;stroke-linejoin:round}

/* Skło revisi: oszczędnie, na powierzchniach z dekoracją za nimi.
   Kryjący fallback bez backdrop-filter; żadnego obniżania opacity tekstu. */
:root {
 --rv-glass-fill:color-mix(in srgb,var(--rv-paper) 78%,transparent);
 --rv-glass-border:color-mix(in srgb,var(--rv-paper) 75%,var(--rv-grey));
 --rv-glass-blur:14px;
}
.rv-glass{background:var(--rv-paper);border:var(--rv-border-width) solid var(--rv-glass-border)}
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)) {
 .rv-glass{background:var(--rv-glass-fill);backdrop-filter:blur(var(--rv-glass-blur));-webkit-backdrop-filter:blur(var(--rv-glass-blur))}
}

/* Szkło matowe: bez cienia, rozmyte tło i subtelny refleks powierzchni.
   Kolory refleksów są zatwierdzonym wyjątkiem od palety marki. */
:root {
 --rv-glass-fill:rgba(255,255,255,.24);
 --rv-glass-border:rgba(255,255,255,.6);
 --rv-glass-blur:22px;
 --rv-glass-saturation:115%;
 --rv-glass-highlight:rgba(255,255,255,.3);
 --rv-glass-highlight-end:rgba(255,255,255,.04);
}
.rv-glass {
 box-shadow:none;
 background-color:var(--rv-paper);
 background-image:linear-gradient(135deg,var(--rv-glass-highlight),var(--rv-glass-highlight-end));
 border-color:var(--rv-glass-border);
}
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)) {
 .rv-glass {
  background-color:var(--rv-glass-fill);
  backdrop-filter:blur(var(--rv-glass-blur)) saturate(var(--rv-glass-saturation));
  -webkit-backdrop-filter:blur(var(--rv-glass-blur)) saturate(var(--rv-glass-saturation));
 }
}

/* Wspólna ikona wszystkich akordeonów: ↘ zamknięte, ↗ otwarte. */
:root{--rv-accordion-closed-angle:90deg;--rv-accordion-open-angle:0deg}
.rv-accordion-icon{width:var(--rv-button-icon-size);height:var(--rv-button-icon-size);margin-left:auto;flex-shrink:0;stroke:currentColor;stroke-width:var(--rv-button-icon-stroke);stroke-linecap:round;stroke-linejoin:round;transform:rotate(var(--rv-accordion-closed-angle));transition:transform var(--rv-motion-button) var(--rv-ease-button)}
details[open]>summary .rv-accordion-icon{transform:rotate(var(--rv-accordion-open-angle))}
@media(prefers-reduced-motion:reduce){.rv-accordion-icon{transition:none}}

/* Odpowiedź animowana niezależnie od natywnego ukrywania details. */
:root{--rv-accordion-duration:.32s}
.rv-accordion-content{overflow:hidden}
.rv-accordion-content>p{margin:0;padding-bottom:var(--rv-space-4);max-width:var(--rv-home-reading,var(--rv-copy-width))}
.rv-accordion-icon{transition:transform var(--rv-accordion-duration) var(--rv-ease-button)}
details[data-accordion-enhanced]>summary .rv-accordion-icon{transform:rotate(var(--rv-accordion-closed-angle))}
details[data-accordion-enhanced][data-expanded="true"]>summary .rv-accordion-icon{transform:rotate(var(--rv-accordion-open-angle))}
@media(prefers-reduced-motion:reduce){.rv-accordion-icon{transition:none}}

/* Jedna powierzchnia dla wszystkich szklanych kart, bez lokalnych wariantów. */
.rv-glass.rv-glass {
 background-color:var(--rv-paper);
 background-image:linear-gradient(135deg,var(--rv-glass-highlight),var(--rv-glass-highlight-end));
 border:var(--rv-border-width) solid var(--rv-glass-border);
 box-shadow:none;
}
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)) {
 .rv-glass.rv-glass {
  background-color:var(--rv-glass-fill);
  backdrop-filter:blur(var(--rv-glass-blur)) saturate(var(--rv-glass-saturation));
  -webkit-backdrop-filter:blur(var(--rv-glass-blur)) saturate(var(--rv-glass-saturation));
 }
}

/* Wspólne separatory sekcji o identycznym tle. Linie na wspólnym styku nakładają się, bez podwójnej grubości. */
:root{--rv-section-divider-color:var(--rv-grey);--rv-section-divider-width:var(--rv-border-width)}
.rv-section--line-top,.rv-section--line-bottom{position:relative}
.rv-section--line-top::before,.rv-section--line-bottom::after{content:"";position:absolute;left:0;right:0;height:var(--rv-section-divider-width);background:var(--rv-section-divider-color);z-index:2;pointer-events:none}
.rv-section--line-top::before{top:0}
.rv-section--line-bottom::after{bottom:calc(-1 * var(--rv-section-divider-width))}

.rv-privacy{padding-block:var(--rv-space-6)}
.rv-privacy h1{font-size:var(--rv-heading);margin-bottom:var(--rv-space-3)}
.rv-privacy section{max-width:var(--rv-copy-width);margin-top:var(--rv-space-5)}
.rv-privacy section h2{font-size:var(--rv-size-subheading);margin-bottom:var(--rv-space-3)}
.rv-footer-privacy{display:flex;flex-wrap:wrap;gap:var(--rv-space-3);padding-bottom:var(--rv-space-3);font-size:var(--rv-size-note)}
.rv-footer-privacy button{background:none;border:0;color:inherit;padding:0;font:inherit;text-decoration:underline;cursor:pointer}
.rv-consent{position:fixed;inset:auto var(--rv-space-2) var(--rv-space-2);z-index:100;background:var(--rv-paper);padding:var(--rv-space-3);border:var(--rv-border-width) solid var(--rv-grey);max-width:42rem}
.rv-consent h2{font-size:var(--rv-size-subheading);margin-bottom:var(--rv-space-2)}
.rv-consent p{font-size:var(--rv-size-note)}
.rv-consent .rv-actions{margin-top:var(--rv-space-2)}
.rv-consent .rv-button{font:inherit;font-size:var(--rv-size-note);cursor:pointer}

/* Spokojny komunikat prywatności w kolorach marki. */
.rv-consent{background:var(--rv-ink);color:var(--rv-paper);border-color:var(--rv-ink);border-top:var(--rv-nav-line-width,2px) solid var(--rv-red);padding:var(--rv-space-4)}
.rv-consent p{color:var(--rv-grey);line-height:var(--rv-line-body);margin-bottom:var(--rv-space-2)}
.rv-consent>a{font-size:var(--rv-size-note);text-underline-offset:var(--rv-space-1)}
.rv-consent .rv-button{color:var(--rv-paper);border-color:var(--rv-grey);background-image:linear-gradient(var(--rv-paper),var(--rv-paper))}
.rv-consent .rv-button:is(:hover,:focus-visible){color:var(--rv-ink);border-color:var(--rv-paper)}

/* Prywatność centralnie na desktopie, mobilny układ bez zmian. */
@media(min-width:48rem){
 .rv-consent{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:calc(100% - 2 * var(--rv-space-4));max-width:42rem;background:var(--rv-red);color:var(--rv-paper);border-color:var(--rv-red);padding:var(--rv-space-4)}
 .rv-consent p{color:var(--rv-paper)}
 .rv-consent .rv-button{border-color:var(--rv-paper)}
}

/* Desktop: szeroki komunikat przy dolnej krawędzi, w marginesach strony. */
@media(min-width:48rem){
 .rv-consent{inset:auto var(--rv-gutter) var(--rv-space-2);transform:none;width:auto;max-width:none;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--rv-space-4);align-items:center}
 .rv-consent h2,.rv-consent p,.rv-consent>a{grid-column:1}
 .rv-consent .rv-actions{grid-column:2;grid-row:1 / 4;margin-top:0;justify-content:flex-end}
}

/* Mobilny komunikat prywatności bez czerwonego obramowania. */
@media(max-width:47.999rem){.rv-consent{border:0}}
