/* ==============================================================
 * NK Animacje
 * Ruch: osobne właściwości translate / scale / rotate (nie transform),
 * więc animacje nie nadpisują istniejącego pozycjonowania elementów.
 * ============================================================== */

:root {
  --nk-dur: 800ms;
  --nk-delay: 0ms;
  --nk-step: 120ms;
  --nk-dist: 40px;
  --nk-ease: cubic-bezier(.22, 1, .36, 1);
  --nk-ldur: 2.5s;
  --nk-lamp: 1;
  --nk-lstep: 200ms;
  --nk-glow: #ffa500;
}

/* Zanim skrypt przygotuje elementy – nie pokazuj ich (brak "mignięcia") */
html.nk-js body:not(.elementor-editor-active) .elementor-element[class*="nk-in-"]:not(.nk-armed):not(.nk-section) {
  opacity: 0;
}

/* Element czeka na swoją kolej */
.nk-pend {
  opacity: 0 !important;
  transition: none !important;
}

/* Element w trakcie wejścia */
.nk-play {
  animation: var(--nk-a) var(--nk-dur) var(--nk-ease) calc(var(--nk-delay) + var(--nk-i, 0) * var(--nk-step)) both !important;
  transition: none !important;
}

/* ---------- Wejścia ---------- */
@keyframes nk-in-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes nk-in-fade-up { from { opacity: 0; translate: 0 var(--nk-dist); } to { opacity: 1; translate: 0 0; } }
@keyframes nk-in-fade-down { from { opacity: 0; translate: 0 calc(-1 * var(--nk-dist)); } to { opacity: 1; translate: 0 0; } }
@keyframes nk-in-fade-left { from { opacity: 0; translate: var(--nk-dist) 0; } to { opacity: 1; translate: 0 0; } }
@keyframes nk-in-fade-right { from { opacity: 0; translate: calc(-1 * var(--nk-dist)) 0; } to { opacity: 1; translate: 0 0; } }
@keyframes nk-in-zoom-in { from { opacity: 0; scale: .8; } to { opacity: 1; scale: 1; } }
@keyframes nk-in-zoom-out { from { opacity: 0; scale: 1.2; } to { opacity: 1; scale: 1; } }
@keyframes nk-in-blur-in { from { opacity: 0; filter: blur(14px); scale: 1.04; } to { opacity: 1; filter: blur(0); scale: 1; } }
@keyframes nk-in-rotate-in { from { opacity: 0; rotate: -14deg; scale: .9; } to { opacity: 1; rotate: 0deg; scale: 1; } }
@keyframes nk-in-flip-up { from { opacity: 0; transform: perspective(900px) rotateX(75deg); } to { opacity: 1; transform: perspective(900px) rotateX(0); } }
@keyframes nk-in-flip-left { from { opacity: 0; transform: perspective(900px) rotateY(-75deg); } to { opacity: 1; transform: perspective(900px) rotateY(0); } }
@keyframes nk-in-bounce-in {
  0% { opacity: 0; scale: .3; }
  55% { opacity: 1; scale: 1.08; }
  75% { scale: .96; }
  100% { opacity: 1; scale: 1; }
}
@keyframes nk-in-slide-up {
  from { opacity: 0; clip-path: inset(100% 0 0 0); translate: 0 calc(var(--nk-dist) / 2); }
  to { opacity: 1; clip-path: inset(0 0 0 0); translate: 0 0; }
}

/* ---------- Animacje stałe ---------- */
.nk-lp {
  animation: var(--nk-la) var(--nk-ldur) var(--nk-lfn, ease-in-out) calc(var(--nk-li, 0) * var(--nk-lstep)) infinite;
}
.nk-lh-pause:hover .nk-lp,
.nk-lh-pause.nk-lp:hover {
  animation-play-state: paused;
}
.nk-lh-only .nk-lp,
.nk-lh-only.nk-lp {
  animation-name: none;
}
.nk-lh-only:hover .nk-lp,
.nk-lh-only.nk-lp:hover {
  animation-name: var(--nk-la);
}

@keyframes nk-l-pulse { 0%, 100% { scale: 1; } 50% { scale: calc(1 + .07 * var(--nk-lamp)); } }
@keyframes nk-l-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 calc(-7px * var(--nk-lamp)); } }
@keyframes nk-l-bounce {
  0%, 20%, 53%, 100% { translate: 0 0; }
  40% { translate: 0 calc(-14px * var(--nk-lamp)); }
  70% { translate: 0 calc(-6px * var(--nk-lamp)); }
  90% { translate: 0 calc(-2px * var(--nk-lamp)); }
}
@keyframes nk-l-heartbeat {
  0%, 28%, 70%, 100% { scale: 1; }
  14%, 42% { scale: calc(1 + .12 * var(--nk-lamp)); }
}
@keyframes nk-l-glow {
  0%, 100% { filter: drop-shadow(0 0 0 transparent); }
  50% { filter: drop-shadow(0 0 calc(10px * var(--nk-lamp)) var(--nk-glow)); }
}
@keyframes nk-l-shine {
  0%, 70%, 100% { filter: brightness(1); }
  80% { filter: brightness(calc(1 + .6 * var(--nk-lamp))); }
}
@keyframes nk-l-blink { 0%, 100% { opacity: 1; } 50% { opacity: calc(1 - .65 * min(var(--nk-lamp), 1.4)); } }
@keyframes nk-l-wobble {
  0%, 100% { rotate: 0deg; }
  25% { rotate: calc(4deg * var(--nk-lamp)); }
  75% { rotate: calc(-4deg * var(--nk-lamp)); }
}
@keyframes nk-l-swing {
  0%, 100% { rotate: 0deg; }
  20% { rotate: calc(12deg * var(--nk-lamp)); }
  40% { rotate: calc(-8deg * var(--nk-lamp)); }
  60% { rotate: calc(4deg * var(--nk-lamp)); }
  80% { rotate: calc(-2deg * var(--nk-lamp)); }
}
@keyframes nk-l-shake {
  0%, 50%, 100% { translate: 0 0; }
  10%, 30% { translate: calc(-4px * var(--nk-lamp)) 0; }
  20%, 40% { translate: calc(4px * var(--nk-lamp)) 0; }
}
@keyframes nk-l-tada {
  0%, 40%, 100% { scale: 1; rotate: 0deg; }
  5%, 10% { scale: .92; rotate: calc(-3deg * var(--nk-lamp)); }
  15%, 25%, 35% { scale: 1.08; rotate: calc(3deg * var(--nk-lamp)); }
  20%, 30% { scale: 1.08; rotate: calc(-3deg * var(--nk-lamp)); }
}
@keyframes nk-l-spin { from { rotate: 0deg; } to { rotate: 360deg; } }

.nk-lp.nk-lp-swing {
  transform-origin: top center;
}

/* Ograniczenie ruchu (tylko gdy włączone w ustawieniach) */
html.nk-rm .nk-pend { opacity: 1 !important; }
html.nk-rm .nk-play,
html.nk-rm .nk-lp { animation: none !important; }

/* Okienko godzin i baner cookies – wjeżdżają dopiero po intro */
html.nk-intro-on #opening-hours-popup,
html.nk-intro-on #cb-cookie-banner,
html.nk-intro-on #nk-cc-open {
  opacity: 0 !important;
}
html.nk-ready #cb-cookie-banner {
  --nk-dist: 100%;
  animation: nk-in-fade-up .7s cubic-bezier(.22, 1, .36, 1) .9s both;
}

/*
 * Powrót na „Start”: belka nagłówka rozciąga się do pełnego ekranu, a jej
 * półprzezroczyste tło blednie przez 0,3 s. Gdy treść nagłówka i tak wjeżdża
 * animacją, widać wtedy tylko przesuwający się ciemny pas – więc przy
 * rozwijaniu tło i wysokość zmieniamy od razu (zwijanie do belki bez zmian).
 */
html.nk-ready .nk-in-fade.nk-rep-yes #header:not(.header-top),
html.nk-ready [class*="nk-in-"].nk-rep-yes #header:not(.header-top) {
  transition: none;
}

/*
 * Wejście ze „Start” do sekcji: nagłówek kurczy się do belki i jednocześnie
 * nabiera ciemnego tła – przez ekran przesuwał się ciemny pas. Belka przyjmuje
 * rozmiar od razu, a tło płynnie pojawia się już tylko na jej wysokości.
 */
html.nk-ready [class*="nk-in-"].nk-rep-yes #header.header-top {
  transition: background-color 0.3s ease-in-out;
}

/* Zabezpieczenie: sklonowane slajdy slidera (pętla) nigdy nie zostają niewidoczne */
.swiper-slide-duplicate .nk-pend { opacity: 1 !important; }
