/* Monolith Motion — reduced-motion aware, GPU-friendly micro-interactions. */
:root{--motion-ease:cubic-bezier(.22,1,.36,1)}
html{scroll-behavior:smooth}
a,button,input,select{touch-action:manipulation}
button,a{ -webkit-tap-highlight-color:transparent }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #357eff;outline-offset:3px}
.reveal-target{opacity:0;transform:translate3d(0,19px,0);transition:opacity .75s var(--motion-ease),transform .75s var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
.reveal-target.is-visible{opacity:1;transform:translate3d(0,0,0)}
.hero-copy .hero-eyebrow{animation:slideIn .8s var(--motion-ease) both}
.hero-copy h1{animation:slideIn .9s .08s var(--motion-ease) both}
.hero-copy p{animation:slideIn .9s .16s var(--motion-ease) both}
.hero-copy .hero-cta{animation:slideIn .9s .23s var(--motion-ease) both}
.hero-panel-wrap .panel-window{animation:panelArrive 1.1s .14s var(--motion-ease) both}
.hero-scene{transform:translate3d(var(--scene-x,0px),var(--scene-y,0px),0);transition:transform .9s ease}
.panel-window{will-change:auto;backface-visibility:hidden;transition:box-shadow .65s var(--motion-ease),border-color .5s ease}
.panel-window:hover{box-shadow:0 38px 94px #102e4961,0 0 0 1px #5195eb44,inset 0 1px 0 #93b6d94a}
.panel-side-item{transition:background .24s ease,color .24s ease,transform .3s var(--motion-ease)}
.panel-side-item:hover{transform:translateX(2px)}
.panel-side-item.current{animation:tabHighlight .35s var(--motion-ease)}
.panel-metrics .metric{animation:metricPop .6s var(--motion-ease) both}
.panel-metrics .metric:nth-child(2){animation-delay:.09s}
.panel-metrics .metric:nth-child(3){animation-delay:.18s}
.panel-metrics svg path{transition:d 1.35s ease;stroke-dasharray:102;stroke-dashoffset:0;animation:drawGraph 1.4s ease both}
.panel-metrics .metric b{font-variant-numeric:tabular-nums}
.panel-metrics .meter i,.panel-metrics .player-bars i{transition:height 1.7s cubic-bezier(.25,.6,.2,1),width 1.7s ease}
.console-live i,.status-chip.online i{animation:onlinePulse 2.8s ease-in-out infinite}
.panel-controls button svg{transition:transform .45s var(--motion-ease)}
.panel-controls button:hover svg{transform:rotate(23deg)}
.console-input-form button{transition:transform .2s var(--motion-ease),filter .2s ease}
.console-input-form button:hover{transform:translateX(2px);filter:brightness(1.16)}
.console-line.log-enter{opacity:0;transform:translateY(5px);animation:logAppear .48s calc(var(--line-index,0)*100ms) ease forwards}
.console-new-line{animation:logAppear .5s ease both!important}
.panel-tab-content{animation:tabContent .48s var(--motion-ease) both}
.panel-file-list>div{transition:background .24s ease,padding-left .25s ease}
.panel-file-list>div:hover{background:#1b365157;padding-left:15px}
.game-tile,.catalogue-card,.category-spotlight,.support-grid>a,.extra-card{transition:transform .4s var(--motion-ease),box-shadow .35s ease,border-color .3s ease!important}
.game-tile:hover,.catalogue-card:hover{transform:translateY(-8px)!important;box-shadow:0 16px 34px #0f376123}
.category-spotlight:hover{transform:translateY(-6px)!important}
.game-art{transition:transform .55s var(--motion-ease),filter .55s ease}
.game-tile:hover .game-art,.catalogue-card:hover .game-art,.category-spotlight:hover .game-art{transform:scale(1.035)}
.btn{transition:transform .28s var(--motion-ease),box-shadow .3s ease,background .25s ease!important}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0) scale(.985)}
.btn svg,.text-link svg{transition:transform .25s ease}
.btn:hover svg,.text-link:hover svg{transform:translateX(4px)}
.trial-orb{animation:orbFloat 8s ease-in-out infinite alternate}
.processor{animation:chipFloat 7s ease-in-out infinite alternate}
.search-dialog{animation:modalOpen .3s var(--motion-ease) both}
.search-backdrop:not([hidden]){animation:backdropIn .2s ease both}
.hero-copy .eyebrow-dot{animation:onlinePulse 3s ease infinite}
.tool-progress>i,.migration-track>i{transition:width .7s var(--motion-ease)}
.migration-item{transition:background .24s ease,border-color .24s ease}
.migration-item:hover{background:#f2f7ff}
.migration-item input:checked~.migration-square{background:#1665e9;border-color:#1665e9;color:#fff}
.faq-native[open] summary span{transform:rotate(45deg)}
@keyframes slideIn{from{opacity:0;transform:translateY(19px)}to{opacity:1;transform:translateY(0)}}
@keyframes panelArrive{from{opacity:0;transform:perspective(1800px) translateY(36px) rotateY(-7deg) rotateX(3deg) scale(.97)}to{opacity:1;transform:perspective(1800px) rotateY(-3deg) rotateX(1deg) scale(1)}}
@keyframes onlinePulse{0%,100%{opacity:1;box-shadow:0 0 0 0 #37dd9d55}50%{opacity:.8;box-shadow:0 0 0 6px #37dd9d00}}
@keyframes logAppear{to{opacity:1;transform:translateY(0)}}
@keyframes metricPop{from{opacity:.35;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes tabHighlight{from{filter:brightness(1.5)}to{filter:brightness(1)}}
@keyframes tabContent{from{opacity:.3;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes drawGraph{from{stroke-dashoffset:102}to{stroke-dashoffset:0}}
@keyframes orbFloat{to{transform:translate3d(20px,-18px,0) scale(1.06)}}
@keyframes chipFloat{to{transform:translateY(-10px)}}
@keyframes modalOpen{from{opacity:0;transform:translateY(-10px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdropIn{from{opacity:.7}to{opacity:1}}
@media(max-width:850px){.hero-panel-wrap .panel-window{animation:panelArriveMobile 1s .12s var(--motion-ease) both}}
@keyframes panelArriveMobile{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}.reveal-target{opacity:1!important;transform:none!important}.hero-scene,.panel-window,.panel-metrics svg path,.game-art,.trial-orb,.processor{animation:none!important;transform:none!important}*{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0ms!important}}
