:root{color:#e2edf7;font-synthesis:none;text-rendering:optimizelegibility;--bg:#080f1b;--panel:#101d30;--panel-2:#13243b;--line:#23374f;--line-strong:#456987;--muted:#a0b2c9;--text:#e2edf7;--cyan:#36dfbf;--sky:#65b5ff;--amber:#ffc46b;--red:#ff7e8e;--mono:"SFMono-Regular", Consolas, ui-monospace, monospace;background:#080f1b;font-family:Avenir Next,Segoe UI,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}button,a{color:inherit}a:hover{color:var(--cyan)}:focus-visible{outline:2px solid var(--sky);outline-offset:3px}.app-shell{min-height:100vh}.site-header,.site-footer{color:var(--muted);justify-content:space-between;align-items:center;gap:24px;padding:0 28px;display:flex}.site-header{border-bottom:1px solid var(--line);background:#101c2d;min-height:60px}.site-footer{border-top:1px solid var(--line);padding-block:18px;font-size:.75rem;line-height:1.7}.site-footer span{max-width:650px}.site-footer a{color:var(--sky)}.wordmark{letter-spacing:-.03em;color:#f3f8ff;align-items:center;gap:10px;font-size:1.125rem;font-weight:700;text-decoration:none;display:inline-flex}.wordmark>span:last-child{color:var(--cyan)}.wordmark-mark{align-items:flex-end;gap:3px;height:19px;display:flex}.wordmark-mark i{background:var(--cyan);border-radius:1px;width:4px}.wordmark-mark i:first-child{height:7px}.wordmark-mark i:nth-child(2){background:var(--sky);height:13px}.wordmark-mark i:nth-child(3){background:#aa94ff;height:19px}.header-note{align-items:center;gap:24px;font-size:.875rem;display:flex}.header-note a{color:var(--sky);text-decoration:none}.workspace{min-width:0;display:block}.map-shell{isolation:isolate;background:radial-gradient(at 50% 45%,#163c59 0%,#0c1c31 70%);border-bottom:1px solid #38516e;min-width:0;padding:24px 28px 16px;position:relative}.map-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.eyebrow{color:var(--cyan);font:.75rem var(--mono);text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px;display:block}.map-heading h1{letter-spacing:-.035em;color:#f1f7ff;margin:0;font-size:1.5rem;line-height:1.3}.live-indicator{color:#b3c7d8;font:.75rem var(--mono);white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.live-indicator i{background:var(--cyan);border-radius:50%;width:6px;height:6px}.live-indicator.is-busy i{animation:1s ease-in-out infinite blink}.map-stage{height:clamp(280px,34vw,420px);position:relative;overflow:hidden}.map-stage>svg{width:100%;height:100%;display:block;position:absolute;inset:0;overflow:hidden}.map-sphere{fill:#0c2037;stroke:#305373;stroke-width:1.2px;pointer-events:none}.map-graticule{fill:none;stroke:#24445e;stroke-width:.8px;pointer-events:none}.map-land{fill:#26516c;stroke:#4b788f;stroke-width:.65px;pointer-events:none}.origin-marker{cursor:pointer;pointer-events:bounding-box;outline:none;transition:opacity .18s}.origin-hit{fill:#0000;pointer-events:all}.origin-core{fill:#e7fffb;filter:drop-shadow(0 0 5px var(--cyan))}.origin-pulse{fill:#26e6c812;stroke:#26e6c8a3;stroke-width:1px;transform-box:fill-box;transform-origin:50%}.origin-marker text{fill:#9ab7b9;paint-order:stroke;stroke:#071014;stroke-width:4px;stroke-linejoin:round;font:500 14px SFMono-Regular,Consolas,ui-monospace,monospace}.origin-marker:hover text,.origin-marker:focus text,.origin-marker.is-selected text{fill:#fff}.origin-marker:hover .origin-pulse,.origin-marker:focus .origin-pulse,.origin-marker.is-selected .origin-pulse{stroke:var(--cyan);animation:1.7s ease-out infinite signal}.origin-marker:focus .origin-core{stroke:#fff;stroke-width:3px}.origin-marker.is-subdued{opacity:.28}.route-segment{fill:none;stroke:url(#route-gradient);stroke-width:2.2px;stroke-linecap:round;filter:drop-shadow(0 0 5px #26e6c840)}.route-segment.is-gap{stroke-dasharray:6 7;animation:1.2s linear infinite route-flow}.route-segment.is-alert{stroke:var(--red)}.route-segment.is-active{stroke-width:5px}.route-node circle{fill:#0b161b;stroke:var(--sky);stroke-width:2px}.route-node text{fill:#aad9eb;text-anchor:middle;font:12px SFMono-Regular,Consolas,ui-monospace,monospace}.route-node.is-active circle{fill:var(--sky);filter:drop-shadow(0 0 6px var(--sky))}.target-marker circle{fill:#071014;stroke:#fff;stroke-width:2px}.target-marker text{fill:#fff;letter-spacing:.14em;font:500 12px SFMono-Regular,Consolas,ui-monospace,monospace}.map-legend{font:.75rem var(--mono);color:#a6bed2;flex-wrap:wrap;gap:22px;display:flex}.map-legend span{align-items:center;gap:7px;display:inline-flex}.map-legend i{background:var(--sky);width:16px;height:2px}.map-legend .legend-signal{background:var(--cyan);border-radius:50%;width:7px;height:7px}.map-legend .legend-alert{background:var(--red)}.route-panel{background:#0b1524;min-width:0}.route-summary{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px 32px;padding:22px 28px;display:grid}.summary-topline{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.route-summary h2{letter-spacing:-.02em;margin:0;font-size:1.125rem;font-weight:600}.summary-title p{color:var(--muted);max-width:650px;margin:9px 0 0;font-size:.875rem;line-height:1.6}.status-badge{color:#b8cce0;font:.75rem var(--mono);background:#17283d;border:1px solid #3a526e;border-radius:4px;padding:4px 8px;display:inline-flex}.status-stable{color:#70ebc8;background:#0c352f;border-color:#246754}.status-variation,.status-incomplete{color:#ffd497;background:#392c1e;border-color:#655039}.status-issue{color:#ffa8b3;background:#3d202e;border-color:#6c3443}.trace-endpoints{font:.875rem var(--mono);color:var(--muted);flex-wrap:wrap;gap:10px;margin-top:10px;display:flex}.target-ip{color:var(--sky);overflow-wrap:anywhere}.metrics{border:1px solid var(--line);background:#112138;border-radius:5px;grid-template-columns:repeat(4,auto);display:grid;overflow:hidden}.metrics div{border-top:2px solid var(--sky);padding:12px 18px}.metrics div+div{border-left:1px solid var(--line)}.metrics div:nth-child(2){border-top-color:var(--cyan)}.metrics div:nth-child(3){border-top-color:#ac96ff}.metrics div:nth-child(4){border-top-color:var(--amber)}.metrics span{color:var(--muted);white-space:nowrap;margin-bottom:8px;font-size:.75rem;display:block}.metrics strong{font:500 1.125rem var(--mono);color:#eaf3ff;white-space:nowrap;display:block}.validation-progress,.error-banner{grid-column:1/-1}.validation-progress{color:var(--sky);font:.875rem var(--mono);align-items:center;gap:9px;display:flex}.validation-progress i{background:#173138;width:58px;height:3px;position:relative;overflow:hidden}.validation-progress i:after{content:"";background:var(--cyan);width:45%;animation:1.4s ease-in-out infinite progress;position:absolute;inset:0}.error-banner{border-left:2px solid var(--red);color:#ffb8c1;background:#36212c;padding:12px;font-size:.875rem}.chart-toolbar{color:#c6d9ec;background:#111f33;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 28px;font-size:.875rem;display:flex}.chart-unit{color:var(--muted)}.chart-legend{color:#b3c6da;flex-wrap:wrap;align-items:center;gap:22px;font-size:.75rem;display:flex}.chart-legend span{align-items:center;gap:8px;display:inline-flex}.legend-average{background:var(--sky);width:20px;height:2px;position:relative}.legend-average:after{content:"";background:var(--sky);border-radius:50%;width:6px;height:6px;position:absolute;top:-2px;left:7px}.legend-range{border:1px solid var(--cyan);background:#1b655b;width:20px;height:8px}.legend-loss{background:var(--red);border-radius:50%;width:7px;height:7px}.route-table-scroll{scrollbar-color:#456a91 #101d30;overflow-x:auto}.route-table{table-layout:fixed;border-spacing:0;border-collapse:separate;width:100%;min-width:1120px}.col-hop{width:56px}.col-host{width:230px}.col-location{width:170px}.col-loss{width:65px}.col-rtt{width:88px}.col-graph{width:auto}.col-network{width:210px}.route-table thead{background:#192b43}.route-table thead th{text-align:left;color:#b5c9df;border-block:1px solid #2c425e;height:40px;padding:8px 12px;font-size:.75rem;font-weight:500}.route-table tbody th,.route-table tbody td{border-bottom:1px solid var(--line);height:64px;padding:0 12px}.hop-row:nth-child(2n){background:#101e30}.hop-row{outline-offset:-2px}.hop-row:hover,.hop-row:focus,.hop-row.is-active{background:#1a3651}.hop-row.is-persistent-loss .hop-number{box-shadow:inset 3px 0 var(--red);color:var(--red)}.hop-row.is-latency-step .hop-number{box-shadow:inset 3px 0 var(--amber);color:var(--amber)}.hop-number{color:#99adc6;font:.875rem var(--mono)}.hop-identity strong,.hop-identity span,.hop-network strong{text-overflow:ellipsis;white-space:nowrap;font-weight:400;display:block;overflow:hidden}.hop-identity strong{color:#e1edf9;font:.875rem var(--mono)}.hop-identity span{color:#99b4d0;font:.75rem var(--mono);margin-top:5px}.hop-location{color:#b5c7dc;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;overflow:hidden}.route-table .numeric{text-align:right;white-space:nowrap}.hop-loss strong,.hop-latency{font:.875rem var(--mono)}.hop-loss strong{color:#7edfc7}.hop-loss.has-loss strong{color:var(--amber)}.hop-row.is-persistent-loss .hop-loss strong{color:var(--red)}.hop-latency{color:#b6d9ff}.route-table .graph-cell{background:#15344833;padding:0;position:relative}.hop-graph{isolation:isolate;min-height:63px;position:absolute;inset:0}.hop-graph svg{z-index:2;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.graph-gridline{z-index:-1;border-left:1px dashed #314960;position:absolute;top:0;bottom:-1px}.latency-line{fill:none;stroke:var(--sky);stroke-width:2px;vector-effect:non-scaling-stroke}.latency-range{z-index:1;background:#239e8570;border:1px solid #40ccb3;border-radius:1px;min-width:2px;height:10px;position:absolute;top:calc(50% - 5px)}.latency-average{background:var(--sky);z-index:3;border:1px solid #d5edff;border-radius:50%;width:8px;height:8px;position:absolute;top:50%;transform:translate(-50%,-50%)}.is-persistent-loss .latency-average{background:var(--red);border-color:#ffccd3}.is-latency-step .latency-average{background:var(--amber);border-color:#fff0d7}.graph-no-reply{font:.75rem var(--mono);color:#a4b8ce;background:#122238;padding:2px 8px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.route-table .graph-heading{padding:0}.graph-axis{height:38px;font:.75rem var(--mono);position:relative}.graph-axis span{position:absolute;top:12px;transform:translate(-50%)}.hop-network{font-size:.875rem}.hop-network>span{font:.75rem var(--mono);flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:6px;display:flex}.hop-network a{color:#c1afff;text-decoration:none}.hop-network a:hover{color:#e5dcff;text-decoration:underline}.hop-network .network-unavailable{color:var(--muted);font-size:.875rem}.measurement-note{color:var(--muted);border-top:1px solid var(--line);margin:0;padding:14px 28px;font-size:.75rem;line-height:1.6}.empty-route{color:var(--muted);padding:30px 28px;font-size:.875rem;line-height:1.6}.turnstile-host{z-index:10;position:fixed;bottom:12px;right:12px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width>=1600px){.col-host{width:280px}.col-location{width:200px}.col-network{width:250px}}@media (width<=1100px){.route-summary{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(4,1fr)}}@media (width<=700px){.site-header,.site-footer{padding-inline:16px}.site-header{gap:12px}.header-note>span{display:none}.header-note{font-size:.75rem}.map-shell{padding:20px 16px 14px}.map-heading{gap:14px}.map-heading h1{font-size:1.25rem}.map-stage{height:clamp(220px,50vw,320px)}.origin-marker text{font-size:18px}.map-legend{gap:16px}.route-summary{gap:16px;padding:20px 16px}.metrics div{padding:10px}.metrics span{white-space:normal;min-height:30px;font-size:.75rem}.metrics strong{font-size:.875rem}.chart-toolbar,.measurement-note,.empty-route{padding-inline:16px}.chart-legend{gap:16px}.site-footer{flex-direction:column;align-items:flex-start;gap:8px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation:none!important}}@keyframes signal{0%{opacity:.9;transform:scale(.8)}to{opacity:0;transform:scale(2.2)}}@keyframes route-flow{to{stroke-dashoffset:-26px}}@keyframes blink{50%{opacity:.35}}@keyframes progress{0%{transform:translate(-120%)}60%,to{transform:translate(230%)}}@keyframes shimmer{to{background-position:-200% 0}}
