/* Zmienne – łatwo dostroisz opóźnienia i easing */
:root{
  --vis-ease-soft: cubic-bezier(.2,.65,.3,1);
  --vis-hdr-delay-base: 0ms;

  --vis-title-d: calc(var(--vis-hdr-delay-base) + 0ms);
  --vis-dates-d: calc(var(--vis-hdr-delay-base) + 120ms);
  --vis-place-d: calc(var(--vis-hdr-delay-base) + 220ms);
  --vis-desc-d:  calc(var(--vis-hdr-delay-base) + 420ms);
}


/* wspólny kontener szerokości */
.vis-exh-container { max-width: 1100px; margin: 0 auto; padding: 0 16px; }

/* --- Nagłówek --- */
.vis-exh-header { text-align:center; margin:40px auto 24px; }
.vis-exh-title  { font-size: clamp(28px, 4vw, 48px); font-weight:800; line-height:1.2; margin:0 0 10px; }
.vis-exh-dates  { color:#666; margin-bottom:6px; font-size:1.05rem; }
.vis-exh-place  { color:#444; font-size:1rem; }

/* --- Opis --- */
.vis-exh-desc { margin:0 auto 32px; }
.vis-exh-desc p { line-height:1.75; }

/* --- Śródtytuły --- */
.vis-exh-container h2 { font-size: clamp(20px, 2.2vw, 28px); margin: 28px 0 12px; line-height:1.3; }

/* --- Listy --- */
.vis-list { list-style:none; padding:0; margin:8px 0 0; columns:3; column-gap:28px; }
@media (max-width: 1024px){ .vis-list { columns:2; } }
@media (max-width: 640px){  .vis-list { columns:1; } }
.vis-list li { break-inside:avoid; margin:4px 0; }

/* --- Partnerzy --- */
.vis-exh-partners { margin:24px auto 36px; }
.vis-logos { display:flex; flex-wrap:wrap; gap:16px; align-items:center; }
.vis-logo { display:inline-flex; align-items:center; justify-content:center; padding:10px 14px; background:#f7f7f7; border-radius:12px; box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.vis-logo img { max-height:40px; width:auto; filter:grayscale(100%); opacity:.9; transition:filter .2s ease, transform .2s ease, opacity .2s ease; }
.vis-logo:hover img { filter:none; transform:translateY(-1px); opacity:1; }

/* --- Galeria --- */
.vis-exh-gallery-wrap { margin:16px auto 60px; }
.vis-exh-gallery {
  display:grid;
  grid-template-columns: repeat(var(--vis-cols-d,4), 1fr);
  gap: var(--vis-gap,16px);
}
@media (max-width: 1024px){
  .vis-exh-gallery { grid-template-columns: repeat(var(--vis-cols-t,3), 1fr); }
}
@media (max-width: 640px){
  .vis-exh-gallery { grid-template-columns: repeat(var(--vis-cols-m,2), 1fr); }
}
.vis-item { position:relative; overflow:hidden; border-radius: var(--vis-radius, 0px); background:#eee; }
.vis-item img { width:100%; height:100%; display:block; object-fit:cover; }

/* >>> Kluczowe: ukrywanie elementów z kolejnych paczek */
.vis-exh-gallery .vis-item[data-hidden="1"] { display: none; }

/* podpisy */
.vis-item .vis-cap {
  position:absolute; left:0; right:0; bottom:0;
  padding:10px 12px; font-size:.95rem; color:#fff;
  background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.55) 100%);
  opacity:0; transform:translateY(6px); transition:.2s ease;
}
.vis-exh-gallery[data-caption-style="bar"] .vis-item .vis-cap {
  background:rgba(0,0,0,.65); opacity:.92; transform:none;
}
.vis-exh-gallery[data-caption-style="overlay"] .vis-item:hover .vis-cap { opacity:1; transform:translateY(0); }
.vis-exh-gallery[data-caption-style="none"] .vis-item .vis-cap { display:none; }

/* kontrolki galerii */
.vis-exh-gallery-controls { position:relative; display:flex; justify-content:center; align-items:center; gap:16px; margin-top:18px; }

/* Przycisk „Załaduj więcej” (ukrywany w trybie infinite w JS) */
.vis-load-more { border:1px solid #111; background:#111; color:#fff; padding:10px 16px; border-radius:24px; cursor:pointer; transition: transform .12s ease, opacity .12s ease, background .2s ease; }
.vis-load-more:hover { transform: translateY(-1px); background:#000; }
.vis-load-more[disabled] { opacity:.45; cursor:not-allowed; }

/* Sentinel / hint dla Infinite Scroll */
.vis-infinite-sentinel {
  position: relative;
  width: 26px;
  height: 26px;
  margin-top: 6px;     /* odrobina przestrzeni */
  display: none;       /* JS włączy tylko gdy infinite && są ukryte elementy */
}
.vis-infinite-sentinel::before {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  width: 10px;
  height: 10px;
  border-right: 2px solid rgba(0,0,0,.5);
  border-bottom: 2px solid rgba(0,0,0,.5);
  transform: rotate(45deg);
  animation: visChevron 1.2s ease-in-out infinite;
}
@keyframes visChevron {
  0%   { transform: translateY(-2px) rotate(45deg); opacity: .55; }
  50%  { transform: translateY(2px)  rotate(45deg); opacity: 1; }
  100% { transform: translateY(-2px) rotate(45deg); opacity: .55; }
}

/* --- Lightbox (z animacjami) --- */
.vis-lb-overlay{
  position: fixed; inset: 0;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.86);
  z-index: 9999;
  /* animacje overlay */
  opacity: 0;
  visibility: hidden;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  transition:
    opacity .16s ease,
    backdrop-filter .20s ease,
    -webkit-backdrop-filter .20s ease,
    visibility 0s linear .16s; /* pokazuj po zakończeniu fade-in/out */
}
.vis-lb-overlay.active{ /* stan zamontowany w DOM (JS dodaje/usuwa) */
  display: flex;
}
.vis-lb-overlay.lb-visible{
  opacity: 1;
  visibility: visible;
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  transition:
    opacity .16s ease,
    backdrop-filter .20s ease,
    -webkit-backdrop-filter .20s ease;
}

/* obraz + podpis */
.vis-lb-img{
  max-width: min(92vw, 1400px);
  max-height: 84vh;
  object-fit: contain;
  border-radius: 8px;
  /* animacja wejścia */
  opacity: 0;
  transform: scale(.985);
  transition: opacity .22s cubic-bezier(.2,.65,.3,1),
              transform .22s cubic-bezier(.2,.65,.3,1);
}


/* crossfade przy next/prev */
.vis-lb-img.lb-xfade-out{
  opacity: 0;
  transform: scale(.985);
  transition: opacity .20s cubic-bezier(.2,.65,.3,1),
              transform .20s cubic-bezier(.2,.65,.3,1);
}
.vis-lb-img.lb-xfade-in{
  opacity: 1;
  transform: none;
  transition: opacity .22s cubic-bezier(.2,.65,.3,1),
              transform .22s cubic-bezier(.2,.65,.3,1);
}

/* podpis pod obrazem — jak miałeś */
.vis-lb-cap{
  position: fixed;
  bottom: 17px;
  margin-top: 12px;
  max-width: min(92vw, 1400px);
  color: #fff;
  line-height: 1.5;
  font-size: clamp(14px, 1.2vw, 18px);
  text-align: center;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  padding: 12px 16px;
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0,0,0,.35);
}
@media (max-width: 768px){
  .vis-lb-cap{ max-width: 100%; font-size: 15px; padding: 10px 14px; text-align: left; }
}
.vis-lb-cap a{ color:#fff; text-decoration: underline; }
.vis-lb-cap strong, .vis-lb-cap b{ font-weight:700; }

/* przyciski */
.vis-lb-close, .vis-lb-prev, .vis-lb-next{
  position: fixed; top: 50%; transform: translateY(-50%);
  background: rgba(255,255,255,.12);
  color: #fff; border: 0; width: 44px; height: 44px;
  border-radius: 50%; cursor: pointer;
}
.vis-lb-close{ top: 24px; right: 24px; transform: none; }
.vis-lb-prev{ left: 24px; }
.vis-lb-next{ right: 24px; }

/* prefers-reduced-motion: wyłącz przejścia */
@media (prefers-reduced-motion: reduce){
  .vis-lb-overlay,
  .vis-lb-img{
    transition: none !important;
  }
}





/* ===========================
   MINIATURY – proporcje + cover
   =========================== */

.vis-exh-gallery { 
  --vis-thumb-ratio: 1/1;        /* proporcje miniaturek */
  --vis-radius: 12px;            /* promień rogów */
  --vis-glass-spread: 4px;       /* subtelna grubość ringu */
  --vis-glass-primary: color-mix(in srgb, var(--e-global-color-primary, #fa003f) 32%, transparent);
  --vis-glass-accent:  color-mix(in srgb, var(--e-global-color-accent,  #111)   18%, transparent);
}

.vis-exh-gallery .vis-item {
  position: relative;
  aspect-ratio: var(--vis-thumb-ratio, 1/1);
  border-radius: var(--vis-radius);
  overflow: visible;
  transition: transform .25s ease;
}

.vis-exh-gallery .vis-item img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
  border-radius: calc(var(--vis-radius) + var(--vis-glass-spread));
  position: relative;
  z-index: 2;
  transition: transform .3s ease, filter .3s ease, opacity .25s ease;
}



@media (hover:hover){
  .vis-exh-gallery .vis-item:hover {
    transform: translateY(-2px);
  }
  .vis-exh-gallery .vis-item:hover::after {
    inset: -10px; /* trochę większy niż normalny */
    border-radius: calc(var(--vis-radius) + 10px);
    opacity: .7;
    backdrop-filter: blur(6px) saturate(1.1);
    -webkit-backdrop-filter: blur(6px) saturate(1.1);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.45),
      0 10px 24px rgba(0,0,0,.16),
      0 0 0 8px color-mix(in srgb, var(--e-global-color-primary, #fa003f) 20%, transparent);
  }
  .vis-exh-gallery .vis-item:hover img {
    transform: scale(1.02);
    filter: saturate(1.04) contrast(1.02);
  }
}

/* caption overlay – naprawa z-index */
.vis-exh-gallery[data-caption-style="overlay"] .vis-item .vis-cap {
  z-index: 3; /* ponad ringiem i obrazkiem */
  position: absolute;
  left: 0; right: 0; bottom: 0;
  opacity: 0; 
  transform: translateY(8px);
  transition: opacity .25s ease, transform .25s ease;
}
.vis-exh-gallery[data-caption-style="overlay"] .vis-item:hover .vis-cap {
  opacity: 1; 
  transform: translateY(0);
}

/* ===========================
   THUMBNAILS – reveal animacje
   =========================== */

.vis-exh-gallery .vis-item {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .6s ease, transform .6s ease;
  transition-delay: var(--vis-thumb-delay, 0ms);
}

.vis-exh-gallery .vis-item.is-visible {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .vis-exh-gallery .vis-item {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}


/* ===========================
   LIQUID-GLASS RING ZA OBRAZEM
   =========================== */

/* delikatny, zawsze widoczny ring – pseudo-element za obrazkiem */
.vis-exh-gallery .vis-item::after{
  content: "";
  position: absolute;
  z-index: 1;                      /* za obrazkiem (ten ma z-index:2) */
  inset: calc(-1 * var(--vis-glass-spread, 8px));
  border-radius: calc(var(--vis-radius) + var(--vis-glass-spread, 8px));
  pointer-events: none;

  /* szkło: lekka poświata + delikatny gradient */
  background:
    linear-gradient(135deg, var(--vis-glass-primary), var(--vis-glass-accent));
  opacity: .35;

  /* „szklane” wykończenie + miękki cień na zewnątrz */
  backdrop-filter: blur(2px) saturate(1.05); /* nie zakrywa zdjęcia, bo jest z tyłu */
  -webkit-backdrop-filter: blur(2px) saturate(1.05);

  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.35),
    0 10px 26px rgba(0,0,0,.16),
    0 0 0 1px rgba(255,255,255,.22); /* subtelny kontur ringu */

  transition: opacity .25s ease, box-shadow .25s ease, filter .25s ease, transform .25s ease;
}

/* Hover: ring mocniejszy, szklany glow w kolorze brandu, subtelny lift */
@media (hover:hover){
  .vis-exh-gallery .vis-item:hover{
    transform: translateY(-2px);
  }
  .vis-exh-gallery .vis-item:hover::after{
    opacity: .75;
    backdrop-filter: blur(6px) saturate(1.1);
    -webkit-backdrop-filter: blur(6px) saturate(1.1);

    /* poświata w kolorze brandu – delikatna, poza krawędzią */
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.45),
      0 12px 28px rgba(0,0,0,.18),
      0 0 0 10px color-mix(in srgb, var(--e-global-color-primary, #fa003f) 18%, transparent);
  }

  .vis-exh-gallery .vis-item:hover img{
    transform: scale(1.02);
    filter: saturate(1.04) contrast(1.02);
  }
}

/* ===========================
   PODPIS „overlay” – jak było
   =========================== */


/* Accessibility – redukcja animacji */
@media (prefers-reduced-motion: reduce){
  .vis-exh-gallery .vis-item,
  .vis-exh-gallery .vis-item::after,
  .vis-exh-gallery .vis-item img,
  .vis-exh-gallery .vis-item .vis-cap{
    transition: none !important;
  }
}


/* Efekt podkreślenia dla nagłówków sekcji wystawy */
.vis-exh-container h2 {
  position: relative;
  display: inline-block;
  font-weight: 700;
  cursor: default;

  /* zawsze widoczne podkreślenie */
  text-decoration: underline 0.15em var(--e-global-color-text);
  text-underline-offset: 0.2em;
  transition: text-underline-offset 0.3s ease, text-decoration-color 0.3s ease;
}

.vis-exh-container h2:hover,
.vis-exh-container h2:focus {
  text-decoration-color: #FA003F; /* Rose Red */
  text-underline-offset: 0.4em;
}

/* bazowy wygląd */
.vis-exh-container h2 {
  position: relative;
  display: inline-block;
  font-weight: 700;
  text-decoration: underline 0.15em var(--e-global-color-text);
  text-underline-offset: 0.2em;
  transition: 
    text-underline-offset .25s ease,
    text-decoration-color .25s ease,
    color .25s ease,
    font-weight .25s ease;
}

/* aktywacja efektu:
   - gdy najeżdżasz bezpośrednio na h2
   - gdy najeżdżasz na odpowiadającą mu sekcję obok */
.vis-exh-container h2:hover,
.vis-exh-container h2:has(+ .vis-exh-artists:hover),
.vis-exh-container h2:has(+ .vis-exh-curators:hover),
.vis-exh-container h2:has(+ .vis-exh-partners:hover),
.vis-exh-container h2:has(+ .vis-exh-gallery-wrap:hover) {
  text-decoration-color: var(--e-global-color-accent); 
  text-underline-offset: 0.4em;

}





/* =========================
   LIQUID GLASS dla list sekcji
   ========================= */

/* 1) Panel „szklany” na istniejących wrapperach sekcji */
.vis-exh-artists,
.vis-exh-curators{
  position: relative;
  padding: 18px 20px;      /* wewnątrz panelu */
  border-radius: 18px;     /* zaokrąglenie panelu */
  margin: 8px 0 28px;
  isolation: isolate;      /* pewny stacking dla ::before */
  transition: transform .2s ease, box-shadow .2s ease;
}

/* Szklana tafla */
.vis-exh-artists::before,
.vis-exh-curators::before{
  content: "";
  position: absolute; inset: 0;
  z-index: 0;
  border-radius: inherit;

  /* półprzezroczysty „frosted” panel + rozmycie tła */
  background: rgba(255,255,255,.48);                /* tint */
  backdrop-filter: blur(8px) saturate(1.05);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);

  /* miękki cień, bez ciężkiej ramki */
  box-shadow:
    0 10px 30px rgba(0,0,0,.10),
    0 2px 6px rgba(0,0,0,.05);
}

/* Delikatny „shine” na krawędziach (wewnętrzny) */
.vis-exh-artists::after,
.vis-exh-curators::after{
  content: "";
  position: absolute; inset: 0;
  z-index: 0; border-radius: inherit;
  pointer-events: none;
  box-shadow:
    inset 2px 2px 0 rgba(255,255,255,.55),
    inset -2px -2px 0 rgba(0,0,0,.04);
}

/* 2) Hover całej sekcji (panel lekko „podnosi się”) */
.vis-exh-artists:hover,
.vis-exh-curators:hover{
  transform: translateY(-1px);
}
.vis-exh-artists:hover::before,
.vis-exh-curators:hover::before{
  box-shadow:
    0 16px 40px rgba(0,0,0,.14),
    0 3px 10px rgba(0,0,0,.06);
}

/* 3) Zawartość nad szkłem */
.vis-exh-artists .vis-list,
.vis-exh-curators .vis-list{
  position: relative;
  z-index: 1;              /* ponad ::before/::after */
  background: transparent; /* panel jest na wrapperze */
  border: 0;               /* wyłącz starą, „ciężką” ramkę */
}

/* (opcjonalnie) „rule” między kolumnami w kolorze akcentu,
   żeby zachować charakter Twojej listy */
.vis-exh-artists .vis-list,
.vis-exh-curators .vis-list{
  column-rule: 1px dotted var(--e-global-color-accent, #FA003F);
}

/* Mobile – minimalnie ciaśniej, żeby panel wyglądał subtelnie */
@media (max-width: 640px){
  .vis-exh-artists,
  .vis-exh-curators{ padding: 14px 14px; border-radius: 16px; }
}

/* ============================
   Reveal on scroll (sekcje)
   ============================ */

.vis-reveal{
  opacity: 0;
  transform: translateY(var(--vis-fade-translate, 16px)) scale(0.995);
  filter: blur(2px);
  transition:
    opacity .6s ease,
    transform .6s ease,
    filter .6s ease;
  transition-delay: var(--vis-fade-delay, 0ms);
  will-change: opacity, transform, filter;
}

/* po „wejściu” w viewport */
.vis-reveal.is-visible{
  opacity: 1;
  transform: none;
  filter: none;
}

/* redukcja animacji dla osób, które tego potrzebują */
@media (prefers-reduced-motion: reduce){
  .vis-reveal{
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

/* stan początkowy obrazu ustawiany przejściowo w JS */
.vis-lb-img.lb-prep { opacity: 0; transform: scale(.985); }




/* ===========================
   Reveal nagłówka i opisu (wariant A)
   kolejność: tytuł → daty → miejsce → opis
   =========================== */


/* START STATE — pojawia się dopiero, gdy rodzic (sekcja) dostanie .is-visible z JS */

/* Header: tytuł / daty / miejsce */
.vis-exh-header.vis-reveal:not(.is-visible) .vis-exh-title,
.vis-exh-header.vis-reveal:not(.is-visible) .vis-exh-dates,
.vis-exh-header.vis-reveal:not(.is-visible) .vis-exh-place {
  opacity: 0;
  transform: translateY(8px);
  transition:
    opacity .28s var(--vis-ease-soft),
    transform .28s var(--vis-ease-soft);
  will-change: opacity, transform;
}


/* Stagger (opóźnienia) wewnątrz nagłówka */
.vis-exh-header.vis-reveal .vis-exh-title { transition-delay: var(--vis-title-d); }
.vis-exh-header.vis-reveal .vis-exh-dates { transition-delay: var(--vis-dates-d); }
.vis-exh-header.vis-reveal .vis-exh-place { transition-delay: var(--vis-place-d); }

.vis-exh-header.is-visible .vis-exh-title,
.vis-exh-header.is-visible .vis-exh-dates,
.vis-exh-header.is-visible .vis-exh-place{
  opacity: 1;
  transform: translateY(0);
}



/* opis – analogicznie */
.vis-exh-desc.vis-reveal { transition-delay: var(--vis-desc-d); }

/* Opis – delikatnie dłuższy, z lekkim „wyostrzeniem” (blur → 0) */
.vis-exh-desc.vis-reveal:not(.is-visible){
  opacity: 0;
  transform: translateY(8px);
  filter: blur(2px);
  transition:
    opacity .36s var(--vis-ease-soft),
    transform .36s var(--vis-ease-soft),
    filter .36s var(--vis-ease-soft);
  transition-delay: var(--vis-desc-d);
  will-change: opacity, transform, filter;
}
.vis-exh-desc.is-visible{
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}


.vis-exh-desc.vis-reveal.is-visible{
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

/* Accessibility – jeśli użytkownik ogranicza animacje */
@media (prefers-reduced-motion: reduce){
  .vis-exh-header.vis-reveal .vis-exh-title,
  .vis-exh-header.vis-reveal .vis-exh-dates,
  .vis-exh-header.vis-reveal .vis-exh-place,
  .vis-exh-desc.vis-reveal{
    transition: none !important;
    transform: none !important;
    filter: none !important;
  }
}

/* (Opcjonalnie) na mobile skróć delikatnie opóźnienia – UI wydaje się żwawsze */
@media (max-width: 768px){
  :root{
    --vis-dates-d: 100ms;
    --vis-place-d: 190ms;
    --vis-desc-d:  360ms;
  }
}

.vis-lb-overlay.lb-visible .vis-lb-img { opacity: 1; transform: none; }

.vis-exh-container h2.vis-reveal {
  opacity: 0;
  transform: translateY(10px);
  filter: blur(1px);
  transition: 
    opacity .4s var(--vis-ease-soft),
    transform .4s var(--vis-ease-soft),
    filter .4s var(--vis-ease-soft);
  transition-delay: var(--vis-h2-delay, 0ms);
  will-change: opacity, transform, filter;
}
.vis-exh-container h2.vis-reveal.is-visible {
  opacity: 1;
  transform: none;
  filter: none;
}

/* ========== Liquid-glass chips dla daty i miejsca (z płaskimi ikonkami) ========== */
.vis-exh-header{
  --chip-bg: rgba(255,255,255,.45);
  --chip-blur: 8px;
  --chip-shadow: 0 10px 28px rgba(0,0,0,.12), 0 2px 6px rgba(0,0,0,.06);
  --chip-shadow-hover: 0 16px 40px rgba(0,0,0,.16), 0 3px 10px rgba(0,0,0,.08);
  --chip-br: 16px;
  --chip-pad-y: 8px;
  --chip-pad-x: 14px;
  --chip-gap: 10px;
  --chip-border: 1px solid rgba(255,255,255,.35);
  --chip-accent: color-mix(in srgb, var(--e-global-color-primary, #fa003f) 26%, transparent);
  --chip-text: #222;

  --chip-ico-size: 1.05em; /* rozmiar ikony */
  --chip-ico-gap: 8px;     /* odstęp od tekstu */
}

.vis-exh-dates,
.vis-exh-place{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:6px var(--chip-gap);
  padding:var(--chip-pad-y) var(--chip-pad-x);
  border-radius:var(--chip-br);
  position:relative;
  isolation:isolate;
  color:var(--chip-text);
  background:var(--chip-bg);
  -webkit-backdrop-filter: blur(var(--chip-blur)) saturate(1.05);
          backdrop-filter: blur(var(--chip-blur)) saturate(1.05);
  box-shadow: var(--chip-shadow);
  border: var(--chip-border);
  line-height:1.2;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease;
}

/* IKONA (płaska, jednokolorowa) – na ::before */
.vis-exh-dates::before,
.vis-exh-place::before{
  content:"";
  display:inline-block;
  width:var(--chip-ico-size);
  height:var(--chip-ico-size);
  margin-right:var(--chip-ico-gap);
  background-color: currentColor; /* kolor = kolor tekstu */
  /* Safari/Chrome */
  -webkit-mask-repeat:no-repeat;
  -webkit-mask-position:center;
  -webkit-mask-size:contain;
  /* Firefox/Edge */
  mask-repeat:no-repeat;
  mask-position:center;
  mask-size:contain;
}

/* Kalendarz */
.vis-exh-dates::before{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M6 2h2v2h8V2h2v2h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2V2zm14 8H4v10h16V10z'/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M6 2h2v2h8V2h2v2h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2V2zm14 8H4v10h16V10z'/%3E%3C/svg%3E");
}

/* Pinezka (miejsce) */
.vis-exh-place::before{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 2a6 6 0 0 1 6 6c0 4.5-6 14-6 14S6 12.5 6 8a6 6 0 0 1 6-6zm0 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z'/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 2a6 6 0 0 1 6 6c0 4.5-6 14-6 14S6 12.5 6 8a6 6 0 0 1 6-6zm0 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z'/%3E%3C/svg%3E");
}

/* „Shine” szkła (delikatne) – na ::after, żeby nie kolidowało z ikoną */
.vis-exh-dates::after,
.vis-exh-place::after{
  content:"";
  position:absolute; inset:0;
  border-radius:inherit;
  pointer-events:none;
  mix-blend-mode:soft-light;
  background:
    radial-gradient(120% 120% at 12% 10%, rgba(255,255,255,.55), transparent 55%),
    radial-gradient(120% 120% at 88% 90%, rgba(255,255,255,.25), transparent 60%);
}

/* Interakcje */
@media (hover:hover){
  .vis-exh-dates:hover,
  .vis-exh-place:hover{
    transform: translateY(-1px);
    box-shadow: var(--chip-shadow-hover);
    border-color: rgba(255,255,255,.55);
  }
}

/* Focus (a11y) */
.vis-exh-dates:focus-visible,
.vis-exh-place:focus-visible{
  outline:0;
  box-shadow:
    0 0 0 3px rgba(255,255,255,.8),
    0 0 0 6px var(--chip-accent),
    var(--chip-shadow-hover);
}

/* Mobile – trochę ciaśniej */
@media (max-width:480px){
  .vis-exh-header{ --chip-ico-gap:6px; }
}

/* Redukcja animacji */
@media (prefers-reduced-motion: reduce){
  .vis-exh-dates,
  .vis-exh-place{
    transition:none !important;
    transform:none !important;
  }
}


/* ============================
   ZESPÓŁ PROJEKTU – panel + lista + badge
   ============================ */
.vis-exh-team{
  position: relative;
  padding: 18px 20px;
  border-radius: 18px;
  margin: 8px 0 28px;
  isolation: isolate;
}
.vis-exh-team::before{
  content:"";
  position:absolute; inset:0; border-radius:inherit;
  background: rgba(255,255,255,.48);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
          backdrop-filter: blur(8px) saturate(1.05);
  box-shadow: 0 10px 30px rgba(0,0,0,.10), 0 2px 6px rgba(0,0,0,.05);
  z-index:0;
}
.vis-exh-team::after{
  content:"";
  position:absolute; inset:0; border-radius:inherit; pointer-events:none; z-index:0;
  box-shadow: inset 2px 2px 0 rgba(255,255,255,.55), inset -2px -2px 0 rgba(0,0,0,.04);
}

.vis-team{
  list-style:none; margin: 0; padding: 0;
  columns: 2; column-gap: 24px;
  position: relative; z-index:1;
}
@media (max-width: 768px){ .vis-team{ columns: 1; } }

.vis-team-item{
  break-inside: avoid; margin: 6px 0; display: flex; align-items: center; gap: 10px;
}

/* badge roli */
.vis-badge{
  display:inline-flex; align-items:center; justify-content:center;
  padding: 6px 10px; border-radius: 999px; font-size: .85rem; font-weight: 700;
  background: color-mix(in srgb, var(--e-global-color-primary, #fa003f) 12%, rgba(255,255,255,.7));
  color: #111;
  border: 1px solid rgba(0,0,0,.06);
  -webkit-backdrop-filter: blur(6px) saturate(1.05);
          backdrop-filter: blur(6px) saturate(1.05);
  white-space: nowrap;
}

/* warianty wg ról (opcjonalnie dopisuj kolejne) */
.vis-badge[data-role="kurator"]{
  background: color-mix(in srgb, var(--e-global-color-accent, #111) 10%, rgba(255,255,255,.75));
}
.vis-badge[data-role="organizacja"]{
  background: color-mix(in srgb, #0ea5e9 16%, rgba(255,255,255,.75));
}
.vis-badge[data-role="projekt-plakatu"],
.vis-badge[data-role="projekt_plakatu"],
.vis-badge[data-role="opracowanie-graficzne"],
.vis-badge[data-role="opracowanie_graficzne"]{
  background: color-mix(in srgb, #a78bfa 18%, rgba(255,255,255,.75));
}
.vis-badge[data-role="koordynacja"]{
  background: color-mix(in srgb, #34d399 18%, rgba(255,255,255,.75));
}
.vis-badge[data-role="produkcja"],
.vis-badge[data-role="postprodukcja"]{
  background: color-mix(in srgb, #f59e0b 20%, rgba(255,255,255,.75));
}

/* link osoby */
.vis-person a{ color: inherit; text-decoration: underline; text-decoration-color: rgba(0,0,0,.25); }
.vis-person a:hover{ text-decoration-color: currentColor; }

/* reveal spójny z resztą */
.vis-exh-team.vis-reveal{
  opacity: 0; transform: translateY(10px) scale(0.995); filter: blur(2px);
  transition: opacity .6s var(--vis-ease-soft), transform .6s var(--vis-ease-soft), filter .6s var(--vis-ease-soft);
}
.vis-exh-team.vis-reveal.is-visible{ opacity:1; transform:none; filter:none; }

/* === Elementor: pokaż wszystko w edytorze (bez animacji) === */
.elementor-editor-active .vis-reveal,
.elementor-editor-active .vis-exh-header .vis-exh-title,
.elementor-editor-active .vis-exh-header .vis-exh-dates,
.elementor-editor-active .vis-exh-header .vis-exh-place,
.elementor-editor-active .vis-exh-desc {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  transition: none !important;
}

.elementor-editor-active .vis-exh-gallery .vis-item {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

/* ============================
   ZESPÓŁ PROJEKTU — 3 wiersze
   (rola u góry, nazwisko, link)
   + kolumny z kreskowaniem jak u artystów
   ============================ */

/* 1) identyczny system kolumn jak w liście artystów */
.vis-exh-team .vis-list{
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  columns: 3;                 /* desktop */
  column-gap: 28px;
  column-rule: 1px dashed rgba(0,0,0,.12);
}
@media (max-width: 1024px){ .vis-exh-team .vis-list{ columns:2; } }
@media (max-width: 640px){  .vis-exh-team .vis-list{ columns:1; column-rule: none; } }

.vis-exh-team .vis-list li{
  break-inside: avoid;
  margin: 0 0 14px;
}

/* 2) pionowe ułożenie elementów w obrębie jednej pozycji */
.vis-exh-team .vis-chip{
  display: block;            /* jeden „kafelek” w li */
}

.vis-exh-team .vis-chip-role{
  /* liquid-glass badge (jak wcześniej) */
  --badge-bg: rgba(255,255,255,.45);
  --badge-blur: 10px;
  --badge-border: 1px solid rgba(255,255,255,.35);
  --badge-shadow: 0 6px 18px rgba(0,0,0,.10), inset 0 1px 0 rgba(255,255,255,.45);
  --badge-accent: color-mix(in srgb, var(--e-global-color-primary, #fa003f) 26%, transparent);

  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 14px;
  line-height: 1.1;
  font-size: .85em;
  font-weight: 600;
  color: #111;
  background: var(--badge-bg);
  border: var(--badge-border);
  box-shadow: var(--badge-shadow);
  backdrop-filter: blur(var(--badge-blur)) saturate(1.05);
  -webkit-backdrop-filter: blur(var(--badge-blur)) saturate(1.05);
  position: relative;
  margin-bottom: 6px;        /* odstęp nad nazwiskiem */
}

.vis-exh-team .vis-chip-role::after{
  content:"";
  position:absolute; inset:-3px;
  border-radius:inherit;
  pointer-events:none;
  box-shadow:0 0 0 6px var(--badge-accent);
  filter: blur(8px);
  opacity:.35;
}

/* 3) nazwisko w osobnej linii */
.vis-exh-team .vis-chip-name{
  display:block;
  font-weight:600;
  color:#111;
  margin: 0 0 4px;
}

/* 4) link pod nazwiskiem */
.vis-exh-team .vis-chip a{
  display:block;
  font-size:.92em;
  color:#555;
  text-decoration:none;
  opacity:.8;
}
.vis-exh-team .vis-chip a:hover{ opacity:1; text-decoration:underline; }

/* 5) warianty kolorów badge wg roli (opcjonalnie) */
.vis-role-kurator   .vis-chip-role{ --badge-accent: color-mix(in srgb, #fa003f 26%, transparent); }
.vis-role-organizacja .vis-chip-role{ --badge-accent: color-mix(in srgb, #0077ff 26%, transparent); }
.vis-role-projekt-plakatu .vis-chip-role{ --badge-accent: color-mix(in srgb, #ffaa00 26%, transparent); }
.vis-role-inne      .vis-chip-role{ --badge-accent: color-mix(in srgb, #999 26%, transparent); }

/* 6) redukcja ruchu */
@media (prefers-reduced-motion: reduce){
  .vis-exh-team .vis-chip-role,
  .vis-exh-team .vis-chip-role::after{ transition:none !important; }
}

/* ============================
   PARTNERZY – layout jak artyści/zespół
   ============================ */

/* panel „glass” spójny z innymi sekcjami */
.vis-exh-partners{
  position: relative;
  padding: 18px 20px;
  border-radius: 18px;
  margin: 8px 0 28px;
  isolation: isolate;
}
.vis-exh-partners::before{
  content:"";
  position:absolute; inset:0; border-radius:inherit;
  background: rgba(255,255,255,.48);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
          backdrop-filter: blur(8px) saturate(1.05);
  box-shadow: 0 10px 30px rgba(0,0,0,.10), 0 2px 6px rgba(0,0,0,.05);
  z-index:0;
}
.vis-exh-partners::after{
  content:"";
  position:absolute; inset:0; border-radius:inherit; pointer-events:none; z-index:0;
  box-shadow: inset 2px 2px 0 rgba(255,255,255,.55), inset -2px -2px 0 rgba(0,0,0,.04);
}

/* lista jak u artystów – kolumny + „rule” */
.vis-partners{
  position: relative; z-index:1;
  list-style:none; padding:0; margin:8px 0 0;
  columns:3; column-gap:28px;
  column-rule: 1px dotted var(--e-global-color-accent, #FA003F);
}
@media (max-width:1024px){ .vis-partners{ columns:2; } }
@media (max-width:640px){  .vis-partners{ columns:1; column-rule:none; } }

.vis-partners li{
  break-inside:avoid;
  margin:0 0 14px;
  display:block;
}

/* „badge” z logo nad nazwą */
.vis-partner-badge{
  display:inline-flex;
  align-items:center; justify-content:center;
  min-width:52px; min-height:52px;
  padding:8px;
  border-radius:14px;
  margin:0 0 6px;
  background: rgba(255,255,255,.55);
  border: 1px solid rgba(255,255,255,.35);
  box-shadow: 0 6px 18px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.45);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
          backdrop-filter: blur(8px) saturate(1.05);
}

.vis-partner-badge img{
  max-height:34px; max-width:120px; width:auto; height:auto;
  filter: grayscale(100%);
  opacity:.95;
  transition: filter .2s ease, opacity .2s ease, transform .2s ease;
}
.vis-partners a:hover .vis-partner-badge img{ filter:none; opacity:1; transform: translateY(-1px); }

/* fallback inicjałów, gdy brak logo */
.vis-logo-fallback{
  display:inline-flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:50%;
  background: #f0f0f0; color:#444; font-weight:700;
}

/* nazwa pod badge */
.vis-partner-name{ display:block; font-weight:600; color:#111; }
.vis-partner-name a{ color:inherit; text-decoration: none; border-bottom: 1px dotted rgba(0,0,0,.3); }
.vis-partner-name a:hover{ border-bottom-color: currentColor; }

/* --- stary grid logotypów zostawiamy (back-compat) --- */
.vis-logos { display:flex; flex-wrap:wrap; gap:16px; align-items:center; position:relative; z-index:1; }
.vis-logo  { display:inline-flex; align-items:center; justify-content:center; padding:10px 14px; background:#f7f7f7; border-radius:12px; box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.vis-logo img { max-height:40px; width:auto; filter:grayscale(100%); opacity:.9; transition:filter .2s ease, transform .2s ease, opacity .2s ease; }
.vis-logo:hover img { filter:none; transform:translateY(-1px); opacity:1; }

