/* css/animations.css */

/* ---- Keyframes ---- */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.3; }
}

/* ---- Scroll reveal ---- */
.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition:
    opacity  0.85s var(--ease),
    transform 0.85s var(--ease);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }

/* ---- Page load stagger for hero ---- */
.hero-tag      { animation: fadeUp 0.8s var(--ease) 0.2s both; }
.hero-headline { animation: fadeUp 1s  var(--ease) 0.4s both; }
.hero-sub      { animation: fadeUp 1s  var(--ease) 0.6s both; }
.hero-actions  { animation: fadeUp 1s  var(--ease) 0.8s both; }
.hero-stats    { animation: fadeUp 1s  var(--ease) 1.0s both; }
.hero-scroll-hint { animation: fadeUp 1s var(--ease) 1.2s both; }

/* ---- Respect prefers-reduced-motion ---- */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .hero-tag, .hero-headline, .hero-sub,
  .hero-actions, .hero-stats, .hero-scroll-hint {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  .marquee-track { animation: none; }
  .hero-bg-glow  { animation: none; }
  .scroll-line   { animation: none; }
  .badge-dot     { animation: none; }
  .tag-dot       { animation: none; }
}
