/* v4: motion layer */
.scroll-prog{position:fixed;top:0;left:0;right:0;height:2px;z-index:60;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--volt),var(--signal),#7C5CFF);box-shadow:0 0 12px rgba(56,225,255,.7);pointer-events:none}
[dir="rtl"] .scroll-prog{transform-origin:100% 50%}
.hero-fx{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;-webkit-mask-image:radial-gradient(ellipse 90% 85% at 55% 45%,#000 40%,transparent 100%);mask-image:radial-gradient(ellipse 90% 85% at 55% 45%,#000 40%,transparent 100%)}
.hero h1 em{background-image:linear-gradient(100deg,var(--fg) 0%,var(--signal) 35%,#9db7ff 50%,var(--signal) 65%,var(--fg) 100%);background-size:250% 100%;animation:shimmer 6s linear infinite}
@keyframes shimmer{from{background-position:100% 0}to{background-position:-150% 0}}
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn.solid::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);animation:sweep 4.5s ease-in-out infinite}
@keyframes sweep{0%,60%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.btn.solid:hover{box-shadow:0 0 0 1px rgba(56,225,255,.4),0 8px 30px -8px rgba(63,116,255,.9)}
.nav::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--signal),transparent);background-size:40% 100%;background-repeat:no-repeat;animation:navscan 7s linear infinite;opacity:.8;pointer-events:none}
@keyframes navscan{from{background-position:-40% 0}to{background-position:140% 0}}
.sheet::before{animation:gridpan 30s linear infinite}
@keyframes gridpan{to{background-position:0 64px,64px 0}}
.head h2{position:relative}
.spot{background-image:radial-gradient(420px circle at var(--mx,-999px) var(--my,-999px),rgba(56,225,255,.09),transparent 45%)}
.ch,.metric,.stack>div,.tk-pts>div,.creds>div,.fr,.qr-card,.patent{transition:border-color .3s,box-shadow .3s}
.metric:hover,.stack>div:hover,.patent:hover{border-color:rgba(56,225,255,.45);box-shadow:0 0 30px -14px rgba(56,225,255,.8)}
.mdl.hot{border-color:rgba(56,225,255,.85);box-shadow:0 0 0 1px rgba(56,225,255,.35),0 0 26px -6px rgba(56,225,255,.85);animation:hot 1.5s ease-out}
.mdl.hot i{color:#050A16;background:var(--ok);border-color:var(--ok)}
.mdl.hot::before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(56,225,255,.25),transparent);background-size:200% 100%;animation:pulse-x .9s linear}
@keyframes hot{0%{transform:translateY(0)}15%{transform:translateY(-3px)}100%{transform:translateY(0)}}
.gw-core.fire{animation:fire .7s ease-out}
@keyframes fire{0%{box-shadow:0 0 40px -10px rgba(56,225,255,.6)}30%{box-shadow:0 0 70px -4px rgba(56,225,255,.95)}100%{box-shadow:0 0 40px -10px rgba(56,225,255,.6)}}
.gw-hex{animation:spinhex 9s linear infinite}
@keyframes spinhex{to{transform:rotate(360deg)}}
.console.tilt{transition:transform .25s ease-out,opacity .8s;will-change:transform}
.ticker-track b{text-shadow:0 0 10px rgba(56,225,255,.6)}
@media (prefers-reduced-motion:reduce){.hero h1 em,.btn.solid::after,.nav::after,.sheet::before,.gw-hex,.mdl.hot,.gw-core.fire{animation:none}}
.fr-num b,.metric>b{font-variant-numeric:tabular-nums}
