.theme-toggle{display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid #e5eaf1;border-radius:7px;background:#fff;color:#566981;font:600 11px 'DM Sans',sans-serif;cursor:pointer;white-space:nowrap}
.admin-open{text-decoration:none}
.page-note{margin:22px 0 0;color:#929dab;font-size:10px;text-align:center}
.test-size-control{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:0 auto 20px}
.test-size-control label{font-size:9px;color:#8291a4;font-weight:700;letter-spacing:1px}
.test-size-control select{height:35px;min-width:175px;padding:0 10px;border:1px solid #e3e8ef;border-radius:6px;background:#fff;color:#31445b;font:12px 'DM Sans',sans-serif}
.test-size-control p{flex-basis:100%;margin:0;color:#98a3b2;font-size:10px}
.local-speed-notice{max-width:560px;margin:5px auto 16px;padding:10px 12px;border:1px solid #f0dfb9;border-radius:7px;background:#fffaf0;color:#8b6b2a;font-size:10px;line-height:1.5}
.theme-toggle:hover{border-color:#a9b9d2;color:#4569cf}
body.dark-theme{background:#101722;color:#e0e7f0}
.dark-theme .topbar{background:#151f2d;border-color:#263243}
.dark-theme .brand{color:#eef3fa}
.dark-theme .live,.dark-theme .admin-open,.dark-theme .text-button{color:#aab8cb}
.dark-theme .theme-toggle{background:#202b3a;border-color:#344257;color:#d4deeb}
.dark-theme .panel{background:#182332;border-color:#28364a;box-shadow:0 4px 16px #0002}
.dark-theme .section-head h2,.dark-theme .modal h2{color:#e6edf6}
.dark-theme .section-sub,.dark-theme .duration,.dark-theme .privacy-note,.dark-theme .history-empty{color:#93a1b5}
.dark-theme .info-item{border-color:#2b394b}
.dark-theme .info-icon{background:#24334d;color:#91aafa}
.dark-theme .info-item small,.dark-theme .info-item strong{color:#aab8cb}
.dark-theme .info-item strong{color:#e0e7f0}
.dark-theme .gauge-ring{background:conic-gradient(#334156 0deg,#202c3b 270deg,#334156 360deg)}
.dark-theme .gauge-ring:before{background:#182332}
.dark-theme .main-gauge .gauge-ring{background:conic-gradient(#4e79eb 0deg,#7292e5 100deg,#263448 101deg,#263448 360deg)}
.dark-theme .gauge-value{color:#e5edf7}
.dark-theme .main-gauge .gauge-value{color:#91aaff}
.dark-theme .gauge-value small,.dark-theme .gauge>span,.dark-theme .speed-status{color:#9cabc0}
.dark-theme .share-copy strong{color:#e2eaf4}
.dark-theme .share-copy div>span{color:#9eacc0}
.dark-theme .copy-btn{background:#202d3e;border-color:#34445b;color:#a9baff}
.dark-theme .trace-field label,.dark-theme .modal form label{color:#9eacc0}
.dark-theme .trace-field select,.dark-theme .trace-field input,.dark-theme .modal input,.dark-theme .add-server input{background:#111b29;border-color:#344257;color:#e0e7f0}
.dark-theme .trace-divider{color:#9eacc0}
.dark-theme .trace-divider:before,.dark-theme .trace-divider:after{background:#2a384b}
.dark-theme .empty-trace{color:#9caac0}
.dark-theme .empty-trace strong{color:#d2dce9}
.dark-theme .trace-output pre{color:#c2d0e2}
.dark-theme .history-row,.dark-theme .server-row,.dark-theme .result-admin-row{border-color:#29384a}
.dark-theme .history-main strong,.dark-theme .server-row strong,.dark-theme .result-admin-row strong{color:#e2eaf4}
.dark-theme .history-main small,.dark-theme .server-row small,.dark-theme .result-admin-row small{color:#a0aec1}
.dark-theme .history-stats{color:#aebfe0}
.dark-theme .mini-copy,.dark-theme .delete-btn{filter:brightness(1.2)}
.dark-theme footer{border-color:#293648;color:#9baabe}
.dark-theme .modal-card{background:#182332;color:#e0e7f0}
.dark-theme .modal p{color:#a3b0c3}
.dark-theme .admin-tabs{border-color:#2b394b}
.dark-theme .tab{color:#a0aec1}
.dark-theme .tab.active{color:#9cafef;border-color:#7896f1}
.dark-theme .modal-close{color:#a4b2c6}
.dark-theme .test-size-control label,.dark-theme .test-size-control p{color:#9eacc0}
.dark-theme .test-size-control select{background:#111b29;border-color:#344257;color:#e0e7f0}
.dark-theme .local-speed-notice{background:#302a1d;border-color:#594c2f;color:#e2c886}
@media(max-width:520px){.theme-toggle{padding:8px}.theme-toggle span{display:none}}
.speed-section,.traffic-section{margin-top:45px}
.test-size-control .measurement-note{max-width:650px;margin:2px auto 0;line-height:1.6}
.measurement-note a{color:#5472c3;text-decoration:none;font-weight:600}
.measurement-note a:hover{text-decoration:underline}
.traffic-panel{margin-top:19px;padding:24px;text-align:center}
.traffic-explainer{max-width:760px;margin:0 auto 14px;color:#8190a2;font-size:11px;line-height:1.65}
.traffic-panel .speed-btn{margin-top:2px}
.traffic-result{max-width:780px;margin:22px auto 0;padding-top:18px;border-top:1px solid #edf0f4;text-align:left}
.traffic-result>strong{display:block;color:#31445b;font:700 14px Manrope,sans-serif;text-align:center}
.traffic-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}
.traffic-grid>div{padding:13px 10px;border:1px solid #edf0f4;border-radius:8px;text-align:center}
.traffic-grid small,.traffic-grid b{display:block}
.traffic-grid small{color:#8291a4;font-size:9px}
.traffic-grid b{margin-top:7px;color:#3b5ea8;font-size:15px}
#trafficInterpretation{margin:13px 0 0;color:#8190a2;font-size:10px;line-height:1.6;text-align:center}
#shareDetails{display:block;margin-top:5px;color:#8795a7;font-size:10px}
.dark-theme .measurement-note a{color:#a9baff}
.dark-theme .traffic-explainer,.dark-theme #trafficInterpretation{color:#a0aec1}
.dark-theme .traffic-result{border-color:#29384a}
.dark-theme .traffic-result>strong{color:#e2eaf4}
.dark-theme .traffic-grid>div{border-color:#334257}
.dark-theme .traffic-grid small{color:#a0aec1}
.dark-theme .traffic-grid b{color:#adc0fa}
.dark-theme #shareDetails{color:#a0aec1}
@media(max-width:700px){.traffic-grid{grid-template-columns:1fr 1fr}}
.traffic-result>.traffic-verdict{padding:11px 15px;border-radius:8px;background:#fff8e7;color:#8a5a00!important;line-height:1.5}
.traffic-result>.traffic-verdict.detected{background:#fff0ef;color:#a52e2e!important}
.traffic-result>.traffic-verdict.not-detected{background:#eaf8f0;color:#187044!important}
.dark-theme .traffic-result>.traffic-verdict{background:#3a3020;color:#ffda8a!important}
.dark-theme .traffic-result>.traffic-verdict.detected{background:#3d2528;color:#ffaaaa!important}
.dark-theme .traffic-result>.traffic-verdict.not-detected{background:#1d382c;color:#98e3b4!important}
.gauge-ring.speedometer{--meter-angle:0deg;--needle-angle:-135deg;--meter-fill:#4e79eb;--meter-track:#edf1f7;background:conic-gradient(from -90deg,var(--meter-fill) 0deg,var(--meter-fill) var(--meter-angle),var(--meter-track) var(--meter-angle),var(--meter-track) 360deg);transition:background .18s linear}
.gauge-ring.speedometer:before{z-index:0}
.speed-needle{position:absolute;z-index:1;left:calc(50% - 1px);top:9%;width:2px;height:42%;border-radius:2px;background:#314f9f;transform-origin:50% 100%;transform:rotate(var(--needle-angle,-135deg));transition:transform .18s linear}
.speed-needle-hub{position:absolute;z-index:2;left:calc(50% - 4px);top:calc(50% - 4px);width:8px;height:8px;border:2px solid #4e79eb;border-radius:50%;background:#fff}
.dark-theme .gauge-ring.speedometer{--meter-fill:#7292e5;--meter-track:#263448}
.dark-theme .speed-needle{background:#adc0fa}
.dark-theme .speed-needle-hub{border-color:#91aaff;background:#182332}
.gauge-ring.speedometer .gauge-value{z-index:3}

/* Speedtest visual refresh */
.speed-panel{position:relative;overflow:hidden;padding:25px 30px 23px;background:radial-gradient(ellipse at 50% -35%,#eef4ff 0%,#fff 62%);border-color:#dce6f4}
.speed-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:19px;margin-bottom:18px;border-bottom:1px solid #e7edf5;text-align:left}
.speed-panel-title{display:flex;align-items:center;gap:12px}.speed-panel-title strong,.speed-panel-title small{display:block}.speed-panel-title strong{font:700 14px Manrope,sans-serif;color:#233550}.speed-panel-title small{margin-top:4px;color:#8190a2;font-size:10px}
.speed-panel-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#5278eb,#58b8d6);color:#fff;font-size:18px;box-shadow:0 6px 16px #5278eb38}
.speed-target{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid #e1e8f2;border-radius:20px;color:#708098;font-size:10px;white-space:nowrap}.speed-target>span{font-size:9px;color:#35bd89}.speed-target b{color:#425b85}
.test-size-control{padding:14px 16px;border:1px solid #e9eef5;border-radius:12px;background:#ffffffa8}.test-size-control label{color:#71809a}.test-size-control select{height:39px;border-color:#dbe4f0;border-radius:8px;font-weight:600}.test-size-control p{font-size:10px}.test-size-control .measurement-note{color:#7c8ba0}
.speed-phases{display:flex;justify-content:center;align-items:center;gap:0;max-width:610px;margin:26px auto 22px}.speed-phases span{position:relative;display:flex;align-items:center;gap:7px;padding:0 24px;color:#9ba8b8;font-size:10px;font-weight:600}.speed-phases span+span:before{content:'';position:absolute;right:100%;top:50%;width:34px;height:1px;background:#dce4ef}.speed-phases i{display:grid;place-items:center;width:22px;height:22px;border:1px solid #d9e2ee;border-radius:50%;font-size:8px;font-style:normal}.speed-phases .active{color:#4169d8}.speed-phases .active i{border-color:#5278eb;background:#5278eb;color:white;box-shadow:0 0 0 4px #5278eb18}.speed-phases .done{color:#31a67a}.speed-phases .done i{border-color:#5cc49a;background:#e9f8f1;color:#25865f}
.speed-gauges{gap:30px}.speed-panel .gauge{min-width:150px;padding:17px 13px 13px;border:1px solid #e7edf5;border-radius:16px;background:#ffffffb8}.speed-panel .main-gauge{min-width:190px;padding:13px 15px 13px;border-color:#dce6f8;background:linear-gradient(155deg,#f7f9ff,#fff)}.speed-panel .gauge-ring{width:112px;height:112px}.speed-panel .main-gauge .gauge-ring{width:152px;height:152px}.speed-panel .gauge>span{font-size:9px;color:#73839b}.speed-panel .main-gauge>span{color:#5274cc}.speed-btn{min-height:46px;border-radius:12px;background:linear-gradient(110deg,#4d6fe3,#4894dc);box-shadow:0 8px 18px #4779df38;font-size:12px}.speed-btn:hover{transform:translateY(-1px);box-shadow:0 11px 24px #4779df4a}.speed-btn:disabled{opacity:.74;transform:none}.speed-status{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:32px;margin:15px auto 0;padding:7px 13px;border:1px solid #e7edf5;border-radius:18px;background:#ffffffa8;color:#71809a;font-size:10px}.speed-status:before{content:'';width:6px;height:6px;border-radius:50%;background:#38b987;box-shadow:0 0 0 3px #38b98720}
.dark-theme .speed-panel{background:radial-gradient(ellipse at 50% -38%,#233757 0%,#182332 62%);border-color:#2e4059;box-shadow:0 18px 48px #03091250}
.dark-theme .speed-panel-head{border-color:#2b3b51}.dark-theme .speed-panel-title strong{color:#e6edf6}.dark-theme .speed-panel-title small{color:#9aabc1}.dark-theme .speed-target{border-color:#34465f;background:#152131;color:#aab8cb}.dark-theme .speed-target b{color:#dce7f8}
.dark-theme .test-size-control{border-color:#2c3b50;background:#111c2a88}.dark-theme .test-size-control .measurement-note{color:#9eacc0}.dark-theme .speed-phases span{color:#7f91aa}.dark-theme .speed-phases span+span:before{background:#35465d}.dark-theme .speed-phases i{border-color:#3a4c65}.dark-theme .speed-phases .active{color:#a9baff}.dark-theme .speed-phases .active i{border-color:#7895f3;background:#5278eb}.dark-theme .speed-phases .done{color:#82d4b1}.dark-theme .speed-phases .done i{border-color:#3f9a78;background:#20392f;color:#9ce2c2}
.dark-theme .speed-panel .gauge{border-color:#2b3b51;background:#111c2a9c}.dark-theme .speed-panel .main-gauge{border-color:#3a4d70;background:linear-gradient(155deg,#1e2d43,#152131)}.dark-theme .speed-panel .gauge>span{color:#a4b2c6}.dark-theme .speed-panel .main-gauge>span{color:#a9baff}.dark-theme .speed-status{border-color:#304159;background:#111c2a;color:#a7b5c9}
@media(max-width:700px){.speed-panel{padding:19px 14px}.speed-panel-head{align-items:flex-start}.speed-target{font-size:9px}.speed-gauges{gap:9px}.speed-panel .gauge{min-width:0;flex:1;padding:12px 5px}.speed-panel .main-gauge{flex:1.18}.speed-panel .gauge-ring{width:min(25vw,100px);height:min(25vw,100px)}.speed-panel .main-gauge .gauge-ring{width:min(31vw,128px);height:min(31vw,128px)}.speed-phases span{padding:0 13px;font-size:9px}.speed-phases span+span:before{width:18px}}
@media(max-width:480px){.speed-panel-head{flex-direction:column}.speed-target{align-self:flex-start}.speed-phases span{padding:0 8px}.speed-phases span+span:before{width:12px}.speed-panel .gauge-value{font-size:20px}}