/* Pointer-driven depth, local light and small mechanical responses. */
.mascot-frame,.renpy-window,.hub-blueprint{position:relative;isolation:isolate}
.fx-light{position:absolute;inset:0;pointer-events:none;z-index:3;border-radius:inherit;opacity:0;background:radial-gradient(320px circle at var(--pointer-x,50%) var(--pointer-y,50%),#d4c3ff21,transparent 75%);transition:opacity .35s;box-shadow:inset 0 0 0 1px #d3bfff08}
.mascot-frame>.fx-light{background:radial-gradient(350px circle at var(--pointer-x,50%) var(--pointer-y,50%),#c2ddff1a,transparent 75%);mix-blend-mode:screen}
.motion-enabled .is-pointer-active>.fx-light{opacity:1}
.project-grid{perspective:1200px}
.project-grid .collection-card{transform-origin:center;transition:transform .45s cubic-bezier(.16,.7,.2,1),border-color .25s,background .25s,opacity .5s,translate .5s;will-change:auto}
.mascot-frame{transition:transform .6s cubic-bezier(.16,.7,.2,1),box-shadow .4s,border-color .4s}
.mascot-frame img{transition:transform .65s cubic-bezier(.16,.7,.2,1);transform:scale(1.045) translate(var(--portrait-x,0px),var(--portrait-y,0px));will-change:auto}
.mascot-frame .mascot-signature{transition:translate .6s cubic-bezier(.16,.7,.2,1);translate:calc(var(--portrait-x,0px) * -.45) calc(var(--portrait-y,0px) * -.45)}
.mascot-frame .mascot-corner{transition:width .4s,height .4s,border-color .4s}
.motion-enabled .mascot-frame.is-pointer-active{transform:perspective(1300px) rotateX(var(--pitch,0deg)) rotateY(var(--yaw,0deg));border-color:#9fb9ed80;box-shadow:0 28px 65px #060c194f}
.motion-enabled .project-grid .collection-card.is-pointer-active{transform:perspective(1000px) rotateX(var(--pitch,0deg)) rotateY(var(--yaw,0deg)) translateY(-5px);border-color:color-mix(in srgb,var(--card-color) 65%,#ffffff25)}
.renpy-window,.hub-blueprint{transition:transform .45s,border-color .35s,box-shadow .35s}
.motion-enabled .renpy-window.is-pointer-active,.motion-enabled #tools .hub-blueprint.is-pointer-active{transform:perspective(1400px) rotateX(calc(var(--pitch,0deg) * .45)) rotateY(calc(var(--yaw,0deg) * .45));border-color:#b7a1dd88;box-shadow:0 18px 38px #070b193d}
.collection-card .tool-study{overflow:visible}
.motion-enabled .collection-card.is-pointer-active .study-drawing{transform:translate(var(--study-shift,0px),-2px) scale(1.04)}
.motion-enabled .collection-card:is(:hover,:focus-within) .study-solid{animation:study-breathe 2.2s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
.motion-enabled .collection-card:is(:hover,:focus-within) .study-solid:nth-child(2n){animation-delay:-1.1s}
.collection-card .project-cover{transition:opacity .25s,transform .65s!important}
.motion-enabled .collection-card.is-pointer-active .project-cover{transform:scale(1.045) translate(calc(var(--study-shift,0px) * .25),0)}
.button.primary .button-arrow{transition:transform .3s cubic-bezier(.2,.7,.2,1),background .3s}
.motion-enabled .button.primary:hover .button-arrow{transform:translate(2px,-2px) rotate(0);background:#44344e}
.text-link span[aria-hidden],.profile-link>span:last-child,.project-card a>span:last-child{transition:transform .25s}
.motion-enabled :is(.text-link,.profile-link):hover>span:last-child,.motion-enabled .project-card:hover a>span:last-child{transform:translate(2px,-2px)}
.filter{transition:background .25s,border-color .25s,color .25s}
.motion-enabled .fx-activated{animation:control-acknowledge .4s ease-out}
.motion-enabled #help details[open]>div{animation:answer-arrive .3s ease-out both}
.faq-plus{transition:rotate .25s,color .25s}
details[open] .faq-plus{transform:none;rotate:45deg;color:#ded0f3}
.midnight-nav button svg,.midnight-speeds button svg{transition:transform .25s,filter .25s}
.motion-enabled .midnight-nav button:hover svg{transform:translateY(-1px);filter:drop-shadow(0 0 4px #6fcaff55)}
.motion-enabled .midnight-speeds button:hover svg{transform:translateX(2px)}
.workbench:not(.fx-in-view) :is(.signal-path,.signal-knob),.kinetic-band:not(.fx-in-view) .kinetic-track{animation-play-state:paused}
@keyframes study-breathe{from{opacity:.65;scale:.9}to{opacity:1;scale:1.07}}
@keyframes control-acknowledge{0%{filter:brightness(1.3)}100%{filter:brightness(1)}}
@keyframes answer-arrive{from{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}
@media(hover:none),(pointer:coarse){.fx-light{display:none}.mascot-frame img{transform:none}.mascot-frame .mascot-signature{translate:none}.motion-enabled .project-grid .collection-card:hover{transform:none}.motion-enabled .collection-card .study-solid{animation:none}}
@media(prefers-reduced-motion:reduce){.fx-light{display:none}.mascot-frame,.mascot-frame img,.mascot-frame .mascot-signature,.project-grid .collection-card,.renpy-window,#tools .hub-blueprint{transform:none!important;translate:none!important;transition:none!important}.fx-activated,.study-solid{animation:none!important}}
.motion-paused :is(.mascot-frame,.mascot-frame img,.project-grid .collection-card,.renpy-window),.motion-paused #tools .hub-blueprint{transform:none!important}.motion-paused .mascot-frame .mascot-signature{translate:none}.motion-paused .fx-light{opacity:0}.motion-paused .fx-activated{animation:none}.motion-paused .study-solid,.motion-suspended .study-solid{animation-play-state:paused!important}
