/* ============================================================
   Timora Website — Animations & Scroll Reveals
   ============================================================ */

/* ── Keyframes ───────────────────────────────────────────────── */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

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

@keyframes fadeInScale {
  from { opacity: 0; transform: scale(0.95); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes heroFloat {
  0%, 100% { transform: translateY(0px);   }
  50%       { transform: translateY(-12px); }
}

@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 20px rgba(34,197,94,.15); }
  50%       { box-shadow: 0 0 40px rgba(34,197,94,.30); }
}

@keyframes dotPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.6; transform: scale(0.8); }
}

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

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

/* ── Hero entrance (load-time) ───────────────────────────────── */
.hero__badge   { animation: fadeInUp .5s ease both; animation-delay: 0ms;   }
.hero__title   { animation: fadeInUp .5s ease both; animation-delay: 80ms;  }
.hero__sub     { animation: fadeInUp .5s ease both; animation-delay: 160ms; }
.hero__ctas    { animation: fadeInUp .5s ease both; animation-delay: 240ms; }
.hero__note    { animation: fadeInUp .5s ease both; animation-delay: 300ms; }
.hero__visual  { animation: fadeInScale .6s ease both; animation-delay: 200ms; }

/* Badge dot pulse */
.hero__badge::before {
  animation: dotPulse 2s ease-in-out infinite;
}

/* ── Scroll Reveal Base ──────────────────────────────────────── */
[data-animate] {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity 0.5s ease,
    transform 0.5s ease;
}

[data-animate].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger delays for child elements */
[data-animate-delay="1"] { transition-delay: 60ms;  }
[data-animate-delay="2"] { transition-delay: 120ms; }
[data-animate-delay="3"] { transition-delay: 180ms; }
[data-animate-delay="4"] { transition-delay: 240ms; }
[data-animate-delay="5"] { transition-delay: 300ms; }
[data-animate-delay="6"] { transition-delay: 360ms; }

/* Scale variant */
[data-animate="scale"] {
  transform: scale(0.96);
}

[data-animate="scale"].is-visible {
  transform: scale(1);
}

/* ── Stat counter animation ──────────────────────────────────── */
.stat__number[data-animate] {
  animation: none; /* handled by JS */
}

/* ── Reduced Motion ──────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  [data-animate] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero__visual {
    animation: none;
  }

  .hero__badge::before {
    animation: none;
  }
}
