/* ex-core.css : base commune aux 6 sites. A charger avant le CSS du site.
   Le contenu est visible par défaut. Il n'est caché que si html porte .ex-anim
   (posé par le petit script en tête, seulement sans mouvement réduit). */
.ex-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.ex-w{display:inline-block}            /* mot découpé : inline-block pour transform, même rendu */
@media (prefers-reduced-motion:no-preference){
  .ex-anim [data-rv]{
    opacity:0;
    transition:opacity var(--rv-d,.7s) var(--ease,ease) calc(var(--i,0) * var(--rv-st,80ms)),
               transform var(--rv-d,.7s) var(--ease,ease) calc(var(--i,0) * var(--rv-st,80ms)),
               clip-path var(--rv-d,.7s) var(--ease,ease) calc(var(--i,0) * var(--rv-st,80ms));
  }
  .ex-anim [data-rv].is-in{opacity:1;transform:none}
  /* Filet de sécurité : si le JS ne tourne pas, tout réapparaît au bout de 3 s */
  .ex-anim:not(.ex-ok) [data-rv],.ex-anim:not(.ex-ok) [data-rv] *{animation:exSecours 0s 3s forwards}
}
@keyframes exSecours{to{opacity:1;transform:none;clip-path:none}}
/* Mouvement réduit : tout fixe et visible, même si une classe a été posée */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}
  [data-rv]{opacity:1!important;transform:none!important;clip-path:none!important;filter:none!important}
}
