/* text-motion — animations d'entrée de texte, réécrites. Zéro dépendance. */
:root{--tm-duration:.8s;--tm-ease:cubic-bezier(.2,.7,.2,1)}
html.tm-js [data-motion]:not(.tm-in){opacity:0}
[data-motion].tm-in{opacity:1;animation:var(--tm-name) var(--tm-duration) var(--tm-ease) both}
[data-motion].tm-in .tm-w{display:inline-block;opacity:0;animation:var(--tm-name) var(--tm-duration) var(--tm-ease) both;animation-delay:calc(var(--i,0)*var(--tm-stagger,60ms))}
[data-motion][data-motion-split].tm-in{animation:none}
[data-motion="fade-in"]{--tm-name:tm-fade-in}
[data-motion="slide-up"]{--tm-name:tm-slide-up}
[data-motion="slide-down"]{--tm-name:tm-slide-down}
[data-motion="slide-left"]{--tm-name:tm-slide-left}
[data-motion="slide-right"]{--tm-name:tm-slide-right}
[data-motion="scale-in"]{--tm-name:tm-scale-in}
[data-motion="blur-in"]{--tm-name:tm-blur-in}
[data-motion="flip-in"]{--tm-name:tm-flip-in;perspective:600px}
[data-motion="drop-in"]{--tm-name:tm-drop-in}
[data-motion="tracking-in"]{--tm-name:tm-tracking-in}
[data-motion="pop-in"]{--tm-name:tm-pop-in}
[data-motion="rise-up"]{--tm-name:tm-rise-up}
[data-motion="unfold-v"]{--tm-name:tm-unfold-v}
[data-motion="skew-in-up"]{--tm-name:tm-skew-in-up}
[data-motion="outline-solid"]{--tm-name:tm-outline-solid}
[data-motion="smoke-in"]{--tm-name:tm-smoke-in}
[data-motion="rotate-in"]{--tm-name:tm-rotate-in}
[data-motion="stair-in"]{--tm-name:tm-stair-in}
[data-motion="type-in"]{--tm-name:tm-type-in}
[data-motion="glitch-in"]{--tm-name:tm-glitch-in}
@keyframes tm-fade-in{from{opacity:0}to{opacity:1}}
@keyframes tm-slide-up{from{opacity:0;transform:translateY(1.2em)}to{opacity:1;transform:none}}
@keyframes tm-slide-down{from{opacity:0;transform:translateY(-1.2em)}to{opacity:1;transform:none}}
@keyframes tm-slide-left{from{opacity:0;transform:translateX(-1.5em)}to{opacity:1;transform:none}}
@keyframes tm-slide-right{from{opacity:0;transform:translateX(1.5em)}to{opacity:1;transform:none}}
@keyframes tm-scale-in{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes tm-blur-in{from{opacity:0;filter:blur(14px);transform:scale(1.04)}to{opacity:1;filter:blur(0);transform:none}}
@keyframes tm-flip-in{from{opacity:0;transform:rotateX(-80deg);transform-origin:bottom}to{opacity:1;transform:none;transform-origin:bottom}}
@keyframes tm-drop-in{0%{opacity:0;transform:translateY(-180%)}65%{opacity:1;transform:translateY(12%)}85%{transform:translateY(-6%)}100%{transform:none}}
@keyframes tm-tracking-in{from{opacity:0;letter-spacing:-.4em}to{opacity:1;letter-spacing:inherit}}
@keyframes tm-pop-in{0%{opacity:0;transform:scale(.4)}70%{opacity:1;transform:scale(1.08)}100%{transform:none}}
@keyframes tm-rise-up{from{opacity:0;transform:translateY(100%);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
@keyframes tm-unfold-v{from{opacity:0;transform:scaleY(.05)}to{opacity:1;transform:none}}
@keyframes tm-skew-in-up{from{opacity:0;transform:translateY(60%) skewY(6deg)}to{opacity:1;transform:none}}
@keyframes tm-outline-solid{0%{opacity:1;-webkit-text-stroke:1px currentColor;color:transparent}100%{opacity:1;-webkit-text-stroke:0 currentColor;color:inherit}}
@keyframes tm-smoke-in{from{opacity:0;filter:blur(10px);transform:translateX(-.6em) scale(1.1)}to{opacity:1;filter:blur(0);transform:none}}
@keyframes tm-rotate-in{from{opacity:0;transform:rotate(-12deg) scale(.8)}to{opacity:1;transform:none}}
@keyframes tm-stair-in{from{opacity:0;transform:translateY(.6em) translateX(-.2em)}to{opacity:1;transform:none}}
@keyframes tm-type-in{from{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}
@keyframes tm-glitch-in{0%{opacity:0;transform:translateX(-4px);clip-path:inset(20% 0 60% 0)}30%{opacity:1;transform:translateX(3px);clip-path:inset(60% 0 10% 0)}60%{transform:translateX(-2px);clip-path:inset(5% 0 80% 0)}100%{transform:none;clip-path:inset(0)}}
@media (prefers-reduced-motion:reduce){
  [data-motion],[data-motion] .tm-w{opacity:1!important;animation:none!important;filter:none!important;transform:none!important;clip-path:none!important}
}
