@font-face{font-family:"PT Sans";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/pt-sans-latin-400.2dea6190.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"PT Sans";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/pt-sans-latin-700.05ea99a4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Roboto Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/roboto-mono-latin.b81cd551.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-bg:#ffffff;--color-surface:#fafafa;--color-surface-2:#f2f2f2;--color-text:#0a0a0a;--color-muted:#525252;--color-border:#e5e5e5;--color-accent:#171717;--color-on-accent:#ffffff;--color-link:#1f4fd1;--color-down:#1f4fd1;--color-up:#b0175a;--color-track:#e8e8e8;--s-radius:6px;--s-btn-radius:6px;--s-font:"PT Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--s-font-head:"PT Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--s-font-num:"Roboto Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--s-maxw:60rem;--s-shadow:0 10px 30px -12px rgba(15,23,42,.18);color-scheme:light}*,*::before,*::after{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--s-font);line-height:1.55;-webkit-font-smoothing:antialiased;overflow-wrap:break-word}a{color:var(--color-link);text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}h1,h2,h3{font-family:var(--s-font-head);font-weight:750;letter-spacing:0;line-height:1.2;margin:0 0 .5em}h1{font-size:clamp(1.6rem, 3.5vw, 2.25rem)}h2{font-size:1.625rem}h3{font-size:1.0625rem}p{margin:0 0 1em}ul,ol{padding-left:1.25em}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.skip{position:absolute;left:-9999px;top:0;background:var(--color-accent);color:var(--color-on-accent);padding:.5rem 1rem;z-index:10}.skip:focus{left:1rem;top:1rem}.wrapper{width:100%;max-width:var(--s-maxw);margin:0 auto;padding:0 clamp(1rem, 4vw, 2rem)}.footer{margin-top:4.5rem;border-top:1px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);font-size:.9375rem}.footer__inner{max-width:var(--s-maxw);margin:0 auto;padding:2.25rem clamp(1rem, 4vw, 2rem)}.footer__nav{list-style:none;margin:0;padding:0}.footer__nav a{color:var(--color-muted)}.footer__nav a:hover{color:var(--color-text)}.ftitle{color:var(--color-text);font-weight:600;margin-bottom:.5rem}.footer__copy{max-width:var(--s-maxw);margin:0 auto;padding:0 clamp(1rem, 4vw, 2rem) 2.25rem;font-size:.875rem}.footer__inner{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem}.footer__nav{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.footer__inner p{margin:0}.footer__copy{padding:0}.columns{display:grid;gap:1.125rem;grid-template-columns:repeat(auto-fit, minmax(min(100%, 15rem), 1fr))}.item__title{display:block;margin:0 0 .25rem;font-size:1rem}.item__text{color:var(--color-muted);margin:0}ul.features,ol.how{padding-left:1.25em}ul.features li,ol.how li{margin:.5rem 0}dl.features dd{margin:0 0 1rem}.badge{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:999px;background:var(--color-accent);color:var(--color-on-accent);font-weight:700;margin-bottom:.5rem}.qa__item{border-bottom:1px solid var(--color-border);padding:0.8438rem 0}.qa__q{font-weight:600;font-size:1.0625rem;margin:0}summary.qa__q{cursor:pointer;list-style-position:outside}.qa__a{color:var(--color-muted);margin:.5rem 0 0}.qa__a p:last-child{margin-bottom:0}dl.accordion dt{margin-top:1.25rem}.kv{width:100%;border-collapse:collapse;list-style:none;padding:0;margin:0 0 1rem}.spec{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--color-border);padding:.6rem 0}table.kv .spec{display:table-row}table.kv th,table.kv td{padding:.6rem .75rem .6rem 0;text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top}table.kv td{text-align:right;padding-right:0}.detail__key{color:var(--color-muted);font-weight:500;margin:0}.spec__value{margin:0;font-weight:600;text-align:right}.page__nav{border-left:3px solid var(--color-accent);padding-left:1rem;margin:1.6875rem 0}.page__nav ul{list-style:none;padding:0;margin:0}.page__nav li{margin:.25rem 0}.contents__title{font-weight:600;margin-bottom:.5rem}.glossary dt{font-weight:700;margin-top:1.25rem}.glossary dd{margin:.25rem 0 0;color:var(--color-muted)}.label{color:var(--color-muted);font-size:.8125rem;font-weight:500}.num{font-family:var(--s-font-num);font-variant-numeric:tabular-nums;font-weight:700;font-size:1.625rem;color:var(--color-text)}.metric__unit{color:var(--color-muted);font-size:.875rem}.readings dd{margin:0}.down .num{color:var(--color-down)}.up .num{color:var(--color-up)}.phase{color:var(--color-muted);min-height:1.5em;margin:.75rem 0}.bar{height:8px;background:var(--color-track);border-radius:999px;overflow:hidden;margin-top:.5rem}.progress__fill{height:100%;width:0;background:var(--color-accent);transition:width .2s linear}.down .progress__fill{background:var(--color-down)}.up .progress__fill{background:var(--color-up)}.progress{height:3px;background:var(--color-track);border-radius:999px;overflow:hidden;margin:1rem 0}.loader__bar{height:100%;width:0;background:var(--color-accent);transition:width .2s linear}.big__number{font-family:var(--s-font-num);font-variant-numeric:tabular-nums;font-weight:700}.big__unit{color:var(--color-muted);margin-left:.35rem}.action{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.75rem 1.5rem;border:0;border-radius:var(--s-btn-radius);background:var(--color-accent);color:var(--color-on-accent);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}.action:hover{filter:brightness(1.08)}.action:disabled{opacity:.6;cursor:default}.panel{background:var(--color-surface);border-radius:var(--s-radius);padding:1.4062rem;box-shadow:var(--s-shadow)}.block{margin-top:3.375rem}.block__title{margin-bottom:0.8438rem}.intro__text{color:var(--color-muted);font-size:1.125rem;max-width:42em}.page__header{padding:2.8125rem 0 1.125rem}.hint{color:var(--color-muted);font-size:.875rem}.more__link{font-weight:600}.big__code{font-family:var(--s-font-num);font-size:clamp(3rem, 12vw, 5rem);font-weight:700;line-height:1;color:var(--color-accent);margin:0 0 .5rem}.crumbs ol{list-style:none;padding:0;margin:1.6875rem 0 0;display:flex;flex-wrap:wrap;gap:.5rem;font-size:.875rem;color:var(--color-muted)}.crumbs li+li::before{content:"/";margin-right:.5rem}.prose{max-width:44rem}.site__header{border-bottom:1px solid var(--color-border);background:var(--color-bg)}.topbar__inner{max-width:var(--s-maxw);margin:0 auto;padding:0.9844rem clamp(1rem, 4vw, 2rem);display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem}.logo{display:inline-flex;align-items:center;gap:.5rem;color:var(--color-text);font-weight:700;font-size:1.125rem;text-decoration:none;letter-spacing:0}.brand__mark{display:inline-flex;color:var(--color-accent)}.links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.link{color:var(--color-muted);text-decoration:none;font-weight:500;padding:.25rem 0;display:inline-block}.link:hover{color:var(--color-text)}.site__nav{margin-left:auto}.is__current{color:var(--color-on-accent);background:var(--color-accent);padding:.25rem .75rem;border-radius:var(--s-btn-radius)}body{min-height:100vh;display:flex;flex-direction:column}.page{flex:1 0 auto}.intro{text-align:center;padding:3.375rem 0 1.125rem}.intro .intro__text{margin:0 auto}.tester{text-align:center;margin:1.125rem auto 0;max-width:40rem;background:var(--color-surface);border-radius:var(--s-radius);padding:1.4062rem;box-shadow:var(--s-shadow)}.dial{position:relative;max-width:20rem;margin:0 auto}.scale{display:block;width:100%;height:auto;overflow:visible}.track{fill:none;stroke:var(--color-track);stroke-width:10;stroke-linecap:round}.dial__value{fill:none;stroke:var(--color-down);stroke-width:10;stroke-linecap:round;transition:stroke-dasharray .2s linear}.tester[data-phase=up] .dial__value{stroke:var(--color-up)}.scale text{fill:var(--color-muted);font-size:9px;font-family:var(--s-font)}.now{position:absolute;left:0;right:0;bottom:22%;display:flex;justify-content:center;align-items:baseline}.big__number{font-size:2.5rem;line-height:1}.run__btn{min-width:12rem;font-size:1.0625rem}.readings{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.125rem;margin:2.25rem 0 0;padding-top:1.4062rem;border-top:1px solid var(--color-border)}.metric{display:flex;flex-direction:column;gap:.25rem}@media (max-width: 42rem){.block{margin-top:2.25rem}.site__nav{margin-left:0;width:100%}.readings{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media (prefers-reduced-motion: reduce){*{transition:none !important}}
[data-utility] nav{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem 1.2rem}
[data-utility] nav a{display:inline-block;padding:.45rem 0;text-decoration:none}
[data-utility] nav a:hover,[data-utility] [aria-current=page]{text-decoration:underline;text-underline-offset:.25em}
[data-utility] main{min-width:0}[data-utility] pre{max-width:100%;overflow:auto}
[data-utility] table{display:block;max-width:100%;overflow:auto}
[data-utility=speedtest]>header,[data-utility=speedtest]>footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem max(4vw,calc((100vw - 69rem)/2));border-block-end:1px solid #e5e5e5}
[data-utility=speedtest] main{max-width:68rem;margin:auto;padding:clamp(1rem,3vw,2.75rem)}
[data-utility=speedtest]>footer{justify-content:center;border-block:1px solid #e5e5e5}

[data-latency-samples] dl{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1rem}
[data-latency-samples] dd{margin:0}[data-latency-samples] meter{width:min(55%,16rem)}
[data-inputs]{display:flex;align-items:end;gap:.75rem;flex-wrap:wrap;margin:.8rem 0}
[data-inputs] label{display:grid;gap:.35rem;max-width:100%}
[data-inputs] input,[data-inputs] select,[data-pager] button,[data-measured]{box-sizing:border-box;max-width:100%;min-height:44px;padding:.4rem .7rem;font:inherit;color:#0a0a0a;background:#fafafa;border:1px solid #e5e5e5}
[data-inputs] input[type=number]{width:9.5rem}
[data-record-list] details{border-bottom:1px solid #e5e5e5;padding:.55rem 0}
[data-record-list] summary,[data-transfer-panel] summary{cursor:pointer}
[data-pager]{display:flex;gap:.6rem;flex-wrap:wrap;margin:1rem 0}
[data-transfer-panel],[data-record-browser],[data-api-sample]{padding:1rem 0;margin-block:1rem}
[data-transfer-panel] th,[data-transfer-panel] td{padding:.4rem .8rem;text-align:left}
[data-api-index] dd{margin:0 0 .7rem;overflow-wrap:anywhere}
