
/* Shared motion, with an accessible off switch. */
.motion-toggle{display:block;margin:0 0 20px;padding:9px 13px;border:1px solid var(--line);border-radius:20px;background:var(--black,var(--bg));color:var(--muted);font:11px Arial;cursor:pointer}.motion-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
@media(prefers-reduced-motion:no-preference){
body.motion-on h1{animation:vm-enter .85s cubic-bezier(.2,.7,.2,1) both}body.motion-on .reveal-pending{opacity:0;transform:translateY(26px)}body.motion-on .reveal-ready{opacity:1;transform:translateY(0);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1)}
body.motion-on .edit-art{animation:vm-float 6s ease-in-out infinite}body.motion-on .playhead{animation:vm-playhead 7s ease-in-out infinite alternate}body.motion-on .rhythm i{animation:vm-sound 1.6s ease-in-out infinite alternate;animation-delay:calc(var(--beat,0)*-.13s)}
body.motion-on .format,body.motion-on .photo,body.motion-on .hero figure{transition:transform .35s ease,box-shadow .35s ease}body.motion-on .format:hover{transform:translateY(-7px) rotate(0);box-shadow:0 15px 35px #0005}body.motion-on .photo:hover,body.motion-on .hero figure:hover{transform:rotate(0) translateY(-5px)}
body.motion-on .button span,body.motion-on .scroll span{transition:transform .25s ease}body.motion-on .button:hover span{transform:translate(3px,-3px)}body.motion-on .player button{transition:filter .3s}body.motion-on .player button:hover{filter:brightness(1.2)}
body.motion-on .ticker-track{animation:vm-ticker 24s linear infinite}body.motion-on .motion-ticker:hover .ticker-track{animation-play-state:paused}
}
.motion-ticker{overflow:hidden;margin:22px 0 40px;border-block:1px solid var(--line);padding:19px 0;color:var(--gold)}.ticker-track{display:flex;width:max-content}.ticker-copy{flex-shrink:0;padding-right:36px;font-size:clamp(18px,3vw,36px);font-weight:800;letter-spacing:1px}.ticker-copy b{padding:0 22px;font-weight:400}.motion-off .ticker-track{transform:none}.motion-off .reveal-pending{opacity:1;transform:none}body.motion-off{scroll-behavior:auto}.motion-off *, .motion-off *:before,.motion-off *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@keyframes vm-enter{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes vm-float{0%,100%{transform:rotate(5deg) translateY(0)}50%{transform:rotate(3deg) translateY(-9px)}}@keyframes vm-playhead{from{left:14%}to{left:88%}}@keyframes vm-sound{from{transform:scaleY(.55)}to{transform:scaleY(1)}}@keyframes vm-ticker{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ticker-track{animation:none!important}.reveal-pending{opacity:1!important;transform:none!important}}
/* Layered entrances and native sticky portfolio cards. */
.portfolio-stack{position:relative;padding-bottom:45px}.portfolio-stack .collection{background:#1b1b17;border:1px solid #665735;border-radius:15px;padding:26px 30px 30px;margin:0 0 60px;box-shadow:0 -10px 35px #0005;scroll-margin-top:25px}.portfolio-stack .collection-head h2{font-size:clamp(28px,3.4vw,45px);margin:12px 0}.portfolio-stack .player{max-width:760px;width:100%;margin:18px auto;max-height:42svh}.portfolio-stack .collection-link{display:inline-block;padding:8px 0}.portfolio-stack .collection:focus-within{scroll-margin-top:85px}
@media(prefers-reduced-motion:no-preference){body.motion-on .reveal-pending{transform:none;translate:0 28px;opacity:0}body.motion-on .reveal-ready{transform:none;translate:0 0;opacity:1;transition:opacity .7s ease var(--reveal-delay,0ms),translate .8s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms)}body.motion-on .photo img,body.motion-on .hero figure img{translate:0 var(--photo-shift,0px);clip-path:inset(10px 0)}body.motion-on .portfolio-stack .stack-fits{position:sticky;top:var(--stack-top,24px)}}
body.motion-off .portfolio-stack .collection{position:relative;top:auto}body.motion-off .reveal-pending,body.motion-off .reveal-ready{translate:none}
@media(max-width:760px){.portfolio-stack .collection{padding:20px;margin-bottom:35px}.portfolio-stack .collection-head p{font-size:14px;margin:12px 0}.portfolio-stack .collection-head h2{font-size:32px}.portfolio-stack .player{max-height:none}}
