/* Same locally bundled Roboto Condensed source as the 2IP reference. */
@font-face{font-family:Speedtest Info;src:url('../fonts/info-regular.woff2') format('woff2');font-weight:400;font-display:block}
@font-face{font-family:Speedtest Info;src:url('../fonts/info-bold.woff2') format('woff2');font-weight:600 700;font-display:block}
#speedtest{
  box-sizing:border-box;
  --st-space-1:4px;
  --st-space-2:8px;
  --st-space-3:12px;
  --st-space-4:16px;
  --st-space-6:24px;
  --st-space-8:32px;
  --st-space-12:48px;
  --st-radius:16px;
  --st-action-radius:999px;
  --st-body-size:16px;
  --st-caption-size:14px;
  --st-heading-size:clamp(24px,3vw,36px);
  --st-readout-size:clamp(32px,6vw,64px);
  --st-control-height:48px;
  --st-field-height:44px;
  --st-field-radius:6px;
  --st-field-line-height:22px;
  --st-field-padding:12px;
  --st-field-gap:8px;
  --st-field-icon-size:20px;
  --st-measure-icon-size:19.2px;
  --st-measure-icon-slot:24px;
  --st-chart-height:120px;
  --st-summary-height:44px;
  --st-motion:180ms;
  --st-page-inset:24px;
  --st-page-width:1240px;
  --st-column-gap:36px}
#speedtest *{
  box-sizing:border-box}
body.st-standalone-page{
  margin:0;
  background:var(--st-background);
  color:var(--st-text);
  font:var(--st-body-size)/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}
#speedtest{
  font:16px/1.45 'Speedtest Info',sans-serif;
  color:var(--st-text);
  width:100%;
  min-height:100vh;
  background:var(--st-background);
  padding-block:var(--st-space-8)}
#speedtest .st-page-content{
  width:100%;
  max-width:var(--st-page-width);
  margin-inline:auto;
  padding-inline:var(--st-page-inset)}
#speedtest h1,#speedtest h2,#speedtest h3,#speedtest p{
  margin:0}
#speedtest h1{
  font-size:var(--st-heading-size);
  font-weight:500;
  letter-spacing:-.025em}
#speedtest h2{
  font-size:24px;
  font-weight:500}
#speedtest h3{
  font-size:20px;
  font-weight:550}
#speedtest button,#speedtest a,#speedtest input,#speedtest select{
  -webkit-tap-highlight-color:transparent}
#speedtest button{
  font:inherit;
  cursor:pointer}
#speedtest button:disabled{
  cursor:default;
  opacity:.45}
#speedtest a{
  color:inherit;
  text-underline-offset:4px}
#speedtest a:hover{
  color:var(--st-primary)}
#speedtest button:focus-visible,#speedtest a:focus-visible{
  outline:3px solid var(--st-primary);
  outline-offset:4px}
#speedtest svg{
  display:block}
#speedtest .st-header{
  display:flex;
  justify-content:center;
  text-align:center;
  align-items:center;
  gap:var(--st-space-6);
  flex-wrap:wrap;
  margin-bottom:var(--st-space-8)}
#speedtest .st-header h1{width:100%}
#speedtest .st-instrument{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--st-column-gap);
  align-items:stretch}
#speedtest .st-dial-column,#speedtest .st-results{min-width:0;display:flex;flex-direction:column;gap:var(--st-space-4)}
#speedtest .st-dial{flex:none}
#speedtest .result-area-graph{display:grid;gap:var(--st-space-2)}
#speedtest .result-area .results{--twoip-speedtest-graph-height:var(--st-chart-height);--twoip-speedtest-summary-height:var(--st-summary-height);margin:0;padding-bottom:0}
#speedtest dd{
  margin:0}
#speedtest .st-chart{width:100%;height:var(--st-chart-height);overflow:hidden}
#speedtest .st-information{
  display:grid;
  gap:var(--st-field-gap);
  margin:0;
  font:16px/var(--st-field-line-height) Speedtest Info,sans-serif}
#speedtest .st-information>div{
  display:grid;
  grid-template-columns:minmax(0,38%) minmax(0,1fr);
  align-items:center;
  min-height:var(--st-field-height);
  padding:calc((var(--st-field-height) - var(--st-field-line-height)) / 2 - 1px) var(--st-field-padding);
  border:1px solid var(--st-field-border);
  border-radius:var(--st-field-radius);
  background:var(--st-field-surface)}
#speedtest .st-information dt{
  color:var(--st-field-label);
  font-weight:600;
  border-inline-end:1px solid var(--st-field-border);
  padding-inline-end:var(--st-field-padding);
  min-width:0;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis}
#speedtest .st-information dd{
  display:flex;
  align-items:center;
  gap:var(--st-field-gap);
  min-width:0;
  padding-inline-start:var(--st-field-padding);
  color:var(--st-field-text)}
#speedtest .st-information dd>span{
  min-width:0;
  overflow-wrap:anywhere}
#speedtest .st-information .st-field-icon{
  flex:0 0 var(--st-field-icon-size);
  width:var(--st-field-icon-size);
  height:var(--st-field-icon-size);
  display:block;
  align-self:center;
  fill:currentColor;
  color:var(--st-field-icon)}
#speedtest .st-information .fa-left-right,
#speedtest .twoip-gauge-rim .twoip-speedometer-stage[data-stage=PING]>.twoip-icon{color:var(--st-icon-ping)}
#speedtest .st-information output{font-variant-numeric:tabular-nums}
#speedtest .st-information [data-full-value]:focus-visible,#speedtest .twoip-speedtest-measure-name[data-full-value]:focus-visible{
  outline:2px solid var(--st-primary);
  outline-offset:2px}
#speedtest .st-full-value{
  position:fixed;
  z-index:10;
  max-width:min(400px,calc(100vw - 16px));
  padding:var(--st-space-2) var(--st-space-3);
  background:var(--st-surface);
  color:var(--st-text);
  border:1px solid var(--st-border);
  border-radius:var(--st-space-2);
  overflow-wrap:anywhere;
  pointer-events:none}
@media(max-width:1199px){
  #speedtest .st-instrument{
    grid-template-columns:minmax(0,1fr);
    gap:var(--st-space-6)}
}
@media(max-width:767px){
  #speedtest{--st-page-inset:16px}
  #speedtest{
    padding-top:var(--st-space-6)}
  #speedtest .st-header{
    gap:var(--st-space-3);
    margin-bottom:var(--st-space-4)}
}
@media(prefers-reduced-motion:reduce){
  #speedtest{
    --st-motion:0ms}
  #speedtest html{
    scroll-behavior:auto}
  #speedtest *{
    animation:none!important;
    transition:none!important}
}
#speedtest .st-progress{position:relative;margin-top:auto;height:44px;flex:none}
#speedtest #st-progress-diagram{display:block;width:100%;height:44px;--st-progress-current-fill:var(--st-progress-fill);--st-progress-active:var(--st-progress-indicator)}
#speedtest #st-progress-diagram[data-phase=down]{--st-progress-current-fill:var(--st-progress-download);--st-progress-active:var(--st-progress-download)}
#speedtest #st-progress-diagram:is([data-phase=up],[data-phase=completed]){--st-progress-current-fill:var(--st-progress-upload);--st-progress-active:var(--st-progress-upload)}
#speedtest .st-progress-track,#speedtest .st-progress-fill{fill:none;stroke-width:6;stroke-linecap:round}
#speedtest .st-progress-track{stroke:var(--st-progress-track)}
#speedtest .st-progress-fill{stroke:var(--st-progress-current-fill)}
#speedtest .st-progress-start{fill:var(--st-progress-start)}
#speedtest .st-progress-end{fill:var(--st-progress-end)}
#speedtest .st-progress-indicator{fill:var(--st-progress-active)}
#speedtest .st-progress-icon{color:var(--st-progress-icon);fill:currentColor}
#speedtest #st-progress-diagram:is([data-phase=ping],[data-phase=down],[data-phase=up],[data-phase=completed]) :is(.st-progress-icon,.st-progress-start,.st-progress-end){color:var(--st-progress-active);fill:var(--st-progress-active)}
#speedtest #st-progress{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}

@media(max-width:480px){#speedtest{--st-field-height:56px}}

@font-face{font-family:'Speedtest Bold';src:url('../fonts/info-bold.woff2') format('woff2');font-weight:400;font-display:block}
#speedtest{--twoip-type-body:var(--st-body-size);--twoip-primary:var(--st-primary);--twoip-primary-container:var(--st-highlight);--twoip-surface:var(--st-surface);--twoip-on-surface:var(--st-text);--twoip-on-surface-variant:var(--st-muted);--twoip-outline:var(--st-field-border);--twoip-outline-variant:var(--st-border);--twoip-on-primary:var(--st-on-primary);--twoip-brand-cyan:var(--st-primary);--twoip-brand-orange:var(--st-gauge-needle);--twoip-chart-download:var(--st-download);--twoip-chart-upload:var(--st-upload);--twoip-scrim:var(--st-scrim);--twoip-radius-full:999px;--twoip-radius-small:6px;--twoip-elevation-2:0 4px 16px var(--st-shadow);--twoip-elevation-1:0 2px 8px var(--st-shadow)}

#speedtest .result-area-graph .row{display:flex;flex-wrap:wrap;margin-inline:-14px}
#speedtest .result-area-graph .row>*{box-sizing:border-box;padding-inline:14px;flex-shrink:0}
#speedtest .result-area-graph .col-3{width:25%}#speedtest .result-area-graph .col-4{width:33.33333333%}#speedtest .result-area-graph .col-5{width:41.66666667%}#speedtest .result-area-graph .col-7{width:58.33333333%}#speedtest .result-area-graph .col-8{width:66.66666667%}#speedtest .result-area-graph .col-9{width:75%}#speedtest .result-area-graph .col-12{width:100%}
#speedtest .result-area-graph .text-end{text-align:right}#speedtest .twoip-speedtest-graph{height:120px;width:100%}
#speedtest .result-area .results{min-width:0}#speedtest .result-area .results>.row>.header,#speedtest .result-area .results>.row>.text-end{min-height:var(--st-summary-height)}
#speedtest .twoip-speedtest-measure-name{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#speedtest .twoip-speedtest-measure-unit{font-size:16px}#speedtest .result-area .faposs{font-size:24px}
@font-face{font-family:'Font Awesome 7 Free';src:url('../fonts/icons.woff2') format('woff2');font-weight:900;font-display:block;ascent-override:85.714%;descent-override:14.286%;line-gap-override:0%}
#speedtest .twoip-icon{display:inline-flex;align-items:center;justify-content:center;font-family:'Font Awesome 7 Free';font-weight:900;font-style:normal;line-height:1;color:var(--st-upload);width:1em;height:1em;flex:none}
#speedtest .result-area .faposs{display:flex;align-items:center;justify-content:center}
#speedtest .result-area .faposs>.twoip-icon{font-size:var(--st-measure-icon-size);width:var(--st-measure-icon-slot);height:var(--st-measure-icon-size);line-height:1;position:static;margin:0}
#speedtest .result-area .results .twoip-icon.down-icon{color:var(--st-icon-download)}
#speedtest .result-area .results .twoip-icon.up-icon{color:var(--st-upload)}
#speedtest .fa-left-right::before{content:'\f337'}#speedtest .fa-arrows-down-to-line::before{content:'\e4b8'}#speedtest .fa-arrows-up-to-line::before{content:'\e4c2'}

#speedtest #st-message{
  min-height:3em;
  margin-top:0;
  text-align:center;
  overflow-wrap:anywhere}
#speedtest #st-message:empty{display:none}

#speedtest .result-area .header>.row{display:grid;grid-template-columns:var(--st-measure-icon-slot) minmax(0,1fr);gap:var(--st-space-2);margin-inline:0;align-items:center}
  #speedtest .result-area .header>.row>*{padding-inline:0;width:auto}

@media(max-width:480px){
  #speedtest .result-area .results>.row>.header{width:45%}
  #speedtest .result-area .results>.row>.text-end{width:55%}
  #speedtest .twoip-speedtest-measure-name{font-size:16px;overflow-wrap:normal}
}

#speedtest .result-area .data,#speedtest .result-area .additionalres_data{font-variant-numeric:tabular-nums}
#speedtest .result-area .data .speed_fix{display:inline-block;width:100%;text-align:right}

/* Download/Upload retain their four integer and two fractional digit slots. */
#speedtest .twoip-gauge-rim .content .realtime #tool-speed{display:inline-grid;grid-template-columns:2.56em .2em 1.28em auto;align-items:center}
#speedtest .twoip-gauge-rim .content .realtime #tool-speed .twoip-speedometer-integer{width:100%;height:1.3em;text-align:right;line-height:1.3}
#speedtest .twoip-gauge-rim .content .realtime #tool-speed .twoip-speedometer-decimal:empty{width:.2em}
#speedtest .twoip-gauge-rim .content .realtime #tool-speed .twoip-speedometer-fraction{display:inline-block;width:1.28em;height:1.3em}
#speedtest .twoip-gauge-rim .content .realtime #tool-speed #tool-metrics,#speedtest .twoip-gauge-rim .content .realtime #tool-speed #tool-metrics:empty{width:3.5em;margin-inline-start:8px;text-align:left;transform:translateY(.8em)}
/* Ping has no fractional slots; keep the value and latency unit together. */
#speedtest .st-ping-readout{display:inline-flex;align-items:baseline;gap:var(--st-space-1);white-space:nowrap}
#speedtest #st-ping{font-variant-numeric:tabular-nums}

/* Closed reference speedometer; reserve the square before JS/fonts initialize. */
#speedtest .twoip-gauge-rim {
  --twoip-gauge-rim-fill: color-mix(in srgb, var(--twoip-primary) 12%, var(--twoip-primary-container));
  --twoip-gauge-face: color-mix(in srgb, var(--twoip-primary-container) 65%, var(--twoip-surface));
  --twoip-gauge-minor: color-mix(in srgb, var(--twoip-primary) 38%, var(--twoip-primary-container));
  --twoip-gauge-action-fill: var(--twoip-brand-cyan);
  position: relative;
  width: 100%;
  max-width: 560px;
  aspect-ratio: 1;
  margin-inline: auto;
  container-type: inline-size;
}
#speedtest .twoip-gauge-rim .wrapp { position: absolute; inset: 0; width: 100%; height: 100%; }
#speedtest .twoip-gauge-rim .twoip-speedometer { display: block; width: 100%; height: 100%; }
#speedtest .twoip-gauge-rim .twoip-speedometer-body { fill: var(--twoip-gauge-rim-fill); stroke: var(--twoip-primary); filter: drop-shadow(var(--twoip-elevation-2)); }
#speedtest .twoip-gauge-rim .twoip-speedometer-face { fill: var(--twoip-gauge-face); }
#speedtest .twoip-gauge-rim .twoip-speedometer-tick { fill: none; stroke: var(--twoip-gauge-minor); }
#speedtest .twoip-gauge-rim .twoip-speedometer-tick.is-active,
#speedtest .twoip-gauge-rim .twoip-speedometer-tick--major { stroke: var(--twoip-primary); }
#speedtest .twoip-gauge-rim .twoip-speedometer-label { fill: var(--twoip-on-surface); font-family: 'Speedtest Bold'; font-size: 28px; font-weight: 700; }
#speedtest .twoip-gauge-rim .twoip-speedometer-marker { stroke: var(--twoip-brand-orange); stroke-linecap: round; }
#speedtest .twoip-gauge-rim .content { text-align: center; }
#speedtest .twoip-gauge-rim .content :is(.ready,.realtime) {
  position: absolute;
  inset: auto;
  left: var(--twoip-gauge-action-x, 50%);
  top: var(--twoip-gauge-action-y, 50%);
  transform: translate(-50%, -50%);
  width: max(144px, var(--twoip-gauge-action-width, 37.5%));
  height: auto;
  padding: 0;
  text-align: center;
  transition: none;
}
#speedtest .twoip-gauge-rim .content .ready { aspect-ratio: var(--twoip-gauge-action-ratio, 270 / 86); min-height: 44px; }
#speedtest .twoip-gauge-rim #st-start {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: clamp(8px, var(--twoip-gauge-action-gap, 2.7778cqw), 20px);
  width: 100%;
  height: 100%;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  border: 0;
  border-radius: var(--twoip-radius-full);
  background: var(--twoip-gauge-action-fill);
  color: var(--twoip-on-primary);
  font-family: 'Speedtest Bold';
  font-size: clamp(14px, var(--twoip-gauge-label-size, 3.8889cqw), 28px);
  line-height: 1.2;
  box-shadow: var(--twoip-elevation-2);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition: background-color .15s ease, box-shadow .15s ease;
}
#speedtest .twoip-gauge-rim #st-start:hover:not(:disabled) { background: color-mix(in srgb, var(--twoip-gauge-action-fill) 92%, var(--twoip-scrim)); }
#speedtest .twoip-gauge-rim #st-start:active:not(:disabled) { background: color-mix(in srgb, var(--twoip-gauge-action-fill) 84%, var(--twoip-scrim)); box-shadow: var(--twoip-elevation-1); }
#speedtest .twoip-gauge-rim #st-start:focus-visible { outline: 2px solid var(--twoip-primary); outline-offset: 3px; }
#speedtest .twoip-gauge-rim #st-start:disabled { background: color-mix(in srgb, var(--twoip-on-surface) 12%, var(--twoip-gauge-face)); color: var(--twoip-on-surface-variant); box-shadow: none; cursor: default; transition: none; }
#speedtest .twoip-gauge-rim svg.twoip-speedometer-play { position: static; flex: none; width: clamp(14px, var(--twoip-gauge-play-width, 3.4722cqw), 25px); height: clamp(16px, var(--twoip-gauge-play-height, 3.8889cqw), 28px); fill: currentColor; }
#speedtest .twoip-gauge-rim #st-start > span { position: static; }
#speedtest .twoip-gauge-rim #st-start > .twoip-speedometer-ripple {
  position: absolute; inset: -100% 0; border-radius: 50%;
  background: var(--twoip-on-primary); opacity: 0; pointer-events: none;
}
#speedtest .twoip-gauge-rim .content .realtime {
  z-index: 2; display: grid; align-content: center; top: 50%; width: 80%; height: 38%; gap: 4px; font-size: clamp(12px, 2.5cqw, 18px);
  grid-template-rows: 2.4em auto 1.2em; pointer-events: none;
}
#speedtest .twoip-gauge-rim .content .realtime :is(#tool-status,#tool-metrics) { font-size: clamp(12px, 2.5cqw, 18px); line-height: 1.2; font-family: 'Speedtest Info'; }
#speedtest .twoip-gauge-rim .content .realtime #tool-status { display: grid; place-items: end center; font-size: clamp(15px, 3.125cqw, 22.5px); }
#speedtest .twoip-gauge-rim .twoip-speedometer-readout {
  white-space: nowrap; min-width: 0;
  transition: opacity var(--twoip-speedometer-stage-duration, 180ms) ease-out;
}
#speedtest .twoip-gauge-rim .twoip-speedometer-readout #tool-metrics { display: inline-block; margin-inline-start: var(--twoip-space-2, 8px); }
#speedtest .twoip-gauge-rim .twoip-speedometer-readout #tool-metrics:empty { margin-inline-start: 0; }
#speedtest .twoip-gauge-rim:is([data-ui-step=returning],[data-ui-state=completed],[data-ui-state=error],[data-ui-state=cancelled]) .twoip-speedometer-readout { opacity: 0; }
#speedtest .twoip-gauge-rim[data-ui-state=download] { --twoip-speedtest-phase-accent: var(--twoip-chart-upload); }
#speedtest .twoip-gauge-rim[data-ui-state=upload] { --twoip-speedtest-phase-accent: var(--twoip-chart-upload); }
#speedtest .twoip-gauge-rim .twoip-speedometer-tick.is-active { stroke: var(--twoip-speedtest-phase-accent, var(--twoip-primary)); }
#speedtest .twoip-gauge-rim .twoip-speedometer-stage { display: inline-flex; align-items: center; justify-content: center; gap: var(--twoip-space-2, 8px); white-space: nowrap; }
#speedtest .twoip-gauge-rim .twoip-speedometer-stage > .twoip-icon { position: static; flex: none; margin: 0; font-size: 1em; line-height: 1; color: var(--twoip-speedtest-phase-accent, var(--twoip-primary)); }
@container (max-width: 300px) {
  #speedtest .twoip-gauge-rim .content .realtime #tool-status { font-size: 13px; }
  #speedtest .twoip-gauge-rim .twoip-speedometer-stage { gap: 6px; }
}
#speedtest .twoip-gauge-rim .content .realtime #tool-speed {
  font-size: clamp(28px, 10cqw, 68px); line-height: 1.3; font-family: '2ip-numeric';
  font-variant-numeric: tabular-nums; white-space: nowrap; margin: 0;
  border-radius: var(--twoip-radius-small); min-width: 0;
}
#speedtest .twoip-gauge-rim .content .realtime .twoip-speedometer-integer {
  display: inline-block;
  transform: translateX(var(--twoip-numeric-ink-offset, 0em));
}
#speedtest .twoip-gauge-rim .content .realtime .twoip-speedometer-decimal { display: inline-block; width: .2em; }
#speedtest .twoip-gauge-rim .content .realtime .twoip-speedometer-decimal:empty { width: 0; }
#speedtest .twoip-gauge-rim .content .realtime .twoip-speedometer-decimal .twoip-numeric-slot { width: 100%; }
/* DSEG period has zero advance: give its ink a real box, including in WebKit compositing. */
#speedtest .twoip-gauge-rim .content .realtime .twoip-speedometer-decimal .twoip-numeric-glyph { left: 0; width: 100%; transform: none; text-align: center; }
#speedtest .twoip-gauge-rim .content .realtime .twoip-speedometer-decimal:not([data-twoip-numeric-digits]) { font-family: 'Speedtest Info'; font-weight: 700; }
#speedtest .twoip-gauge-rim .content .acl-indicator { font-size: clamp(24px, 5cqw, 40px); color: var(--twoip-primary); }
#speedtest .twoip-gauge-rim .twoip-speedometer-footer { position: absolute; inset-inline: 0; top: var(--twoip-gauge-footer-y, 84.1667%); transform: translateY(-50%); text-align: center; color: var(--twoip-on-surface-variant); display: grid; justify-items: center; gap: var(--twoip-space-1, 4px); font: clamp(13px, var(--twoip-gauge-footer-size, 3.3333cqw), 24px)/1.2 'Speedtest Bold'; }
#speedtest .twoip-gauge-rim .twoip-speedometer-unit { font: .78em/1.2 'Speedtest Info'; color: var(--twoip-on-surface-variant); }
/* Shared Ping unit typography, adopted unchanged by Speedtest API. */
#speedtest .twoip-gauge-rim[data-phase=PING] .content .realtime #tool-speed{display:flex;align-items:baseline;justify-content:center}
#speedtest .twoip-gauge-rim[data-phase=PING] .content .realtime #tool-speed .twoip-speedometer-integer{width:100%;height:1.3em;text-align:center;transform:translateX(var(--twoip-numeric-ink-offset, 0em))}
#speedtest .twoip-gauge-rim[data-phase=PING] .content .realtime #tool-speed :is(.twoip-speedometer-decimal,.twoip-speedometer-fraction):empty{display:none}
/* DSEG has no Cyrillic мс. Reuse the bundled condensed bold face with an
   ink-baseline box for both localized units; no font-file or digit changes. */
@font-face{font-family:"Speedtest Unit";src:url('../fonts/info-bold.woff2') format('woff2');font-weight:600;font-display:block;ascent-override:100%;descent-override:0%;line-gap-override:0%}
/* Subtract glyph sidebearings from the 8px ink gap (.024em digit, .04em unit).
   DSEG ink extends .958em below the .781em slot top; align the unit's ink
   baseline with that same visible edge without moving digits or the stage. */
#speedtest .twoip-gauge-rim[data-phase=PING] .content .realtime #tool-speed #tool-metrics{width:auto;margin-inline-start:0;font-family:"Speedtest Unit",sans-serif;font-weight:600;font-size:calc(1em * var(--st-ping-unit-scale));line-height:1;transform:translateY(calc((.958em - .781em) / var(--st-ping-unit-scale)))}
@media (prefers-reduced-motion: reduce) {
  #speedtest .twoip-gauge-rim #st-start { transition: none; }
  /* Digit reuse must not inherit the site's .01ms reduced-motion transitions. */
  #speedtest .twoip-gauge-rim #tool-speed :is(.twoip-numeric-slot,.twoip-numeric-glyph) { transition: none !important; }
  #speedtest .twoip-gauge-rim .twoip-speedometer-readout { transition: none !important; }
}

#speedtest .result-area .results {
  border-bottom: 1px solid var(--twoip-outline-variant);
}
#speedtest .result-area .results.info {
  border-bottom: none;
  position: relative;
  top: 10px;
  margin-top: 0;
  font-size: 120%;
  color: var(--twoip-link-text);
}
#speedtest .result-area .results .twoip-icon {
  top: 1px;
}
#speedtest .result-area .results .twoip-icon {
  color: var(--twoip-chart-upload);
}
#speedtest .result-area .results .data {
  font-size: clamp(var(--twoip-type-body), 5vw, calc(var(--twoip-type-body) * 2.5));
  font-family: 'Speedtest Bold';
}
#speedtest :is(#chart-download,#chart-upload) :is(.highcharts-grid-line,.highcharts-minor-grid-line) {
  stroke: var(--twoip-outline-variant);
}
#speedtest .twoip-speedtest-graph {
  height: var(--twoip-speedtest-graph-height, 120px); min-height: var(--twoip-speedtest-graph-height, 120px);
  opacity: 0; transition: opacity var(--twoip-speedometer-stage-duration, 180ms) ease-out;
}
#speedtest .twoip-speedtest-graph[data-graph-ready=true] { opacity: 1; }
#speedtest .result-area .results > .twoip-latency-row,
#speedtest .result-area .results > .row > :is(.header,.text-end) { min-block-size: var(--twoip-speedtest-summary-height, 69px); }
#speedtest #speedo-ping { --twoip-speedtest-metric-accent: var(--twoip-chart-upload); }
#speedtest #speedo-down { --twoip-speedtest-metric-accent: var(--twoip-chart-upload); }
#speedtest #speedo-up { --twoip-speedtest-metric-accent: var(--twoip-chart-upload); }
#speedtest .result-area .results[data-measurement-state=active] { border-bottom-color: var(--twoip-speedtest-metric-accent); }
#speedtest :is(#speedo-ping,#speedo-down,#speedo-up):is([data-measurement-state=pending],[data-measurement-state=cancelled]) .data { color: var(--twoip-on-surface-variant); }
@media (prefers-reduced-motion: reduce) { #speedtest .twoip-speedtest-graph { transition: none !important; } }
/* Phase emphasis changes ink/weight only, never metric geometry or result colors. */
#speedtest .results[data-measurement-state=active] :is(.header,.twoip-latency-label,.header-ping) {
  color: var(--twoip-on-surface);
  font-weight: 700;
}
#speedtest .results[data-measurement-state=complete] :is(.header,.twoip-latency-label,.header-ping) {
  color: var(--twoip-on-surface);
}
#speedtest .result-area .results .data.ping {
  color: var(--twoip-on-surface);
}
/* Equal latency metrics, one divider; raw samples have no chart presentation. */
#speedtest #speedo-ping { container-type: inline-size; }
#speedtest .twoip-latency-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
#speedtest .twoip-latency-metric { display: flex; flex-direction: column; align-items: flex-start; gap: var(--twoip-space-1, 4px); min-width: 0; }
#speedtest .twoip-latency-metric + .twoip-latency-metric { border-inline-start: 1px solid var(--twoip-outline-variant); padding-inline-start: var(--twoip-space-4, 16px); }
#speedtest .twoip-latency-label { display: inline-flex; align-items: center; gap: var(--twoip-space-2, 8px); color: var(--twoip-on-surface-variant); white-space: nowrap; }
#speedtest .twoip-latency-label .twoip-icon { position: static; margin: 0; font-size: 1em; }
@media (min-width: 1024px) {
  #speedtest #speedo-ping { --twoip-speedtest-summary-height: 0px; }
  #speedtest .twoip-latency-metric { flex-direction: row; align-items: baseline; gap: var(--twoip-space-1, 4px); }
  #speedtest .twoip-latency-metric + .twoip-latency-metric { padding-inline-start: var(--twoip-space-1, 4px); }
  #speedtest .twoip-latency-label { gap: var(--twoip-space-1, 4px); }
}
#speedtest .result-area .results .data.download {
  color: var(--twoip-primary);
  border-right: 1px solid var(--twoip-on-surface-variant);
}
#speedtest .result-area .results .data.upload {
  color: var(--twoip-primary);
  border-right: 1px solid var(--twoip-on-surface-variant);
}
/* Rate glyphs stay on one line within the existing summary column.
 * The parent retains its line box, so completed measurements cannot grow a card. */
#speedtest .result-area .results .data:is(.download,.upload) .speed_fix { white-space: nowrap; }
#speedtest .result-area .results .speed_fix {
  position: relative;
  right: 12px;
}
#speedtest .result-area .results .additionalres {
  color: var(--twoip-primary);
  font-size: 90%;
  text-align: left;
  position: relative;
  top: 9px;
}
#speedtest .result-area .results .additionalres.ping {
  color: var(--twoip-rating-filled);
}
#speedtest .result-area .results .additionalres.download .additionalres_name,
#speedtest .result-area .results .additionalres.upload .additionalres_name {
  color: var(--twoip-on-surface-variant);
}
#speedtest .result-area .results .additionalres.download .additionalres_name.min,
#speedtest .result-area .results .additionalres.upload .additionalres_name.min {
  padding-right: 3px;
}
#speedtest .result-area .results .additionalres.download .additionalres_data,
#speedtest .result-area .results .additionalres.upload .additionalres_data {
  font-family: "Speedtest Bold";
}
#speedtest .result-area .results .additionalres.download {
  color: var(--twoip-on-surface);
}
#speedtest .result-area .results .additionalres.upload {
  color: var(--twoip-on-surface);
}
#speedtest .result-area .header-ping {
  color: var(--twoip-on-surface-variant);
  position: relative;
  top: 25px;
}
#speedtest .result-area .header {
  color: var(--twoip-on-surface-variant);
  position: relative;
  top: 7px;
}

/* Natural DSEG glyphs in the characterized .64em product digit slots.
 * See numeric-readout.md; upstream font bytes are unchanged, OFL-1.1. */
@font-face {
  font-family: "2ip-numeric";
  font-weight: 400;
  font-style: normal;
  ascent-override: 80%;
  descent-override: 25.7%;
  line-gap-override: 0%;
font-display: block; /* twoip-font-source: media/2ip/vendor/dseg/0.46/DSEG7Classic-Bold.woff2 */
src: url('../fonts/dseg.woff2') format("woff2");
}
@font-face {
  font-family: "2ip-numeric-glyph";
  font-weight: 400;
  font-style: normal;
  ascent-override: 100%;
  descent-override: 0%;
  line-gap-override: 0%;
font-display: block; /* twoip-font-source: media/2ip/vendor/dseg/0.46/DSEG7Classic-Bold.woff2 */
src: url('../fonts/dseg.woff2') format("woff2");
}
#speedtest .twoip-numeric-slot {
  display: inline-block;
  position: relative;
  width: .64em;
  height: .781em;
  vertical-align: baseline;
}
#speedtest .twoip-numeric-glyph {
  position: absolute;
  top: 0;
  left: 50%;
  font-family: "2ip-numeric-glyph";
  font-size: .958em;
  font-weight: 400;
  line-height: 1;
  transform: translateX(-50%);
}
/* Pending is text, not a digital measurement. Only the SVG dial owns this state. */
#speedtest .twoip-gauge-rim #tool-speed[data-pending] .twoip-speedometer-integer { font-family: 'Speedtest Info'; font-weight: 400; line-height: 1; }
