:root{--bg:#f1f5f9;--card:#fff;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--dark:#020617;--green:#047857;--red:#be123c;--amber:#b45309;--blue:#1d4ed8}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--text)}.hidden{display:none!important}.app{display:flex;min-height:100vh}.sidebar{width:230px;background:var(--dark);color:#fff;padding:18px;display:flex;flex-direction:column;gap:8px;position:sticky;top:0;height:100vh}.brand{font-size:28px;font-weight:900;line-height:1;margin-bottom:16px}.brand span{color:#94a3b8}.nav,.logout{border:0;border-radius:14px;padding:11px 12px;text-align:left;background:transparent;color:#cbd5e1;font-weight:700;cursor:pointer}.nav:hover,.nav.active{background:#1e293b;color:#fff}.logout{margin-top:auto;background:#7f1d1d;color:#fff}.main{flex:1;padding:22px;overflow:auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.topbar h2{margin:0;font-size:26px}.topbar p{margin:4px 0 0;color:var(--muted)}select,input,textarea{border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff;width:100%;font:inherit}button{border:0;border-radius:12px;padding:10px 14px;background:var(--dark);color:#fff;font-weight:800;cursor:pointer}button.secondary{background:#e2e8f0;color:#0f172a}button.danger{background:#be123c}.tab{display:none}.tab.active{display:block}.grid{display:grid;gap:14px}.grid.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.kpi .label{color:var(--muted);font-size:13px;font-weight:700}.kpi .value{font-size:25px;font-weight:900;margin-top:6px}.kpi .help{color:var(--muted);font-size:13px;margin-top:4px}.green{color:var(--green)}.red{color:var(--red)}.amber{color:var(--amber)}.blue{color:var(--blue)}table{width:100%;border-collapse:collapse;background:#fff;border-radius:16px;overflow:hidden}th,td{padding:10px;border-bottom:1px solid var(--line);font-size:14px;text-align:left}th{background:#f8fafc;color:#475569;font-size:12px;text-transform:uppercase;letter-spacing:.04em}td.num,th.num{text-align:right}.form-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}.form-row.cols5{grid-template-columns:repeat(5,minmax(0,1fr))}.form-row.cols6{grid-template-columns:repeat(6,minmax(0,1fr))}.section-title{display:flex;justify-content:space-between;align-items:center;margin:18px 0 12px}.section-title h3{margin:0}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:420px}.login-card h1{margin:0 0 6px}.login-card p{color:var(--muted)}.login-card label{display:block;margin-top:12px;font-weight:700}.login-card button{width:100%;margin-top:16px}.error{color:var(--red);margin-top:10px;font-weight:700}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:800;background:#e2e8f0;color:#334155}.pill.red{background:#ffe4e6;color:#be123c}.pill.green{background:#d1fae5;color:#047857}.pill.amber{background:#fef3c7;color:#b45309}.notice{padding:14px;border-radius:16px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}@media(max-width:1000px){.app{display:block}.sidebar{position:static;width:auto;height:auto;flex-direction:row;overflow:auto}.main{padding:14px}.grid.cols4,.grid.cols3,.grid.cols2,.form-row,.form-row.cols5,.form-row.cols6{grid-template-columns:1fr}.topbar{display:block}.topbar select{margin-top:10px}}


/* Radar Novacom - mejoras de desplazamiento y tablas anchas */
html, body { height: 100%; }
body { overflow: hidden; }
.main { height: 100vh; overflow: auto; min-width: 0; }
.tab.active { min-width: 0; }
.card { max-width: 100%; }
.table-wrap {
  width: 100%;
  max-width: 100%;
  overflow: auto;
  max-height: 72vh;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #fff;
}
.table-wrap-short { max-height: 46vh; }
.table-wrap table { min-width: 1100px; border-radius: 0; }
.table-wrap th {
  position: sticky;
  top: 0;
  z-index: 3;
  box-shadow: 0 1px 0 var(--line);
}
.actions-cell { white-space: nowrap; display: flex; gap: 6px; flex-wrap: nowrap; }
.muted { color: var(--muted); font-size: 12px; }
.settings-actions { display:flex; gap:10px; flex-wrap:wrap; margin: 14px 0; }
.settings-form { display:grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap:12px; align-items:end; }
.settings-form label { font-weight: 700; }
.field-help { display:block; color: var(--muted); font-size:12px; font-weight:500; margin:4px 0; line-height:1.25; }
.help-block { margin:14px 0; padding:14px; border-radius:16px; background:#f8fafc; border:1px solid var(--line); color:#334155; line-height:1.45; }
.mode-pill { display:inline-flex; font-size:11px; padding:4px 8px; border-radius:999px; background:#dbeafe; color:#1d4ed8; vertical-align:middle; margin-left:6px; }
@media(max-width:1000px){
  body { overflow: auto; }
  .main { height: auto; min-height: 100vh; overflow: visible; }
  .table-wrap { max-height: 70vh; }
  .settings-form { grid-template-columns: 1fr; }
}

/* Tesoreria: formularios compactos de caja local y movimientos internos */
.stacked-form { display: grid; gap: 10px; }
.stacked-form label { font-weight: 700; }
.soft-card { background: #f8fafc; }
.inline-input, .inline-select { min-width: 120px; }

/* Totales fijos en tablas con scroll */
.table-wrap tfoot td {
  position: sticky;
  bottom: 0;
  z-index: 2;
  background: #f8fafc;
  font-weight: 900;
  border-top: 2px solid var(--line);
  box-shadow: 0 -1px 0 var(--line);
}
.sticky-total-row td:first-child { color: var(--text); }


/* Estado del mes */
.month-status-card { margin-bottom: 14px; }
.month-status-table { min-width: 760px; }
.month-status-card .grid.cols4 .card.kpi { min-height: 118px; }


/* Obligaciones: lectura rápida por estado */
.row-obligation td { border-bottom-color: #e2e8f0; }
.row-pendiente td { background: #fffbeb; }
.row-pagado td { background: #ecfdf5; }
.row-pagado-visa-normal td { background: #fff7ed; }
.row-pagado-visa-puente td { background: #fff1f2; }
.row-reprogramado td { background: #eff6ff; }
.row-anulado td { background: #f8fafc; color: #64748b; text-decoration: line-through; }
.row-obligation:hover td { filter: brightness(0.985); }
.status-select, .origin-select { min-width: 150px; margin-top: 6px; }
.pill.blue-pill { background:#dbeafe; color:#1d4ed8; }
.pill.debt-link-pill { background:#e0f2fe; color:#0369a1; margin-top: 5px; }
