/* ── Scroll Reveal ─────────────────────────────────────── */
.sr { opacity:0; transform:translateY(32px); transition:opacity .7s cubic-bezier(.25,1,.5,1), transform .7s cubic-bezier(.25,1,.5,1); will-change:transform,opacity; }
.sr-left { opacity:0; transform:translateX(-36px); transition:opacity .7s cubic-bezier(.25,1,.5,1), transform .7s cubic-bezier(.25,1,.5,1); will-change:transform,opacity; }
.sr-right { opacity:0; transform:translateX(36px); transition:opacity .7s cubic-bezier(.25,1,.5,1), transform .7s cubic-bezier(.25,1,.5,1); will-change:transform,opacity; }
.sr.on, .sr-left.on, .sr-right.on { opacity:1; transform:none; }
.d1 { transition-delay:.08s; } .d2 { transition-delay:.16s; } .d3 { transition-delay:.24s; } .d4 { transition-delay:.32s; } .d5 { transition-delay:.4s; }

/* ── Pulse CTA ──────────────────────────────────────────── */
@keyframes pulse {
  0%,100% { box-shadow:0 4px 20px rgba(255,20,147,.3); }
  50%      { box-shadow:0 4px 36px rgba(255,20,147,.65), 0 0 0 8px rgba(255,20,147,.08); }
}
.pulse { animation:pulse 2.2s ease-in-out infinite; }

/* ── Floating objects hero ──────────────────────────────── */
@keyframes float-a { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-18px) rotate(4deg)} }
@keyframes float-b { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-12px) rotate(-3deg)} }
@keyframes float-c { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-22px) rotate(5deg)} }
@keyframes float-d { 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-14px) rotate(-4deg)} }
.float-a { animation:float-a 5s ease-in-out infinite; }
.float-b { animation:float-b 6.5s ease-in-out infinite .8s; }
.float-c { animation:float-c 4.8s ease-in-out infinite 1.2s; }
.float-d { animation:float-d 7s ease-in-out infinite .4s; }

/* ── Glow flicker ───────────────────────────────────────── */
@keyframes glow { 0%,100%{opacity:.5} 50%{opacity:1} }
.glow-loop { animation:glow 3.5s ease-in-out infinite; }

/* ── Page fade in ───────────────────────────────────────── */
@keyframes pagein { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none} }
.pagein { animation:pagein .5s cubic-bezier(.25,1,.5,1) both; }

/* ── Marquee ────────────────────────────────────────────── */
@keyframes marquee { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
.marquee-track { animation:marquee 22s linear infinite; }

/* ── Noise overlay ──────────────────────────────────────── */
.noise {
  position:absolute; inset:0; z-index:0; pointer-events:none;
  opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px;
}

/* ── Page transition overlay ────────────────────────────── */
.page-transition {
  position:fixed; inset:0; z-index:9999; pointer-events:none !important;
  background:#0a0a0a;
  display:flex; align-items:center; justify-content:center;
  opacity:0; transform:scaleY(0); transform-origin:bottom;
}
.page-transition.active {
  opacity:1; transform:scaleY(1);
  transition:transform .5s cubic-bezier(.76,0,.24,1), opacity .1s linear;
}
.page-transition.leaving {
  transform-origin:top;
  transform:scaleY(0);
  transition:transform .5s cubic-bezier(.76,0,.24,1) .05s, opacity .1s linear .5s;
}
.page-transition__mark {
  font-size:15px; font-weight:800; letter-spacing:.15em; text-transform:uppercase;
  color:var(--c-pink); opacity:0; transition:opacity .25s ease .15s;
}
.page-transition.active .page-transition__mark { opacity:1; }

/* ── Gallery filter transitions ─────────────────────────── */
.gallery-item { transition:opacity .35s ease, transform .35s ease; opacity:1; transform:scale(1); }
.gallery-item--hidden { opacity:0; transform:scale(.92); pointer-events:none; }

/* ── Reduced motion ─────────────────────────────────────── */
@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation-duration:.01ms!important; transition-duration:.01ms!important; }
  .sr,.sr-left,.sr-right { opacity:1; transform:none; }
}
