/* =========================================================
   VEOZY - animations.css
   Apparitions au scroll, glow, marquee, pulse, etc.
   ========================================================= */

/* ---------- Reveal on scroll ---------- */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s cubic-bezier(0.22, 1, 0.36, 1),
              transform .8s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.reveal.in {
  opacity: 1;
  transform: translateY(0);
}
.reveal.delay-1 { transition-delay: 0.08s; }
.reveal.delay-2 { transition-delay: 0.16s; }
.reveal.delay-3 { transition-delay: 0.24s; }
.reveal.delay-4 { transition-delay: 0.32s; }
.reveal.delay-5 { transition-delay: 0.40s; }

/* ---------- Pulse (CTA) ---------- */
@keyframes ctaPulse {
  0%, 100% { box-shadow: 0 12px 36px rgba(255,117,31,0.40), inset 0 1px 0 rgba(255,255,255,0.28); }
  50%      { box-shadow: 0 16px 48px rgba(255,117,31,0.55), inset 0 1px 0 rgba(255,255,255,0.32); }
}

/* ---------- Dot live ---------- */
@keyframes pulseDot {
  0% { box-shadow: 0 0 0 0 rgba(34,197,94,0.6); }
  70% { box-shadow: 0 0 0 10px rgba(34,197,94,0); }
  100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); }
}

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

/* ---------- Subtle float (hero visual) ----------
   Appliquée sur le conteneur (pas l'img) pour ne pas écraser
   le translateZ(0) qui garde l'image nette. */
@keyframes floaty {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}
.hero-visual { animation: floaty 6s ease-in-out infinite; }

/* ---------- Chevron horizontal (méthode) ---------- */
@keyframes chevronShift {
  0%, 100% { transform: translateX(0); opacity: 0.6; }
  50%      { transform: translateX(4px); opacity: 1; }
}
.steps .chevron svg { animation: chevronShift 2.4s ease-in-out infinite; }

/* ---------- Workflow hub glow ---------- */
@keyframes hubGlow {
  0%, 100% { box-shadow: 0 0 20px var(--glow-orange); }
  50%      { box-shadow: 0 0 36px var(--glow-orange), 0 0 80px var(--glow-orange-soft); }
}
.workflow .hub { animation: hubGlow 3s ease-in-out infinite; }

/* ---------- Réduit le mouvement si l'utilisateur le préfère ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1; transform: none; }
}
