/* Motion sketch layer. Content is visible by default; JS adds .m-js before hiding anything. */
.m-blob{position:fixed;right:-60px;top:18vh;width:min(38vw,420px);aspect-ratio:1;z-index:0;pointer-events:none;opacity:.22;filter:blur(2px)}
.m-blob svg{width:100%;height:100%}
.m-blob path{fill:url(#none);fill:#2f86ff;}
main,.site-header,.site-footer{position:relative;z-index:1}
.m-cursor{position:fixed;left:0;top:0;width:14px;height:14px;margin:-7px 0 0 -7px;border:2px solid #38c8ff;transform:rotate(45deg);pointer-events:none;z-index:9999;opacity:0;transition:width .25s,height .25s,margin .25s,background .25s}
.m-cursor.big{width:38px;height:38px;margin:-19px 0 0 -19px;background:rgba(56,200,255,.12)}
@media (hover:none),(pointer:coarse){.m-cursor{display:none}}
.btn{transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn .arrow{transition:transform .25s var(--ease)}
.btn:hover .arrow{transform:translateX(4px)}
.stat{transition:transform .3s var(--ease)}
.stat:hover{transform:translateY(-4px)}
.m-line{overflow:hidden;padding-bottom:.08em}
@media (prefers-reduced-motion:reduce){.m-blob,.m-cursor{display:none}.btn:hover,.stat:hover,.btn:hover .arrow{transform:none}}
.grad-text .m-w{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.grad-text:has(.m-w){background:none;-webkit-background-clip:border-box;background-clip:border-box}
