/* ============================================================
   SEIFERT DYNAMICS — Animations & Scroll Reveal
   ============================================================ */

/* ── Scroll Reveal ───────────────────────────────────────── */

[data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 0.65s var(--ease-out),
    transform 0.65s var(--ease-out);
}

[data-reveal="fade"] {
  transform: none;
}

[data-reveal="left"] {
  transform: translateX(-20px);
}

[data-reveal="right"] {
  transform: translateX(20px);
}

[data-reveal].is-revealed {
  opacity: 1;
  transform: none;
}

/* Stagger children */
[data-stagger] > * {
  opacity: 0;
  transform: translateY(14px);
  transition:
    opacity 0.55s var(--ease-out),
    transform 0.55s var(--ease-out);
}

[data-stagger].is-revealed > *:nth-child(1)  { transition-delay: 0ms;   }
[data-stagger].is-revealed > *:nth-child(2)  { transition-delay: 80ms;  }
[data-stagger].is-revealed > *:nth-child(3)  { transition-delay: 160ms; }
[data-stagger].is-revealed > *:nth-child(4)  { transition-delay: 240ms; }
[data-stagger].is-revealed > *:nth-child(5)  { transition-delay: 320ms; }
[data-stagger].is-revealed > *:nth-child(6)  { transition-delay: 400ms; }
[data-stagger].is-revealed > *:nth-child(7)  { transition-delay: 480ms; }
[data-stagger].is-revealed > *:nth-child(8)  { transition-delay: 560ms; }
[data-stagger].is-revealed > *:nth-child(9)  { transition-delay: 640ms; }

[data-stagger].is-revealed > * {
  opacity: 1;
  transform: none;
}

/* ── Hero Entrance ───────────────────────────────────────── */

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

.hero-eyebrow {
  animation: heroFadeIn 0.8s var(--ease-out) 0.3s both;
}

.hero-headline {
  animation: heroFadeIn 0.9s var(--ease-out) 0.5s both;
}

.hero-descriptor {
  animation: heroFadeIn 0.9s var(--ease-out) 0.7s both;
}

.hero-cta {
  animation: heroFadeIn 0.9s var(--ease-out) 0.85s both;
}

.hero-capability-strip {
  animation: heroFadeIn 0.9s var(--ease-out) 1s both;
}

/* ── Header Logo ─────────────────────────────────────────── */

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

.hero-header {
  animation: logoReveal 0.6s var(--ease-out) 0.1s both;
}

/* ── Pulse (for status indicators) ──────────────────────── */

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.4; }
}

.pulse {
  animation: pulse 2s ease-in-out infinite;
}

/* ── Number counter effect ───────────────────────────────── */

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

/* ── Spin (search loading) ───────────────────────────────── */

@keyframes spin {
  to { transform: rotate(360deg); }
}

.spin {
  animation: spin 1s linear infinite;
}

/* ── Reduced motion ──────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-stagger] > *,
  .hero-eyebrow,
  .hero-headline,
  .hero-descriptor,
  .hero-cta,
  .hero-capability-strip,
  .hero-header {
    opacity: 1;
    transform: none;
    animation: none;
    transition: none;
  }

  .hero-scroll-line::after {
    animation: none;
  }
}
