@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

/* Transitions douces par défaut (désactivées pour reduced-motion) */
:root {
  --anim-fast: .15s;
  --anim-normal: .35s;
  --anim-slow: .6s;
  --easing: cubic-bezier(.2,.7,.2,1);
}

/* Micro-interactions boutons/liens */
a, button, .button, [role="button"], .btn {
  transition: transform var(--anim-fast) var(--easing), box-shadow var(--anim-normal) var(--easing), opacity var(--anim-fast) var(--easing);
  will-change: transform;
}
a:hover, button:hover, .button:hover, .btn:hover {
  transform: translateY(-1px);
}
a:active, button:active, .button:active, .btn:active {
  transform: translateY(0);
}

header, .site-header, .navbar, .topbar {
  position: fixed; /* ou fixed si ton site l’utilise déjà */
  top: 0;
  z-index: 1000;
  transition: transform 0.4s ease;
}

header.hide, .site-header.hide, .navbar.hide, .topbar.hide {
  transform: translateY(-500%);
}

/* Révélations au scroll */
.reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity var(--anim-slow) var(--easing), transform var(--anim-slow) var(--easing);
  will-change: opacity, transform;
}
.reveal.in {
  opacity: 1;
  transform: none;
}

/* Petites variantes, utilisables avec data-anim="up|right|left|scale" */
.reveal[data-anim="up"]     { transform: translateY(18px) }
.reveal[data-anim="right"]  { transform: translateX(-18px) }
.reveal[data-anim="left"]   { transform: translateX(18px) }
.reveal[data-anim="scale"]  { transform: scale(.98) }
.reveal.in[data-anim]       { transform: none }

/* Transition de page (fade) */
body.page-enter {
  opacity: 0;
}
body.page-enter-active {
  opacity: 1;
  transition: opacity var(--anim-slow) var(--easing);
}
body.page-leave-active {
  opacity: 0;
  transition: opacity var(--anim-fast) var(--easing);
}