:root{
  --red:#D81F2A; --red-dark:#a5171f; --green:#00B050; --gray:#474747;
  --ink:#20232a; --paper:#ffffff; --wash:#f4f5f7; --line:#e3e5ea;
  --sidebar:#1b1d22; --sidebar-hover:#25282f; --muted:#8b8f98;
}
*{box-sizing:border-box;}
body{margin:0;font-family:'Open Sans',sans-serif;background:var(--wash);color:var(--ink);}
h1,h2,h3,.brand,.nav-label{font-family:'Poppins',sans-serif;}

.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh;}
.sidebar{background:var(--sidebar);color:#fff;padding:22px 16px;display:flex;flex-direction:column;}
.brand{font-weight:700;font-size:19px;letter-spacing:-0.02em;padding:6px 10px 26px;display:flex;align-items:center;gap:8px;}
.brand .dot{width:9px;height:9px;border-radius:2px;background:var(--red);}
.nav-group{margin-bottom:22px;}
.nav-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:0 10px 8px;font-weight:600;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:#d7d8dc;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;}
.nav-item:hover{background:var(--sidebar-hover);color:#fff;}
.nav-item.active{background:var(--red);color:#fff;}

.main{padding:28px 36px 60px;max-width:1180px;}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:22px;}
.topbar h1{font-size:22px;margin:0 0 4px;font-weight:600;}
.topbar p{margin:0;color:var(--muted);font-size:13.5px;}

.btn{font-family:'Open Sans',sans-serif;font-weight:600;font-size:13.5px;border:none;border-radius:8px;padding:10px 16px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;}
.btn-primary{background:var(--red);color:#fff;}
.btn-primary:hover{background:var(--red-dark);}
.btn-ghost{background:#fff;border:1px solid var(--line);color:var(--ink);}

.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
table{width:100%;border-collapse:collapse;font-size:13.5px;}
th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:12px 18px;border-bottom:1px solid var(--line);background:#fafbfc;}
td{padding:14px 18px;border-bottom:1px solid var(--line);vertical-align:middle;}
tr:last-child td{border-bottom:none;}

.badge{font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;}
.badge-ok{background:#e6f8ee;color:#0a8a45;}
.badge-none{background:#f1f2f4;color:#7c7f87;}

label{display:block;font-size:12.5px;font-weight:600;color:var(--gray);margin:0 0 6px;}
input[type=email],input[type=password],input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-family:inherit;margin-bottom:16px;}
input:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px #fbe3e5;}

.error-box{background:#fdeeea;border:1px solid #f3c9cc;border-radius:9px;padding:11px 13px;font-size:12.5px;color:#a5171f;margin-bottom:16px;display:none;}

.btn-danger{background:#fff0f0;color:var(--red);border:1px solid #f3c9cc;}
.btn-danger:hover{background:#fde3e4;}

select{padding:9px 12px;border:1px solid var(--line);border-radius:8px;font-size:13.5px;font-family:inherit;background:#fff;margin-bottom:16px;width:100%;}

.role-badge{font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;display:inline-block;}
.role-admin{background:#fde3e4;color:var(--red);}
.role-operador{background:#e9f1ff;color:#2563a8;}
.role-lectura{background:#eceef1;color:#5b5f68;}

.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:6px;}
.status-active{background:var(--green);}
.status-off{background:#c2c5cc;}

.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.filters select, .filters input{margin-bottom:0;width:auto;min-width:150px;}
.action-tag{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:.03em;display:inline-block;}
.act-sistema{background:#e9f1ff;color:#2563a8;}
.act-clave_ssh{background:#fde3e4;color:var(--red);}
.act-usuarios{background:#f1f2f4;color:#5b5f68;}
.act-login{background:#eceef1;color:#5b5f68;}
.act-informe{background:#f2ecff;color:#6f42c1;}

.checkbox-row{display:flex;align-items:center;gap:8px;font-weight:400;margin-bottom:8px;}
.checkbox-row input{margin:0;}
