/* v2.2.2 — Multi-Channel Pulse & Arrival Sync */
.wn-live-topology{isolation:isolate;overflow:visible}
.wn-live-topology .topology-orbit{display:none!important}
.wn-live-topology .topology-node::after{content:none!important;display:none!important}
.wn-topology-motion{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:1}
.wn-live-topology .topology-core{z-index:5}.wn-live-topology .topology-node{z-index:6}
.wn-topology-motion path,.wn-topology-motion circle,.wn-topology-motion ellipse{vector-effect:non-scaling-stroke}
.wn-globe-wave,.wn-globe-arc{fill:none}
.wn-globe-wave{stroke:rgba(32,215,255,.42);stroke-width:1;transform-box:fill-box;transform-origin:center;opacity:0;animation:wnGlobePulse 6.6s cubic-bezier(.22,.61,.36,1) infinite}
.wn-globe-wave.wave-b{animation-delay:2.2s}.wn-globe-wave.wave-c{animation-delay:4.4s}
.wn-globe-arc{stroke:rgba(32,215,255,.18);stroke-width:.8;transform-box:fill-box;transform-origin:center;opacity:0;animation:wnGlobeArc 6.6s ease-out infinite}.wn-globe-arc.arc-b{animation-delay:3.3s}
@keyframes wnGlobePulse{0%{transform:scale(1);opacity:0}8%{opacity:.48}72%{opacity:.10}100%{transform:scale(3.15);opacity:0}}
@keyframes wnGlobeArc{0%{transform:scale(1);opacity:0}10%{opacity:.23}70%{opacity:.07}100%{transform:scale(2.9);opacity:0}}

.wn-link-base{fill:none;stroke-width:1;opacity:.23}
.wn-link-packet{stroke:none;opacity:0;will-change:opacity;filter:drop-shadow(0 0 5px currentColor)}
/* One identity per channel: node, route, packet and arrival glow share the same color. */
.wn-link-base.server{stroke:#4f8cff}.wn-link-packet.server{fill:#4f8cff;color:#4f8cff}
.wn-link-base.endpoint{stroke:#20d7ff}.wn-link-packet.endpoint{fill:#20d7ff;color:#20d7ff}
.wn-link-base.network{stroke:#36a9ff}.wn-link-packet.network{fill:#36a9ff;color:#36a9ff}
.wn-link-base.vpn{stroke:#ad83ff}.wn-link-packet.vpn{fill:#ad83ff;color:#ad83ff}
.wn-link-base.security{stroke:#35e8af}.wn-link-packet.security{fill:#35e8af;color:#35e8af}
.wn-link-base.backup{stroke:#ff9f43}.wn-link-packet.backup{fill:#ff9f43;color:#ff9f43}

.wn-live-topology .topology-node{--wn-channel:#20d7ff;--wn-channel-rgb:32,215,255;border-color:rgba(var(--wn-channel-rgb),.42)!important}
.wn-live-topology .topology-node i,.wn-live-topology .topology-node span{color:var(--wn-channel)!important}
.wn-live-topology .node-server{--wn-channel:#4f8cff;--wn-channel-rgb:79,140,255}
.wn-live-topology .node-endpoint{--wn-channel:#20d7ff;--wn-channel-rgb:32,215,255}
.wn-live-topology .node-network{--wn-channel:#36a9ff;--wn-channel-rgb:54,169,255}
.wn-live-topology .node-vpn{--wn-channel:#ad83ff;--wn-channel-rgb:173,131,255}
.wn-live-topology .node-security{--wn-channel:#35e8af;--wn-channel-rgb:53,232,175}
.wn-live-topology .node-backup{--wn-channel:#ff9f43;--wn-channel-rgb:255,159,67}
.wn-live-topology .topology-node.wn-node-receive{animation:wnNodeReceiveChannel .62s ease-out 1}
@keyframes wnNodeReceiveChannel{0%{box-shadow:0 0 24px rgba(var(--wn-channel-rgb),.06)}22%{box-shadow:0 0 36px rgba(var(--wn-channel-rgb),.34),0 0 12px rgba(var(--wn-channel-rgb),.22) inset}100%{box-shadow:0 0 24px rgba(var(--wn-channel-rgb),.06)}}
@media (prefers-reduced-motion:reduce){.wn-globe-wave,.wn-globe-arc,.wn-live-topology .topology-node.wn-node-receive{animation:none!important}.wn-globe-wave,.wn-globe-arc,.wn-link-packet{display:none!important}.wn-link-base{opacity:.30}}
