:root{
  --bg:#0f172a; --bg2:#1e293b; --card:#ffffff; --ink:#0f172a; --muted:#64748b;
  --line:#e2e8f0; --brand:#1d4ed8; --brand-d:#1e40af;
  --ok:#16a34a; --okbg:#dcfce7; --warn:#d97706; --warnbg:#fef3c7;
  --bad:#dc2626; --badbg:#fee2e2; --info:#0369a1; --infobg:#e0f2fe;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:#f1f5f9;color:var(--ink);font-size:15px;line-height:1.45}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}

/* Topbar */
.topbar{display:flex;justify-content:space-between;align-items:center;
  background:var(--bg);color:#fff;padding:10px 18px;position:sticky;top:0;z-index:20}
.brand{font-weight:700;letter-spacing:.3px}
.userbox{display:flex;align-items:center;gap:10px;font-size:14px}
.role-tag{font-size:11px;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:#334155}
.role-admin{background:#7c3aed}.role-testigo{background:#0891b2}

/* Sidenav */
.sidenav{position:fixed;top:46px;left:0;width:210px;bottom:0;background:var(--bg2);
  padding:12px 8px;overflow:auto}
.sidenav a{display:flex;align-items:center;gap:9px;color:#cbd5e1;padding:10px 12px;
  border-radius:8px;margin-bottom:3px;font-size:14px}
.sidenav a:hover{background:#334155;color:#fff;text-decoration:none}
.sidenav a.active{background:var(--brand);color:#fff}
.sidenav .ico{width:18px;text-align:center}

/* Content */
.content{padding:22px;max-width:1200px;margin:0 auto}
.content.with-nav{margin-left:210px;max-width:none}
.foot{text-align:center;color:var(--muted);padding:24px;font-size:13px}
.content.with-nav + .foot{margin-left:210px}

h1{font-size:22px;margin:0 0 4px}
h2{font-size:18px;margin:24px 0 10px}
.sub{color:var(--muted);margin:0 0 18px}

/* Cards / grid */
.grid{display:grid;gap:16px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;
  box-shadow:0 1px 2px rgba(0,0,0,.04)}
.kpi{display:flex;flex-direction:column;gap:4px}
.kpi .n{font-size:30px;font-weight:700;line-height:1}
.kpi .l{color:var(--muted);font-size:13px}
.kpi.ok .n{color:var(--ok)}.kpi.warn .n{color:var(--warn)}.kpi.brand .n{color:var(--brand)}

/* Tables */
table{width:100%;border-collapse:collapse;background:#fff}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);font-size:14px}
th{background:#f8fafc;color:#475569;font-weight:600;position:sticky;top:0}
tbody tr:hover{background:#f8fafc}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.logo-mini{width:26px;height:26px;object-fit:contain;border-radius:4px;vertical-align:middle;background:#f1f5f9}

/* Forms */
form .row{margin-bottom:14px}
label{display:block;font-weight:600;font-size:13px;margin-bottom:5px;color:#334155}
input[type=text],input[type=number],input[type=password],input[type=file],select,textarea{
  width:100%;padding:9px 11px;border:1px solid #cbd5e1;border-radius:8px;font-size:14px;background:#fff}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(29,78,216,.12)}
.inline{display:flex;gap:12px;flex-wrap:wrap}
.inline > div{flex:1;min-width:140px}
.help{color:var(--muted);font-size:12px;margin-top:4px}

/* Buttons */
.btn{display:inline-block;padding:9px 16px;border-radius:8px;border:1px solid transparent;
  background:var(--brand);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--brand-d);text-decoration:none}
.btn-sm{padding:5px 10px;font-size:13px}
.btn-ghost{background:transparent;border-color:#475569;color:#e2e8f0}
.btn-ghost:hover{background:#334155}
.btn-ok{background:var(--ok)}.btn-ok:hover{background:#15803d}
.btn-bad{background:var(--bad)}.btn-bad:hover{background:#b91c1c}
.btn-light{background:#e2e8f0;color:#0f172a}.btn-light:hover{background:#cbd5e1}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* Badges & alerts */
.badge{font-size:12px;padding:3px 9px;border-radius:999px;font-weight:600;white-space:nowrap}
.badge-ok{background:var(--okbg);color:var(--ok)}
.badge-warn{background:var(--warnbg);color:var(--warn)}
.badge-bad{background:var(--badbg);color:var(--bad)}
.alert{padding:12px 14px;border-radius:10px;margin-bottom:14px;font-size:14px;border:1px solid}
.alert-success{background:var(--okbg);border-color:#86efac;color:#166534}
.alert-error{background:var(--badbg);border-color:#fca5a5;color:#991b1b}
.alert-info{background:var(--infobg);border-color:#7dd3fc;color:#075985}
.alert-warn{background:var(--warnbg);border-color:#fcd34d;color:#92400e}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:16px}
.toolbar form{display:flex;gap:10px;flex-wrap:wrap;align-items:end}
.spacer{flex:1}
.pill{display:inline-block;background:#f1f5f9;border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px;color:#475569}

/* Cuadre helper en formulario de acta */
.cuadre-box{padding:10px 14px;border-radius:10px;font-weight:600;font-size:14px}
.cuadre-ok{background:var(--okbg);color:#166534;border:1px solid #86efac}
.cuadre-bad{background:var(--badbg);color:#991b1b;border:1px solid #fca5a5}

/* Login */
.login-wrap{max-width:380px;margin:8vh auto;padding:0 16px}
.login-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:0 8px 30px rgba(2,6,23,.08)}
.login-card h1{text-align:center;margin-bottom:18px}

@media (max-width:820px){
  .sidenav{position:static;width:auto;display:flex;flex-wrap:wrap;gap:6px}
  .content.with-nav,.content.with-nav + .foot{margin-left:0}
  .grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}
}
@media print{
  .topbar,.sidenav,.foot,.toolbar,.no-print{display:none!important}
  .content.with-nav{margin-left:0}
  body{background:#fff}
}
