/* Créalix — apparitions au scroll (global, piloté par anim.js). Tout est conditionné à html.a-js :
   sans JS, ou avec « réduire les animations », rien n'est masqué ni animé. */
.a-js .a { opacity: 0; }
.a-js .a[data-a=dz] { opacity: 1; }
.a.a-in { animation: a-up .8s cubic-bezier(.2,.7,.2,1) var(--d,0s) both; }
.a.a-in[data-a=l] { animation-name: a-l; }
.a.a-in[data-a=r] { animation-name: a-r; }
.a.a-in[data-a=z] { animation-name: a-z; }
.a.a-in[data-a=w], .a.a-in[data-a=dz] { animation-duration: 1.1s; }
.a.a-in[data-a=w] { animation-name: a-w; }
.a.a-in[data-a=dz] { animation-name: a-dz; animation-duration: 1.4s; }
.a.a-in[data-a=f] { animation-name: a-f; }
@keyframes a-up { from { opacity: 0; transform: translate3d(0,26px,0); } to { opacity: 1; transform: none; } }
@keyframes a-l  { from { opacity: 0; transform: translate3d(-34px,0,0); } to { opacity: 1; transform: none; } }
@keyframes a-r  { from { opacity: 0; transform: translate3d(34px,0,0); } to { opacity: 1; transform: none; } }
@keyframes a-z  { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: none; } }
@keyframes a-f  { from { opacity: 0; } to { opacity: 1; } }
@keyframes a-w  { from { opacity: 0; clip-path: inset(0 0 100% 0); transform: scale(1.08); } to { opacity: 1; clip-path: inset(0); transform: none; } }
@keyframes a-dz { from { transform: scale(1.18); } to { transform: none; } }

/* trait cyan qui se trace sous les titres h1/h2 (aucune hauteur ajoutée) */
.a-js .a-ln { position: relative; }
.a-js .a-ln::after { content: ""; position: absolute; left: 0; bottom: -10px; width: 52px; height: 2px; background: var(--ac,#2FC4D6); transform: scaleX(0); transform-origin: left; transition: transform .9s cubic-bezier(.6,0,.2,1) .35s; pointer-events: none; }
.a-js .a-ln.a-lit::after { transform: none; }

@media (prefers-reduced-motion: reduce), print {
  .a-js .a { opacity: 1 !important; }
  .a { animation: none !important; }
  .a-js .a-ln::after { transform: none; transition: none; }
}
