.route-line{fill:none;stroke:var(--accent);stroke-width:1.7;vector-effect:non-scaling-stroke;opacity:.65}.route-line.reference{stroke:var(--mint);stroke-dasharray:4 6;opacity:.5}.route-line.drawing{opacity:1;stroke-width:2}.route-line.drawing.reference{stroke-dasharray:none}.packet-halo{fill:#edb475;opacity:.14}.packet{fill:#fff5df;filter:drop-shadow(0 0 4px #edb475)}.geo-leader{stroke:#8aa6b0;stroke-width:.65;stroke-dasharray:2 3;opacity:.35;vector-effect:non-scaling-stroke}
.network-node{cursor:pointer;outline:none}.node-hit{fill:transparent}.node-ring{fill:#12212e;stroke:var(--accent);stroke-width:1.3;vector-effect:non-scaling-stroke}.node-focus{fill:none;stroke:transparent;stroke-width:1;vector-effect:non-scaling-stroke}.node-name,.node-subtitle{fill:#e0e7e8;paint-order:stroke;stroke:#101b27;stroke-width:4px;stroke-linejoin:round;font-size:12px;font-weight:500;pointer-events:none}.node-subtitle{fill:#9fb2be;font-size:9px;font-weight:400}.hop-number{fill:#f4e8dc;font-size:8px;font-weight:600;pointer-events:none}.network-node.selected .node-ring{fill:var(--accent)}.network-node.selected .hop-number{fill:#14212b}.network-node.selected .node-focus,.network-node:focus-visible .node-focus{stroke:var(--accent);stroke-dasharray:2 4}.network-node[data-role=router] .node-ring{stroke:#90b9c7}.network-node[data-role=router] .node-name{display:none}.network-node[data-role=router].selected .node-name,.network-node[data-role=router]:hover .node-name,.network-node[data-role=router]:focus-visible .node-name{display:block}.network-node[data-role=reference] .node-ring{stroke:var(--mint);stroke-dasharray:2 2}.network-node[data-role=reference] .node-name{font-size:10px;fill:var(--mint)}.network-node[data-role=exit] .node-ring{stroke:var(--mint)}.network-node[data-role=exit].selected .node-ring{fill:var(--mint)}.network-node[data-role=client] .node-ring{stroke:#e8f3fa}.network-node[data-unlocated=true] .node-ring{stroke-dasharray:2 3}.node-arrival{fill:none;stroke:var(--accent);stroke-width:1;transform-origin:center;animation:arrival 900ms ease-out forwards;pointer-events:none}.network-node[data-role=exit] .node-arrival{stroke:var(--mint)}
@keyframes arrival{from{r:10;opacity:.9}to{r:32;opacity:0}}
