/* Vivid is the default. Only artwork moves; all contact text stays anchored. */
.motion-card{--mc-pace:1;--mc-travel:8%;--mc-travel-back:-8%;--mc-turn:9deg;--mc-turn-back:-9deg;--mc-small-scale:.84;--mc-piece-travel:9%;--mc-piece-scale:.65;--mc-fade:.48}
.motion-card[data-motion-intensity=calm]{--mc-pace:2.4;--mc-travel:2.5%;--mc-travel-back:-2.5%;--mc-turn:3deg;--mc-turn-back:-3deg;--mc-small-scale:.96;--mc-piece-travel:2%;--mc-piece-scale:.94;--mc-fade:.78}
.mc-composed .mc-art .mc-piece{transform-box:fill-box;transform-origin:center;animation-duration:calc(2.8s * var(--mc-pace));animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;animation-delay:calc(var(--mc-i) * -.29s - .4s)}
.mc-composed .mc-fg-line{stroke-width:1.4}
.mc-piece-layer{animation-name:mcLayerLift}.mc-piece-orbit{animation-name:mcLayerOrbit}.mc-piece-flow{animation-name:mcLayerFlow}.mc-piece-spark{animation-name:mcLayerSpark}
.mc-composed .mc-effect-unfold{animation:mcUnfold calc(3.3s * var(--mc-pace)) ease-in-out -.8s infinite alternate}
.mc-composed .mc-effect-fan{animation:mcFan calc(4s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
.mc-composed .mc-effect-breathe{animation:mcBreathe calc(2.8s * var(--mc-pace)) ease-in-out -.5s infinite alternate}
.mc-composed .mc-effect-drift{animation:mcDrift calc(3.3s * var(--mc-pace)) ease-in-out -.8s infinite alternate}
.mc-composed .mc-effect-sway{animation:mcSway calc(3.2s * var(--mc-pace)) ease-in-out -.7s infinite alternate}
.mc-composed .mc-effect-turn{animation:mcTurn calc(14s * var(--mc-pace)) linear -.8s infinite}
.mc-composed .mc-effect-iris{animation:mcIris calc(3.6s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
.mc-composed .mc-effect-slide{animation:mcSlide calc(3.1s * var(--mc-pace)) ease-in-out -.7s infinite alternate}
.mc-composed .mc-effect-pulse{animation:mcPulse calc(2.6s * var(--mc-pace)) ease-in-out -.4s infinite alternate}
.mc-composed .mc-effect-trace{animation:mcTrace calc(2.6s * var(--mc-pace)) linear -.8s infinite}
.mc-composed .mc-effect-weave{animation:mcWeave calc(3.2s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
.mc-composed .mc-effect-tilt{animation:mcTilt calc(3.4s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
.mc-composed .mc-effect-gleam{animation:mcGleam calc(2.8s * var(--mc-pace)) ease-in-out -.4s infinite alternate}
.mc-composed .mc-effect-float{animation:mcFloat calc(3.2s * var(--mc-pace)) ease-in-out -.5s infinite alternate}
.mc-composed .mc-effect-scan{animation:mcScan calc(2.8s * var(--mc-pace)) ease-in-out -.5s infinite alternate}
.mc-composed .mc-effect-twinkle{animation:mcTwinkle calc(2.4s * var(--mc-pace)) ease-in-out -.4s infinite alternate}
.mc-composed .mc-effect-bloom{animation:mcBloom calc(3.8s * var(--mc-pace)) ease-in-out -.7s infinite alternate}
.mc-composed .mc-effect-ink{animation:mcInk calc(3.4s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
.mc-composed .mc-effect-type{animation:mcType calc(3s * var(--mc-pace)) ease-in-out -.5s infinite alternate}
.mc-composed .mc-effect-depth{animation:mcDepth calc(3.6s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
.mc-composed .mc-effect-lens{animation:mcLens calc(3.4s * var(--mc-pace)) ease-in-out -.5s infinite alternate}
.mc-composed .mc-effect-pixel{animation:mcPixel calc(2.6s * var(--mc-pace)) ease-in-out -.4s infinite alternate}
.mc-composed .mc-effect-halo{animation:mcHalo calc(3s * var(--mc-pace)) ease-in-out -.5s infinite alternate}
.mc-composed .mc-effect-strata{animation:mcStrata calc(3.4s * var(--mc-pace)) ease-in-out -.6s infinite alternate}
@keyframes mcLayerLift{from{transform:translateY(calc(-1 * var(--mc-piece-travel)))}to{transform:translateY(var(--mc-piece-travel))}}
@keyframes mcLayerOrbit{from{transform:translate(var(--mc-piece-travel),0) rotate(var(--mc-turn-back))}to{transform:translate(0,var(--mc-piece-travel)) rotate(var(--mc-turn))}}
@keyframes mcLayerFlow{from{transform:translateX(calc(-1 * var(--mc-piece-travel)));opacity:.62}to{transform:translateX(var(--mc-piece-travel));opacity:1}}
@keyframes mcLayerSpark{from{transform:scale(var(--mc-piece-scale));opacity:var(--mc-fade)}to{transform:scale(1.04);opacity:1}}
@keyframes mcUnfold{from{transform:skewY(var(--mc-turn-back)) scaleX(var(--mc-small-scale))}to{transform:skewY(var(--mc-turn)) scaleX(1)}}
@keyframes mcFan{from{transform:rotate(calc(-2 * var(--mc-turn)))}to{transform:rotate(calc(2 * var(--mc-turn)))}}
@keyframes mcBreathe{from{transform:scale(var(--mc-small-scale))}to{transform:scale(1)}}
@keyframes mcDrift{from{transform:translate(var(--mc-travel-back),var(--mc-travel))}to{transform:translate(var(--mc-travel),var(--mc-travel-back))}}
@keyframes mcSway{from{transform:rotate(var(--mc-turn-back)) translateX(var(--mc-travel-back))}to{transform:rotate(var(--mc-turn)) translateX(var(--mc-travel))}}
@keyframes mcIris{from{transform:rotate(calc(-2.5 * var(--mc-turn))) scale(var(--mc-small-scale))}to{transform:rotate(calc(2.5 * var(--mc-turn))) scale(1)}}
@keyframes mcSlide{from{transform:translateX(var(--mc-travel-back))}to{transform:translateX(var(--mc-travel))}}
@keyframes mcPulse{from{opacity:var(--mc-fade);transform:scale(var(--mc-small-scale))}to{opacity:1;transform:scale(1)}}
@keyframes mcTrace{to{stroke-dashoffset:-80}}
@keyframes mcWeave{from{transform:skewX(var(--mc-turn-back))}to{transform:skewX(var(--mc-turn))}}
@keyframes mcTilt{from{transform:rotate(var(--mc-turn-back)) scaleX(var(--mc-small-scale))}to{transform:rotate(var(--mc-turn)) scaleX(1)}}
@keyframes mcGleam{from{opacity:var(--mc-fade);transform:translateY(var(--mc-travel-back))}to{opacity:1;transform:translateY(var(--mc-travel))}}
@keyframes mcFloat{from{transform:translateY(var(--mc-travel-back))}to{transform:translateY(var(--mc-travel))}}
@keyframes mcScan{from{opacity:.6;transform:translateY(var(--mc-travel-back))}to{opacity:1;transform:translateY(var(--mc-travel))}}
@keyframes mcTwinkle{from{opacity:var(--mc-fade);transform:scale(var(--mc-small-scale))}to{opacity:1;transform:scale(1)}}
@keyframes mcBloom{from{transform:rotate(var(--mc-turn-back)) scale(var(--mc-small-scale))}to{transform:rotate(var(--mc-turn)) scale(1)}}
@keyframes mcInk{from{transform:scale(var(--mc-small-scale),1);opacity:.65}to{transform:scale(1,var(--mc-small-scale));opacity:1}}
@keyframes mcType{from{transform:skewX(var(--mc-turn-back))}to{transform:skewX(var(--mc-turn))}}
@keyframes mcDepth{from{transform:scale(var(--mc-small-scale))}to{transform:scale(1)}}
@keyframes mcLens{from{transform:translateX(var(--mc-travel-back)) rotate(var(--mc-turn-back))}to{transform:translateX(var(--mc-travel)) rotate(var(--mc-turn))}}
@keyframes mcPixel{from{opacity:var(--mc-fade);transform:translateY(var(--mc-travel-back))}to{opacity:1;transform:translateY(var(--mc-travel))}}
@keyframes mcHalo{from{transform:scale(var(--mc-small-scale));opacity:var(--mc-fade)}to{transform:scale(1);opacity:1}}
@keyframes mcStrata{from{transform:skewY(var(--mc-turn-back)) translateY(var(--mc-travel-back))}to{transform:skewY(var(--mc-turn)) translateY(var(--mc-travel))}}
/* The original five receive the same clearer pace and larger artwork movement. */
.mc-paper-waves .mc-wave-a{animation:paperA calc(3.8s * var(--mc-pace)) ease-in-out -.7s infinite alternate}
.mc-paper-waves .mc-wave-b{animation:paperB calc(3.2s * var(--mc-pace)) ease-in-out -.4s infinite alternate}
.mc-paper-waves .mc-wave-c{animation:paperA calc(4.4s * var(--mc-pace)) ease-in-out -.9s infinite alternate-reverse}
@keyframes paperA{from{transform:translate(2%,0) rotate(2deg)}to{transform:translate(-10%,6%) rotate(-6deg)}}
@keyframes paperB{from{transform:translate(6%,-3%)}to{transform:translate(-8%,7%)}}
.mc-signal-route .mc-route-beam{stroke-width:3;stroke-dasharray:70 784;animation-duration:calc(2.8s * var(--mc-pace));animation-delay:-.5s}
.mc-signal-route .mc-signal-pulse{animation-duration:calc(1.8s * var(--mc-pace));stroke-width:2;opacity:.8}
.mc-prism-film.film-a{animation:filmA calc(3.6s * var(--mc-pace)) ease-in-out -.5s infinite alternate;opacity:.4}
.mc-prism-film.film-b{animation:filmB calc(4.2s * var(--mc-pace)) ease-in-out -.7s infinite alternate;opacity:.38}
.mc-prism-light{animation:prismLight calc(3s * var(--mc-pace)) ease-in-out -.6s infinite alternate;opacity:.55}
@keyframes filmA{from{transform:translate(-8%,-3%) rotate(-32deg)}to{transform:translate(22%,8%) rotate(-17deg)}}
@keyframes filmB{from{transform:translate(8%,3%) rotate(-23deg)}to{transform:translate(-22%,-8%) rotate(-38deg)}}
.mc-type-ticker>div{animation-duration:calc(11s * var(--mc-pace))}.mc-type-dot>div{animation-duration:calc(2.6s * var(--mc-pace));animation-delay:-.6s}
.mc-aurora-light{animation:auroraLight calc(5s * var(--mc-pace)) ease-in-out -.8s infinite alternate;opacity:.4;filter:blur(16px)}
@keyframes auroraLight{from{transform:translate(-12%,-8%) rotate(-20deg)}to{transform:translate(14%,9%) rotate(35deg)}}
/* Compact controls stay beside playback instead of adding another toolbar. */
.motion-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:none}
.collection-tools>.motion-tools{display:flex;gap:8px;flex-wrap:nowrap}
.motion-tools button[aria-pressed=true]{background:var(--ns-ink);border-color:var(--ns-ink);color:var(--ns-bg)}
.motion-level{display:inline-flex;align-items:center;gap:6px;font-size:10px!important;white-space:nowrap;color:var(--ns-sub)}
.motion-level select{font-size:11px;min-width:0;width:auto;height:34px;border:1px solid var(--ns-line);border-radius:5px;padding:5px 7px;background:var(--ns-card);color:var(--ns-ink)}
.motion-hint{font-size:11px;color:var(--ns-sub);line-height:1.7;margin:-6px 0 14px}.motion-hint[hidden]{display:none}
.detail-caption>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail-caption .motion-tools{gap:6px}.detail-caption .motion-level{font-size:0!important}
.viewer-topline>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-topline .motion-tools{gap:6px}.viewer-topline .motion-level{font-size:0!important}.viewer-topline select{height:30px;font-size:10px}
#viewer-motion-hint{margin:0 0 12px;font-size:11px;letter-spacing:0}
:root[data-theme=dark] .motion-level select{color-scheme:dark}
@media(max-width:650px){.collection-tools{flex-wrap:wrap}.collection-tools .motion-tools{margin-left:auto}.collection-tools .motion-level{font-size:0!important}.motion-tools{gap:6px}.motion-level select{font-size:10px}.detail-caption{gap:8px}.detail-caption>span{max-width:45%}.detail-caption .motion-tools{gap:5px}.detail-caption button{padding:7px 9px}}
@media(prefers-reduced-motion:reduce){.motion-card:not([data-motion-override=true]) .mc-motion{animation:none!important;will-change:auto!important}}
@media print{.motion-card .mc-motion{animation:none!important;will-change:auto!important}.motion-tools,.motion-hint{display:none!important}}
