/* ============================================
   NOVEX — Animations
   ============================================ */

@keyframes spin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }
@keyframes spinReverse { from{transform:rotate(360deg)} to{transform:rotate(0deg)} }

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

@keyframes pulseDot {
  0%,100% { opacity:1; transform:scale(1); }
  50%      { opacity:0.5; transform:scale(1.3); }
}

/* ── CLOUD ANIMATIONS (light mode) ── */
@keyframes cloudDrift1 {
  0%   { transform: translateX(0) translateY(0); }
  33%  { transform: translateX(40px) translateY(-12px); }
  66%  { transform: translateX(-20px) translateY(8px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes cloudDrift2 {
  0%   { transform: translateX(0) translateY(0); }
  50%  { transform: translateX(-50px) translateY(-18px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes cloudDrift3 {
  0%   { transform: translateX(0) translateY(0); }
  25%  { transform: translateX(30px) translateY(-8px); }
  75%  { transform: translateX(-25px) translateY(12px); }
  100% { transform: translateX(0) translateY(0); }
}
@keyframes cloudFloat {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-16px); }
}

/* ── MOON & STAR ANIMATIONS (dark mode) ── */
/* moonFloatA/B/C are defined in components.css alongside .svgmoon classes */

@keyframes starBlink {
  0%,100% { opacity: 0.15; transform: scale(0.85); }
  50%      { opacity: 1;    transform: scale(1.2);  }
}

/* Stats orbit */
@keyframes orbitSpin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }
@keyframes glowPulse {
  0%,100% { opacity:0.5; transform:scale(1); }
  50%      { opacity:1;   transform:scale(1.08); }
}

/* Testimonial marquee */
@keyframes testimonialScroll {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}

/* Scrollbar marquee */
@keyframes scrollLeft {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}

/* Navbar expand */
.navbar { transition: max-width 0.4s cubic-bezier(0.4,0,0.2,1), padding 0.4s ease, background 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease; }

/* Reveal */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal.revealed { opacity:1; transform:translateY(0); }

.reveal-delay-1 { transition-delay:.1s; }
.reveal-delay-2 { transition-delay:.2s; }
.reveal-delay-3 { transition-delay:.3s; }
.reveal-delay-4 { transition-delay:.4s; }

.stagger-children > * {
  opacity:0;
  transform:translateY(18px);
  transition: opacity .45s ease, transform .45s ease;
}
.stagger-children.revealed > *:nth-child(1) { transition-delay:.05s; }
.stagger-children.revealed > *:nth-child(2) { transition-delay:.10s; }
.stagger-children.revealed > *:nth-child(3) { transition-delay:.15s; }
.stagger-children.revealed > *:nth-child(4) { transition-delay:.20s; }
.stagger-children.revealed > *:nth-child(5) { transition-delay:.25s; }
.stagger-children.revealed > *:nth-child(6) { transition-delay:.30s; }
.stagger-children.revealed > *:nth-child(7) { transition-delay:.35s; }
.stagger-children.revealed > *:nth-child(8) { transition-delay:.40s; }
.stagger-children.revealed > * { opacity:1; transform:translateY(0); }
