/* Montserrat hostowany lokalnie, font zmienny (jeden plik na wszystkie
   grubości 100–900). Własny hosting zamiast Google Fonts: brak transferu IP
   użytkownika do Google (RODO) i o jedno połączenie zewnętrzne mniej. */

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/montserrat-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/montserrat-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ==========================================================================
   Auto Serwis Hubert Kozielski, Q Service Racibórz
   Styl wzorowany na szablonie Voltura (licencja Envato Elements klienta).
   Typografia: Montserrat (całość). Akcent: zieleń Q Service.
   ========================================================================== */

:root {
  /* paleta bazowa, jak w szablonie Voltura */
  --c-bg:        #050607;
  --c-bg-2:      #07090A;
  --c-surface:   #121418;
  --c-line:      #2A2D32;
  --c-text:      #B6BCC9;
  --c-light:     #F4F4F7;

  /* akcent Q Service, limonka odczytana z szyldu warsztatu i oklein aut
     (próbki z 5 zdjęć: #55EA04 w słońcu, #6CD902 i #59DD02 w cieniu) */
  --c-accent:    #5FDD02;
  /* Po przejściu całej strony na czarne tło przygaszone warianty nie są już
     potrzebne, limonka na czerni ma kontrast ok. 11:1. Zmienne zostają,
     bo używa ich kilkanaście reguł. */
  --c-accent-ink: var(--c-accent);
  --c-accent-ink-sm: var(--c-accent);

  --f-head: "Montserrat", system-ui, sans-serif;
  --f-body: "Montserrat", system-ui, sans-serif;

  --wrap: 1440px;
  --pad: clamp(1.25rem, 4vw, 2.5rem);
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

/* przyklejony header zasłaniałby początek sekcji przy skoku do kotwicy */
html {
  scroll-padding-top: 5.5rem;
}

body {
  background: var(--c-bg);
  color: var(--c-text);
  font-family: var(--f-body);
  font-weight: 500;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}

/* ===== PRZYCISKI (kwadratowe, jak w szablonie) ===== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-body);
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: 0.02em;
  text-decoration: none;
  padding: 1.15rem 2.5rem;
  border-radius: 0;
  border: 1px solid transparent;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.btn--primary {
  background: var(--c-accent);
  color: var(--c-bg);
}

.btn--primary:hover {
  background: var(--c-light);
  color: var(--c-bg);
}

.btn--ghost {
  background: transparent;
  color: var(--c-light);
  border-color: rgba(244,244,247,0.25);
}

/* ciemnozielony, biały tekst ma na nim kontrast 6,6:1 */
.btn--deep {
  background: #276B04;
  color: #FFFFFF;
}

.btn--deep:hover {
  background: #2E7A05;
  color: #FFFFFF;
}

.btn--ghost:hover {
  border-color: var(--c-accent);
  color: var(--c-accent);
}

/* --- wariant 3D: wypukła powierzchnia (podświetlenie u góry, cień u dołu),
       bez odstającej płyty pod przyciskiem --- */

.btn--3d {
  position: relative;
  border-radius: 5px;
  transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.2s ease;
}

.btn--3d.btn--primary {
  background: linear-gradient(180deg, #83F02F 0%, #63E004 42%, #4CB402 100%);
  color: #0A1A00;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.65),
    inset 0 -2px 0 rgba(0,0,0,0.22),
    0 10px 22px rgba(0,0,0,0.45);
}

.btn--3d.btn--primary:hover {
  filter: brightness(1.08);
  transform: translateY(-2px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.7),
    inset 0 -2px 0 rgba(0,0,0,0.22),
    0 16px 30px rgba(0,0,0,0.5);
}

/* wciśnięcie, światło przenosi się na dół, powierzchnia „zapada się" */
.btn--3d.btn--primary:active {
  transform: translateY(1px);
  box-shadow:
    inset 0 3px 7px rgba(0,0,0,0.35),
    inset 0 -1px 0 rgba(255,255,255,0.25),
    0 4px 10px rgba(0,0,0,0.4);
}

.btn--3d.btn--deep {
  background: linear-gradient(180deg, #3A8F09 0%, #276B04 45%, #1C5203 100%);
  color: #FFFFFF;
  border-color: transparent;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.28),
    inset 0 -2px 0 rgba(0,0,0,0.3),
    0 10px 22px rgba(0,0,0,0.42);
}

.btn--3d.btn--deep:hover {
  filter: brightness(1.12);
  transform: translateY(-2px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.32),
    inset 0 -2px 0 rgba(0,0,0,0.3),
    0 16px 30px rgba(0,0,0,0.48);
}

.btn--3d.btn--deep:active {
  transform: translateY(1px);
  box-shadow:
    inset 0 3px 7px rgba(0,0,0,0.42),
    inset 0 -1px 0 rgba(255,255,255,0.14),
    0 4px 10px rgba(0,0,0,0.38);
}

/* osoby z ustawieniem „ogranicz ruch" nie dostają efektu unoszenia */
@media (prefers-reduced-motion: reduce) {
  .btn--3d,
  .btn--3d:hover,
  .btn--3d:active {
    transform: none;
  }
}

/* ===== HEADER ===== */

.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 30;
  border-bottom: 1px solid rgba(244,244,247,0.08);
  transition: background-color 0.35s ease, box-shadow 0.35s ease,
              border-color 0.35s ease;
}

/* po przewinięciu pasek przykleja się do treści, dostaje tło i cień,
   a górna belka informacyjna zwija się, żeby nie zabierać miejsca */
.header.is-stuck {
  background: rgba(5,6,7,0.9);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom-color: rgba(244,244,247,0.1);
  box-shadow: 0 12px 34px rgba(0,0,0,0.45);
}

/* --- górna belka: ocena Google, adres, godziny --- */

.topbar {
  overflow: hidden;
  max-height: 46px;
  border-bottom: 1px solid rgba(244,244,247,0.07);
  transition: max-height 0.35s ease, opacity 0.25s ease,
              border-color 0.35s ease;
}

.header.is-stuck .topbar,
body.nav-open .topbar {
  max-height: 0;
  opacity: 0;
  border-bottom-color: transparent;
}

.topbar__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 0.62rem var(--pad);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
}

.topbar__rating {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.78rem;
  color: var(--c-text);
  text-decoration: none;
  transition: color 0.2s ease;
}

.topbar__rating:hover {
  color: var(--c-light);
}

.topbar__stars {
  display: inline-flex;
  gap: 1px;
}

.topbar__stars svg {
  width: 13px;
  height: 13px;
  fill: #FFC107;
}

.topbar__score {
  font-weight: 700;
  color: var(--c-light);
}

.topbar__meta {
  display: flex;
  align-items: center;
  gap: 1.75rem;
}

.topbar__item {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.78rem;
  color: rgba(182,188,201,0.85);
}

.topbar__item svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: var(--c-accent);
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.header__inner {
  position: relative;
  z-index: 21;
  max-width: var(--wrap);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding: 1.15rem var(--pad);
  transition: padding 0.3s ease;
}

.header.is-stuck .header__inner {
  padding-top: 0.85rem;
  padding-bottom: 0.85rem;
}

/* Logo Q Service złożone z tekstu, bez pliku graficznego, bo warsztat nie
   dysponuje oryginałem z materiałów sieci. Krążek z literą Q w limonce sieci
   plus słowo SERVICE. Gdyby kiedyś pojawił się oficjalny plik SVG, wystarczy
   podmienić zawartość <a class="logo"> na <img>, style zostają. */
.logo,
.footbrand__logo {
  display: inline-flex;
  align-items: center;
  /* Q i napis nigdy nie rozjeżdżają się na osobne linie */
  flex-wrap: nowrap;
  gap: 0.4rem;
  font-family: var(--f-head);
  font-size: 1.15rem;
  color: var(--c-light);
  text-decoration: none;
  white-space: nowrap;
}

/* Litera Q jako wektor, nie znak z fontu: kształt z oryginalnego logo
   Q Service (gruby pierścień z ogonkiem) nie występuje w żadnym kroju. */
.logo__q {
  width: 1.75em;
  height: 1.75em;
  flex: none;
  color: var(--c-accent);
}

.logo__text {
  display: flex;
  flex-direction: column;
  line-height: 1.05;
}

.logo__word {
  font-weight: 800;
  letter-spacing: 0.07em;
}

/* Nazwa warsztatu pod słowem SERVICE. Q Service to sieć, a klient musi
   wiedzieć, czyj to konkretnie warsztat. */
.logo__sub {
  font-weight: 600;
  font-size: 0.5em;
  letter-spacing: 0.02em;
  color: rgba(182,188,201,0.85);
  white-space: nowrap;
}

.nav {
  display: flex;
  gap: 1.7rem;
}

.nav__link {
  position: relative;
  padding: 0.4rem 0;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--c-text);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.22s ease;
}

/* podkreślenie wyjeżdżające od lewej, ten sam ruch co wypełnienie przycisków */
.nav__link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: var(--c-accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.3s cubic-bezier(0.65, 0, 0.35, 1);
}

.nav__link:hover {
  color: var(--c-light);
}

.nav__link:hover::after {
  transform: scaleX(1);
}

.nav__link--active {
  color: var(--c-light);
}

.nav__link--active::after {
  transform: scaleX(1);
}

.header__actions {
  display: flex;
  align-items: center;
  gap: 1.1rem;
}

/* --- telefon w headerze: ikona + numer --- */

.header__phone {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  text-decoration: none;
  white-space: nowrap;
}

.header__phone-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid rgba(95,221,2,0.35);
  background: rgba(95,221,2,0.1);
  transition: background-color 0.25s ease;
}

.header__phone-ico svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: var(--c-accent);
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.header__phone:hover .header__phone-ico {
  background: rgba(95,221,2,0.22);
}

.header__phone-text {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}

.header__phone-label {
  font-size: 0.64rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.75);
}

.header__phone-num {
  font-family: var(--f-head);
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--c-light);
}

/* CTA w headerze, mniejszy wariant przycisku z wypełnieniem */

.header__btn.btn--fx {
  padding: 0.82rem 0.85rem 0.82rem 1.35rem;
  font-size: 0.8rem;
  gap: 0.65rem;
}

.header__btn .btn__arrow {
  width: 25px;
  height: 25px;
}

.header__btn .btn__arrow svg {
  width: 11px;
  height: 11px;
}

/* --- przycisk hamburgera (widoczny tylko poniżej 1100px) --- */

.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  width: 42px;
  height: 42px;
  padding: 0;
  background: none;
  border: 1px solid rgba(244,244,247,0.15);
  border-radius: 10px;
  cursor: pointer;
  flex-shrink: 0;
}

.nav-toggle__bar {
  width: 18px;
  height: 2px;
  background: var(--c-light);
  border-radius: 1px;
  transition: transform 0.25s ease, opacity 0.2s ease;
}

/* X po otwarciu */
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2) {
  opacity: 0;
}

.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* --- panel menu mobilnego --- */

.nav-drawer {
  position: fixed;
  inset: 0;
  top: 0;
  z-index: 20;
  display: flex;
  flex-direction: column;
  /* Belka z oceną zwija się przy otwartym panelu, więc odstęp liczymy
     na sam pasek z logo i hamburgerem, czyli ok. 79 px. */
  padding: 6rem 6vw 2rem;
  background: var(--c-bg);

  /* Panel zajmuje cały ekran, więc wjazd z boku wyglądał niechlujnie:
     przez ćwierć sekundy widać było stronę pod spodem, przeciętą pionową
     krawędzią. Pełnoekranowe panele wypadają lepiej na przenikaniu. */
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;

  /* dvh, nie vh: na telefonie pasek adresu przeglądarki chowa się i wraca,
     a 100vh liczy się do wysokości BEZ paska, przez co dół panelu wychodził
     poza ekran. dvh nadąża za rzeczywistą wysokością okna. */
  height: 100dvh;
  overflow: hidden;
}

/* Panel to teraz samo menu: siedem pozycji mieści się na każdym telefonie,
   więc przewijanie jest wyłączone celowo. Gdyby kiedyś doszły pozycje,
   trzeba tu wrócić i przywrócić overflow-y: auto. */
.nav-drawer > div:first-child {
  flex: 0 0 auto;
  overflow: hidden;
}

.nav-drawer.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}



.nav-drawer__links {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.nav-drawer__link {
  padding: 0.7rem 0;
  border-bottom: 1px solid rgba(244,244,247,0.08);
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.12rem;
  letter-spacing: -0.01em;
  color: var(--c-light);
  text-decoration: none;
}

.nav-drawer__link--active,
.nav-drawer__link:hover {
  color: var(--c-accent);
}

/* ocena Google na górze panelu mobilnego */
/* Pionowy padding nie jest tu kosmetyką: bez niego link ma 22 px wysokości,
   a to za mało na pewne trafienie palcem. Z paddingiem sięga zalecanych
   44 px, a ujemny margines po lewej trzyma tekst w jednej linii pionowej
   z resztą menu. */
.nav-drawer__rating {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1.1rem;
  margin-left: -0.65rem;
  padding: 0.7rem 0.65rem;
  border-radius: 8px;
  font-size: 0.82rem;
  color: var(--c-text);
  text-decoration: none;
  transition: background-color 0.2s ease;
}

.nav-drawer__rating:active {
  background: rgba(244,244,247,0.06);
}

.nav-drawer__rating .topbar__stars svg {
  width: 14px;
  height: 14px;
}

.nav-drawer__foot {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(244,244,247,0.08);
}

/* adres i godziny nad przyciskiem w panelu */
.nav-drawer__meta {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
}

.nav-drawer__meta .topbar__item {
  font-size: 0.85rem;
}

.nav-drawer__btn {
  width: 100%;
}

.nav-drawer__socials {
  display: flex;
  gap: 0.75rem;
}

/* blokada scrolla strony pod otwartym panelem */
body.nav-open {
  overflow: hidden;
}

/* ===== HERO ===== */

.hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--c-bg);
}

.hero__media {
  position: absolute;
  inset: 0;
}

/* Zdjęcie ma białe tło (render studyjny), więc jest przygaszone i wtopione
   w ciemną scenę. Docelowo warto podmienić na ciemne zdjęcie warsztatu. */
.hero__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 88% 50%;
  filter: grayscale(1) brightness(0.55) contrast(1.15);
}

.hero__scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, var(--c-bg) 4%, rgba(5,6,7,0.9) 32%, rgba(5,6,7,0.45) 60%, rgba(5,6,7,0.12) 100%),
    linear-gradient(0deg, var(--c-bg) 0%, rgba(5,6,7,0) 45%);
}

.hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 9rem var(--pad) 5rem;
}

/* --- tytuł: dwie linie wjeżdżające z dołu, akcent podkreślany markerem --- */

.hero__title {
  font-family: var(--f-head);
  font-weight: 800;
  font-size: clamp(2.2rem, 4.6vw, 3.7rem);
  line-height: 1.1;
  letter-spacing: -0.03em;
  color: var(--c-light);
  margin-bottom: 2rem;
}

.hero__line {
  display: block;
  will-change: transform;
}

.hero__mark {
  color: var(--c-accent);
}

.hero__lead {
  max-width: 34rem;
  font-size: 1.02rem;
  line-height: 1.8;
  color: var(--c-text);
  margin-bottom: 2.5rem;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

/* --- wejście sekcji: tytuł, treść i liczby pojawiają się po kolei --- */

@keyframes heroUp {
  from { opacity: 0; transform: translateY(38px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes heroFade {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

.hero__line {
  animation: heroUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.hero__line:nth-child(2) {
  animation-delay: 0.12s;
}

.hero__lead {
  animation: heroFade 0.7s ease 0.35s both;
}

.hero__actions {
  animation: heroFade 0.7s ease 0.5s both;
}

.hero .partners {
  animation: heroFade 0.7s ease 0.65s both;
}

/* bez animacji dla osób, które ich nie chcą */
@media (prefers-reduced-motion: reduce) {
  .hero__line,
  .hero__lead,
  .hero__actions,
  .hero .partners {
    animation: none;
  }
}

/* --- węższe ekrany --- */

/* ===== ELEMENTY WSPÓLNE SEKCJI ===== */

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--c-text);
  margin-bottom: 1.5rem;
}

.eyebrow::before {
  content: "";
  width: 42px;
  height: 2px;
  background: var(--c-accent);
}

.section-title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.9rem, 3.6vw, 3rem);
  line-height: 1.12;
  letter-spacing: -0.015em;
  color: var(--c-light);
  margin-bottom: 1.75rem;
}

.accent {
  color: var(--c-accent);
}

/* na jasnych tłach limonka jest nieczytelna, ciemniejszy wariant */
.claims .accent,
.reviews .accent,
.about .accent {
  color: var(--c-accent-ink);
}

/* ===== O NAS ===== */

.about {
  position: relative;
  background: var(--c-bg-2);
  color: var(--c-text);
  font-family: var(--f-body);
  overflow: hidden;
  isolation: isolate;
}

/* siatka techniczna w tle, wygaszana ku dołowi i prawej */
.about::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image:
    linear-gradient(to right, rgba(244,244,247,0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(244,244,247,0.05) 1px, transparent 1px);
  background-size: 72px 72px;
  -webkit-mask-image: radial-gradient(115% 85% at 12% 6%, #000 0%, rgba(0,0,0,0.55) 42%, transparent 78%);
  mask-image: radial-gradient(115% 85% at 12% 6%, #000 0%, rgba(0,0,0,0.55) 42%, transparent 78%);
}

/* skośna smuga akcentu za kolumną tekstu */
.about::after {
  content: "";
  position: absolute;
  z-index: -2;
  top: -140px;
  left: -180px;
  width: 460px;
  height: 460px;
  background: var(--c-accent);
  opacity: 0.05;
  transform: rotate(24deg);
  border-radius: 48px;
}

.about__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  align-items: center;
  gap: 5rem;
  padding: 7rem var(--pad);
}

/* --- kolumna tekstowa --- */

.about__eyebrow {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent-ink-sm);
  margin-bottom: 1.1rem;
}

.about__title {
  font-family: var(--f-body);
  font-weight: 700;
  font-size: clamp(1.9rem, 3.4vw, 2.9rem);
  line-height: 1.25;
  letter-spacing: -0.02em;
  color: var(--c-light);
  max-width: 18ch;
  margin-bottom: 1.5rem;
}

.about__text {
  max-width: 40ch;
  font-size: 0.98rem;
  line-height: 1.75;
  color: var(--c-text);
  margin-bottom: 2.25rem;
}

.about__list {
  list-style: none;
  display: grid;
  gap: 1.15rem;
}

.about__list li {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  font-size: 0.98rem;
  font-weight: 600;
  color: var(--c-light);
}

.about__chev {
  flex-shrink: 0;
  width: 17px;
  height: 17px;
  fill: none;
  stroke: var(--c-accent-ink);
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* --- kolumna ze zdjęciem --- */

.about__media {
  position: relative;
}

/* kropkowana kratka wychodząca zza zdjęcia */
.about__media::before {
  content: "";
  position: absolute;
  z-index: 0;
  right: -34px;
  bottom: -34px;
  width: 190px;
  height: 190px;
  background-image: radial-gradient(rgba(244,244,247,0.09) 1.6px, transparent 1.6px);
  background-size: 15px 15px;
}

.about__frame {
  position: relative;
  border-radius: 22px;
  overflow: hidden;
  z-index: 1;
}

.about__photo {
  display: block;
  width: 100%;
  /* height: auto jest konieczne, atrybut height w znaczniku <img> działa
     jak deklaracja CSS i bez tego unieważnia aspect-ratio, przez co zdjęcie
     rozciąga się na pełną naturalną wysokość */
  height: auto;
  aspect-ratio: 4 / 3.4;
  object-fit: cover;
  object-position: center 32%;
  background: var(--c-surface);
}

/* przekrzywione kwadraty w tle */
.about__deco {
  position: absolute;
  width: 76px;
  height: 62px;
  background: var(--c-accent);
  border-radius: 6px;
}

.about__deco--top {
  top: -26px;
  right: 46px;
  transform: rotate(18deg);
}

.about__deco--bottom {
  bottom: -24px;
  left: 44px;
  transform: rotate(-16deg);
}

/* karta nałożona na zdjęcie */
.about__card {
  position: absolute;
  right: 22px;
  bottom: 22px;
  width: min(58%, 250px);
  background: var(--c-accent);
  color: var(--c-bg);
  border-radius: 14px;
  padding: 1.4rem 1.3rem;
  text-align: center;
}

.about__card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: rgba(5,6,7,0.14);
  margin-bottom: 0.7rem;
}

.about__card-icon svg {
  width: 17px;
  height: 17px;
  fill: var(--c-bg);
}

.about__card-title {
  display: block;
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1rem;
  margin-bottom: 0.45rem;
}

.about__card-text {
  display: block;
  font-size: 0.76rem;
  line-height: 1.55;
  font-weight: 500;
  color: rgba(5,6,7,0.82);
}

/* ===== USŁUGI ===== */

.services {
  position: relative;
  background: #0A0B0D;
  color: var(--c-text);
  overflow: hidden;
  isolation: isolate;
}

/* ukośne pasmo w tle */
.services::before {
  content: "";
  position: absolute;
  z-index: -2;
  inset: 0;
  background: repeating-linear-gradient(
    -32deg,
    rgba(244,244,247,0.028) 0 1px,
    transparent 1px 74px
  );
  -webkit-mask-image: radial-gradient(90% 70% at 20% 10%, #000 0%, transparent 74%);
  mask-image: radial-gradient(90% 70% at 20% 10%, #000 0%, transparent 74%);
}

.services__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 7rem var(--pad);
}

.services__head {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: end;
  gap: 3.5rem;
  margin-bottom: 3.5rem;
}

.services__eyebrow {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 1.1rem;
}

.services__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.9rem, 3.4vw, 2.9rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
  color: var(--c-light);
}

.services__lead {
  max-width: 54rem;
  font-size: 0.98rem;
  line-height: 1.8;
  padding-bottom: 0.35rem;
}

/* --- lista usług (wiersze) --- */

.srv-list {
  list-style: none;
  border-top: 1px solid rgba(244,244,247,0.1);
  margin-bottom: 2.5rem;
}

.srv {
  position: relative;
  display: grid;
  /* kolumna nazwy szeroka na tyle, by najdłuższe pozycje
     ("Diagnostyka komputerowa", "Przegląd przed zakupem") mieściły się w jednej linii */
  grid-template-columns: 4.5rem minmax(22rem, 24rem) 1fr;
  grid-template-areas: "num name desc";
  align-items: center;
  gap: 1.5rem;
  padding: 1.9rem 1.5rem;
  border-bottom: 1px solid rgba(244,244,247,0.1);
  transition: background-color 0.25s ease, padding-left 0.25s ease;
}

.srv:hover {
  background: rgba(244,244,247,0.03);
  padding-left: 2.25rem;
}

.srv__num {
  grid-area: num;
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 0.92rem;
  letter-spacing: 0.06em;
  color: rgba(182,188,201,0.45);
  transition: color 0.25s ease;
}

.srv:hover .srv__num {
  color: var(--c-accent);
}

.srv__name {
  grid-area: name;
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.15rem, 1.9vw, 1.6rem);
  line-height: 1.25;
  letter-spacing: -0.02em;
  color: var(--c-light);
  transition: color 0.25s ease;
}

.srv:hover .srv__name {
  color: var(--c-accent);
}

.srv__desc {
  grid-area: desc;
  font-size: 0.92rem;
  line-height: 1.7;
  color: var(--c-text);
}

/* --- stopka sekcji --- */

.services__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem 2.5rem;
  padding-top: 2.25rem;
  border-top: 1px solid rgba(244,244,247,0.08);
}

.services__foot-text {
  font-size: 0.95rem;
  line-height: 1.7;
  max-width: 46rem;
}

/* ===== PARTNERZY (pasek na dole hero) ===== */

.partners {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(244,244,247,0.12);
}

.partners__label {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.55);
  margin-bottom: 1.1rem;
}

/* karta z przegródkami, zamiast gołego tekstu na tle hero */
.partners__list {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  background: rgba(244,244,247,0.025);
  border: 1px solid rgba(244,244,247,0.1);
  border-radius: 14px;
  padding: 0 0.5rem;
}

.partners__item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 0;
  padding: 1.6rem 1.5rem;
  min-width: 9rem;
}

/* pionowe przegródki między pozycjami */
.partners__item + .partners__item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 24%;
  bottom: 24%;
  width: 1px;
  background: rgba(244,244,247,0.1);
}

/* Logotypy sprowadzone do jednolitej bieli, pliki mają przezroczyste tło,
   a barwy firmowe (granat UNIQA, czerwień ERGO) na czarnym tle byłyby
   nieczytelne i gryzłyby się między sobą.
   brightness(0) czerni każdy kolor, invert(1) zamienia go w biel. */
.partners__item img {
  max-height: 52px;
  width: auto;
  filter: brightness(0) invert(1);
  opacity: 0.7;
  transition: opacity 0.2s ease;
}

.partners__item:hover img {
  opacity: 1;
}

/* ===== LIKWIDACJA SZKÓD ===== */

.claims {
  position: relative;
  background: var(--c-bg);
  color: var(--c-text);
  overflow: hidden;
  isolation: isolate;
}

/* koncentryczne pierścienie, skojarzenie z podziałką obrotomierza */
.claims::before {
  content: "";
  position: absolute;
  z-index: -2;
  top: -18%;
  right: -12%;
  width: 900px;
  height: 900px;
  background: repeating-radial-gradient(
    circle at center,
    transparent 0 63px,
    rgba(244,244,247,0.05) 63px 64px
  );
  border-radius: 50%;
  -webkit-mask-image: radial-gradient(circle at center, #000 30%, rgba(0,0,0,0.35) 62%, transparent 78%);
  mask-image: radial-gradient(circle at center, #000 30%, rgba(0,0,0,0.35) 62%, transparent 78%);
}

/* ukośne prowadnice w lewym dolnym rogu */
.claims::after {
  content: "";
  position: absolute;
  z-index: -2;
  left: -60px;
  bottom: -80px;
  width: 520px;
  height: 420px;
  background: repeating-linear-gradient(
    58deg,
    rgba(244,244,247,0.05) 0 2px,
    transparent 2px 22px
  );
  -webkit-mask-image: linear-gradient(38deg, #000 0%, rgba(0,0,0,0.4) 45%, transparent 75%);
  mask-image: linear-gradient(38deg, #000 0%, rgba(0,0,0,0.4) 45%, transparent 75%);
}

.claims__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 7rem var(--pad);
}

/* nadtytuł bez zielonej kreski, jak w sekcji O nas */
.claims .eyebrow {
  color: var(--c-accent-ink-sm);
  font-weight: 700;
  letter-spacing: 0.14em;
}

.claims .eyebrow::before {
  display: none;
}

.claims .section-title {
  color: var(--c-light);
  letter-spacing: -0.02em;
}

.claims__head {
  max-width: 46rem;
  margin: 0 auto 3.5rem;
  text-align: center;
}

.claims__lead {
  font-size: 1rem;
  line-height: 1.8;
  color: var(--c-text);
}

/* --- kroki: cztery w jednym rzędzie --- */

.steps {
  position: relative;
  list-style: none;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
}

/* oś procesu, linia łącząca numery, wygaszana na końcach */
.steps::before {
  content: "";
  position: absolute;
  top: 29px;
  left: 12%;
  right: 12%;
  height: 2px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(244,244,247,0.14) 12%,
    rgba(244,244,247,0.14) 88%,
    transparent 100%);
}

.claims__cta {
  margin-top: 3rem;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 1rem;
}

.step {
  position: relative;
  text-align: center;
  padding: 0 0.75rem;
  isolation: isolate;
}

/* wielki numer w tle, dodaje głębi bez ramek */
.step::before {
  content: attr(data-num);
  position: absolute;
  z-index: -1;
  top: -1.6rem;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--f-head);
  font-weight: 800;
  font-size: 6.5rem;
  line-height: 1;
  letter-spacing: -0.04em;
  color: rgba(244,244,247,0.05);
  transition: color 0.25s ease;
  pointer-events: none;
}

.step:hover::before {
  color: rgba(95,221,2,0.12);
}

/* kółko z numerem na osi procesu */
.step__num {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: var(--c-surface);
  border: 2px solid rgba(244,244,247,0.16);
  color: var(--c-light);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.02em;
  margin-bottom: 1.6rem;
  transition: border-color 0.25s ease, background-color 0.25s ease,
              color 0.25s ease, transform 0.25s ease;
}

.step:hover .step__num {
  background: var(--c-accent);
  border-color: var(--c-accent);
  color: #0A0B0D;
  transform: translateY(-4px);
}

.step__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.12rem;
  letter-spacing: -0.01em;
  color: var(--c-light);
  margin-bottom: 0.7rem;
}

.step__text {
  font-size: 0.92rem;
  line-height: 1.7;
  color: var(--c-text);
  max-width: 22rem;
  margin: 0 auto;
}

/* ===== AUTA ZASTĘPCZE ===== */

.fleet {
  position: relative;
  background: var(--c-bg);
  color: var(--c-text);
  overflow: hidden;
  isolation: isolate;
}

/* smuga światła w tle, inny motyw niż w poprzednich sekcjach */
.fleet::before {
  content: "";
  position: absolute;
  z-index: -2;
  top: -30%;
  left: 50%;
  width: 130%;
  height: 160%;
  transform: translateX(-50%) rotate(-14deg);
  background: repeating-linear-gradient(
    90deg,
    rgba(244,244,247,0.035) 0 1px,
    transparent 1px 128px
  );
  -webkit-mask-image: radial-gradient(60% 55% at 50% 40%, #000 0%, transparent 72%);
  mask-image: radial-gradient(60% 55% at 50% 40%, #000 0%, transparent 72%);
}

.fleet__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 7rem var(--pad);
}

.fleet__head {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: end;
  gap: 3.5rem;
  margin-bottom: 3.5rem;
}

.fleet__eyebrow {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 1.1rem;
}

.fleet__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.9rem, 3.4vw, 2.9rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
  color: var(--c-light);
}

.fleet__lead {
  max-width: 54rem;
  font-size: 0.98rem;
  line-height: 1.8;
  color: var(--c-text);
  padding-bottom: 0.35rem;
}

/* --- karty aut zastępczych --- */

.carlist {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-bottom: 3rem;
}

.carcard {
  display: flex;
  flex-direction: column;
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.07);
  border-radius: 16px;
  overflow: hidden;
  transition: border-color 0.2s ease, transform 0.2s ease;
}

.carcard:hover {
  border-color: rgba(95,221,2,0.4);
  transform: translateY(-4px);
}

.carcard__figure {
  position: relative;
  aspect-ratio: 4 / 3;
  background: #16191E;
  overflow: hidden;
}

.carcard__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* wszystkie zdjęcia floty są przycięte do 4:3 z autem na środku kadru
     (pionowe oryginały leżą w img/fleet/_oryginaly), więc kadr środkowy
     pokazuje całą sylwetkę i nic już nie trzeba przesuwać */
  object-position: center;
  display: block;
  transition: opacity 0.2s ease;
}

/* miniatury przełączające zdjęcie główne */
.carcard__thumbs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  padding: 4px;
  background: rgba(244,244,247,0.03);
}

.carcard__thumb {
  position: relative;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 6px;
  overflow: hidden;
  background: none;
  cursor: pointer;
  /* ten sam format co zdjęcie główne, miniatura pokazuje dokładnie ten
     kadr, który zobaczysz po kliknięciu, bez dodatkowego przycięcia */
  aspect-ratio: 4 / 3;
  transition: border-color 0.2s ease, opacity 0.2s ease;
  opacity: 0.55;
}

.carcard__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.carcard__thumb:hover {
  opacity: 0.85;
}

.carcard__thumb.is-active {
  opacity: 1;
  border-color: var(--c-accent);
}

.carcard__body {
  padding: 1.4rem 1.5rem 1.6rem;
}

.carcard__name {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.08rem;
  letter-spacing: -0.01em;
  color: var(--c-light);
  margin-bottom: 0.5rem;
}

.carcard__desc {
  font-size: 0.88rem;
  line-height: 1.65;
  color: var(--c-text);
}

/* segment auta, przeniesiony ze zdjęcia do opisu */
.carcard__desc strong {
  color: var(--c-accent);
  font-weight: 700;
}

/* kafel bez zdjęć */
.carcard--soon .carcard__figure {
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    repeating-linear-gradient(
      45deg,
      rgba(244,244,247,0.02) 0 10px,
      transparent 10px 20px
    ),
    #16191E;
}

.carcard__soon {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.32);
}

/* --- kafel CTA w siatce aut (szerokość 2 kolumn) --- */

.carcard--cta {
  grid-column: span 2;
  background: transparent;
  border: 1px solid rgba(95,221,2,0.28);
}

.carcard--cta:hover {
  transform: none;
  border-color: rgba(95,221,2,0.45);
}

.cta-tile {
  height: 100%;
  min-height: 340px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 2.25rem;
  padding: 3.5rem 3rem;
  background:
    radial-gradient(120% 130% at 100% 0%, rgba(95,221,2,0.1) 0%, transparent 62%),
    var(--c-surface);
}

.cta-tile__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.7rem, 2.8vw, 2.4rem);
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-bottom: 0.9rem;
}

.cta-tile__text {
  font-size: 1.05rem;
  line-height: 1.75;
  color: var(--c-text);
  max-width: 34rem;
}

.cta-tile__btn {
  padding: 1.3rem 3rem;
  font-size: 1rem;
}

/* ===== STRONA 404 =====
   Wyświetla się pod dowolnym błędnym adresem, więc musi wyglądać jak reszta
   serwisu i od razu dawać drogę wyjścia: spis podstron i telefon. */

.err {
  /* Dolna granica clamp musi zmieścić przyklejony pasek menu, który na
     telefonie ma 126 px. Przy 5rem cyfra 404 wchodziła pod pasek. */
  padding: clamp(10.5rem, 12vw, 10.5rem) var(--pad) clamp(4rem, 10vw, 7rem);
  background: var(--c-bg);
}

@media (min-width: 861px) {
  .err {
    padding: clamp(7rem, 12vw, 9rem) var(--pad);
  }
}

.err__inner {
  max-width: 46rem;
  margin: 0 auto;
  text-align: center;
}

.err__code {
  font-family: var(--f-head);
  font-weight: 800;
  font-size: clamp(4.5rem, 16vw, 9rem);
  line-height: 1;
  letter-spacing: -0.04em;
  color: transparent;
  -webkit-text-stroke: 2px var(--c-line);
  margin-bottom: 1.5rem;
}

.err__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.7rem, 4vw, 2.6rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-bottom: 1.1rem;
}

.err__text {
  font-size: 1.03rem;
  line-height: 1.75;
  color: var(--c-text);
  margin-bottom: 2.5rem;
}

.err__links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.6rem;
  margin-bottom: 2.75rem;
  /* bez tego między pigułkami sterczą domyślne kropki listy */
  list-style: none;
  padding-left: 0;
}

.err__links a {
  display: inline-block;
  padding: 0.6rem 1.15rem;
  border: 1px solid var(--c-line);
  border-radius: 999px;
  font-size: 0.9rem;
  color: var(--c-text);
  text-decoration: none;
  transition: border-color 0.25s ease, color 0.25s ease;
}

.err__links a:hover {
  border-color: var(--c-accent);
  color: var(--c-light);
}

.err .hero__actions {
  justify-content: center;
}

/* ===== WYNAJEM PRYWATNY (auta zastępcze) =====
   Pasek pod hero. Ma się wyróżniać z listy aut, bo to osobna oferta,
   a nie kolejny samochód, dlatego dostaje limonkową krechę przy lewej
   krawędzi i inny odcień tła niż sekcje z kartami. */

.rentbar {
  background: var(--c-bg-2);
  padding: clamp(2.5rem, 5vw, 4rem) var(--pad);
}

.rentbar__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
  gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
  position: relative;
  padding: clamp(2rem, 3.5vw, 3rem);
  border: 1px solid var(--c-line);
  border-radius: 18px;
  background:
    radial-gradient(110% 140% at 0% 0%, rgba(95,221,2,0.09) 0%, transparent 60%),
    var(--c-surface);
  overflow: hidden;
}

/* krecha sygnalizująca, że to wyróżniona informacja, ten sam zabieg
   co w banerze cookies */
.rentbar__inner::before {
  content: "";
  position: absolute;
  left: 0;
  top: clamp(2rem, 3.5vw, 3rem);
  bottom: clamp(2rem, 3.5vw, 3rem);
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--c-accent);
}

.rentbar__label {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 0.9rem;
}

.rentbar__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.5rem, 2.6vw, 2.15rem);
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-bottom: 1rem;
}

.rentbar__text {
  font-size: 1.02rem;
  line-height: 1.75;
  color: var(--c-text);
  max-width: 40rem;
}

.rentbar__side {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.9rem;
  padding-left: clamp(0rem, 2vw, 2rem);
  border-left: 1px solid var(--c-line);
}

.rentbar__num {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.5rem, 2.4vw, 1.95rem);
  letter-spacing: -0.01em;
  color: var(--c-light);
  text-decoration: none;
  transition: color 0.25s ease;
}

.rentbar__num:hover {
  color: var(--c-accent);
}

.rentbar__note {
  font-size: 0.9rem;
  line-height: 1.65;
  color: rgba(182,188,201,0.85);
}

.rentbar__btn {
  margin-top: 0.4rem;
}

/* na węższych ekranach kolumny stają jedna pod drugą, a kreska
   rozdzielająca przenosi się na górę prawej kolumny */
@media (max-width: 900px) {
  .rentbar__inner {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .rentbar__side {
    padding-left: 0;
    padding-top: 1.75rem;
    border-left: 0;
    border-top: 1px solid var(--c-line);
    align-self: stretch;
  }

  .rentbar__btn {
    width: 100%;
    justify-content: center;
  }
}

/* ===== OPINIE GOOGLE ===== */

.reviews {
  position: relative;
  background: var(--c-bg-2);
  color: var(--c-text);
  overflow: hidden;
  isolation: isolate;
}

/* rozproszone punkty w tle */
.reviews::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image: radial-gradient(rgba(244,244,247,0.07) 1.5px, transparent 1.5px);
  background-size: 26px 26px;
  -webkit-mask-image: radial-gradient(80% 60% at 50% 0%, #000 0%, transparent 70%);
  mask-image: radial-gradient(80% 60% at 50% 0%, #000 0%, transparent 70%);
}

.reviews__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 7rem var(--pad);
}

.reviews__head {
  margin-bottom: 3rem;
}

.reviews__eyebrow {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent-ink-sm);
  margin-bottom: 1.1rem;
}

.reviews__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.9rem, 3.4vw, 2.9rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
  color: var(--c-light);
}

/* --- poziomy pasek z podsumowaniem oceny --- */

.reviews__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem 2.5rem;
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.08);
  border-radius: 18px;
  padding: 1.9rem 2.2rem;
  margin-bottom: 2rem;
}

.summary__left {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6rem 1.25rem;
}

.summary__brand {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.06em;
  color: rgba(244,244,247,0.55);
  padding-right: 1.25rem;
  border-right: 1px solid rgba(244,244,247,0.15);
}

.summary__value {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 2.6rem;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--c-light);
}

.summary__stars {
  display: flex;
  gap: 0.25rem;
}

.summary__stars svg {
  width: 19px;
  height: 19px;
  fill: var(--c-accent);
}

.summary__star--half {
  clip-path: inset(0 45% 0 0);
}

.summary__count {
  font-size: 0.88rem;
  color: var(--c-text);
}

.summary__count strong {
  color: var(--c-light);
  font-weight: 700;
}

/* --- opinie: pierwsze 6 widoczne, reszta po kliknięciu --- */

.reviews__collapse {
  position: relative;
}

/* zwinięta lista, przycięta na wysokość ok. dwóch rzędów */
.reviews__collapse:not(.is-open) {
  max-height: 620px;
  overflow: hidden;
}

/* cieniowanie na dole zwiniętej listy */
.reviews__collapse::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 230px;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(7,9,10,0) 0%, var(--c-bg-2) 78%);
  transition: opacity 0.25s ease;
}

.reviews__collapse.is-open::after {
  opacity: 0;
}

/* układ kaskadowy, karty wypełniają puste miejsca */
.review-list {
  list-style: none;
  columns: 3;
  column-gap: 1.5rem;
}

.review {
  break-inside: avoid;
  display: flex;
  flex-direction: column;
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.08);
  border-radius: 16px;
  padding: 1.75rem 1.75rem 1.5rem;
  margin-bottom: 1.5rem;
  transition: border-color 0.2s ease;
}

.review:hover {
  border-color: rgba(95,221,2,0.4);
}

.review__stars {
  color: var(--c-accent-ink-sm);
  font-size: 0.95rem;
  letter-spacing: 0.15em;
  margin-bottom: 0.9rem;
}

.review__text {
  flex: 1;
  font-size: 0.94rem;
  line-height: 1.75;
  color: var(--c-text);
  margin-bottom: 1.5rem;
}

.review__author {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding-top: 1.15rem;
  border-top: 1px solid rgba(244,244,247,0.08);
}

.review__avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(244,244,247,0.1);
  color: rgba(182,188,201,0.6);
  font-weight: 700;
  font-size: 0.95rem;
  flex-shrink: 0;
}

.review__meta {
  display: flex;
  flex-direction: column;
  line-height: 1.4;
}

.review__name {
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--c-light);
}

.review__date {
  font-size: 0.78rem;
  color: rgba(182,188,201,0.6);
}

/* --- przycisk rozwijania --- */

.reviews__actions {
  display: flex;
  justify-content: center;
  margin-top: -1.5rem;
  position: relative;
  z-index: 2;
}

.reviews__toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  padding: 1.1rem 2.6rem;
  font-family: var(--f-body);
  font-weight: 700;
  font-size: 0.92rem;
  letter-spacing: 0.02em;
  color: var(--c-bg);
  background: var(--c-accent);
  border: none;
  border-radius: 999px;
  cursor: pointer;
  box-shadow: 0 10px 26px rgba(95,221,2,0.28);
  transition: background-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.reviews__toggle:hover {
  background: var(--c-surface);
  color: var(--c-light);
  box-shadow: 0 12px 30px rgba(0,0,0,0.45);
  transform: translateY(-2px);
}

.reviews__toggle-icon {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 0.25s ease;
}

.reviews__toggle[aria-expanded="true"] .reviews__toggle-icon {
  transform: rotate(180deg);
}

/* ===== KONTAKT ===== */

.contact {
  position: relative;
  background: #0B0D10;
  color: var(--c-text);
  border-top: 1px solid rgba(244,244,247,0.06);
}

.contact__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 7rem var(--pad);
}

/* nadtytuł i tytuł tworzą lewą kolumnę, lead domyka prawą, bez tego
   siatka rozrzuciłaby trzy elementy po dwóch komórkach */
.contact__head {
  display: grid;
  grid-template-columns: 1.45fr 0.55fr;
  gap: 0.9rem 3rem;
  margin-bottom: 3rem;
}

.contact__head .contact__eyebrow {
  grid-column: 1;
  grid-row: 1;
}

.contact__head .contact__title {
  grid-column: 1;
  grid-row: 2;
}

.contact__head .contact__lead {
  grid-column: 2;
  grid-row: 2;
  align-self: end;
}

.contact__eyebrow {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent);
}

.contact__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.9rem, 3.4vw, 2.9rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
  color: var(--c-light);
  /* nagłówek ma zmieścić się w jednej linii, łamie się dopiero na wąskich ekranach */
  white-space: nowrap;
}

.contact__lead {
  font-size: 0.98rem;
  line-height: 1.8;
  padding-bottom: 0.4rem;
}

.contact__grid {
  display: grid;
  grid-template-columns: 0.82fr 1.18fr;
  gap: 1.5rem;
  /* stretch, żeby obie karty kończyły się na tej samej wysokości */
  align-items: stretch;
}

/* --- dane kontaktowe --- */

.contact__info {
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.07);
  border-radius: 18px;
  padding: 2.25rem 2rem;
}

.info-list {
  list-style: none;
  display: grid;
  gap: 1.75rem;
}

.info {
  display: flex;
  gap: 1rem;
}

/* lekki obrys zamiast ciężkiego limonkowego kafla, ikona ma towarzyszyć
   treści, a nie z nią konkurować */
.info__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid rgba(244,244,247,0.12);
  background: none;
}

.info__icon svg {
  width: 15px;
  height: 15px;
  fill: var(--c-accent);
}

.info__body {
  display: flex;
  flex-direction: column;
  line-height: 1.5;
}

.info__label {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.55);
  margin-bottom: 0.3rem;
}

.info__value {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--c-light);
  text-decoration: none;
  transition: color 0.2s ease;
}

a.info__value:hover {
  color: var(--c-accent);
}

.info__value--sub {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--c-text);
}

.socials {
  margin-top: 2.25rem;
  padding-top: 1.75rem;
  border-top: 1px solid rgba(244,244,247,0.08);
}

.socials__label {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.55);
  margin-bottom: 0.9rem;
}

.socials__row {
  display: flex;
  gap: 0.75rem;
}

.social {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 12px;
  border: 1px solid rgba(244,244,247,0.14);
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.social svg {
  width: 17px;
  height: 17px;
  fill: var(--c-light);
  transition: fill 0.2s ease;
}

.social:hover {
  background: var(--c-accent);
  border-color: var(--c-accent);
}

.social:hover svg {
  fill: var(--c-bg);
}

/* --- formularz --- */

.contact__form-wrap {
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.07);
  border-radius: 18px;
  padding: 2.25rem 2rem;
}

.form {
  display: grid;
  gap: 1.25rem;
}

.form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.25rem;
}

.field {
  display: flex;
  flex-direction: column;
}

.field__label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--c-text);
  margin-bottom: 0.5rem;
}

.field__input {
  font-family: var(--f-body);
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--c-light);
  background: rgba(244,244,247,0.04);
  border: 1px solid rgba(244,244,247,0.12);
  border-radius: 10px;
  padding: 0.9rem 1rem;
  transition: border-color 0.2s ease, background-color 0.2s ease;
}

.field__input::placeholder {
  color: rgba(182,188,201,0.4);
}

.field__input:focus {
  outline: none;
  border-color: var(--c-accent);
  background: rgba(244,244,247,0.06);
}

.field__input--area {
  resize: vertical;
  min-height: 120px;
  line-height: 1.6;
}

select.field__input option {
  background: var(--c-surface);
  color: var(--c-light);
}

.consent {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  font-size: 0.82rem;
  line-height: 1.6;
  color: var(--c-text);
}

.consent input {
  margin-top: 0.25rem;
  width: 17px;
  height: 17px;
  accent-color: var(--c-accent);
  flex-shrink: 0;
}

.consent a {
  color: var(--c-accent);
  text-decoration: underline;
}

.form__submit {
  justify-self: start;
  margin-top: 0.25rem;
}

/* --- mapa --- */

.map {
  border: 1px solid rgba(244,244,247,0.07);
  border-radius: 18px;
  overflow: hidden;
  background: var(--c-surface);
}

.map iframe {
  display: block;
  width: 100%;
  height: 420px;
  border: 0;
}

/* ===== RESPONSYWNOŚĆ ===== */

/* poniżej 1320px nawigacja przenosi się do panelu, osiem pozycji
   plus telefon i CTA przestają się mieścić w jednym rzędzie.
   Granica była 1240px przy siedmiu pozycjach; dojście „Blogu" dodaje
   ok. 59px (sam wyraz plus odstęp), więc progu nie można było zostawić. */
@media (max-width: 1320px) {
  .nav {
    display: none;
  }

  .nav-toggle {
    display: flex;
  }

  .header__inner {
    padding: 1.1rem 6vw;
    gap: 1rem;
  }

  .topbar__inner {
    padding-left: 6vw;
    padding-right: 6vw;
  }

  .logo {
    font-size: 0.98rem;
  }
}

/* telefon zostaje samą ikoną, CTA znika, jest w panelu */
@media (max-width: 860px) {
  .header__phone-text {
    display: none;
  }

  .header__btn {
    display: none;
  }

  .topbar__meta {
    gap: 1rem;
  }
}

/* w wąskiej belce zostaje sama ocena Google */
@media (max-width: 620px) {
  .topbar__meta {
    display: none;
  }

  .topbar__inner {
    justify-content: center;
  }
}

@media (max-width: 1100px) {

  .about__inner {
    grid-template-columns: 1fr;
    gap: 3rem;
    padding: 5rem 6vw;
  }

  .partners {
    margin-top: 3rem;
  }

  .partners__list {
    flex-wrap: wrap;
  }

  .partners__item {
    flex: 1 1 45%;
  }

  .partners__item:nth-child(odd)::before {
    display: none;
  }

  .services__head {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 1.25rem;
    margin-bottom: 2.5rem;
  }

  .services__lead {
    max-width: none;
  }

  .srv {
    grid-template-columns: 2.6rem 1fr;
    grid-template-areas:
      "num name"
      "num desc";
    padding: 1.6rem 1rem;
  }

  .claims__inner {
    padding: 5rem 6vw;
  }

  .claims__head {
    max-width: none;
    margin-bottom: 2.5rem;
  }

  .steps {
    grid-template-columns: repeat(2, 1fr);
    gap: 2.5rem 1.25rem;
  }

  /* przy dwóch kolumnach linia rozjeżdża się między rzędami */
  .steps::before {
    display: none;
  }

  .claims__cta {
    margin-top: 2.25rem;
  }

  .fleet__inner {
    padding: 5rem var(--pad);
  }

  .fleet__head {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 1.5rem;
    margin-bottom: 2.5rem;
  }

  .carlist {
    grid-template-columns: repeat(2, 1fr);
  }

  .carcard--cta {
    grid-column: span 2;
  }

  .reviews__inner {
    padding: 5rem var(--pad);
  }

  .contact__inner {
    padding: 5rem var(--pad);
  }

  /* na węższych ekranach nagłówek musi móc się złamać */
  .contact__title {
    white-space: normal;
  }

  .contact__grid {
    grid-template-columns: 1fr;
  }

  .review-list {
    columns: 2;
  }

  .reviews__collapse:not(.is-open) {
    max-height: 700px;
  }

}

@media (max-width: 640px) {
  .hero {
    min-height: 88vh;
  }

  /* 8rem to dokładnie tyle, ile ma pasek menu, więc tytuł startował
     2 px pod nim i wyglądał, jakby się z niego wylewał. */
  .hero__inner {
    padding: 10.5rem 6vw 4rem;
  }

  .hero__actions {
    flex-direction: column;
    align-items: stretch;
  }

  .hero__scrim {
    background:
      linear-gradient(180deg, rgba(5,6,7,0.75) 0%, rgba(5,6,7,0.9) 60%, var(--c-bg) 100%);
  }

  .srv {
    padding: 1.4rem 0.5rem;
  }

  .srv:hover {
    padding-left: 0.5rem;
  }

  .services__foot .btn {
    width: 100%;
  }

  .carlist {
    grid-template-columns: 1fr;
    gap: 1rem;
  }

  .carcard--cta {
    grid-column: span 1;
  }

  .cta-tile {
    padding: 1.9rem 1.5rem;
  }

  .cta-tile__btn {
    width: 100%;
  }

  .review-list {
    columns: 1;
  }

  .form__row {
    grid-template-columns: 1fr;
  }

  .contact__info,
  .contact__form-wrap {
    padding: 1.75rem 1.4rem;
  }

  .form__submit {
    justify-self: stretch;
  }

  .map iframe {
    height: 320px;
  }

  .reviews__collapse:not(.is-open) {
    max-height: 620px;
  }

  .reviews__collapse::after {
    height: 160px;
  }

  .reviews__toggle {
    padding: 1rem 1.9rem;
    font-size: 0.86rem;
  }

  .reviews__summary {
    padding: 1.5rem 1.4rem;
  }

  .reviews__summary .btn {
    width: 100%;
  }

  .summary__brand {
    padding-right: 1rem;
  }

  .summary__value {
    font-size: 2.1rem;
  }

  .partners__item img {
    max-height: 42px;
  }

  /* Cztery logotypy jeden pod drugim zajmowały pół ekranu telefonu.
     Siatka 2x2 mieści je w jednej czwartej tej wysokości, a logo i tak
     pozostają czytelne, bo są wektorowe. */
  .partners__list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    padding: 0;
  }

  .partners__item {
    flex: none;
    padding: 1.1rem 0.9rem;
    min-width: 0;
  }

  .partners__item::before {
    display: none;
  }

  /* przegródki rysowane po siatce: pionowa dla prawej kolumny,
     pozioma dla dolnego wiersza */
  .partners__item:nth-child(even) {
    border-left: 1px solid rgba(244,244,247,0.1);
  }

  .partners__item:nth-child(n + 3) {
    border-top: 1px solid rgba(244,244,247,0.1);
  }

  .steps {
    grid-template-columns: 1fr;
    gap: 2.25rem;
  }

  .about__card {
    position: static;
    width: 100%;
    border-radius: 0;
  }

  .about__frame {
    border-radius: 16px;
  }

  /* przekrzywione kwadraty wystawały nad zdjęcie i pod kartę, na wąskim ekranie robiły bałagan zamiast ozdoby */
  .about__deco {
    display: none;
  }
}

/* ===== TELEFON, poprawki dotykowe i czytelnościowe =====
   Wyniki pomiarów na szerokości 390 px: checkbox miał 17×17 px,
   linki telefoniczne 24 px wysokości, linki w stopce 18 px, wszystkie
   poniżej progu wygodnego dotyku (ok. 44 px). */

@media (max-width: 640px) {

  /* --- zgoda RODO: powiększony przełącznik i cały wiersz --- */
  .consent {
    align-items: center;
    gap: 0.9rem;
    padding: 0.35rem 0;
    font-size: 0.86rem;
  }

  .consent input {
    width: 24px;
    height: 24px;
    margin-top: 0;
  }

  /* --- dane kontaktowe: telefon i e-mail jako wygodne cele dotyku --- */
  .info__value {
    font-size: 1.08rem;
  }

  a.info__value {
    display: inline-block;
    padding: 0.3rem 0;
  }

  .info__value--sub {
    font-size: 0.95rem;
  }

  /* --- drobne podpisy: podniesione z 0,72 rem, bo na telefonie
         w słońcu były na granicy czytelności --- */
  .info__label,
  .socials__label,
  .partners__label,

  /* --- hero: przyciski na pełną szerokość, łatwiejsze do trafienia --- */
  .hero__actions .btn {
    width: 100%;
  }

  /* --- opinie: przycisk rozwijania szerszy --- */
  .reviews__toggle {
    width: 100%;
    justify-content: center;
  }
}

/* ==========================================================================
   PODSTRONA: Likwidacja szkód (i wspólne komponenty dla przyszłych podstron)
   ========================================================================== */

/* --- baner górny podstrony (zamiast pełnego hero ze zdjęciem) --- */

.page-banner {
  position: relative;
  /* górny odstęp musi zmieścić belkę informacyjną + pasek menu (ok. 122px) */
  padding: 10.5rem var(--pad) 4rem;
  background: var(--c-bg);
  overflow: hidden;
  isolation: isolate;
}

.page-banner::before {
  content: "";
  position: absolute;
  z-index: -2;
  top: -30%;
  right: -12%;
  width: 760px;
  height: 760px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(95,221,2,0.08) 0%, transparent 68%);
}

.page-banner__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
}

/* --- wariant ze zdjęciem w tle --- */

.page-banner--photo {
  padding-top: 12rem;
  padding-bottom: 6rem;
}

.page-banner__media {
  position: absolute;
  inset: 0;
  z-index: -1;
}

.page-banner__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 40%;
  /* zdjęcie ma być tłem, nie bohaterem, przygaszone, żeby tekst
     zachował pełny kontrast */
  filter: grayscale(0.5) brightness(0.46) contrast(1.06);
}

.page-banner__scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, var(--c-bg) 4%, rgba(5,6,7,0.74) 40%, rgba(5,6,7,0.3) 100%),
    linear-gradient(0deg, var(--c-bg) 1%, rgba(5,6,7,0) 58%);
}

/* --- większe przyciski w banerze podstrony --- */

.page-banner .btn:not(.btn--fx) {
  padding: 1.3rem 2.9rem;
  font-size: 1rem;
}

.page-banner .btn--fx {
  padding: 1.3rem 1.6rem 1.3rem 2.4rem;
  font-size: 1rem;
}

/* ścieżka nawigacji jako osobny „chip". flex + width: fit-content zamiast
   inline-flex, ramka obejmuje tylko treść, ale blok nadal zajmuje własną
   linię i nie wciąga za sobą nadtytułu. Kolor ustawiony tutaj dziedziczy
   goły tekst, czyli nazwa bieżącej strony. */
.page-banner__crumbs {
  display: flex;
  width: fit-content;
  align-items: center;
  gap: 0.55rem;
  padding: 0.5rem 1rem;
  border: 1px solid rgba(244,244,247,0.12);
  border-radius: 999px;
  background: rgba(244,244,247,0.06);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--c-light);
  margin-bottom: 1.75rem;
}

.page-banner__crumbs a {
  color: rgba(182,188,201,0.9);
  font-weight: 500;
  text-decoration: none;
  transition: color 0.2s ease;
}

.page-banner__crumbs a:hover {
  color: var(--c-accent);
}

/* ukośnik w kolorze akcentu */
.page-banner__crumbs span {
  color: var(--c-accent);
  font-weight: 700;
}

.page-banner__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(2rem, 4.2vw, 3.2rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--c-light);
  max-width: 34ch;
  margin-bottom: 1.25rem;
}

.page-banner__lead {
  font-size: 1.05rem;
  line-height: 1.8;
  color: var(--c-text);
  max-width: 46rem;
  margin-bottom: 2rem;
}

/* --- checklista dokumentów --- */

.doc-section {
  background: var(--c-bg-2);
  padding: 6rem var(--pad);
}

.doc-inner {
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 0.8fr;
  gap: 4.5rem;
  align-items: start;
}

.doc-list {
  list-style: none;
  display: grid;
  gap: 1.1rem;
}

.doc-list li {
  display: flex;
  align-items: flex-start;
  gap: 0.9rem;
  font-size: 0.98rem;
  color: var(--c-light);
  line-height: 1.6;
}

.doc-list__icon {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: rgba(95,221,2,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 0.1rem;
}

.doc-list__icon svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: var(--c-accent);
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.doc-note {
  font-size: 0.88rem;
  color: rgba(182,188,201,0.7);
  margin-top: 1.5rem;
  line-height: 1.7;
}

/* --- porównanie OC / AC --- */

.compare {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
}

.compare__card {
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.08);
  border-radius: 16px;
  padding: 2rem 1.9rem;
}

.compare__card--highlight {
  border-color: rgba(95,221,2,0.4);
}

.compare__tag {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 0.9rem;
}

.compare__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.2rem;
  color: var(--c-light);
  margin-bottom: 0.9rem;
}

.compare__text {
  font-size: 0.92rem;
  line-height: 1.75;
  color: var(--c-text);
}

/* --- FAQ (natywne <details>/<summary>, bez JS) --- */

.faq {
  /* jedna kolumna, ale rozciągnięta na pełną szerokość kontenera */
  width: 100%;
}

.faq__item {
  border-bottom: 1px solid rgba(244,244,247,0.1);
}

.faq__item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 1.5rem 0;
  cursor: pointer;
  list-style: none;
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--c-light);
}

.faq__item summary::-webkit-details-marker {
  display: none;
}

.faq__icon {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1px solid rgba(244,244,247,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.25s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.faq__icon svg {
  width: 11px;
  height: 11px;
  fill: none;
  stroke: var(--c-light);
  stroke-width: 2.4;
  stroke-linecap: round;
}

.faq__item[open] .faq__icon {
  transform: rotate(45deg);
  background: var(--c-accent);
  border-color: var(--c-accent);
}

.faq__item[open] .faq__icon svg {
  stroke: var(--c-bg);
}

.faq__answer {
  font-size: 0.94rem;
  line-height: 1.8;
  color: var(--c-text);
  padding-bottom: 1.5rem;
}

/* --- pasek CTA na dole podstrony --- */

.page-cta {
  background: var(--c-bg);
  padding: 5rem var(--pad);
  text-align: center;
}

.page-cta__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.6rem, 2.6vw, 2.2rem);
  color: var(--c-light);
  margin-bottom: 1rem;
}

.page-cta__text {
  font-size: 1rem;
  color: var(--c-text);
  max-width: 40rem;
  margin: 0 auto 2rem;
}

.page-cta__actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 1rem;
}

@media (max-width: 1100px) {
  .doc-inner {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
}

/* ===== NAGŁÓWEK NA TELEFONIE =====
   Na dużym ekranie pasek jest przezroczysty do pierwszego przewinięcia
   i dopiero wtedy dostaje tło. Tam to działa, bo hero jest wysokie
   i ciemne u góry.

   Na telefonie ten sam zabieg wypada źle: pasek zachodzi wprost na zdjęcie
   w banerze podstrony, logo i menu gubią się w tle, a okruszki siedzą tuż
   pod nim i wszystko zlewa się w jedno. Dlatego poniżej 860 px pasek ma tło
   od razu, bez czekania na przewinięcie. */

@media (max-width: 860px) {
  .header {
    background: rgba(5,6,7,0.94);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom-color: rgba(244,244,247,0.12);
  }
}

@media (max-width: 640px) {
  /* Baner bez zdjęcia. 7rem to było za mało: pasek menu ma na telefonie
     126 px, więc okruszki startowały 12 px pod nim i sklejały się z paskiem.
     9.5rem daje im odetchnąć. */
  .page-banner {
    padding: 11rem var(--pad) 3rem;
  }

  /* Więcej miejsca pod paskiem menu. Przy 8rem okruszki startowały 28 px
     pod nagłówkiem i sklejały się z nim wizualnie. */
  .page-banner--photo {
    padding-top: 10.5rem;
    padding-bottom: 3.5rem;
  }

  .page-banner__scrim {
    background:
      linear-gradient(180deg, rgba(5,6,7,0.7) 0%, rgba(5,6,7,0.88) 55%, var(--c-bg) 100%);
  }

  .page-banner .btn {
    padding: 1.15rem 2rem;
    font-size: 0.94rem;
    width: 100%;
  }

  .doc-section,
  .page-cta {
    padding: 4rem var(--pad);
  }

  .compare {
    grid-template-columns: 1fr;
  }

  .faq__item summary {
    font-size: 0.95rem;
  }

  .faq {
    grid-template-columns: 1fr;
    column-gap: 0;
  }
}

/* --- pasek ubezpieczycieli jako samodzielna sekcja (podstrony) --- */

.insurers-band {
  background: var(--c-bg-2);
  padding: 4.5rem var(--pad);
}

.insurers-band .partners {
  max-width: var(--wrap);
  margin: 0 auto;
}

/* ==========================================================================
   PODSTRONA: Auta zastępcze, każde auto jako osobna sekcja
   ========================================================================== */

.carpage {
  background: var(--c-bg);
  padding: 5.5rem var(--pad);
  border-top: 1px solid rgba(244,244,247,0.06);
}

/* co drugie auto, jaśniejsze tło, żeby sekcje się rytmicznie przeplatały */
.carpage--alt {
  background: var(--c-bg-2);
}

.carpage__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  align-items: center;
  gap: 4.5rem;
}

/* naprzemiennie: zdjęcie raz z prawej, raz z lewej */
.carpage--alt .carpage__media {
  order: -1;
}

.carpage__eyebrow {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 1rem;
}

.carpage__name {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.8rem, 3.2vw, 2.6rem);
  line-height: 1.18;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-bottom: 1.1rem;
}

.carpage__desc {
  font-size: 1rem;
  line-height: 1.8;
  color: var(--c-text);
  max-width: 34rem;
  margin-bottom: 1.9rem;
}

/* --- cechy auta --- */

.carspecs {
  list-style: none;
  display: grid;
  gap: 0.9rem;
  margin-bottom: 2.1rem;
}

.carspecs li {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  font-size: 0.95rem;
  color: var(--c-light);
}

.carspecs__icon {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: rgba(95,221,2,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
}

.carspecs__icon svg {
  width: 15px;
  height: 15px;
  fill: var(--c-accent);
}

.carspecs__label {
  color: var(--c-text);
}

/* --- galeria auta --- */

.carpage__media {
  position: relative;
}

.carpage__frame {
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid rgba(244,244,247,0.08);
}

.carpage__photo {
  display: block;
  width: 100%;
  /* height: auto, patrz komentarz przy .about__photo */
  height: auto;
  /* format ramki równa się formatowi plików, więc zdjęcie wchodzi
     w całości, nic nie jest przycinane */
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
  background: var(--c-surface);
}

@media (max-width: 1100px) {
  .carpage {
    padding: 4rem var(--pad);
  }

  .carpage__inner {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }

  /* na wąskich ekranach zdjęcie zawsze nad opisem, naprzemienność
     traci sens, gdy kolumny i tak układają się jedna pod drugą */
  .carpage--alt .carpage__media {
    order: 0;
  }

  .carpage__media {
    order: -1;
  }
}

/* ==========================================================================
   PODSTRONA: Usługi, każda usługa jako osobna sekcja
   ========================================================================== */

.svcpage {
  position: relative;
  background: var(--c-bg);
  padding: 5rem var(--pad);
  border-top: 1px solid rgba(244,244,247,0.06);
  overflow: hidden;
  isolation: isolate;
}

.svcpage--alt {
  background: var(--c-bg-2);
}

/* faktura tła, ukośne linie, wygaszane od rogu.
   W sekcjach parzystych lustrzane odbicie, żeby rytm był widoczny */
.svcpage::before {
  content: "";
  position: absolute;
  z-index: -2;
  inset: 0;
  background: repeating-linear-gradient(
    -34deg,
    rgba(244,244,247,0.03) 0 1px,
    transparent 1px 78px
  );
  -webkit-mask-image: radial-gradient(80% 90% at 8% 12%, #000 0%, transparent 72%);
  mask-image: radial-gradient(80% 90% at 8% 12%, #000 0%, transparent 72%);
}

.svcpage--alt::before {
  background: repeating-linear-gradient(
    34deg,
    rgba(95,221,2,0.045) 0 1px,
    transparent 1px 78px
  );
  -webkit-mask-image: radial-gradient(80% 90% at 92% 12%, #000 0%, transparent 72%);
  mask-image: radial-gradient(80% 90% at 92% 12%, #000 0%, transparent 72%);
}

/* poświata akcentu wędrująca po sekcjach, raz z prawej, raz z lewej */
.svcpage::after {
  content: "";
  position: absolute;
  z-index: -2;
  top: -40%;
  right: -12%;
  width: 620px;
  height: 620px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(95,221,2,0.06) 0%, transparent 68%);
}

.svcpage--alt::after {
  right: auto;
  left: -12%;
}

/* --- naprzemienne kolumny: co druga usługa ma zakres po lewej --- */

.svcpage--alt .svcpage__body {
  order: 2;
}

.svcpage--alt .scope {
  order: 1;
}

.svcpage__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: start;
  gap: 4rem;
}

.svcpage__head {
  display: flex;
  gap: 1.5rem;
}

.svcpage__icon {
  flex-shrink: 0;
  width: 60px;
  height: 60px;
  border-radius: 15px;
  background: rgba(95,221,2,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
}

.svcpage__icon svg {
  width: 27px;
  height: 27px;
  fill: var(--c-accent);
}

.svcpage__num {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  color: rgba(182,188,201,0.45);
  margin-bottom: 0.6rem;
}

.svcpage__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.6rem, 2.8vw, 2.2rem);
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-bottom: 1rem;
}

.svcpage__desc {
  font-size: 1rem;
  line-height: 1.8;
  color: var(--c-text);
  max-width: 32rem;
}

/* --- zakres usługi --- */

.scope {
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.08);
  border-radius: 16px;
  padding: 2rem 1.9rem;
}

.scope__label {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 1.25rem;
}

.scope__list {
  list-style: none;
  display: grid;
  gap: 0.85rem;
}

.scope__list li {
  display: flex;
  align-items: flex-start;
  gap: 0.8rem;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--c-light);
}

.scope__list li::before {
  content: "";
  flex-shrink: 0;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: var(--c-accent);
  margin-top: 0.55em;
}

/* --- pasek liczb (warsztat w skrócie) --- */

.factbar {
  background: var(--c-bg-2);
  padding: 4rem var(--pad);
}

.factbar__inner {
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}

.fact {
  padding-right: 2rem;
  border-right: 1px solid rgba(244,244,247,0.1);
}

.fact:last-child {
  border-right: none;
}

.fact__value {
  display: block;
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 2.4rem;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--c-accent);
  margin-bottom: 0.6rem;
}

.fact__label {
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--c-text);
}

@media (max-width: 1100px) {
  .svcpage {
    padding: 3.5rem var(--pad);
  }

  .svcpage__inner {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  /* przy jednej kolumnie opis musi być zawsze przed zakresem, naprzemienność traci sens, gdy elementy układają się pionowo */
  .svcpage--alt .svcpage__body,
  .svcpage--alt .scope {
    order: 0;
  }

  .factbar__inner {
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem 1.5rem;
  }

  .fact:nth-child(2n) {
    border-right: none;
  }
}

@media (max-width: 640px) {
  .factbar__inner {
    grid-template-columns: 1fr;
  }

  .fact {
    padding-right: 0;
    padding-bottom: 1.5rem;
    border-right: none;
    border-bottom: 1px solid rgba(244,244,247,0.1);
  }

  .fact:last-child {
    border-bottom: none;
    padding-bottom: 0;
  }

  .svcpage__head {
    gap: 1.1rem;
  }

  .svcpage__icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
  }

  .svcpage__icon svg {
    width: 22px;
    height: 22px;
  }

  .scope {
    padding: 1.6rem 1.4rem;
  }
}

/* ==========================================================================
   Pojawianie się przy przewijaniu (obsługa w js/main.js)
   ========================================================================== */

[data-reveal] {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.65s cubic-bezier(0.22, 0.61, 0.36, 1),
              transform 0.65s cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

/* element wjeżdżający z boku, używany w naprzemiennych sekcjach */
[data-reveal="left"]  { transform: translate(-32px, 14px); }
[data-reveal="right"] { transform: translate(32px, 14px); }

[data-reveal].is-visible {
  opacity: 1;
  transform: none;
  will-change: auto;
}

/* drugi element w parze wchodzi z lekkim opóźnieniem */
[data-reveal-delay] {
  transition-delay: 0.12s;
}

/* Ustawienie systemowe „ogranicz ruch", treść widoczna od razu,
   bez żadnej animacji */
@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-reveal="left"],
  [data-reveal="right"] {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ==========================================================================
   PODSTRONA: Kontakt
   ========================================================================== */

@media (max-width: 1100px) {

}

@media (max-width: 640px) {
}

/* ==========================================================================
   PODSTRONA: Opinie
   ========================================================================== */

.reviewspage {
  background: var(--c-bg-2);
  padding: 5rem var(--pad);
}

.reviewspage__inner {
  max-width: var(--wrap);
  margin: 0 auto;
}

/* na dedykowanej podstronie pokazujemy wszystkie opinie, bez zwijania */
.reviewspage .review-list {
  columns: 3;
  column-gap: 1.5rem;
}

/* zachęta do zostawienia opinii */
.review-cta {
  background: var(--c-bg);
  padding: 5rem var(--pad);
  text-align: center;
}

.review-cta__inner {
  max-width: 46rem;
  margin: 0 auto;
}

.review-cta__stars {
  display: flex;
  justify-content: center;
  gap: 0.4rem;
  margin-bottom: 1.5rem;
}

.review-cta__stars svg {
  width: 26px;
  height: 26px;
  fill: var(--c-accent);
}

@media (max-width: 1100px) {
  .reviewspage {
    padding: 3.5rem var(--pad);
  }

  .reviewspage .review-list {
    columns: 2;
  }

  .review-cta {
    padding: 3.5rem var(--pad);
  }
}

@media (max-width: 640px) {
  .reviewspage .review-list {
    columns: 1;
  }
}

/* ==========================================================================
   Przyciski, wariant „fx": wypełnienie wjeżdżające z lewej + strzałka
   (zastępuje btn--3d; bez cienia-płyty pod przyciskiem)
   ========================================================================== */

.btn--fx {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  gap: 0.9rem;
  padding: 1.25rem 1.5rem 1.25rem 2.2rem;
  border-radius: 3px;
  font-weight: 700;
  letter-spacing: 0.03em;
  transition: color 0.28s ease, border-color 0.28s ease;
}

/* warstwa wypełnienia, rozjeżdża się od lewej krawędzi */
.btn--fx::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.42s cubic-bezier(0.65, 0, 0.35, 1);
}

.btn--fx:hover::before {
  transform: scaleX(1);
}

/* strzałka w kółku */
.btn__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  flex-shrink: 0;
  transition: background-color 0.28s ease, transform 0.28s ease;
}

.btn__arrow svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke 0.28s ease;
}

.btn--fx:hover .btn__arrow {
  transform: translateX(3px);
}

/* --- wariant główny: limonka, na hover wypełnia się bielą --- */

.btn--fx.btn--primary {
  background: var(--c-accent);
  color: var(--c-light);
}

.btn--fx.btn--primary::before {
  background: var(--c-light);
}

.btn--fx.btn--primary .btn__arrow {
  background: rgba(244,244,247,0.18);
}

.btn--fx.btn--primary .btn__arrow svg {
  stroke: var(--c-light);
}

.btn--fx.btn--primary:hover {
  color: #0A1A00;
}

.btn--fx.btn--primary:hover .btn__arrow {
  background: rgba(10,26,0,0.16);
}

.btn--fx.btn--primary:hover .btn__arrow svg {
  stroke: #0A1A00;
}

/* --- wariant obrysowy: pusty, na hover wypełnia się limonką --- */

.btn--fx.btn--outline {
  background: transparent;
  color: var(--c-light);
  border: 1px solid rgba(244,244,247,0.32);
}

.btn--fx.btn--outline::before {
  background: var(--c-accent);
}

.btn--fx.btn--outline .btn__arrow {
  background: rgba(244,244,247,0.12);
}

.btn--fx.btn--outline .btn__arrow svg {
  stroke: var(--c-light);
}

.btn--fx.btn--outline:hover {
  color: #0A1A00;
  border-color: var(--c-accent);
}

.btn--fx.btn--outline:hover .btn__arrow {
  background: rgba(10,26,0,0.16);
}

.btn--fx.btn--outline:hover .btn__arrow svg {
  stroke: #0A1A00;
}

/* wciśnięcie, delikatne, bez skoków */
.btn--fx:active {
  transform: translateY(1px);
}

@media (prefers-reduced-motion: reduce) {
  .btn--fx::before,
  .btn__arrow {
    transition: none;
  }

  .btn--fx:active {
    transform: none;
  }
}

/* ==========================================================================
   Hero podstron, separator, miejsce na zdjęcie
   ========================================================================== */

/* --- separator domykający hero --- */

.banner-sep {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 3;
  height: 1px;
  background: rgba(244,244,247,0.16);
}

/* --- miejsce na zdjęcie w liście dokumentów --- */

.doc-photo {
  position: relative;
}

.doc-photo__frame {
  position: relative;
  overflow: hidden;
  border-radius: 4px;
  aspect-ratio: 4 / 3;
  background: var(--c-surface);
}

/* cienka limonkowa ramka narożna, żeby kadr nie był „nagi" */
.doc-photo__frame::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid rgba(244,244,247,0.1);
  border-radius: 4px;
  pointer-events: none;
}

.doc-photo__frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.7s ease;
}

.doc-photo:hover .doc-photo__frame img {
  transform: scale(1.03);
}

.doc-photo__cap {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-top: 1rem;
  font-size: 0.82rem;
  line-height: 1.5;
  color: rgba(182,188,201,0.85);
}

.doc-photo__dot {
  flex-shrink: 0;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--c-accent);
}

/* --- lewa kolumna listy dokumentów --- */

.doc-col {
  min-width: 0;
}

.doc-lead {
  margin-bottom: 2rem;
  max-width: none;
}

/* --- mniejsze ekrany --- */

@media (max-width: 640px) {
  .btn--fx {
    width: 100%;
    justify-content: space-between;
    padding-left: 1.6rem;
  }
}

/* --- wyśrodkowany nagłówek sekcji (gdy nie ma kolumny z leadem) --- */

.services__head--center {
  display: block;
  text-align: center;
}

.services__head--center > div {
  max-width: 46rem;
  margin: 0 auto;
}

.services__head--center .services__lead {
  margin-top: 1.1rem;
}

/* --- abstrakcja w rogu sekcji „Co przygotować", motyw celownika/kompasu,
   nieużywany nigdzie indziej na stronie --- */

.docs-deco {
  position: absolute;
  top: 0;
  right: 0;
  z-index: -1;
  width: 480px;
  height: 480px;
  transform: translate(28%, -32%);
  pointer-events: none;
}

/* dwa niedomknięte pierścienie, rozsunięte pod kątem */
.docs-deco::before,
.docs-deco::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  border: 1px solid rgba(244,244,247,0.1);
}

.docs-deco::before {
  inset: 0;
  border-top-color: transparent;
  border-right-color: transparent;
  transform: rotate(38deg);
}

.docs-deco::after {
  inset: 72px;
  border-bottom-color: transparent;
  border-left-color: transparent;
  transform: rotate(-18deg);
}

@media (max-width: 900px) {
  .docs-deco {
    width: 320px;
    height: 320px;
  }
}

/* --- kadr zdjęcia w banerze, dobierany do konkretnej fotografii ---
   Zdjęcia floty są pionowe (1600×2134), więc w wąskim pasie banera trzeba
   wskazać, która część kadru ma zostać widoczna. */

.page-banner--uslugi .page-banner__img {
  object-position: center 58%;
}

/* zdjęcie A6 jest już przycięte do 4:3 z autem na środku, baner bierze
   środek kadru, żeby w wąskim pasie było widać całą sylwetkę */
.page-banner--auta .page-banner__img {
  object-position: center 50%;
}

.page-banner--opinie .page-banner__img {
  object-position: center 46%;
}

/* ==========================================================================
   Baner dwukolumnowy (Kontakt), treść po lewej, dane kontaktowe po prawej
   ========================================================================== */

.page-banner--split {
  padding-bottom: 5.5rem;
}

.bsplit {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 4.5rem;
  align-items: center;
}

.bsplit__main {
  min-width: 0;
}

/* w dwukolumnowym układzie akapit nie potrzebuje własnego ograniczenia, szerokość wyznacza już kolumna siatki */
.bsplit__main .page-banner__lead {
  max-width: none;
}

.bsplit__side {
  min-width: 0;
}

.quickbox__head {
  margin-bottom: 0.9rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-accent);
}

.quickbox {
  position: relative;
  list-style: none;
  border: 1px solid rgba(244,244,247,0.1);
  border-radius: 14px;
  background: var(--c-surface);
  overflow: hidden;
}

/* limonkowa krawędź, ten sam sygnał co w innych blokach akcentowanych */
.quickbox::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--c-accent);
}

.quickbox__row {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.15rem 1.5rem;
  border-bottom: 1px solid rgba(244,244,247,0.07);
}

.quickbox__row:last-child {
  border-bottom: none;
}

.quickbox__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: rgba(95,221,2,0.12);
}

.quickbox__icon svg {
  width: 17px;
  height: 17px;
  fill: var(--c-accent);
}

.quickbox__text {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}

.quickbox__label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.7);
}

.quickbox__value {
  font-family: var(--f-head);
  font-size: 1rem;
  font-weight: 700;
  color: var(--c-light);
  text-decoration: none;
  word-break: break-word;
  transition: color 0.2s ease;
}

a.quickbox__value:hover {
  color: var(--c-accent);
}

.quickbox__sub {
  font-size: 0.85rem;
  color: rgba(182,188,201,0.8);
  text-decoration: none;
  transition: color 0.2s ease;
}

a.quickbox__sub:hover {
  color: var(--c-light);
}

/* --- węższe ekrany: kolumny jedna pod drugą --- */

@media (max-width: 1000px) {
  .bsplit {
    grid-template-columns: 1fr;
    gap: 2.75rem;
  }
}

/* w wąskiej kolumnie mapa musi być niższa niż w osobnej sekcji */

/* ==========================================================================
   STOPKA, zbudowana z tych samych elementów co menu: pigułki, podkreślenia
   wyjeżdżające od lewej, przyciski btn--fx, ikona telefonu w kółku.
   ========================================================================== */

.footer {
  position: relative;
  background: #08090B;
  border-top: 1px solid rgba(244,244,247,0.08);
  color: var(--c-text);
  overflow: hidden;
  isolation: isolate;
}

/* poświata akcentu w prawym górnym rogu, domyka stronę tym samym
   sygnałem, którym zaczyna się header */
.footer::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: -40%;
  right: -10%;
  width: 780px;
  height: 780px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(95,221,2,0.06) 0%, transparent 65%);
  pointer-events: none;
}

.footer__inner {
  position: relative;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 0 var(--pad);
}

/* --- wielki napis na górze stopki, cały pasek prowadzi na kontakt --- */

.footcta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2.5rem;
  padding: 4.5rem 0;
  border-bottom: 1px solid rgba(244,244,247,0.08);
  text-decoration: none;
}

.footcta__title {
  font-family: var(--f-head);
  /* rozmiar dobrany tak, żeby całe zdanie mieściło się w jednej linii
     obok strzałki, od 900px wyłączamy zawijanie */
  font-size: clamp(1.5rem, 3.1vw, 2.85rem);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.03em;
  color: var(--c-light);
}

@media (min-width: 900px) {
  .footcta__title {
    white-space: nowrap;
  }
}

/* druga część napisu w akcencie, z podkreśleniem wysuwanym od lewej, ten sam ruch co w pozycjach menu */
.footcta__title .accent {
  position: relative;
  display: inline-block;
  color: var(--c-accent);
}

.footcta__title .accent::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0.06em;
  height: 3px;
  background: var(--c-accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.45s cubic-bezier(0.65, 0, 0.35, 1);
}

.footcta:hover .footcta__title .accent::after {
  transform: scaleX(1);
}

/* strzałka sygnalizująca, że napis jest odnośnikiem */
.footcta__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  border: 1px solid rgba(95,221,2,0.4);
  background: rgba(95,221,2,0.08);
  transition: background-color 0.3s ease, transform 0.3s ease,
              border-color 0.3s ease;
}

.footcta__arrow svg {
  width: 26px;
  height: 26px;
  fill: none;
  stroke: var(--c-accent);
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke 0.3s ease;
}

.footcta:hover .footcta__arrow {
  background: var(--c-accent);
  border-color: var(--c-accent);
  transform: translateX(6px);
}

.footcta:hover .footcta__arrow svg {
  stroke: #0A1A00;
}

@media (prefers-reduced-motion: reduce) {
  .footcta__title .accent::after,
  .footcta__arrow {
    transition: none;
  }

  .footcta:hover .footcta__arrow {
    transform: none;
  }
}

/* --- główna siatka stopki --- */

.footgrid {
  display: grid;
  grid-template-columns: 1.25fr 0.75fr 0.9fr 1.1fr;
  gap: 3rem;
  padding: 3.5rem 0;
}

.footcol {
  min-width: 0;
}

.footcol__title {
  margin-bottom: 1.35rem;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-accent);
}

/* --- kolumna marki --- */

.footbrand__logo {
  margin-bottom: 1.1rem;
}


.footbrand__desc {
  font-size: 0.9rem;
  line-height: 1.75;
  color: rgba(182,188,201,0.85);
  max-width: 34ch;
}

/* pigułka z oceną, ten sam element co w górnej belce menu */
.footbrand__rating {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 1.35rem;
  padding: 0.5rem 0.95rem;
  border: 1px solid rgba(244,244,247,0.12);
  border-radius: 999px;
  background: rgba(244,244,247,0.05);
  font-size: 0.78rem;
  color: var(--c-text);
  text-decoration: none;
  transition: border-color 0.2s ease;
}

.footbrand__rating:hover {
  border-color: rgba(95,221,2,0.45);
}

.footbrand__socials {
  display: flex;
  gap: 0.6rem;
  margin-top: 1.35rem;
}

/* --- linki nawigacyjne: podkreślenie jak w menu --- */

.footlinks {
  list-style: none;
  display: grid;
  gap: 0.15rem;
}

.footlinks a {
  position: relative;
  display: inline-block;
  padding: 0.32rem 0;
  font-size: 0.92rem;
  color: rgba(182,188,201,0.9);
  text-decoration: none;
  transition: color 0.22s ease;
}

.footlinks a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0.1rem;
  height: 1.5px;
  background: var(--c-accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.3s cubic-bezier(0.65, 0, 0.35, 1);
}

.footlinks a:hover {
  color: var(--c-light);
}

.footlinks a:hover::after {
  transform: scaleX(1);
}

/* --- kolumna kontaktu --- */

.footcontact {
  list-style: none;
  display: grid;
  gap: 1.1rem;
}

.footcontact__label {
  display: block;
  margin-bottom: 0.2rem;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(182,188,201,0.6);
}

.footcontact a,
.footcontact strong {
  display: block;
  font-family: var(--f-head);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--c-light);
  text-decoration: none;
  word-break: break-word;
  transition: color 0.2s ease;
}

.footcontact a:hover {
  color: var(--c-accent);
}

.footcontact span.sub {
  display: block;
  font-size: 0.85rem;
  font-weight: 400;
  color: rgba(182,188,201,0.8);
}

/* --- mapa satelitarna w stopce --- */

.footmap {
  position: relative;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid rgba(244,244,247,0.1);
  background: var(--c-surface);
}

.footmap iframe {
  display: block;
  width: 100%;
  height: 190px;
  border: 0;
  filter: grayscale(0.25);
}

/* pigułka z adresem nałożona na mapę */
.footmap__pin {
  position: absolute;
  left: 0.75rem;
  bottom: 0.75rem;
  right: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.6rem 0.9rem;
  border-radius: 10px;
  border: 1px solid rgba(244,244,247,0.14);
  background: rgba(7,9,10,0.82);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.footmap__addr {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--c-light);
  min-width: 0;
}

.footmap__addr svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  fill: none;
  stroke: var(--c-accent);
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.footmap__go {
  flex-shrink: 0;
  font-size: 0.76rem;
  font-weight: 700;
  color: var(--c-accent);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.2s ease;
}

.footmap__go:hover {
  color: var(--c-light);
}

/* --- dolny pasek --- */

.footbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1.25rem;
  padding: 1.6rem 0 2rem;
  border-top: 1px solid rgba(244,244,247,0.08);
}

.footbar__copy {
  font-size: 0.82rem;
  color: rgba(182,188,201,0.7);
}

.footbar__right {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.footbar__legal {
  list-style: none;
  display: flex;
  gap: 1.25rem;
}

.footbar__legal a {
  font-size: 0.82rem;
  color: rgba(182,188,201,0.7);
  text-decoration: none;
  transition: color 0.2s ease;
}

.footbar__legal a:hover {
  color: var(--c-accent);
}

/* powrót na górę */
.foottop {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.95rem;
  border: 1px solid rgba(244,244,247,0.14);
  border-radius: 999px;
  background: none;
  font-family: var(--f-body);
  font-size: 0.78rem;
  font-weight: 600;
  color: rgba(182,188,201,0.9);
  cursor: pointer;
  transition: border-color 0.22s ease, color 0.22s ease;
}

.foottop svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 0.25s ease;
}

.foottop:hover {
  border-color: rgba(95,221,2,0.5);
  color: var(--c-light);
}

.foottop:hover svg {
  transform: translateY(-2px);
  stroke: var(--c-accent);
}

/* --- responsywność stopki --- */

@media (max-width: 1100px) {
  .footgrid {
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
  }

  /* mapa na całą szerokość, żeby nie robiła się znaczkiem */
  .footgrid .footcol--map {
    grid-column: 1 / -1;
  }
}

@media (max-width: 640px) {
  .footcta {
    padding: 2.5rem 0;
  }

  .footgrid {
    grid-template-columns: 1fr;
    gap: 2.25rem;
    padding: 2.5rem 0;
  }

  .footbrand__desc {
    max-width: none;
  }

  /* realny obszar klikania na dotyku */
  .footlinks a {
    padding: 0.5rem 0;
    font-size: 0.95rem;
  }

  .footbar {
    flex-direction: column;
    align-items: flex-start;
  }

  .footbar__right {
    width: 100%;
    justify-content: space-between;
  }
}

/* --- lewa kolumna przy formularzu: alternatywa dla wypełniania pól ---
   flex w pionie z justify-content: space-between sprawia, że przycisk
   siada na dole karty, więc obie kolumny kończą się równo. */

.callbox {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 2rem;
}

.callbox__label {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 1rem;
}

.callbox__num {
  display: block;
  font-family: var(--f-head);
  font-size: clamp(1.7rem, 2.4vw, 2.15rem);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: var(--c-light);
  text-decoration: none;
  transition: color 0.2s ease;
}

.callbox__num:hover {
  color: var(--c-accent);
}

.callbox__num2 {
  display: inline-block;
  margin-top: 0.45rem;
  font-size: 0.92rem;
  color: rgba(182,188,201,0.85);
  text-decoration: none;
  transition: color 0.2s ease;
}

.callbox__num2:hover {
  color: var(--c-light);
}

.callbox__note {
  margin-top: 1.1rem;
  font-size: 0.88rem;
  line-height: 1.7;
  color: rgba(182,188,201,0.8);
}

.callbox__meta {
  list-style: none;
  display: grid;
  gap: 1.25rem;
  padding: 1.6rem 0;
  border-top: 1px solid rgba(244,244,247,0.08);
  border-bottom: 1px solid rgba(244,244,247,0.08);
}

.callbox__cta {
  width: 100%;
  justify-content: space-between;
}

@media (max-width: 900px) {
  .contact__head {
    grid-template-columns: 1fr;
    gap: 1.1rem;
  }

  .contact__head .contact__lead {
    grid-column: 1;
    grid-row: 3;
    padding-bottom: 0;
  }
}

/* zdjęcie Passata jest przycięte do 4:3 z autem na środku, baner bierze
   środek kadru */
.page-banner--dlakogo .page-banner__img {
  object-position: center 50%;
}

/* ==========================================================================
   STRONY PRAWNE, czytelna kolumna tekstu
   ========================================================================== */

.legal {
  background: var(--c-bg);
  padding: 5rem var(--pad) 6rem;
}

.legal__inner {
  max-width: 52rem;
  margin: 0 auto;
}

/* Przypis pod tabelą, na przykład kto jest administratorem cudzych cookies.
   Lżejszy od .legal__meta: bez kreski i tła, ma tylko odsunąć się od tabeli. */
.legal__note {
  margin-top: -1rem;
  margin-bottom: 2.5rem;
  font-size: 0.85rem;
  line-height: 1.7;
  color: rgba(182,188,201,0.75);
}

.legal__meta {
  margin-bottom: 3rem;
  padding: 1rem 1.25rem;
  border-left: 2px solid var(--c-accent);
  background: rgba(244,244,247,0.04);
  border-radius: 0 8px 8px 0;
  font-size: 0.85rem;
  line-height: 1.7;
  color: rgba(182,188,201,0.9);
}

/* miejsca do uzupełnienia przez klienta widoczne na pierwszy rzut oka */
.legal__todo {
  padding: 0.1rem 0.45rem;
  border-radius: 4px;
  background: rgba(229,83,61,0.16);
  border: 1px dashed rgba(229,83,61,0.6);
  color: #FF9A86;
  font-weight: 600;
  font-size: 0.92em;
}

.legal h2 {
  font-family: var(--f-head);
  font-size: clamp(1.25rem, 2.2vw, 1.6rem);
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--c-light);
  margin: 3rem 0 1rem;
  scroll-margin-top: 8rem;
}

.legal h2:first-of-type {
  margin-top: 0;
}

.legal h3 {
  font-family: var(--f-head);
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--c-light);
  margin: 1.75rem 0 0.6rem;
}

.legal p,
.legal li {
  font-size: 0.96rem;
  line-height: 1.85;
  color: var(--c-text);
}

.legal p {
  margin-bottom: 1rem;
}

.legal ul,
.legal ol {
  margin: 0 0 1.25rem 1.25rem;
}

.legal li {
  margin-bottom: 0.5rem;
  padding-left: 0.3rem;
}

.legal ul {
  list-style: none;
  margin-left: 0;
}

.legal ul > li {
  position: relative;
  padding-left: 1.5rem;
}

.legal ul > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.75em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--c-accent);
}

.legal a {
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.legal a:hover {
  color: var(--c-light);
}

.legal strong {
  color: var(--c-light);
}

/* tabela zestawienia ciasteczek */
.legal__table-wrap {
  overflow-x: auto;
  margin: 1.25rem 0 1.75rem;
  border: 1px solid rgba(244,244,247,0.1);
  border-radius: 10px;
}

.legal__table {
  width: 100%;
  min-width: 34rem;
  border-collapse: collapse;
  font-size: 0.88rem;
}

.legal__table th,
.legal__table td {
  padding: 0.85rem 1rem;
  text-align: left;
  border-bottom: 1px solid rgba(244,244,247,0.08);
  vertical-align: top;
}

.legal__table th {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--c-accent);
  background: rgba(244,244,247,0.03);
}

.legal__table tr:last-child td {
  border-bottom: none;
}

.legal__table td {
  color: var(--c-text);
  line-height: 1.6;
}

/* ==========================================================================
   BANER COOKIES
   ========================================================================== */

.cookiebar {
  position: fixed;
  left: var(--pad);
  right: var(--pad);
  bottom: var(--pad);
  z-index: 60;
  max-width: 62rem;
  margin: 0 auto;
  padding: 1.5rem 1.75rem;
  border: 1px solid rgba(244,244,247,0.14);
  border-radius: 14px;
  background: rgba(10,12,14,0.96);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  box-shadow: 0 22px 60px rgba(0,0,0,0.6);
  display: flex;
  align-items: center;
  gap: 2rem;
  /* domyślnie schowany, pokazuje go skrypt, żeby nie mrugał przy wczytaniu */
  transform: translateY(140%);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1),
              opacity 0.35s ease, visibility 0.35s;
}

.cookiebar.is-open {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
}

/* limonkowa krecha przy lewej krawędzi, sygnał zgodny z resztą strony */
.cookiebar::before {
  content: "";
  position: absolute;
  left: -1px;
  top: 1.5rem;
  bottom: 1.5rem;
  width: 3px;
  border-radius: 3px;
  background: var(--c-accent);
}

.cookiebar__text {
  min-width: 0;
}

.cookiebar__title {
  font-family: var(--f-head);
  font-size: 1rem;
  font-weight: 700;
  color: var(--c-light);
  margin-bottom: 0.4rem;
}

.cookiebar__desc {
  font-size: 0.86rem;
  line-height: 1.65;
  color: rgba(182,188,201,0.9);
}

.cookiebar__desc a {
  color: var(--c-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.cookiebar__actions {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-shrink: 0;
}

.cookiebar .btn {
  padding: 0.85rem 1.4rem;
  font-size: 0.85rem;
  white-space: nowrap;
}

@media (max-width: 780px) {
  .cookiebar {
    flex-direction: column;
    align-items: stretch;
    gap: 1.25rem;
    padding: 1.35rem 1.4rem;
  }

  .cookiebar__actions {
    flex-direction: column-reverse;
  }

  .cookiebar .btn {
    width: 100%;
    justify-content: center;
  }
}

/* --- zastępnik mapy, dopóki nie ma zgody --- */

.mapblock {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.85rem;
  height: 100%;
  min-height: 190px;
  padding: 1.75rem 1.5rem;
  text-align: center;
  background: var(--c-surface);
}

.mapblock__icon svg {
  width: 26px;
  height: 26px;
  fill: none;
  stroke: rgba(182,188,201,0.7);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.mapblock__text {
  font-size: 0.85rem;
  line-height: 1.6;
  color: rgba(182,188,201,0.9);
  max-width: 28rem;
}

.mapblock__btn {
  padding: 0.6rem 1.2rem;
  border: 1px solid rgba(95,221,2,0.45);
  border-radius: 999px;
  background: rgba(95,221,2,0.1);
  font-family: var(--f-body);
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--c-accent);
  cursor: pointer;
  transition: background-color 0.22s ease, color 0.22s ease;
}

.mapblock__btn:hover {
  background: var(--c-accent);
  color: #0A1A00;
}

/* --- przycisk udający link w pasku prawnym stopki --- */

.footbar__link-btn {
  padding: 0;
  border: 0;
  background: none;
  font-family: var(--f-body);
  font-size: 0.82rem;
  color: rgba(182,188,201,0.7);
  cursor: pointer;
  transition: color 0.2s ease;
}

.footbar__link-btn:hover {
  color: var(--c-accent);
}

/* --- podpis autora strony --- */

.footbar__by {
  display: inline-block;
  margin-left: 0.5rem;
  padding-left: 0.75rem;
  border-left: 1px solid rgba(244,244,247,0.14);
}

.madeby {
  display: inline-flex;
  align-items: center;
  gap: 0;
  text-decoration: none;
  color: rgba(182,188,201,0.85);
  transition: color 0.25s ease;
}

.madeby__leaf {
  display: inline-block;
  font-size: 0.95rem;
  line-height: 1;
  /* liść klonu, znak rozpoznawczy autora, przy najechaniu robi obrót */
  transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* cudzysłów drukarski jako pseudoelementy, przylega do liścia bez
   odstępów, które przy osobnych elementach robił gap i białe znaki */
.madeby::before,
.madeby::after {
  font-family: var(--f-head);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
  color: rgba(182,188,201,0.65);
  transition: color 0.25s ease;
}

.madeby::before {
  content: "\201E";
  margin-right: 0.05em;
}

.madeby::after {
  content: "\201D";
  margin-left: 0.05em;
}

.madeby:hover::before,
.madeby:hover::after {
  color: var(--c-accent);
}

.madeby:hover {
  color: var(--c-light);
}

.madeby:hover .madeby__leaf {
  transform: rotate(-18deg) scale(1.18);
}

@media (prefers-reduced-motion: reduce) {
  .madeby__leaf,
  .madeby::before,
  .madeby::after {
    transition: none;
  }

  .madeby:hover .madeby__leaf {
    transform: none;
  }
}

@media (max-width: 640px) {
  .footbar__by {
    display: block;
    margin: 0.6rem 0 0;
    padding: 0;
    border-left: 0;
  }
}

/* ==========================================================================
   KREATOR ZGŁOSZENIA SZKODY, interaktywny doradca
   ========================================================================== */

.kreator {
  background: var(--c-bg-2);
  border-top: 1px solid rgba(244,244,247,0.06);
  padding: 6rem var(--pad);
}

.kreator__inner {
  max-width: 60rem;
  margin: 0 auto;
}

.kreator__head {
  text-align: center;
  margin-bottom: 2.5rem;
}

.kreator__box {
  position: relative;
  border: 1px solid rgba(244,244,247,0.1);
  border-radius: 18px;
  background: var(--c-surface);
  padding: clamp(1.75rem, 4vw, 3rem);
  min-height: 24rem;
  display: flex;
  flex-direction: column;
}

/* pasek postępu */
.kreator__progress {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 2rem;
}

.kreator__dot {
  height: 3px;
  flex: 1;
  border-radius: 3px;
  background: rgba(244,244,247,0.12);
  transition: background-color 0.35s ease;
}

.kreator__dot.is-done {
  background: var(--c-accent);
}

.kreator__step {
  display: none;
  flex: 1;
  flex-direction: column;
}

.kreator__step.is-active {
  display: flex;
  animation: kreatorIn 0.4s ease both;
}

@keyframes kreatorIn {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

.kreator__q {
  font-family: var(--f-head);
  font-size: clamp(1.3rem, 2.4vw, 1.75rem);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-bottom: 0.7rem;
}

.kreator__hint {
  font-size: 0.9rem;
  line-height: 1.65;
  color: rgba(182,188,201,0.8);
  margin-bottom: 1.75rem;
}

.kreator__opts {
  display: grid;
  gap: 0.75rem;
}

.kreator__opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  padding: 1.05rem 1.25rem;
  border: 1px solid rgba(244,244,247,0.12);
  border-radius: 10px;
  background: rgba(244,244,247,0.03);
  font-family: var(--f-body);
  font-size: 0.96rem;
  font-weight: 600;
  color: var(--c-light);
  text-align: left;
  cursor: pointer;
  transition: border-color 0.22s ease, background-color 0.22s ease,
              transform 0.22s ease;
}

.kreator__opt:hover {
  border-color: rgba(95,221,2,0.5);
  background: rgba(95,221,2,0.07);
  transform: translateX(4px);
}

.kreator__opt::after {
  content: "";
  flex-shrink: 0;
  width: 8px;
  height: 8px;
  border-top: 2px solid rgba(182,188,201,0.6);
  border-right: 2px solid rgba(182,188,201,0.6);
  transform: rotate(45deg);
  transition: border-color 0.22s ease;
}

.kreator__opt:hover::after {
  border-color: var(--c-accent);
}

/* --- wynik --- */

.kreator__badge {
  display: inline-flex;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 1.1rem;
  padding: 0.6rem 1.1rem;
  border-radius: 999px;
  border: 1px solid rgba(95,221,2,0.4);
  background: rgba(95,221,2,0.1);
}

.kreator__badge--platne {
  border-color: rgba(244,244,247,0.2);
  background: rgba(244,244,247,0.05);
}

.kreator__badge-value {
  font-family: var(--f-head);
  font-size: 1.35rem;
  font-weight: 800;
  line-height: 1;
  color: var(--c-accent);
}

.kreator__badge--platne .kreator__badge-value {
  color: var(--c-light);
}

.kreator__badge-label {
  font-size: 0.82rem;
  font-weight: 600;
  color: rgba(182,188,201,0.9);
}

.kreator__result-title {
  font-family: var(--f-head);
  font-size: clamp(1.25rem, 2.2vw, 1.6rem);
  font-weight: 700;
  line-height: 1.3;
  color: var(--c-light);
  margin-bottom: 0.9rem;
}

.kreator__result-text {
  font-size: 0.95rem;
  line-height: 1.8;
  color: var(--c-text);
  margin-bottom: 1.5rem;
}

.kreator__list {
  list-style: none;
  display: grid;
  gap: 0.7rem;
  margin-bottom: 1.75rem;
  padding: 1.25rem 1.4rem;
  border-radius: 10px;
  background: rgba(244,244,247,0.03);
  border: 1px solid rgba(244,244,247,0.07);
}

.kreator__list li {
  position: relative;
  padding-left: 1.6rem;
  font-size: 0.9rem;
  line-height: 1.6;
  color: var(--c-light);
}

.kreator__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--c-accent);
}

.kreator__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin-top: auto;
}

.kreator__restart {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-top: 1.5rem;
  padding: 0;
  border: 0;
  background: none;
  font-family: var(--f-body);
  font-size: 0.85rem;
  color: rgba(182,188,201,0.75);
  cursor: pointer;
  transition: color 0.2s ease;
}

.kreator__restart:hover {
  color: var(--c-accent);
}

.kreator__note {
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(244,244,247,0.08);
  font-size: 0.8rem;
  line-height: 1.6;
  color: rgba(182,188,201,0.65);
}

@media (max-width: 640px) {
  .kreator {
    padding: 3.5rem var(--pad);
  }

  .kreator__box {
    min-height: 0;
  }

  .kreator__actions .btn {
    width: 100%;
    justify-content: space-between;
  }
}

/* ==========================================================================
   POPRAWKI MOBILNE, wyniki audytu na 390 px
   Drobne podpisy schodziły do 10–11,5 px (nieczytelne w słońcu), a część
   odnośników miała mniej niż 40 px wysokości, czyli poniżej progu wygodnego
   trafienia palcem.
   ========================================================================== */

@media (max-width: 780px) {

  /* --- czytelność drobnych podpisów: minimum 12 px --- */
  .header__phone-label,
  .partners__label,
  .info__label,
  .socials__label,
  .footcol__title,
  .footcontact__label,
  .callbox__label,
  .quickbox__label,
  .quickbox__head,
  .footcontact .sub,
  .footbar__copy,
  .footbar__legal a,
  .footbar__link-btn,
  .kreator__note,
  .doc-photo__cap {
    font-size: 0.76rem;
  }

  .topbar__rating,
  .topbar__item {
    font-size: 0.8rem;
  }

  /* --- cele dotykowe: co najmniej 44 px wysokości --- */

  .topbar__rating {
    padding: 0.6rem 0;
  }

  /* inline-flex, nie inline-block: blok kasował układ w rzędzie i słowo
     SERVICE spadało pod literę Q. Padding zostaje, bo służy powiększeniu
     celu dotknięcia do 44 px. */
  .logo,
  .footbrand__logo {
    display: inline-flex;
    padding: 0.5rem 0;
  }

  .header__phone-ico {
    width: 44px;
    height: 44px;
  }

  .header__phone-ico svg {
    width: 18px;
    height: 18px;
  }

  .info__value,
  .quickbox__value,
  .quickbox__sub,
  .footcontact a,
  .callbox__num,
  .callbox__num2,
  .footmap__go,
  .madeby {
    display: inline-block;
    padding: 0.4rem 0;
  }

  .footbrand__rating {
    padding: 0.65rem 1rem;
  }

  /* odnośniki w zdaniu ze zgodą, bez tego mają 16 px wysokości */
  .consent a,
  .cookiebar__desc a,
  .legal p a {
    display: inline-block;
    padding: 0.25rem 0;
  }

  /* pole wyboru zgody, całą etykietę i tak da się kliknąć,
     ale sam kwadrat też powinien być łatwy do trafienia */
  .consent input[type="checkbox"] {
    width: 26px;
    height: 26px;
  }

  /* --- ozdoba w rogu wychodziła poza kadr na wąskim ekranie --- */
  .docs-deco {
    width: 240px;
    height: 240px;
    transform: translate(35%, -30%);
  }
}

/* --- pole wyboru rozpychało siatkę na wąskim ekranie ---
   <select> ma domyślnie minimalną szerokość równą najdłuższej opcji, a element
   siatki ma min-width: auto, razem dawało to 378 px przy kontenerze 350 px
   i poziomy pasek przewijania. */

.contact__grid > *,
.field,
.field__input,
.form,
.form__row > * {
  min-width: 0;
}

.field__input {
  max-width: 100%;
}

@media (max-width: 780px) {
  /* dopięcie celów dotykowych, które po pierwszej poprawce
     nadal miały poniżej 40 px wysokości */
  .footbar__legal a,
  .footbar__link-btn,
  .foottop,
  .madeby,
  .footmap__go,
  .consent a,
  .cookiebar__desc a {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
  }

  .footlinks a {
    padding: 0.58rem 0;
  }

  .footbar__legal {
    gap: 0.4rem 1.25rem;
    flex-wrap: wrap;
  }
}

@media (max-width: 780px) {
  /* „Start" w ścieżce nawigacji miał 22 px wysokości */
  .page-banner__crumbs {
    padding: 0.35rem 1rem;
  }

  .page-banner__crumbs a {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
  }

  /* odnośniki w listach na stronach prawnych, wcześniej objęte
     były tylko te w akapitach */
  .legal li a,
  .legal td a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
  }

  /* nagłówki tabeli i etykieta wariantu schodziły poniżej 12 px */
  .legal__table th,
  .compare__tag {
    font-size: 0.76rem;
  }
}

/* ==========================================================================
   FORMULARZ DOPASOWUJĄCY SIĘ DO SPRAWY
   Po wyborze tematu skrypt pokazuje zestaw pól pasujący do sytuacji
   i podmienia podpowiedź w polu wiadomości.
   ========================================================================== */

/* podpowiedź pod listą spraw */
.field__hint {
  display: block;
  margin-top: 0.45rem;
  font-size: 0.78rem;
  line-height: 1.5;
  color: rgba(182,188,201,0.75);
}

/* blok pól dodatkowych */
.form__extra {
  display: none;
  margin-top: 0.25rem;
  padding: 1.25rem 1.35rem 1.35rem;
  border: 1px solid rgba(95,221,2,0.22);
  border-radius: 12px;
  background: rgba(95,221,2,0.04);
}

.form__extra.is-open {
  display: block;
  animation: extraIn 0.35s ease both;
}

@keyframes extraIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.form__extra-head {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-bottom: 1.1rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-accent);
}

.form__extra-head::before {
  content: "";
  width: 16px;
  height: 2px;
  border-radius: 2px;
  background: var(--c-accent);
}

/* Odstęp tylko między blokami ustawionymi jeden pod drugim.
   Znak > jest tu kluczowy: bez niego selektor .field + .field łapał również
   dwa pola stojące OBOK siebie w .form__row i spychał prawe o 1rem w dół,
   przez co kolumny formularza się rozjeżdżały. */
.form__extra > .form__row + .form__row,
.form__extra > .form__row + .field,
.form__extra > .field + .field,
.form__extra > .field + .form__row {
  margin-top: 1rem;
}

/* pole opcjonalne, oznaczone, żeby nikt nie utknął */
.field__opt {
  margin-left: 0.4rem;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: rgba(182,188,201,0.6);
}

/* daty w ciemnym motywie mają domyślnie białą ikonkę kalendarza */
.field__input[type="date"] {
  color-scheme: dark;
}

@media (max-width: 640px) {
  .form__extra {
    padding: 1.1rem 1rem 1.2rem;
  }
}

/* Komunikat pod przyciskiem wysyłki.
   Sam w sobie neutralny; kolor nadaje modyfikator, bo ten sam element
   pokazuje i potwierdzenie wysłania, i błąd. */
.form__info {
  margin-top: 1rem;
  padding: 0.9rem 1.1rem;
  border-radius: 10px;
  border: 1px solid var(--c-line);
  background: rgba(244,244,247,0.04);
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--c-text);
}

.form__info--ok {
  border-color: rgba(95,221,2,0.45);
  background: rgba(95,221,2,0.09);
  color: #CFF5B0;
}

.form__info--blad {
  border-color: rgba(229,83,61,0.45);
  background: rgba(229,83,61,0.1);
  color: #FFBBAE;
}

/* Pole-pułapka na boty.
   Nie używamy display:none, bo część automatów pomija pola całkowicie
   ukryte. Pole jest w układzie strony, ale wyprowadzone poza ekran,
   więc człowiek go nie zobaczy i nie wypełni. */
.form__trap {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.form__info a {
  color: var(--c-accent);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* --- wskaźnik otwarcia w górnej belce ---
   Inny niż w stopce: bez ramki i tła, sama kropka z pulsującą aureolą,
   żeby nie konkurował z oceną Google po lewej stronie belki. */

.topbar__status {
  gap: 0.5rem;
}

.topbar__status-dot {
  position: relative;
  flex-shrink: 0;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(182,188,201,0.5);
  transition: background-color 0.3s ease;
}

.topbar__status.is-open .topbar__status-dot {
  background: var(--c-accent);
}

/* aureola tętni tylko wtedy, gdy warsztat jest otwarty */
.topbar__status.is-open .topbar__status-dot::after {
  content: "";
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  background: var(--c-accent);
  opacity: 0.35;
  animation: pulsOtwarte 2.2s ease-out infinite;
}

@keyframes pulsOtwarte {
  0%   { transform: scale(0.7); opacity: 0.45; }
  70%  { transform: scale(2.1); opacity: 0; }
  100% { transform: scale(2.1); opacity: 0; }
}

.topbar__status.is-open {
  color: var(--c-light);
  font-weight: 600;
}

.topbar__status.is-closed .topbar__status-dot {
  background: #E5533D;
}

@media (prefers-reduced-motion: reduce) {
  .topbar__status.is-open .topbar__status-dot::after {
    animation: none;
    opacity: 0.25;
  }
}

/* --- kolumna kontaktu: rozkład treści na pełną wysokość ---
   Karta jest rozciągana do wysokości formularza obok, więc bez tego
   na dole zostawała pusta przestrzeń. */

.contact__info {
  display: flex;
  flex-direction: column;
}

.contact__info .info-list {
  margin-bottom: 1.75rem;
}

.contact__info .socials {
  margin-top: auto;
}

/* --- ostatnie słowo w sprawie czytelności na telefonie ---
   Blok musi stać PO deklaracjach bazowych tych selektorów (.field__hint,
   .form__extra-head, .field__opt, .topbar__status, wszystkie wyżej w pliku),
   bo mają tę samą wagę i decyduje kolejność. Dopisując coś nowego, co ustawia
   font-size na tych klasach, dopisz to nad tym blokiem, nie pod. */

@media (max-width: 780px) {
  .field__opt,
  .form__extra-head,
  .field__hint,
  .topbar__status {
    font-size: 0.76rem;
  }
}

/* ==========================================================================
   KONTAKT, jeden szeroki formularz, mapa doklejona pod spodem
   Formularz i mapa tworzą jedną bryłę: formularz ma zaokrąglone tylko górne
   rogi i nie ma dolnej krawędzi, mapa domyka kształt od dołu.
   ========================================================================== */

.contact__single {
  max-width: 62rem;
  margin: 0 auto;
}

.contact__single .contact__form-wrap {
  border-radius: 18px 18px 0 0;
  border-bottom: 0;
}

.contact__map {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(244,244,247,0.07);
  border-top: 1px solid rgba(244,244,247,0.1);
  border-radius: 0 0 18px 18px;
  background: var(--c-surface);
}

.contact__map iframe {
  display: block;
  width: 100%;
  height: 340px;
  border: 0;
}

/* zastępnik przed zgodą ma tę samą wysokość, żeby nic nie skakało */
.contact__map .mapblock {
  min-height: 340px;
}

@media (max-width: 640px) {
  .contact__map iframe,
  .contact__map .mapblock {
    height: 260px;
    min-height: 260px;
  }
}

/* ==========================================================================
   BLOG, lista wpisów i kolumna tekstowa artykułu
   Pierwszy element systemu, w którym bohaterem jest długi tekst, a nie
   zdjęcie ani siatka kart. Dlatego kolumna treści ma własną skalę
   typograficzną: 1.075rem i interlinia 1.85, czyli więcej niż 0.98rem
   z sekcji sprzedażowych. Przy pięciu tysiącach znaków tamta skala męczy.

   Szerokość kolumny trzyma się 68 znaków w wierszu. Powyżej tej wartości
   oko gubi początek następnego wiersza, poniżej tekst zaczyna skakać.
   ========================================================================== */

/* Odnośnik wpleciony w zwykły akapit na podstronie. W arkuszu nie ma
   globalnej reguły dla <a>, więc bez klasy link w treści wychodzi
   domyślnym niebieskim z podkreśleniem, co na czerni wygląda jak błąd.
   Traktowanie takie samo jak w kolumnie artykułu, żeby linkowanie
   wewnętrzne wyglądało wszędzie tak samo. */
.inlink {
  color: var(--c-accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color 0.2s ease;
}

.inlink:hover {
  color: var(--c-light);
}

/* Baner bloga ma własne zdjęcie, docięte do 1400 na 700 (img/blog-banner.webp).
   Wcześniej szło tu pionowe img/warsztat.webp, z którego w wąskim pasie
   widać było jedną trzecią, a przeglądarka i tak pobierała całe 265 KB.
   Docięta wersja waży 106 KB, a telefon bierze 48 KB z wariantu -sm.
   Kadr jest już właściwy, więc wystarczy środek. */
.page-banner--blog .page-banner__img {
  object-position: center 50%;
}

/* --- sekcja z listą wpisów --- */

.bloglist {
  position: relative;
  background: #0A0B0D;
  color: var(--c-text);
  overflow: hidden;
  isolation: isolate;
}

/* to samo ukośne pasmo co w sekcji usług, dla spójności podstron */
.bloglist::before {
  content: "";
  position: absolute;
  z-index: -2;
  inset: 0;
  background: repeating-linear-gradient(
    -32deg,
    rgba(244,244,247,0.028) 0 1px,
    transparent 1px 74px
  );
  -webkit-mask-image: radial-gradient(90% 70% at 20% 10%, #000 0%, transparent 74%);
  mask-image: radial-gradient(90% 70% at 20% 10%, #000 0%, transparent 74%);
}

.bloglist__inner {
  position: relative;
  z-index: 1;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 6rem var(--pad);
}

.bloglist__head {
  margin-bottom: 3rem;
}

.bloglist__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.6rem, 2.6vw, 2.2rem);
  line-height: 1.22;
  letter-spacing: -0.02em;
  color: var(--c-light);
}

/* --- siatka kart --- */

.postgrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.75rem;
  list-style: none;
}

/* Pierwszy wpis na dwie kolumny, ze zdjęciem obok tekstu. Lista zaczyna się
   wtedy od wyraźnego punktu wejścia, a nie od trzech równorzędnych kart,
   między którymi czytelnik musi wybierać. */
.postgrid > li:first-child {
  grid-column: span 2;
}

.postcard {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.07);
  border-radius: 16px;
  overflow: hidden;
  text-decoration: none;
  transition: border-color 0.2s ease, transform 0.2s ease;
}

.postcard:hover {
  border-color: rgba(95,221,2,0.4);
  transform: translateY(-4px);
}

.postcard__figure {
  position: relative;
  aspect-ratio: 16 / 9;
  background: #16191E;
  overflow: hidden;
  flex-shrink: 0;
}

.postcard__photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  /* zdjęcie jest tłem nagłówka, nie treścią, więc schodzi o pół tonu
     i dopiero pod kursorem wraca do pełnej jasności */
  filter: brightness(0.82) saturate(0.92);
  transition: filter 0.3s ease, transform 0.4s ease;
}

.postcard:hover .postcard__photo {
  filter: brightness(1) saturate(1);
  transform: scale(1.03);
}

.postcard__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 0.7rem;
  padding: 1.6rem 1.5rem 1.4rem;
}

.postcard__tag {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--c-accent);
}

.postcard__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.12rem;
  line-height: 1.32;
  letter-spacing: -0.015em;
  color: var(--c-light);
  transition: color 0.2s ease;
}

.postcard:hover .postcard__title {
  color: var(--c-accent);
}

.postcard__desc {
  font-size: 0.9rem;
  line-height: 1.7;
  color: var(--c-text);
}

.postcard__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem;
  margin-top: auto;
  padding-top: 1rem;
  border-top: 1px solid rgba(244,244,247,0.08);
  font-size: 0.78rem;
  font-weight: 600;
  color: rgba(182,188,201,0.65);
}

.postcard__meta span[aria-hidden] {
  color: var(--c-accent);
}

/* --- wariant wiodący: zdjęcie po lewej, tekst po prawej --- */

.postcard--lead {
  flex-direction: row;
}

.postcard--lead .postcard__figure {
  width: 48%;
  aspect-ratio: auto;
}

.postcard--lead .postcard__body {
  justify-content: center;
  padding: 2.25rem 2rem;
  gap: 0.85rem;
}

.postcard--lead .postcard__title {
  font-size: clamp(1.3rem, 2vw, 1.75rem);
  line-height: 1.24;
}

.postcard--lead .postcard__desc {
  font-size: 0.96rem;
}

/* --- stan pusty, zanim pojawi się pierwszy wpis --- */

.blogempty {
  padding: 4rem 2rem;
  border: 1px dashed rgba(244,244,247,0.14);
  border-radius: 16px;
  background: rgba(244,244,247,0.02);
  text-align: center;
}

.blogempty__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.2rem;
  color: var(--c-light);
  margin-bottom: 0.75rem;
}

.blogempty__text {
  font-size: 0.95rem;
  line-height: 1.75;
  max-width: 34rem;
  margin: 0 auto;
}

/* ==========================================================================
   POJEDYNCZY WPIS
   ========================================================================== */

/* pasek z datą i czasem czytania, pod nagłówkiem w banerze */
.post__head-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6rem;
  font-size: 0.84rem;
  font-weight: 600;
  color: rgba(182,188,201,0.8);
}

.post__head-meta span[aria-hidden] {
  color: var(--c-accent);
}

.post {
  background: var(--c-bg-2);
  padding: 5rem var(--pad);
}

.post__wrap {
  max-width: var(--wrap);
  margin: 0 auto;
  display: grid;
  /* kolumna tekstu i wąska szpalta ze spisem treści */
  grid-template-columns: minmax(0, 1fr) 17rem;
  gap: 4rem;
  align-items: start;
}

.post__body {
  /* 68 znaków w wierszu, patrz komentarz na początku sekcji */
  max-width: 44rem;
  font-size: 1.075rem;
  line-height: 1.85;
  color: var(--c-text);
}

.post__body > * + * {
  margin-top: 1.5rem;
}

/* Lead wyróżniony rozmiarem, nie kursywą. Kursywa w Montserracie
   jest syntetyczna, bo wczytujemy tylko odmianę prostą. */
.post__body > p:first-child {
  font-size: 1.18rem;
  line-height: 1.7;
  color: var(--c-light);
}

.post__body h2 {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.4rem, 2.2vw, 1.8rem);
  line-height: 1.28;
  letter-spacing: -0.02em;
  color: var(--c-light);
  margin-top: 3.25rem;
  padding-top: 1.75rem;
  border-top: 1px solid rgba(244,244,247,0.1);
  /* zapas pod paskiem nagłówka przy skoku z spisu treści */
  scroll-margin-top: 8rem;
}

.post__body h3 {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 1.15rem;
  line-height: 1.4;
  color: var(--c-light);
  margin-top: 2.25rem;
  scroll-margin-top: 8rem;
}

.post__body strong {
  font-weight: 700;
  color: var(--c-light);
}

.post__body a {
  color: var(--c-accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color 0.2s ease;
}

.post__body a:hover {
  color: var(--c-light);
}

.post__body ul,
.post__body ol {
  list-style: none;
  display: grid;
  gap: 0.85rem;
  padding-left: 0;
}

.post__body ul li,
.post__body ol li {
  position: relative;
  padding-left: 1.85rem;
  line-height: 1.75;
}

/* kwadratowy znacznik w kolorze akcentu, ta sama geometria co w przyciskach */
.post__body ul li::before {
  content: "";
  position: absolute;
  left: 0.15rem;
  top: 0.72em;
  width: 7px;
  height: 7px;
  background: var(--c-accent);
}

.post__body ol {
  counter-reset: krok;
}

.post__body ol li::before {
  counter-increment: krok;
  content: counter(krok);
  position: absolute;
  left: 0;
  top: 0.1em;
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 0.86rem;
  color: var(--c-accent);
}

/* wyróżniony akapit, na przykład przestroga albo wniosek praktyczny */
.post__note {
  padding: 1.5rem 1.6rem;
  border-left: 3px solid var(--c-accent);
  background: rgba(95,221,2,0.05);
  font-size: 1rem;
  line-height: 1.8;
  color: var(--c-light);
}

.post__note strong:first-child {
  color: var(--c-accent);
}

.post__figure {
  margin-top: 2.25rem;
}

.post__figure img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
  border: 1px solid rgba(244,244,247,0.07);
}

.post__figure figcaption {
  margin-top: 0.75rem;
  font-size: 0.84rem;
  line-height: 1.6;
  color: rgba(182,188,201,0.7);
}

/* tabela porównawcza w treści, bez poziomego paska na telefonie */
.post__table-wrap {
  overflow-x: auto;
  border: 1px solid rgba(244,244,247,0.09);
  border-radius: 14px;
}

.post__table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}

.post__table th,
.post__table td {
  padding: 0.9rem 1.1rem;
  text-align: left;
  border-bottom: 1px solid rgba(244,244,247,0.08);
  line-height: 1.6;
}

.post__table th {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--c-light);
  background: rgba(244,244,247,0.04);
}

.post__table tr:last-child td {
  border-bottom: 0;
}

/* --- spis treści, przylepiony przy przewijaniu --- */

.toc {
  position: sticky;
  /* belka informacyjna plus pasek menu to ok. 122 px */
  top: 9rem;
  padding: 1.5rem 1.4rem;
  background: var(--c-surface);
  border: 1px solid rgba(244,244,247,0.07);
  border-radius: 16px;
}

.toc__title {
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--c-accent);
  margin-bottom: 1rem;
}

.toc__list {
  list-style: none;
  display: grid;
  gap: 0.6rem;
}

.toc__list a {
  display: block;
  font-size: 0.88rem;
  line-height: 1.5;
  font-weight: 600;
  color: var(--c-text);
  text-decoration: none;
  padding-left: 0.85rem;
  border-left: 2px solid rgba(244,244,247,0.12);
  transition: color 0.2s ease, border-color 0.2s ease;
}

.toc__list a:hover {
  color: var(--c-light);
  border-left-color: var(--c-accent);
}

/* --- podpis pod treścią --- */

.post__sign {
  max-width: 44rem;
  margin-top: 3.5rem;
  padding-top: 1.75rem;
  border-top: 1px solid rgba(244,244,247,0.1);
  font-size: 0.9rem;
  line-height: 1.75;
  color: rgba(182,188,201,0.75);
}

/* --- powiązane wpisy --- */

.postnav {
  background: var(--c-bg);
  padding: 5rem var(--pad);
}

.postnav__inner {
  max-width: var(--wrap);
  margin: 0 auto;
}

.postnav__title {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(1.4rem, 2.2vw, 1.8rem);
  color: var(--c-light);
  margin-bottom: 2.25rem;
}

/* w powiązanych wszystkie karty są równorzędne, bez wariantu wiodącego */
.postnav .postgrid > li:first-child {
  grid-column: auto;
}

/* ==========================================================================
   BLOG, responsywność
   ========================================================================== */

@media (max-width: 1100px) {
  /* spis treści przestaje się mieścić obok kolumny tekstu, wchodzi nad nią
     jako zwykły blok i przestaje być przylepiony */
  .post__wrap {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }

  .post__wrap > .toc {
    position: static;
    order: -1;
  }

  .post__body,
  .post__sign {
    max-width: none;
  }

  .postgrid {
    grid-template-columns: repeat(2, 1fr);
  }

  /* przy dwóch kolumnach karta wiodąca zajmuje cały rząd i dalej
     ma zdjęcie obok tekstu */
  .postgrid > li:first-child {
    grid-column: span 2;
  }
}

@media (max-width: 780px) {
  /* zdjęcie obok tekstu zostawia na opis ok. 20 znaków w wierszu,
     więc karta wiodąca wraca do układu pionowego */
  .postcard--lead {
    flex-direction: column;
  }

  .postcard--lead .postcard__figure {
    width: 100%;
    aspect-ratio: 16 / 9;
  }

  .postcard--lead .postcard__body {
    padding: 1.6rem 1.5rem 1.4rem;
  }

  .postgrid {
    grid-template-columns: 1fr;
  }

  .postgrid > li:first-child {
    grid-column: auto;
  }
}

@media (max-width: 640px) {
  .bloglist__inner {
    padding: 3rem var(--pad);
  }

  .post,
  .postnav {
    padding: 2.75rem var(--pad);
  }

  .bloglist__head {
    margin-bottom: 2rem;
  }

  /* skala tekstu artykułu w dół, ale mniej niż w sekcjach sprzedażowych:
     to jest treść do czytania, nie do przeskanowania wzrokiem */
  .post__body {
    font-size: 1.02rem;
    line-height: 1.8;
  }

  .post__body > p:first-child {
    font-size: 1.1rem;
  }

  .post__body h2 {
    margin-top: 2.5rem;
    padding-top: 1.5rem;
  }

  .post__note {
    padding: 1.25rem 1.3rem;
    font-size: 0.96rem;
  }

  .postcard__title {
    font-size: 1.05rem;
  }

  .blogempty {
    padding: 2.5rem 1.25rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .postcard,
  .postcard__photo {
    transition: none;
  }

  .postcard:hover {
    transform: none;
  }

  .postcard:hover .postcard__photo {
    transform: none;
  }
}

/* ==========================================================================
   SKALA NA TELEFONIE
   Zmierzone na ekranie 390 px: nagłówki sekcji miały 30 px, H1 32 px,
   a odstępy między sekcjami po 56 do 72 px z góry i z dołu. Na komputerze
   te proporcje działają, na telefonie wszystko robiło się przytłaczające,
   a podstrona usług miała 9600 px wysokości, czyli jedenaście ekranów.

   Wartości biorą się z dolnych granic clamp() w regułach bazowych, więc
   trzeba je nadpisać wprost. Blok stoi na końcu arkusza celowo: reguły
   bazowe mają tę samą wagę, decyduje kolejność.
   ========================================================================== */

@media (max-width: 640px) {

  /* --- nagłówki --- */
  .hero__title            { font-size: 1.85rem; }
  .page-banner__title     { font-size: 1.7rem; }
  .about__title,
  .contact__title,
  .fleet__title,
  .reviews__title,
  .section-title,
  .services__title        { font-size: 1.55rem; }
  .carpage__name          { font-size: 1.45rem; }
  .cta-tile__title        { font-size: 1.4rem; }
  .page-cta__title,
  .svcpage__title         { font-size: 1.35rem; }
  .rentbar__title         { font-size: 1.3rem; }
  .kreator__q             { font-size: 1.15rem; }

  /* --- teksty prowadzące: interlinia 1,8 była zbyt rozstrzelona --- */
  .page-banner__lead      { font-size: 1rem;    line-height: 1.65; }
  .hero__lead,
  .rentbar__text,
  .cta-tile__text         { font-size: 0.98rem; line-height: 1.65; }
  .about__text,
  .claims__lead,
  .contact__lead,
  .fleet__lead,
  .services__lead,
  .svcpage__desc,
  .carpage__desc,
  .page-cta__text         { font-size: 0.95rem; line-height: 1.7; }
  .faq__answer,
  .review__text,
  .srv__desc,
  .step__text             { font-size: 0.9rem;  line-height: 1.65; }

  /* --- odstępy pionowe sekcji --- */
  .insurers-band          { padding-top: 3rem;    padding-bottom: 3rem; }
  .carpage,
  .doc-section,
  .factbar,
  .page-cta               { padding-top: 2.75rem; padding-bottom: 2.75rem; }
  .kreator,
  .review-cta,
  .reviewspage,
  .svcpage                { padding-top: 2.5rem;  padding-bottom: 2.5rem; }
  .rentbar                { padding-top: 2rem;    padding-bottom: 2rem; }
  .page-banner            { padding-bottom: 3rem; }
  .page-banner--photo     { padding-bottom: 3rem; }
}
