/* Reveal */
.reveal{
  opacity:0;transform:translateY(28px);
  transition:opacity .8s ease, transform .8s cubic-bezier(.2,.8,.2,1);
}
.reveal.visible{opacity:1;transform:translateY(0)}

/* Hero entrance stagger */
.hero .reveal:nth-child(1){transition-delay:.1s}
.hero .reveal:nth-child(2){transition-delay:.25s}
.hero .reveal:nth-child(3){transition-delay:.4s}
.hero .reveal:nth-child(4){transition-delay:.55s}
.hero .reveal:nth-child(5){transition-delay:.7s}

/* Fade in */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.fade-in{animation:fadeIn .6s ease both}

/* Pulse glow */
@keyframes pulseGlow{
  0%,100%{box-shadow:0 0 20px rgba(255,138,0,.4)}
  50%{box-shadow:0 0 40px rgba(255,138,0,.7)}
}
.pulse{animation:pulseGlow 2.4s ease-in-out infinite}

/* Loading spinner */
.loader{
  width:42px;height:42px;border-radius:50%;
  border:3px solid var(--border);border-top-color:var(--accent);
  animation:spin .9s linear infinite;margin:40px auto;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* Counter glitch hint */
@keyframes flicker{
  0%,100%{opacity:1}
  50%{opacity:.85}
}
.hero-stats strong{animation:flicker 4s infinite}
