:root{color-scheme:dark;--bg:#070d1b;--panel:#0e1729;--line:#26334b;--line-light:#1d2940;--text:#edf4ff;--muted:#8c9db9;--dim:#667892;--mint:#4de1c3;--indigo:#7f91ff;--red:#ff7889;--green:#6ee8bb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth;overflow-x:clip}body{margin:0;background:var(--bg);color:var(--text);min-width:300px;overflow-x:hidden}button{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid var(--mint);outline-offset:4px}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}[hidden]{display:none!important}
.page-glow{pointer-events:none;position:fixed;z-index:-1;width:550px;height:550px;filter:blur(80px);opacity:.2}.glow-left{left:-290px;top:180px;background:radial-gradient(circle,#05566a,transparent 72%)}.glow-right{right:-260px;top:20px;background:radial-gradient(circle,#2a337f,transparent 73%)}.shell{max-width:1250px;margin:auto;padding:0 34px}
.topbar{min-height:100px;border-bottom:1px solid #1d2940;display:flex;align-items:center;justify-content:space-between;gap:15px}.brand{display:flex;align-items:center;gap:13px}.brand-mark{width:47px;height:47px;display:grid;place-items:center;color:#081c24;background:linear-gradient(135deg,#7cebc9,#35cfc9);border-radius:13px;box-shadow:0 0 24px #34daba30}.brand-label{font-size:16px;letter-spacing:1px;font-weight:800;line-height:1.1;white-space:nowrap}.brand-label strong{color:var(--mint)}.brand-label small{display:block;color:#788ba4;font-size:9px;letter-spacing:2.25px;margin-top:6px}.top-right{display:flex;gap:10px;align-items:center;font-size:12px;color:#abbad0}.pulse-dot,.live-dot{width:8px;height:8px;border-radius:50%;background:#55dfb5;box-shadow:0 0 14px #55dfb5;display:inline-block}.version{font-size:11px;color:#6e7c97;border-left:1px solid #34405a;padding-left:12px;margin-left:5px}
.intro{padding:49px 0 33px}.eyebrow{color:var(--mint);font-weight:800;letter-spacing:2.3px;font-size:10px;display:flex;gap:12px;align-items:center}.eyebrow-line{width:28px;height:2px;background:var(--mint)}h1{font-weight:800;letter-spacing:-2.8px;font-size:clamp(37px,4.9vw,62px);line-height:1.08;margin:18px 0 15px}h1 span{color:var(--mint)}.intro p{max-width:590px;color:#99a9c1;line-height:1.65;font-size:14px;margin:0}.panel{background:linear-gradient(155deg,#121d31,#0e1729 70%);border:1px solid #25324a;border-radius:17px;box-shadow:0 10px 45px #01071526}.dashboard{display:grid;grid-template-columns:minmax(330px,.92fr) minmax(0,1.08fr);gap:20px}.speed-panel{padding:24px 26px 21px;display:flex;flex-direction:column;align-items:center;overflow:hidden}.panel-heading{font-size:10px;letter-spacing:1.6px;font-weight:800;color:#aabbd4;display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%}.live-label{color:var(--mint);font-size:10px;letter-spacing:1px;display:flex;align-items:center;gap:8px}.live-dot{width:6px;height:6px}.speed-gauge{width:min(100%,340px);aspect-ratio:1;position:relative;margin:16px auto -4px}.gauge-svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}.gauge-bg{fill:none;stroke:#223047;stroke-width:14}.gauge-active{fill:none;stroke:url(#gaugeGradient);stroke-width:14;stroke-linecap:round;stroke-dasharray:772.8318;stroke-dashoffset:772.8318;transition:stroke-dashoffset .2s ease;filter:drop-shadow(0 0 7px #28e3c648)}.gauge-inner{fill:none;stroke:#1a293e;stroke-width:1.2;stroke-dasharray:3 9}.gauge-marks{fill:none;stroke:#35465d;stroke-width:2;stroke-linecap:round}.gauge-content{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:translateY(4px)}.gauge-topline{letter-spacing:2.3px;font-size:10px;color:#90a1b9;font-weight:750}.speed-value{font-size:clamp(54px,6.1vw,76px);letter-spacing:-4px;font-weight:760;line-height:1.13;margin-top:13px;font-variant-numeric:tabular-nums}.speed-value span{font-size:.49em;color:#8ea6bd;letter-spacing:-1px}.speed-unit{font-size:18px;font-weight:650;color:var(--mint)}.speed-scale{font-size:9px;color:#62748f;letter-spacing:1px;margin-top:20px}.test-status{display:flex;align-items:center;justify-content:center;gap:9px;color:#a5b5cc;font-size:12px;min-height:26px;margin-top:-4px}.status-indicator{width:7px;height:7px;border:1px solid #66809a;border-radius:50%}.status-indicator.running{background:var(--mint);border-color:var(--mint);box-shadow:0 0 12px var(--mint)}.status-indicator.error{background:var(--red);border-color:var(--red)}.test-actions{width:100%;margin-top:18px}.btn-primary,.btn-secondary{height:55px;width:100%;border-radius:11px;border:0;cursor:pointer;font-size:12px;letter-spacing:1.5px;font-weight:900;transition:transform .15s,filter .15s}.btn-primary{background:linear-gradient(100deg,#5fe6c9,#42d3d2);color:#07202a;box-shadow:0 8px 24px #37d2ba2c}.btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px)}.btn-secondary{border:1px solid #a55565;background:#301d2b;color:#ff9bab}.play-icon{font-size:11px;margin-right:9px}.test-progress{height:4px;background:#233249;width:100%;border-radius:5px;overflow:hidden;margin-top:20px}.progress-bar{width:0;height:100%;background:linear-gradient(90deg,#5de5b9,#7c8cff);transition:width .18s}.time-hint{font-size:10px;color:#75869f;margin:12px 0 0}.stats-column{display:flex;flex-direction:column;gap:17px}.summary-row{display:grid;grid-template-columns:1fr 1fr;gap:17px}.stat-card{padding:19px 21px;min-height:146px}.stat-top{display:flex;justify-content:space-between;align-items:center;color:#a3b4cb;font-size:10px;letter-spacing:1.4px;font-weight:800}.stat-icon{height:28px;width:28px;display:grid;place-items:center;border-radius:8px;font-size:19px;font-weight:800}.down-icon{color:#52e1c1;background:#1f4c4a}.up-icon{color:#98a5ff;background:#2d355c}.ping-icon{color:#f1d18c;background:#4d4029}.jitter-icon{color:#d5adf8;background:#403251}.stat-number{font-size:38px;line-height:1.2;margin-top:16px;font-weight:760;letter-spacing:-1.5px;font-variant-numeric:tabular-nums}.stat-number small{font-size:13px;margin-left:7px;color:#8093ad;letter-spacing:0;font-weight:600}.stat-help{margin-top:6px;color:#7589a5;font-size:11px}.chart-card{padding:20px 22px 13px;flex:1;min-height:208px}.tiny-tag{background:#1e2d42;border:1px solid #2f3e55;border-radius:5px;padding:5px 7px;font-size:9px;color:#97abc8;letter-spacing:.9px;font-weight:800}.chart-wrap{height:125px;position:relative;margin:14px 0 0}.chart-wrap canvas{width:100%;height:100%;display:block}.chart-unit{position:absolute;left:3px;top:0;color:#7184a0;font-size:9px}.chart-foot{border-top:1px solid #253149;padding-top:10px;display:flex;align-items:center;justify-content:space-between;color:#8b9db8;font-size:10px}.legend-square{display:inline-block;width:7px;height:7px;background:var(--mint);border-radius:2px;margin-right:5px}
.below-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.diagnosis,.history{padding:22px 23px;min-height:220px}.diag-main{display:flex;align-items:center;gap:16px;margin:24px 0 22px}.quality-icon{height:50px;width:50px;min-width:50px;border:1px solid #2c504d;border-radius:13px;color:var(--mint);background:#173c3d;display:grid;place-items:center;font-size:27px}.diag-main h2{font-size:17px;letter-spacing:-.2px;margin:0 0 7px}.diag-main p{font-size:12px;line-height:1.5;color:#93a5c0;margin:0}.diagnosis-bottom{border-top:1px solid #253249;border-bottom:1px solid #253249;padding:13px 0;display:flex;justify-content:space-between;align-items:center;gap:9px;font-size:10px;color:#93a6c1;letter-spacing:1px}.diagnosis-bottom strong{color:#dae9f7;font-size:15px}.btn-text{margin-top:15px;background:transparent;color:var(--mint);border:0;font-size:12px;font-weight:750;cursor:pointer;padding:0}.btn-text span{margin-left:7px}.history-overflow{overflow:auto;margin-top:18px}table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;white-space:nowrap}th{font-size:9px;color:#70849f;letter-spacing:1px;font-weight:800;text-align:left;padding:10px 5px}td{font-size:11px;border-top:1px solid #233047;color:#b9c9dd;padding:12px 5px}td:not(:first-child),th:not(:first-child){text-align:right}.empty-history{text-align:center!important;color:#8b9cb4;padding-top:34px;border:0}.disclaimer{margin-top:21px;padding:17px 19px;border:1px solid #29374c;background:#101a2a;border-radius:11px;color:#8d9fb9;font-size:11px;line-height:1.6;display:flex;align-items:flex-start;gap:12px}.info-icon{flex-shrink:0;border:1px solid #7285a0;width:17px;height:17px;border-radius:50%;text-align:center;line-height:16px;font-size:12px;color:#b2c4e2;font-weight:800}.disclaimer strong{color:#bdcce0}footer{padding:30px 0 35px;display:flex;justify-content:space-between;gap:15px;color:#64748d;font-size:10px;letter-spacing:1px}
@media(max-width:920px){.dashboard{grid-template-columns:1fr}.speed-panel{max-width:none}.speed-gauge{width:min(90%,310px)}.stat-card{min-height:135px}.stat-number{font-size:33px}.below-grid{grid-template-columns:1fr}.chart-wrap{height:160px}.intro{padding-top:37px}}
@media(max-width:560px){.shell{padding:0 16px}.topbar{min-height:80px}.brand-mark{height:40px;width:40px}.brand-label{font-size:12px}.brand-label small{font-size:7px;letter-spacing:1.4px}.top-right{font-size:0;gap:4px}.top-right .version{font-size:9px}.intro{padding:34px 0 26px}h1{letter-spacing:-1.5px;font-size:39px}.intro p{font-size:13px}.speed-panel{padding:18px 19px 19px}.speed-gauge{width:min(100%,290px);margin:7px auto -4px}.speed-value{font-size:66px}.summary-row,.stats-column{gap:10px}.stat-card{padding:16px 14px;min-height:122px}.stat-number{font-size:28px;margin-top:15px}.stat-number small{font-size:10px;margin-left:3px}.stat-help{font-size:10px}.chart-card{padding:18px 14px}.below-grid{gap:10px;margin-top:10px}.diagnosis,.history{padding:20px 16px}footer{flex-direction:column;gap:10px;text-align:center}.panel-heading{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* M Ventas NetLab v1.3: latencia separada y promociones fuera de la prueba */
.promo-overlay[hidden]{display:none!important}
.latency-card{padding:16px 20px}.latency-values{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:15px 0 7px;font-size:12px;color:#9eafc8}.latency-values strong{color:#e2f4ff;font-size:19px;margin-left:5px;font-variant-numeric:tabular-nums}.latency-card p{color:#788da8;font-size:11px;line-height:1.5;margin:7px 0 0}.promo-trigger{background:transparent;border:1px solid #54778e;color:#b4f0e4;border-radius:8px;padding:9px 13px;cursor:pointer;font-size:12px;margin-top:16px}.promo-trigger:hover{background:#162f3d}
.promo-overlay{position:fixed;z-index:1000;inset:0;background:rgba(0,6,16,.78);display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto}.promo-dialog{position:relative;width:min(100%,430px);border:1px solid #385873;border-radius:20px;padding:22px 25px 20px;color:#f3f8ff;background:radial-gradient(circle at 100% 0%,#175466 0%,transparent 45%),linear-gradient(155deg,#16233c,#0d172b 78%);box-shadow:0 25px 80px #0009;text-align:left}.promo-header,.promo-footer{display:flex;justify-content:space-between;align-items:center;gap:12px}.promo-brand{letter-spacing:1.2px;color:#67e3cd;font-size:11px;font-weight:800}.promo-close,.promo-nav{color:#f5fbff;border:1px solid #476074;background:#22334b;border-radius:10px;cursor:pointer}.promo-close{height:36px;width:36px;font-size:24px;line-height:1}.promo-badge{display:inline-block;margin-top:22px;font-size:11px;font-weight:800;letter-spacing:1.5px;color:#f4d999}.promo-icon{display:grid;place-items:center;background:linear-gradient(135deg,#136978,#303a82);border:1px solid #347888;box-shadow:0 10px 30px #0005;border-radius:18px;width:85px;height:85px;font-size:47px;margin-top:12px;color:#e7fff8}.promo-dialog h2{font-size:27px;line-height:1.14;letter-spacing:-.5px;margin:20px 0 12px}.promo-dialog p{color:#abc0d6;font-size:14px;line-height:1.6}.promo-cta{display:block;background:linear-gradient(110deg,#5ee4bd,#3bd0cc);color:#062333;font-weight:900;text-align:center;border-radius:11px;padding:14px;margin:22px 0 18px}.promo-footer{justify-content:center;color:#9db4cc;font-size:13px}.promo-nav{font-size:24px;width:38px;height:34px}.promo-dialog .promo-disclosure{font-size:10px;text-align:center;color:#8197b2;margin-bottom:0}
@media(max-width:560px){.promo-dialog{padding:18px 19px}.promo-dialog h2{font-size:24px}}

