/* styles.css — Estilos globales. Para otro cliente basta con cambiar las variables de :root. */
:root { --brand:#1f3864; --accent:#2e75b6; --bg:#f4f6fa; --card:#fff; --text:#1c2430; --muted:#6b7686; --ok:#1e7b3a; --err:#b42318; --radius:10px; }
* { box-sizing:border-box; }
body { margin:0; font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif; background:var(--bg); color:var(--text); }
.top { display:flex; gap:1rem; align-items:center; padding:.75rem 1.25rem; background:var(--brand); color:#fff; flex-wrap:wrap; }
.top nav { margin-left:auto; display:flex; gap:.5rem; }
.top .muted { color:#c9d4ea; }
main { max-width:1100px; margin:1.25rem auto; padding:0 1rem; }
.card { background:var(--card); border-radius:var(--radius); padding:1.25rem; margin-bottom:1rem; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.narrow { max-width:420px; margin:2rem auto; }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:.75rem; align-items:end; }
label { display:flex; flex-direction:column; gap:.25rem; font-size:.85rem; color:var(--muted); }
input,select { padding:.55rem .65rem; border:1px solid #cbd3df; border-radius:6px; font:inherit; color:var(--text); }
button { padding:.5rem .9rem; border:1px solid #cbd3df; background:#fff; border-radius:6px; cursor:pointer; font:inherit; }
button.on { background:var(--accent); color:#fff; border-color:var(--accent); }
button.primary { background:var(--accent); color:#fff; border-color:var(--accent); }
button.big { width:100%; padding:1rem; font-size:1.1rem; margin:1rem 0; }
.tabs { display:flex; gap:.5rem; margin-bottom:1rem; }
.scroll { overflow-x:auto; }
table { width:100%; border-collapse:collapse; font-size:.88rem; }
th,td { padding:.45rem .6rem; border-bottom:1px solid #e6eaf1; text-align:left; white-space:nowrap; }
th { background:#eef2f9; }
.muted { color:var(--muted); }
.msg { max-width:1100px; margin:.75rem auto 0; padding:.6rem 1rem; border-radius:6px; }
.msg.err { background:#fde8e6; color:var(--err); } .msg.ok { background:#e3f4e8; color:var(--ok); }
.ok { color:var(--ok); font-weight:600; }
.demo { background:#fff6d6; padding:.5rem .75rem; border-radius:6px; }
.punches { list-style:none; padding:0; } .punches li { display:flex; justify-content:space-between; padding:.35rem 0; border-bottom:1px dashed #dde3ee; }
.file input { display:none; } .file { display:inline-block; padding:.5rem .9rem; border:1px solid #cbd3df; border-radius:6px; cursor:pointer; background:#fff; color:var(--text); font-size:1rem; }
.logo { height:28px; vertical-align:middle; margin-right:.5rem; border-radius:4px; }
textarea { padding:.55rem .65rem; border:1px solid #cbd3df; border-radius:6px; font:inherit; }
/* Resumen consolidado y programación */
table.resumen td { vertical-align:top; } table.resumen tr.bloque td { border-top:2px solid #cbd3df; }
.num { text-align:right; font-variant-numeric:tabular-nums; }
th.total,td.total { background:#fff4cc; font-weight:700; text-align:right; font-size:1rem; color:#5b4300; }
.badge { display:inline-block; padding:.1rem .5rem; border-radius:999px; background:#e6eaf1; font-size:.75rem; }
.badge.programadas { background:#dbeafe; color:#1e40af; } .badge.operativa { background:#ffedd5; color:#9a3412; } .badge.warn { background:#fde8e6; color:var(--err); }
.kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:.75rem; }
.kpi { background:#eef2f9; border-radius:var(--radius); padding:.9rem 1rem; display:flex; flex-direction:column; gap:.2rem; }
.kpi span { font-size:.8rem; color:var(--muted); } .kpi b { font-size:1.3rem; } .kpi.main { background:var(--brand); color:#fff; } .kpi.main span { color:#c9d4ea; }
.dias { border:1px dashed #cbd3df; border-radius:6px; display:flex; gap:.75rem; flex-wrap:wrap; align-items:center; grid-column:1/-1; }
label.chk { flex-direction:row; align-items:center; gap:.3rem; color:var(--text); }
button[disabled] { opacity:.5; cursor:not-allowed; }
