.node-label{display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap}
.node-carrier{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-width:2.4rem;padding:.15rem .4rem;border:1px solid #dbe2ea;border-radius:.35rem;background:#f1f5f9;color:#475569;font-size:.7rem;font-weight:600;line-height:1.3;letter-spacing:.02em}
.node-carrier[data-isp="中国电信"]{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}
.node-carrier[data-isp="中国联通"]{color:#6d28d9;background:#f5f3ff;border-color:#ddd6fe}
.node-carrier[data-isp="中国移动"]{color:#0f766e;background:#f0fdfa;border-color:#99f6e4}
.node-carrier[data-isp="多线"]{color:#92400e;background:#fffbeb;border-color:#fde68a}
.node-carrier[data-isp="港澳台"]{color:#0369a1;background:#f0f9ff;border-color:#bae6fd}
.node-name{color:#111827;font-weight:500}

.node-residential{display:inline-flex;align-items:center;flex-shrink:0;padding:.1rem .3rem;border:1px solid #a5b4fc;border-radius:.2rem;background:#eef2ff;color:#4338ca;font-size:.65rem;font-weight:500;line-height:1.3}

/* Only waiting rows in the viewport animate; pausing alone retains GPU layers. */
.measurement-pending .fa-spin { animation: none; }
[data-node-visible="true"] .measurement-pending .fa-spin { animation: fa-spin 2s infinite linear; }
@media (prefers-reduced-motion: reduce) {
    [data-node-visible="true"] .measurement-pending .fa-spin { animation: none; }
}
