/* AknoBridge — couche d'animation (anti-slop, sobre) */
:root{ --anim-ease:cubic-bezier(0.22,1,0.36,1); --anim-dur:0.7s; }
.js-anim .reveal{opacity:0;transform:translateY(18px);will-change:opacity,transform;
  transition:opacity var(--anim-dur) var(--anim-ease),transform var(--anim-dur) var(--anim-ease);}
.js-anim .reveal.in{opacity:1;transform:none;}
.js-anim .reveal[data-reveal-delay="1"]{transition-delay:.08s;}
.js-anim .reveal[data-reveal-delay="2"]{transition-delay:.16s;}
.js-anim .reveal[data-reveal-delay="3"]{transition-delay:.24s;}
.btn{transition:transform .18s var(--anim-ease),box-shadow .18s var(--anim-ease),background-color .18s var(--anim-ease),border-color .18s var(--anim-ease);}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(28,32,41,.12);}
.btn:active{transform:translateY(0);box-shadow:0 1px 4px rgba(28,32,41,.14);transition-duration:.06s;}
.module-card,.module-link{transition:transform .22s var(--anim-ease),box-shadow .22s var(--anim-ease),border-color .22s var(--anim-ease);}
.module-card:hover,.module-link:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(28,32,41,.10);}
.module-card:active,.module-link:active{transform:translateY(-1px);transition-duration:.08s;}
.btn:focus-visible,.module-card:focus-visible,.module-link:focus-visible,a:focus-visible{outline:2px solid #2b52c9;outline-offset:3px;border-radius:2px;}
.btn:focus:not(:focus-visible),.module-card:focus:not(:focus-visible),.module-link:focus:not(:focus-visible){outline:none;}
.js-anim .mod-title .word{display:inline-block;opacity:0;transform:translateY(0.5em);
  transition:opacity .55s var(--anim-ease),transform .55s var(--anim-ease);transition-delay:calc(var(--wi,0) * 55ms);}
.js-anim .mod-title.in .word{opacity:1;transform:none;}
.progress-bar{--target:0%;width:0%;}
.js-anim .progress-bar{transition:width .9s var(--anim-ease);}
.js-anim .progress-bar.in{width:var(--target);}
html:not(.js-anim) .progress-bar{width:var(--target);}
@media (prefers-reduced-motion:reduce){
  .js-anim .reveal,.js-anim .reveal.in,.js-anim .mod-title .word,.js-anim .mod-title.in .word{opacity:1!important;transform:none!important;transition:none!important;transition-delay:0s!important;}
  .btn,.btn:hover,.btn:active,.module-card,.module-card:hover,.module-link,.module-link:hover{transform:none!important;transition:none!important;}
  .js-anim .progress-bar{transition:none!important;width:var(--target)!important;}
}
