:root{
  --bg:#f5f7fa; --card:#ffffff; --tx:#1f2a37; --tx2:#6b7785; --borde:#e4e8ee;
  --azul:#2563a8; --azul-s:#e8f0fa; --verde:#1f8a5b; --verde-s:#e5f5ec;
  --rojo:#c0392b; --rojo-s:#fdecea; --ambar:#b7791f; --ambar-s:#fdf4e3;
  --gris-s:#eef1f5; --radio:14px; --sombra:0 1px 2px rgba(16,24,40,.04),0 4px 14px rgba(16,24,40,.05);
  color-scheme: light;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.5 Inter,system-ui,sans-serif}
a{color:var(--azul);text-decoration:none}
.top{background:#fff;border-bottom:1px solid var(--borde);position:sticky;top:0;z-index:10}
.top-in{max-width:1200px;margin:auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.marca{display:flex;align-items:center;gap:10px;color:var(--tx)}
.marca-ico{width:38px;height:38px;border-radius:10px;background:var(--azul-s);color:var(--azul);display:grid;place-items:center;font-size:20px}
.marca small{display:block;color:var(--tx2);font-size:12px;letter-spacing:.06em}
nav{display:flex;gap:4px;flex-wrap:wrap}
nav a{padding:8px 12px;border-radius:9px;color:var(--tx2);font-weight:500}
nav a.on,nav a:hover{background:var(--azul-s);color:var(--azul)}
nav a.salir{color:var(--tx2)}
.pill{background:var(--rojo);color:#fff;border-radius:99px;font-size:11px;padding:1px 7px;margin-left:4px}
.wrap{max-width:1200px;margin:auto;padding:24px 16px}
h1{font-size:22px;margin:0 0 4px}
.sub{color:var(--tx2);margin:0 0 20px}
.cabeza{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.cabeza .sub{margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.card{background:var(--card);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra);padding:18px}
.card h3{margin:0;font-size:17px}
.card .id{color:var(--tx2);font-size:12.5px}
.fila{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.estado{font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px;white-space:nowrap}
.estado.ok{background:var(--verde-s);color:var(--verde)}
.estado.off{background:var(--gris-s);color:var(--tx2)}
.estado.mal{background:var(--rojo-s);color:var(--rojo)}
.estado.av{background:var(--ambar-s);color:var(--ambar)}
.temp{font-size:40px;font-weight:700;margin:14px 0 2px;letter-spacing:-.02em}
.temp small{font-size:18px;color:var(--tx2);font-weight:500}
.temp.mal{color:var(--rojo)}
.rango{color:var(--tx2);font-size:13px}
.metricas{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}
.met{background:var(--bg);border-radius:10px;padding:8px;text-align:center}
.met b{display:block;font-size:15px}
.met span{font-size:11.5px;color:var(--tx2)}
.pie-card{display:flex;justify-content:space-between;font-size:12.5px;color:var(--tx2);border-top:1px solid var(--borde);padding-top:10px}
.vacio{text-align:center;padding:48px 16px;color:var(--tx2)}
.btn{display:inline-block;background:var(--azul);color:#fff;border:0;border-radius:10px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer}
.btn:hover{filter:brightness(1.08)}
.btn.sec{background:#fff;color:var(--tx);border:1px solid var(--borde)}
.btn.peq{padding:5px 10px;font-size:13px}
.btn.rojo{background:var(--rojo)}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:10px 12px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:middle}
th{color:var(--tx2);font-weight:600;font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;background:#fafbfc}
.tabla{overflow-x:auto;padding:0}
form.f{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}
label{display:block;font-size:13px;color:var(--tx2);margin-bottom:4px;font-weight:500}
input,select{width:100%;padding:9px 11px;border:1px solid var(--borde);border-radius:9px;font:inherit;background:#fff;color:var(--tx)}
input:focus,select:focus{outline:2px solid var(--azul-s);border-color:var(--azul)}
.aviso{padding:12px 14px;border-radius:10px;margin-bottom:16px;font-size:14px}
.aviso.ok{background:var(--verde-s);color:var(--verde)}
.aviso.mal{background:var(--rojo-s);color:var(--rojo)}
.aviso.info{background:var(--azul-s);color:var(--azul)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.kpi{background:#fff;border:1px solid var(--borde);border-radius:var(--radio);padding:14px 16px;box-shadow:var(--sombra)}
.kpi span{color:var(--tx2);font-size:12.5px}
.kpi b{display:block;font-size:24px;margin-top:2px}
pre.json{background:#f8fafc;border:1px solid var(--borde);border-radius:10px;padding:12px;font-size:12.5px;overflow:auto;max-height:280px;margin:0}
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login .card{width:100%;max-width:380px;padding:28px}
.pie{text-align:center;color:var(--tx2);font-size:12.5px;padding:24px 16px 32px}
.mt{margin-top:20px}
@media (max-width:600px){
  .metricas{grid-template-columns:repeat(2,1fr)}
  .temp{font-size:34px}
}
