/* Motion is progressive: without effects.js, every block stays visible. */
.reading-progress{position:fixed;inset:0 0 auto 22px;height:2px;background:linear-gradient(90deg,#8550ff,#66ebcb);transform:scaleX(0);transform-origin:left;z-index:15;pointer-events:none}
.motion-ready .hero-pc,.motion-ready .chapter-poster>img{transform:translate3d(calc(-50% + var(--pointer-x,0px)),calc(var(--scroll-y,0px) + var(--pointer-y,0px)),0) rotate(var(--pointer-tilt,0deg))}
.motion-ready h1,.motion-ready .back-type{transform:translate3d(var(--type-x,0px),var(--type-y,0px),0)}
.motion-ready .hero-pc{animation:pc-float 4.8s ease-in-out infinite;animation-play-state:paused}
.motion-ready .orbit,.motion-ready .chapter-orbit{animation:orbit-drift 7s ease-in-out infinite alternate;animation-play-state:paused}
.motion-ready .fx-active .hero-pc,.motion-ready .fx-active .orbit,.motion-ready .fx-active .chapter-orbit{animation-play-state:running}
.motion-ready .orbit:before,.motion-ready .chapter-orbit:before{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:#66ebcb;top:49%;left:-4px;box-shadow:0 0 18px #66ebcb70}
.motion-ready .poster:after,.motion-ready .chapter-poster:after{content:"";position:absolute;z-index:-2;inset:20% 10% 0;background:radial-gradient(ellipse at 50% 65%,#8550ff12,transparent 65%);opacity:.6;pointer-events:none}
.motion-ready .fx-active.poster:after,.motion-ready .fx-active.chapter-poster:after{animation:ambient-breathe 6s ease-in-out infinite alternate}
.big-cta,.action-button{position:relative;overflow:hidden;isolation:isolate}
.motion-ready .big-cta:after,.motion-ready .action-button:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(160px circle at var(--glow-x,50%) var(--glow-y,50%),#ffffff30,transparent 80%);transition:opacity .25s}
.motion-ready .big-cta:hover:after,.motion-ready .action-button:hover:after{opacity:1}
.motion-ready .big-cta:before,.motion-ready .action-button:before{content:"";position:absolute;inset:-40% -70%;pointer-events:none;background:linear-gradient(110deg,transparent 35%,#ffffff1e 48%,transparent 62%);transform:translateX(-60%);transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.motion-ready .big-cta:hover:before,.motion-ready .action-button:hover:before{transform:translateX(60%)}
.cta-arrow,.action-button>span,.text-link>span,.review-link>span{transition:translate .25s ease}
.big-cta:hover .cta-arrow,.action-button:hover>span,.text-link:hover>span,.review-link:hover>span{translate:3px -3px}
.motion-ready .work-image{transition:box-shadow .3s}
.motion-ready .work-image:hover{box-shadow:0 0 0 1px #66ebcb60,0 12px 35px #0005}
.motion-ready .photo-dialog[open]{animation:dialog-enter .45s cubic-bezier(.16,1,.3,1)}
.motion-ready .photo-dialog[open]::backdrop{animation:backdrop-enter .3s ease}
@keyframes pc-float{0%,100%{translate:0 7px}50%{translate:0 -19px}}
@keyframes orbit-drift{from{transform:rotate(-16deg)}to{transform:rotate(5deg)}}
@keyframes ambient-breathe{from{opacity:.35}to{opacity:.8}}
@keyframes dialog-enter{from{opacity:0;translate:0 45px;scale:.94}to{opacity:1;translate:0 0;scale:1}}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@media(max-width:700px){.reading-progress{left:12px}}
@media(hover:none),(pointer:coarse){html:not([data-motion="on"]) .hero-pc,html:not([data-motion="on"]) .orbit,html:not([data-motion="on"]) .chapter-orbit,html:not([data-motion="on"]) .poster:after,html:not([data-motion="on"]) .chapter-poster:after{animation:none!important}}
@media(prefers-reduced-motion:reduce){
  html:not([data-motion="on"]) *,html:not([data-motion="on"]) *:before,html:not([data-motion="on"]) *:after{animation:none!important;transition:none!important}
  html:not([data-motion="on"]) .hero-pc,html:not([data-motion="on"]) .chapter-poster>img{transform:translateX(-50%)}
  html:not([data-motion="on"]) .cta-arrow,html:not([data-motion="on"]) .action-button>span,html:not([data-motion="on"]) .text-link>span,html:not([data-motion="on"]) .review-link>span{translate:none!important}
}
html[data-motion="off"]{scroll-behavior:auto}
html[data-motion="off"] *,html[data-motion="off"] *:before,html[data-motion="off"] *:after{animation:none!important;transition:none!important}
