/* One active SVG circuit board; no render loop or additional graphics context. */
main>section{position:relative;isolation:isolate}
.section-ambient{position:absolute;inset:0;z-index:-1;overflow:hidden;contain:strict;pointer-events:none;color:var(--ambient-selected,var(--ambient-tone));opacity:.28;transition:opacity .9s ease,color .9s ease;background:radial-gradient(ellipse at 95% 25%,color-mix(in srgb,currentColor 9%,transparent),transparent 65%)}
.section-ambient::before{content:'';position:absolute;inset:0;background-image:linear-gradient(currentColor 1px,transparent 1px),linear-gradient(90deg,currentColor 1px,transparent 1px);background-size:86px 86px;opacity:.045;mask-image:linear-gradient(90deg,#000,transparent 38%,transparent 62%,#000)}
.section-ambient svg{width:100%;height:100%;display:block;mask-image:linear-gradient(0deg,transparent,#000 16%,#000 84%,transparent);fill:none;stroke-linecap:square;stroke-linejoin:bevel}
.ambient-tracks{stroke:currentColor;stroke-width:1;opacity:.2}
.ambient-flow{stroke:#82dcff;stroke-width:2;stroke-dasharray:10 175 2 345;opacity:.65}
.ambient-flow path{vector-effect:non-scaling-stroke;animation:ambient-current 19s linear infinite;animation-play-state:paused}
.ambient-flow path:nth-child(2){animation-duration:23s;animation-direction:reverse;animation-delay:-7s}
.ambient-flow path:nth-child(3){animation-duration:27s;animation-delay:-13s}
.ambient-flow path:nth-child(4){animation-duration:21s;animation-direction:reverse;animation-delay:-4s}
.ambient-nodes{fill:#9be3ff;stroke:none;opacity:.45;animation:ambient-led 8s ease-in-out infinite alternate;animation-play-state:paused}
.ambient-motif{stroke:currentColor;stroke-width:1;opacity:.17;transform-box:fill-box;transform-origin:center;animation:ambient-float 23s ease-in-out infinite alternate;animation-play-state:paused}
.ambient-packets{stroke:#83cfe9;stroke-width:1;fill:#0a243666}
.ambient-packets>g{animation:ambient-packet 24s linear infinite;animation-play-state:paused;opacity:0}
.ambient-packets>g:nth-child(2){animation-delay:-8s;animation-duration:29s;animation-direction:reverse}
.ambient-packets>g:nth-child(3){animation-delay:-16s;animation-duration:26s}
.is-current-section>.section-ambient{opacity:.9}
.is-current-section>.section-ambient .ambient-flow path,.is-current-section>.section-ambient .ambient-nodes,.is-current-section>.section-ambient .ambient-motif,.is-current-section>.section-ambient .ambient-packets>g{animation-play-state:running}
/* These sections already have opaque artwork; keep the circuit between art and copy. */
.hero>.section-ambient,.rift-section>.section-ambient{z-index:0}
.hero .hero-bottom{z-index:3}
.rift-copy{position:relative;z-index:1}
#universe:has([data-faction=deadstar][aria-pressed=true]){--ambient-selected:#8cd0ec}
#universe:has([data-faction=orion][aria-pressed=true]){--ambient-selected:#d4be67}
#universe:has([data-faction=nova][aria-pressed=true]){--ambient-selected:#e06647}
#universe:has([data-faction=zyphari][aria-pressed=true]){--ambient-selected:#7bc768}
#universe:has([data-faction=halo][aria-pressed=true]){--ambient-selected:#69bdb5}
#universe:has([data-faction=raiders][aria-pressed=true]){--ambient-selected:#dfb46c}
#universe:has([data-faction=rogue][aria-pressed=true]){--ambient-selected:#e06657}
@keyframes ambient-current{to{stroke-dashoffset:-1064}}
@keyframes ambient-led{from{opacity:.2}to{opacity:.6}}
@keyframes ambient-float{from{transform:translate(-8px,5px) rotate(-1deg)}to{transform:translate(8px,-5px) rotate(1deg)}}
@keyframes ambient-packet{0%{transform:translateX(-100px);opacity:0}15%,75%{opacity:.45}100%{transform:translateX(150px);opacity:0}}
html.motion-paused .section-ambient *,html.page-hidden .section-ambient *{animation-play-state:paused!important}
html.motion-paused .section-ambient{transition:none}
@media(max-width:760px){.section-ambient::before{background-size:60px 60px;opacity:.035}.ambient-flow{stroke-width:1.5;opacity:.5}.ambient-flow path:nth-child(n+3){display:none}.ambient-packets>g:nth-child(2){display:none}.ambient-motif{animation:none;opacity:.12}}
@media(prefers-reduced-motion:reduce){.section-ambient,.section-ambient *{animation:none!important;transition:none!important}.ambient-nodes{opacity:.3}}
