/* BG style: entrées douces de 180–260 ms, décalage éditorial, respect de prefers-reduced-motion. */

/* Sans JavaScript, aucun contenu ne doit rester masqué : l'état initial n'est posé
   que si le script d'amorçage a marqué la page. */
.js .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.7s cubic-bezier(0.23, 1, 0.32, 1), transform 0.7s cubic-bezier(0.23, 1, 0.32, 1);
}
.reveal.is-visible { opacity: 1; transform: none; }

/* Décalage de 40 ms entre les éléments éditoriaux d'une même section. */
.reveal-group > .reveal.is-visible:nth-child(1) { transition-delay: 0ms; }
.reveal-group > .reveal.is-visible:nth-child(2) { transition-delay: 40ms; }
.reveal-group > .reveal.is-visible:nth-child(3) { transition-delay: 80ms; }
.reveal-group > .reveal.is-visible:nth-child(4) { transition-delay: 120ms; }

.modal { animation: modal-in 0.22s ease-out both; }
.modal__panel { animation: panel-in 0.26s cubic-bezier(0.23, 1, 0.32, 1) both; }

@keyframes modal-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes panel-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .modal, .modal__panel { animation: none; }
}
