.siec path {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.siec-promien,
.siec-rama {
  stroke: rgba(226, 231, 243, 0.42);
  stroke-width: var(--nic-promien, 0.65px);
}
.siec-krag,
.siec-spirala {
  stroke: rgba(226, 231, 243, 0.3);
  stroke-width: var(--nic-krag, 0.5px);
}
.siec-zwis {
  stroke: rgba(226, 231, 243, 0.26);
  stroke-width: var(--nic-krag, 0.5px);
}
.siec-rosa { fill: #fff; opacity: 0.8; }
.siec.rosnie path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: siec-rosnie 0.9s cubic-bezier(0.45, 0.05, 0.25, 1) var(--opoznienie, 0s) forwards;
}
.siec.rosnie .siec-krag,
.siec.rosnie .siec-zwis { animation-duration: 0.6s; }
.siec.rosnie .siec-spirala { animation-duration: 2.8s; animation-timing-function: cubic-bezier(0.3, 0.1, 0.4, 1); }
.siec.rosnie .siec-rosa { animation: siec-rosa 0.6s ease-out calc(var(--zwloka, 0s) * 0.3 + 3.4s) backwards; }
@keyframes siec-rosa {
  from { opacity: 0; }
}
@keyframes siec-rosnie {
  to { stroke-dashoffset: 0; }
}

.halloween-scena,
.halloween-swiatla,
.halloween-gora {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.8s ease;
}
.halloween-scena { z-index: 95; }
.halloween-gora { z-index: 105; }
.halloween-swiatla { z-index: 94; }
.halloween-scena.jest,
.halloween-swiatla.jest,
.halloween-gora.jest { opacity: 1; }
.halloween-scena.znika,
.halloween-swiatla.znika,
.halloween-gora.znika { opacity: 0; transition: opacity 1.2s ease 0.2s; }

.halloween-siec { position: absolute; top: 0; line-height: 0; }
.halloween-siec.lewa { left: 0; }
.halloween-siec.prawa { right: 0; transform: scaleX(-1); }
.halloween-siec svg {
  display: block;
  overflow: visible;
  transform-origin: 0 0;
  will-change: transform;
  animation: siec-oddech 7.5s ease-in-out infinite alternate;
}
.halloween-siec.prawa svg { animation-duration: 9s; animation-delay: -3s; }
@keyframes siec-oddech {
  from { transform: scale(1, 1); }
  to { transform: scale(1.012, 1.028); }
}

.halloween-dynie { position: absolute; left: 0; right: 0; bottom: 0; height: 0; }
.dynia {
  position: absolute;
  bottom: 0;
  transform: translate3d(0, 115%, 0) rotate(var(--obrot, 0deg));
  transition: transform 1.15s cubic-bezier(0.34, 1.3, 0.64, 1) var(--wejscie, 0s);
}
.halloween-scena.jest .dynia { transform: translate3d(0, var(--wychyl, 36%), 0) rotate(var(--obrot, 0deg)); }
.halloween-scena.znika .dynia {
  transform: translate3d(0, 115%, 0) rotate(var(--obrot, 0deg));
  transition: transform 1s cubic-bezier(0.5, 0, 0.75, 0);
}
.dynia img { display: block; width: 100%; height: auto; }
.dynia-twarz { position: absolute; inset: 0; will-change: opacity; }
.dynia-twarz,
.dynia-blask { opacity: 0; }
.dynia.zapalona .dynia-twarz,
.dynia-blask.zapalona {
  animation: dynia-zaplon 0.9s ease-out forwards, dynia-migot var(--migot, 3s) linear 0.9s infinite;
}
.dynia-blask {
  position: absolute;
  transform: translateX(-50%);
  will-change: opacity;
  background: radial-gradient(ellipse 50% 50% at 50% 72%, rgba(255, 160, 52, 0.2), rgba(255, 122, 24, 0.08) 46%, rgba(255, 110, 20, 0) 74%);
}
.halloween-scena.burza .dynia.zapalona .dynia-twarz,
.halloween-swiatla.burza .dynia-blask.zapalona {
  animation: dynia-zaplon 0.9s ease-out forwards, dynia-burza calc(var(--migot, 3s) * 0.55) steps(1, end) 0.9s infinite;
}
@keyframes dynia-zaplon {
  0% { opacity: 0; }
  14% { opacity: 0.75; }
  24% { opacity: 0.12; }
  40% { opacity: 0.88; }
  55% { opacity: 0.38; }
  100% { opacity: 1; }
}
@keyframes dynia-migot {
  0%, 100% { opacity: 1; }
  13% { opacity: 0.84; }
  21% { opacity: 0.97; }
  34% { opacity: 0.78; }
  47% { opacity: 1; }
  62% { opacity: 0.88; }
  78% { opacity: 0.98; }
  88% { opacity: 0.82; }
}
@keyframes dynia-burza {
  0%, 100% { opacity: 1; }
  9% { opacity: 0.55; }
  15% { opacity: 0.95; }
  31% { opacity: 0.42; }
  38% { opacity: 1; }
  57% { opacity: 0.66; }
  64% { opacity: 0.9; }
  81% { opacity: 0.5; }
  88% { opacity: 1; }
}

.halloween-mgla {
  position: absolute;
  bottom: 0;
  height: min(12vh, 120px);
  opacity: 0;
  transition: opacity 2s ease 0.4s;
}
.halloween-mgla.lewa { left: 0; }
.halloween-mgla.prawa { right: 0; transform: scaleX(-1); }
.halloween-scena.jest .halloween-mgla { opacity: 1; }
.halloween-mgla i {
  position: absolute;
  bottom: -35%;
  width: 72%;
  height: 130%;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(208, 214, 232, 0.3), rgba(208, 214, 232, 0.11) 55%, rgba(208, 214, 232, 0));
  animation: halloween-mgla 15s ease-in-out infinite alternate;
}
.halloween-mgla i:nth-child(1) { left: -12%; }
.halloween-mgla i:nth-child(2) { left: 22%; height: 100%; animation-duration: 19s; animation-delay: -7s; }
.halloween-mgla i:nth-child(3) { left: 48%; animation-duration: 23s; animation-delay: -12s; }
@keyframes halloween-mgla {
  from { transform: translate3d(-8%, 0, 0) scale(1, 1); }
  to { transform: translate3d(11%, -6%, 0) scale(1.14, 1.06); }
}

.pajak-zjazd { position: absolute; top: 0; width: 0; height: 0; }
.pajak-wahadlo {
  position: absolute;
  top: 0;
  left: 0;
  transform-origin: 0 0;
  will-change: transform;
  animation: pajak-kolys var(--kolys, 3.4s) ease-in-out infinite alternate;
}
@keyframes pajak-kolys {
  from { transform: rotate(-3.5deg); }
  to { transform: rotate(3.5deg); }
}
.pajak-nitka {
  position: absolute;
  top: 0;
  left: -0.5px;
  width: 1px;
  transform: scaleY(0);
  transform-origin: 50% 0;
  background: linear-gradient(rgba(230, 235, 245, 0.18), rgba(230, 235, 245, 0.62));
}
.pajak-ciala {
  position: absolute;
  top: calc(-3.4px * var(--skala, 1));
  left: 0;
  width: calc(44px * var(--skala, 1));
  will-change: transform;
}
.pajak-ciala img { display: block; width: 100%; height: auto; }
.pajak-ciala .pajak-poza {
  position: absolute;
  inset: 0;
  will-change: opacity;
  animation: pajak-poza 0.42s ease-in-out infinite alternate;
}
@keyframes pajak-poza {
  from { opacity: 0; }
  to { opacity: 1; }
}

.duch { position: absolute; left: 0; }
.duch.prawa { left: auto; right: 0; }
.duch.prawa .duch-lustro { transform: scaleX(-1); }
.duch-cialo { position: relative; transform: translate3d(-108%, 0, 0); will-change: transform, opacity; }
.duch-obraz { display: block; width: 100%; height: auto; }
.duch-oczy { position: absolute; inset: 0; width: 100%; height: auto; will-change: transform; }

.halloween-blysk {
  position: fixed;
  inset: 0;
  z-index: 106;
  pointer-events: none;
  background: #e6edff;
  opacity: 0;
  will-change: opacity;
}

.nietoperze {
  position: fixed;
  inset: 0;
  z-index: 996;
  overflow: hidden;
  pointer-events: none;
}
.nietoperz { position: absolute; top: 0; left: 0; transform-origin: 0 0; will-change: transform; }
.nietoperz img { display: block; width: 100%; height: auto; }
.nietoperz img + img { position: absolute; inset: 0; }
.nietoperz-gora,
.nietoperz-srodek,
.nietoperz-dol {
  will-change: opacity;
  animation: nietoperz-gora calc(var(--lopot, 0.2s) * 2) steps(1, end) infinite;
}
.nietoperz-srodek { animation-name: nietoperz-srodek; }
.nietoperz-dol { animation-name: nietoperz-dol; }
@keyframes nietoperz-gora {
  0% { opacity: 1; }
  25%, 100% { opacity: 0; }
}
@keyframes nietoperz-srodek {
  0% { opacity: 0; }
  25% { opacity: 1; }
  50% { opacity: 0; }
  75%, 100% { opacity: 1; }
}
@keyframes nietoperz-dol {
  0%, 25% { opacity: 0; }
  50% { opacity: 1; }
  75%, 100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .siec.rosnie path { animation: none; stroke-dashoffset: 0; }
  .halloween-siec svg,
  .halloween-mgla i,
  .pajak-wahadlo,
  .pajak-ciala .pajak-poza,
  .siec.rosnie .siec-rosa { animation: none; }
  .dynia,
  .halloween-scena.znika .dynia { transition: none; }
  .dynia.zapalona .dynia-twarz,
  .dynia-blask.zapalona,
  .halloween-scena.burza .dynia.zapalona .dynia-twarz,
  .halloween-swiatla.burza .dynia-blask.zapalona {
    animation: none;
    opacity: 1;
  }
  .nietoperze { display: none; }
}
