.mod-speedtester{--mst-bg:rgba(0,0,0,.04);--mst-border:#e2e8f0;--mst-accent:#2563eb;--mst-accent-2:#93c5fd;--mst-text:#0f172a;--mst-muted:#64748b;border:1px solid var(--mst-border);background:var(--mst-bg);padding:1rem;border-radius:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;color:var(--mst-text)}
.mod-speedtester .mst-header{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;justify-content:space-between;margin-bottom:.5rem}
.mod-speedtester .mst-title{font-weight:700;font-size:1.05rem}
.mod-speedtester .mst-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.mod-speedtester .mst-status{font-size:.85rem;padding:.25rem .5rem;border:1px solid var(--mst-border);border-radius:.5rem;background:#fff;color:var(--mst-muted)}
.mod-speedtester .mst-btn{appearance:none;border:1px solid var(--mst-border);background:#fff;padding:.45rem .75rem;border-radius:.75rem;cursor:pointer;color:var(--mst-text)}
.mod-speedtester .mst-btn:disabled{opacity:.5;cursor:not-allowed}
.mod-speedtester .mst-controls{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.mod-speedtester .mst-label{font-size:.85rem;color:var(--mst-text);display:flex;align-items:center;gap:.35rem;background:#fff;border:1px solid var(--mst-border);padding:.25rem .5rem;border-radius:.5rem}
.mod-speedtester .mst-inp{width:6rem;border:1px solid var(--mst-border);padding:.3rem .4rem;border-radius:.4rem;outline:none;color:var(--mst-text);background:#fff}
.mod-speedtester .mst-inp:focus{border-color:var(--mst-accent);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.mod-speedtester .mst-modechips{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}
.mod-speedtester .mst-chip{border:1px solid var(--mst-border);background:#fff;border-radius:999px;padding:.25rem .6rem;cursor:pointer;font-size:.8rem}
.mod-speedtester .mst-chip.active{border-color:var(--mst-accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.mod-speedtester .mst-chip:hover{border-color:var(--mst-accent)}
.mod-speedtester .mst-gauges{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem}
.mod-speedtester .mst-gauge{background:#fff;border:1px solid var(--mst-border);border-radius:.75rem;padding:.75rem;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:92px}
.mod-speedtester .mst-gauge.small{min-height:80px}
.mod-speedtester .mst-gauge-label{font-size:.8rem;color:var(--mst-muted);margin-bottom:.25rem}
.mod-speedtester .mst-gauge-value{font-weight:800;font-size:1.6rem;line-height:1;color:var(--mst-text)}
.mod-speedtester .mst-gauge-unit{font-size:.75rem;color:var(--mst-muted)}
.mod-speedtester .mst-progress{margin-top:.5rem;width:100%;height:8px;background:linear-gradient(90deg,#f8fafc,#f1f5f9);border-radius:999px;overflow:hidden;position:relative}
.mod-speedtester .mst-progress.mini{height:6px}
.mod-speedtester .mst-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,var(--mst-accent),var(--mst-accent-2));transition:width .2s ease}
.mod-speedtester .mst-progress-bar.active{background-size:200% 100%;animation:mstbar 1.2s linear infinite}
@keyframes mstbar{0%{background-position:0 0}100%{background-position:-200% 0}}
.mod-speedtester .mst-history{margin-top:.75rem;background:#fff;border:1px dashed var(--mst-border);border-radius:.5rem;padding:.5rem}
.mod-speedtester .mst-history-title{font-weight:700;font-size:.95rem;margin-bottom:.35rem}
.mod-speedtester .mst-history-table{width:100%;border-collapse:collapse;font-size:.85rem}
.mod-speedtester .mst-history-table th,.mod-speedtester .mst-history-table td{border-bottom:1px solid #eef2f7;padding:.35rem .4rem;text-align:left;white-space:nowrap}
@media (max-width: 980px){.mod-speedtester .mst-gauges{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width: 640px){.mod-speedtester .mst-gauges{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width: 420px){.mod-speedtester .mst-gauges{grid-template-columns:1fr}}
