/* Independent motion layers keep the sculpted object transforms intact.
   Every scene moves without hover, including touch screens. */
.motion-rig,.mini-rig{position:absolute;inset:0;transform-style:preserve-3d;animation:sourva-drift var(--motion-period,7s) ease-in-out var(--motion-delay,0s) infinite}
.motion-rig{--float-y:10px;--float-x:4px;--rock-x:2.5deg;--rock-y:3deg}
.mini-rig{--float-y:6px;--float-x:2px;--rock-x:3deg;--rock-y:4deg;--motion-period:6s;--motion-delay:-2s}
@keyframes sourva-drift{
 0%,100%{transform:translate3d(calc(var(--float-x)*-1),3px,0) rotateX(calc(var(--rock-x)*-1)) rotateY(calc(var(--rock-y)*-1))}
 50%{transform:translate3d(var(--float-x),calc(var(--float-y)*-1),8px) rotateX(var(--rock-x)) rotateY(var(--rock-y))}
}
.scene-home{--motion-period:8s;--motion-delay:-1s}.scene-consent{--motion-period:7.4s;--motion-delay:-3s}.scene-split{--motion-period:8.5s;--motion-delay:-4s}.scene-network{--motion-period:9s;--motion-delay:-2s}.scene-book{--motion-period:8s;--motion-delay:-5s}.scene-archive{--motion-period:7s;--motion-delay:-3s}.scene-lab{--motion-period:7.8s;--motion-delay:-2s}.scene-watch{--motion-period:8.6s;--motion-delay:-4s}.scene-studio{--motion-period:9s;--motion-delay:-1s}.scene-source{--motion-period:10s;--motion-delay:-6s}
.motion-rig .allocation-object{animation:sourva-lift 6s ease-in-out -2s infinite}
.consent-tag,.claim-slip,.studio-tray{animation:sourva-lift 5.5s ease-in-out -1s infinite}
@keyframes sourva-lift{0%,100%{translate:0 3px 0}50%{translate:0 -9px 12px}}
.ledger-connectors path{animation:sourva-receipt-flow 3s linear infinite}
@keyframes sourva-receipt-flow{to{stroke-dashoffset:-40}}
.chain-plate,.archive-record{animation:sourva-layer 6s ease-in-out infinite}
.chain-plate:nth-child(2),.archive-record:nth-child(2){animation-delay:-2s}
.chain-plate:nth-child(3),.archive-record:nth-child(3){animation-delay:-4s}
@keyframes sourva-layer{0%,100%{translate:0 0 0}50%{translate:4px -6px 10px}}
.reference-lens{animation:sourva-inspect 6.5s ease-in-out -1s infinite}
@keyframes sourva-inspect{0%,100%{translate:0 0 0}50%{translate:-15px -13px 8px}}
.reference-lens i{animation:sourva-scan 3s ease-in-out infinite}
@keyframes sourva-scan{0%,100%{translate:0 -6px;opacity:.5}50%{translate:0 10px;opacity:1}}
.bookmark-tab{transform-origin:50% 0;animation:sourva-bookmark 5s ease-in-out -1s infinite}
@keyframes sourva-bookmark{0%,100%{rotate:y -8deg}50%{rotate:y 12deg}}
.book-leaf{transform-origin:right center;animation:sourva-page 8s ease-in-out -2s infinite}
.book-leaf:last-child{transform-origin:left center;animation-direction:reverse}
@keyframes sourva-page{0%,100%{rotate:y 0deg}50%{rotate:y -7deg}}
.visual-floor,.mini-floor{animation:sourva-shadow 7s ease-in-out infinite}
@keyframes sourva-shadow{0%,100%{opacity:.8}50%{opacity:.45}}
/* The outer assembly handles pointer tilt; the inner rig keeps floating. */
.mini-assembly,.home-tool:hover .mini-assembly,.home-tool:focus-visible .mini-assembly{transform:translateX(-50%) rotateX(calc(15deg + var(--tilt-x,0deg))) rotateY(calc(-25deg + var(--tilt-y,0deg))) rotateZ(-8deg)}
.mini-world:nth-child(2n) .mini-rig{--motion-delay:-4s}
.mini-launch .mini-rig{--motion-period:6.4s}.mini-vault .mini-rig{--motion-period:8s;--rock-y:2deg}.mini-claims .mini-rig{--motion-period:5.8s}.mini-studio .mini-rig{--motion-period:8.4s}.mini-source .mini-rig{--motion-period:7s}.mini-network .mini-rig{--motion-period:7.6s}.mini-archive .mini-rig{--motion-period:6.8s}.mini-watch .mini-rig{--motion-period:7.8s}
.mini-piece{animation:sourva-mini-layer 4.5s ease-in-out -1s infinite}
.mini-piece.piece-b{animation-delay:-3s}
@keyframes sourva-mini-layer{0%,100%{translate:0 0 0}50%{translate:2px -5px 5px}}
.mini-source .mini-badge{animation:sourva-mini-inspect 5s ease-in-out infinite}
.mini-source .piece-a{animation:sourva-mini-inspect 5s ease-in-out infinite}
@keyframes sourva-mini-inspect{0%,100%{translate:0 0}50%{translate:-8px -7px}}
/* Rotate only the vault dial's texture; its SOURVA mark stays readable. */
.mini-vault .mini-badge{background:#233859;isolation:isolate}
.mini-vault .mini-badge:before{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(#536b98 0 12deg,#233859 12deg 30deg);z-index:-1;animation:sourva-dial 18s linear infinite}
@keyframes sourva-dial{to{transform:rotate(360deg)}}
.network-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px}
.global-motion-control{font-size:11px;padding:5px 9px;border:1px solid #526687;border-radius:6px;white-space:nowrap}
.global-motion-control:focus-visible,.motion-control:focus-visible{outline:2px solid #b6c7ff;outline-offset:3px}
.global-motion-control:disabled,.motion-control:disabled{opacity:.75;cursor:default}
/* Pause freezes all objects at their current phase. Offscreen scenes and
   background tabs use no running decorative animation. */
html[data-motion-visibility="hidden"] :is(.mechanism-scene,.mini-world) *,
html[data-motion-visibility="hidden"] :is(.mechanism-scene,.mini-world) *:before,
[data-motion-view="offscreen"] *,[data-motion-view="offscreen"] *:before{animation-play-state:paused!important}
html[data-motion-system="reduced"] :is(.mechanism-scene,.mini-world) *,
html[data-motion-system="reduced"] :is(.mechanism-scene,.mini-world) *:before{animation:none!important;transition:none!important}
html[data-motion-system="reduced"] .visual-assembly{transform:none!important}
html[data-motion-system="reduced"] .mini-assembly{transform:translateX(-50%) rotateX(15deg) rotateY(-25deg) rotateZ(-8deg)!important}
@media(prefers-reduced-motion:reduce){
 :root:not([data-motion-override="active"]) :is(.mechanism-scene,.mini-world) *,:root:not([data-motion-override="active"]) :is(.mechanism-scene,.mini-world) *:before{animation:none!important;transition:none!important}
 .mini-assembly,.home-tool:hover .mini-assembly,.home-tool:focus-visible .mini-assembly{transform:translateX(-50%) rotateX(15deg) rotateY(-25deg) rotateZ(-8deg)}
}
@media(max-width:600px){.network-actions{justify-content:flex-start;gap:8px}.motion-rig{--float-y:7px;--float-x:2px}.global-motion-control{font-size:10px}}

/* Frame-driven motion does not depend on CSS keyframes or hover. */
html[data-motion-engine="frames"] :is(.mechanism-scene,.mini-world) *,
html[data-motion-engine="frames"] :is(.mechanism-scene,.mini-world) *:before{animation:none!important}
.vault-dial-texture{position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(#536b98 0 12deg,#233859 12deg 30deg);z-index:-1}
html[data-motion-engine="frames"] .mini-vault .mini-badge:before{display:none}
.motion-runtime-status{font-size:10px;white-space:nowrap;color:#b5c6e4;border-left:2px solid #627cdf;padding-left:8px}
