/* ==========================================================================
   Alphastar Media — Animations
   Keyframes + scroll-reveal utility classes.
   ========================================================================== */

@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@keyframes scroll-cue {
  0% { transform: scaleY(0); transform-origin: top; opacity: 0; }
  40% { transform: scaleY(1); transform-origin: top; opacity: 1; }
  60% { transform: scaleY(1); transform-origin: bottom; opacity: 1; }
  100% { transform: scaleY(0); transform-origin: bottom; opacity: 0; }
}

@keyframes ripple {
  to { transform: scale(3); opacity: 0; }
}

@keyframes gradient-move {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}

@keyframes float-slow {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(12px, -18px); }
}

@keyframes spin-slow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.hero-ring { animation: spin-slow 40s linear infinite; }
.hero-poly { animation: float-slow 9s var(--ease) infinite; }
.hero-poly.poly-2 { animation-duration: 7s; animation-delay: -2s; }

/* ---------------------------------------------------------------------- */
/* Reveal on scroll                                                        */
/* ---------------------------------------------------------------------- */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);
}
.reveal.in-view { opacity: 1; transform: translateY(0); }

.reveal-scale {
  opacity: 0;
  transform: scale(0.94);
  transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease);
}
.reveal-scale.in-view { opacity: 1; transform: scale(1); }

/* Stagger children */
.stagger > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--dur-med) var(--ease), transform var(--dur-med) var(--ease);
}
.stagger.in-view > * { opacity: 1; transform: translateY(0); }
.stagger.in-view > *:nth-child(1) { transition-delay: 0.02s; }
.stagger.in-view > *:nth-child(2) { transition-delay: 0.08s; }
.stagger.in-view > *:nth-child(3) { transition-delay: 0.14s; }
.stagger.in-view > *:nth-child(4) { transition-delay: 0.2s; }
.stagger.in-view > *:nth-child(5) { transition-delay: 0.26s; }
.stagger.in-view > *:nth-child(6) { transition-delay: 0.32s; }
.stagger.in-view > *:nth-child(7) { transition-delay: 0.38s; }
.stagger.in-view > *:nth-child(8) { transition-delay: 0.44s; }
.stagger.in-view > *:nth-child(9) { transition-delay: 0.5s; }
.stagger.in-view > *:nth-child(10) { transition-delay: 0.56s; }
.stagger.in-view > *:nth-child(11) { transition-delay: 0.62s; }
.stagger.in-view > *:nth-child(12) { transition-delay: 0.68s; }
.stagger.in-view > *:nth-child(13) { transition-delay: 0.74s; }
.stagger.in-view > *:nth-child(14) { transition-delay: 0.8s; }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-scale, .stagger > * { opacity: 1; transform: none; }
  .marquee-track, .hero-ring, .hero-poly { animation: none; }
}

/* Magnetic button wrapper (JS adds inline transform) */
.magnetic { transition: transform 0.25s var(--ease-out-back); }
