:root{color-scheme:dark}html,body.speedtest-page{height:100%;margin:0!important;background:#101113!important;overflow:hidden!important;color:#f2f2f7}
body.speedtest-page{--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--line:#30333c;--muted:#929aaa;--dial:clamp(185px,35dvh,285px);display:flex;flex-direction:column;font:14px/1.45 'Open Sans',system-ui,sans-serif}
.speedtest-page #bmnav{position:relative!important;top:0!important;background:#101113!important;border-bottom:1px solid #252831!important;box-shadow:none!important;height:50px!important;min-height:50px!important;flex:0 0 50px}
.speedtest-page #bmnav .in{height:50px!important;min-height:0!important}.speedtest-page #bmnav .wm{color:#eeeef5!important;font-size:24px!important}.speedtest-page #bmnav .nav,.speedtest-page #bmnav .right,.speedtest-page #bs-theme-toggle,.speedtest-page a[href="/dailyprogress/"]{display:none!important}
.skip{position:absolute;left:-9999px}.skip:focus{left:20px;top:8px;z-index:99999;background:#171a22;padding:10px}
#speedtest-app{width:100%;height:calc(100dvh - 50px);min-height:0;margin:0!important;max-width:none!important;padding:0 24px!important;background:radial-gradient(ellipse at 50% 35%,#29233340,transparent 45%),#101113!important;background-clip:border-box!important;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;color:#eceef7}
#speedtest-app *{box-sizing:border-box}#speedtest-app [hidden]{display:none!important}#speedtest-app button,#speedtest-app select{font:11px var(--mono);cursor:pointer}#speedtest-app button:disabled{cursor:default;opacity:.35}#speedtest-app :focus-visible{outline:2px solid #c8a8ee;outline-offset:4px}#speedtest-app a{color:inherit;text-underline-offset:3px}
#speedtest-app .hero{background:none!important;min-height:0!important;padding:12px 0 4px!important;margin:0 auto!important;width:100%;max-width:1050px!important;border:0!important}
.app-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}#speedtest-app h1{font:500 15px/1.3 Montserrat,system-ui,sans-serif!important;letter-spacing:-.025em;margin:0!important;color:#e4e7f0}#speedtest-app h1 span{color:#777f90;font-weight:400;font-size:12px}.app-heading>button,.panel-links button,.app-footer p button{background:none;color:#a8b0c1;border:0;padding:5px 0;font-size:10px!important}
.test-shell{width:100%;max-width:1050px;margin:0 auto;min-height:0;flex:1;display:flex;flex-direction:column;justify-content:center;background:none;border:0;padding:0}
.test-top{text-align:center;height:24px;flex-shrink:0}.test-top .eyebrow,.connection{display:none}#speedtest-app #test-title{font:10px/1.4 var(--mono)!important;letter-spacing:.02em;margin:0!important;color:#9ca4b6}
.test-grid{display:grid;grid-template-columns:minmax(0,1fr) var(--dial) minmax(0,1fr);grid-template-rows:var(--dial) auto auto;align-items:center;column-gap:28px;row-gap:14px;width:100%;margin:0 auto;min-height:0}
.dial-area{grid-column:2;grid-row:1;width:var(--dial);height:var(--dial);position:relative;padding:0;margin:auto;isolation:isolate}
.dial-area:before{content:'';position:absolute;inset:5px;border-radius:50%;background:conic-gradient(#c5a1ed,#efb8d7 18%,#ffc6a4 32%,#efe3a0 45%,#a3e2b6 61%,#97d6e6 76%,#a7bafa 88%,#c5a1ed);mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px))}
.dial{display:block;position:absolute;inset:0;width:100%;height:100%}.dial text{font:8px var(--mono);fill:#6f798c}#gauge{transition:none;will-change:stroke-dasharray}
.dial-center{position:absolute;inset:20%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center}
.go{width:clamp(83px,14dvh,112px);height:clamp(83px,14dvh,112px);padding:0;border-radius:50%;border:1px solid #5b5469;background:radial-gradient(circle at top,#302b3c,#1b1d25 75%);box-shadow:0 0 25px #bd9ee00c;color:#f5f1fc;font:500 23px Montserrat,system-ui,sans-serif!important;letter-spacing:.04em}
#live-value{font:500 clamp(30px,5.5dvh,48px)/1 var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-2.3px;color:#f3f1fa;white-space:nowrap;display:block;min-width:4ch}#live .unit{display:block;margin-top:7px;font:9px var(--mono);color:#98a2b5;letter-spacing:.04em}#phase{font:9px/1.3 var(--mono);color:#98a2b5;white-space:nowrap}
.stop{padding:5px 11px;border:1px solid #4d5361;border-radius:16px;background:#1a1d25;color:#c3cad8;font-size:9px!important}
.readings,.primary-readings{display:contents}.reading{border:0;background:none!important;text-align:center;min-width:0;align-self:center}.reading:first-child{grid-column:1;grid-row:1}.reading:nth-child(2){grid-column:3;grid-row:1}.reading>span{display:block;font:11px var(--mono);color:#a9b2c4;margin-bottom:10px}.reading strong{font:400 clamp(27px,4.4vw,55px)/1.15 var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-2px;display:block;color:#bdc9f2;white-space:nowrap}.reading:nth-child(2) strong{color:#b5ddbf}.reading small{display:block;margin-top:8px;font:9px var(--mono);color:#77849b}
.secondary-readings{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #2e3340;border-bottom:1px solid #2e3340;width:100%;max-width:850px;margin:0 auto}.secondary-readings>div{text-align:center;border-right:1px solid #2e3340;padding:10px 8px;min-width:0}.secondary-readings>div:last-child{border:0}.secondary-readings span{display:block;font:9px var(--mono);color:#8894aa;white-space:nowrap}.secondary-readings strong{display:inline-block;margin-top:4px;font:17px/1.4 var(--mono);font-variant-numeric:tabular-nums;color:#e2e6f0}.secondary-readings small{font:8px var(--mono);color:#78849a;margin-left:5px;white-space:nowrap}
.chart-wrap{grid-column:1/-1;grid-row:3;width:100%;max-width:850px;margin:auto;display:flex;align-items:center;gap:18px;height:44px}.graph-title{font:9px var(--mono);color:#8b97ac;min-width:110px}.graph-title>span:first-child{display:none}.legend{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.legend b{width:5px;height:5px;background:#b8bdf2}.legend b:nth-of-type(2){background:#b5ddbf}#chart{display:block;flex:1;min-width:0;height:44px}#chart path{stroke:#292d38}#down-line{stroke:#b8bdf2}#up-line{stroke:#b5ddbf}
.run-bar{max-width:850px;width:100%;margin:9px auto 0;min-height:30px}#progress{height:2px;background:#272c35;width:100%;margin:0 0 6px;overflow:hidden}#progress>div{height:100%;width:0;background:linear-gradient(90deg,#b5b9ef,#c7a8e5,#b4ddbc);transition:width .12s linear}#status{font:9px/1.4 var(--mono);text-align:center;color:#9da8ba;margin:0;white-space:normal}
.settings{display:flex;justify-content:center;align-items:center;gap:18px;padding-top:8px;flex-wrap:wrap;min-height:38px}.settings label{font:10px var(--mono);color:#8e9ab0;display:flex;gap:10px;align-items:center}.settings select{background:#1a1e27;color:#c8d1e2;border:1px solid #3c4454;padding:6px 9px;border-radius:6px;font-size:10px!important}.settings button{background:#ece8f5;color:#222332;border:0;border-radius:6px;padding:7px 12px}#data-note{display:none}
.app-footer{max-width:1050px;width:100%;margin:0 auto;padding:8px 0 9px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #252a34}.panel-links{display:flex;gap:18px}.app-footer p{font:9px/1.4 var(--mono);color:#728097;margin:0;max-width:390px;text-align:right}.app-footer p button{font-size:9px!important;color:#a9b6cc}
#info-dialog{color:#e0e5f1;background:#161a22;border:1px solid #414a5e;border-radius:14px;width:min(860px,calc(100vw - 32px));max-height:calc(100dvh - 36px);padding:22px;overflow:auto;overscroll-behavior:contain}#info-dialog::backdrop{background:#05070bd9;backdrop-filter:blur(8px)}.modal-top{display:flex;justify-content:space-between;gap:20px;align-items:center;border-bottom:1px solid #353c4b;padding-bottom:14px;font:12px var(--mono)}.modal-top button{border:1px solid #586175;background:#242a36;color:#dce3f1;border-radius:5px;padding:7px 12px}
#info-dialog h2{font:500 23px Montserrat,system-ui,sans-serif;color:#e6e9f2;margin:10px 0 15px}#info-dialog h3{font:500 16px Montserrat,system-ui,sans-serif;color:#dbe0eb}.eyebrow{font:9px var(--mono);color:#a8a0c5}.content-section{padding:20px 0;margin:0}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.actions{display:flex;gap:8px}.actions button,.text-button{color:#d2daec;background:#242b37;border:1px solid #485365;border-radius:5px;padding:8px 10px}.insights{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.insight{padding:15px;border:1px solid #353f50;border-radius:8px}.insight strong{font-size:13px}.insight p,.subtle,#result-note,.guide-grid p,.guide-grid li,.method-grid p,.methodology details p,.privacy,.fine,.methodology>p{font-size:12px;line-height:1.6;color:#a4b0c5}#action-status{font:11px var(--mono);color:#bac5d9}#copy-fallback{width:100%;min-height:130px;background:#171c25;color:#d9e0ef;border:1px solid #576076;padding:10px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;min-width:570px;font:11px var(--mono)}th,td{text-align:left;border-bottom:1px solid #394354;padding:12px 8px}th{color:#98a7c1;font-weight:400}.empty{font:12px var(--mono);color:#99a7c0;padding:24px 0}.technical-notes>summary{display:none}.guide-grid,.method-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.guide-grid ol{padding-left:18px}.guide-grid li{margin-bottom:10px}.guide-grid li strong,.guide-grid li span{display:block}.methodology summary{font:12px var(--mono);cursor:pointer;padding:14px 0;border-top:1px solid #394354}.source-links{display:flex;gap:18px;flex-wrap:wrap;font-size:11px}.error{color:#f4aaa5!important}
@media(max-width:650px){body.speedtest-page{--dial:clamp(162px,29dvh,245px)}#speedtest-app{padding:0 15px!important}.hero .app-heading{gap:8px}#speedtest-app h1{font-size:13px!important}#speedtest-app h1 span{display:none}.app-heading>button{font-size:9px!important}.test-grid{grid-template-columns:1fr 1fr;grid-template-rows:var(--dial) auto auto auto;gap:10px 16px}.dial-area{grid-column:1/-1;grid-row:1}.reading:first-child{grid-column:1;grid-row:2}.reading:nth-child(2){grid-column:2;grid-row:2}.reading>span{font-size:9px;margin-bottom:4px}.reading strong{font-size:28px;letter-spacing:-1.5px}.reading small{margin-top:3px;font-size:8px}.secondary-readings{grid-row:3}.secondary-readings>div{padding:7px 3px}.secondary-readings span{font-size:8px}.secondary-readings strong{font-size:13px}.secondary-readings small{display:block;margin:0;font-size:7px}.chart-wrap{grid-row:4;height:30px}.graph-title{min-width:85px;font-size:8px}#chart{height:30px}.test-top{height:20px}.run-bar{margin-top:5px;min-height:29px}#status{font-size:8px}.settings{min-height:33px;padding-top:5px;gap:10px}.settings label{font-size:9px;gap:7px}.settings select{font-size:9px!important;padding:5px 7px}.settings button{font-size:9px!important;padding:6px 8px}.app-footer{flex-direction:column;gap:5px;padding:7px 0}.panel-links{gap:19px}.panel-links button{font-size:9px!important;padding:0}.app-footer p{text-align:center;font-size:8px;max-width:none}.app-footer p button{font-size:8px!important;padding:0}.insights,.guide-grid,.method-grid{grid-template-columns:1fr}.section-heading{align-items:flex-start;flex-direction:column;gap:5px}#info-dialog{padding:17px}.go{font-size:21px!important}#phase{font-size:8px}.stop{font-size:8px!important;padding:4px 9px}}
@media(max-height:650px){body.speedtest-page{--dial:clamp(155px,28dvh,210px)}#speedtest-app .hero{padding:7px 0 3px!important}.test-grid{row-gap:7px}.chart-wrap{display:none}.test-top{height:20px}.secondary-readings>div{padding-top:6px;padding-bottom:6px}.run-bar{min-height:26px;margin-top:5px}.app-footer{padding-top:5px;padding-bottom:6px}.reading strong{font-size:29px}}
@media(prefers-reduced-motion:reduce){#progress>div{transition:none}}

#speedtest-app .app-footer{background:transparent!important;color:#929aaa!important;border-radius:0!important;padding:8px 0 9px!important;box-shadow:none!important}#speedtest-app .app-footer p{color:#8996ad!important}
@media(max-height:500px){body.speedtest-page{--dial:145px}#speedtest-app .hero{padding:5px 0 0!important}.test-top{height:18px}.test-grid{row-gap:5px}.secondary-readings>div{padding:4px}.secondary-readings strong{font-size:13px}.secondary-readings span{font-size:8px}.run-bar{min-height:23px;margin-top:3px}.settings{min-height:29px;padding-top:2px}.settings select{padding:3px 6px}.go{width:72px;height:72px;font-size:18px!important}.dial-center{gap:5px}#live-value{font-size:30px}#phase{font-size:7px}.stop{font-size:7px!important;padding:3px 7px}#speedtest-app .app-footer{padding:4px 0!important}.app-footer p{max-width:300px;font-size:8px}.panel-links{gap:12px}.panel-links button{font-size:9px!important}}
/* Continuous speedometer motion, with a calm fixed nonlinear scale. */
.dial-area:before{content:none}.dial-center{inset:0;display:block}.dial-center .go{position:absolute;left:50%;top:48.5%;transform:translate(-50%,-50%)}#live{position:absolute;bottom:1%;left:-12%;right:-12%;text-align:center}#live-value{font-family:'Helvetica Neue',Arial,sans-serif;font-weight:200;letter-spacing:-1.8px;font-size:clamp(31px,5.4dvh,47px);font-variant-numeric:tabular-nums;line-height:1.08}#live .unit{margin-top:3px;font-size:9px}.dial .dial-tick{font:600 10px system-ui,sans-serif;fill:#aeb8cb;letter-spacing:-.3px}#gauge-max{display:none}#needle{will-change:transform;filter:drop-shadow(0 0 3px #a1cce43d)}#gauge{filter:drop-shadow(0 0 5px #91dfdc33)}.test-top{height:27px;display:flex;justify-content:center;align-items:center}#speedtest-app #test-title{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}.test-top #phase{position:static;font:10px var(--mono);color:#a5b4cb;white-space:normal}.settings .stop{position:static;transform:none;margin:0;padding:6px 11px;background:#202635;color:#dce5f6;border:1px solid #59677d;border-radius:6px}#test[data-phase="upload"] #g stop:first-child{stop-color:#a4a0f4}#test[data-phase="upload"] #g stop:nth-child(2){stop-color:#c4a0ec}#test[data-phase="upload"] #g stop:last-child{stop-color:#ecb6dc}.reading strong{font-family:'Helvetica Neue',Arial,sans-serif;font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:-1.5px}.run-bar #progress>div{transition:width .16s linear}
@media(max-width:650px){.reading strong{font-size:32px}#live-value{font-size:clamp(29px,5.6dvh,43px)}.test-top #phase{font-size:9px}.dial .dial-tick{font-size:11px}.settings .stop{font-size:9px!important;padding:5px 9px}.test-top{height:22px}}
@media(max-height:500px){#live-value{font-size:28px}.test-top{height:19px}.test-top #phase{font-size:8px}.dial .dial-tick{font-size:12px}.reading strong{font-size:29px}}

.dial .dial-tick{font-size:14px}#test:not([data-phase]) #needle{opacity:0}@media(max-width:650px){.dial .dial-tick{font-size:15px}}
body.speedtest-page{--dial:clamp(210px,42dvh,390px)}@media(max-width:650px){body.speedtest-page{--dial:clamp(172px,32dvh,270px)}}@media(max-height:650px){body.speedtest-page{--dial:clamp(155px,28dvh,210px)}}@media(max-height:500px){body.speedtest-page{--dial:145px}}

/* Keep shared site controls from expanding the fixed-height test. */
#speedtest-app .app-heading>button,#speedtest-app .app-footer button{min-height:0!important;min-width:0!important;height:auto!important;padding:2px 0!important;border-radius:0!important;line-height:1.2!important;font-weight:400!important;background:none!important;border:0!important;box-shadow:none!important;color:#a8b5cb!important}
#speedtest-app .app-heading>button{font-size:10px!important}#speedtest-app .app-footer .panel-links button{font:10px/1.2 var(--mono)!important}
#speedtest-app .app-footer{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:15px!important;height:40px!important;min-height:40px!important;flex:0 0 40px!important;padding:8px 0!important}
#speedtest-app .app-footer p{font:9px/1.4 var(--mono)!important;margin:0!important}#speedtest-app .app-footer p button{font:9px/1.4 var(--mono)!important}
#speedtest-app .settings select{min-height:0!important;height:30px!important;padding:5px 9px!important;font:10px/1.3 var(--mono)!important;border-radius:8px!important;box-shadow:none!important}#speedtest-app .settings button{min-height:0!important;height:30px!important;padding:6px 12px!important;font:10px/1.3 var(--mono)!important;border-radius:16px!important}
@media(max-width:650px){#speedtest-app .app-footer{flex-direction:column!important;justify-content:center!important;gap:6px!important;height:56px!important;min-height:56px!important;flex-basis:56px!important;padding:6px 0!important}#speedtest-app .app-footer p,#speedtest-app .app-footer p button{font:8px/1.3 var(--mono)!important}#speedtest-app .app-footer .panel-links button{font-size:9px!important}#speedtest-app .settings select{font-size:9px!important;padding:5px 7px!important}#speedtest-app .settings button{font-size:9px!important;padding:5px 9px!important}}
@media(max-height:500px){#speedtest-app .app-footer{height:32px!important;min-height:32px!important;flex-basis:32px!important;padding:4px 0!important}#speedtest-app .settings select,#speedtest-app .settings button{height:27px!important}}
