/* =====================================================================
   Certynex Design System — MOTION (Phase 8B)
   Navigation Certynex validée :
   - C « directionnel » 240 ms : changement de phase / module majeur (arrivée sur une page module) ;
   - B « fondu enchaîné + 8 px » 200 ms : navigation intra-phase / écran secondaire.
   Aucune animation décorative ; prefers-reduced-motion respecté.
   ===================================================================== */
@keyframes cx-entree-c{from{opacity:0;transform:translateX(var(--cx-shift-c))}to{opacity:1;transform:none}}
@keyframes cx-entree-b{from{opacity:0;transform:translateY(var(--cx-shift-b))}to{opacity:1;transform:none}}
@keyframes cx-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
@keyframes cx-rotation{to{transform:rotate(360deg)}}
@keyframes cx-pulse-lecture{0%{box-shadow:0 0 0 0 var(--cx-teal-200)}100%{box-shadow:0 0 0 14px transparent}}

/* C — arrivée sur un module (page) */
body.cx-shell .page > main,body.cx-terrain #app:not(.cache) > main{animation:cx-entree-c var(--cx-dur-c) var(--cx-ease-out) both}
/* B — changement d'écran dans un module (classe posée brièvement par l'écran) */
.cx-transition-b > *,main > section.cx-transition-b{animation:cx-entree-b var(--cx-dur-b) var(--cx-ease-out) both}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
  .cx-skeleton{animation:none !important}
}
