/* ─── ANIMATIONS ────────────────────────────────────────────────────────
   Keyframes et classes de transition partagées sur toutes les pages.
─────────────────────────────────────────────────────────────────────── */

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

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

@keyframes statusBlink {
  0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(34,197,94,0.45); transform: scale(1); }
  50%      { opacity: 0.45; box-shadow: 0 0 0 7px rgba(34,197,94,0); transform: scale(0.9); }
}

/* ── Scroll reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.65s var(--ease), transform 0.65s var(--ease);
}
.reveal.visible { opacity: 1; transform: translateY(0); }

.rd1 { transition-delay: 0.08s; }
.rd2 { transition-delay: 0.16s; }
.rd3 { transition-delay: 0.24s; }
.rd4 { transition-delay: 0.32s; }
