:root {
  --bg:#0f1512; --surface:#161e1a; --surface-2:#1d2723; --border:#2a3630;
  --text:#e9efec; --text-muted:#8fa39b; --accent:#3ecf8e; --accent-text:#0b1a13;
  --accent-soft:#163527; --warn:#ffc069; --warn-bg:#2b2110; --warn-border:#4a3618;
  --mono-bg:#101815;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--text); font-family:system-ui,-apple-system,"Segoe UI",sans-serif; }
.wrap { max-width:1000px; margin:0 auto; padding:0 16px 48px; }
header { padding:28px 0 16px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
header .eyebrow { font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--accent); }
header h1 { font-size:24px; margin:6px 0 0; }
button { font-family:inherit; font-weight:700; font-size:13px; border-radius:8px; border:1px solid transparent; cursor:pointer; padding:10px 14px; }
button.primary { background:var(--accent); color:var(--accent-text); }
button.ghost { background:var(--surface-2); color:var(--text); border-color:var(--border); }
button.danger { background:var(--warn-bg); color:var(--warn); border-color:var(--warn-border); }
button:disabled { opacity:.5; cursor:not-allowed; }
input[type=text], input[type=password], input[type=url] {
  width:100%; font-family:inherit; font-size:13.5px; background:var(--mono-bg); border:1px solid var(--border);
  border-radius:8px; padding:10px 12px; color:var(--text);
}
label.small { font-size:12px; color:var(--text-muted); display:block; margin-bottom:4px; }
.card { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:20px; margin-top:14px; }
.msg { margin-top:14px; padding:12px 14px; border-radius:10px; font-size:13.5px; display:none; }
.msg.ok { display:block; background:var(--accent-soft); color:var(--accent); border:1px solid var(--accent); }
.msg.err { display:block; background:var(--warn-bg); color:var(--warn); border:1px solid var(--warn-border); }
.login-box { max-width:380px; margin:80px auto; }
.login-box h1 { font-size:22px; margin:0 0 4px; }
.login-box .help { color:var(--text-muted); font-size:13px; margin-bottom:18px; }
.cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:14px; margin-top:16px; }
.cliente-card { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:18px; cursor:pointer; transition:border-color .15s; text-decoration:none; color:inherit; display:block; }
.cliente-card:hover { border-color:var(--accent); }
.cliente-card h3 { margin:0 0 12px; font-size:16px; }
.cliente-card .stats { display:grid; grid-template-columns:1fr 1fr; gap:8px 14px; }
.cliente-card .stat { display:flex; flex-direction:column; }
.cliente-card .stat .n { font-size:20px; font-weight:800; font-variant-numeric:tabular-nums; }
.cliente-card .stat .rotulo { font-size:11px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.03em; }
.cliente-card .stat .n.indisponivel { color:var(--warn); font-size:13px; }

.vm-stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr)); gap:10px 16px; }
.vm-stats .stat { display:flex; flex-direction:column; background:var(--surface-2); border:1px solid var(--border); border-radius:10px; padding:10px 12px; }
.vm-stats .stat .n { font-size:19px; font-weight:800; font-variant-numeric:tabular-nums; }
.vm-stats .stat .n.alerta { color:var(--warn); }
.vm-stats .stat .rotulo { font-size:11px; color:var(--text-muted); text-transform:uppercase; letter-spacing:.03em; margin-top:2px; }
.vm-conectados-lista { margin-top:14px; font-size:13px; }
.vm-conectados-lista table { width:100%; border-collapse:collapse; }
.vm-conectados-lista th, .vm-conectados-lista td { text-align:left; padding:6px 8px; border-bottom:1px solid var(--border); font-variant-numeric:tabular-nums; }
.vm-conectados-lista th { color:var(--text-muted); font-size:11px; text-transform:uppercase; letter-spacing:.03em; font-weight:600; }
