/* PRIME // INTERIOR Z2 CIRCUIT OPTICS.
   The sole traveling circuit-particle renderer is ::before ON EACH OF THE
   FOUR EXISTING inward-facing Z2 wall planes. No panel-face overlays.
   Z3 back wall, external bezels, glass, copy and media are untouched. */

/* Explicitly retire previous front/slab charge animation; preserve static metal foil. */
body.prime-v2 .prime-fx-panel{display:none!important}
html body.prime-v2 .prime-panel-chrome-circuit::after{
 content:none!important;display:none!important;animation:none!important;
}

/* Match the existing physical chamber ownership, pose and aperture clipping.
   No stacking/geometry changes to .prime-tunnel-wall itself. */
html[data-prime-spatial-system-enabled="true"][data-prime-spatial-enabled="true"]
body.prime-v2 #main[data-app-shell]>.app-window.is-prime-viewport-active:not(#top):not(#portfolio)
[data-prime-z-screen="true"]>.prime-tunnel-wall[data-prime-tunnel-wall]::before{
 content:""!important;
 position:absolute!important;inset:0!important;
 display:block!important;
 width:100%!important;height:100%!important;
 box-sizing:border-box!important;margin:0!important;padding:0!important;border:0!important;
 pointer-events:none!important;user-select:none!important;
 opacity:.88!important;z-index:1!important;
 background:linear-gradient(90deg,
   rgba(88,208,233,.25) 0%,rgba(72,220,250,.51) 21%,
   rgba(190,255,255,.95) 38%,#fff 49%,
   rgba(131,246,255,.96) 55%,rgba(61,202,232,.51) 68%,
   rgba(77,185,213,.26) 100%);
 background-repeat:no-repeat!important;
 background-size:240% 100%!important;
 background-position:120% 0;
 -webkit-mask-image:url('/prime-z2-interior-circuit.svg')!important;
 mask-image:url('/prime-z2-interior-circuit.svg')!important;
 -webkit-mask-repeat:no-repeat!important;mask-repeat:no-repeat!important;
 -webkit-mask-size:100% 100%!important;mask-size:100% 100%!important;
 -webkit-mask-position:center!important;mask-position:center!important;
 animation:prime-z2-interior-charge 4.8s linear infinite!important;
 filter:none!important;box-shadow:none!important;
 /* No independent camera, 3D transform, backdrop-filter or compositor. */
}
@keyframes prime-z2-interior-charge{
 from{background-position:120% 0}to{background-position:-120% 0}
}
html[data-prime-spatial-system-enabled="true"][data-prime-spatial-enabled="true"]
body.prime-v2 #main[data-app-shell]>.app-window.is-prime-viewport-active:not(#top):not(#portfolio)
[data-prime-z-screen="true"]>.prime-tunnel-wall-right::before,
html[data-prime-spatial-system-enabled="true"][data-prime-spatial-enabled="true"]
body.prime-v2 #main[data-app-shell]>.app-window.is-prime-viewport-active:not(#top):not(#portfolio)
[data-prime-z-screen="true"]>.prime-tunnel-wall-bottom::before{
 animation-direction:reverse!important;animation-delay:-2.2s!important;
}
/* Low-tier: keep particles traveling on Z2 without expensive filter/texture duplication. */
html[data-prime-spatial-system-enabled="true"][data-prime-spatial-enabled="true"]:is([data-prime-performance-mode="light"],[data-prime-resource-tier="low"],
[data-pc-hw-tier="low"],[data-prime-runtime-pressure="high"])
body.prime-v2 #main[data-app-shell]>.app-window.is-prime-viewport-active:not(#top):not(#portfolio)
[data-prime-z-screen="true"]>.prime-tunnel-wall[data-prime-tunnel-wall]::before{
 animation-duration:7s!important;filter:none!important;opacity:.76!important;
}
/* Reuse PrimeZSpaceMap's existing visibility observer: no new observer. */
html[data-prime-spatial-system-enabled="true"][data-prime-spatial-enabled="true"]
body.prime-v2 #main[data-app-shell]>.app-window
[data-prime-z-screen="true"][data-prime-optic-visible="false"]>.prime-tunnel-wall[data-prime-tunnel-wall]::before,
html[data-prime-particles-paused="true"]
body.prime-v2 #main[data-app-shell]>.app-window
[data-prime-z-screen="true"]>.prime-tunnel-wall[data-prime-tunnel-wall]::before{
 animation-play-state:paused!important;
}

/* Existing non-circuit effect: logo-background magnetic motes. */
body.prime-v2 #top .receptor-background-box>.prime-fx-field{
 position:absolute!important;inset:0!important;z-index:1!important;
 overflow:hidden!important;pointer-events:none!important;
 transform:translate3d(var(--fx-mx,0px),var(--fx-my,0px),0);
 transition:transform .28s ease-out;
}
body.prime-v2 .prime-fx-field>i{
 position:absolute;left:var(--x);top:var(--y);
 width:var(--s);height:var(--s);border-radius:50%;
 background:#e6ffff;box-shadow:0 0 9px 1px rgba(86,229,255,.75);
 animation:prime-fx-wander var(--d) ease-in-out var(--lag) infinite alternate;
}
body.prime-v2 .prime-fx-field>i:nth-child(5n){background:#abfff0}
@keyframes prime-fx-wander{
 from{translate:-11px -9px;opacity:.38;scale:.8}
 to{translate:12px 13px;opacity:.97;scale:1.23}
}

/* Existing independent vault dial vortex is not a circuit-wall particle. */
:is(#process,#primeVaultFloat) .prime-page08-vault .prime-fx-vortex{
 position:absolute!important;inset:20%!important;
 z-index:6!important;pointer-events:none!important;
 aspect-ratio:1;transform-origin:center;opacity:.64;
 background:radial-gradient(circle,rgba(108,255,230,.18),rgba(76,226,255,.07) 33%,transparent 61%);
 animation:prime-fx-spin 8s linear infinite;transition:opacity .3s ease;
}
:is(#process,#primeVaultFloat) .prime-page08-vault .prime-fx-vortex::before,
:is(#process,#primeVaultFloat) .prime-page08-vault .prime-fx-vortex::after{
 content:"";position:absolute;inset:8%;border-radius:50%;pointer-events:none;
 background:conic-gradient(from 10deg,transparent 0deg 28deg,
 rgba(93,245,255,.85) 36deg,transparent 58deg 103deg,
 rgba(184,255,244,.65) 116deg,transparent 144deg 214deg,
 rgba(84,233,255,.78) 231deg,transparent 262deg 322deg,
 rgba(176,255,242,.58) 341deg,transparent 360deg);
 -webkit-mask-image:radial-gradient(circle,transparent 47%,#000 52% 62%,transparent 68%);
 mask-image:radial-gradient(circle,transparent 47%,#000 52% 62%,transparent 68%);
 animation:prime-fx-vortex-arc 4.6s linear infinite;
}
:is(#process,#primeVaultFloat) .prime-page08-vault .prime-fx-vortex::after{
 inset:21%;opacity:.8;animation-direction:reverse;animation-duration:3.2s;
}
:is(#process,#primeVaultFloat) .prime-page08-vault .prime-fx-vortex>i{
 position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);
 border-radius:50%;background:#edffff;box-shadow:0 0 7px 1px rgba(92,244,255,.94);
}
:is(#process,#primeVaultFloat) .prime-page08-vault .prime-fx-vortex>i:nth-child(3n){
 background:#95ffd0;box-shadow:0 0 5px #64ffcc;
}
:is(#process,#primeVaultFloat) .prime-page08-vault.is-engaged .prime-fx-vortex{
 opacity:.96;animation-duration:4s;
}
:is(#process,#primeVaultFloat) .prime-page08-vault:is(.is-unlocking,.is-open) .prime-fx-vortex{
 opacity:1;animation-duration:1s;
}
:is(#process,#primeVaultFloat) .prime-page08-vault:is(.is-dark,.is-vanishing,.is-gone) .prime-fx-vortex{
 opacity:0;animation-play-state:paused;
}
@keyframes prime-fx-spin{to{transform:rotate(360deg)}}
@keyframes prime-fx-vortex-arc{to{transform:rotate(360deg)}}

/* Inactive routes never keep decorations running. */
html[data-prime-particles-paused="true"] body.prime-v2
:is(.prime-fx-field>i,.prime-fx-vortex,.prime-fx-vortex::before,.prime-fx-vortex::after),
html[data-prime-canon="prime-creation"] body.prime-v2
#top:not(.is-prime-viewport-active) .prime-fx-field>i,
html[data-prime-canon="prime-creation"] body.prime-v2
#process:not(.is-prime-viewport-active) .prime-fx-vortex{
 animation-play-state:paused!important;
}
html:is([data-prime-performance-mode="light"],[data-prime-resource-tier="low"],
[data-pc-hw-tier="low"],[data-prime-runtime-pressure="high"])
body.prime-v2 .prime-fx-field>i{
 animation:prime-fx-wander var(--d) ease-in-out var(--lag) infinite alternate!important;
 box-shadow:0 0 6px rgba(108,239,255,.75);
}
html:is([data-prime-performance-mode="light"],[data-prime-resource-tier="low"],
[data-pc-hw-tier="low"],[data-prime-runtime-pressure="high"])
body.prime-v2 .prime-fx-vortex{
 animation:prime-fx-spin 10s linear infinite!important;
}
@media(prefers-reduced-motion:reduce){
 html[data-prime-spatial-system-enabled="true"][data-prime-spatial-enabled="true"]
 body.prime-v2 #main[data-app-shell]>.app-window.is-prime-viewport-active:not(#top):not(#portfolio)
 [data-prime-z-screen="true"]>.prime-tunnel-wall[data-prime-tunnel-wall]::before,
 html:is([data-prime-performance-mode="light"],[data-prime-resource-tier="low"],[data-pc-hw-tier="low"],[data-prime-runtime-pressure="high"])
 body.prime-v2 :is(.prime-fx-field>i,.prime-fx-vortex),
 html body.prime-v2 :is(.prime-fx-field>i,.prime-fx-vortex,.prime-fx-vortex::before,.prime-fx-vortex::after){
 animation:none!important;transition:none!important;
 }
 body.prime-v2 .prime-fx-field{transform:none!important;transition:none!important}
}
@media(forced-colors:active){
 body.prime-v2 .prime-fx-field,body.prime-v2 .prime-fx-vortex,
 html body.prime-v2 #main[data-app-shell]>.app-window
 [data-prime-z-screen="true"]>.prime-tunnel-wall[data-prime-tunnel-wall]::before{
 display:none!important;
 }
}
