/* sourceAI motion library (fx-*) v2 */
.fx-js .fx-rise:not(.fx-in),.fx-js .fx-fade:not(.fx-in),.fx-js .fx-zoom:not(.fx-in),.fx-js .fx-left:not(.fx-in),.fx-js .fx-right:not(.fx-in){opacity:0}
.fx-js .fx-rise.fx-in{animation:fxRise .65s cubic-bezier(.16,.7,.2,1) backwards}
.fx-js .fx-fade.fx-in{animation:fxFade .65s cubic-bezier(.16,.7,.2,1) backwards}
.fx-js .fx-zoom.fx-in{animation:fxZoom .65s cubic-bezier(.16,.7,.2,1) backwards}
.fx-js .fx-left.fx-in{animation:fxLeft .65s cubic-bezier(.16,.7,.2,1) backwards}
.fx-js .fx-right.fx-in{animation:fxRight .65s cubic-bezier(.16,.7,.2,1) backwards}
@keyframes fxRise{from{opacity:0;transform:translateY(26px)}}
@keyframes fxFade{from{opacity:0}}
@keyframes fxZoom{from{opacity:0;transform:scale(.93)}}
@keyframes fxLeft{from{opacity:0;transform:translateX(-30px)}}
@keyframes fxRight{from{opacity:0;transform:translateX(30px)}}
.fx-js .fx-stagger:not(.fx-in)>*{opacity:0}
.fx-js .fx-stagger.fx-in>*{animation:fxRise .6s cubic-bezier(.16,.7,.2,1) backwards;animation-delay:calc(var(--fx-i,0)*80ms)}
.fx-media{display:block;overflow:hidden}
.fx-media img{transition:transform 1.2s cubic-bezier(.16,.7,.2,1);will-change:transform}
.fx-js .fx-media:not(.fx-in) img{transform:scale(1.08)}
.fx-media:hover img{transform:scale(1.05)}
.fx-lift{transition:transform .35s ease,box-shadow .35s ease}
.fx-lift:hover{transform:translateY(-4px)}
.fx-underline{position:relative}
.fx-underline::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s ease}
.fx-underline:hover::after,.fx-underline:focus-visible::after{transform:scaleX(1)}
.fx-drift{background-size:200% 200%;animation:fxDrift 18s ease-in-out infinite alternate}
@keyframes fxDrift{0%{background-position:0% 50%}100%{background-position:100% 50%}}
.fx-float{animation:fxFloat 8s ease-in-out infinite}
@keyframes fxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
[data-parallax]{will-change:transform}
@media (prefers-reduced-motion:reduce){
.fx-js .fx-rise:not(.fx-in),.fx-js .fx-fade:not(.fx-in),.fx-js .fx-zoom:not(.fx-in),.fx-js .fx-left:not(.fx-in),.fx-js .fx-right:not(.fx-in),.fx-js .fx-stagger:not(.fx-in)>*{opacity:1}
.fx-js .fx-in,.fx-js .fx-stagger.fx-in>*{animation:none}
.fx-js .fx-media:not(.fx-in) img{transform:none}
.fx-media img,.fx-lift,.fx-underline::after{transition:none}
.fx-drift,.fx-float{animation:none}
.fx-lift:hover{transform:none}
.fx-media:hover img{transform:none}
}