/* v2.3.2 — Reactive Atomic Infrastructure Nodes */
.wn-live-topology .topology-node{
  overflow:visible;
  border-radius:50%!important;
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
  transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,filter .18s ease;
}
.wn-live-topology .topology-node i,.wn-live-topology .topology-node span{position:relative;z-index:3}
.wn-live-topology .topology-node.wn-node-receive{
  border-color:rgba(var(--wn-channel-rgb),.72)!important;
  background:radial-gradient(circle,rgba(var(--wn-channel-rgb),.12) 0%,rgba(var(--wn-channel-rgb),.045) 52%,transparent 74%)!important;
  box-shadow:0 0 9px rgba(var(--wn-channel-rgb),.52),0 0 24px rgba(var(--wn-channel-rgb),.26),inset 0 0 18px rgba(var(--wn-channel-rgb),.10)!important;
  animation:wnReactiveNodeArrival .62s ease-out 1!important;
}
@keyframes wnReactiveNodeArrival{
  0%{transform:var(--wn-node-base-transform,none) scale(1);filter:brightness(1)}
  16%{transform:var(--wn-node-base-transform,none) translate(-1px,1px) scale(1.035);filter:brightness(1.28)}
  31%{transform:var(--wn-node-base-transform,none) translate(1px,-1px) scale(1.018)}
  47%{transform:var(--wn-node-base-transform,none) translate(-.6px,.4px) scale(1.025)}
  68%{transform:var(--wn-node-base-transform,none) translate(.4px,-.3px) scale(1.01)}
  100%{transform:var(--wn-node-base-transform,none) scale(1);filter:brightness(1)}
}
.wn-live-topology .node-endpoint,.wn-live-topology .node-security{--wn-node-base-transform:translateX(-50%)}
@keyframes wnReactiveNodeArrivalCentered{
  0%{transform:translateX(-50%) scale(1);filter:brightness(1)}
  16%{transform:translateX(calc(-50% - 1px)) translateY(1px) scale(1.035);filter:brightness(1.28)}
  31%{transform:translateX(calc(-50% + 1px)) translateY(-1px) scale(1.018)}
  47%{transform:translateX(calc(-50% - .6px)) translateY(.4px) scale(1.025)}
  68%{transform:translateX(calc(-50% + .4px)) translateY(-.3px) scale(1.01)}
  100%{transform:translateX(-50%) scale(1);filter:brightness(1)}
}
.wn-live-topology .node-endpoint.wn-node-receive,.wn-live-topology .node-security.wn-node-receive{animation-name:wnReactiveNodeArrivalCentered!important}

/* Replace v2.3.1 CSS-rotation runners with true SVG ellipse tracking. */
.wn-atom-shell{position:absolute;left:50%;top:50%;width:124px;height:112px;transform:translate(-50%,-50%);pointer-events:none;z-index:1;overflow:visible;filter:drop-shadow(0 0 3px rgba(var(--wn-channel-rgb),.10))}
.wn-atom-svg{width:100%;height:100%;overflow:visible;display:block}
.wn-atom-orbit-path{fill:none;stroke:rgba(var(--wn-channel-rgb),.20);stroke-width:1;vector-effect:non-scaling-stroke;transition:stroke .16s ease,filter .16s ease}
.wn-atom-electron-svg{fill:var(--wn-channel);opacity:.78;filter:drop-shadow(0 0 3px var(--wn-channel));transition:r .16s ease,opacity .16s ease,filter .16s ease}
.wn-live-topology .topology-node.wn-node-receive .wn-atom-orbit-path{stroke:rgba(var(--wn-channel-rgb),.48);filter:drop-shadow(0 0 3px rgba(var(--wn-channel-rgb),.55))}
.wn-live-topology .topology-node.wn-node-receive .wn-atom-electron-svg{opacity:1;filter:drop-shadow(0 0 5px var(--wn-channel)) drop-shadow(0 0 9px rgba(var(--wn-channel-rgb),.82))}
@media(max-width:575px){.wn-atom-shell{width:118px;height:106px}}
@media(prefers-reduced-motion:reduce){.wn-live-topology .topology-node.wn-node-receive{animation:none!important}.wn-atom-electron-svg{filter:none}}

/* v2.3.2.1 — alignment hardening: content and atom share the exact node centre. */
.wn-live-topology .topology-node{width:82px!important;height:82px!important;box-sizing:border-box!important}
.wn-live-topology .topology-node>.wn-node-content{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;z-index:3;pointer-events:none}
.wn-live-topology .topology-node>.wn-node-content>i,.wn-live-topology .topology-node>.wn-node-content>span{position:static!important;margin:0!important;transform:none!important}
.wn-live-topology .topology-node>.wn-atom-shell{left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;transform-origin:center!important}
