/* ============================================================================
   ANIMATIONS & MICRO-INTERACTIONS — tasteful, légères, accessibles.
   Charger après kit.css. Activées par reveal.js (ajoute .is-visible).
   ⚠️ Tout est neutralisé si l'utilisateur préfère moins d'animations.
   ============================================================================ */

/* Révélation au scroll : ajouter data-reveal sur un élément (voir reveal.js) */
[data-reveal] { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .5s ease; will-change: opacity, transform; }
[data-reveal].is-visible { opacity: 1; transform: none; }
[data-reveal][data-reveal="left"] { transform: translateX(-24px); }
[data-reveal][data-reveal="right"] { transform: translateX(24px); }
[data-reveal][data-reveal="zoom"] { transform: scale(.96); }
[data-reveal].is-visible { transform: none; }

/* Délais en cascade (data-reveal-delay sur le parent → enfants décalés) */
[data-reveal-stagger] > * { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .5s ease; }
[data-reveal-stagger].is-visible > * { opacity: 1; transform: none; }
[data-reveal-stagger].is-visible > *:nth-child(2) { transition-delay: .08s; }
[data-reveal-stagger].is-visible > *:nth-child(3) { transition-delay: .16s; }
[data-reveal-stagger].is-visible > *:nth-child(4) { transition-delay: .24s; }
[data-reveal-stagger].is-visible > *:nth-child(5) { transition-delay: .32s; }

/* Micro-interactions au survol (utilitaires) */
.lift { transition: transform .15s ease, box-shadow .15s ease; }
.lift:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.btn { transition: transform .08s ease, background .2s ease, box-shadow .2s ease, filter .2s ease; }

/* Apparition douce d'un élément au chargement */
@keyframes fadeInUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.fade-in-up { animation: fadeInUp .5s ease both; }

/* Respect absolu de la préférence utilisateur */
@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal-stagger] > *, .fade-in-up { opacity: 1 !important; transform: none !important; animation: none !important; transition: none !important; }
}
