/* Local Noto subsets cover status/action glyphs absent from the Latin site face.
   Sources, glyph coverage and OFL licenses: frontend/test-state-fonts.json. */
@font-face {font-family:'Speedtest Devanagari';font-style:normal;font-weight:400 700;font-display:swap;src:url('../libs/fonts/test-states/devanagari.woff2') format('woff2');unicode-range:U+0900-097F}
@font-face {font-family:'Speedtest Traditional Chinese';font-style:normal;font-weight:400 700;font-display:swap;src:url('../libs/fonts/test-states/traditional-chinese.woff2?v=20261103.2') format('woff2');unicode-range:U+3000-303F,U+4E00-9FFF}
/* Adopted from 2ip service.css at 5afd5c256; Joomla ancestry and font paths adapted. */
/* Closed reference speedometer; reserve the square before JS/fonts initialize. */
.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-primary);
  position: relative;
  width: 100%;
  max-width: var(--st-dial-max, 560px);
  aspect-ratio: 1;
  margin-inline: auto;
  container-type: inline-size;
}
.twoip-gauge-rim .wrapp { position: absolute; inset: 0; width: 100%; height: 100%; }
.twoip-gauge-rim .twoip-speedometer { display: block; width: 100%; height: 100%; }
.twoip-gauge-rim .twoip-speedometer-body { fill: var(--twoip-gauge-rim-fill); stroke: var(--twoip-primary); filter: drop-shadow(var(--twoip-elevation-2)); }
.twoip-gauge-rim .twoip-speedometer-face { fill: var(--twoip-gauge-face); }
.twoip-gauge-rim .twoip-speedometer-tick { fill: none; stroke: var(--twoip-gauge-minor); }
.twoip-gauge-rim .twoip-speedometer-tick.is-active,
.twoip-gauge-rim .twoip-speedometer-tick--major { stroke: var(--twoip-primary); }
.twoip-gauge-rim .twoip-speedometer-label { fill: var(--twoip-on-surface); font-family: '2ip-bold'; font-size: 28px; font-weight: 700; }
.twoip-gauge-rim .twoip-speedometer-marker { stroke: var(--st-gauge-marker); stroke-linecap: round; }
.twoip-gauge-rim .content { text-align: center; }
.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;
}
.twoip-gauge-rim .content .ready { aspect-ratio: var(--twoip-gauge-action-ratio, 270 / 86); min-height: 44px; }
.twoip-gauge-rim #speedo-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-button-on-primary);
  font-family: '2ip-bold','Speedtest Devanagari','Speedtest Traditional Chinese',sans-serif;
  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;
}
@media (hover: hover) and (pointer: fine) {
.twoip-gauge-rim #speedo-start:hover:not(:disabled):not([aria-disabled="true"]) { background: color-mix(in srgb, var(--twoip-gauge-action-fill) 92%, var(--twoip-scrim)); }
}
.twoip-gauge-rim #speedo-start:active:not(:disabled) { background: color-mix(in srgb, var(--twoip-gauge-action-fill) 84%, var(--twoip-scrim)); box-shadow: var(--twoip-elevation-1); }
.twoip-gauge-rim #speedo-start:focus-visible { outline: 2px solid var(--twoip-primary); outline-offset: 3px; }
.twoip-gauge-rim #speedo-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; }
.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; }
.twoip-gauge-rim #speedo-start > span { position: static; min-width:0;white-space:normal;text-align:center; }
.twoip-gauge-rim #speedo-start > .twoip-speedometer-ripple {
  position: absolute; inset: -100% 0; border-radius: 50%;
  background: var(--twoip-on-primary); opacity: 0; pointer-events: none;
}
.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;
}
.twoip-gauge-rim .content .realtime :is(#tool-status,#tool-metrics) { font-size: clamp(12px, 2.5cqw, 18px); line-height: 1.2; font-family: '2ip','Speedtest Devanagari','Speedtest Traditional Chinese',sans-serif; }
.twoip-gauge-rim .content .realtime #tool-status { display: grid; place-items: end center; font-size: clamp(15px, 3.125cqw, 22.5px); }
.twoip-gauge-rim .twoip-speedometer-readout {
  white-space: nowrap; min-width: 0;
  transition: opacity var(--twoip-speedometer-stage-duration, 180ms) ease-out;
}
.twoip-gauge-rim .twoip-speedometer-readout #tool-metrics { display: inline-block; margin-inline-start: var(--twoip-space-2, 8px); }
.twoip-gauge-rim .twoip-speedometer-readout #tool-metrics:empty { margin-inline-start: 0; }
.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; }
.twoip-gauge-rim:is([data-ui-state=completed],[data-ui-state=error],[data-ui-state=cancelled]) .content .realtime #tool-status {padding-bottom:var(--twoip-space-4,16px)}
.twoip-gauge-rim[data-ui-state=download] { --twoip-speedtest-phase-accent: var(--twoip-chart-download); }
.twoip-gauge-rim[data-ui-state=upload] { --twoip-speedtest-phase-accent: var(--twoip-chart-upload); }
.twoip-gauge-rim .twoip-speedometer-tick.is-active { stroke: var(--twoip-speedtest-phase-accent, var(--twoip-primary)); }
.twoip-gauge-rim .twoip-speedometer-stage { display: inline-flex; align-items: center; justify-content: center; gap: var(--twoip-space-2, 8px); max-width:100%; min-width:0; text-align:center; }
.twoip-gauge-rim .twoip-speedometer-stage > span {min-width:0;overflow-wrap:anywhere;line-height:1.2}
.twoip-gauge-rim .twoip-speedometer-stage > .twoip-icon { position: static; flex: none; margin: 0; font-size: 1em; line-height: 1; color: var(--st-icon-color); }
@container (max-width: 300px) {
  .twoip-gauge-rim .content .realtime #tool-status { font-size: 13px; }
  .twoip-gauge-rim .twoip-speedometer-stage { gap: 6px; }
}
.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;
}
.twoip-gauge-rim .content .realtime .twoip-speedometer-integer {
  display: inline-block;
  transform: translateX(var(--twoip-numeric-ink-offset, 0em));
}
.twoip-gauge-rim .content .realtime .twoip-speedometer-decimal { display: inline-block; width: .2em; }
.twoip-gauge-rim .content .realtime .twoip-speedometer-decimal:empty { width: 0; }
.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. */
.twoip-gauge-rim .content .realtime .twoip-speedometer-decimal .twoip-numeric-glyph { left: 0; width: 100%; transform: none; text-align: center; }
.twoip-gauge-rim .content .realtime .twoip-speedometer-decimal:not([data-twoip-numeric-digits]) { font-family: '2ip'; font-weight: 700; }
.twoip-gauge-rim .content .acl-indicator { font-size: clamp(24px, 5cqw, 40px); color: var(--twoip-primary); }
.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 '2ip-bold'; }
.twoip-gauge-rim .twoip-speedometer-unit { font: .78em/1.2 '2ip'; color: var(--twoip-on-surface-variant); }
/* Shared Ping unit typography, adopted unchanged by Speedtest API. */
.twoip-gauge-rim[data-phase=PING] .content .realtime #tool-speed{display:flex;align-items:baseline;justify-content:center}
.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))}
.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('../libs/fonts/roboto-condensed/bold/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. */
.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) {
  .twoip-gauge-rim #speedo-start { transition: none; }
  /* Digit reuse must not inherit the site's .01ms reduced-motion transitions. */
  .twoip-gauge-rim #tool-speed :is(.twoip-numeric-slot,.twoip-numeric-glyph) { transition: none !important; }
  .twoip-gauge-rim .twoip-speedometer-readout { transition: none !important; }
}

#protocol2-status {font-family:'2ip','Speedtest Devanagari','Speedtest Traditional Chinese',sans-serif}
