/* Every scene follows the current design palette. Only the selected scene renders. */
body.lvd-portal{--lvd-scene-primary:var(--lvd-accent);--lvd-scene-secondary:color-mix(in srgb,var(--lvd-accent) 22%,#38bdf8);--lvd-scene-line:color-mix(in srgb,var(--lvd-scene-secondary) 60%,var(--lvd-text))}
body.lvd-portal .lvd-lv-background{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0;contain:layout paint}
body.lvd-portal.lvd-design-freequency .lvd-lv-background{z-index:0;opacity:.82}
body.lvd-portal .lvd-lv-background-scene{display:none;position:absolute;inset:0}
body.lvd-portal[data-lvd-background=circuit] .lvd-lv-background-circuit,
body.lvd-portal[data-lvd-background=network] .lvd-lv-background-network,
body.lvd-portal[data-lvd-background=ledger] .lvd-lv-background-ledger{display:block}
body.lvd-portal:not([data-lvd-background=solar]) .lvd-solar-system-bg{display:none}
body.lvd-portal[data-lvd-background=solar] .lvd-lv-background{display:none}
body.lvd-portal.lvd-design-logicvektor:not([data-lvd-background=static])::after{opacity:.07}
body.lvd-portal.lvd-design-freequency[data-lvd-background=static]::after{inset:0;background-image:linear-gradient(color-mix(in srgb,var(--lvd-accent) 18%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--lvd-accent) 18%,transparent) 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(90deg,transparent 9%,#0008 60%,transparent 100%);opacity:.55}
body.lvd-portal .lvd-lv-background svg{display:block;width:100%;height:100%;overflow:visible}
body.lvd-portal[data-lvd-background=static] .lvd-focus{display:none}
html[data-lvd-focus=on] body.lvd-portal:not([data-lvd-background=static]) .lvd-lv-background{display:none!important}
html[data-lvd-focus=on] body.lvd-portal.lvd-design-logicvektor:not([data-lvd-background=static]){background:var(--lvd-background)}
html[data-lvd-focus=on] body.lvd-portal.lvd-design-logicvektor:not([data-lvd-background=static])::after{display:none!important}
body.lvd-portal.lvd-design-logicvektor[data-lvd-background=solar] .lvd-solar-system-bg{z-index:0;opacity:.55}
body.lvd-portal.lvd-design-logicvektor[data-lvd-background=solar] .lvd-solar-star{background:radial-gradient(circle at 35% 35%,#fff,var(--lvd-accent) 50%,var(--lvd-scene-secondary));box-shadow:0 0 25px var(--lvd-accent),0 0 50px color-mix(in srgb,var(--lvd-accent) 45%,transparent)}
body.lvd-portal.lvd-design-logicvektor[data-lvd-background=solar] .lvd-orbit-track{border-color:color-mix(in srgb,var(--lvd-accent) 25%,transparent);box-shadow:0 0 9px color-mix(in srgb,var(--lvd-scene-secondary) 18%,transparent)}
body.lvd-portal.lvd-design-logicvektor[data-lvd-background=solar] .lvd-planet{filter:drop-shadow(0 0 3px var(--lvd-scene-secondary))}

/* Circuit flow: a routed board with timed signal packets. */
.lvd-portal .lvd-lv-background-circuit{background:radial-gradient(ellipse 50% 45% at 72% 22%,color-mix(in srgb,var(--lvd-scene-primary) 11%,transparent),transparent 76%),linear-gradient(90deg,transparent,color-mix(in srgb,var(--lvd-scene-secondary) 5%,transparent) 65%,transparent)}
.lvd-portal .lvd-lv-background-circuit stop:first-child{stop-color:var(--lvd-scene-secondary)}
.lvd-portal .lvd-lv-background-circuit stop:last-child{stop-color:var(--lvd-scene-primary)}
.lvd-portal .lvd-lv-circuit-lines path{fill:none;stroke:url(#lvd-circuit-trace);stroke-width:1.25;opacity:.3}
.lvd-portal .lvd-lv-circuit-pulses path{fill:none;stroke:var(--lvd-scene-secondary);stroke-width:3;stroke-linecap:round;stroke-dasharray:64 1200;filter:drop-shadow(0 0 7px var(--lvd-scene-secondary));animation:lvd-lv-circuit-flow 18s linear infinite}
.lvd-portal .lvd-lv-circuit-pulses path:nth-child(2){animation-delay:-7s;animation-duration:23s;stroke:var(--lvd-scene-primary)}
.lvd-portal .lvd-lv-circuit-pulses path:nth-child(3){animation-delay:-13s;animation-duration:21s}
.lvd-portal .lvd-lv-circuit-pulses path:nth-child(4){animation-delay:-4s;animation-duration:25s;stroke:var(--lvd-scene-primary)}
.lvd-portal .lvd-lv-circuit-junctions circle{fill:var(--lvd-scene-secondary);opacity:.65;filter:drop-shadow(0 0 8px var(--lvd-scene-secondary));animation:lvd-lv-junction 5s ease-in-out infinite alternate}
.lvd-portal .lvd-lv-circuit-junctions circle:nth-child(2n){animation-delay:-2.5s;fill:var(--lvd-scene-primary)}
.lvd-portal .lvd-lv-circuit-scan{position:absolute;top:0;bottom:0;left:0;width:25%;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--lvd-scene-secondary) 5%,transparent),transparent);transform:translateX(-120%);animation:lvd-lv-scan 24s linear infinite}
@keyframes lvd-lv-circuit-flow{to{stroke-dashoffset:-1264}}
@keyframes lvd-lv-junction{50%{opacity:.25}to{opacity:.8}}
@keyframes lvd-lv-scan{to{transform:translateX(520%)}}

/* Node network: softly drifting links with independent validation pulses. */
.lvd-portal .lvd-lv-background-network{background:radial-gradient(ellipse 55% 60% at 68% 43%,color-mix(in srgb,var(--lvd-scene-secondary) 10%,transparent),transparent 73%),radial-gradient(ellipse 32% 38% at 35% 73%,color-mix(in srgb,var(--lvd-scene-primary) 11%,transparent),transparent 80%)}
.lvd-portal .lvd-lv-background-network svg{animation:lvd-lv-network-drift 26s ease-in-out infinite alternate;will-change:transform}
.lvd-portal .lvd-lv-network-mesh path{fill:none;stroke:var(--lvd-scene-line);stroke-width:1.2;opacity:.28}
.lvd-portal .lvd-lv-network-halos circle{fill:none;stroke:var(--lvd-scene-secondary);stroke-width:1;opacity:.3;stroke-dasharray:4 8}
.lvd-portal .lvd-lv-network-nodes circle{fill:var(--lvd-scene-secondary);opacity:.62;filter:drop-shadow(0 0 6px var(--lvd-scene-secondary))}
.lvd-portal .lvd-lv-network-nodes circle:nth-child(3n){fill:var(--lvd-scene-primary)}
.lvd-portal .lvd-lv-network-signals circle{fill:none;stroke:var(--lvd-scene-secondary);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center;animation:lvd-lv-network-pulse 7s ease-out infinite}
.lvd-portal .lvd-lv-network-signals circle:nth-child(2){animation-delay:-2s}
.lvd-portal .lvd-lv-network-signals circle:nth-child(3){animation-delay:-4s}
.lvd-portal .lvd-lv-network-signals circle:nth-child(4){animation-delay:-6s}
@keyframes lvd-lv-network-drift{to{transform:translate3d(1.5%,-1.8%,0) scale(1.035)}}
@keyframes lvd-lv-network-pulse{0%,13%{opacity:0;transform:scale(.55)}18%{opacity:.72}48%,100%{opacity:0;transform:scale(3.2)}}

/* Ledger lanes: linked product/compute blocks moving at different speeds. */
.lvd-portal .lvd-lv-background-ledger{background:radial-gradient(ellipse 48% 62% at 60% 52%,color-mix(in srgb,var(--lvd-scene-primary) 13%,transparent),transparent 74%),repeating-linear-gradient(145deg,transparent 0 80px,color-mix(in srgb,var(--lvd-scene-secondary) 4%,transparent) 81px 82px,transparent 83px 160px)}
.lvd-portal .lvd-lv-ledger-row{position:absolute;left:-18%;width:145%;display:flex;align-items:center;gap:20px;padding:7px 0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--lvd-scene-primary) 18%,transparent),transparent) center/100% 1px no-repeat;transform:rotate(-15deg) translateX(0);animation:lvd-lv-ledger-drift 22s ease-in-out infinite alternate;will-change:transform}
.lvd-portal .lvd-lv-ledger-row-1{top:14%}
.lvd-portal .lvd-lv-ledger-row-2{top:45%;animation-direction:alternate-reverse;animation-duration:28s}
.lvd-portal .lvd-lv-ledger-row-3{top:76%;animation-duration:25s}
.lvd-portal .lvd-lv-ledger-unit{position:relative;display:flex;align-items:end;justify-content:space-between;flex:none;width:124px;height:86px;padding:12px;border:1px solid color-mix(in srgb,var(--lvd-scene-primary) 45%,transparent);border-radius:7px;background:linear-gradient(145deg,color-mix(in srgb,var(--lvd-scene-primary) 13%,transparent),color-mix(in srgb,var(--lvd-surface) 24%,transparent) 65%);box-shadow:0 0 24px color-mix(in srgb,var(--lvd-scene-primary) 11%,transparent),inset 0 1px 0 #ffffff1c;color:var(--lvd-scene-secondary);opacity:.72;overflow:hidden}
.lvd-portal .lvd-lv-ledger-unit:nth-child(3n){border-color:color-mix(in srgb,var(--lvd-scene-secondary) 48%,transparent);background:linear-gradient(145deg,color-mix(in srgb,var(--lvd-scene-secondary) 15%,transparent),color-mix(in srgb,var(--lvd-surface) 24%,transparent) 65%)}
.lvd-portal .lvd-lv-ledger-unit i{position:absolute;top:14px;left:13px;width:26px;height:26px;border:1px solid var(--lvd-scene-secondary);transform:rotate(45deg);box-shadow:0 0 14px color-mix(in srgb,var(--lvd-scene-secondary) 36%,transparent);animation:lvd-lv-ledger-glow 6s ease-in-out infinite alternate}
.lvd-portal .lvd-lv-ledger-unit:nth-child(4n) i{animation-delay:-3s}
.lvd-portal .lvd-lv-ledger-unit b,.lvd-portal .lvd-lv-ledger-unit small{font:700 10px/1.1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.12em}
.lvd-portal .lvd-lv-ledger-unit small{color:var(--lvd-scene-secondary)}
@keyframes lvd-lv-ledger-drift{to{transform:rotate(-15deg) translateX(6%)}}
@keyframes lvd-lv-ledger-glow{to{opacity:.35;box-shadow:0 0 4px color-mix(in srgb,var(--lvd-scene-secondary) 22%,transparent)}}

/* Light mode uses the same forms at lower contrast behind the reading surface. */
html[data-lvd-theme=light] .lvd-portal .lvd-lv-background{opacity:.48}
@media(prefers-color-scheme:light){html:not([data-lvd-theme]) .lvd-portal .lvd-lv-background{opacity:.48}}
@media(max-width:782px){.lvd-portal .lvd-lv-background{opacity:.72}.lvd-portal .lvd-lv-ledger-row{left:-80%;width:240%}}
@media(prefers-reduced-motion:reduce){.lvd-portal .lvd-lv-background *, .lvd-portal .lvd-lv-background *::before,.lvd-portal .lvd-lv-background *::after{animation:none!important;transition:none!important}.lvd-portal .lvd-lv-circuit-scan{display:none}}
