
/* ==========================================================================
   JEDEN ZESTAW METRYK DLA WSZYSTKICH PRZYCISKÓW NA PODSTRONIE WYDARZENIA
   Decyzja użytkownika 26.07.2026: każdy przycisk (hero, blok kreatora, cennik,
   kontakt, „Udostępnij”, nawigacja dołem) ma IDENTYCZNY padding, font-size,
   grubość, promień i rozmiar ikony. Różni się TYLKO skórka (kolor/obramowanie).
   Zmieniasz rozmiar przycisków na całej podstronie? Ruszasz TYLKO te tokeny.
   Wcześniej było 5 różnych geometrii i 3 różne promienie (999 / 12 / 9 px).
   ========================================================================== */
:root{
  /* 18/30 nie mieściło „Udostępnij” + nawigacji w jednej linii przy 1440px
     (potrzebne 1454px, dostępne 1392px). Zmierzone na metrykach Inter Medium. */
  --evx-btn-pad-y:15px;
  --evx-btn-pad-x:22px;
  --evx-btn-fs:15.5px;
  --evx-btn-fw:500;
  --evx-btn-r:999px;
  --evx-btn-gap:9px;
  --evx-btn-ico:16px;
  --evx-btn-bw:1.5px;
  /* Tytuł sekcji: nagłówek bloku, cennik i galeria miały 28/600 vs 30/500 — teraz jedno. */
  --evx-title-fs:30px;
  --evx-title-fw:500;
  /* Tekst i wypunktowania w blokach: było 16 / 14.5 — teraz wspólne. */
  --evx-body-fs:16px;
  /* Podtytuł (poziom h3): było 21 / 22 — teraz jedno. */
  --evx-sub-fs:21px;
  /* Nagłówek kolumny (poziom h4). */
  --evx-h4-fs:18px;
}
@media(max-width:560px){
  :root{--evx-btn-pad-y:13px;--evx-btn-pad-x:20px;--evx-btn-fs:15px}
}

/* Pasek górny */
.ev-topbar{background:#fff;border-bottom:1px solid var(--pill-border);position:sticky;top:0;z-index:50}
.ev-topbar .wrap{display:flex;align-items:center;justify-content:space-between;height:78px}
.ev-topbar .logo img{height:46px;width:auto}
.ev-back{display:inline-flex;align-items:center;gap:8px;color:var(--ink-soft);font-weight:600;font-size:15px}
.ev-back:hover{color:#000}
.ev-back .fi{font-size:15px}

.ev-page{padding:44px 0 24px}
.ev-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:48px;align-items:start}

/* ---- Lewa kolumna ---- */
.ev-title{font-family:'Inter',sans-serif;font-size:40px;font-weight:600;color:var(--title-dark);
  line-height:1.12;letter-spacing:-.5px}
.ev-subtitle{font-size:19px;color:var(--muted);font-style:italic;margin-top:10px}
.ev-date-badge{display:inline-flex;align-items:center;gap:9px;margin-top:18px;background:var(--green);
  color:#3a4a2a;font-weight:600;font-size:15px;padding:10px 16px;border-radius:10px}
.ev-date-badge .fi{font-size:15px}

.ev-desc{margin-top:28px;color:var(--ink);font-size:16.5px;line-height:1.7}
.ev-desc p{margin:0 0 14px}
.ev-desc ul{margin:0 0 16px;padding-left:22px}
.ev-desc li{margin-bottom:7px}
.ev-lead{font-size:19px;font-weight:600;color:var(--title-dark)}
.ev-plan-title{font-family:'Inter',sans-serif;font-weight:600;font-size:15px;letter-spacing:.6px;
  text-transform:uppercase;margin:28px 0 12px;color:var(--title-dark)}
.ev-day{font-weight:600;text-decoration:underline;margin:18px 0 8px;display:block;color:var(--ink-soft)}
.ev-desc-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:22px}
.ev-desc-photos img{width:100%;height:230px;object-fit:cover;border-radius:14px}

/* ---- Prawa kolumna ---- */
.ev-side{position:sticky;top:104px;display:flex;flex-direction:column;gap:20px}
.ev-featured{width:100%;aspect-ratio:16/11;object-fit:cover;border-radius:18px;display:block}
.ev-actions-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ev-btn{display:flex;align-items:center;justify-content:center;gap:var(--evx-btn-gap);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);font-weight:var(--evx-btn-fw);
  font-size:var(--evx-btn-fs);border-radius:var(--evx-btn-r);text-align:center;cursor:pointer;
  border:var(--evx-btn-bw) solid transparent;font-family:inherit;transition:background .2s,transform .05s}
.ev-btn .fi{font-size:var(--evx-btn-ico)}
.ev-btn-primary{background:var(--ink-soft);color:#fff}
.ev-btn-primary:hover{background:#000}
.ev-btn-secondary{background:var(--yellow);color:var(--ink-soft)}
.ev-btn-secondary:hover{background:#e4d896}
.ev-btn:active{transform:translateY(1px)}

.ev-box{background:#fff;border:1px solid var(--pill-border);padding:22px;border-radius:16px}
.ev-box h4{font-family:'Inter',sans-serif;font-weight:600;font-size:14px;letter-spacing:.5px;
  text-transform:uppercase;color:var(--title-dark);margin-bottom:12px}
.ev-box p{font-size:14.5px;color:var(--ink);line-height:1.65;margin:0 0 10px}
.ev-box ul{margin:0 0 10px;padding-left:20px}
.ev-box li{font-size:14px;color:#4a463d;margin-bottom:6px;line-height:1.5}

/* ---- Cennik ---- */
.ev-pricing{margin-top:56px;background:#fff;border:1px solid var(--pill-border);border-radius:20px;overflow:hidden}
.ev-pricing-title{font-family:'Inter',sans-serif;font-weight:600;font-size:28px;color:var(--title-dark);
  padding:26px 28px 6px}
.ev-price-cols{display:grid;grid-template-columns:repeat(3,1fr)}
.ev-price-col{padding:22px 28px;border-right:1px solid var(--pill-border)}
.ev-price-col:last-child{border-right:none}
.ev-price-col h4{font-family:'Inter',sans-serif;font-weight:600;font-size:16px;color:var(--title-dark);margin-bottom:12px}
.ev-price-col ul{list-style:none;padding:0;margin:0}
.ev-price-col li{font-size:14.5px;color:#4a463d;line-height:1.55;padding:9px 0;border-bottom:1px dashed var(--pill-border)}
.ev-price-col li:last-child{border-bottom:none}

.ev-signup{border-top:1px solid var(--pill-border);padding:26px 28px}
.ev-signup h4{font-family:'Inter',sans-serif;font-weight:600;font-size:20px;color:var(--title-dark);margin-bottom:18px}
.ev-contacts{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.ev-contact .lbl{font-size:14px;color:var(--muted);margin-bottom:9px}
.ev-contact-btn{display:inline-flex;align-items:center;gap:var(--evx-btn-gap);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);background:var(--cream-2);
  color:var(--ink-soft);font-weight:var(--evx-btn-fw);font-size:var(--evx-btn-fs);
  border:var(--evx-btn-bw) solid transparent;border-radius:var(--evx-btn-r)}
.ev-contact-btn:hover{background:var(--green-in)}
.ev-contact-btn.primary{background:var(--green)}
.ev-contact-btn .fi{font-size:var(--evx-btn-ico)}

/* ---- Udostępnij ---- */
/* Karta „szerokości treści" (inline-flex), nie na całą szerokość kolumny. */
.ev-share{margin-top:26px;display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;max-width:100%;background:#fff;
  border:1px solid var(--pill-border);padding:14px 18px;border-radius:16px}
.ev-share .lbl{color:var(--ink-soft);font-weight:600}
.ev-share a{display:inline-flex;align-items:center;gap:var(--evx-btn-gap);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);border-radius:var(--evx-btn-r);font-weight:var(--evx-btn-fw);
  font-size:var(--evx-btn-fs);line-height:1;background:var(--cream-2);color:var(--ink-soft);
  border:var(--evx-btn-bw) solid transparent;cursor:pointer;transition:.2s}
/* Ikona: własny box wyśrodkowany w pionie — Flaticon ma spory offset względem baseline'u. */
.ev-share a .fi{font-size:var(--evx-btn-ico);line-height:1;display:inline-flex;align-items:center;justify-content:center}
.ev-share a span{line-height:1}
/* Hover w kolorach marek. */
.ev-share a.sh-fb:hover{background:#1877f2;color:#fff}
.ev-share a.sh-msg:hover{background:linear-gradient(45deg,#00b2ff,#006aff);color:#fff}
.ev-share a.sh-wa:hover{background:#25d366;color:#fff}

/* ---- Nawigacja dołem (w jednej linii z „Udostępnij") ---- */
.ev-shareline{margin:26px 0 12px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.ev-shareline .ev-share{margin-top:0}
.ev-nav-bottom{margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ev-nav-bottom a{display:inline-flex;align-items:center;gap:var(--evx-btn-gap);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);background:var(--ink-soft);
  color:#fff;font-weight:var(--evx-btn-fw);border-radius:var(--evx-btn-r);font-size:var(--evx-btn-fs);
  line-height:1;border:var(--evx-btn-bw) solid transparent;transition:.2s}
.ev-nav-bottom a:hover{background:#000}
.ev-nav-bottom .fi{font-size:var(--evx-btn-ico);line-height:1;display:inline-flex;align-items:center}
/* Poprzednie/następne — wariant „ghost", żeby „Wszystkie wydarzenia" zostało głównym CTA. */
.ev-nav-bottom .ev-nav-side{background:transparent;color:var(--ink-soft);border-color:var(--pill-border)}
.ev-nav-bottom .ev-nav-side:hover{background:var(--ink-soft);color:#fff;border-color:var(--ink-soft)}

@media(max-width:900px){
  .ev-shareline{flex-direction:column;align-items:stretch}
  .ev-nav-bottom{justify-content:center}
  .ev-grid{grid-template-columns:1fr;gap:32px}
  .ev-side{position:static}
  .ev-price-cols,.ev-contacts{grid-template-columns:1fr}
  .ev-price-col{border-right:none;border-bottom:1px solid var(--pill-border)}
  .ev-price-col:last-child{border-bottom:none}
  .ev-title{font-size:32px}
  .ev-desc-photos{grid-template-columns:1fr 1fr}
}

.evl-head{margin:28px 0 34px;text-align:center}
.evl-h1{font-size:46px;font-weight:600;letter-spacing:-.02em;color:#2b2620;margin:0}
.evl-h1::after{content:'';display:block;width:64px;height:3px;border-radius:2px;margin:18px auto 0;
  background:linear-gradient(90deg,rgba(196,154,90,.15),#c49a5a,rgba(196,154,90,.15))}
.evl-lead{font-size:18px;color:#6a655b;margin:18px auto 0;max-width:62ch}
.evl-empty{text-align:center;color:#6a655b;padding:60px 0}

/* Jeden kafel w rzędzie — lista czyta się jak oś czasu, kafel ma pełną szerokość. */
.evl-grid{display:grid;grid-template-columns:1fr;gap:28px}
/* Kafelek = ta sama oprawa co hero: kremowy gradient, złota obwódka, cień. */
/* minmax(0,…): bez tego minimum ścieżki = auto, a wysoka karta + aspect-ratio obrazka
   rozpychały kolumnę ze zdjęciem (jedno zdjęcie wychodziło szersze od pozostałych). */
.evl-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:0;overflow:hidden;text-decoration:none;
  border-radius:24px;background:linear-gradient(135deg,#faf8f2 0%,#f5f1e8 100%);
  border:1px solid rgba(184,148,78,.28);box-shadow:0 12px 32px rgba(43,38,32,.07);
  transition:transform .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s,border-color .35s}
.evl-card:hover{transform:translateY(-4px);box-shadow:0 22px 50px rgba(43,38,32,.14);border-color:rgba(184,148,78,.6)}
/* width:100% jest KLUCZOWE: bez niego element z aspect-ratio, rozciągnięty na wysokość
   karty, wylicza szerokość z wysokości (h*4/3) i wychodzi poza swoją kolumnę — wyższa
   karta miała szersze zdjęcie. Z definitywną szerokością aspect-ratio steruje tylko
   wysokością, a min-height:100% dociąga zdjęcie do pełnej wysokości karty. */
.evl-img{position:relative;overflow:hidden;background:#e4e0d2;aspect-ratio:4/3;
  width:100%;min-width:0;min-height:100%}
.evl-imglink{display:block;width:100%;height:100%}
.evl-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s cubic-bezier(.2,.6,.2,1)}
.evl-card:hover .evl-img img{transform:scale(1.06)}
.evl-badge{position:absolute;top:12px;left:12px;background:rgba(43,38,32,.82);color:#fff;font-size:11px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;padding:6px 12px;border-radius:999px}
/* Zakończone wydarzenia: przygaszone (zdjęcie w szarościach, cała karta lżejsza). */
/* Rozbudowany selektor jest konieczny: AOS ma [data-aos^=fade][data-aos^=fade].aos-animate{opacity:1}
   (specyficzność 0,3,0), więc zwykłe .evl-card--past by przegrało i karta świeciłaby pełną mocą. */
.evl-card--past,
.evl-card.evl-card--past[data-aos].aos-animate{opacity:.4;filter:saturate(.8);
  transition:opacity .3s ease,filter .3s ease}
.evl-card--past:hover,
.evl-card.evl-card--past[data-aos].aos-animate:hover{opacity:1;filter:none}
.evl-card--past .evl-img img{filter:grayscale(.55)}
/* Przełącznik archiwum pod listą. */
.evl-archive{display:flex;justify-content:center;margin:34px 0 10px}
/* Krótkie przygaszenie na czas podmiany listy (archiwum/paginacja przez fetch). */
#evlList{transition:opacity .18s ease}
#evlList.is-swapping{opacity:.45;pointer-events:none}
.evl-body{padding:28px 30px;display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.evl-body .evx-hero-date{white-space:nowrap}   /* zakres dat w jednej linii */
/* Karta NIE jest linkiem — klikalne są tylko tytuł i przyciski. */
.evl-title{font-size:26px;font-weight:600;line-height:1.15;color:#2b2620;margin:14px 0 8px}
.evl-title a{color:inherit;text-decoration:none;transition:color .25s ease}
.evl-title a:hover{color:#c49a5a}
.evl-sub{font-size:15px;line-height:1.55;color:#6a655b;margin:0 0 10px}
/* Krótki wstęp (pole „Krótki wstęp" z panelu) — maks. 3 linie, reszta ucięta wielokropkiem. */
.evl-leadtxt{font-size:15px;line-height:1.6;color:#4a4638;margin:0 0 14px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.evl-body .ev-tags{margin-bottom:16px}
/* Rząd przycisków u dołu kafelka: „Zapisz się" i „Dodaj do kalendarza" po lewej,
   „Czytaj więcej" wypchnięty do prawej krawędzi (margin-left:auto niżej). */
.evl-btns{margin-top:auto;padding-top:6px;align-self:stretch;display:flex;flex-wrap:wrap;gap:12px;
  justify-content:flex-start;align-items:center}
/* Przyciski jak wszędzie (ta sama pigułka co .ev-btn2 na stronie głównej). */
.evl-btn{display:inline-flex;align-items:center;gap:var(--evx-btn-gap);border-radius:var(--evx-btn-r);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);
  font-family:'Inter',sans-serif;font-size:var(--evx-btn-fs);font-weight:var(--evx-btn-fw);line-height:1;
  border:var(--evx-btn-bw) solid transparent;cursor:pointer;text-decoration:none;transition:background .25s ease,border-color .25s ease}
.evl-btn--dark{background:var(--ink-soft);color:#fff}
.evl-btn--dark:hover{background:#2D2D2D;color:#fff;border-color:#2D2D2D}
.evl-btn--ghost{background:transparent;color:var(--ink-soft);border-color:var(--pill-border)}
.evl-btn--ghost:hover{background:#2D2D2D;color:#fff;border-color:#2D2D2D}
.evl-btn svg{width:20px;height:20px}
.evl-btn i{line-height:1;display:inline-flex;align-items:center;transition:transform .25s}
.evl-more{margin-left:auto}
/* Krótki wariant etykiety — widoczny tylko na mobile (patrz @media 640). */
.evl-lbl-short{display:none}
.evl-more:hover i{transform:translateX(4px)}

/* Paginacja — złote pigułki w duchu galerii/cennika. */
.evl-pager{display:flex;justify-content:center;align-items:center;gap:8px;margin:44px 0 12px;flex-wrap:wrap}
.evl-pg{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 12px;
  border-radius:999px;font-size:15px;font-weight:600;color:#5a5545;text-decoration:none;line-height:1;
  background:#fff;border:1px solid rgba(184,148,78,.35);transition:.2s}
.evl-pg:hover{background:#2b2620;color:#fff;border-color:#2b2620}
.evl-pg.is-active{background:#c49a5a;color:#fff;border-color:#c49a5a;box-shadow:0 6px 16px rgba(196,154,90,.35)}
.evl-pg.is-off{opacity:.35;pointer-events:none}
.evl-pg--arrow i{line-height:1;display:inline-flex;align-items:center}

@media(max-width:640px){
  .evl-h1{font-size:32px}
  .evl-card{grid-template-columns:1fr}
  .evl-img{aspect-ratio:16/9;min-height:0}
  .evl-body{padding:22px}
  /* data: mniejsza pigułka i mniejszy odstęp do tytułu
     (było 18px margin-bottom + 14px margin-top tytułu = 32px przerwy) */
  .evl-body .evx-hero-date{font-size:11px;padding:7px 12px;gap:6px;margin-bottom:0}
  .evl-body .evx-hero-date i{font-size:12px}
  .evl-body .evx-dates{margin-bottom:0;gap:6px}
  .evl-title{font-size:22px;margin:10px 0 6px}
  /* Przyciski karty: „Zapisz się" + „Dodaj do kalendarza" dzielą pierwszy rząd,
     „Czytaj więcej" (główne CTA) pełną szerokością pod spodem. Gdy któregoś
     z ghostów nie ma, pozostały sam rozciąga się na cały rząd. */
  .evl-btns{justify-content:flex-start;gap:8px}
  .evl-btn{flex:1 1 0;min-width:0;height:46px;padding:0 8px;font-size:13px;gap:6px;
    line-height:1;white-space:nowrap;overflow:hidden;justify-content:center;box-sizing:border-box}
  /* Ikony zostają — zamiast nich skracamy etykietę („Dodaj do kalendarza" -> „Kalendarz"),
     inaczej tekst nie mieści się w połowie szerokości karty. */
  .evl-btn svg{width:15px;height:15px}
  .evl-btn i{font-size:14px;flex:0 0 auto}
  .evl-lbl{display:none}
  .evl-lbl-short{display:inline}
  .evl-more{margin-left:0;flex:1 0 100%}
}

.evx-page .wrap{max-width:1440px}
/* Hero = karta: kremowe tło, złota obwódka, zdjęcie z cieniem, data w pigułce. */
.evx-hero{position:relative;display:grid;grid-template-columns:1fr 1.7fr;gap:44px;align-items:center;
  margin:24px 0 48px;padding:36px;border-radius:28px;overflow:hidden;
  background:linear-gradient(135deg,#faf8f2 0%,#f5f1e8 100%);
  border:1px solid rgba(184,148,78,.28);box-shadow:0 18px 46px rgba(43,38,32,.08)}
/* Delikatna złota poświata w rogu — żeby karta nie była płaska. */
.evx-hero::after{content:'';position:absolute;top:-90px;right:-90px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,rgba(196,154,90,.16) 0%,rgba(196,154,90,0) 70%);pointer-events:none}
.evx-hero-img{border-radius:22px;overflow:hidden;aspect-ratio:4/3;background:#e4e0d2;
  box-shadow:0 16px 38px rgba(43,38,32,.18)}
.evx-hero-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s cubic-bezier(.2,.6,.2,1)}
.evx-hero-img:hover img{transform:scale(1.05)}
.evx-hero-body{position:relative;z-index:1;min-width:0}
.evx-hero-date{display:inline-flex;align-items:center;gap:8px;margin-bottom:18px;padding:9px 16px;border-radius:999px;
  background:#fff;border:1px solid rgba(184,148,78,.4);box-shadow:0 4px 12px rgba(43,38,32,.06);
  font-size:13px;font-weight:600;letter-spacing:.06em;color:#5a5545;line-height:1}
.evx-hero-date i{color:#c49a5a;line-height:1;display:inline-flex;align-items:center}
/* KILKA TERMINÓW = KILKA PIGUŁEK (decyzja użytkownika 10.08.2026). Sklejone w jeden
   napis „18.10.2026 · 22.11.2026" czytały się jak zakres. Kontener bierze na siebie
   dolny margines, pigułki go tracą — inaczej przy zawinięciu do drugiego rzędu
   odstępy by się sumowały. Markup: inc/event-dates.php (PHP) i js/event-neighbors.js. */
.evx-dates{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.evx-dates .evx-hero-date{margin-bottom:0}
.evx-more-body .evx-dates{align-self:flex-start;margin-bottom:0}
.evx-hero-title{font-size:50px;font-weight:600;line-height:1.06;letter-spacing:-.02em;color:#2b2620;margin:0 0 14px}
/* Złota kreska pod tytułem — ten sam akcent co w cenniku i galerii. */
.evx-hero-title::after{content:'';display:block;width:64px;height:3px;border-radius:2px;margin-top:18px;
  background:linear-gradient(90deg,#c49a5a,rgba(196,154,90,.15))}
.evx-hero-sub{font-size:19px;line-height:1.55;color:#6a655b;margin:16px 0 18px;max-width:62ch}
.evx-hero .ev-tags{margin-bottom:26px}
.evx-hero-btns{display:flex;flex-wrap:wrap;gap:14px}
/* Bez własnych metryk dla hero — wszystkie przyciski są jednakowe (patrz tokeny na górze). */
.evx-btn{display:inline-flex;align-items:center;gap:var(--evx-btn-gap);border-radius:var(--evx-btn-r);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);font-size:var(--evx-btn-fs);font-weight:var(--evx-btn-fw);
  line-height:1;text-decoration:none;border:var(--evx-btn-bw) solid transparent;cursor:pointer;transition:.2s}
.evx-btn i{font-size:var(--evx-btn-ico);line-height:1;display:inline-flex;align-items:center;justify-content:center}
.evx-btn--dark{background:#2b2620;color:#fff}
.evx-btn--dark:hover{background:#000}
.evx-btn--ghost{background:transparent;color:#2b2620;border-color:#2b2620}
.evx-btn--ghost:hover{background:#2b2620;color:#fff}

.evx-content{display:flex;flex-direction:column;gap:34px}
.evx-row{display:grid;gap:32px;align-items:start}
.evx-row--1{grid-template-columns:1fr}
.evx-row--1-1{grid-template-columns:1fr 1fr}
.evx-row--1-1-1{grid-template-columns:1fr 1fr 1fr}
.evx-row--2-1{grid-template-columns:2fr 1fr}
.evx-row--1-2{grid-template-columns:1fr 2fr}
.evx-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.evx-h{font-size:var(--evx-title-fs);font-weight:var(--evx-title-fw);color:#2b2620;margin:0;line-height:1.2}
h3.evx-h{font-size:var(--evx-sub-fs)}
.evx-text{font-size:var(--evx-body-fs);line-height:1.7;color:#3f3b33}
.evx-text p{margin:0 0 12px}
.evx-text p:last-child{margin-bottom:0}
.evx-text ul,.evx-text ol{margin:0 0 12px 22px}
.evx-text li{margin:4px 0}
.evx-text a{color:#6b7d4f;text-decoration:underline}
.evx-img{width:100%;height:auto;border-radius:16px;display:block}
.evx-text table{border-collapse:collapse;width:100%;margin:14px 0;font-size:var(--evx-body-fs)}
.evx-text th,.evx-text td{border:1px solid #ddd6c4;padding:10px 14px;text-align:left;vertical-align:top;color:#3f3b33}
.evx-text th{background:#6b7d4f;color:#fff;font-weight:600}
.evx-text tbody tr:nth-child(even) td{background:#faf8f2}
.evx-text u{text-decoration:underline}
.evx-text s{text-decoration:line-through}
.evx-text h2{font-size:var(--evx-title-fs);font-weight:var(--evx-title-fw);color:#2b2620;margin:18px 0 10px;line-height:1.2}
.evx-text h3{font-size:var(--evx-sub-fs);font-weight:600;color:#2b2620;margin:16px 0 8px}
.evx-text h4{font-size:var(--evx-h4-fs);font-weight:600;color:#2b2620;margin:14px 0 8px}
.evx-text blockquote{border-left:3px solid #c8b98f;margin:0 0 14px;padding:6px 18px;color:#5a5545;font-style:italic}
.evx-text pre{background:#f4f1e8;border-radius:8px;padding:12px 16px;overflow-x:auto;font-size:14px;margin:0 0 14px}
.evx-textwrap,.evx-text{overflow-x:auto}

/* Cennik — ciemna karta z akcentem złotym i pionowymi liniami między kolumnami. */
.evx-pricing{background:#2a2521;border-radius:22px;padding:38px 42px;color:#e9e3d8}
.evx-pricing-title{font-size:var(--evx-title-fs);font-weight:var(--evx-title-fw);color:#fff;text-align:left;margin:0;padding-bottom:22px;border-bottom:1px solid rgba(184,148,78,.5)}
.evx-pcols{display:grid;gap:0;grid-template-columns:repeat(var(--pcols,3),1fr)}
.evx-pcol{background:transparent;border-radius:0;padding:26px 30px}
.evx-pcol:first-child{padding-left:0}
.evx-pcol--last{padding-right:0}
.evx-pcol + .evx-pcol{border-left:1px solid rgba(184,148,78,.4)}
/* Układ jak cennik.png: kolumna 1 wysoka po lewej, kontakt pod kolumnami 2..N */
.evx-pcols--foot > .evx-pcol:first-child{grid-row:1 / span 2}
.evx-pcols--foot > .evx-pcol:not(:first-child){grid-row:1}
.evx-pcol h4{font-size:var(--evx-h4-fs);font-weight:600;color:#c49a5a;margin:0 0 16px;padding-bottom:0;border-bottom:none}
.evx-pcol ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:11px}
.evx-pcol li{font-size:var(--evx-body-fs);line-height:1.3em;color:#d7d0c3;padding-left:20px;position:relative}
.evx-pcol li::before{content:'';position:absolute;left:3px;top:8px;width:6px;height:6px;border-radius:50%;background:#c49a5a}
/* Pod-kolumny cennika: DOMYŚLNIE jedna pod drugą (pionowo) — decyzja użytkownika
   26.07.2026, wcześniej zawsze siadały obok siebie. Klasa --h (przełącznik
   „pod-kolumny obok siebie" w kreatorze) wraca do układu poziomego. */
.evx-psubs{display:grid;gap:12px;grid-template-columns:1fr;margin-top:16px}
.evx-psubs--h{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
/* Akapit w kolumnie cennika (pozycja typu „Tekst") — bez punktora, jaśniejszy. */
.evx-ptext{font-size:var(--evx-body-fs);line-height:1.55;color:#c9c2b4;margin:0 0 10px}
.evx-ptext:last-child{margin-bottom:0}
/* Pusta pozycja „Tekst" w kreatorze = świadomy odstęp w kolumnie cennika.
   Wysokość ~ jedna linia; wcześniej puste pozycje były wyrzucane i „nic się nie działo". */
.evx-ptext--gap{height:14px;margin:0}
.evx-ptext--gap:last-child{display:none}
.evx-pcol ul + .evx-ptext{margin-top:12px}
.evx-psub .evx-ptext{font-size:15px}
.evx-psub{background:rgba(255,255,255,.05);border-radius:12px;padding:14px 16px}
.evx-psub h5{font-size:15px;font-weight:600;color:#c49a5a;margin:0 0 10px;padding-bottom:7px;border-bottom:1px solid rgba(184,148,78,.28)}
/* Stopka „Jak się zapisać" wewnątrz karty cennika (wzór cennik.png). */
.evx-pfoot{margin-top:30px;padding-top:28px;border-top:1px solid rgba(184,148,78,.4)}
/* Wariant grid: stopka pod kolumnami 2..N, z ciągłą pionową linią od kol.1. */
.evx-pcols--foot > .evx-pfoot{grid-column:2 / -1;grid-row:2;margin-top:0;padding:28px 0 0 30px;border-top:1px solid rgba(184,148,78,.4);border-left:1px solid rgba(184,148,78,.4)}
.evx-pfoot-title{font-size:var(--evx-sub-fs);font-weight:600;color:#c49a5a;margin:0 0 20px}
.evx-pfoot-items{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.evx-pfoot-item{display:flex;flex-direction:column;gap:11px;align-items:flex-start}
.evx-pfoot-note{font-size:14px;color:#a99e88}
.evx-pfoot .evx-cbtn{width:100%;max-width:340px;justify-content:center}

/* Sekcja (blok „Wiersz") z tłem ustawionym w panelu — karta z paddingiem.
   Ciemne tło -> jasny tekst, żeby treść pozostała czytelna. */
.evx-block--bg{border-radius:22px;padding:38px 42px}
.evx-col--bg{border-radius:18px;padding:28px 30px}
.evx-block--dark,
.evx-block--dark .evx-text,
.evx-block--dark .evx-text p,
.evx-block--dark .evx-text li{color:#e9e3d8}
.evx-block--dark .evx-h,
.evx-block--dark .evx-text h2,
.evx-block--dark .evx-text h3,
.evx-block--dark .evx-text h4{color:#fff}
.evx-block--dark .evx-text a{color:#c49a5a}
.evx-block--dark .evx-btn--ghost{color:#fff;border-color:#fff}
.evx-block--dark .evx-btn--ghost:hover{background:#fff;color:#2b2620}

/* Sekcja kontaktu („Jak zapisać się…") — spójna z cennikiem: ciemna, złoty akcent, do lewej. */
.evx-contact{background:#2a2521;border-radius:22px;padding:34px 42px;text-align:left;color:#fff}
.evx-contact-title{font-size:var(--evx-title-fs);font-weight:var(--evx-title-fw);margin:0 0 8px;color:#c49a5a}
.evx-contact-intro{font-size:16px;color:#d8d2c4;margin:0 0 22px;max-width:680px}
.evx-cbtns{display:flex;flex-wrap:wrap;gap:14px;justify-content:flex-start}
/* Te same metryki co każdy inny przycisk (tokeny na górze pliku) — zmienia się tylko skórka (złoty outline). */
.evx-cbtn{display:inline-flex;align-items:center;gap:var(--evx-btn-gap);background:transparent;color:#fff;
  border:var(--evx-btn-bw) solid rgba(184,148,78,.5);border-radius:var(--evx-btn-r);
  padding:var(--evx-btn-pad-y) var(--evx-btn-pad-x);font-size:var(--evx-btn-fs);font-weight:var(--evx-btn-fw);
  line-height:1;text-decoration:none;transition:.2s}
/* Ikona ma własny box i line-height:1 — Flaticon ma offset względem baseline'u i bez tego siada niżej niż tekst. */
.evx-cbtn i{color:#c49a5a;font-size:var(--evx-btn-ico);line-height:1;display:inline-flex;align-items:center;justify-content:center}
.evx-cbtn:hover{background:rgba(184,148,78,.15);border-color:rgba(184,148,78,.85)}
.evx-cbtn.primary{background:rgba(184,148,78,.16)}
.evx-cbtn.primary:hover{background:rgba(184,148,78,.28)}

/* Galeria — jasna karta (piaskowe tło) z podpisem. */
.evx-gallery{background:#f5f1e8;border-radius:22px;padding:38px 42px}
.evx-gallery-title{font-size:var(--evx-title-fs);font-weight:var(--evx-title-fw);color:#2b2620;text-align:left;margin:0 0 26px;padding-bottom:22px;border-bottom:1px solid rgba(184,148,78,.5)}
/* Karuzela: jeden rząd (--per zdjęć naraz), strzałki po bokach, kropki pod spodem. */
.evx-gwrap{position:relative}
.evx-gviewport{overflow:hidden}
/* --peek = pasek kolejnego zdjęcia wystający zza krawędzi (podgląd, że jest „więcej"). */
.evx-gallery-grid{--per:3;--ggap:14px;--peek:70px;display:flex;gap:var(--ggap);transition:transform .55s cubic-bezier(.4,0,.2,1);will-change:transform}
.evx-gallery-grid a{flex:0 0 calc((100% - var(--per) * var(--ggap) - var(--peek)) / var(--per));display:block;border-radius:14px;overflow:hidden;aspect-ratio:4/3;cursor:zoom-in}
.evx-gallery-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.evx-gallery-grid a:hover img{transform:scale(1.06)}
.evx-garrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:46px;height:46px;border-radius:50%;border:0;background:#fff;color:#2b2620;display:flex;align-items:center;justify-content:center;font-size:15px;cursor:pointer;box-shadow:0 6px 18px rgba(43,38,32,.12);transition:.2s}
.evx-garrow:hover{background:#2b2620;color:#fff}
.evx-garrow--prev{left:-16px}
.evx-garrow--next{right:-16px}
.evx-garrow[hidden]{display:none}
/* Kropki stron galerii. flex-wrap + flex:0 0 auto są KONIECZNE: bez nich przy wielu
   zdjęciach (np. 20 stron na mobile) flex zwężał kropki, wysokość zostawała i koła
   robiły się „jajkami". Teraz kropki nigdy się nie kurczą, a nadmiar schodzi do
   drugiego rzędu. */
.evx-gdots{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:22px}
.evx-gdots button{flex:0 0 auto;width:9px;height:9px;padding:0;border-radius:50%;border:none;background:rgba(43,38,32,.22);cursor:pointer;transition:.2s}
.evx-gdots button:hover{background:rgba(43,38,32,.4)}
.evx-gdots button.is-active{background:#c49a5a;width:26px;border-radius:999px}
@media(max-width:1100px){ .evx-gallery-grid{--per:2;--peek:56px} }
@media(max-width:640px){
  .evx-gallery-grid{--per:1;--peek:44px}
  .evx-garrow{width:40px;height:40px;left:4px}
  .evx-garrow--next{left:auto;right:4px}
}

@media(max-width:820px){
  .evx-hero{grid-template-columns:1fr;gap:24px;padding:22px;border-radius:22px}
  .evx-hero-title{font-size:32px}
  .evx-hero-title::after{margin-top:14px}
  .evx-hero-sub{font-size:17px}
  .evx-hero-btns .evx-btn{flex:1;justify-content:center}
  .evx-row,.evx-row--1-1,.evx-row--1-1-1,.evx-row--2-1,.evx-row--1-2{grid-template-columns:1fr}
  .evx-pricing,.evx-contact,.evx-gallery,.evx-block--bg,.evx-col--bg{padding:24px}
  /* Mniejsza skala nagłówków na tablecie/mobile — jedno miejsce dla wszystkich sekcji. */
  :root{--evx-title-fs:24px;--evx-sub-fs:19px}
  .evx-gallery-title{margin-bottom:18px;padding-bottom:16px}
  .evx-pcols{grid-template-columns:1fr}
  .evx-pcol{padding:22px 0}
  .evx-pcol + .evx-pcol{border-left:none;border-top:1px solid rgba(184,148,78,.35);padding-top:18px;margin-top:8px}
  .evx-pcols--foot > .evx-pcol:first-child{grid-row:auto}
  .evx-pcols--foot > .evx-pcol:not(:first-child){grid-row:auto}
  .evx-pcols--foot > .evx-pfoot{grid-column:1 / -1;grid-row:auto;border-left:none;padding:24px 0 0;margin-top:8px}
}

/* mobile: „Zapisz się" i „Dodaj do kalendarza" jeden pod drugim, na całą szerokość */
@media(max-width:640px){
  .evx-hero-btns{flex-direction:column;flex-wrap:nowrap;gap:10px;width:100%}
  .evx-hero-btns .evx-btn{width:100%;flex:0 0 auto;justify-content:center;box-sizing:border-box}

  /* Udostępnij na mobile: SAME IKONY, bez podpisów (decyzja użytkownika 26.07.2026
     — „Facebook/Messenger/WhatsApp" zjadały szerokość i łamały się).
     Etykieta „Udostępnij:" i trzy okrągłe przyciski w jednym rzędzie:
     85px + 3x46px + odstępy ≈ 253px, więc mieści się nawet na 320px.
     Podpisy chowamy technikami dostępnymi dla czytników ekranu (nie display:none),
     żeby przycisk nadal miał nazwę dla osób niewidzących. */
  .ev-share{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;
    gap:10px;padding:14px 16px;border-radius:14px;box-sizing:border-box}
  .ev-share .lbl{font-size:14px}
  .ev-share a{position:relative;flex:0 0 auto;width:46px;height:46px;padding:0;
    justify-content:center;border-radius:50%}
  .ev-share a .fi{font-size:19px}
  .ev-share a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

  /* nawigacja dołem: 3 przyciski w jednej linii, skrócone etykiety
     („ wydarzenie/wydarzenia" chowamy przez .ev-nav-w) */
  .ev-nav-w{display:none}
  .ev-nav-bottom{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px;width:100%}
  .ev-nav-bottom a{justify-content:center;gap:5px;padding:13px 6px;font-size:11.5px;
    white-space:nowrap;min-width:0;text-align:center}
  .ev-nav-bottom .fi{font-size:13px}
}

/* ==========================================================================
   INNE WYDARZENIA — pasek 3 kart pod „Udostępnij” na podstronie wydarzenia.
   Świadomie NIE używa .evl-card z listy (tam karta jest pozioma, obraz obok
   treści, na całą szerokość) — tu potrzebne były trzy pionowe kafelki obok
   siebie. Rozmiary biorą tokeny ze szczytu pliku, żeby nie tworzyć nowej skali.
   ========================================================================== */
/* Odstęp nad sekcją i pod nią = wspólny rytm witryny (--sec-gap: 96/88/72px
   ze style.css), nie własna wartość — patrz reguła rytmu pionowego. */
.evx-more{margin-top:var(--sec-gap)}
/* Dolny odstęp do stopki: .ev-page miało tylko 24px, co przy karcie kończącej stronę
   wyglądało na przyklejone do footera. Dotyczy OBU podstron wydarzenia (generowanej
   i statycznej), bo obie kończą się teraz sekcją „Inne wydarzenia". */
.ev-page{padding-bottom:var(--sec-gap)}
/* Sekcja jest wstrzykiwana JS-em na statycznej podstronie — do tego czasu ukryta.
   Reguła jawna, bo [hidden] z arkusza przeglądarki przegrywa z każdym autorskim display. */
.evx-more[hidden]{display:none}
.evx-more-title{font-size:var(--evx-title-fs);font-weight:var(--evx-title-fw);color:#2b2620;
  margin:0 0 24px;padding-bottom:18px;border-bottom:1px solid rgba(184,148,78,.5)}
/* ZAWSZE 3 kolumny na desktopie (decyzja użytkownika): przy 1–2 wydarzeniach karty
   trzymają szerokość „jednej trzeciej”, a wolne miejsce zostaje puste. NIE wracać do
   auto-fit — wtedy dwie karty rozciągały się na pół szerokości i wyglądały inaczej
   niż na podstronach, gdzie jest ich trzy. */
.evx-more-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.evx-more-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--pill-border);
  border-radius:22px;overflow:hidden;text-decoration:none;color:inherit;
  transition:transform .25s ease,box-shadow .25s ease,opacity .25s ease,filter .25s ease}
.evx-more-card:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(43,38,32,.14)}
.evx-more-img{display:block;position:relative;aspect-ratio:16/9;background:#e4e0d2;overflow:hidden}
.evx-more-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.evx-more-card:hover .evx-more-img img{transform:scale(1.05)}
.evx-more-body{display:flex;flex-direction:column;gap:10px;padding:22px 24px 24px;flex:1}
/* Pigułka z datą jest wspólna z hero — tu bez dolnego marginesu, bez rozciągania
   i na kremowym tle, bo karta jest biała (biała pigułka na białym by zniknęła). */
.evx-more-body .evx-hero-date{margin-bottom:0;align-self:flex-start;background:#f5f1e8}
.evx-more-h{font-size:var(--evx-sub-fs);font-weight:600;line-height:1.2;color:#2b2620}
.evx-more-sub{font-size:15px;line-height:1.5;color:#6a655b}
.evx-more-go{margin-top:auto;display:inline-flex;align-items:center;gap:8px;
  font-size:15px;font-weight:500;color:#a07b3a;transition:color .2s ease}
.evx-more-go i{line-height:1;display:inline-flex;transition:transform .25s ease}
.evx-more-card:hover .evx-more-go{color:#2b2620}
.evx-more-card:hover .evx-more-go i{transform:translateX(3px)}
/* Zakończone: przygaszone jak na liście, pełna moc na hover. */
.evx-more-card.is-past{opacity:.55;filter:saturate(.85)}
.evx-more-card.is-past:hover{opacity:1;filter:none}
.evx-more-card.is-past .evx-more-img img{filter:grayscale(.5)}

@media(max-width:900px){
  .evx-more-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
}
/* MOBILE: „Inne wydarzenia" jako slajder — jedna karta na ekran, przesuwana palcem.
   Wcześniej karty stały jedna pod drugą i sekcja rozciągała stronę w nieskończoność.
   Ten sam mechanizm co galerie na podstronach oferty (offer.css): natywny scroll-snap,
   zero JavaScriptu, działa też na statycznej podstronie wydarzenia.
   Karty „wychodzą" za padding .wrap (ujemny margines + własny padding), żeby slajd
   był wyśrodkowany na ekranie, a sąsiednia karta wystawała jako sygnał „przesuń". */
@media(max-width:700px){
  .evx-more-grid{
    display:flex;
    grid-template-columns:none;
    gap:12px;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scroll-behavior:smooth;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    /* .wrap ma padding 24px, a poniżej 640px — 20px; wyrównujemy się do obu,
       inaczej pierwsza karta byłaby przesunięta o kilka pikseli. */
    margin-inline:-24px;
    padding-inline:24px;
  }
  .evx-more-grid::-webkit-scrollbar{display:none}
  .evx-more-card{
    flex:0 0 calc(100% - 32px);
    scroll-snap-align:center;
  }
  .evx-more-body{padding:18px 20px 20px}
  /* Hover nie istnieje na dotyku — bez podnoszenia karty i zoomu zdjęcia. */
  .evx-more-card:hover{transform:none;box-shadow:none}
  .evx-more-card:hover .evx-more-img img{transform:none}
}

/* ==========================================================================
   Obrazek na całą wysokość kolumny (element „Obraz" z włączonym przełącznikiem
   w kreatorze). Wiersz dostaje z PHP klasę --stretch, bo .evx-row ma
   align-items:start i bez tego obrazek nie miałby do czego rosnąć.
   Reguła musi wygrać z globalnym img{height:auto} (dodane przy WebP).
   ========================================================================== */
.evx-row--stretch{align-items:stretch}
.evx-row--stretch > .evx-col{height:100%}
/* Wyrównanie kolumn z kreatora („Wysokość kolumn"): środek = krótsza kolumna
   wyśrodkowana względem wyższej; równa wysokość idzie przez --stretch wyżej.
   Przy tle kolumny stretch jest jedynym wariantem, w którym karty kończą się równo. */
.evx-row--acenter{align-items:center}
.evx-col > .evx-img--full{flex:1 1 auto;width:100%;height:100%;min-height:240px;object-fit:cover}
@media(max-width:820px){
  /* Na wąskim ekranie kolumny stają jedna pod drugą — rozciąganie traci sens. */
  .evx-col > .evx-img--full{height:auto;min-height:0;aspect-ratio:16/10}
}

@media(max-width:640px){
  .evx-more-grid{margin-inline:-20px;padding-inline:20px}
}

/* Mobile: mniejsze kropki i ciaśniejszy odstęp, żeby nawet ~20 stron zmieściło się
   w jednym rzędzie na telefonie (20x8px + 19x7px = 293px). Powyżej tej liczby
   nadmiar schodzi do drugiego rzędu — nadal jako koła, nie elipsy. */
@media(max-width:600px){
  .evx-gdots{gap:7px;margin-top:18px}
  .evx-gdots button{width:8px;height:8px}
  .evx-gdots button.is-active{width:22px}
}

/* ==========================================================================
   MOBILE: IGNORUJEMY ROZMIARY CZCIONKI USTAWIONE W EDYTORZE
   Redaktor ustawia w kreatorze np. 18px, co jest dobre na desktopie, ale na
   telefonie ta sama wartość jest za duża i rozwala rytm kolumny. Poniżej 640px
   każdy inline font-size w treści wydarzenia wraca do rozmiaru odziedziczonego
   z tokenów (--evx-body-fs itd.), czyli wszystko jest jednakowe.
   `!important` jest KONIECZNE — styl inline z atrybutu style bije zwykłą regułę
   arkusza. Selektor [style*="font-size"] celuje tylko w te elementy, które
   naprawdę mają narzucony rozmiar, więc nic innego nie jest ruszane.
   ========================================================================== */
@media(max-width:640px){
  .evx-content [style*="font-size"],
  .evx-content [style*="font-size"] *{
    font-size:inherit!important;
  }
}

/* Zakładki widoku na /wydarzenia/ — „Lista wydarzeń” i „Kalendarz”.
   To ZWYKŁE LINKI (?widok=kalendarz), nie przełącznik JS: obie zakładki mają
   własny adres, działają bez skryptów i wracają po „wstecz”.
   Segmentowany przełącznik = jedna pigułka-tło, aktywna zakładka na ciemno. */
.evl-tabs{display:inline-flex;gap:6px;margin:26px auto 0;padding:6px;
  background:#f3f0e6;border:1px solid #e7e2d2;border-radius:999px}
.evl-tab{display:inline-flex;align-items:center;gap:9px;text-decoration:none;
  color:#6a655b;font-size:15.5px;font-weight:500;padding:11px 22px;border-radius:999px;
  white-space:nowrap;transition:background .25s ease,color .25s ease}
.evl-tab i{font-size:16px;line-height:0}
.evl-tab:hover{color:#2b2620;background:rgba(255,255,255,.7)}
.evl-tab.is-active{background:#2b2620;color:#fff}
.evl-tab.is-active:hover{background:#2b2620;color:#fff}

/* Kalendarz w zakładce nie potrzebuje odstępu od nagłówka listy — .evl-head
   ma już swój margines dolny, a .cal-layout żadnego własnego. */
.evl-tabs + .cal-layout{margin-top:0}

@media(max-width:420px){
  /* Dwie zakładki obok siebie nie mieszczą się na wąskim telefonie. */
  .evl-tabs{display:flex;width:100%;border-radius:22px}
  .evl-tab{flex:1;justify-content:center;padding:11px 12px;font-size:14.5px}
}

/* ============================================================
   WŁASNY FORMULARZ ZAPISÓW (sekcja #zapisy na podstronie wydarzenia)
   Definicja pól powstaje w panelu → adminn640bx/event-forms-lib.php,
   markup → inc/event-form-render.php. Wygląd trzyma się karty kontaktowej
   (.k-formcard): biała karta, zaokrąglenia 22–24 px, złoty akcent obramowań.
   ============================================================ */
/* --- Okno modalne zapisów ---
   Bez JS (`html` bez klasy .has-js) obudowa jest przezroczysta i formularz leży
   na dole strony jak zwykła sekcja. Z JS staje się popupem. */
.evx-signup-wrap{margin-top:34px}
.has-js .evx-signup-wrap{position:fixed;inset:0;z-index:1200;display:none;
  align-items:center;justify-content:center;padding:20px;margin:0}
.has-js .evx-signup-wrap.is-open{display:flex}
.evx-signup-dim{display:none}
.has-js .evx-signup-wrap .evx-signup-dim{display:block;position:fixed;inset:0;
  background:rgba(38,36,28,.6);backdrop-filter:blur(2px)}

/* Okno ma stałą, ograniczoną wysokość — przewija się TYLKO środek formularza
   (.evx-form-body). Wcześniej przewijała się cała obudowa, więc karta rosła do
   wysokości treści (same zgody RODO to kilka ekranów) i wychodziła poza widok. */
.has-js .evx-signup-wrap .evx-signup{position:relative;z-index:1;width:100%;max-width:600px;
  max-height:90vh;display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 24px 64px rgba(0,0,0,.3)}
.has-js .evx-signup-wrap .evx-form{display:flex;flex-direction:column;min-height:0;flex:1}
.has-js .evx-signup-wrap .evx-form-body{overflow-y:auto;flex:1;min-height:0;
  overscroll-behavior:contain}
.has-js .evx-signup-wrap .evx-signup-head{flex-shrink:0}
.has-js .evx-signup-wrap .evx-form-actions{flex-shrink:0}
body.evx-noscroll{overflow:hidden}

/* Krzyżyk zamykający — bez JS niepotrzebny, więc pokazuje się dopiero z .has-js. */
.evx-signup-x{display:none}
.has-js .evx-signup-x{display:flex;flex-shrink:0;width:34px;height:34px;padding:0;
  align-items:center;justify-content:center;border:1px solid var(--pill-border);border-radius:50%;
  background:#fff;color:var(--ink-soft);font-size:17px;line-height:1;cursor:pointer;
  transition:background .15s,color .15s}
/* Glif krzyżyka nie leży pośrodku swojego kwadratu — czcionka ikon rysuje go na
   linii bazowej i zostawia pod spodem miejsce na znaki schodzące. Samo
   wyśrodkowanie flexem centruje PUDEŁKO ikony, a nie sam znak (zmierzone: krzyżyk
   siedział 2,5 px za wysoko). Stąd `line-height:1` (pudełko = rozmiar czcionki)
   plus optyczna korekta w dół. */
.has-js .evx-signup-x i{display:block;line-height:1;transform:translateY(1px)}
.has-js .evx-signup-x:hover{background:#2b2620;color:#fff;border-color:#2b2620}

.evx-signup{background:#fff;border:1px solid var(--pill-border);border-radius:20px}
.evx-signup-head{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 26px;border-bottom:1px solid rgba(184,148,78,.35)}
.evx-signup-title{font-family:'Inter',sans-serif;font-size:21px;font-weight:600;
  color:#2b2620;margin:0;display:flex;align-items:center;gap:10px;line-height:1.3}
.evx-signup-title i{color:#b8944e;font-size:.85em}
.evx-signup-intro{background:var(--cream);border-radius:12px;padding:13px 16px;
  margin-bottom:20px;color:var(--ink);font-size:14.5px;line-height:1.6}
/* Wstęp pisany jest w edytorze, więc może zawierać listy, pogrubienia i linki. */
.evx-signup-intro p{margin:0 0 10px}
.evx-signup-intro p:last-child,.evx-signup-intro ul:last-child,.evx-signup-intro ol:last-child{margin-bottom:0}
.evx-signup-intro ul,.evx-signup-intro ol{margin:0 0 10px;padding-left:22px}
.evx-signup-intro li{margin-bottom:5px}
.evx-signup-intro li::marker{color:#b8944e}
.evx-signup-intro a{color:#b8944e;text-decoration:underline}
.evx-signup-intro strong{font-weight:600;color:var(--title-dark)}
.evx-signup-err{display:flex;align-items:flex-start;gap:9px;background:#fbeeea;
  border:1px solid #e6c3b8;color:#8f3a24;border-radius:12px;padding:11px 14px;
  margin-bottom:18px;font-size:14px;line-height:1.5}

/* --- Pola --- */
/* Padding tutaj, nie w regule modalnej — bez JS formularz jest zwykłą sekcją
   i też musi mieć oddech od krawędzi karty. */
/* Odstęp MIĘDZY pytaniami musi być wyraźnie większy niż wewnątrz pytania
   (etykieta ↔ pole, opcja ↔ opcja), inaczej lista pytań i odpowiedzi zlewa się
   w jeden ciąg tekstu. Tu: 24 px między pytaniami, 8 px pod etykietą, 9 px
   między opcjami wyboru. */
.evx-form-body{display:flex;flex-direction:column;gap:24px;padding:22px 26px}
/* Siatka pól: układy kolumnowe (decyzja użytkownika 13.08.2026 — „nie wszystko
   pod sobą"). Kontenerem jest OSOBNY .evx-form-grid, a nie .evx-form-body,
   bo body przewija zawartość popupu (flex:1;min-height:0) i zmiana kierunku
   rozwaliłaby przewijanie.
   Odejmowanie przy flex-basis wynika z odstępu: przy gap 24 dwie kolumny tracą
   po 12 px (24/2), trzy po 16 px (24×2/3) — bez tego ostatnia nie mieści się
   w wierszu i spada niżej. */
.evx-form-grid{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}
.evx-form-grid>*{flex:1 1 100%;min-width:0}
.evx-field--w50{flex:0 1 calc(50% - 12px)}
.evx-field--w33{flex:0 1 calc(33.333% - 16px)}
.evx-field{display:flex;flex-direction:column}
/* Pytanie ma być mocniejsze od odpowiedzi. Wcześniej etykieta (13px) była
   MNIEJSZA niż tekst opcji (14,5px) i pytanie ginęło pod własną listą — teraz
   ten sam stopień co odpowiedź, a hierarchię robi grubość i kolor. */
.evx-lab{display:block;font-weight:700;color:var(--title-dark);font-size:14px;
  line-height:1.4;margin-bottom:8px}
.evx-lab .req{color:#b8552f}
.evx-field-desc{font-size:13px;color:var(--ink-soft);line-height:1.55;margin-bottom:8px}
.evx-form input[type=text],.evx-form input[type=email],.evx-form input[type=tel],
.evx-form input[type=number],.evx-form input[type=date],.evx-form select,.evx-form textarea{
  width:100%;background:#fff;border:1px solid rgba(184,148,78,.32);border-radius:11px;
  padding:11px 14px;font-family:inherit;font-size:15px;color:var(--ink);
  transition:border-color .2s ease,box-shadow .2s ease}
.evx-form input:focus,.evx-form select:focus,.evx-form textarea:focus{
  outline:none;border-color:#b8944e;box-shadow:0 0 0 3px rgba(184,148,78,.14)}
.evx-form input::placeholder,.evx-form textarea::placeholder{color:#a49e91}
.evx-form textarea{display:block;min-height:96px;resize:vertical}
.evx-form select{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath fill='%23a49e91' d='M1 1l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center;padding-right:40px}

/* --- Wybór: radio / checkbox --- */
.evx-choices{display:flex;flex-direction:column;gap:9px}
/* Odpowiedź tym samym stopniem co pytanie, ale zwykłą grubością — inaczej
   listy wyboru „krzyczały" mocniej niż pytanie nad nimi. */
.evx-choice{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:14px;
  color:var(--ink);line-height:1.45}
.evx-choice input{margin-top:1px}
.evx-choice input{width:18px;height:18px;flex:0 0 auto;margin:0;accent-color:#b8944e;cursor:pointer}
.evx-choice:hover span{color:var(--title-dark)}

/* --- Zgody --- */
/* Treść zgody bywa długa (RODO ma cztery akapity), więc dostaje osobne tło
   i mniejszy stopień — inaczej przytłacza resztę formularza.

   BEZ własnego scrolla w środku: wcześniejszy `max-height` ucinał klauzulę
   w połowie zdania i nic nie sygnalizowało, że da się ją przewinąć — wyglądało
   to na błąd renderowania. Okno i tak się przewija, więc zgoda może być pełna.
   To dodatkowo ważne prawnie: treść zgody musi być czytelna w całości. */
.evx-field--consent{background:var(--cream);border-radius:14px;padding:16px 18px}
.evx-consent-text{font-size:13px;color:var(--ink-soft);margin:0 0 13px}
/* Interlinia akapitów zgody ciaśniejsza niż w reszcie formularza (decyzja
   użytkownika) — bloki RODO czytają się wtedy jak jeden zwarty passus,
   a nie jak rozstrzelony tekst zajmujący pół okna. */
.evx-consent-text p{margin:0 0 8px;line-height:1.2em}
.evx-consent-text p:last-child{margin-bottom:0}
.evx-consent-text a{color:#b8944e;text-decoration:underline}
/* Bez własnego rozmiaru — etykieta zgody trzyma się wspólnych 13px z .evx-lab
   (osobna reguła 14px byłaby teraz WIĘKSZA od reszty etykiet i odwracała
   hierarchię, którą ustala .evx-lab). */
.evx-field--consent .evx-choices{flex-direction:row;gap:22px;flex-wrap:wrap}

/* --- Blok własnego tekstu z edytora --- */
.evx-form-html{background:var(--cream);border-radius:12px;padding:14px 17px;
  font-size:14.5px;line-height:1.65;color:var(--ink)}
.evx-form-html p:last-child{margin-bottom:0}

/* --- Wysyłka --- */
.evx-form-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;
  flex-wrap:wrap;padding:15px 26px;border-top:1px solid rgba(184,148,78,.35);background:#fdfcf8}
.evx-form-actions .evx-btn{border:none;cursor:pointer;font-family:inherit;
  padding:12px 22px;font-size:15px}
.evx-form-note{margin:0;font-size:12.5px;color:var(--muted)}
.evx-form-note .req{color:#b8552f}

/* Honeypot: niewidoczny dla człowieka, ale obecny w DOM dla bota.
   display:none odpada — część botów pomija ukryte pola. */
.evx-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* --- Potwierdzenie po wysłaniu --- */
/* Widok bez formularza, więc padding musi dać sam sobie. */
.evx-signup--done{text-align:center}
.evx-signup-ok{padding:34px 26px 38px}
.evx-signup-ok i{font-size:48px;color:#7d9b56;display:block;margin-bottom:14px}
.evx-signup-ok h2{font-family:'Inter',sans-serif;font-size:23px;font-weight:600;
  color:var(--title-dark);margin:0 0 9px}
.evx-signup-ok p{margin:0;color:var(--ink-soft);font-size:15px;line-height:1.6}
.has-js .evx-signup--done .evx-signup-x{position:absolute;top:14px;right:14px}

@media(max-width:640px){
  /* Na telefonie okno na cały ekran — karta z marginesami i zaokrągleniami
     zjadałaby i tak wąską przestrzeń na pola. */
  .has-js .evx-signup-wrap{padding:0}
  .has-js .evx-signup-wrap .evx-signup{max-width:none;max-height:100%;height:100%;
    border-radius:0;border:none}
  .evx-signup-head{padding:16px 18px}
  .evx-signup-title{font-size:18px}
  /* iOS Safari przybliża stronę po tapnięciu w pole o foncie MNIEJSZYM niż 16px
     i po zamknięciu klawiatury już z tego przybliżenia nie wraca. Stąd 16px na
     telefonie — to jedyne wyjście, które nie odbiera użytkownikowi gestu
     pinch-to-zoom (blokada przez `maximum-scale` w meta viewport odbiera). */
  .evx-form input[type=text],.evx-form input[type=email],.evx-form input[type=tel],
  .evx-form input[type=number],.evx-form input[type=date],.evx-form select,.evx-form textarea{font-size:16px}
  .evx-form-body{padding:18px}
  /* Na telefonie wszystko pod sobą — 33% wiersza to tu ~100 px, czyli pole,
     w które nic się nie wpisze. Użytkownik od początku zakładał, że kolumny
     są wyłącznie desktopowe. */
  .evx-field--w50,.evx-field--w33{flex-basis:100%}
  .evx-form-actions{padding:13px 18px}
  .evx-field--consent{padding:14px 15px}
  .evx-form-actions .evx-btn{width:100%;justify-content:center;order:-1}
  .evx-form-note{width:100%;text-align:center}
}
