:root { --bg:#f4f5f7; --card:#fff; --text:#1f2430; --muted:#6b7280; --border:#e5e7eb; --primary:#2563eb; --primary-dark:#1d4ed8; --green:#15803d; --red:#dc2626; }
* { box-sizing: border-box; }
body { margin:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; background:var(--bg); color:var(--text); line-height:1.45; }
a { color:var(--primary); text-decoration:none; } a:hover { text-decoration:underline; }
.topbar { display:flex; align-items:center; gap:14px; padding:12px 20px; background:var(--card); border-bottom:1px solid var(--border); }
.brand { font-weight:700; color:var(--text); margin-right:auto; }
.who { color:var(--muted); font-size:.88rem; }
.link-btn { background:none; border:none; color:var(--muted); cursor:pointer; font-size:.88rem; padding:0; }
.link-btn:hover { color:var(--text); }
.logout { margin:0; }
.container { max-width:1100px; margin:0 auto; padding:22px 16px 60px; }
h1 { font-size:1.45rem; margin:0 0 8px; } h2 { font-size:1.05rem; margin:0 0 10px; }
.card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin:0 0 16px; }
.card.narrow { max-width:460px; margin:40px auto; }
.local-head { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.local-head h1 { margin:0; }
.rol { font-size:.72rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; padding:2px 9px; border-radius:999px; background:#e0e7ff; color:#3730a3; }
.rol-gestor { background:#e5e7eb; color:#374151; }
.muted-link { font-size:.85rem; color:var(--muted); }
.updated { margin:4px 0 12px; color:var(--muted); font-size:.9rem; }
.tabs { display:flex; flex-wrap:wrap; gap:4px; border-bottom:1px solid var(--border); margin:0 0 18px; }
.tab { padding:9px 13px; color:var(--muted); font-size:.92rem; border:1px solid transparent; border-bottom:none; border-radius:6px 6px 0 0; margin-bottom:-1px; }
.tab:hover { color:var(--text); text-decoration:none; background:#f8f9fb; }
.tab-active { color:var(--primary-dark); font-weight:600; background:var(--card); border-color:var(--border); }
.cards3 { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; margin-bottom:8px; }
.kpi h2 { color:var(--muted); font-size:.82rem; text-transform:uppercase; letter-spacing:.04em; }
.kpi-value { font-size:1.9rem; font-weight:700; margin:0; }
.compare { margin:8px 0 0; font-size:.9rem; } .compare.up strong { color:var(--green); } .compare.down strong { color:var(--red); }
.muted { color:var(--muted); font-size:.88rem; } .empty { color:var(--muted); }
.table-wrap { overflow-x:auto; }
table { width:100%; border-collapse:collapse; font-size:.9rem; }
th, td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--border); vertical-align:top; }
th { color:var(--muted); font-size:.78rem; text-transform:uppercase; letter-spacing:.03em; white-space:nowrap; }
.num { text-align:right; white-space:nowrap; } td.down { color:var(--red); font-weight:600; }
.filter { display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; margin:0 0 14px; }
.filter label, .stack label { display:flex; flex-direction:column; gap:4px; font-size:.82rem; color:var(--muted); }
.filter .grow { flex:1 1 260px; }
input[type=text], input[type=email], input[type=password], input[type=date], input[type=search] { padding:9px 11px; border:1px solid var(--border); border-radius:6px; font-size:.95rem; background:#fff; color:var(--text); }
button, .btn { background:var(--primary); color:#fff; border:none; border-radius:6px; padding:10px 16px; font-size:.92rem; cursor:pointer; display:inline-block; }
button:hover, .btn:hover { background:var(--primary-dark); text-decoration:none; }
.link-btn:hover { background:none; }
.btn-link { display:inline-block; padding:8px 12px; border:1px solid var(--border); border-radius:6px; background:#fff; color:var(--text); font-size:.88rem; }
.stack { display:flex; flex-direction:column; gap:12px; } .form-wide { max-width:520px; }
.row2 { display:grid; grid-template-columns:1fr 2fr; gap:12px; }
.error { background:#fee2e2; color:var(--red); padding:10px 14px; border-radius:6px; font-size:.9rem; }
.flash-ok { background:#dcfce7; color:var(--green); padding:10px 14px; border-radius:6px; }
.hint { color:var(--muted); font-size:.85rem; }
.facts { display:grid; grid-template-columns:140px 1fr; gap:6px 14px; margin:0 0 14px; } .facts dt { color:var(--muted); font-size:.88rem; } .facts dd { margin:0; }
.tag { display:inline-block; font-size:.74rem; font-weight:700; padding:1px 8px; border-radius:999px; background:#e5e7eb; color:#374151; }
.tag-pendiente { background:#fef9c3; color:#854d0e; } .tag-emitida { background:#dcfce7; color:var(--green); } .tag-rechazada, .tag-bad { background:#fee2e2; color:var(--red); }
.local-list { list-style:none; padding:0; margin:0; } .big-link { font-size:1.15rem; font-weight:600; margin-right:10px; }
.qr { width:220px; height:220px; margin:12px auto; } .qr svg { width:100%; height:100%; }
.secret { word-break:break-all; background:#f3f4f6; padding:2px 6px; border-radius:4px; }
code { background:#f3f4f6; padding:1px 5px; border-radius:4px; word-break:break-all; font-size:.85em; }
.pager { margin:12px 0 0; font-size:.9rem; }
@media (max-width:600px) { .facts { grid-template-columns:1fr; } .row2 { grid-template-columns:1fr; } }