:root {
    --bg: #1b1d21;
    --nav-bg: #2a2d33;
    --nav-link: #cfd3da;
    --nav-link-hover-bg: #3a3e46;
    --nav-link-hover-text: #ffffff;
    --text: #e8e8e8;
    --label: #9aa0aa;
    --card-bg: #25282e;
    --card-border: #383c44;
    --input-bg: #1b1d21;
    --accent: #3a6ff0;
    --badge-falla-bg: #5a2323;
    --badge-falla-text: #ff9b9b;
    --badge-fuente-bg: #234a2a;
    --badge-fuente-text: #9bffb0;
    --shadow: rgba(0,0,0,.4);
}

:root[data-theme="light"] {
    --bg: #f4f5f7;
    --nav-bg: #ffffff;
    --nav-link: #454a54;
    --nav-link-hover-bg: #eceef1;
    --nav-link-hover-text: #111;
    --text: #1b1d21;
    --label: #6b7280;
    --card-bg: #ffffff;
    --card-border: #e0e2e7;
    --input-bg: #ffffff;
    --accent: #3a6ff0;
    --badge-falla-bg: #ffe0e0;
    --badge-falla-text: #b13030;
    --badge-fuente-bg: #dff5e4;
    --badge-fuente-text: #1d7a3c;
    --shadow: rgba(0,0,0,.08);
}

* { box-sizing: border-box; }
body { margin:0; font-family: Segoe UI, Arial, sans-serif; background:var(--bg); color:var(--text); transition: background .2s ease, color .2s ease; }

.topnav { display:flex; gap:20px; align-items:center; background:var(--nav-bg); padding:12px 24px; box-shadow:0 1px 4px var(--shadow); }
.topnav .brand { font-weight:600; margin-right:20px; }
.topnav a { color:var(--nav-link); text-decoration:none; padding:6px 10px; border-radius:4px; }
.topnav a:hover { background:var(--nav-link-hover-bg); color:var(--nav-link-hover-text); }
.topnav .spacer { flex:1; }
.theme-toggle { background:transparent; border:1px solid var(--card-border); color:var(--text); border-radius:6px; padding:6px 12px; cursor:pointer; font-size:14px; }
.theme-toggle:hover { background:var(--nav-link-hover-bg); }

.container { padding:24px 32px; max-width:1800px; margin:0 auto; width:100%; }

.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; }
.card { background:var(--card-bg); border:1px solid var(--card-border); border-radius:8px; padding:14px 16px; }
.card .label { font-size:12px; color:var(--label); text-transform:uppercase; letter-spacing:.03em; }
.card .value { font-size:26px; font-weight:600; margin-top:4px; }
.card .unit { font-size:14px; color:var(--label); margin-left:4px; }
.card .subvalue { font-size:13px; color:var(--label); margin-top:6px; }

h1 { font-size:20px; font-weight:600; margin-bottom:16px; }

table { width:100%; border-collapse:collapse; margin-top:12px; }
th, td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--card-border); font-size:14px; }
th { color:var(--label); font-weight:600; }

form.filtros { display:flex; gap:10px; align-items:end; margin-bottom:16px; flex-wrap:wrap; }
form.filtros label { display:flex; flex-direction:column; font-size:12px; color:var(--label); gap:4px; }
input, button, select { background:var(--input-bg); color:var(--text); border:1px solid var(--card-border); border-radius:4px; padding:6px 8px; }
button { cursor:pointer; background:var(--accent); border-color:var(--accent); color:#fff; }

.badge { display:inline-block; padding:2px 8px; border-radius:10px; font-size:12px; }
.badge.falla { background:var(--badge-falla-bg); color:var(--badge-falla-text); }
.badge.fuente { background:var(--badge-fuente-bg); color:var(--badge-fuente-text); }

.tiempo { color:var(--label); font-size:13px; margin-bottom:8px; }

.battery-graphic { display:flex; align-items:center; gap:4px; margin-top:8px; }
.battery-body { position:relative; width:100%; max-width:160px; height:44px; border:3px solid var(--card-border); border-radius:6px; overflow:hidden; background:var(--bg); flex-shrink:0; }
.battery-nub { width:7px; height:16px; background:var(--card-border); border-radius:0 3px 3px 0; flex-shrink:0; }
.battery-fill { position:absolute; left:0; top:0; bottom:0; background:#3ecf6a; transition:width .4s ease; }
.battery-fill.medio { background:#e0c93e; }
.battery-fill.bajo { background:#e05a3e; }
.battery-pct { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:17px; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.7); z-index:2; }

.dot { display:inline-block; width:12px; height:12px; border-radius:50%; }
.dot.verde { background:#3ecf6a; box-shadow:0 0 6px #3ecf6a; }
.dot.rojo { background:#e05a3e; box-shadow:0 0 6px #e05a3e; }

/* El diagrama de flujo mantiene panel oscuro fijo en ambos temas (como un "visor" del equipo) */
.flow-wrap { background:#1f2126; border:1px solid #383c44; border-radius:8px; padding:10px; max-width:640px; }
.flow-wrap svg { width:100%; height:auto; }

.dashboard-columns { display:flex; gap:28px; align-items:flex-start; flex-wrap:wrap; }
.col-left { flex:0 0 auto; width:640px; max-width:100%; }
.col-right { flex:1 1 320px; min-width:300px; }
@media (max-width: 1000px) {
    .col-left { width:100%; }
}
