@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fdfdfd;--grid-line:#f2f2f2;--grid-size:80px;--panel:#fff;--panel-2:#fafafa;--wash:#f4f4f4;--wash-2:#ebebeb;--line:#e7e7e7;--line-strong:#d3d3d3;--ink:#292929;--body:#4d4d4d;--muted:#6b6b6b;--faint:#8f8f8f;--accent:#f46021;--accent-ink:#c4470f;--accent-wash:#fff4ea;--good:#2b7a4b;--warn:#b45309;--bad:#b42318;--info:#1f5f99;--violet:#6b46c1;--c-edge:#f46021;--c-client:#1f5f99;--c-pop:#7a7a7a;--c-land:#e4e4e4;--font-sans:"Inter Variable", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fs-2xs:.6875rem;--fs-xs:.75rem;--fs-sm:.8125rem;--fs-md:.875rem;--fs-base:.875rem;--fs-lg:1rem;--fs-xl:1.125rem;--fs-2xl:1.375rem;--fs-3xl:clamp(1.75rem, 1.6vw + 1rem, 2.5rem);--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--inset:20px;--bar-h:54px;--foot-h:40px;--pad-x:clamp(16px, 2vw, 32px);--panel-width:20rem;--legend-width:16.25rem;--panel-gap:var(--sp-4);--shadow-pop:0 14px 32px -14px #29292947;--ease:cubic-bezier(.6, .6, 0, 1);--dur-fast:.2s;--dur-med:.3s}@media (prefers-reduced-motion:reduce){:root{--dur-fast:.01ms;--dur-med:.01ms}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--body);background-color:var(--bg);background-image:linear-gradient(to right, var(--grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);background-size:var(--grid-size) var(--grid-size);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;background-position:-1px -1px;min-height:100dvh;line-height:1.5;display:flow-root;position:relative;overflow:hidden}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none}select{color:inherit;font-family:inherit}a{color:var(--accent-ink)}strong{color:var(--ink);font-weight:600}code{border:1px solid var(--line);background:var(--wash);color:var(--ink);font-family:var(--font-mono);padding:0 4px;font-size:.86em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.label{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500;line-height:1.4}.label-sep{color:var(--faint);margin:0 6px}.accent{color:var(--accent)}.arrow{transition:transform .25s var(--ease);display:inline-block}a:hover .arrow{transform:translate(3px)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hidden{opacity:0!important;pointer-events:none!important}.app{z-index:1;height:calc(100dvh - 2 * var(--inset));margin:var(--inset);border:1px solid var(--line-strong);background:#fdfdfd8c;flex-direction:column;display:flex;position:relative}.frame-corner{z-index:120;background:var(--accent);pointer-events:none;width:5px;height:5px;position:absolute}.frame-corner--tl{top:-3px;left:-3px}.frame-corner--tr{top:-3px;right:-3px}.frame-corner--bl{bottom:-3px;left:-3px}.frame-corner--br{bottom:-3px;right:-3px}.frame-side{z-index:5;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);white-space:nowrap;writing-mode:vertical-rl;pointer-events:none;font-size:10px;position:fixed;top:50%}.frame-side--left{left:4px;transform:translateY(-50%)rotate(180deg)}.frame-side--right{right:4px;transform:translateY(-50%)}.rule{left:calc(-1 * var(--inset) - 1px);right:calc(-1 * var(--inset) - 1px);background:repeating-linear-gradient(to right, var(--line-strong) 0 4px, transparent 4px 8px);pointer-events:none;height:1px;position:absolute}.app-header{justify-content:space-between;align-items:center;gap:var(--sp-6);height:var(--bar-h);padding:0 var(--pad-x);z-index:100;background:#fdfdfdf0;flex-shrink:0;display:flex;position:relative}.app-header .rule{bottom:-1px}.logo{min-width:0;color:var(--ink);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:11px;font-size:15px;font-weight:560;text-decoration:none;display:inline-flex}.logo-mark{flex-shrink:0;width:22px;height:22px;display:block}.logo-divider{background:var(--line-strong);width:1px;height:16px}.logo-subtitle{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500}.header-meta{align-items:center;gap:var(--sp-5);height:100%;display:flex}.stats{align-items:center;gap:var(--sp-4);padding-right:var(--sp-5);border-right:1px solid var(--line);display:flex}.stat{align-items:baseline;gap:7px;display:flex}.stat-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:500}.stat-value{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.tabs{align-items:stretch;gap:2px;height:100%;display:flex}.tabs a{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;transition:color var(--dur-fast) var(--ease);align-items:center;padding:0 12px;font-weight:500;text-decoration:none;display:inline-flex;position:relative}.tabs a:after{content:"";background:var(--accent);height:2px;transition:transform var(--dur-med) var(--ease);position:absolute;bottom:0;left:12px;right:12px;transform:scaleX(0)}.tabs a:hover,.tabs a[aria-current]{color:var(--ink)}.tabs a[aria-current]:after{transform:scaleX(1)}.tabs-num{color:var(--faint);margin-right:6px}.main-content{grid-template-columns:var(--panel-width) minmax(0, 1fr) var(--legend-width);gap:var(--panel-gap);min-height:0;padding:var(--panel-gap);flex:1;grid-template-rows:1fr auto;grid-template-areas:"service globe legend""service history history";display:grid;position:relative;overflow:hidden}.globe-container{grid-area:1/2/2/-1;place-items:center;min-height:0;display:grid;position:relative}.globe-svg{cursor:grab;position:absolute;inset:0}.globe-svg.is-grabbing{cursor:grabbing}.globe-sphere{stroke:var(--line-strong);stroke-width:1px}.graticule-layer path{fill:none;stroke:var(--wash-2);stroke-width:.6px}.land-layer path{fill:var(--c-land);stroke:#cfcfcf;stroke-width:.5px}.pop-marker{cursor:pointer}.panel-stack--left{gap:var(--panel-gap);z-index:50;flex-direction:column;grid-area:service;min-height:0;display:flex;overflow:hidden}.panel-stack--left>.glass-panel:first-child{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;overscroll-behavior:contain;flex:0 auto;min-height:0;overflow-y:auto}.panel-stack--left>.glass-panel:last-child{flex:none}.panel-stack--right{justify-content:flex-end;gap:var(--panel-gap);z-index:50;flex-direction:column;grid-area:1/legend/2;min-height:0;display:flex}.globe-controls{border:1px solid var(--line-strong);background:var(--panel);z-index:55;flex-direction:column;display:flex;position:absolute;top:0;left:0}.globe-control-btn{width:2.125rem;height:2.125rem;color:var(--muted);background:var(--panel);transition:color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease);place-items:center;display:grid}.globe-control-btn+.globe-control-btn{border-top:1px solid var(--line)}.globe-control-btn:hover{color:var(--ink);background:var(--panel-2)}.globe-control-btn.active{color:#fff;background:var(--ink)}.click-hint{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--shadow-pop);white-space:nowrap;pointer-events:none;transition:opacity var(--dur-med) var(--ease);z-index:60;padding:8px 14px;font-weight:500;position:absolute;bottom:15%;left:50%;transform:translate(-50%)}.click-hint strong{color:var(--accent-ink)}.loading-overlay{place-items:center;gap:var(--sp-3);background:var(--bg);z-index:200;transition:opacity var(--dur-med) var(--ease);grid-auto-flow:row;align-content:center;display:grid;position:absolute;inset:0}.spinner{background:var(--line);width:10rem;height:2px;position:relative;overflow:hidden}.spinner:after{content:"";background:var(--accent);width:40%;animation:load-slide 1.1s var(--ease) infinite;position:absolute;inset:0}@keyframes load-slide{0%{transform:translate(-100%)}to{transform:translate(250%)}}.loading-text{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.shortcuts{background:var(--panel);border:1px solid var(--line-strong);width:15.5rem;box-shadow:var(--shadow-pop);z-index:56;padding:10px 12px;position:absolute;top:0;left:2.875rem}.shortcuts[hidden]{display:none}.shortcuts-title{border-bottom:1px solid var(--wash);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-bottom:6px;padding-bottom:6px;font-weight:600}.shortcuts-list>div{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:3px 0;display:flex}.shortcuts-list dt{font-size:var(--fs-xs);color:var(--ink);white-space:nowrap;gap:3px;display:flex}.shortcuts-list dd{font-size:var(--fs-xs);color:var(--muted);text-align:right}kbd{min-width:1.25rem;font-family:var(--font-mono);text-align:center;color:var(--ink);background:var(--wash);border:1px solid var(--line-strong);border-bottom-width:2px;padding:0 4px;font-size:10.5px;line-height:1.6;display:inline-block}.app-footer{min-height:var(--foot-h);padding:0 var(--pad-x);z-index:100;background:#fdfdfdf0;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:4px 24px;display:flex;position:relative}.app-footer .rule{top:-1px}.app-footer-left{align-items:center;gap:10px;min-width:0;display:flex}.live-dot{background:var(--accent);flex:none;width:6px;height:6px}.app-footer-right{flex-wrap:wrap;gap:4px 16px;display:flex}.app-footer-right a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px}.app-footer-right a:hover{color:var(--accent-ink);text-decoration-color:currentColor}@media (width<=768px){.shortcuts,#btn-help{display:none}}.glass-panel{background:var(--panel);border:1px solid var(--line);flex-shrink:0;position:relative}.panel-head{z-index:2;background:var(--panel-2);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px 16px;min-height:2.25rem;padding:6px 14px;display:flex;position:sticky;top:0}.panel-label{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);white-space:nowrap;font-weight:500}.panel-num{color:var(--accent);margin-right:8px;font-weight:600}.panel-hint{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.panel-body{padding:14px}.section-title{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:16px 0 6px;font-weight:500}.section-title:first-child{margin-top:0}.panel-select{width:100%;min-height:2.5rem;padding:0 var(--sp-8) 0 12px;font-size:var(--fs-md);color:var(--ink);background-color:var(--panel);border:1px solid var(--line-strong);cursor:pointer;appearance:none;transition:border-color var(--dur-fast) var(--ease);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23292929' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;background-size:14px;border-radius:0}.panel-select:hover{border-color:var(--ink)}.panel-select optgroup,.panel-select option{background:var(--panel);color:var(--ink)}.service-select{font-size:var(--fs-lg);letter-spacing:-.01em;font-weight:560}.service-description{font-size:var(--fs-sm);color:var(--body);text-wrap:pretty;margin-top:12px;line-height:1.55}.service-stats[hidden]{display:none}.service-stats{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:14px;display:grid}.service-stat{background:var(--panel);align-content:start;gap:2px;min-width:0;padding:8px 10px;display:grid}.service-stat:last-child:nth-child(odd){grid-column:1/-1}.service-stat-label{min-width:0;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:flex-start;gap:6px;font-size:10px;font-weight:500;line-height:1.3;display:flex}.service-stat-key{flex:none;width:8px;height:8px;margin-top:2.5px}.service-stat-value{font-size:var(--fs-xl);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:break-word;font-weight:500;line-height:1.25}.service-stat-value--text{font-size:var(--fs-base);letter-spacing:-.005em;padding-top:2px;line-height:1.3}.demo-options:not(:empty){margin-top:16px}.demo-options>:first-child{margin-top:0}.mode-toggle{border:1px solid var(--line-strong);background:var(--panel);display:flex}.mode-btn{min-width:0;min-height:2.125rem;font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);transition:background-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);background:0 0;flex:1 1 0;padding:6px 8px;font-weight:500;line-height:1.25}.mode-btn+.mode-btn{border-left:1px solid var(--line)}.mode-btn:hover:not(.active){color:var(--ink);background:var(--panel-2)}.mode-btn.active{color:#fff;background:var(--ink)}.toggle-row{border:1px solid var(--line-strong);background:var(--panel);cursor:pointer;min-height:2.25rem;transition:border-color var(--dur-fast) var(--ease);flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:10px;margin-top:10px;padding:0 12px;display:flex}.toggle-row:hover{border-color:var(--ink)}.toggle-label{font-size:var(--fs-sm);color:var(--ink);font-weight:500}.toggle-switch{background:var(--panel);border:1px solid var(--ink);width:14px;height:14px;transition:background-color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);flex-shrink:0;position:relative}.toggle-switch:after{content:"";opacity:0;border:1.5px solid #fff;border-width:0 1.5px 1.5px 0;width:4px;height:8px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.toggle-switch.active{background:var(--accent);border-color:var(--accent)}.toggle-switch.active:after{opacity:1}.info-hint{font-size:var(--fs-xs);color:var(--body);background:var(--panel-2);border:1px solid var(--line);border-left:2px solid var(--line-strong);margin-top:12px;padding:10px 12px;line-height:1.55}.btn-row{gap:8px;display:flex}.btn-row+.btn-row{margin-top:8px}.btn{min-height:2.5rem;font-size:var(--fs-sm);letter-spacing:-.005em;color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);transition:color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);flex:1;justify-content:center;align-items:center;gap:8px;padding:6px 14px;font-weight:560;line-height:1.2;display:inline-flex}.btn:hover{border-color:var(--ink)}.btn--primary{color:#fff;background:var(--ink);border-color:var(--ink)}.btn--primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.btn--danger{color:var(--bad)}.btn--danger:hover{border-color:var(--bad);background:#fdf4f3}.demo-hint{font-size:var(--fs-xs);color:var(--body);background:var(--accent-wash);border-left:2px solid var(--accent);opacity:0;transition:opacity var(--dur-fast) var(--ease);margin-top:12px;padding:10px 12px;line-height:1.55}.demo-hint.visible{opacity:1}.legend-items{gap:7px;display:grid}.legend-item{font-size:var(--fs-sm);color:var(--body);align-items:center;gap:10px;line-height:1.35;display:flex}.legend-icon{flex-shrink:0;place-items:center;width:1.125rem;display:grid}.legend-dot{border-radius:50%;width:8px;height:8px}.legend-line{width:1.125rem;height:2px}.latency-history{background:var(--panel);border:1px solid var(--line);z-index:50;flex-direction:column;grid-area:history;min-height:0;display:flex;container-type:inline-size}.latency-history-header{background:var(--panel-2);border-bottom:1px solid var(--line);align-items:center;gap:4px;min-height:2.25rem;padding:4px 8px 4px 14px;display:flex}.latency-history-title{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-right:auto;font-weight:500}.latency-history-toggle,.latency-history-clear{width:1.625rem;height:1.625rem;color:var(--muted);transition:color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);border:1px solid #0000;place-items:center;display:grid}.latency-history-toggle:hover,.latency-history-clear:hover{color:var(--ink);background:var(--panel);border-color:var(--line-strong)}.latency-history-toggle svg{transition:transform var(--dur-fast) var(--ease)}.latency-history-toggle.collapsed svg{transform:rotate(-90deg)}.latency-disclaimer{font-size:var(--fs-xs);color:var(--muted);padding:10px 14px 0 38px;line-height:1.5;position:relative}.latency-disclaimer:before{content:"";background:var(--accent);width:14px;height:1px;position:absolute;top:calc(10px + .75em);left:14px}.latency-aggregates{background:var(--line);border:1px solid var(--line);gap:1px;margin:10px 14px 0;display:flex}.latency-agg-section{gap:1px;display:flex}.latency-agg{background:var(--panel);flex-direction:column;min-width:4.5rem;padding:6px 12px;display:flex}.latency-agg-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:500}.latency-agg-value{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.latency-agg--p50 .latency-agg-value,.latency-agg--best .latency-agg-value{color:var(--good)}.latency-agg--p75 .latency-agg-value{color:var(--warn)}.latency-agg--p90 .latency-agg-value{color:var(--accent-ink)}.latency-agg--worst .latency-agg-value{color:var(--bad)}.latency-agg-divider{background:var(--wash);flex:0 0 4px}.latency-agg-count{background:var(--panel);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;flex:auto;justify-content:flex-end;align-items:center;padding:0 12px;font-size:10.5px;display:flex}.latency-agg-count:empty:before{content:"No samples yet"}@container (width<=620px){.latency-aggregates{flex-wrap:wrap}.latency-agg-section{display:contents}.latency-agg{flex:calc(33.3333% - .666667px);min-width:0}.latency-agg-divider{display:none}.latency-agg-count{flex:100%;justify-content:flex-start;padding:6px 12px}}.latency-history-scroll{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;min-height:7.5rem;margin:10px 14px 12px;display:flex;overflow:auto hidden}.latency-history-scroll:empty:before{content:"No requests yet — click the globe to add a client, or run the demo";border:1px dashed var(--line-strong);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-align:center;text-transform:uppercase;color:var(--muted);flex:1;justify-content:center;align-items:center;padding:0 16px;display:flex}.latency-history-scroll::-webkit-scrollbar{height:6px}.latency-history-scroll::-webkit-scrollbar-thumb{background:var(--line-strong)}.latency-card{background:var(--panel);border:1px solid var(--line);width:13.75rem;animation:card-in var(--dur-med) ease-out;flex:none;padding:10px 12px}.latency-card+.latency-card{margin-left:-1px}.latency-card:first-child{box-shadow:inset 0 2px 0 var(--accent)}@keyframes card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.latency-total{border-bottom:1px solid var(--wash);align-items:baseline;gap:4px;margin-bottom:8px;padding-bottom:7px;display:flex}.latency-total-value{letter-spacing:-.035em;color:var(--ink);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:480;line-height:1}.latency-total-unit{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted)}.latency-total-hops{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-left:auto;font-size:10px}.latency-hops{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;grid-template-columns:minmax(0,1fr);gap:3px;max-height:8.25rem;display:grid;overflow-y:auto}.latency-hop{align-items:center;gap:8px;font-size:11.5px;line-height:1.4;display:flex}.latency-hop-color{flex-shrink:0;width:6px;height:6px}.latency-hop-label{min-width:0;color:var(--body);white-space:nowrap;text-overflow:ellipsis;flex:auto;overflow:hidden}.latency-hop-ms{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--ink);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto;font-weight:600}.latency-tags{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.latency-tag{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent-ink);border:1px solid;padding:1px 6px;font-size:10px;font-weight:600;line-height:1.4}.latency-tag--warm,.latency-tag--local{color:var(--good)}.latency-tag--cold{color:var(--info)}.latency-tag--miss{color:var(--bad)}.latency-tag--remote{color:var(--warn)}.latency-tag--regional{color:var(--violet)}.gate-overlay{z-index:2000;-webkit-backdrop-filter:blur(6px);background:#fdfdfdd1;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.gate-overlay[hidden]{display:none}.gate-dialog{background:var(--panel);border:1px solid var(--line-strong);width:100%;max-width:640px;animation:gateIn .28s var(--ease);margin:auto;padding:32px 36px;position:relative;box-shadow:0 30px 60px -30px #29292959}.gate-dialog:before{content:"";pointer-events:none;background:linear-gradient(var(--accent), var(--accent)) 0 0 / 5px 5px no-repeat, linear-gradient(var(--accent), var(--accent)) 100% 0 / 5px 5px no-repeat, linear-gradient(var(--accent), var(--accent)) 0 100% / 5px 5px no-repeat, linear-gradient(var(--accent), var(--accent)) 100% 100% / 5px 5px no-repeat;position:absolute;inset:-3px}@keyframes gateIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.gate-eyebrow{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:10px;margin-bottom:18px;font-weight:500;display:flex}.gate-eyebrow-tag{background:var(--accent-ink);color:#fff;letter-spacing:.09em;align-items:center;height:22px;padding:0 8px;font-weight:600;display:inline-flex}.gate-title{font-size:var(--fs-3xl);letter-spacing:-.038em;color:var(--ink);text-wrap:balance;margin-bottom:16px;font-weight:480;line-height:1.04}.gate-body p{color:var(--body);text-wrap:pretty;margin-bottom:12px;font-size:15px;line-height:1.6}.gate-points{counter-reset:gate;border:1px solid var(--line);margin:20px 0;list-style:none}.gate-points li{counter-increment:gate;font-size:var(--fs-md);color:var(--body);padding:12px 16px 12px 52px;line-height:1.55;position:relative}.gate-points li+li{border-top:1px solid var(--line)}.gate-points li:before{content:counter(gate, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;color:var(--accent);font-weight:600;position:absolute;top:14px;left:16px}.gate-warning{font-size:var(--fs-md);color:var(--ink);margin:18px 0 24px;padding-left:24px;line-height:1.55;position:relative}.gate-warning:before{content:"";background:var(--accent);width:14px;height:1px;position:absolute;top:.75em;left:0}.gate-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px;display:flex}.gate-accept{flex:auto;min-width:240px;min-height:2.75rem;font-size:15px}.gate-docs-link{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px;white-space:nowrap;font-weight:500}.gate-docs-link:hover{color:var(--accent-ink);text-decoration-color:currentColor}.gate-chip{height:22px;font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.09em;text-transform:uppercase;white-space:nowrap;color:#fff;background:var(--accent-ink);transition:background-color var(--dur-fast) var(--ease);align-items:center;gap:6px;padding:0 8px;font-weight:600;display:inline-flex}.gate-chip:hover{background:var(--ink)}.gate-chip svg{flex-shrink:0}.gate-chip.gate-chip--inline{vertical-align:1px;height:18px;color:var(--accent-ink);background:0 0;border:1px solid;margin-left:6px;padding:0 6px;font-size:10px}.gate-chip.gate-chip--inline:hover{color:#fff;background:var(--accent-ink)}@media (prefers-reduced-motion:reduce){.gate-dialog{animation:none}}@media (width<=768px){.gate-overlay{align-items:stretch;padding:0}.gate-dialog{max-width:none;padding:24px 20px calc(24px + env(safe-area-inset-bottom,0px));box-shadow:none;border:none;margin:0}.gate-dialog:before{display:none}.gate-points li{padding:10px 12px 10px 44px}.gate-points li:before{top:12px;left:12px}.gate-actions{flex-direction:column;align-items:stretch}.gate-accept{min-width:0}.gate-docs-link{text-align:center}.gate-chip:not(.gate-chip--inline) .gate-chip-text{display:none}.gate-chip:not(.gate-chip--inline){padding:0 5px}}@media (width>=1600px){:root{--panel-width:22rem;--legend-width:18rem}}@media (width<=1320px){.logo-subtitle,.logo-divider{display:none}}@media (width<=1200px){:root{--panel-width:17.5rem;--legend-width:14rem;--panel-gap:var(--sp-3)}.header-meta{gap:var(--sp-3)}.stats{gap:var(--sp-3);padding-right:var(--sp-3)}.panel-body{padding:12px}}@media (width>=769px) and (height<=820px){.app-footer{display:none}}@media (width<=1024px){.tabs{display:none}.stats{border-right:none;padding-right:0}.main-content{grid-template-columns:var(--panel-width) minmax(0, 1fr);grid-template-rows:1fr auto;grid-template-areas:"service globe""service history"}.panel-stack--right{grid-area:globe;justify-content:flex-start;place-self:start end;width:min(13rem,40%)}.latency-card{width:12.5rem}}@media (width>=769px) and (width<=1024px) and (orientation:portrait){.main-content{grid-template-rows:minmax(0,1fr) auto auto;grid-template-areas:"service globe""service legend""service history"}.panel-stack--right{grid-area:legend;place-self:stretch stretch;width:auto}.panel-stack--right .legend-items{flex-wrap:wrap;gap:6px 18px;display:flex}}@media (width<=768px){:root{--inset:8px;--bar-h:48px;--foot-h:34px;--grid-size:56px}.frame-side{display:none}.app-header{gap:var(--sp-3);padding:0 12px}.logo{gap:9px;font-size:14px}.logo-mark{width:20px;height:20px}.stats{gap:10px}.stat{gap:5px}.stat-label{font-size:9.5px}.stat-value{font-size:var(--fs-xs)}.app-footer{justify-content:center;padding:0 12px}.app-footer-left{display:none}.main-content{flex-direction:column;gap:0;padding:0;display:flex;overflow:hidden}.globe-container{flex:auto;order:0;min-height:38dvh}.drawer-handle{order:1}.panel-stack--left{order:2}.panel-stack--right{order:3;align-self:stretch;width:auto}.latency-history{order:4}.globe-controls{top:8px;left:auto;right:8px}.globe-control-btn{width:2rem;height:2rem}.click-hint{white-space:normal;text-align:center;max-width:80%;top:45%;bottom:auto}.glass-panel,.latency-history{border:none;border-top:1px solid var(--line)}.panel-head{position:static}.drawer-handle{justify-content:center;align-items:center;gap:var(--sp-2);background:var(--panel-2);border-top:1px solid var(--line-strong);z-index:60;cursor:pointer;flex-shrink:0;padding:6px;display:flex}.drawer-handle-bar{background:var(--ink);width:2.5rem;height:2px}.drawer-chevron{color:var(--muted);transition:transform var(--dur-med) var(--ease)}.main-content.drawer-open .drawer-chevron{transform:rotate(180deg)}.panel-stack--left,.panel-stack--right,.latency-history{display:none}.main-content.drawer-open{overflow-y:auto}.main-content.drawer-open .panel-stack--left,.main-content.drawer-open .panel-stack--right,.main-content.drawer-open .latency-history{flex-direction:column;flex-shrink:0;gap:0;display:flex;overflow:visible}.main-content.drawer-open .globe-container{flex:0 0 38dvh}.latency-history-scroll,.latency-aggregates{display:none}.latency-history-scroll{min-height:0}.latency-history-scroll:empty:before{min-height:3rem}.latency-history.history-visible .latency-history-scroll,.latency-history.history-visible .latency-aggregates.visible{display:flex}.latency-card{width:11.25rem}.main-content.drawer-open>:last-child{padding-bottom:calc(var(--sp-4) + env(safe-area-inset-bottom,0px))}}@media (width<=420px){.stat:first-child{display:none}}@media (width>=769px){.drawer-handle{display:none}}
