@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600;650;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:light;--bg:#f5f7f9;--panel:#ffffff;--line:#dce3e8;--text:#17252e;--muted:#526571;--lime:#245bd6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:16px 'DM Sans',sans-serif}header,main,footer{max-width:1180px;margin:auto}header{height:112px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dce3e8}.brand{font:700 29px 'Space Grotesk',sans-serif;display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;letter-spacing:-1.2px}.brand svg{width:35px;fill:none;stroke:var(--lime);stroke-width:3}.beta{font:500 10px 'DM Sans',sans-serif;letter-spacing:1.5px;border:1px solid #c6d7fa;border-radius:4px;color:var(--lime);padding:5px 7px;margin-left:5px}.about-link{font-size:14px;color:#435764;text-decoration:none}.about-link span{margin-left:15px;color:var(--lime)}main{padding:51px 60px 0}.intro{text-align:center}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--lime);font-weight:600}.eyebrow span{display:inline-block;width:6px;height:6px;background:var(--lime);border-radius:50%;margin:0 9px 2px 0}h1{font:500 58px/1.1 'Space Grotesk',sans-serif;letter-spacing:-2.6px;margin:18px 0 12px}.intro p{color:var(--muted);margin:0 0 35px}.test-panel{border:1px solid #d7e0e6;border-radius:18px;background:radial-gradient(ellipse at 25% 20%,#ffffff 0%,#ffffff 60%);overflow:hidden;box-shadow:0 20px 80px #2037470d}.panel-top{display:flex;justify-content:space-between;padding:23px 27px;font-size:13px;color:#526571}.status-dot{display:inline-block;width:6px;height:6px;background:var(--lime);border-radius:50%;margin-right:9px}.tag{font-size:10px;letter-spacing:1.7px;color:#61717b}.test-body{display:grid;grid-template-columns:1.3fr 1fr;padding:4px 45px 29px;gap:44px}.gauge-area{position:relative;text-align:center}.gauge{width:100%;display:block;overflow:visible}.gauge path{fill:none}.outer{stroke:#b4c1c9;stroke-width:2;stroke-dasharray:1 10}.track{stroke:#e2e9ed;stroke-width:13;stroke-linecap:round}#arc{stroke:var(--lime);stroke-width:13;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .45s}.gauge text{fill:#566c79;font:12px 'DM Sans',sans-serif}.gauge-value{position:absolute;top:33%;left:0;right:0;display:flex;align-items:center;flex-direction:column}.gauge-value>span:first-child{font-size:9px;letter-spacing:1.2px;color:#526571}.gauge-value strong{font:500 68px/1.2 'Space Grotesk',sans-serif;letter-spacing:-3px}.gauge-value #unit{color:#526571;font-size:14px}button{font:650 16px 'DM Sans',sans-serif;background:var(--lime);color:#ffffff;border:0;border-radius:9px;padding:17px 32px;cursor:pointer;min-width:200px;transition:background .2s,transform .2s}button:hover{background:#1948b5;transform:translateY(-2px)}button span{margin-left:33px;font-size:20px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--lime);outline-offset:6px}.test-note{font-size:12px;color:#596f7c;margin:15px 0 0}.metrics{padding-top:20px}.metric{padding:0 0 23px;margin:0 0 24px;border-bottom:1px solid var(--line)}.metric-label{font-size:14px;color:#435a68;margin-bottom:12px}.metric-icon{color:var(--lime);margin-right:7px;font-size:20px}.blue{color:#176eae}.metric strong,.small-metrics strong{font:500 44px 'Space Grotesk',sans-serif;letter-spacing:-1.5px}.metric div>span:not(.metric-icon),.small-metrics div>span{color:#5c6f7a;font-size:13px;margin-left:9px}.mini-track{height:3px;margin-top:15px;background:#e0e8ed}.mini-track i{display:block;width:0;height:100%;background:var(--lime);transition:width .3s}#upbar{background:#176eae}.small-metrics{display:grid;grid-template-columns:1fr 1fr}.small-metrics>div+div{border-left:1px solid var(--line);padding-left:25px}.small-metrics strong{font-size:28px}.connection{border-top:1px solid #dce3e8;display:flex;align-items:center;gap:50px;padding:22px 28px;background:#f7f9fa}.connection>div{display:flex;gap:12px;align-items:center}.connection-icon{font-size:27px;color:#607783}.connection small{display:block;color:#586e7b;font-size:9px;letter-spacing:1.4px;margin-bottom:5px}.connection b{font-size:13px;font-weight:500}.connection .connection-end{font-size:12px;color:#586e7b;margin-left:auto;gap:10px}.connection-end span{color:var(--lime)}.bottom-note{display:flex;justify-content:space-between;color:#5a6e7a;font-size:11px;margin:20px 0 62px}#how{scroll-margin-top:30px}.section-label{font-size:10px;color:var(--lime);letter-spacing:1.7px}h2{font:500 27px 'Space Grotesk',sans-serif;letter-spacing:-.7px;margin:12px 0 27px}.explain-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:35px}.explain-grid article{border-top:1px solid var(--line);padding-top:24px}.explain-icon{color:var(--lime);font-size:22px}h3{font-size:15px;font-weight:500;margin:15px 0 9px}.explain-grid p,details p{font-size:14px;line-height:1.75;color:#536874;margin:0}details{border-top:1px solid var(--line);margin:30px 0 45px;padding-top:18px}summary{cursor:pointer;font-size:14px;color:#334d5c}details p{margin-top:16px}details a{color:var(--lime)}footer{border-top:1px solid #dce3e8;display:flex;justify-content:space-between;align-items:center;padding:28px 0 35px;color:#61717b;font-size:12px}.footer-brand{font:600 20px 'Space Grotesk',sans-serif;color:#435a68}@media(min-width:1450px){header,main,footer{max-width:1250px}main{padding-top:65px}.test-body{padding-top:15px}}@media(max-width:900px){header,footer{margin:0 25px}main{padding:40px 25px 0}.test-body{gap:20px;padding:10px 25px 30px}.connection{gap:25px}.connection .connection-end{display:none}}@media(max-width:600px){header{height:85px}.brand{font-size:24px}.about-link{font-size:12px}.beta{display:none}main{padding:35px 18px 0}h1{font-size:44px}.intro p{font-size:14px}.test-body{grid-template-columns:1fr;padding:0 24px 25px;gap:35px}.gauge-area{max-width:380px;width:100%;margin:auto}.panel-top{padding:20px}.tag{display:none}.gauge-value{top:31%}.metrics{padding:0;display:grid;grid-template-columns:1fr 1fr;gap:22px}.metric{margin:0}.metric strong{font-size:35px}.small-metrics{grid-column:1/-1}.connection{padding:20px;gap:25px}.connection-icon{display:none}.bottom-note{display:block;text-align:center;line-height:2;margin-bottom:45px}.bottom-note>span{display:block}.explain-grid{grid-template-columns:1fr;gap:25px}h2{font-size:26px}.explain-grid article{display:grid;grid-template-columns:25px 1fr;column-gap:12px}.explain-grid h3{margin:3px 0 10px}.explain-grid p{grid-column:2}footer{flex-wrap:wrap;gap:16px}footer>span:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.view-control{display:flex;justify-content:center;gap:4px;margin:-10px auto 25px;background:#eaf0f3;border:1px solid var(--line);padding:4px;border-radius:10px;width:max-content}.view-control button{font-size:13px;padding:10px 16px;min-width:0;background:transparent;color:var(--muted);border-radius:6px}.view-control button[aria-pressed=true]{background:#ffffff;color:#17252e}.view-control button:hover{transform:none;color:var(--lime)}.insights{margin-top:38px}.insight-heading{display:flex;justify-content:space-between;align-items:center}.insight-heading h2{font-size:23px;margin-bottom:20px}.insight-heading>span{font-size:12px;color:var(--muted)}.diagnostic-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}.chart-card,.loaded-card{background:#ffffff;border:1px solid var(--line);border-radius:12px;padding:22px}.chart-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.chart-heading h3,.loaded-card h3{margin:0 0 18px}.chart-heading span{font-size:11px;color:var(--muted)}.chart-heading i{display:inline-block;width:5px;height:5px;background:var(--lime);margin:0 4px 2px}.chart-heading .upload-key{background:#176eae;margin-left:9px}#chart{width:100%;height:150px;overflow:visible}.gridline{stroke:#d9e3e8;stroke-width:1;stroke-dasharray:3 5;fill:none}#chart polyline{fill:none;stroke:var(--lime);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}#chart #upload-line{stroke:#176eae}.chart-caption{display:flex;justify-content:space-between;font-size:11px;color:#5b707d}.loaded-card>div{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin:14px 0;color:#526571}.loaded-card b{color:#17252e;font-weight:500}.loaded-card p,.quality-grid p,.quality-note{font-size:12px;line-height:1.6;color:#596e7b;margin-bottom:0}.quality-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}.quality-grid article{padding:20px;border:1px solid var(--line);border-radius:12px}.quality-grid article>span{font-size:14px;color:#435a68}.quality-grid strong{display:block;font:500 22px 'Space Grotesk',sans-serif;color:var(--lime);margin-top:17px}.quality-note{text-align:right}.quick-view .metrics,.quick-view .insights{display:none}.quick-view .test-body{display:block}.quick-view .gauge-area{max-width:440px;margin:auto}.quick-view .gauge-value strong{font-size:86px}.quick-view .gauge-value{top:29%}@media(max-width:650px){.diagnostic-grid,.quality-grid{grid-template-columns:1fr}.insight-heading{display:block}.insight-heading>span{display:block;margin-bottom:18px}.chart-heading{align-items:baseline}.chart-heading span{white-space:nowrap}.quality-grid{gap:10px}.quality-grid strong{margin-top:10px}.quality-note{text-align:left}}
h1{font-size:48px}.setup{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:16px;margin:30px 0 12px}label{font-size:14px;color:#435a68;display:block}select,input:not([type=checkbox]){display:block;width:100%;background:#ffffff;border:1px solid #b8c7d0;border-radius:7px;color:var(--text);padding:12px;font:14px 'DM Sans',sans-serif;margin-top:8px}select:focus-visible,input:focus-visible{outline:2px solid var(--lime);outline-offset:3px}.budget{text-align:center;color:#526571;font-size:13px;margin:16px 0 26px}button:disabled{opacity:.45;cursor:not-allowed;transform:none}.secondary{background:transparent;color:var(--lime);border:1px solid #aac2f3;font-size:14px;padding:12px 17px;min-width:0}.secondary:hover{background:#eaf1ff}.evidence-card,.experiment,.history-section{border:1px solid var(--line);border-radius:14px;padding:26px;margin-top:24px;background:#ffffff}.evidence-card h3{font:500 24px 'Space Grotesk',sans-serif}.evidence-card p,.experiment p,.muted{font-size:14px;line-height:1.7;color:#526571}.evidence-card .tag{display:inline-block;margin-top:14px;color:var(--lime)}.evidence-card ul{padding-left:18px;color:#82551a;font-size:13px;line-height:1.8}#sample-evidence{font-size:13px;line-height:1.8;color:#526571}.steps{display:flex;gap:22px;flex-wrap:wrap;color:var(--lime);font-size:13px;margin:20px 0}.experiment-controls{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:25px 0 10px}.experiment #retest{font-size:14px}.history-heading{display:flex;justify-content:space-between;gap:15px;align-items:baseline}.remember{display:flex;gap:10px;align-items:center}.remember input{accent-color:var(--lime);width:17px;height:17px}.history-row{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);padding:17px 0;font-size:13px}.history-row b{display:block;font-weight:500;color:#334d5c;margin-bottom:6px}.history-row small{font-size:12px;color:#5b707d}.text-button{background:none;color:#526571;font-size:12px;padding:15px 0;min-width:0}.text-button:hover{background:none;color:var(--lime)}.compare-table{width:100%;border-collapse:collapse;font-size:14px;margin:20px 0}.compare-table th,.compare-table td{text-align:left;border-bottom:1px solid var(--line);padding:12px 6px}.compare-table th{font-weight:500;color:#526571}.warning{color:#82551a!important}.table-scroll{overflow-x:auto}.comparison-title{font-size:22px;color:var(--lime)}.history-section{margin-bottom:40px}@media(max-width:600px){h1{font-size:37px}.setup{grid-template-columns:1fr 1fr}.setup>label:first-child{grid-column:1/-1}.experiment-controls{grid-template-columns:1fr}.evidence-card,.experiment,.history-section{padding:20px}.history-heading{align-items:center}.history-heading h2{font-size:22px}.history-row{flex-wrap:wrap}.compare-table{font-size:12px}.steps{gap:10px}}
#export-panel{margin:20px 0;padding:20px;background:#f6f8fa;border:1px solid var(--line);border-radius:10px}.download-link{color:var(--lime);font-size:14px}#export-panel textarea{width:100%;resize:vertical;background:#f5f7f9;color:#435a68;border:1px solid var(--line);padding:12px;font:12px/1.6 monospace}

/* Light-theme blue accents. */
button{background:#245bd6;color:#ffffff}.view-control button{background:transparent;color:var(--muted)}.view-control button[aria-pressed=true]{background:#fff;color:#263d4a;box-shadow:0 1px 4px #20374712}.secondary,.text-button{background:transparent;color:var(--lime)}.test-panel{background:#fff}.beta{background:#eaf1ff}#arc{stroke:#3478ed}.status-dot{background:#3478ed}.remember input{accent-color:#245bd6}

.gauge-face{position:relative}.gauge-face .gauge-value{top:32%}.gauge-face .gauge-value strong{font-size:clamp(40px,5vw,68px)}.gauge-face #start{position:absolute;top:78%;left:50%;transform:translateX(-50%);min-width:150px;padding:12px 24px;font-size:15px;white-space:nowrap}.gauge-face #start:hover{transform:translateX(-50%)}.gauge-area .test-note{margin-top:18px}

.gauge-face.awaiting-test .gauge-value{visibility:hidden}.gauge-face.awaiting-test #start{top:50%;transform:translate(-50%,-50%)}.gauge-face.awaiting-test #start:hover{transform:translate(-50%,-50%)}

.test-body{align-items:center;padding-top:38px;padding-bottom:38px}.gauge-area{width:100%;max-width:460px;justify-self:center;align-self:center}.metrics{padding-top:0}.panel-top:has(#status:empty){visibility:hidden}.test-note:empty{display:none}.gauge-face.awaiting-test #arc{visibility:hidden}.connection{justify-content:space-between;gap:24px;flex-wrap:wrap}.connection b{overflow-wrap:anywhere}.insight-heading h2{margin-top:0}@media(max-width:600px){.test-body{padding-top:45px}.connection>div{min-width:110px}}

/* Keep the status slot and gauge position stable between test states. */
.panel-top{min-height:62px;align-items:center;padding:20px 27px}
.test-body{grid-template-columns:minmax(0,1fr);gap:26px;padding:18px 45px 32px}
.gauge-area{margin:0 auto}
.gauge-area .test-note{min-height:30px;margin:12px 0 0}
.test-note:empty{display:block;visibility:hidden}
.metrics{display:grid;grid-template-columns:1.25fr 1.25fr 1fr 1fr;gap:24px;align-items:start;width:100%}
.metric{border-bottom:0;margin:0;padding:0}
.small-metrics{display:contents}
.small-metrics>div+div{border-left:0;padding-left:0}
.small-metrics strong{font-size:36px}
.connection{justify-content:flex-start;gap:48px;text-align:left}
@media(max-width:600px){.test-body{padding:18px 24px 28px}.metrics{grid-template-columns:1fr 1fr;gap:24px}.connection{gap:24px}.small-metrics{grid-column:auto}}

/* Gauge and metrics remain side by side on desktop. */
.test-body{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:44px}
.metrics{display:block}
.metric{padding:0 0 23px;margin:0 0 24px;border-bottom:1px solid var(--line)}
.small-metrics{display:grid;grid-template-columns:1fr 1fr}
.small-metrics>div+div{border-left:1px solid var(--line);padding-left:25px}
.small-metrics strong{font-size:28px}
@media(max-width:900px){.test-body{gap:20px}}
@media(max-width:600px){.test-body{grid-template-columns:1fr;gap:35px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:22px}.metric{margin:0}.small-metrics{grid-column:1/-1}}

.gauge text{opacity:1;transition:opacity .65s ease}
.gauge-face.awaiting-test .gauge text{opacity:0}
@media(prefers-reduced-motion:reduce){.gauge text{transition:none}}

/* Notes must not pull the visible gauge above the metrics' center. */
.gauge-area .test-note{position:absolute;top:100%;left:0;right:0;min-height:0;margin:12px 0 0}

#upload-arc{stroke:#176eae;stroke-width:11;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .45s,opacity .65s}
.upload-track{stroke-width:11;stroke:#e7eff4}
.gauge-face.awaiting-test #upload-arc{visibility:hidden}
.gauge-face .gauge-value{top:34%}
.gauge-value>span:first-child{font-size:8px;letter-spacing:.6px}
.gauge-readings{display:flex;justify-content:center;gap:18px;margin-top:12px}
.gauge-readings>div{display:flex;flex-direction:column;align-items:center;min-width:80px}
.gauge-readings span{font-size:12px;font-weight:600}
.gauge-readings .download-label{color:#3478ed}.gauge-readings .upload-label{color:#176eae}
.gauge-face .gauge-readings strong{font-size:clamp(24px,3vw,36px);letter-spacing:-1px;line-height:1.3}
.gauge-readings small{font-size:11px;color:var(--muted)}
@media(prefers-reduced-motion:reduce){#upload-arc{transition:none}}

#phase{display:none}

/* Compact result controls and side metrics. */
.test-finished .gauge-face #start{top:100%;min-width:112px;padding:9px 18px;font-size:13px;border-radius:7px}
.test-finished .gauge-area .test-note{top:calc(100% + 42px)}
.test-body{min-height:410px;padding-bottom:62px}
.metrics .metric strong{font-size:32px;letter-spacing:-1px}
.metrics .metric{padding-bottom:18px;margin-bottom:18px}
.metrics .metric-label{margin-bottom:8px;font-size:13px}
@media(max-width:600px){.test-finished .gauge-area{margin-bottom:48px}.test-body{padding-bottom:28px}}

/* White clearance interrupts the dotted ring around each threshold. */
.gauge text{paint-order:stroke fill;stroke:#fff;stroke-width:9px;stroke-linejoin:round}

/* Center the visible arc, accounting for its open bottom and SVG whitespace. */
.test-body:has(.awaiting-test){padding-top:40px;padding-bottom:40px}
.gauge-face.awaiting-test{transform:translateY(15.4%)}

/* Shared anchors for idle, running, and completed tests. */
.panel-top{height:72px;min-height:72px;flex-shrink:0;box-sizing:border-box}
.test-body,.test-body:has(.awaiting-test){min-height:480px;padding:40px 45px;align-items:center}
.gauge-face,.gauge-face.awaiting-test{transform:translateY(15.4%)}
.metrics{min-height:287px}
.metrics .metric strong{line-height:42px;display:inline-block}
.small-metrics strong{line-height:36px;display:inline-block}
.gauge-face:not(.awaiting-test) #start,.test-finished .gauge-face #start{top:100%;min-width:112px;padding:9px 18px;font-size:13px;border-radius:7px}
.gauge-area .test-note,.test-finished .gauge-area .test-note{top:calc(115.4% + 42px);margin:8px 0 0}
@media(max-width:600px){.test-body,.test-body:has(.awaiting-test){padding:40px 24px;gap:70px}.gauge-area,.test-finished .gauge-area{margin:0 auto 48px}.metrics{min-height:0}}

.test-panel{overflow-anchor:none}

.gauge-face:not(.awaiting-test) #start,.test-finished .gauge-face #start{top:90%}
.gauge-area .test-note,.test-finished .gauge-area .test-note{top:calc(105.4% + 38px);font-size:10px}

/* Tighten the card without changing anchors between test states. */
.panel-top{height:56px;min-height:56px;padding:12px 27px}
.test-body,.test-body:has(.awaiting-test){min-height:450px;padding-top:24px;padding-bottom:24px}
@media(max-width:600px){.test-body,.test-body:has(.awaiting-test){padding-top:24px;padding-bottom:24px}}

/* Compact the actual empty area above the gauge, in every test state. */
.panel-top{height:44px;min-height:44px;padding:8px 27px}
.test-body,.test-body:has(.awaiting-test){min-height:350px;padding:20px 45px}
@media(max-width:600px){.test-body,.test-body:has(.awaiting-test){min-height:0;padding:20px 24px 40px}}

/* Keep the retry button clear of the connection footer. */
.test-body,.test-body:has(.awaiting-test){min-height:400px}
.gauge-face,.gauge-face.awaiting-test{transform:translateY(calc(15.4% - 25px))}
.metrics{transform:translateY(-25px)}
@media(max-width:600px){.test-body,.test-body:has(.awaiting-test){min-height:0}.metrics{transform:none}}

/* A fixed-height state row preserves the gauge position while activity changes. */
.panel-top{visibility:visible!important;height:60px;min-height:60px;padding:12px 27px 8px;gap:24px;align-items:flex-start}
.test-state{display:flex;align-items:center;gap:9px;min-width:128px;color:#425967;font-size:13px;line-height:19px}
.test-state strong{font-weight:700}.test-state .status-dot{margin:0;width:8px;height:8px;background:#9cadb6}
.status-details{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-end;gap:8px;color:#526571;font-size:12px;line-height:16px}
#status{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;text-align:right}
.panel-top[data-state=testing] .test-state{color:#245bd6}
.panel-top[data-state=testing] .status-dot{background:#3478ed;animation:status-pulse 1.5s ease-in-out infinite}
.panel-top[data-state=complete] .test-state{color:#176eae}
.panel-top[data-state=complete] .status-dot{background:#176eae}
.panel-top[data-state=interrupted] .test-state{color:#9b511d}
.panel-top[data-state=interrupted] .status-dot{background:#bb672b}
@keyframes status-pulse{50%{opacity:.4}}
.gauge-face,.gauge-face.awaiting-test{transform:translateY(calc(15.4% - 41px))}
.metrics{transform:translateY(-41px)}
@media(max-width:600px){.panel-top{padding:12px 20px 8px;gap:10px}.test-state{min-width:86px}.status-details{font-size:11px}.metrics{transform:none}}
@media(prefers-reduced-motion:reduce){.panel-top[data-state=testing] .status-dot{animation:none}}

/* Align the state and activity on one shared baseline with comfortable top space. */
.panel-top{display:grid;grid-template-columns:140px minmax(0,1fr);height:56px;min-height:56px;padding:23px 27px 12px;gap:20px;align-items:start;border-bottom:1px solid #eef2f5}
.test-state{min-width:0;height:18px;line-height:18px;align-self:start;font-size:13px}
.test-state .status-dot{flex:none}
.status-details{width:100%;align-self:start;gap:8px;line-height:18px}
#status{line-height:18px}
@media(max-width:600px){.panel-top{grid-template-columns:88px minmax(0,1fr);gap:8px;padding:23px 20px 12px}.status-details{font-size:11px}}

/* Restore breathing room below the status divider without compressing the body. */
.test-body,.test-body:has(.awaiting-test){min-height:432px}
.gauge-face,.gauge-face.awaiting-test{transform:translateY(calc(15.4% - 25px))}
.metrics{transform:translateY(-25px)}
@media(max-width:600px){.test-body,.test-body:has(.awaiting-test){min-height:0}.metrics{transform:none}}

/* Keep the in-test guidance above the connection footer. */
.gauge-area .test-note,.test-finished .gauge-area .test-note{top:calc(105.4% + 22px)}

/* Balanced vertical spacing; activity appears only while testing or interrupted. */
.panel-top{padding:18px 27px}
@media(max-width:600px){.panel-top{padding:18px 20px}}

.panel-top{height:54px;min-height:54px}

/* Keep speed in the gauge and use the adjacent column for responsiveness. */
.metrics{display:flex;flex-direction:column;justify-content:center;min-height:287px;padding:0 0 0 18px}
.responsiveness-label{font-size:10px;letter-spacing:1.5px;color:#617783;font-weight:600;margin-bottom:20px}
.metrics .small-metrics{width:100%;align-items:start}
.metrics .small-metrics strong{font-size:32px;line-height:42px}
@media(max-width:600px){.metrics{min-height:0;padding:0;display:flex}.responsiveness-label{margin-bottom:16px}}

/* Keep the transfer timeline and loaded latency with the headline test result. */
.metrics{transform:none;min-height:0;gap:0;align-items:stretch}
.metrics .small-metrics{margin-bottom:20px}
.metrics .chart-card,.metrics .loaded-card{background:transparent;border:0;border-top:1px solid var(--line);border-radius:0;padding:16px 0 0}
.metrics .loaded-card{margin-top:16px}
.metrics .chart-heading{align-items:baseline;gap:8px}
.metrics .chart-heading h3,.metrics .loaded-card h3{font-size:13px;font-weight:600;margin:0 0 10px}
.metrics .chart-heading span{font-size:10px;white-space:nowrap}
.metrics #chart{height:100px}
.metrics .chart-caption{gap:8px;font-size:10px}
.metrics .chart-caption span:last-child{text-align:right}
.metrics .loaded-card>div{font-size:12px;margin:8px 0}
@media(max-width:600px){.metrics{width:100%}.metrics .small-metrics{margin-bottom:20px}.metrics #chart{height:120px}}

/* Scale labels sit beside the graph, in Mbps. */
.metrics #chart{height:120px}
.chart-axis{fill:none;stroke:#b9c8d1;stroke-width:1}
.chart-axis{opacity:0}
#chart.has-samples .chart-axis{opacity:1}
.chart-tick{fill:#617783;font:10px 'DM Sans',sans-serif;text-anchor:end;dominant-baseline:middle}
.metrics .small-metrics{margin-bottom:16px}
.metrics .small-metrics strong{font-size:28px;line-height:36px}
.metrics .small-metrics .metric-label{font-size:12px;margin-bottom:5px}
.metrics .small-metrics>div+div{padding-left:20px}
.insights{margin-top:24px}
.insights .evidence-card{margin-top:0}
#how h2{margin-top:0}
#how .explain-grid article{border-top:0;padding-top:0}

/* Separate the headline response numbers from the supporting measurements. */
.metrics .small-metrics{background:#f6f9fb;border:1px solid #e7edf1;border-radius:9px;padding:12px 14px;margin-bottom:18px}
.metrics .small-metrics>div+div{border-color:#dce5eb}
.metrics .chart-heading h3,.metrics .loaded-card h3{font-size:14px}
.metrics .chart-card{border-top:0;padding-top:0}
.metrics .loaded-card{margin-top:18px;padding-top:18px}

/* Keep history controls together and place interpretation beneath history. */
.experiment{display:none}
.history-section{margin-bottom:0}
.history-heading{align-items:center;gap:20px;margin-bottom:20px}
.history-heading h2{margin:0}
.history-actions{display:flex;align-items:center;justify-content:flex-end;gap:22px;flex-wrap:wrap}
.history-actions .remember{font-size:12px;white-space:nowrap}
#storage-note:empty{display:none}
.insights{margin-top:24px}
#how{margin-top:42px}
@media(max-width:600px){.history-heading{align-items:flex-start;flex-wrap:wrap}.history-actions{justify-content:space-between;width:100%;gap:12px}.history-actions .remember{white-space:normal}}

/* Match the three right-column headings and reserve gray for a repeat action. */
.metrics .small-metrics{background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:0 0 18px;margin-bottom:18px}
.metrics .small-metrics .metric-label{font-size:14px;font-weight:600;color:var(--text);margin-bottom:5px}
.test-finished .gauge-face #start{background:#71818d}
.test-finished .gauge-face #start:hover{background:#5e6f7b}

/* Keep the active cancel action quiet, like the post-test repeat action. */
.panel-top[data-state=testing] + .test-body #start{background:#71818d}
.panel-top[data-state=testing] + .test-body #start:hover{background:#5e6f7b}

/* Reserved placements for responsive display ads; no ad code runs in these slots. */
.ad-slot{display:flex;align-items:center;justify-content:center;max-width:100%;border:1px dashed #c8d5dd;border-radius:8px;background:#f0f3f5;color:#718390;font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase}
.ad-test-layout{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:20px;align-items:start;padding-bottom:28px}
.content-column{grid-column:1;grid-row:1;min-width:0}
.ad-rail{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:20px;min-width:0}
.ad-slot--rail{width:100%;height:600px}
.insights{display:block}
main{padding-top:24px}
@media(min-width:901px){header,main,footer{width:calc(100% - 48px)}main{padding-left:0;padding-right:0}}
@media(max-width:600px){header,footer{margin-left:18px;margin-right:18px}}
@media(max-width:1179px){.ad-test-layout{display:block}.ad-rail{width:min(100%,300px);margin:24px auto 0}.ad-slot--rail{height:250px}}
.content-column #how details{margin-bottom:0}
/* Give the measurements a full-width column until both columns have room. */
@media(max-width:800px){
  .test-body,.test-body:has(.awaiting-test){grid-template-columns:minmax(0,1fr);gap:24px;min-height:0;padding:20px 24px 32px}
  .test-body:not(:has(.awaiting-test)){gap:48px}
  .gauge-area,.test-finished .gauge-area{width:min(100%,460px);margin:0 auto}
  .metrics{width:100%;padding:0;transform:none}
}
@media(max-width:360px){
  .metrics .chart-heading{display:block}
  .metrics .chart-heading span{display:block;margin:0 0 10px}
}
@media(max-width:800px){
  .test-body,.test-body:has(.awaiting-test){padding-top:50px}
}
@media(max-width:500px){
  .gauge-face .gauge-value{top:32%}
  .gauge-readings{flex-direction:column;align-items:center;gap:3px;margin-top:0}
  .gauge-readings>div{flex-direction:row;justify-content:center;align-items:baseline;gap:4px;min-width:0}
  .gauge-readings span{font-size:10px}
  .gauge-readings small{font-size:9px}
  .gauge-face .gauge-readings strong{font-size:23px;line-height:1.15;letter-spacing:-.7px}
  .metrics .small-metrics strong{font-size:23px;line-height:30px}
}
.metrics .loaded-card{border-top:0;margin-top:0;padding-top:0}
.metrics .chart-card{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}
.ad-slot--lower-banner{width:min(100%,728px);min-height:90px;margin:24px auto 0}
@media(max-width:1179px){.ad-slot--lower-banner{display:none}}

/* Compact connection metadata and use one icon family throughout the UI. */
.connection{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:center;justify-content:normal;padding:12px 26px}
.connection>div{display:block;min-width:0}
.connection>div>div{display:flex;align-items:baseline;gap:8px;min-width:0}
.connection small{display:inline;margin:0;white-space:nowrap;letter-spacing:.8px}
.connection b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:700px){.connection{grid-template-columns:1fr;gap:6px;padding:12px 20px}.connection>div{min-width:0}.connection b{white-space:normal}}
.brand>.ph{font-size:35px;color:var(--lime);line-height:1}
.metric-label>.ph{font-size:15px;vertical-align:-1px;color:var(--lime);margin-right:3px}
.explain-icon>.ph{font-size:22px}
summary{list-style:none;display:flex;align-items:center;gap:6px}
summary::-webkit-details-marker{display:none}
summary>.ph{font-size:13px;transition:transform .2s}
details[open] summary>.ph{transform:rotate(90deg)}
.history-actions .ph,.download-link .ph,.experiment .ph,details a .ph{font-size:1.1em;vertical-align:-1px}
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;height:40px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text);font-size:13px;white-space:nowrap}
.theme-toggle:hover{background:#eaf1ff;color:var(--lime);transform:none}
.theme-toggle>.ph{font-size:18px}
@media(max-width:600px){.brand>.ph{font-size:27px}.theme-toggle{height:38px;padding:0 10px}}
@media(max-width:500px){.theme-toggle{width:40px;padding:0}.theme-toggle span{display:none}}

/* Dark mode keeps chart, gauge, and evidence surfaces legible. */
html[data-theme=dark]{color-scheme:dark;--bg:#0e1721;--panel:#172531;--line:#354858;--text:#eef4f8;--muted:#adbfcc;--lime:#82aaff}
html[data-theme=dark] body{background:var(--bg);color:var(--text)}
html[data-theme=dark] header,html[data-theme=dark] footer{border-color:var(--line)}
html[data-theme=dark] .brand,html[data-theme=dark] .footer-brand,html[data-theme=dark] .theme-toggle{color:var(--text)}
html[data-theme=dark] .beta{background:#203655;border-color:#4c70aa;color:#a9c7ff}
html[data-theme=dark] .test-panel,html[data-theme=dark] .evidence-card,html[data-theme=dark] .history-section,html[data-theme=dark] .experiment,html[data-theme=dark] .quality-grid article{background:var(--panel);border-color:var(--line);box-shadow:0 18px 70px #0003}
html[data-theme=dark] .panel-top{border-color:var(--line)}
html[data-theme=dark] .test-state,html[data-theme=dark] .status-details,html[data-theme=dark] .metric-label,html[data-theme=dark] .metrics .small-metrics .metric-label,html[data-theme=dark] .loaded-card b,html[data-theme=dark] .history-row b{color:var(--text)}
html[data-theme=dark] .connection{background:#1b2c39;border-color:var(--line)}
html[data-theme=dark] .connection small,html[data-theme=dark] .connection b,html[data-theme=dark] .history-row small,html[data-theme=dark] .chart-caption,html[data-theme=dark] .chart-heading span,html[data-theme=dark] .gauge-readings small,html[data-theme=dark] .gauge-value>span:first-child{color:var(--muted)}
html[data-theme=dark] .muted,html[data-theme=dark] .evidence-card p,html[data-theme=dark] .experiment p,html[data-theme=dark] .explain-grid p,html[data-theme=dark] details p,html[data-theme=dark] summary,html[data-theme=dark] footer,html[data-theme=dark] .loaded-card>div,html[data-theme=dark] #sample-evidence{color:var(--muted)}
html[data-theme=dark] .ad-slot{background:#192935;border-color:#496175;color:#a8bdca}
html[data-theme=dark] .outer{stroke:#627c8f}
html[data-theme=dark] .track{stroke:#344b5b}
html[data-theme=dark] .gauge text,html[data-theme=dark] .chart-tick{fill:#b4c5d0}
html[data-theme=dark] .gridline{stroke:#405665}
html[data-theme=dark] .chart-axis{stroke:#8097a8}
html[data-theme=dark] .metrics .small-metrics,html[data-theme=dark] .metrics .chart-card,html[data-theme=dark] .metrics .loaded-card,html[data-theme=dark] .history-row,html[data-theme=dark] details{border-color:var(--line)}
html[data-theme=dark] .theme-toggle:hover,html[data-theme=dark] .secondary:hover{background:#263b50;color:#d2e1ff}
html[data-theme=dark] .secondary{color:#a9c7ff;border-color:#5776a0}
html[data-theme=dark] .text-button{color:#bdcbd5}
html[data-theme=dark] input:not([type=checkbox]),html[data-theme=dark] select,html[data-theme=dark] #export-panel,html[data-theme=dark] #export-panel textarea{background:#1b2c39;color:var(--text);border-color:var(--line)}
html[data-theme=dark] .warning{color:#eab777!important}
html[data-theme=dark] label{color:var(--muted)}
html[data-theme=dark] button:disabled{opacity:.65}

/* Keep the graph's caption row stable while the test is still ready. */
.panel-top[data-state=ready] + .test-body .chart-caption{visibility:hidden}

/* Four metadata columns share the same left edge within each grid cell. */
.connection{grid-template-columns:repeat(4,max-content);justify-content:start;gap:28px;background:#fff;padding:10px 24px}
.connection>div{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;text-align:left}
.connection small{font-size:9px;line-height:1.2}
.connection b{max-width:200px;line-height:1.35}
@media(max-width:700px){.connection{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px;padding:14px 20px}.connection b{white-space:normal}}

/* Compact, mutually exclusive theme choices in the header. */
.theme-switcher{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:10px;background:#eaf0f5}
.theme-switcher button{display:inline-flex;align-items:center;justify-content:center;min-width:0;width:36px;height:34px;padding:0;border-radius:7px;background:transparent;color:var(--muted)}
.theme-switcher button:hover{background:#f7faff;color:var(--text);transform:none}
.theme-switcher button[aria-pressed=true]{background:var(--panel);color:var(--text);box-shadow:0 1px 4px #10253a24}
.theme-switcher .ph{font-size:16px}
@media(max-width:600px){.theme-switcher button{width:34px;height:32px}}
html[data-theme=dark] .connection{background:var(--panel)}
html[data-theme=dark] .theme-switcher{background:#233644;border-color:var(--line)}
html[data-theme=dark] .theme-switcher button{color:var(--muted)}
html[data-theme=dark] .theme-switcher button:hover{background:#30495b;color:var(--text)}
html[data-theme=dark] .theme-switcher button[aria-pressed=true]{background:#3a5266;color:var(--text);box-shadow:0 1px 4px #0003}

/* Collapse unmeasured details, then expand them as a run begins. */
.connection,html[data-theme=dark] .connection{background:var(--bg)}
.test-body,.test-body:has(.awaiting-test){min-height:0}
.panel-top[data-state=ready] + .test-body{padding-top:50px}
.loaded-card>div{max-height:40px;overflow:hidden;transition:max-height .48s ease,margin .48s ease,opacity .32s ease,transform .48s ease,visibility 0s}
.metrics .loaded-card h3,.metrics .chart-heading h3{transition:margin-bottom .48s ease}
.chart-heading>span{max-width:200px;overflow:hidden;transition:max-width .48s ease,opacity .32s ease,transform .48s ease,visibility 0s}
.metrics .chart-card #chart{height:120px;transition:height .55s cubic-bezier(.2,.7,.2,1),opacity .35s ease,transform .48s ease,visibility 0s}
.chart-caption{max-height:24px;overflow:hidden;transition:max-height .48s ease,opacity .32s ease,transform .48s ease,visibility 0s}
.panel-top[data-state=ready] + .test-body .loaded-card>div{max-height:0;margin-top:0;margin-bottom:0;opacity:0;visibility:hidden;transform:translateY(-8px)}
.panel-top[data-state=ready] + .test-body .loaded-card h3,.panel-top[data-state=ready] + .test-body .chart-heading h3{margin-bottom:0}
.panel-top[data-state=ready] + .test-body .chart-heading>span{max-width:0;opacity:0;visibility:hidden;transform:translateY(-8px)}
.panel-top[data-state=ready] + .test-body .chart-card #chart{height:0;opacity:0;visibility:hidden;transform:translateY(-8px)}
.panel-top[data-state=ready] + .test-body .chart-caption{max-height:0;opacity:0;visibility:hidden;transform:translateY(-8px)}
@media(max-width:600px){.metrics .chart-card #chart{height:120px}}

/* Keep metric names visible before a run, while collapsing their readings. */
.small-metrics .metric-reading{display:flex;align-items:baseline;max-height:42px;overflow:hidden;opacity:1;visibility:visible;transform:translateY(0);transition:max-height .45s ease,opacity .35s ease,transform .45s ease,visibility 0s}
.panel-top[data-state=ready] + .test-body .metric-reading{max-height:0;opacity:0;visibility:hidden;transform:translateY(-6px);transition:max-height .4s ease,opacity .2s ease,transform .4s ease,visibility 0s linear .4s}

/* Scale numbers are plain text; dark mode uses white for contrast. */
.gauge text{paint-order:normal;stroke:none}
html[data-theme=dark] .gauge text{fill:#fff}

/* A measured progress line completes before the status header turns blue. */
.panel-top{position:relative;background:var(--panel);transition:background-color .7s ease .12s,border-color .7s ease .12s}
.test-progress{position:absolute;left:0;right:0;bottom:0;height:3px;overflow:hidden;opacity:0;pointer-events:none;transition:opacity .3s ease,height .3s ease}
.test-progress>div{width:0;height:100%;background:#245bd6;transition:width .55s cubic-bezier(.2,.7,.2,1)}
.panel-top[data-state=testing] .test-progress{opacity:1}
.panel-top[data-state=complete]{background:#245bd6;border-color:#245bd6}
.panel-top[data-state=complete] .test-progress{opacity:0;height:0;transition-delay:.65s}
.panel-top[data-state=complete] .test-state,.panel-top[data-state=complete] .status-details{color:#fff}
.panel-top[data-state=complete] .status-dot{background:#fff}
html[data-theme=dark] .panel-top[data-state=complete] .test-state,html[data-theme=dark] .panel-top[data-state=complete] .status-details{color:#fff}
.panel-top[data-state=interrupted]{background:#9b511d;border-color:#9b511d}
.panel-top[data-state=interrupted] .test-state,.panel-top[data-state=interrupted] .status-details,html[data-theme=dark] .panel-top[data-state=interrupted] .test-state,html[data-theme=dark] .panel-top[data-state=interrupted] .status-details{color:#fff}
.panel-top[data-state=interrupted] .status-dot{background:#fff}
@media(prefers-reduced-motion:reduce){.panel-top,.test-progress,.test-progress>div{transition:none}}

/* Compact activity estimates, with color and text carrying the same rating. */
.activity-scores{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
.metrics .chart-heading{flex-wrap:wrap;column-gap:8px}
.activity-heading{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px}
.activity-heading h3{margin:0;font-size:14px}
.activity-heading>span{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:var(--muted)}
.activity-row{display:grid;grid-template-columns:minmax(0,1fr) auto 92px;align-items:center;gap:10px;padding:7px 0;font-size:12px}
.activity-name{font-weight:600}
.activity-dots{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.activity-dot{display:inline-block;width:9px;height:9px;border-radius:50%;border:1px solid var(--line)}
.activity-row[data-rating=great] .activity-dot.is-filled{background:#239864;border-color:#239864}
.activity-row[data-rating=ok] .activity-dot.is-filled{background:#e5aa22;border-color:#e5aa22}
.activity-row[data-rating=less] .activity-dot.is-filled{background:#d45a55;border-color:#d45a55}
.activity-verdict{justify-self:end;font-size:11px;font-weight:700;white-space:nowrap}
.activity-row[data-rating=great] .activity-verdict{color:#18784e}
.activity-row[data-rating=ok] .activity-verdict{color:#886200}
.activity-row[data-rating=less] .activity-verdict{color:#af3731}
#scoring-method{scroll-margin-top:20px}
html[data-theme=dark] .activity-row[data-rating=great] .activity-verdict{color:#7bd6a8}
html[data-theme=dark] .activity-row[data-rating=ok] .activity-verdict{color:#f4cd70}
html[data-theme=dark] .activity-row[data-rating=less] .activity-verdict{color:#fa9690}
@media(max-width:360px){.activity-row{grid-template-columns:minmax(0,1fr) auto;gap:5px}.activity-dots{grid-column:1/-1;grid-row:2}}

/* Give connection metadata a little more breathing room. */
.connection{padding-top:16px;padding-bottom:16px}
@media(max-width:700px){.connection{padding-top:18px;padding-bottom:18px}}

/* Activity fit leads the metric column in every test phase. */
.activity-scores{margin:0 0 18px;padding:0 0 18px;border-top:0;border-bottom:1px solid var(--line)}
.metrics .activity-heading h3{margin:0;font-size:14px;font-weight:600}
.activity-row{grid-template-columns:minmax(0,1fr) 84px auto;gap:6px}.activity-verdict{justify-self:start}.activity-dots{justify-self:end}
.activity-row[data-rating=ready] .activity-verdict,.activity-row[data-rating=testing] .activity-verdict,.activity-row[data-rating=interrupted] .activity-verdict{color:var(--muted)}
.activity-row[data-rating=testing] .activity-dot{animation:activity-measuring 1.25s ease-in-out infinite}
.activity-row[data-rating=testing] .activity-dot:nth-child(2){animation-delay:.12s}
.activity-row[data-rating=testing] .activity-dot:nth-child(3){animation-delay:.24s}
.activity-row[data-rating=testing] .activity-dot:nth-child(4){animation-delay:.36s}
.activity-row[data-rating=testing] .activity-dot:nth-child(5){animation-delay:.48s}
@keyframes activity-measuring{50%{border-color:var(--lime);background:var(--lime);opacity:.65}}
.panel-top[data-state=ready] + .test-body .gauge-area{margin-top:0}
@media(max-width:360px){.activity-row{grid-template-columns:minmax(0,1fr) auto;gap:5px}.activity-dots{grid-column:1/-1;grid-row:2;justify-self:end}}
@media(prefers-reduced-motion:reduce){.activity-row[data-rating=testing] .activity-dot{animation:none}}

.activity-row[data-rating=great],.activity-row[data-rating=ok],.activity-row[data-rating=less]{animation:activity-score-in .45s ease both}
@keyframes activity-score-in{from{opacity:.35;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.activity-row[data-rating=great],.activity-row[data-rating=ok],.activity-row[data-rating=less]{animation:none}}

/* The response metrics live inside the dial with download and upload. */
.gauge-value .small-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(62%,240px);gap:10px;margin-top:11px;text-align:center}
.gauge-value .small-metrics>div{min-width:0}
.gauge-value .small-metrics>div+div{border-left:0;padding-left:0}
.gauge-value .small-metrics .metric-label{margin:0 0 2px;color:var(--muted);font-size:10px;font-weight:500;white-space:nowrap}
.gauge-value .small-metrics .metric-label>.ph{font-size:11px}
.gauge-value .small-metrics .metric-reading{display:flex;justify-content:center;align-items:baseline;gap:3px;max-height:32px}
.gauge-value .small-metrics .metric-reading strong{font:500 20px/1.15 'Space Grotesk',sans-serif;letter-spacing:-.5px}
.gauge-value .small-metrics .metric-reading span{margin:0;color:var(--muted);font-size:10px}
@media(max-width:500px){
  .gauge-face .gauge-value{top:28%}
  .gauge-value .small-metrics{width:min(62%,200px);gap:4px;margin-top:6px}
  .gauge-value .small-metrics .metric-label{font-size:9px}
  .gauge-value .small-metrics .metric-reading strong{font-size:16px}
  .gauge-value .small-metrics .metric-reading span{font-size:9px}
}

/* Show activity details when measurement begins, with a smooth expansion. */
.activity-scores{transition:padding-bottom .45s ease,margin-bottom .45s ease}
#activity-score-list{max-height:260px;overflow:hidden;opacity:1;visibility:visible;transform:translateY(0);transition:max-height .5s ease,opacity .35s ease,transform .45s ease,visibility 0s}
.activity-scores[data-state=ready]{padding-bottom:16px}
.activity-scores[data-state=ready] .activity-heading{margin-bottom:0}
.activity-scores[data-state=ready] #activity-score-list{max-height:0;opacity:0;visibility:hidden;transform:translateY(-8px)}
.activity-row{grid-template-columns:minmax(0,1fr) max-content max-content;column-gap:7px}
.activity-name{display:inline-flex;align-items:center;gap:7px;min-width:0;font-weight:400}
.activity-name .ph{flex:none;font-size:14px;color:var(--lime)}
.activity-verdict{justify-self:end}
.activity-dots{justify-self:end}
@media(max-width:360px){
  .activity-row{grid-template-columns:minmax(0,1fr) max-content;column-gap:7px}
  .activity-name{grid-column:1/-1;grid-row:1}
  .activity-verdict{grid-column:1;grid-row:2;justify-self:end}
  .activity-dots{grid-column:2;grid-row:2}
}
@media(prefers-reduced-motion:reduce){.activity-scores,#activity-score-list{transition:none}}
@media(max-width:360px){.gauge-face .gauge-value{top:22%}.gauge-value .small-metrics{margin-top:3px}}

/* Keep the evidence summary out of the page layout. */
.insights{display:none}

/* Phone layout: keep the test summary in flow and place fixed-height banners around the card. */
.ad-slot--mobile-banner,.mobile-label{display:none}
@media(max-width:600px){
  .ad-slot--mobile-banner{display:flex;width:min(320px,100%);height:100px;margin:0 auto 20px}
  .test-panel + .ad-slot--mobile-banner{margin:20px auto 0}
  .ad-rail{display:none}
  .test-body:not(:has(.awaiting-test)){gap:28px}
  .gauge-face,.gauge-face.awaiting-test{transform:none}
  .gauge-area,.test-finished .gauge-area{margin:0 auto}
  .gauge-area .test-note,.test-finished .gauge-area .test-note{position:static;top:auto;left:auto;right:auto;min-height:0;margin:34px 0 0;line-height:1.45}
  .gauge-area .test-note:empty{display:none}
  .connection{grid-template-columns:minmax(0,1fr);gap:9px;padding:16px 20px}
  .connection>div{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;gap:14px;width:100%}
  .connection b{max-width:70%;text-align:right;overflow-wrap:anywhere}
  .gauge-value .small-metrics{grid-template-columns:repeat(2,max-content);justify-content:center;width:auto;column-gap:18px}
  .desktop-label{display:none}
  .mobile-label{display:inline}
}

/* Center the completed readings higher in the dial and leave its action clear of the scale. */
@media(min-width:801px){
  .gauge-face:not(.awaiting-test) .gauge-value{top:29%}
  .gauge-face:not(.awaiting-test) #start{top:94%}
  .gauge-value .small-metrics{width:min(56%,216px);gap:6px}
}

/* The AdSense units retain the dimensions of their reserved placements. */
.ad-slot:has(>.adsbygoogle){position:relative;border:0;outline:1px dashed #c8d5dd;outline-offset:-1px}
html[data-theme=dark] .ad-slot:has(>.adsbygoogle){outline-color:#496175}
.ad-slot>.adsbygoogle{position:relative;z-index:1;flex:none}
.ad-slot>span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.ad-slot:has(>.adsbygoogle[data-ad-status="filled"])>span{display:none}
@media(max-width:355px){.ad-slot--mobile-banner{width:250px}}

.footer-privacy,.privacy-back{color:var(--muted);text-decoration:none}
.footer-privacy:hover,.privacy-back:hover{color:var(--lime);text-decoration:underline}
.privacy-page{max-width:850px;padding-bottom:48px}
.privacy-page h1{font-size:clamp(36px,5vw,52px)}
.privacy-page h2{margin:30px 0 10px}
.privacy-page p{max-width:75ch;color:var(--muted);line-height:1.7}
.privacy-page a:not(.privacy-back){color:var(--lime)}
