/* v2.3.2.2 — Unified Node Origin & Axis Alignment Hotfix
   One geometric origin per outer node: node box centre = channel endpoint = atom centre = icon centre.
   The label is deliberately taken out of the centering flow so it cannot pull the icon off-axis. */
.wn-live-topology .topology-node{
  --wn-node-size:82px;
  width:var(--wn-node-size)!important;
  height:var(--wn-node-size)!important;
  box-sizing:border-box!important;
  overflow:visible!important;
}

/* The content wrapper fills the node, but no longer centres icon + label as a group. */
.wn-live-topology .topology-node>.wn-node-content{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  z-index:3!important;
  pointer-events:none!important;
}

/* The icon itself is the visual/geometric origin of the node. */
.wn-live-topology .topology-node>.wn-node-content>i{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  margin:0!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:50% 50%!important;
  line-height:1!important;
}

/* Label is anchored below the origin and therefore never changes the axis. */
.wn-live-topology .topology-node>.wn-node-content>span{
  position:absolute!important;
  left:50%!important;
  top:calc(50% + 27px)!important;
  width:max-content!important;
  max-width:120px!important;
  margin:0!important;
  transform:translateX(-50%)!important;
  transform-origin:50% 50%!important;
  line-height:1!important;
  text-align:center!important;
  white-space:nowrap!important;
}

/* Atomic shell uses exactly the same 50/50 origin as the icon and channel endpoint. */
.wn-live-topology .topology-node>.wn-atom-shell{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:124px!important;
  height:112px!important;
  margin:0!important;
  transform:translate(-50%,-50%)!important;
  transform-origin:50% 50%!important;
}

.wn-live-topology .topology-node>.wn-atom-shell .wn-atom-svg{
  display:block!important;
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
}

/* Keep vertical nodes' legacy placement transform only on the node itself. */
.wn-live-topology .node-endpoint,
.wn-live-topology .node-security{
  transform:translateX(-50%);
  transform-origin:50% 50%;
}

@media(max-width:575px){
  .wn-live-topology .topology-node>.wn-atom-shell{width:118px!important;height:106px!important}
  .wn-live-topology .topology-node>.wn-node-content>span{top:calc(50% + 25px)!important}
}
