@keyframes pulseGlow {
  0%, 100% { opacity: 0.52; transform: scale(1); }
  50% { opacity: 0.9; transform: scale(1.05); }
}

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

@keyframes slideUp {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes terminalBlink {
  0%, 45% { opacity: 1; }
  46%, 100% { opacity: 0.22; }
}

@keyframes scannerSweep {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes particleFloat {
  0%, 100% { transform: translate3d(0, 0, 0); opacity: 0.28; }
  50% { transform: translate3d(14px, -22px, 0); opacity: 0.86; }
}

.is-revealed {
  animation: slideUp 460ms ease both;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}
