@keyframes fadeUp {
  from {
    opacity: 0;
    transform: translate3d(0, 36px, 0) scale(0.985);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}

@keyframes fadeLeft {
  from {
    opacity: 0;
    transform: translate3d(-48px, 0, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeRight {
  from {
    opacity: 0;
    transform: translate3d(48px, 0, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes floatSlow {
  0%,
  100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }
  50% {
    transform: translate3d(0, -14px, 0) rotate(4deg);
  }
}

@keyframes pulseOrb {
  0%,
  100% {
    transform: scale(1);
    opacity: 0.9;
  }
  50% {
    transform: scale(1.06);
    opacity: 1;
  }
}

@keyframes shimmer {
  from {
    transform: translateX(-120%);
  }
  to {
    transform: translateX(120%);
  }
}

@keyframes driftGlow {
  0%,
  100% {
    transform: translate3d(0, 0, 0) scale(1);
  }
  50% {
    transform: translate3d(18px, -16px, 0) scale(1.06);
  }
}

@keyframes floatParticle {
  0%,
  100% {
    transform: translate3d(0, 0, 0);
    opacity: 0.25;
  }
  50% {
    transform: translate3d(0, -14px, 0);
    opacity: 0.85;
  }
}

@keyframes pulseGlow {
  0%,
  100% {
    opacity: 0.4;
    filter: blur(26px);
  }
  50% {
    opacity: 0.85;
    filter: blur(32px);
  }
}

@keyframes rippleOut {
  from {
    transform: translate(-50%, -50%) scale(0.2);
    opacity: 0.9;
  }
  to {
    transform: translate(-50%, -50%) scale(16);
    opacity: 0;
  }
}

@keyframes heroImagePrimary {
  0%, 44% {
    opacity: 1;
    transform: scale(1);
  }
  48%, 94% {
    opacity: 0;
    transform: scale(1.02);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes heroImageSecondary {
  0%, 44% {
    opacity: 0;
    transform: scale(1.02);
  }
  48%, 94% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(1.02);
  }
}

.hero__content {
  animation: fadeLeft 1s ease both 0.15s;
}

.hero__visual {
  animation: fadeRight 1s ease both 0.25s;
}

.hero-shot--one,
.hero-shot--two,
.hero-shot--three {
  animation: floatSlow 8s ease-in-out infinite;
}

.hero-shot--two {
  animation-delay: 0.8s;
}

.hero-shot--three {
  animation-delay: 1.4s;
}

.hero__ambient--one,
.hero__ambient--two,
.hero__ambient--three,
.hero-art__glow--soft {
  animation: driftGlow 14s ease-in-out infinite;
}

.hero-art__glow {
  animation: pulseGlow 6s ease-in-out infinite;
}

.hero__particle {
  animation: floatParticle 6s ease-in-out infinite;
}

.hero__particle:nth-child(2) { animation-delay: 0.6s; }
.hero__particle:nth-child(3) { animation-delay: 1.2s; }
.hero__particle:nth-child(4) { animation-delay: 0.9s; }
.hero__particle:nth-child(5) { animation-delay: 1.6s; }
.hero__particle:nth-child(6) { animation-delay: 2.1s; }

.hero-art::before {
  content: '';
  position: absolute;
  inset: -20%;
  background: linear-gradient(100deg, transparent 20%, rgba(255, 255, 255, 0.12) 50%, transparent 80%);
  opacity: 0.35;
  animation: shimmer 8s linear infinite;
}

.reveal {
  opacity: 0;
  filter: blur(10px);
  transform: translate3d(0, 30px, 0) scale(0.99);
  transition: opacity 0.8s ease, transform 0.8s ease, filter 0.8s ease;
  transition-delay: var(--stagger-delay, 0ms);
}

.reveal-left {
  transform: translate3d(-36px, 0, 0);
}

.reveal-right {
  transform: translate3d(36px, 0, 0);
}

.reveal.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0, 0, 0) scale(1);
}