:root{color-scheme:dark;--bg:#07101f;--panel:#0d192b;--panel-2:#111f34;--line:#203650;--text:#eef5ff;--muted:#9dafc7;--subtle:#7286a3;--cyan:#25d6ef;--green:#5af0b8;--purple:#d75cf2;--pink:#ff62c9;--blue:#3475f6;--gauge-a:#27c9ff;--gauge-b:#57efbc}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 50% -12%,#152d50 0,transparent 44%),var(--bg);color:var(--text);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.top{height:68px;border-bottom:1px solid #182a42;display:flex;align-items:center;justify-content:space-between;padding:0 max(22px,calc((100vw - 1100px)/2))}.brand{color:#f8fbff;text-decoration:none;font-size:22px;font-weight:850;letter-spacing:-1.2px}.brand span{color:#83b6ff;font-weight:500}.secure{display:flex;align-items:center;gap:9px;color:#b8c9df;font-size:12px}.secure i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 12px #5af0b899}main{width:min(100% - 36px,820px);margin:0 auto;padding:38px 0 26px}.intro{text-align:center;margin:0 auto 24px}.eyebrow{color:#80b5ff;font-size:10px;letter-spacing:2px;font-weight:750}.intro h1{font-size:30px;line-height:1.15;letter-spacing:-.7px;margin:7px 0 6px}.intro p{color:var(--muted);font-size:14px;margin:0}.tester{--gauge-a:#27c9ff;--gauge-b:#57efbc;position:relative;overflow:hidden;background:linear-gradient(155deg,#0e1b2e,#0a1424 75%);border:1px solid #263f60;border-radius:22px;padding:22px 28px 18px;box-shadow:0 24px 80px #0005}.tester:before{content:"";position:absolute;top:0;left:12%;right:12%;height:1px;background:linear-gradient(90deg,transparent,#6c9bdb66,transparent)}.result-row{display:grid;grid-template-columns:1fr 1fr;padding:4px 0 18px;border-bottom:1px solid #20334e}.result{display:grid;justify-items:center;gap:2px;min-width:0}.result+ .result{border-left:1px solid #263951}.result-label{display:flex;align-items:center;gap:7px;color:#b8c8dd;font-size:11px;letter-spacing:.75px}.result-label i{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;font-size:12px;font-style:normal;font-weight:800;color:#08121e;background:var(--cyan)}.result-upload .result-label i{color:#fff;background:var(--purple)}.result-label small{font-size:11px;letter-spacing:0;color:#8fa3bd}.result strong{font-size:40px;line-height:1.15;font-weight:400;letter-spacing:-1.3px;font-variant-numeric:tabular-nums;color:#f6f9ff}.quality-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:17px 20px 10px}.latency{display:flex;align-items:baseline;gap:6px;white-space:nowrap;color:#b6c7dc}.latency strong{font-size:18px;color:var(--text);font-variant-numeric:tabular-nums}.latency small{font-size:12px;color:var(--muted)}.latency .jitter{margin-left:8px;padding-left:12px;border-left:1px solid #34465e;color:#9eafc5;font-size:11px}.quality-icons{display:flex;gap:clamp(18px,4vw,34px);padding-right:7%}.quality-item{min-width:42px;display:grid;justify-items:center;gap:4px;color:#a7b7cb}.quality-item svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.quality-item small{font-size:9px;color:#8498b3}.quality-dots{display:flex;gap:3px}.quality-dots i{width:4px;height:4px;border-radius:50%;background:#48576d}.quality-item.active svg{color:var(--green)}.quality-item.active .quality-dots i{background:var(--green)}.quality-item.medium svg{color:#f0c447}.quality-item.medium .quality-dots i:nth-child(-n+3){background:#f0c447}.quality-item.poor svg{color:#fb6c88}.quality-item.poor .quality-dots i:nth-child(-n+2){background:#fb6c88}.gauge-wrap{width:min(100%,540px);margin:0 auto -8px;position:relative;transition:--gauge-a .3s}.tester[data-mode=upload]{--gauge-a:#c64df2;--gauge-b:#ff67c8}.gauge{display:block;width:100%;height:auto;overflow:visible}.gauge-base,.gauge-progress{fill:none;stroke-linecap:round;stroke-width:18}.gauge-base{stroke:#273449}.gauge-progress{stroke:url(#gauge-gradient);stroke-dasharray:1000;stroke-dashoffset:1000;transition:stroke-dashoffset .28s ease,stroke .25s ease}.gauge-labels{fill:#9fb0c7;font-size:12px;font-weight:650;text-anchor:middle}.gauge-labels text{transition:opacity .16s ease}.needle{fill:url(#needle-gradient);stroke:none;stroke-linejoin:round}.needle-hub{fill:#f1f7ff;stroke:#527aa5;stroke-width:4}.gauge-value{fill:#f3f7ff;font-size:38px;font-weight:350;letter-spacing:-1px;text-anchor:middle;font-variant-numeric:tabular-nums}.gauge-unit{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:-27px;color:#9eb0c7;font-size:13px}.gauge-unit i{font-style:normal;font-weight:800;color:var(--gauge-a)}.test-controls{margin:14px 0 0;padding-top:13px;border-top:1px solid #20334e}.test-status{display:flex;justify-content:space-between;gap:10px;color:#b7c8dc;font-size:11px;margin-bottom:7px}.test-status #phase[data-state=error]{color:#ff8996}.track{height:5px;border-radius:8px;background:#1d2e46;overflow:hidden}.track div{width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--gauge-a),var(--gauge-b));transition:width .2s ease}.test-controls button{display:block;margin:15px auto 0;min-width:148px;border:1px solid #4786ff;border-radius:12px;padding:11px 26px;background:linear-gradient(135deg,#3475f6,#2860dc);color:#fff;font-size:14px;font-weight:720;cursor:pointer;box-shadow:0 8px 24px #2860dc38;transition:transform .18s ease,filter .18s ease,box-shadow .18s ease}.test-controls button:hover{filter:brightness(1.12);transform:translateY(-1px);box-shadow:0 11px 26px #2860dc55}.test-controls button:disabled{opacity:.62;cursor:wait;transform:none}.server-footer{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:15px;border-top:1px solid #20334e}.server-mark{width:34px;height:34px;flex:0 0 34px;border:1px solid #38516f;border-radius:50%;display:grid;place-items:center;position:relative}.server-mark span{position:absolute;width:12px;height:12px;border:1.5px solid #9cb2ce;border-radius:3px;transform:translate(-3px,-2px)}.server-mark span+span{transform:translate(3px,3px);background:var(--panel)}.server-detail{display:grid;line-height:1.35}.server-detail small{font-size:9px;letter-spacing:1px;color:#8298b5}.server-detail strong{font-size:13px;color:#ecf3ff}.server-detail>span{font-size:11px;color:#9aadc5}.server-policy{margin-left:auto;color:#9badc5;font-size:11px;text-align:right}.privacy{max-width:720px;margin:14px auto 0;text-align:center;color:#7286a3;font-size:10px;line-height:1.55}.servers{margin-top:18px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px}.servers h2{font-size:15px;margin:0}.servers>p{color:var(--muted);font-size:12px;margin:4px 0 12px}.servers button{display:flex;width:100%;justify-content:space-between;text-align:left;background:#101e34;border:1px solid #203957;padding:11px 13px;border-radius:9px;color:var(--text);margin:7px 0;cursor:pointer}.servers button:hover{border-color:#4d84d5}footer{color:#7186a5;font-size:10px;text-align:center;margin:19px 0 0;line-height:1.8}footer a{color:#90b7f6;text-decoration:none}footer a:hover{text-decoration:underline}@media(max-width:620px){.top{height:58px;padding:0 16px}.brand{font-size:19px}main{width:min(100% - 24px,500px);padding:25px 0 18px}.intro{margin-bottom:18px}.intro h1{font-size:26px}.intro p{font-size:12px}.tester{border-radius:18px;padding:16px 14px 14px}.result-row{padding-bottom:13px}.result strong{font-size:34px}.quality-row{display:grid;gap:12px;padding:13px 0 7px}.quality-icons{justify-content:center;gap:clamp(12px,5vw,24px);padding-right:0}.quality-item{min-width:38px}.quality-item svg{width:26px;height:26px}.gauge-wrap{width:min(100%,430px);margin-bottom:-11px}.gauge-unit{margin-top:-15px}.test-controls{margin-top:11px}.server-footer{gap:9px;margin-top:14px;padding-top:12px}.server-mark{width:30px;height:30px;flex-basis:30px}.server-detail strong{font-size:12px}.server-policy{max-width:100px;font-size:10px}}@media(max-width:360px){.secure{font-size:10px}.quality-icons{gap:10px}.quality-item small{font-size:8px}.latency{gap:4px}.latency .jitter{margin-left:3px;padding-left:7px}.server-policy{display:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.top-actions{display:flex;align-items:center;gap:16px}.theme-toggle{display:inline-flex;align-items:center;gap:7px;border:1px solid #304866;border-radius:999px;padding:8px 12px;background:#12223a;color:#d9e7f7;font:600 11px/1.2 Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer;transition:background .2s,border-color .2s,transform .2s}.theme-toggle:hover{background:#1a3151;border-color:#5683ba;transform:translateY(-1px)}.theme-toggle span:first-child{font-size:15px;color:#8ac8ff}.theme-toggle:focus-visible,.test-controls button:focus-visible,.modal-primary:focus-visible,.modal-close:focus-visible{outline:3px solid #70b8ff;outline-offset:3px}.test-controls button{min-width:190px;border-radius:999px;padding:13px 30px;letter-spacing:.1px;box-shadow:0 10px 28px #2860dc4a}.test-controls button::before{content:'↻';display:inline-grid;place-items:center;width:21px;height:21px;margin-right:9px;border:1px solid #ffffff75;border-radius:50%;font-size:15px;line-height:1;vertical-align:-1px}.test-controls button:disabled::before{content:'·';animation:button-pulse 1s ease-in-out infinite}.test-controls button:hover{box-shadow:0 13px 32px #2860dc66}.result-modal{position:fixed;width:min(460px,calc(100% - 32px));max-width:none;max-height:calc(100% - 32px);overflow:auto;margin:auto;padding:30px;border:1px solid #355276;border-radius:24px;background:radial-gradient(ellipse at 50% 0,#172e4e 0,transparent 55%),linear-gradient(155deg,#101d30,#091322 82%);color:#eef5ff;box-shadow:0 28px 100px #0009;opacity:0;transform:translateY(12px) scale(.98);transition:opacity .22s ease,transform .22s ease}.result-modal[open]{opacity:1;transform:translateY(0) scale(1)}.result-modal::backdrop{background:#020815a8;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}.modal-close{position:absolute;top:13px;right:14px;display:grid;place-items:center;width:34px;height:34px;border:1px solid #344b68;border-radius:50%;background:#12223a;color:#c9d9ed;font-size:23px;line-height:1;cursor:pointer;transition:background .18s,transform .18s}.modal-close:hover{background:#203959;transform:rotate(90deg)}.modal-kicker{display:flex;align-items:center;gap:8px;color:#82b6ff;font-size:9px;font-weight:750;letter-spacing:1.8px}.modal-kicker span{width:7px;height:7px;border-radius:50%;background:#58edb7;box-shadow:0 0 12px #58edb780}.result-modal h2{margin:8px 42px 2px 0;font-size:24px;letter-spacing:-.5px}.modal-intro{margin:0;color:#9fb2ca;font-size:12px}.modal-results{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:22px 0 16px}.modal-result{display:grid;gap:4px;padding:13px 14px;border:1px solid #273d5a;border-radius:13px;background:#0c192a}.modal-result small{color:#8fa4bf;font-size:9px;font-weight:700;letter-spacing:1px}.modal-result strong{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums}.modal-download strong{color:#40d9ed}.modal-upload strong{color:#df69ef}.modal-server{display:flex;align-items:center;gap:11px;padding:13px 0;border-top:1px solid #263a54;border-bottom:1px solid #263a54}.modal-server-icon{display:grid;place-items:center;width:34px;height:34px;border:1px solid #3a5575;border-radius:50%;color:#98c1fa;font-size:20px}.modal-server>span:last-child{display:grid;gap:1px}.modal-server small{color:#849ab6;font-size:8px;letter-spacing:1px}.modal-server strong{font-size:12px}.modal-server em{color:#9badc5;font-size:10px;font-style:normal}.modal-primary{display:block;width:100%;margin-top:17px;border:1px solid #4b8cff;border-radius:13px;padding:12px 18px;background:linear-gradient(135deg,#3980ff,#285fdb);color:#fff;font:700 13px/1.3 Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer;box-shadow:0 8px 24px #2860dc38;transition:filter .18s,transform .18s,box-shadow .18s}.modal-primary:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 12px 28px #2860dc55}
body[data-theme="light"]{color-scheme:light;--bg:#f2f6fb;--panel:#fff;--panel-2:#f5f8fc;--line:#d8e2ee;--text:#18283d;--muted:#536984;--subtle:#73869d;background:radial-gradient(ellipse at 50% -12%,#d9eaff 0,transparent 45%),#f2f6fb;color:#18283d}body[data-theme="light"] .top{border-color:#dce5ef}body[data-theme="light"] .brand{color:#14243a}body[data-theme="light"] .brand span{color:#3676d8}body[data-theme="light"] .secure{color:#536984}body[data-theme="light"] .theme-toggle{background:#fff;border-color:#d3dfec;color:#38516e}body[data-theme="light"] .theme-toggle:hover{background:#edf5ff;border-color:#9cb9dc}body[data-theme="light"] .tester{background:linear-gradient(155deg,#fff,#f4f8fd 80%);border-color:#d5e0ec;box-shadow:0 18px 55px #36547718}body[data-theme="light"] .result-label{color:#536984}body[data-theme="light"] .result-label small{color:#73869d}body[data-theme="light"] .result strong,body[data-theme="light"] .server-detail strong,body[data-theme="light"] .gauge-value{color:#18283d;fill:#18283d}body[data-theme="light"] .result-row,body[data-theme="light"] .result+ .result,body[data-theme="light"] .test-controls,body[data-theme="light"] .server-footer{border-color:#dce5ef}body[data-theme="light"] .latency,body[data-theme="light"] .test-status{color:#536984}body[data-theme="light"] .latency .jitter{color:#71849b;border-color:#d5e0ec}body[data-theme="light"] .quality-item{color:#536984}body[data-theme="light"] .quality-item small,body[data-theme="light"] .server-detail small{color:#73869d}body[data-theme="light"] .gauge-base{stroke:#d8e1eb}body[data-theme="light"] .gauge-labels{fill:#526983}body[data-theme="light"] .gauge-unit{color:#60748d}body[data-theme="light"] .track{background:#dfe7f0}body[data-theme="light"] .server-mark{border-color:#c6d5e5}body[data-theme="light"] .server-mark span{border-color:#718aa6}body[data-theme="light"] .server-mark span+span{background:#fff}body[data-theme="light"] .server-detail>span,body[data-theme="light"] .server-policy{color:#657a94}body[data-theme="light"] .privacy,body[data-theme="light"] footer{color:#6b7f97}body[data-theme="light"] footer a{color:#356ec0}body[data-theme="light"] .servers{background:#fff;border-color:#d5e0ec}body[data-theme="light"] .servers button{background:#f6f9fd;border-color:#d5e0ec;color:#243951}body[data-theme="light"] .result-modal{background:radial-gradient(ellipse at 50% 0,#edf5ff 0,transparent 55%),linear-gradient(155deg,#fff,#f5f8fc 82%);border-color:#cfdaea;color:#18283d;box-shadow:0 28px 90px #18345438}body[data-theme="light"] .result-modal::backdrop{background:#22354d55}body[data-theme="light"] .modal-intro{color:#62768e}body[data-theme="light"] .modal-result{background:#f6f9fd;border-color:#dce5ef}body[data-theme="light"] .modal-result small,body[data-theme="light"] .modal-server small{color:#6b8099}body[data-theme="light"] .modal-server{border-color:#dce5ef}body[data-theme="light"] .modal-server em{color:#62768e}body[data-theme="light"] .modal-close{background:#f3f7fc;border-color:#d2deec;color:#50657e}body[data-theme="light"] .modal-close:hover{background:#e7f0fb}body[data-theme="light"] #needle-gradient stop:first-child{stop-color:#304257}body[data-theme="light"] #needle-gradient stop:nth-child(2){stop-color:#72869c}body[data-theme="light"] #needle-gradient stop:last-child{stop-color:#c7d3df}
@keyframes button-pulse{50%{opacity:.35}}@media(max-width:620px){.top-actions{gap:8px}.secure{font-size:0}.secure i{width:9px;height:9px}.theme-toggle{padding:7px 9px}.theme-toggle span:last-child{font-size:10px}.result-modal{padding:25px 20px 20px}.modal-results{gap:8px}.modal-result{padding:11px}.modal-result strong{font-size:18px}}@media(prefers-reduced-motion:reduce){.result-modal,.theme-toggle,.modal-close,.modal-primary{transition:none}}
.measurement-stage{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(240px,.85fr);align-items:center;gap:12px}.measurement-stage .gauge-wrap{width:100%;max-width:540px;margin:0 auto -8px}.performance-panel{min-width:0;padding:13px 12px;border:1px solid #273d59;border-radius:17px;background:linear-gradient(155deg,#0b1728,#0a1422)}.performance-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 13px}.performance-heading>div{display:grid;gap:3px}.performance-heading small{color:#849bb8;font-size:8px;font-weight:750;letter-spacing:1.3px}.performance-heading strong{font-size:11px;line-height:1.3}.live-badge{display:flex;align-items:center;gap:5px;padding:5px 7px;border:1px solid #1b5c4f;border-radius:99px;background:#10352f;color:#7fe5c1;font-size:7px;font-weight:750;letter-spacing:.5px;white-space:nowrap}.live-badge i{width:5px;height:5px;border-radius:50%;background:#5aefb8;box-shadow:0 0 8px #5aefb899}.speed-chart-card{min-width:0;padding:10px 9px 7px;border:1px solid #22364f;border-radius:12px;background:#0d1a2b}.speed-chart-card+.speed-chart-card{margin-top:9px}.chart-title{display:flex;justify-content:space-between;align-items:center;gap:6px;color:#aebfd4;font-size:9px}.chart-title span{display:flex;align-items:center;gap:6px}.chart-title span i{width:7px;height:7px;border-radius:50%;background:#28d2e9}.upload-chart-card .chart-title span i{background:#dd5dec}.chart-title strong{color:#eef5ff;font-size:9px;font-variant-numeric:tabular-nums}.speed-chart{display:block;width:100%;height:92px;overflow:visible}.chart-grid{fill:none;stroke:#26384f;stroke-width:1;stroke-dasharray:2 4}.chart-area{stroke:none;opacity:.16;transition:d .14s linear}.download-area{fill:#29d1e8}.upload-area{fill:#dd5dec}.chart-line{fill:none;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 5px #0004);transition:d .14s linear}.download-line{stroke:#35d4e9}.upload-line{stroke:#e15ce9}.chart-caption{margin:10px 2px 0;color:#8297b2;font-size:8px;line-height:1.4}.modal-charts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.modal-charts section{min-width:0;padding:9px;border:1px solid #273d5a;border-radius:12px;background:#0c192a}.modal-charts section>small{color:#8fa4bf;font-size:8px;font-weight:750;letter-spacing:.7px}.modal-charts .speed-chart{height:90px;margin-top:4px}.modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:17px}.modal-actions .modal-primary{margin:0}.modal-secondary{border:1px solid #3d5b7e;border-radius:13px;padding:12px 14px;background:#14243a;color:#d6e5f7;font:700 12px/1.3 Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer;transition:background .18s,border-color .18s}.modal-secondary:hover{background:#1b3352;border-color:#6e94c2}.result-modal{width:min(620px,calc(100% - 28px))}.result-modal .modal-results{margin:17px 0 12px}body[data-theme="light"] .performance-panel{border-color:#d7e2ef;background:linear-gradient(155deg,#fff,#f4f8fd)}body[data-theme="light"] .performance-heading small,body[data-theme="light"] .chart-caption{color:#71859d}body[data-theme="light"] .performance-heading strong{color:#243950}body[data-theme="light"] .speed-chart-card,body[data-theme="light"] .modal-charts section{background:#f7f9fc;border-color:#dbe4ee}body[data-theme="light"] .chart-title{color:#647991}body[data-theme="light"] .chart-title strong{color:#243950}body[data-theme="light"] .chart-grid{stroke:#d9e2ec}body[data-theme="light"] .modal-charts section>small{color:#657a92}body[data-theme="light"] .modal-secondary{background:#f0f5fb;color:#314963;border-color:#cbd9e8}body[data-theme="light"] .modal-secondary:hover{background:#e4effb;border-color:#9eb9d8}@media(max-width:760px){.measurement-stage{grid-template-columns:1fr;gap:4px}.measurement-stage .gauge-wrap{width:min(100%,510px)}.performance-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}.performance-heading,.chart-caption{grid-column:1/-1}.performance-heading{margin-bottom:2px}.speed-chart-card+.speed-chart-card{margin-top:0}.speed-chart{height:100px}}@media(max-width:420px){.performance-panel{gap:6px;padding:9px}.speed-chart-card{padding:8px 6px 4px}.chart-title{align-items:flex-start;flex-direction:column;gap:3px}.speed-chart{height:83px}.result-modal{padding:23px 15px 16px}.modal-charts{gap:6px}.modal-charts section{padding:6px}.modal-charts .speed-chart{height:72px}.modal-actions{gap:7px}.modal-secondary,.modal-actions .modal-primary{padding:11px 7px;font-size:11px}}
@media print{body{background:#fff!important}.top,main,.servers{display:none!important}.result-modal[open]{position:static;display:block;width:auto;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:visible;background:#fff;color:#17263a;box-shadow:none;opacity:1;transform:none}.result-modal::backdrop,.modal-close,.modal-actions{display:none!important}.modal-kicker{color:#3977dd}.result-modal h2,.modal-result strong,.modal-server strong{color:#17263a}.modal-intro,.modal-server em,.modal-result small,.modal-server small{color:#637991}.modal-result,.modal-charts section{background:#f7f9fc;border-color:#d8e2ee}.chart-grid{stroke:#dfe7f0}.modal-charts{margin:20px 0}.modal-charts .speed-chart{height:150px}.modal-server{border-color:#d8e2ee}.modal-charts section>small{color:#657a92}.modal-download strong{color:#079db5}.modal-upload strong{color:#b63ac5}}
