/* GPU die activity projected into the measured planes of the photographed silicon. */
.gpu-powered-scene:before{display:none}
.gpu-photo-plane,.gpu-photo-plane>img,.gpu-electricity{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.gpu-photo-plane>img{object-fit:cover;object-position:center;filter:saturate(.5) brightness(.82)}
.gpu-electricity{mix-blend-mode:screen;opacity:.95}
.gpu-die-surface{filter:drop-shadow(0 0 2px #8fe7c22b)}
.gpu-silicon-charge{opacity:.04;animation:gpu-silicon-work 6.4s ease-in-out var(--die-phase,0s) infinite}
.gpu-silicon-lanes{opacity:0;animation:gpu-silicon-detail 6.4s ease-in-out var(--die-phase,0s) infinite}
.gpu-silicon-sweep{opacity:0;animation:gpu-silicon-read 6.4s cubic-bezier(.35,0,.3,1) var(--die-phase,0s) infinite}
.gpu-silicon-rim{fill:none;stroke:#c4ffe9;stroke-width:1.1;stroke-dasharray:65 335;stroke-linecap:round;opacity:0;animation:gpu-silicon-edge 6.4s linear var(--die-phase,0s) infinite}
.gpu-contact-pins{fill:#baffdf;filter:drop-shadow(0 0 2px #a1f7d8)}
.gpu-contact-pins circle{opacity:.03;animation:gpu-contact-work 6.4s ease-in-out var(--pin-delay,0s) infinite}
@keyframes gpu-silicon-work{0%,7%,65%,100%{opacity:.025}19%{opacity:.2}30%{opacity:.72}45%{opacity:.2}55%{opacity:.06}}
@keyframes gpu-silicon-detail{0%,10%,63%,100%{opacity:0}23%,44%{opacity:.52}53%{opacity:.08}}
@keyframes gpu-silicon-read{0%,12%{transform:translateX(0);opacity:0}17%{opacity:.85}45%{transform:translateX(132px);opacity:.9}50%,100%{transform:translateX(132px);opacity:0}}
@keyframes gpu-silicon-edge{0%{stroke-dashoffset:400;opacity:0}10%{opacity:.6}48%{stroke-dashoffset:0;opacity:.65}56%,100%{stroke-dashoffset:0;opacity:0}}
@keyframes gpu-contact-work{0%,7%,55%,100%{opacity:.03}17%,28%{opacity:.95}39%{opacity:.18}}
.gpu-powered-scene.motion-paused *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.gpu-electricity{display:none}.gpu-electricity *{animation:none!important}}

/* A coherent memory -> compute -> write-back cycle, on photographed components. */
.gpu-memory-bank{fill:#9ce5d0;stroke:#d2fff0;stroke-width:.75;opacity:0;animation:gpu-memory-dispatch 6.4s cubic-bezier(.4,0,.2,1) var(--memory-phase,0s) infinite}
.gpu-package-energy{opacity:0;animation:gpu-package-load 6.4s ease-in-out infinite}
.gpu-silicon-return{opacity:0;animation:gpu-silicon-writeback 6.4s cubic-bezier(.4,0,.2,1) var(--die-phase,0s) infinite}
@keyframes gpu-memory-dispatch{0%,4%,31%,100%{opacity:0}11%{opacity:.4}18%{opacity:.14}24%{opacity:.27}}
@keyframes gpu-package-load{0%,6%,78%,100%{opacity:0}25%,42%{opacity:.085}60%{opacity:.025}}
@keyframes gpu-silicon-writeback{0%,46%{transform:translateX(0);opacity:0}51%{opacity:.65}75%{transform:translateX(-124px);opacity:.55}79%,100%{transform:translateX(-124px);opacity:0}}
