/* Decorative sound forms. No interaction layer over catalog controls. */
.libraryPage .libraryIntro:after{display:none}
.liveSoundCanvas{position:absolute;right:8px;top:-18px;width:330px;height:170px;pointer-events:none}
.directMotionToggle{position:absolute;right:12px;bottom:-5px;z-index:2;font-size:10px;color:var(--motion-soft,#9ce3d2);padding:5px 9px;border:1px solid #b9dfcf38;border-radius:16px;background:#10252caa}
.collectionNote{margin-right:185px;opacity:.7}
@media(max-width:1000px){.liveSoundCanvas{right:-20px;width:240px;height:124px;top:0;opacity:.65}}
@media(max-width:650px){.liveSoundCanvas{right:-8px;width:160px;height:100px;top:30px;opacity:.35}.directMotionToggle{position:relative;right:auto;bottom:auto;align-self:flex-start;margin-top:12px;font-size:10px}.libraryIntro{flex-wrap:wrap}.libraryIntro>div{flex-basis:100%}}
.libraryPage{isolation:isolate;--motion-x:0px;--motion-y:0px;--motion-soft:var(--soft,#9ce3d2);--motion-warm:var(--warm,#e6bf97)}
.ambientScene{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1;contain:strict;color:var(--motion-soft)}
.ambientSymbol{position:absolute;opacity:.24;transform:translate3d(var(--motion-x),var(--motion-y),0);transition:transform 1.4s cubic-bezier(.2,.8,.2,1);width:330px;height:330px}
.ambientSymbol svg{width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:.7}
.ambientSymbol.loop{left:-170px;top:24%;width:450px;height:450px}
.ambientSymbol.signal{right:-90px;top:44%;color:var(--motion-warm);width:280px;height:280px;opacity:.24}
.ambientSymbol.pads{left:22%;bottom:-100px;width:230px;height:230px;opacity:.1}
.ambientSymbol.echo{right:9%;top:-130px;opacity:.13}
.ambientFloat{transform-origin:center;animation:soundFloat 16s ease-in-out infinite alternate}
.signal .ambientFloat{animation-delay:-7s;animation-duration:21s}.pads .ambientFloat{animation-delay:-11s;animation-duration:23s}
.orbitSpin{transform-origin:100px 100px;animation:soundSpin 36s linear infinite}
.orbitReverse{transform-origin:100px 100px;animation:soundSpin 48s linear infinite reverse}
.orbitTrace{stroke-width:1.4;stroke-dasharray:24 18 5 36;animation:traceFlow 16s linear infinite}
.orbitDot{fill:currentColor;stroke:none}.signalLine{stroke-width:1.2;stroke-linecap:round;stroke-dasharray:15 5;animation:traceFlow 9s linear infinite}
.signalBar{transform-box:fill-box;transform-origin:center;animation:signalPulse 3.8s ease-in-out infinite alternate;stroke-width:3;stroke-linecap:round}
.signalBar:nth-child(2n){animation-delay:-1.4s}.signalBar:nth-child(3n){animation-delay:-2.6s}
.libraryIntro:after{width:260px;height:140px;opacity:.8;transform-origin:center;animation:studioOrbit 14s ease-in-out infinite alternate;background:repeating-radial-gradient(ellipse at center,transparent 0 7px,color-mix(in srgb,var(--motion-soft) 58%,transparent) 8px 9px,transparent 10px 17px)}
.emptySounds:before{animation:leftSoundField 19s ease-in-out infinite alternate;background:repeating-radial-gradient(ellipse at center,transparent 0 8px,color-mix(in srgb,var(--motion-soft) 26%,transparent) 9px 10px,transparent 11px 18px)}
.emptySounds:after{animation:rightSoundField 23s ease-in-out infinite alternate;background:repeating-radial-gradient(ellipse at center,transparent 0 8px,color-mix(in srgb,var(--motion-warm) 26%,transparent) 9px 10px,transparent 11px 18px)}
.emptyWave i{animation:signalPulse 2.7s ease-in-out infinite alternate;transform-origin:center}.emptyWave i:nth-child(4n){animation-delay:-.8s}.emptyWave i:nth-child(5n){animation-delay:-2.1s}
.motionToggle{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:15px;padding:13px 0 0;width:100%;border-top:1px solid #ffffff20;text-align:left;color:#dce7df;font-size:12px}.motionToggle span{border:1px solid #b8d9c24d;padding:4px 9px;border-radius:20px;font-size:10px}.motionToggle[aria-pressed=true] span{color:#182d26;background:var(--motion-soft,#c4e4d1)}
@keyframes soundSpin{to{transform:rotate(360deg)}}
@keyframes traceFlow{to{stroke-dashoffset:-320}}
@keyframes soundFloat{from{transform:translateY(-12px) rotate(-9deg)}to{transform:translateY(20px) rotate(12deg)}}
@keyframes signalPulse{0%{transform:scaleY(.45);opacity:.45}55%{transform:scaleY(1.05);opacity:.9}100%{transform:scaleY(.7);opacity:.65}}
@keyframes studioOrbit{0%{transform:perspective(600px) translate3d(var(--motion-x),var(--motion-y),0) rotate(-24deg) rotateX(15deg) skewX(-18deg)}50%{transform:perspective(600px) translate3d(var(--motion-x),calc(var(--motion-y) - 10px),0) rotate(-6deg) rotateX(42deg) skewX(-8deg)}100%{transform:perspective(600px) translate3d(var(--motion-x),calc(var(--motion-y) + 8px),0) rotate(12deg) rotateX(5deg) skewX(-24deg)}}
@keyframes leftSoundField{from{transform:translate(-8px,12px) rotate(-37deg) scale(.94);opacity:.65}to{transform:translate(36px,-18px) rotate(-15deg) scale(1.08);opacity:1}}
@keyframes rightSoundField{from{transform:translate(12px,-14px) rotate(-22deg) scale(1.06);opacity:1}to{transform:translate(-34px,18px) rotate(-43deg) scale(.92);opacity:.6}}
.libraryPage[data-motion=off] *,.libraryPage[data-motion=off] *:before,.libraryPage[data-motion=off] *:after,.libraryPage[data-motion-paused=true] *,.libraryPage[data-motion-paused=true] *:before,.libraryPage[data-motion-paused=true] *:after{animation-play-state:paused!important}
.libraryPage[data-motion=off] .ambientSymbol{transition:none;transform:none}
@media(max-width:650px){.ambientSymbol.loop{left:-190px;top:22%;width:290px;height:290px;opacity:.18}.ambientSymbol.signal{right:-135px;width:230px;height:230px;opacity:.15}.ambientSymbol.echo,.ambientSymbol.pads{display:none}.libraryIntro:after{width:145px;height:110px;right:-7px;top:45px;opacity:.3}.emptySounds:before{left:-430px}.emptySounds:after{right:-445px}}
@media(prefers-reduced-motion:reduce){.ambientScene *,.libraryIntro:after,.emptySounds:before,.emptySounds:after,.emptyWave i{animation:none!important;transition:none!important}.ambientSymbol{transform:none!important}}
/* An explicit visitor choice may enable the decorative motion over the OS default. */
body[data-motion=on] .orbitSpin{animation:soundSpin 18s linear infinite!important}
body[data-motion=on] .orbitReverse{animation:soundSpin 26s linear infinite reverse!important}
body[data-motion=on] .ambientFloat{animation:soundFloat 10s ease-in-out -3s infinite alternate!important}
body[data-motion=on] .signal .ambientFloat{animation-duration:14s!important;animation-delay:-7s!important}
body[data-motion=on] .orbitTrace{animation:traceFlow 10s linear infinite!important}
body[data-motion=on] .signalLine{animation:traceFlow 7s linear infinite!important}
body[data-motion=on] .signalBar,body[data-motion=on] .emptyWave i{animation:signalPulse 2.7s ease-in-out infinite alternate!important}
body[data-motion=on] :is(.signalBar,.emptyWave i):nth-child(2n){animation-delay:-1.4s!important}
body[data-motion=on] :is(.signalBar,.emptyWave i):nth-child(3n){animation-delay:-2.1s!important}
body[data-motion=on] .libraryIntro:after{animation:studioOrbit 9s ease-in-out -3s infinite alternate!important}
body[data-motion=on] .emptySounds:before{animation:leftSoundField 12s ease-in-out -4s infinite alternate!important}
body[data-motion=on] .emptySounds:after{animation:rightSoundField 15s ease-in-out -7s infinite alternate!important}
body.libraryPage[data-motion-paused=true] *,body.libraryPage[data-motion-paused=true] *:before,body.libraryPage[data-motion-paused=true] *:after{animation-play-state:paused!important}

/* One-shot entrance animations are skipped (not frozen at frame 0) when motion is off or the tab starts hidden. */
.libraryPage[data-motion=off] .libraryPanel,.libraryPage[data-motion-paused=true] .libraryPanel{animation:none!important}
