@keyframes scanline {
  0% {
    opacity: 0;
    transform: translateY(-100%);
  }

  10%,
  90% {
    opacity: 1;
  }

  100% {
    opacity: 0;
    transform: translateY(100%);
  }
}

@keyframes pulseGlow {
  0%,
  100% {
    filter: drop-shadow(0 0 6px var(--glow-cyan));
  }

  50% {
    filter: drop-shadow(0 0 18px var(--glow-cyan));
  }
}

@keyframes pricePulseGlow {
  0%,
  100% {
    filter:
      drop-shadow(0 0 12px var(--glow-cyan))
      drop-shadow(0 0 26px var(--glow-magenta))
      drop-shadow(0 0 42px var(--glow-cyan))
      drop-shadow(0 0 60px var(--glow-gold));
  }

  50% {
    filter:
      drop-shadow(0 0 18px var(--glow-cyan))
      drop-shadow(0 0 34px var(--glow-magenta))
      drop-shadow(0 0 60px var(--glow-cyan))
      drop-shadow(0 0 86px var(--glow-gold));
  }
}

@keyframes holoShift {
  0% {
    background-position: 0% 50%;
  }

  100% {
    background-position: 200% 50%;
  }
}

@keyframes floatUp {
  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-8px);
  }
}

@keyframes sideStatusPulse {
  0%,
  100% {
    opacity: 0.48;
    filter: drop-shadow(0 0 4px var(--glow-cyan));
  }

  50% {
    opacity: 0.72;
    filter: drop-shadow(0 0 12px var(--glow-cyan));
  }
}

@keyframes ringPulse {
  0%,
  100% {
    opacity: 0.22;
    transform: translate(-50%, -50%) scale(0.96);
  }

  50% {
    opacity: 0.72;
    transform: translate(-50%, -50%) scale(1.05);
  }
}

@keyframes ctaAuraPulse {
  0%,
  100% {
    opacity: 0.3;
    transform: scale(0.96);
  }

  50% {
    opacity: 0.68;
    transform: scale(1.06);
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    scroll-behavior: auto !important;
    transition: none !important;
  }
}
