/* Animations « cinétiques » (port des primitives Framer Motion en CSS+JS).
   Gated par html.js : sans JS, tout reste visible. */
html.js [data-reveal]{opacity:0;transform:translateY(24px);will-change:opacity,transform;}
html.js [data-reveal].is-in{opacity:1;transform:none;transition:opacity .6s cubic-bezier(.16,.84,.44,1),transform .6s cubic-bezier(.16,.84,.44,1);}

html.js [data-hero-item]{opacity:0;transform:translateY(16px);}
html.js [data-hero-item].is-in{opacity:1;transform:none;transition:opacity .7s ease-out,transform .7s ease-out;}

/* Titre cinétique : cascade des mots + tracé des slabs bleus. */
html.js [data-kinetic] .kh-w{opacity:0;transform:translateY(0.5em);}
html.js [data-kinetic] .kh-w.kh-in{opacity:1;transform:none;transition:opacity .4s ease-out,transform .45s cubic-bezier(.2,.7,.3,1);}
html.js [data-kinetic] .kh-slab{transform:scaleX(0);transform-origin:left;}
html.js [data-kinetic] .kh-slab.kh-in{transform:scaleX(1);transition:transform .45s cubic-bezier(.2,0,.05,1);}

@media (prefers-reduced-motion: reduce){
  html.js [data-reveal],
  html.js [data-hero-item],
  html.js [data-kinetic] .kh-w,
  html.js [data-kinetic] .kh-slab{opacity:1 !important;transform:none !important;transition:none !important;}
}

/* Frise — repli mobile / reduced-motion : pas de pinning, bande de cartes scrollable. */
@media (max-width: 900px){
  [data-frise]{height:auto !important;}
  [data-frise] > div{position:static !important;height:auto !important;overflow:visible !important;}
  [data-frise] [data-frise-cards]{transform:none !important;overflow-x:auto;scroll-snap-type:x mandatory;padding-left:16px !important;padding-right:16px !important;-webkit-overflow-scrolling:touch;}
  [data-frise] [data-frise-cards] > li{opacity:1 !important;transform:none !important;scroll-snap-align:center;}
}
@media (prefers-reduced-motion: reduce){
  [data-frise]{height:auto !important;}
  [data-frise] > div{position:static !important;height:auto !important;overflow:visible !important;}
  [data-frise] [data-frise-cards]{transform:none !important;overflow-x:auto;}
  [data-frise] [data-frise-cards] > li{opacity:1 !important;transform:none !important;}
}
