/* ============================================================
   BKtenis — Design tokens
   Kolory wzięte wprost z logo: niebieski / czerwony / pomarańczowy
   / zielony / żółty. Nagłówki sekcji cyklicznie "noszą" te kolory,
   tak jak wielokolorowy napis TENIS w logo.
   ============================================================ */
:root{
  --blue:    #1E7FD6;
  --blue-dk: #12579A;
  --red:     #E6402C;
  --orange:  #F5821F;
  --green:   #6FBF2E;
  --yellow:  #FFCE00;

  /* Przyciemnione warianty tych samych kolorów, używane WYŁĄCZNIE tam,
     gdzie na nich (lub nimi) stoi mały tekst (plakietki, linki nawigacji,
     komunikaty formularza) — żeby spełnić WCAG AA (4.5:1). Główne kolory
     powyżej zostają bez zmian wszędzie indziej (przyciski, obramowania,
     duże liczby cennika), żeby nie zmieniać identyfikacji wizualnej marki. */
  --blue-a11y:   #1C75C5;
  --red-a11y:    #DB2F1A;
  --orange-a11y: #B65908;
  --green-a11y:  #4A801F;

  --ink:     #14202B;
  --ink-soft:#43535F;
  --paper:   #FBFAF6;
  --paper-2: #F1EFE6;
  --court:   #0F3D2E;      /* zielone tło kortu / sekcji ciemnych */
  --court-2: #0B2F24;
  --line:    #E4E0D2;

  --font-display: "Baloo 2", "Segoe UI", sans-serif;
  --font-body: "Manrope", "Segoe UI", sans-serif;

  --radius: 18px;
  --radius-sm: 10px;
  --shadow: 0 12px 30px -14px rgba(15,40,30,0.35);
  --wrap: 1180px;

  /* Domyślne (fallback) tokeny sezonowe — nadpisywane przez [data-season] niżej */
  --season-accent-a: var(--blue);
  --season-accent-b: var(--yellow);
  --season-glow: 30,127,214;
  --season-particle: rgba(30,127,214,.28);
}

/* ============================================================
   Sezony — te same sekcje i układ, zmienia się tylko "skórka":
   dominujące kolory akcentu, poświata w hero i wzór cząsteczek.
   Ustawiane automatycznie wg daty (patrz <script> w <head> i script.js).
   ============================================================ */
[data-season="wiosna"]{
  --season-accent-a: var(--green-a11y);
  --season-accent-b: var(--yellow);
  --season-glow: 111,191,46;
  --season-particle: rgba(111,191,46,.32);
}
[data-season="lato"]{
  --season-accent-a: var(--orange-a11y);
  --season-accent-b: var(--yellow);
  --season-glow: 245,130,31;
  --season-particle: rgba(245,130,31,.32);
}
[data-season="jesien"]{
  --season-accent-a: var(--red-a11y);
  --season-accent-b: var(--orange);
  --season-glow: 230,64,44;
  --season-particle: rgba(230,64,44,.28);
}
[data-season="zima"]{
  --season-accent-a: var(--blue-a11y);
  --season-accent-b: var(--blue-dk);
  --season-glow: 30,127,214;
  --season-particle: rgba(255,255,255,.55);
}

/* ============================================================
   Reset & base
   ============================================================ */
*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *, *::before, *::after{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
  .hero__particles .particle{ opacity:.25 !important; }
}
body{
  margin:0;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration: none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3{ font-family: var(--font-display); margin:0; line-height:1.12; }
p{ margin:0; }
button{ font-family: inherit; }
:focus-visible{ outline: 3px solid var(--blue); outline-offset: 3px; }

.wrap{
  width: 100%;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 0 24px;
}

/* ============================================================
   Eyebrow labels — cycle through the 5 logo colors like
   the multicolour "TENIS" wordmark
   ============================================================ */
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.5em;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: .82rem;
  letter-spacing: .14em;
  padding: .35em .9em .4em;
  border-radius: 999px;
  margin: 0 0 18px;
  color: #fff;
}
.eyebrow--1{ background: var(--blue-a11y); }
.eyebrow--2{ background: var(--red-a11y); }
.eyebrow--3{ background: var(--orange-a11y); }
.eyebrow--4{ background: var(--green-a11y); }
.eyebrow--serve{ background: var(--season-accent-b); color: var(--ink); transition: background .4s ease; }
[data-season="zima"] .eyebrow--serve{ color: #fff; }

/* ============================================================
   Buttons
   ============================================================ */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5em;
  font-family: var(--font-display);
  font-weight:600;
  font-size:1rem;
  padding: .95em 1.7em;
  border-radius: 999px;
  border: 2px solid transparent;
  cursor:pointer;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease;
  white-space: nowrap;
}
.btn:hover{ transform: translateY(-2px); }
.btn--primary{ background: var(--yellow); color: var(--ink); box-shadow: 0 10px 24px -10px rgba(255,206,0,.6); }
.btn--primary:hover{ background:#ffd82b; }
.btn--ghost{ background: transparent; color: var(--paper); border-color: rgba(251,250,246,.5); }
.btn--ghost:hover{ background: rgba(251,250,246,.12); border-color: var(--paper); }
.btn--outline{ background: transparent; color: var(--ink); border-color: var(--ink); }
.btn--outline:hover{ background: var(--ink); color: var(--paper); }
.btn--sm{ padding:.7em 1.4em; font-size:.92rem; }
.btn--block{ width:100%; }

.link-arrow{
  display:inline-block;
  margin-top: 22px;
  font-family: var(--font-display);
  font-weight:600;
  color: var(--blue-dk);
  border-bottom: 2px solid var(--yellow);
  padding-bottom: 2px;
}
.link-arrow--light{ color: #fff; border-bottom-color: var(--yellow); }

/* ============================================================
   Top bar
   ============================================================ */
.topbar{
  background: var(--court);
  color: #cfe8dd;
  font-size: .84rem;
}
.topbar__inner{
  display:flex;
  gap: 24px;
  align-items:center;
  height: 38px;
  overflow-x:auto;
  white-space:nowrap;
}
.topbar__item{ opacity:.92; }
.topbar__item:hover{ opacity:1; color: var(--yellow); }
.topbar__item--season{ opacity:.85; }
.topbar__item--loc{ margin-left:auto; }

/* ============================================================
   Header / Nav
   ============================================================ */
.site-header{
  position: sticky;
  top:0;
  z-index: 50;
  background: rgba(251,250,246,.9);
  backdrop-filter: saturate(160%) blur(10px);
  border-bottom: 1px solid var(--line);
}
.header__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  height: 76px;
}
.brand{
  display:flex;
  align-items:center;
  gap:10px;
}
.brand__logo{ width:44px; height:44px; }
.brand__text{
  font-family: var(--font-display);
  font-weight:700;
  font-size:1.35rem;
  color: var(--ink);
}
.brand__text em{
  font-style:normal;
  color: var(--blue);
}
.header__social{ display:flex; align-items:center; gap:10px; }
.header__social a{
  width:32px; height:32px;
  border-radius:50%;
  background: var(--paper-2);
  display:flex; align-items:center; justify-content:center;
  font-family: var(--font-display); font-weight:700; font-size:.66rem;
  color: var(--ink-soft);
  transition: background .15s ease, color .15s ease;
}
.header__social a:hover{ background: var(--yellow); color: var(--ink); }
.nav{
  display:flex;
  align-items:center;
  gap: 30px;
  font-family: var(--font-display);
  font-weight:600;
  font-size:.98rem;
}
.nav a{ position:relative; padding: 6px 0; color: var(--ink-soft); }
.nav a:hover{ color: var(--ink); }
.nav a::after{
  content:"";
  position:absolute; left:0; right:0; bottom:0;
  height:3px; border-radius:3px;
  background: var(--yellow);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .18s ease;
}
.nav a:hover::after{ transform: scaleX(1); }
.nav__cta{
  background: var(--red-a11y);
  color:#fff !important;
  padding: .6em 1.3em;
  border-radius: 999px;
}
.nav__cta::after{ display:none; }
.nav__cta:hover{ background:#cf3320; transform:none; }

.nav__nabor{ color: var(--red-a11y) !important; }
.nav__nabor::after{ background: var(--red); }

/* Podświetlenie aktywnej podstrony w menu (Dzieci/Dorośli/Serwis) */
.nav a.is-active{ color: var(--ink); }
.nav a.is-active::after{ transform: scaleX(1); }

.burger{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:42px; height:42px;
  background:none; border:none; cursor:pointer;
}
.burger span{
  display:block; height:3px; border-radius:3px;
  background: var(--ink);
  transition: transform .2s ease, opacity .2s ease;
}
.burger[aria-expanded="true"] span:nth-child(1){ transform: translateY(8px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.burger[aria-expanded="true"] span:nth-child(3){ transform: translateY(-8px) rotate(-45deg); }

/* ============================================================
   Hero — court-line motif (signature element)
   ============================================================ */
/* ============================================================
   Wstęga sezonowa — najbardziej widoczny nośnik motywu pory roku.
   Pełna szerokość, mocny kolor akcentu, zmienia się razem z sezonem.
   ============================================================ */
.season-ribbon{
  background: linear-gradient(90deg, var(--season-accent-a), color-mix(in srgb, var(--season-accent-a) 96%, var(--season-accent-b)));
  color: #fff;
  transition: background .4s ease;
}
/* Wiosna: tło (zielony + żółty) jest już wystarczająco ciemne (patrz --green-a11y
   powyżej), więc wstęga używa białego tekstu tak jak pozostałe pory roku —
   spójnie i z kontrastem WCAG AA. */
.season-ribbon__inner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap: 10px;
  padding: 11px 24px;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: .95rem;
  text-align:center;
}
.season-ribbon__icon{ font-size: 1.15rem; line-height:1; }

/* Tryb naboru — priorytetowy komunikat, niezależny od koloru pory roku */
.season-ribbon.is-nabor{
  background: linear-gradient(90deg, var(--red-a11y), var(--orange-a11y));
  color:#fff;
}

/* ============================================================
   Hero — court-line motif (signature element)
   ============================================================ */
.hero{
  position:relative;
  overflow:hidden;
  background:
    linear-gradient(180deg, rgba(var(--season-glow),.28) 0%, rgba(var(--season-glow),.10) 42%, var(--paper) 78%),
    var(--paper);
  padding: 76px 0 0;
  transition: background .4s ease;
}
.hero__court{
  position:absolute;
  inset: 0 0 auto 0;
  height: 100%;
  pointer-events:none;
  background-image:
    linear-gradient(to right, transparent 0 6%, var(--line) 6% calc(6% + 2px), transparent calc(6% + 2px) 100%),
    repeating-linear-gradient(to bottom, transparent 0 118px, var(--line) 118px calc(118px + 2px));
  opacity:.5;
  mask-image: linear-gradient(to bottom, black, transparent 88%);
}
/* Cząsteczki sezonowe — realne emoji (płatki/liście/śnieg/słońce),
   generowane w script.js i animowane tutaj wg pory roku. */
.hero__particles{
  position:absolute;
  inset:0;
  overflow:hidden;
  pointer-events:none;
}
.hero__particles .particle{
  position:absolute;
  top:-8%;
  animation-name: particleFall;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  will-change: transform, opacity;
  filter: drop-shadow(0 2px 3px rgba(0,0,0,.08));
}
[data-season="lato"] .hero__particles .particle{
  animation-name: particleFloat;
  animation-timing-function: ease-in-out;
  top: 15%;
}

@keyframes particleFall{
  from{ transform: translateY(-10%) rotate(0deg); }
  to{ transform: translateY(640px) rotate(50deg); }
}
@keyframes particleFloat{
  0%, 100%{ transform: translateY(0) rotate(-8deg); }
  50%{ transform: translateY(-26px) rotate(8deg); }
}

.hero__inner{
  position:relative;
  display:grid;
  grid-template-columns: 1.15fr .85fr;
  align-items:center;
  gap: 40px;
  padding-bottom: 56px;
}
.hero__title{
  font-size: clamp(2.2rem, 4.2vw, 3.4rem);
  color: var(--ink);
  margin-bottom: 20px;
}
.ink-swap{
  color: var(--season-accent-a);
  position:relative;
  transition: color .4s ease;
}
.hero__lead{
  max-width: 46ch;
  font-size: 1.08rem;
  color: var(--ink-soft);
  margin-bottom: 30px;
}
.hero__actions{
  display:flex;
  gap:14px;
  flex-wrap:wrap;
  margin-bottom: 40px;
}
.hero__actions .btn--ghost{ color: var(--ink); border-color: var(--ink); }
.hero__actions .btn--ghost:hover{ background: var(--ink); color: var(--paper); }

.hero__stats{
  display:flex;
  gap: 34px;
  flex-wrap:wrap;
}
.stat{ display:flex; flex-direction:column; }
.stat strong{
  font-family: var(--font-display);
  font-size: 1.5rem;
  color: var(--red);
}
.stat span{ font-size:.86rem; color: var(--ink-soft); }

.hero__art{ position:relative; display:flex; justify-content:center; }
.hero__mascot{
  width: min(420px, 88%);
  height: auto;
  filter: drop-shadow(0 24px 34px rgba(15,40,30,.25));
  animation: float 6s ease-in-out infinite;
}
@keyframes float{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(-14px); }
}
@media (prefers-reduced-motion: reduce){ .hero__mascot{ animation:none; } }

.hero__net{
  height: 30px;
  background-image: repeating-linear-gradient(90deg, var(--blue) 0 22px, var(--blue-dk) 22px 24px);
  position:relative;
}
.hero__net::before{
  content:"";
  position:absolute; inset:0;
  background: repeating-linear-gradient(0deg, rgba(255,255,255,.18) 0 3px, transparent 3px 9px);
}

/* ============================================================
   Nabór — sekcja rekrutacyjna, świadomie poza motywem sezonowym
   (czerwień/pomarańcz = uwaga/pilność, niezależnie od pory roku)
   ============================================================ */
.nabor{
  background: linear-gradient(135deg, #FFF6E9, #FFEFDD);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 46px 0;
}
.nabor__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 40px;
  flex-wrap:wrap;
}
.nabor__copy{ max-width: 640px; }
.eyebrow--nabor{ background: var(--red-a11y); }
.nabor__title{
  font-family: var(--font-display);
  font-size: clamp(1.35rem, 2.4vw, 1.8rem);
  margin-bottom: 12px;
  color: var(--ink);
}
.nabor__lead{ color: var(--ink-soft); margin-bottom: 22px; max-width: 54ch; }

.nabor__dates{
  display:flex;
  flex-direction:column;
  gap: 10px;
  flex-shrink:0;
}
.nabor__date{
  font-family: var(--font-display);
  font-weight:700;
  font-size: .95rem;
  color: var(--ink);
  background:#fff;
  border: 1.5px solid var(--orange);
  border-radius: 999px;
  padding: .55em 1.3em;
  text-align:center;
  white-space:nowrap;
}

/* ============================================================
   Sections — generic
   ============================================================ */
.section{ padding: 92px 0; }
.section--tint{ background: var(--paper-2); }
.section--dark{
  background: linear-gradient(180deg, var(--court), var(--court-2));
  color: #eef4ef;
}
.section__title{
  font-size: clamp(1.7rem, 3vw, 2.4rem);
  max-width: 22ch;
  margin-bottom: 16px;
}
.section__title--light{ color:#fff; }
.section__lead{
  max-width: 62ch;
  font-size: 1.05rem;
  color: var(--ink-soft);
  margin-bottom: 46px;
}
.section__lead--light{ color: #cfe0d7; }

/* ============================================================
   Cards
   ============================================================ */
.cards{
  display:grid;
  gap: 22px;
}
.cards--4{ grid-template-columns: repeat(4, 1fr); }
.cards--3{ grid-template-columns: repeat(3, 1fr); }

.card{
  background:#fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 30px 26px;
  box-shadow: var(--shadow);
  transition: transform .18s ease, box-shadow .18s ease;
}
.card:hover{ transform: translateY(-5px); }
.card__icon{
  width: 52px; height:52px;
  display:flex; align-items:center; justify-content:center;
  font-size: 1.5rem;
  border-radius: 14px;
  background: color-mix(in srgb, var(--c) 16%, white);
  margin-bottom: 18px;
}
.card h3{ font-size: 1.15rem; margin-bottom: 10px; }
.card p{ color: var(--ink-soft); font-size:.96rem; }

.card--dark{
  background: rgba(255,255,255,.05);
  border-color: rgba(255,255,255,.12);
  box-shadow:none;
}
.card--dark .card__icon{ background: color-mix(in srgb, var(--c) 30%, transparent); }
.card--dark h3{ color:#fff; }
.card--dark p{ color:#cfe0d7; }

/* ============================================================
   Oferta — kafelki z kolorową górną krawędzią cyklującą przez
   barwy z logo, na ciemnym tle
   ============================================================ */
.offer-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 20px;
}
.offer-tile{
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.12);
  border-top: 3px solid var(--tile-c, var(--yellow));
  border-radius: var(--radius);
  padding: 26px 24px;
  transition: transform .15s ease, background .15s ease;
}
.offer-tile:hover{ transform: translateY(-4px); background: rgba(255,255,255,.08); }
.offer-tile__icon{ font-size:1.7rem; margin-bottom: 14px; line-height:1; }
.offer-tile h3{
  font-family: var(--font-display);
  font-size: 1.08rem;
  color:#fff;
  margin: 0 0 8px;
}
.offer-tile p{ color:#cfe0d7; font-size:.92rem; margin:0; }

.offer-tile--wide{
  display:flex;
  align-items:center;
  gap: 22px;
  flex-wrap:wrap;
  border-top: 3px solid var(--yellow);
}
.offer-tile--wide .offer-tile__icon{ margin-bottom:0; font-size:2rem; flex-shrink:0; }
.offer-tile--wide .offer-tile__body{ flex:1; min-width:220px; }
.offer-tile--wide h3{ margin-bottom:4px; }
.offer-tile--wide p{ margin:0; }
.offer-tile__cta{ flex-shrink:0; }

@media (max-width: 1020px){
  .offer-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 620px){
  .offer-grid{ grid-template-columns: 1fr; }
  .offer-tile--wide{ flex-direction:column; align-items:flex-start; }
  .offer-tile__cta{ width:100%; text-align:center; }
}

/* ============================================================
   Split layout (image + copy)
   ============================================================ */
.split{
  display:grid;
  grid-template-columns: .95fr 1.05fr;
  gap: 56px;
  align-items:center;
}
.split--reverse{ grid-template-columns: 1.05fr .95fr; }
.split--reverse .split__art{ order:2; }
.split--reverse .split__copy{ order:1; }

.split__copy p:not(.eyebrow){ color: var(--ink-soft); margin-bottom: 16px; max-width: 56ch; }
.split__copy p:not(.eyebrow):last-of-type{ margin-bottom: 0; }

.check-list{ margin: 22px 0 0; display:flex; flex-direction:column; gap: 12px; }
.check-list li{
  position:relative;
  padding-left: 30px;
  color: var(--ink);
  font-weight:500;
}
.check-list li::before{
  content:"●";
  position:absolute; left:0; top:1px;
  color: var(--green);
  font-size:.8rem;
}

/* ============================================================
   Photo placeholders (until real photos are supplied)
   ============================================================ */
.photo-placeholder{
  position:relative;
  border-radius: var(--radius);
  background:
    linear-gradient(135deg, rgba(30,127,214,.16), rgba(255,206,0,.18) 45%, rgba(230,64,44,.14));
  border: 2px dashed color-mix(in srgb, var(--blue) 40%, var(--line));
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:10px;
  text-align:center;
  color: var(--ink-soft);
  overflow:hidden;
}
.photo-placeholder--tall{ aspect-ratio: 4 / 5; }
.photo-placeholder--square{ aspect-ratio: 1 / 1; max-width: 420px; }

.trainer-photo{
  border-radius: var(--radius);
  overflow:hidden;
  box-shadow: var(--shadow);
  max-width: 420px;
  aspect-ratio: 3 / 4;
}
.trainer-photo img{
  width:100%; height:100%;
  object-fit: cover;
  object-position: 50% 15%;
}

/* Kolaż zdjęć z zajęć — jedno większe + dwa mniejsze w rzędzie */
.photo-collage{
  display:flex;
  flex-direction:column;
  gap: 14px;
}
.photo-collage__main{
  width:100%;
  aspect-ratio: 16 / 10;
  object-fit:cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.photo-collage--pair{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: start;
}
.photo-collage--pair img{
  width:100%;
  height:auto;
  aspect-ratio: 4 / 3;
  object-fit:cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
@media (max-width: 620px){
  .photo-collage--pair{ grid-template-columns: 1fr; }
}
.photo-collage__row{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.photo-collage__row img{
  width:100%;
  aspect-ratio: 1 / 1;
  object-fit:cover;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.photo-placeholder__icon{ font-size: 2rem; }
.photo-placeholder__label{ font-family: var(--font-display); font-weight:600; font-size:.95rem; }

/* ============================================================
   Pricing
   ============================================================ */
.price-grid{
  display:grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-bottom: 64px;
}
.price-grid--service{
  grid-template-columns: repeat(3, 1fr);
  margin-bottom: 26px;
}
.price-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px 24px 26px;
  box-shadow: var(--shadow);
  position:relative;
  display:flex;
  flex-direction:column;
}
.price-card--featured{
  background: var(--ink);
  border-color: var(--ink);
  color:#fff;
  transform: translateY(-8px);
}
.price-card--featured .price-card__desc{ color:#c9d2d8; }
.price-card__badge{
  position:absolute; top:-13px; left:24px;
  background: var(--red-a11y); color:#fff;
  font-family: var(--font-display); font-weight:700;
  font-size:.72rem; letter-spacing:.05em;
  padding: 5px 12px; border-radius:999px;
}
.price-card__title{ font-size:1.05rem; margin-bottom:10px; }
.price-card__price{
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight:700;
  color: var(--blue);
  margin-bottom: 12px;
}
.price-card--featured .price-card__price{ color: var(--yellow); }
.price-card__price span{ font-family: var(--font-body); font-size:.85rem; font-weight:500; color: var(--ink-soft); }
.price-card--featured .price-card__price span{ color:#c9d2d8; }
.price-card__desc{ color: var(--ink-soft); font-size:.92rem; flex:1; margin-bottom: 22px; }

.price-table__heading{ font-size:1.3rem; margin-bottom: 18px; }
.price-table__note{ margin-top:14px; font-size:.86rem; color: var(--ink-soft); }

/* ============================================================
   Opinie — placeholdery gotowe na prawdziwe cytaty klientów
   ============================================================ */
.testimonial-card{
  background:#fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px 26px;
  box-shadow: var(--shadow);
  display:flex;
  flex-direction:column;
  gap:14px;
}
.testimonial-card__stars{ font-size:.95rem; letter-spacing:2px; }
.testimonial-card__quote{
  color: var(--ink-soft);
  font-size:.95rem;
  line-height:1.6;
  margin:0;
  flex:1;
}
.testimonial-card__author{
  font-family: var(--font-display);
  font-weight:700;
  font-size:.9rem;
  color: var(--ink);
  margin:0;
}
.testimonial-card__author span{
  font-weight:500;
  color: var(--ink-soft);
  font-size:.85rem;
}

/* Przycisk do prawdziwych opinii Google (wizytówka serwisu rakiet) */
.google-reviews-cta{
  display:flex;
  align-items:center;
  gap:16px;
  background:#fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 18px 24px;
  max-width: 460px;
  margin-bottom: 40px;
  box-shadow: var(--shadow);
  transition: transform .15s ease;
}
.google-reviews-cta:hover{ transform: translateY(-2px); }
.google-reviews-cta__icon{
  font-size:1.6rem;
  width:48px; height:48px;
  flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background: color-mix(in srgb, var(--yellow) 22%, white);
  border-radius: 12px;
}
.google-reviews-cta__text{ display:flex; flex-direction:column; gap:2px; flex:1; }
.google-reviews-cta__text strong{ font-family: var(--font-display); font-size:1rem; color: var(--ink); }
.google-reviews-cta__text span{ font-size:.84rem; color: var(--ink-soft); }
.google-reviews-cta__arrow{ font-size:1.2rem; color: var(--blue-a11y); flex-shrink:0; }

/* ============================================================
   PARTNERZY — logotypy-linki do stron partnerów
   ============================================================ */
.partners-grid{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}
.partner-card{
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px;
  box-shadow: var(--shadow);
  transition: transform .18s ease, box-shadow .18s ease;
  text-decoration:none;
  min-height: 140px;
}
.partner-card:hover, .partner-card:focus-visible{
  transform: translateY(-4px) scale(1.02);
  box-shadow: 0 18px 34px rgba(20,32,43,.14);
}
.partner-card img{
  max-width: 100%;
  height: auto;
  display:block;
}
.partner-card--hobbyliga{ padding:0; overflow:hidden; }
.partner-card--hobbyliga img{ width:100%; height:100%; object-fit:cover; border-radius: var(--radius); }
.partner-card--skoptyk img{ max-height: 60px; }
.partner-card--sokol img{ max-height: 150px; }

/* ============================================================
   FAQ — natywny akordeon (<details>), bez JS
   ============================================================ */
.faq-list{
  max-width: 780px;
  display:flex;
  flex-direction:column;
  gap: 12px;
}
.faq-item{
  background:#fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 4px 22px;
}
.faq-item summary{
  cursor:pointer;
  list-style:none;
  padding: 18px 30px 18px 0;
  font-family: var(--font-display);
  font-weight:600;
  font-size:1rem;
  color: var(--ink);
  position:relative;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:"+";
  position:absolute;
  right:0; top:50%;
  transform: translateY(-50%);
  font-size:1.4rem;
  font-weight:400;
  color: var(--blue);
  transition: transform .2s ease;
}
.faq-item[open] summary::after{ content:"–"; }
.faq-item p{
  color: var(--ink-soft);
  padding-bottom: 20px;
  margin:0;
  max-width: 68ch;
}

/* ============================================================
   WhatsApp — pływający przycisk
   ============================================================ */
.whatsapp-fab{
  position:fixed;
  right: 22px;
  bottom: 22px;
  z-index: 60;
  width: 56px; height:56px;
  border-radius:50%;
  background:#25D366;
  display:flex; align-items:center; justify-content:center;
  font-size:1.6rem;
  box-shadow: 0 10px 24px -8px rgba(37,211,102,.6);
  transition: transform .15s ease, box-shadow .15s ease;
}
.whatsapp-fab:hover{ transform: translateY(-3px) scale(1.04); }
@media (max-width: 620px){
  .whatsapp-fab{ right:16px; bottom:16px; width:50px; height:50px; font-size:1.4rem; }
}

/* ============================================================
   Kontakt
   ============================================================ */
.kontakt{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items:start;
}
.kontakt__list{ display:flex; flex-direction:column; gap:18px; margin: 30px 0 26px; }
.kontakt__list li{ display:flex; align-items:center; gap:14px; }
.kontakt__icon{
  width:44px; height:44px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  background: rgba(255,255,255,.08);
  border-radius: 12px;
  font-size:1.1rem;
}
.kontakt__list strong{ display:block; font-size:.8rem; color:#a9c2b6; font-weight:600; }
.kontakt__list a, .kontakt__list span{ font-family: var(--font-display); font-weight:600; color:#fff; }
.kontakt__list a:hover{ color: var(--yellow); }

.map-embed{
  border-radius: var(--radius);
  overflow:hidden;
  border: 1px solid rgba(255,255,255,.14);
  aspect-ratio: 16/10;
  position: relative;
  display:flex;
  flex-direction: column;
  align-items:center;
  justify-content:center;
  text-align:center;
  background:
    linear-gradient(rgba(11,47,36,.55), rgba(11,47,36,.75)),
    repeating-linear-gradient(45deg, rgba(255,255,255,.04) 0 2px, transparent 2px 14px);
  padding: 24px;
}
.map-embed__pin{ font-size:2.2rem; margin-bottom:8px; }
.map-embed__title{ font-family: var(--font-display); font-weight:700; color:#fff; font-size:1.05rem; margin-bottom:4px; }
.map-embed__addr{ color:#cfe0d7; font-size:.9rem; margin-bottom:18px; }
.map-embed .btn{ position:relative; }

.kontakt__form{
  background:#fff;
  color: var(--ink);
  border-radius: var(--radius);
  padding: 34px;
  box-shadow: var(--shadow);
  display:flex;
  flex-direction:column;
}
.kontakt__form h3{ font-size:1.3rem; margin-bottom: 18px; }
.kontakt__form label{
  font-family: var(--font-display);
  font-weight:600;
  font-size:.86rem;
  margin: 14px 0 6px;
}
.kontakt__form input,
.kontakt__form select,
.kontakt__form textarea{
  font-family: var(--font-body);
  font-size: .98rem;
  padding: .8em .9em;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  resize: vertical;
}
.kontakt__form input:focus,
.kontakt__form select:focus,
.kontakt__form textarea:focus{
  border-color: var(--blue);
}
.kontakt__form .btn{ margin-top: 22px; }
.kontakt__form-status{
  margin-top: 12px;
  font-size:.9rem;
  font-weight:600;
  min-height: 1.2em;
  color: var(--green-a11y);
}
.kontakt__form-status.is-error{ color: var(--red-a11y); }

/* Pole-pułapka na boty — niewidoczne dla ludzi, ale obecne w DOM/tab-order dla botów */
.kontakt__hp{
  position:absolute !important;
  left:-9999px !important;
  width:1px; height:1px;
  opacity:0;
  pointer-events:none;
}

.kontakt__consent{
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin-top:16px;
  font-size:.82rem;
  color: var(--ink-soft);
  cursor:pointer;
}
.kontakt__consent input{ width:auto; margin-top:3px; flex-shrink:0; }
.kontakt__consent a{ color: var(--blue-dk); text-decoration:underline; }

/* ============================================================
   Strony prawne (polityka prywatności)
   ============================================================ */
.legal__wrap{ max-width: 760px; }
.legal__updated{ color: var(--ink-soft); font-size:.9rem; margin-bottom: 30px; }
.legal h2{ font-family: var(--font-display); font-size:1.25rem; margin: 34px 0 12px; color: var(--ink); }
.legal p{ color: var(--ink-soft); margin-bottom: 14px; }
.legal p strong{ color: var(--ink); }
.legal a{ color: var(--blue-dk); text-decoration: underline; }

/* ============================================================
   Footer
   ============================================================ */
.footer{
  background: var(--ink);
  color: #b9c4cb;
  padding: 48px 0 28px;
}
.footer__inner{
  display:grid;
  gap: 18px;
  justify-items:center;
  text-align:center;
}
.footer .brand__text{ color:#fff; }
.footer .brand__text em{ color: var(--yellow); }
.footer__tag{ font-size:.92rem; max-width: 46ch; }
.footer__nav{ display:flex; gap:22px; flex-wrap:wrap; justify-content:center; font-weight:600; }
.footer__nav a:hover{ color: var(--yellow); }
.footer__copy{ font-size:.8rem; color:#8b98a0; margin-top: 6px; }
.footer__copy a{ color:#b9c4cb; text-decoration:underline; }
.footer__copy a:hover{ color: var(--yellow); }

.footer__social{ display:flex; gap:14px; }
.footer__social a{
  width:38px; height:38px;
  border-radius:50%;
  background: rgba(255,255,255,.08);
  display:flex; align-items:center; justify-content:center;
  font-family: var(--font-display); font-weight:700; font-size:.78rem;
  color:#fff;
}
.footer__social a:hover{ background: var(--yellow); color: var(--ink); }

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 1020px){
  .cards--4{ grid-template-columns: repeat(2, 1fr); }
  .price-grid{ grid-template-columns: repeat(2, 1fr); }
  .price-card--featured{ transform:none; }
  .hero__inner{ grid-template-columns: 1fr; text-align:left; }
  .hero__art{ order:-1; }
  .hero__mascot{ width: min(320px, 60%); }
  .header__social{ display:none; }
}

@media (max-width: 860px){
  .topbar__item--loc{ display:none; }
  .nav{
    position:absolute;
    top: 100%; left:0; right:0;
    background: var(--paper);
    border-bottom: 1px solid var(--line);
    flex-direction:column;
    align-items:flex-start;
    gap:0;
    padding: 10px 24px 20px;
    box-shadow: 0 16px 24px -18px rgba(0,0,0,.25);
    transform-origin: top;
    transform: scaleY(0);
    opacity:0;
    pointer-events:none;
    transition: transform .18s ease, opacity .18s ease;
  }
  .nav.is-open{ transform: scaleY(1); opacity:1; pointer-events:auto; }
  .nav a{ width:100%; padding: 12px 0; border-bottom: 1px solid var(--line); }
  .nav a:last-child{ border-bottom:none; }
  .nav__cta{ margin-top: 10px; text-align:center; }
  .burger{ display:flex; }

  .split, .split--reverse{ grid-template-columns: 1fr; }
  .split--reverse .split__art, .split--reverse .split__copy{ order:initial; }
  .photo-placeholder--tall{ aspect-ratio: 16/10; }

  .nabor__inner{ flex-direction:column; align-items:flex-start; }
  .nabor__dates{ flex-direction:row; flex-wrap:wrap; }

  .cards--3{ grid-template-columns: 1fr 1fr; }
  .kontakt{ grid-template-columns: 1fr; }
}

@media (max-width: 620px){
  .season-ribbon__inner{ padding: 9px 20px; font-size: .82rem; }
  .header__inner{ height: 68px; }
  .hero{ padding-top: 60px; }
  .hero__stats{ gap: 22px; }
  .section{ padding: 64px 0; }
  .cards--4, .cards--3{ grid-template-columns: 1fr; }
  .price-grid{ grid-template-columns: 1fr; }
  .kontakt__form{ padding: 26px 22px; }
}

/* ============================================================
   Breadcrumb — podstrony ofertowe (SEO + orientacja w serwisie)
   ============================================================ */
.breadcrumb{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  font-size:.86rem;
  color: var(--ink-soft);
  margin-bottom: 22px;
}
.breadcrumb a{ color: var(--blue-dk); font-weight:600; }
.breadcrumb a:hover{ text-decoration: underline; }
.breadcrumb__sep{ opacity:.5; }
.breadcrumb__current{ color: var(--ink-soft); }

/* ============================================================
   Page intro — nagłówek podstrony ofertowej (split layout,
   lżejsza wersja hero bez maskotki/cząsteczek)
   ============================================================ */
.page-intro{
  padding: 44px 0 92px;
  background:
    linear-gradient(180deg, rgba(var(--season-glow),.18) 0%, rgba(var(--season-glow),.06) 46%, var(--paper) 82%),
    var(--paper);
}
.page-intro .split{ align-items:center; }
.page-intro__quickfacts{
  display:flex;
  flex-wrap:wrap;
  gap: 10px 26px;
  margin: 26px 0 4px;
}
.page-intro__quickfacts .stat strong{ font-size:1.2rem; }

/* ============================================================
   CTA banner — pełnoszerokościowe wezwanie do działania,
   używane pod koniec podstron ofertowych
   ============================================================ */
.cta-banner{
  text-align:center;
  padding: 60px 0;
}
.cta-banner__title{
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  color:#fff;
  margin-bottom: 10px;
}
.cta-banner__lead{
  color:#cfe0d7;
  max-width: 52ch;
  margin: 0 auto 26px;
}
.cta-banner__actions{
  display:flex;
  gap:14px;
  justify-content:center;
  flex-wrap:wrap;
}

/* ============================================================
   Related pages — linki do pozostałych ofert na dole podstron
   ============================================================ */
.related-pages{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.related-card{
  display:block;
  background:#fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 26px 24px;
  box-shadow: var(--shadow);
  transition: transform .15s ease, box-shadow .15s ease;
}
.related-card:hover{ transform: translateY(-4px); }
.related-card__icon{ font-size:1.6rem; margin-bottom:12px; }
.related-card h3{ font-family: var(--font-display); font-size:1.05rem; margin-bottom:8px; color: var(--ink); }
.related-card p{ color: var(--ink-soft); font-size:.92rem; margin:0; }

@media (max-width: 860px){
  .related-pages{ grid-template-columns: 1fr; }
  .page-intro .split{ grid-template-columns: 1fr; }
}
@media (max-width: 620px){
  .page-intro{ padding: 32px 0 56px; }
}

/* ============================================================
   Cookie banner (RODO) — pasek na dole ekranu, ukryty domyślnie,
   pokazywany przez script.js dopóki użytkownik nie podejmie decyzji
   ============================================================ */
.cookie-banner{
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 999;
  background: var(--ink);
  color: var(--paper);
  padding: 18px 0;
  box-shadow: 0 -8px 28px rgba(0,0,0,.22);
  transform: translateY(110%);
  transition: transform .35s ease;
}
.cookie-banner.is-visible{ transform: translateY(0); }
.cookie-banner__inner{
  display:flex;
  align-items:center;
  flex-wrap: wrap;
  gap: 16px 24px;
  justify-content: space-between;
}
.cookie-banner__text{
  margin:0;
  flex: 1 1 420px;
  font-size:.92rem;
  line-height:1.5;
  color:#cfe0d7;
}
.cookie-banner__text a{ color:#fff; text-decoration:underline; }
.cookie-banner__actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  flex:0 0 auto;
}
@media (max-width: 640px){
  .cookie-banner{ padding:16px 0; }
  .cookie-banner__inner{ flex-direction:column; align-items:stretch; }
  .cookie-banner__actions{ display:grid; grid-template-columns:1fr 1fr; }
}
