/* === Scroll Reveal Base === */
.scroll-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.scroll-reveal.revealed {
  opacity: 1;
  transform: translateY(0);
}

/* === Reduced Motion === */
.reduced-motion .scroll-reveal {
  opacity: 1;
  transform: none;
  transition: none;
}

.reduced-motion .glitch-text {
  animation: none !important;
}

.reduced-motion .boot-overlay {
  display: none !important;
}

.reduced-motion .bg-smoke,
.reduced-motion .bg-grid-lines,
.reduced-motion .bg-scanline::after,
.reduced-motion .ambient-orb,
.reduced-motion .ambient-diamond,
.reduced-motion .hero-crown-watermark,
.reduced-motion .pulse-glow,
.reduced-motion .form-card-border-anim::before {
  animation: none !important;
}

/* === Glitch Keyframes === */
@keyframes glitch-skew {
  0% { transform: skew(0deg); }
  20% { transform: skew(-2deg); }
  40% { transform: skew(1deg); }
  60% { transform: skew(-1deg); }
  80% { transform: skew(2deg); }
  100% { transform: skew(0deg); }
}

@keyframes glitch-clip {
  0% { clip-path: inset(0 0 90% 0); }
  10% { clip-path: inset(80% 0 0 0); }
  20% { clip-path: inset(20% 0 60% 0); }
  30% { clip-path: inset(50% 0 30% 0); }
  40% { clip-path: inset(10% 0 70% 0); }
  50% { clip-path: inset(60% 0 10% 0); }
  60% { clip-path: inset(30% 0 40% 0); }
  70% { clip-path: inset(70% 0 5% 0); }
  80% { clip-path: inset(5% 0 80% 0); }
  90% { clip-path: inset(40% 0 20% 0); }
  100% { clip-path: inset(0 0 90% 0); }
}

/* === Neon Pulse === */
@keyframes neon-pulse {
  0%, 100% { text-shadow: 0 0 5px rgba(0,255,65,0.5), 0 0 10px rgba(0,255,65,0.3); }
  50% { text-shadow: 0 0 15px rgba(0,255,65,0.8), 0 0 30px rgba(0,255,65,0.5), 0 0 50px rgba(0,255,65,0.2); }
}

@keyframes glow-pulse {
  0%, 100% { box-shadow: 0 0 5px rgba(0,255,65,0.2); }
  50% { box-shadow: 0 0 20px rgba(0,255,65,0.5), 0 0 40px rgba(0,255,65,0.2); }
}

/* === Typewriter === */
@keyframes typewriter {
  from { width: 0; }
  to { width: 100%; }
}

@keyframes blink-cursor {
  0%, 100% { border-right-color: var(--neon-green); }
  50% { border-right-color: transparent; }
}

/* === Boot Progress Bar === */
@keyframes boot-progress {
  0% { width: 0%; }
  100% { width: 100%; }
}

/* === Fade Variants === */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

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

@keyframes fadeInLeft {
  from { opacity: 0; transform: translateX(-20px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes fadeInRight {
  from { opacity: 0; transform: translateX(20px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes scaleUp {
  from { opacity: 0; transform: scale(0.9); }
  to { opacity: 1; transform: scale(1); }
}

/* === Float Animation === */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}

/* === Scan Line === */
@keyframes scanline {
  0% { top: -10%; }
  100% { top: 110%; }
}

/* === Border Trace === */
@keyframes border-trace {
  0% { background-position: 0% 0%; }
  100% { background-position: 300% 0%; }
}
