:root{--bg: #0b0e14;--surface: rgba(255, 255, 255, .035);--line: rgba(255, 255, 255, .08);--text: #e9ecf4;--muted: #8b93a7;--accent: #7f6ee0;--accent-2: #4ec9f5;--accent-3: #5fe3b1;--font: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(60rem 40rem at 20% -10%,rgba(127,110,224,.18),transparent 60%),radial-gradient(50rem 35rem at 90% 110%,rgba(78,201,245,.12),transparent 60%);pointer-events:none;z-index:0}.page{position:relative;z-index:1;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:1.5rem 1.25rem 2rem;gap:1rem}.header{width:100%;max-width:62rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:flex;align-items:center;gap:.55rem}.brand__mark{width:.7rem;height:1.5rem;border-radius:.2rem;background:linear-gradient(160deg,var(--accent),var(--accent-2))}.brand__name{font-weight:700;letter-spacing:.14em;font-size:.95rem}.header__title{color:var(--muted);font-size:.9rem;letter-spacing:.02em}.main{width:100%;max-width:62rem;flex:1;display:grid;grid-template-columns:minmax(0,1fr) 17rem;align-items:center;gap:2.5rem}.dial{display:flex;flex-direction:column;align-items:center;gap:1.75rem}@media(max-width:60rem){.main{grid-template-columns:minmax(0,1fr);align-items:start;gap:2rem}}.gauge{position:relative;width:min(24rem,84vw);aspect-ratio:1;margin-bottom:-2rem}.gauge svg{width:100%;height:100%;overflow:visible}.gauge__track{fill:none;stroke:#ffffff0f;stroke-width:10;stroke-linecap:round}.gauge__progress{fill:none;stroke:#ffffff24;stroke-width:2;stroke-linecap:round}.gauge__value{fill:none;stroke-width:10;stroke-linecap:round;filter:drop-shadow(0 0 10px rgba(127,110,224,.45))}.gauge__tick{stroke:#ffffff40;stroke-width:1.5}.gauge__tick-label{fill:var(--muted);font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:middle}.gauge__needle{stroke:var(--text);stroke-width:3;stroke-linecap:round;transition:transform .16s cubic-bezier(.4,0,.2,1)}.gauge__center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;pointer-events:none}.gauge__phase{color:var(--muted);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;display:flex;align-items:center;gap:.3rem}.gauge__arrow{color:var(--accent-2);font-size:1rem}.gauge__arrow--up{color:var(--accent-3)}.gauge__value-text{font-size:clamp(2.3rem,10vw,3rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.gauge__unit{color:var(--muted);font-size:.85rem;letter-spacing:.1em}.gauge__go{pointer-events:auto;width:8.5rem;height:8.5rem;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:radial-gradient(circle at 50% 30%,rgba(127,110,224,.35),transparent 70%);color:var(--text);font-family:inherit;font-size:1rem;font-weight:600;letter-spacing:.16em;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .2s ease}.gauge__go:hover{transform:scale(1.03);border-color:#7f6ee0b3;box-shadow:0 0 30px #7f6ee040}.gauge__go:focus-visible{outline:2px solid var(--accent-2);outline-offset:4px}.stats{width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem}.stat{background:var(--surface);border:1px solid var(--line);border-radius:.9rem;padding:.8rem .5rem;display:flex;flex-direction:column;align-items:center;gap:.15rem;transition:border-color .2s ease,background .2s ease}.stat--active{border-color:#7f6ee08c;background:#7f6ee017}.stat__label{color:var(--muted);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:.25rem;white-space:nowrap}.stat__arrow{color:var(--accent-2)}.stat__arrow--up{color:var(--accent-3)}.stat__value{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2}.stat__unit{color:var(--muted);font-size:.7rem}.repeat{background:transparent;border:1px solid var(--line);border-radius:999px;color:var(--text);font-family:inherit;font-size:.9rem;padding:.6rem 1.6rem;cursor:pointer;transition:border-color .15s ease,background .15s ease}.repeat:hover{border-color:#7f6ee0b3;background:#7f6ee01a}.error{color:#ff8080;font-size:.9rem;margin:0}.history{background:var(--surface);border:1px solid var(--line);border-radius:1rem;padding:1rem;align-self:center;max-height:28rem;display:flex;flex-direction:column}.history__head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.history__title{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.history__clear{background:none;border:0;padding:0;color:var(--muted);font-family:inherit;font-size:.75rem;cursor:pointer;text-decoration:underline}.history__clear:hover{color:var(--text)}.history__empty{margin:0;color:var(--muted);font-size:.78rem;line-height:1.5;opacity:.8}.history__list{list-style:none;margin:0;padding:0;overflow-y:auto;display:flex;flex-direction:column}.history__item{display:grid;grid-template-columns:1fr auto;gap:.15rem .5rem;padding:.55rem 0;border-bottom:1px solid var(--line);font-size:.8rem}.history__item:last-child{border-bottom:0}.history__when{color:var(--muted);font-size:.72rem;display:flex;align-items:center;gap:.35rem}.history__tag{border:1px solid var(--line);border-radius:.3rem;padding:0 .25rem;font-size:.62rem;letter-spacing:.04em;text-transform:uppercase}.history__ping{color:var(--muted);font-size:.72rem;align-self:center;font-variant-numeric:tabular-nums}.history__speeds{display:flex;gap:.6rem;font-weight:600;font-variant-numeric:tabular-nums}.history__down{color:var(--accent-2)}.history__up{color:var(--accent-3)}.footer{width:100%;max-width:34rem;text-align:center;color:var(--muted);font-size:.78rem;line-height:1.5}.footer p{margin:.35rem 0}.footer strong{color:var(--text);font-weight:600}.footer__note{opacity:.75}@media(max-width:30rem){.stats{grid-template-columns:repeat(2,1fr)}}@media(prefers-reduced-motion:reduce){.gauge__needle,.gauge__go{transition:none}}
