/* AI mania sample kit — shared motion layer */
html,body{overflow-x:clip}
.js [data-rv]{opacity:0;transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1),clip-path 1.1s cubic-bezier(.7,0,.2,1),filter .9s;transition-delay:var(--d,0s);will-change:transform,opacity}
.js [data-rv=""],.js [data-rv=up]{transform:translateY(40px)}
.js [data-rv=down]{transform:translateY(-30px)}
.js [data-rv=left]{transform:translateX(-60px)}
.js [data-rv=right]{transform:translateX(60px)}
.js [data-rv=zoom]{transform:scale(.86)}
.js [data-rv=pop]{transform:scale(.4) rotate(-8deg);transition-timing-function:cubic-bezier(.3,1.6,.5,1)}
.js [data-rv=blur]{filter:blur(14px);transform:translateY(16px)}
.js [data-rv=clip]{opacity:1;clip-path:inset(0 100% 0 0)}
.js [data-rv=clipup]{opacity:1;clip-path:inset(100% 0 0 0)}
.js [data-rv=iris]{opacity:1;clip-path:circle(0% at 50% 50%)}
.js [data-rv].in{opacity:1;transform:none;filter:none}
.js [data-rv=clip].in,.js [data-rv=clipup].in{clip-path:inset(0 0 0 0)}
.js [data-rv=iris].in{clip-path:circle(75% at 50% 50%)}

/* split text */
.sp-c{display:inline-block;white-space:pre}
.js [data-split] .sp-c{opacity:0;transform:translateY(.6em) rotate(6deg);transition:opacity .6s,transform .7s cubic-bezier(.2,.9,.25,1.2);transition-delay:calc(var(--d,0s) + var(--i)*.04s)}
.js [data-split].in .sp-c{opacity:1;transform:none}

/* marquee */
.mq{display:flex;overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none}
.mq>div{display:flex;flex:none;animation:mq var(--mqs,28s) linear infinite}
.mq.rev>div{animation-direction:reverse}
@keyframes mq{to{transform:translateX(-100%)}}

/* helpers */
.float{animation:float 6s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-14px)}}
.spin{animation:spin 24s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.shine{position:relative;overflow:hidden;isolation:isolate}
.shine::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-120%);animation:shine 3.6s ease-in-out infinite}
@keyframes shine{0%,55%{transform:translateX(-120%)}85%,100%{transform:translateX(120%)}}
[data-tilt]{transition:transform .35s cubic-bezier(.2,.7,.2,1);transform-style:preserve-3d}
.progress{position:fixed;left:0;top:0;height:3px;width:100%;transform-origin:left;transform:scaleX(var(--p,0));z-index:999;pointer-events:none}

@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
 .js [data-rv],.js [data-split] .sp-c{opacity:1!important;transform:none!important;clip-path:none!important;filter:none!important}
}
