/* ─── BRAND TOKENS (idénticos a los reales de la marca) ─────────────── */
:root {
  --tfc-primary: #506E3E;
  --tfc-light:   #EBF2E7;
  --tfc-mid:     #C4D5BA;
  --tfc-cream:   #EEE5D3;
  --tfc-gold:    #AF7F07;
  --tfc-font:    'DM Sans', -apple-system, sans-serif;

  --tf-primary:  #630000;
  --tf-dark:     #1C281C;
  --tf-light:    #F5ECEC;
  --tf-mid:      #D9AAAA;
  --tf-cream:    #E8DCBC;
  --tf-orange:   #B1611F;
  --tf-font:     'DM Sans', -apple-system, sans-serif;

  /* ─── Tokens de sistema (nuevos) ─── */
  --ink:#1B2430; --ink-soft:#5B6472; --ink-faint:#8A93A3;
  --paper:#F1EFE7; --surface:#FFFFFF; --surface-2:#F7F5EF;
  --border:#E3E0D5; --border-soft:#ECEAE0;
  --topbar:#1B2430; --topbar-ink:#F1EFE7; --topbar-ink-soft:#8D93A0;
  --good:#1A7A3C; --bad:#C0392B; --warn:#B1611F;
  --shadow:0 1px 2px rgba(27,36,48,.04),0 6px 20px rgba(27,36,48,.06);
}

*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--paper);color:var(--ink);font-size:13px;line-height:1.45}
.num,.kpi-value,.mb-kpi-value,.fin-kpi-value,td.r,.detail-table td.r,.rs-val{font-variant-numeric:tabular-nums}
button{font-family:inherit}
.page{max-width:1440px;margin:0 auto;padding:20px clamp(16px,3vw,28px) 56px}

/* co-panel: mismo look para ambas empresas, la marca vive en el co-header y en los accents */
#co-panel-tfc, #co-panel-tf{margin-bottom:28px}

/* Cash Flow proyectado + Resumen de Posición lado a lado (no apilados). El
   Resumen es una sola instancia que se muda entre rs-slot-tfc/rs-slot-tf al
   cambiar de empresa (switchCoTab parcheado en app-patches.js), por eso el
   slot vacío de la empresa no activa simplemente no ocupa lugar. */
.cfrs-grid{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:20px;align-items:start;margin-bottom:20px}
.panel-cf{min-width:0}
.panel-rs{min-width:0}
@media (max-width:960px){ .cfrs-grid{grid-template-columns:1fr} }

/* ═══ TOPBAR ═══════════════════════════════════════════════════════ */
.topbar{
  background:var(--topbar); color:var(--topbar-ink); border-radius:12px;
  padding:14px 20px; margin-bottom:14px;
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
}
.brand{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.header-title{font-family:'Teko',sans-serif;font-weight:600;font-size:23px;letter-spacing:.02em}
.header-sub{font-size:11.5px;color:var(--topbar-ink-soft)}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.export-bar{display:flex;gap:6px;align-items:center}
.btn-export{padding:7px 13px;border-radius:7px;font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:var(--topbar-ink);transition:filter .12s;text-decoration:none;display:inline-flex;align-items:center}
.btn-export:hover{filter:brightness(1.15)}
.btn-refresh{padding:7px 15px;border-radius:7px;font-size:11.5px;font-weight:700;cursor:pointer;font-family:inherit;border:1px solid var(--tfc-primary);background:var(--tfc-primary);color:#fff;transition:filter .12s}
.btn-refresh:hover{filter:brightness(1.08)}
.btn-refresh:disabled{opacity:.5;cursor:not-allowed}

/* ─── Company switcher (mismas clases, ahora vive en la topbar) ─── */
.co-switcher-wrap{display:flex;align-items:center}
.co-switcher{display:inline-flex;background:rgba(255,255,255,.08);border-radius:999px;padding:3px;gap:2px}
.co-sw{padding:9px 22px;border:none;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:background .15s,color .15s;color:var(--topbar-ink-soft);background:transparent;font-family:inherit}
.co-sw:hover:not(.active){color:var(--topbar-ink)}
.co-sw.tfc.active{background:var(--tfc-primary);color:#fff}
.co-sw.tf.active{background:var(--tf-primary);color:var(--tf-cream)}

/* ═══ SUBBARRA: horizonte + estado ═══════════════════════════════════ */
.subbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:8px}
.horizon-bar{display:flex;align-items:center;gap:10px}
.sec{font-size:10px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}
.h-tabs{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px}
.h-tab{padding:6px 14px;border:none;border-radius:6px;background:transparent;font-size:11.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;font-family:inherit;transition:background .12s,color .12s}
.h-tab:hover{color:var(--ink)}
.h-tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}

.status-bar{display:flex;gap:6px;flex-wrap:wrap}
.st-item{font-size:10.5px;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--border);white-space:nowrap}
.st-ok{background:rgba(26,122,60,.08);color:var(--good);border-color:rgba(26,122,60,.2)}
.st-err{background:rgba(192,57,43,.08);color:var(--bad);border-color:rgba(192,57,43,.2)}
.st-loading{background:rgba(177,97,31,.08);color:var(--warn);border-color:rgba(177,97,31,.2)}

/* ═══ CARD genérico (Resumen, tabs-card) ═════════════════════════════ */
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 18px;border-bottom:1px solid var(--border-soft)}
.card-title{font-size:13px;font-weight:700}
.card-title-group{display:flex;align-items:center;gap:10px}
.card-title-note{font-size:11px;color:var(--ink-faint)}

/* ─── co-header ─── */
.co-header{padding:12px 18px;font-size:13px;font-weight:700;letter-spacing:.06em;display:flex;align-items:baseline;gap:10px;border-radius:10px 10px 0 0}
.co-header.tfc{background:var(--tfc-primary);color:#fff}
.co-header.tf{background:var(--tf-primary);color:var(--tf-cream)}
.co-header-sub{font-family:'Teko',sans-serif;font-size:15px;letter-spacing:.1em;font-weight:600;opacity:.85}

/* ═══ KPI STRIP (misma clases, redefinidas al nuevo lenguaje) ═══════ */
.kpi-block{background:var(--surface);border:1px solid var(--border);border-top:none;overflow:hidden}
.kpi-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.kpi-row.kpi-row-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi-row.kpi-row-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.kpi-row+.kpi-row{border-top:1px solid var(--border-soft)}
.kpi{padding:13px 16px;border-right:1px solid var(--border-soft);min-width:0}
.kpi:last-child{border-right:none}
.kpi.accent{background:var(--tfc-light)}
#co-panel-tf .kpi.accent{background:var(--tf-light)}
.kpi-label{font-size:10px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px;font-weight:600}
.kpi.accent .kpi-label{color:var(--tfc-primary)}
#co-panel-tf .kpi.accent .kpi-label{color:var(--tf-primary)}
.kpi-value{font-family:'Teko',sans-serif;font-weight:600;font-size:26px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-sub{font-size:10.5px;color:var(--ink-faint);margin-top:4px}
.kpi.accent .kpi-sub{color:var(--tfc-primary);opacity:.75}
#co-panel-tf .kpi.accent .kpi-sub{color:var(--tf-primary)}
.pos{color:var(--good)}
.neg{color:var(--bad)}
.zero{color:var(--ink-faint)}

/* app.js pone el saldo BAVSA en 14px inline (style.fontSize) — tenía sentido
   en las tarjetas chicas del diseño viejo, pero acá achica el número al lado
   de los demás KPIs en Teko grande. Sin tocar app.js: se pisa con !important. */
#kpi-tfc-bavsa{font-size:26px!important}

/* ═══ TABLA DE CASH FLOW ═════════════════════════════════════════════ */
.cf-table-wrap{overflow-y:auto;overflow-x:auto;max-height:480px;background:var(--surface);border:1px solid var(--border);border-top:none;border-radius:0 0 10px 10px}
table{width:100%;border-collapse:collapse;font-size:12.5px}
thead{position:sticky;top:0;z-index:2}
.thead-tfc tr{background:var(--tfc-primary)}
.thead-tf tr{background:var(--tf-primary)}
.thead-tfc th,.thead-tf th{color:rgba(255,255,255,.85);border-bottom:none;font-weight:600}
th{padding:9px 12px;text-align:right;font-weight:600;font-size:10.5px;color:var(--ink-soft);border-bottom:2px solid var(--border-soft);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
th:first-child{text-align:left;padding-left:16px}
td{padding:7px 12px;text-align:right;border-bottom:1px solid var(--border-soft)}
td:first-child{text-align:left;padding-left:16px}
tr.day1{background:var(--tfc-light)}
#co-panel-tf tr.day1{background:var(--tf-light)}
tr.day1 td:first-child .dlabel{color:var(--tfc-primary);font-weight:700}
#co-panel-tf tr.day1 td:first-child .dlabel{color:var(--tf-primary)}
tr.feriado td{color:var(--ink-faint)}
tr.feriado{background:var(--surface-2)}
tr.weekend{background:var(--surface-2)}
tr.weekend td{color:var(--ink-faint)}
tr:not(.weekend):not(.feriado):hover td{background:var(--surface-2)}
.dlabel{font-weight:600;font-size:12.5px}
.dsub{font-size:10.5px;color:var(--ink-faint);font-weight:400;margin-left:4px}
.day1 .dsub{color:var(--tfc-primary)}
#co-panel-tf .day1 .dsub{color:var(--tf-primary)}
.no-data{padding:26px;text-align:center;color:var(--ink-faint);font-size:12px;background:var(--surface)}

/* ═══ Financiera / Modo B: cards separadas y siempre visibles ═══════ */
/* (antes eran pestañas de una sola card compartida — fin-section/mb-section
   ya traen su propio borde+radio, section-card solo agrega el espaciado
   entre una y la siguiente). */
.section-card{margin-top:14px}

.sub-strip{padding:9px 14px;background:var(--surface-2);border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:8px;border-radius:8px 8px 0 0}
.sub-strip-title{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink)}
.sub-strip-note{font-size:10.5px;color:var(--ink-faint)}

/* ─── Financiera ─── */
.fin-section{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.fin-header{padding:11px 14px;background:var(--tfc-light);border-bottom:1px solid var(--tfc-mid);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.fin-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--tfc-primary)}
.fin-kpi-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--border-soft)}
.fin-kpi{padding:12px 14px;border-right:1px solid var(--border-soft)}
.fin-kpi:last-child{border-right:none}
.fin-kpi.warn{background:rgba(177,97,31,.06)}
.fin-kpi-label{font-size:9.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px;font-weight:600}
.fin-kpi.warn .fin-kpi-label{color:var(--warn)}
.fin-kpi-value{font-family:'Teko',sans-serif;font-weight:600;font-size:21px}
.fin-kpi.warn .fin-kpi-value{color:var(--warn)}
.fin-table-wrap{overflow-x:auto;overflow-y:auto}
.fin-table{width:100%;border-collapse:collapse;font-size:11.5px}
.fin-table thead{position:sticky;top:0;z-index:2}
.fin-table thead tr{background:var(--tfc-primary);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.fin-table thead th{color:rgba(255,255,255,.85);padding:8px 10px;text-align:left;font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
.fin-table thead th.r{text-align:right}
.fin-table td{padding:6px 10px;border-bottom:1px solid var(--border-soft)}
.fin-table td.r{text-align:right}
.fin-group-hdr td{background:var(--tfc-light)!important;font-weight:700;font-size:11px;color:var(--tfc-primary);padding:7px 10px}
.fin-table tr:not(.fin-group-hdr):hover td{background:var(--surface-2)}
.fin-badge-cap{font-size:9px;background:rgba(177,97,31,.12);color:var(--warn);padding:1px 6px;border-radius:999px;font-weight:600;white-space:nowrap;margin-left:5px}
.fin-empty{padding:22px;text-align:center;color:var(--ink-faint);font-size:11.5px}
.btn-fin-upload{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border:1px solid var(--tfc-mid);border-radius:6px;background:var(--surface);color:var(--tfc-primary);font-size:10.5px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap}
.btn-fin-upload:hover{background:var(--tfc-light)}
.fin-upload-st{font-size:10.5px;color:var(--ink-faint)}
.fin-upload-st.ok{color:var(--good)}
.fin-upload-st.err{color:var(--bad)}

/* ─── Modo B ─── */
.mb-section{background:var(--topbar);border-radius:10px;overflow:hidden}
.mb-header{padding:11px 14px;background:rgba(255,255,255,.04);color:var(--topbar-ink);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-bottom:1px solid rgba(255,255,255,.08)}
.mb-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--topbar-ink-soft)}
.mb-upload-st{font-size:10.5px;color:var(--topbar-ink-soft)}
.mb-upload-st.ok{color:#6FCB92}
.mb-upload-st.err{color:#E5675A}
.btn-mb-upload{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border:1px solid rgba(255,255,255,.16);border-radius:6px;background:rgba(255,255,255,.06);color:var(--topbar-ink);font-size:10.5px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap}
.btn-mb-upload:hover{background:rgba(255,255,255,.12)}
.modob-cotiz{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--topbar-ink-soft);background:rgba(255,255,255,.06);border-radius:6px;padding:4px 8px}
.modob-cotiz input{width:70px;font:inherit;font-size:11px;padding:3px 6px;border-radius:4px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.1);color:var(--topbar-ink)}
.mb-kpi-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:rgba(255,255,255,.03)}
.mb-kpi{padding:11px 14px;border-right:1px solid rgba(255,255,255,.06)}
.mb-kpi:last-child{border-right:none}
.mb-kpi.total{background:rgba(255,255,255,.05)}
.mb-kpi-label{font-size:9.5px;color:var(--topbar-ink-soft);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px;font-weight:600}
.mb-kpi.total .mb-kpi-label{font-weight:700;color:var(--topbar-ink)}
.mb-kpi-value{font-family:'Teko',sans-serif;font-weight:600;font-size:19px;color:var(--topbar-ink)}
.mb-kpi-value.pos{color:#6FCB92}
.mb-kpi-value.neg{color:#E5675A}
.mb-kpi-sub{font-size:9px;color:var(--topbar-ink-soft);margin-top:2px}
.mb-kpi-input{width:100%;font:inherit;font-family:'Teko',sans-serif;font-weight:600;font-size:19px;padding:1px 4px;border-radius:5px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:var(--topbar-ink)}
.mb-kpi-input::placeholder{color:var(--topbar-ink-soft);opacity:.5}
.mb-kpi-input:focus{outline:none;border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.14)}
.mb-table-wrap{overflow-x:auto;overflow-y:auto;max-height:300px;background:var(--surface)}
.mb-table{width:100%;border-collapse:collapse;font-size:11.5px}
.mb-table thead{position:sticky;top:0;z-index:2}
.mb-table thead tr{background:var(--topbar);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.mb-table thead th{color:rgba(241,239,231,.85);padding:8px 10px;text-align:left;font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
.mb-table thead th.r{text-align:right}
.mb-table td{padding:6px 10px;border-bottom:1px solid var(--border-soft)}
.mb-table td.r{text-align:right}
.mb-table tr:hover td{background:var(--surface-2)}
.mb-table tr.overdue-row td{background:#FCEDEC}
.mb-table tr.soon-row td{background:#FCF6E8}
.mb-empty{padding:22px;text-align:center;color:var(--ink-faint);font-size:11.5px;background:var(--surface)}

/* ═══ CARGAR ARCHIVOS (nuevo, reemplaza la tira larga de uploads) ═══ */
.upload-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.upload-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:9px;padding:11px 14px}
.upload-info{min-width:0}
.upload-name{font-size:12.5px;font-weight:600}
.upload-st{font-size:10.5px;color:var(--ink-faint);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.upload-st.ok{color:var(--good)}
.upload-st.err{color:var(--bad)}
.upload-zone-sm{display:inline-flex;align-items:center;gap:6px;border:1px dashed var(--border);border-radius:7px;padding:6px 11px;cursor:pointer;font-size:11px;color:var(--ink-soft);background:var(--surface);transition:all .12s;white-space:nowrap}
.upload-zone-sm:hover{border-color:var(--tfc-primary);color:var(--tfc-primary);background:var(--tfc-light)}
.upload-zone-sm.tf:hover{border-color:var(--tf-primary);color:var(--tf-primary);background:var(--tf-light)}
.upload-zone-sm.loaded{border-color:var(--tfc-primary);background:var(--tfc-light);color:var(--tfc-primary);border-style:solid}
.upload-zone-sm.loaded.tf{border-color:var(--tf-primary);background:var(--tf-light);color:var(--tf-primary)}
.btn-rev{font-size:10.5px;padding:5px 11px;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer;font-family:inherit;color:var(--ink-soft);white-space:nowrap}
.btn-rev:hover{border-color:var(--tfc-primary);color:var(--tfc-primary);background:var(--tfc-light)}
.btn-rev.off-src{border-color:var(--bad);color:var(--bad);background:rgba(192,57,43,.06)}
.upload-group.xlsm-fb{margin-top:12px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:9px;padding:11px 14px;display:flex;flex-direction:column;gap:6px}
.upload-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);display:flex;gap:5px;align-items:center}
.badge-tfc{background:var(--tfc-light);color:var(--tfc-primary);padding:2px 7px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.02em}
.badge-tf{background:var(--tf-light);color:var(--tf-primary);padding:2px 7px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.02em}
@media (max-width:700px){ .upload-grid{grid-template-columns:1fr} }

/* ═══ RESUMEN DE POSICIÓN ═════════════════════════════════════════════ */
.resumen-section{margin-bottom:16px}

/* ═══ CERRAR SEMANA (debajo del Resumen de Posición) ═════════════════ */
.cerrar-semana-box{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 14px}
.cerrar-semana-nota{width:100%;max-width:420px;padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;font-size:12px}
.cerrar-semana-nota::placeholder{color:var(--ink-faint)}
.btn-cerrar-semana{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--ink-soft);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:var(--shadow)}
.btn-cerrar-semana:hover{color:var(--ink);border-color:var(--tfc-primary)}
.btn-cerrar-semana:disabled{opacity:.6;cursor:default}
.cerrar-semana-status{font-size:11px;color:var(--ink-faint);text-align:center;min-height:14px}
.cerrar-semana-status.ok{color:var(--good)}
.cerrar-semana-status.err{color:var(--bad)}
.resumen-header{background:var(--topbar);color:var(--topbar-ink);border-bottom:none}
.resumen-header .card-title{color:var(--topbar-ink)}
.resumen-header .card-title-note{color:var(--topbar-ink-soft)}
.btn-resumen-refresh{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:var(--topbar-ink);font-size:11px;padding:6px 13px;border-radius:6px;cursor:pointer;font-family:inherit}
.btn-resumen-refresh:hover{background:rgba(255,255,255,.18)}
.rs-mode-tabs{display:flex;align-items:center;gap:2px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:2px}
.rs-mtab{padding:6px 16px;border:none;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.03em;cursor:pointer;transition:background .15s,color .15s;color:var(--topbar-ink-soft);background:transparent;font-family:inherit}
.rs-mtab:hover:not(.active){color:var(--topbar-ink)}
.rs-mtab.active{background:rgba(255,255,255,.16);color:var(--topbar-ink)}
.resumen-body{overflow-x:auto}
.resumen-table{width:100%;border-collapse:collapse;font-size:12.5px;font-family:inherit}
.resumen-table th,.resumen-table td{padding:8px 14px;text-align:right;border-bottom:1px solid var(--border-soft)}
.rs-th-label,.rs-label{text-align:left!important}
.rs-th-label{width:200px}
.rs-th-co{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:10px 14px;background:var(--surface-2);color:var(--ink-soft)}
.tfc-col{color:var(--tfc-primary);border-left:3px solid var(--tfc-primary)}
.tf-col{color:var(--tf-primary);border-left:3px solid var(--tf-primary)}
.rs-label{color:var(--ink-soft);font-weight:500;padding-left:22px}
.rs-val{font-variant-numeric:tabular-nums}
.rs-pos{color:var(--good);font-weight:600}
.rs-neg{color:var(--bad);font-weight:600}
.rs-sec-header td{background:var(--surface-2)!important;color:var(--ink-faint)!important;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:7px 14px!important;border-bottom:none!important}
.rs-sec-title{text-align:left!important}
.rs-total-row td{background:var(--surface-2);border-top:1.5px solid var(--border);border-bottom:none}
.rs-total{font-size:13.5px;font-weight:700!important}
.rs-ref-row td{font-style:italic}
.rs-label-toggle{cursor:pointer}
.rs-label-toggle:hover{color:var(--ink);text-decoration:underline}
tr.rs-row-off{opacity:.45}
tr.rs-row-off td{text-decoration:line-through}
.resumen-table tfoot td{border-bottom:none;background:var(--surface-2);color:var(--ink-faint)}

/* ═══ DETALLE ═════════════════════════════════════════════════════════ */
.detail-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.detail-tabs{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--border);padding:0 8px;background:var(--surface-2)}
.dtab{padding:11px 18px;border:none;background:none;font-size:12.5px;font-weight:500;color:var(--ink-faint);cursor:pointer;font-family:inherit;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .12s}
.dtab:hover{color:var(--ink-soft)}
.dtab.active{color:var(--tfc-primary);border-bottom-color:var(--tfc-primary);font-weight:700}
.detail-sel-bar{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--tfc-primary);font-weight:600;padding:5px 9px;background:var(--tfc-light);border-radius:6px;margin:4px 0}
.btn-dsel-clear{border:none;background:none;color:var(--ink-faint);cursor:pointer;font-size:12px;font-family:inherit}
.btn-dsel-clear:hover{color:var(--bad)}
.detail-filters{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--border-soft);flex-wrap:wrap;background:var(--surface-2)}
.df-select,.df-input{font-size:12px;padding:6px 9px;border:1px solid var(--border);border-radius:6px;font-family:inherit;background:var(--surface);color:var(--ink)}
.df-select:focus,.df-input:focus{outline:none;border-color:var(--tfc-primary)}
.df-lbl{font-size:11px;color:var(--ink-soft);display:flex;align-items:center;gap:5px}
.btn-df-clear{font-size:11px;padding:5px 11px;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer;color:var(--ink-soft);font-family:inherit}
.btn-df-clear:hover{border-color:var(--bad);color:var(--bad)}
.df-count{font-size:11px;color:var(--ink-faint);margin-left:auto}
.detail-wrap{overflow-x:auto;max-height:480px;overflow-y:auto}
.detail-table{width:100%;border-collapse:collapse;font-size:12.5px}
.detail-table thead{position:sticky;top:0;z-index:2;background:var(--surface-2)}
.detail-table th{padding:8px 12px;text-align:left;font-size:10.5px;font-weight:700;color:var(--ink-soft);border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none;letter-spacing:.03em;text-transform:uppercase}
.detail-table th:hover{color:var(--tfc-primary)}
.detail-table th.sorted-asc::after{content:' ↑';color:var(--tfc-primary)}
.detail-table th.sorted-desc::after{content:' ↓';color:var(--tfc-primary)}
.detail-table th.r,.detail-table td.r{text-align:right}
.detail-table td{padding:7px 12px;border-bottom:1px solid var(--border-soft)}
.detail-table tr:hover td{background:var(--surface-2)}
.detail-table tr.dsel-row td{background:var(--tfc-light)}
.detail-table tr.overdue-row td{background:#FCEDEC}
.detail-table tr.soon-row td{background:#FCF6E8}
.d-chk{width:32px;text-align:center!important}
.d-chk input{accent-color:var(--tfc-primary);cursor:pointer;width:13px;height:13px}
.badge-co-tfc{background:var(--tfc-light);color:var(--tfc-primary);padding:1px 6px;border-radius:3px;font-size:10px;font-weight:700}
.badge-co-tf{background:var(--tf-light);color:var(--tf-primary);padding:1px 6px;border-radius:3px;font-size:10px;font-weight:700}
.d-days{font-size:10px;padding:2px 7px;border-radius:999px;font-weight:600}
.d-days.ok{background:rgba(26,122,60,.1);color:var(--good)}
.d-days.soon{background:rgba(177,97,31,.1);color:var(--warn)}
.d-days.overdue{background:rgba(192,57,43,.1);color:var(--bad)}
.detail-empty{padding:32px;text-align:center;color:var(--ink-faint);font-size:12px}
.detail-foot{padding:9px 14px;border-top:1px solid var(--border);background:var(--surface-2);display:flex;align-items:center;gap:16px;font-size:11px;color:var(--ink-soft);flex-wrap:wrap}
.detail-foot strong{color:var(--tfc-primary);font-size:13px}
.detail-foot .tf-strong{color:var(--tf-primary)}

/* ═══ PANEL DE REVISIÓN (overlay lateral) ═══════════════════════════ */
.ov-overlay{position:fixed;inset:0;background:rgba(27,36,48,.4);z-index:200;display:none}
.ov-overlay.open{display:block}
.ov-panel{position:fixed;top:0;right:0;bottom:0;width:640px;max-width:100vw;background:var(--surface);z-index:201;display:flex;flex-direction:column;box-shadow:-8px 0 32px rgba(27,36,48,.18);transform:translateX(100%);transition:transform .22s ease}
.ov-panel.open{transform:translateX(0)}
.ov-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.ov-title{font-size:14px;font-weight:700}
.ov-close{border:none;background:none;font-size:20px;cursor:pointer;color:var(--ink-faint);line-height:1;padding:0 4px}
.ov-close:hover{color:var(--ink)}
.ov-body{overflow-y:auto;flex:1;display:flex;flex-direction:column}

.src-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-bottom:1px solid var(--border-soft);flex-shrink:0}
.src-bar-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint)}
.src-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:7px;overflow:hidden}
.src-btn{padding:5px 13px;font-size:11px;border:none;cursor:pointer;font-family:inherit;background:var(--surface-2);color:var(--ink-soft)}
.src-btn.active{background:var(--tfc-primary);color:#fff;font-weight:600}
.src-btn.active.danger{background:var(--bad)}

/* ═══ PIE DE PÁGINA + BOTÓN LÉEME ═══════════════════════════════════ */
.page-footer{display:flex;justify-content:center;padding:22px 0 6px}
.btn-leeme{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--ink-soft);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:var(--shadow)}
.btn-leeme:hover{color:var(--ink);border-color:var(--tfc-primary)}

/* ═══ MODAL LÉEME (documentación in-app) ════════════════════════════ */
.leeme-overlay{position:fixed;inset:0;background:rgba(27,36,48,.6);z-index:300;display:none;overflow-y:auto;padding:28px 16px}
.leeme-overlay.open{display:block}
.leeme-modal{background:var(--surface);border-radius:14px;max-width:900px;width:100%;margin:0 auto;box-shadow:0 24px 70px rgba(0,0,0,.4);overflow:hidden}
.leeme-head{position:sticky;top:0;background:var(--topbar);color:var(--topbar-ink);padding:16px 26px;display:flex;justify-content:space-between;align-items:center;z-index:2}
.leeme-head-title{font-size:15px;font-weight:700}
.leeme-head-sub{font-size:11px;color:var(--topbar-ink-soft);margin-top:2px}
.leeme-close{border:none;background:rgba(255,255,255,.1);color:var(--topbar-ink);width:30px;height:30px;border-radius:50%;font-size:17px;cursor:pointer;line-height:1;flex-shrink:0}
.leeme-close:hover{background:rgba(255,255,255,.2)}
.leeme-body{padding:8px 26px 36px}
.leeme-body h2{font-size:16px;font-weight:700;color:var(--ink);margin:26px 0 4px;padding-top:16px;border-top:1px solid var(--border-soft)}
.leeme-body h2:first-child{margin-top:14px;padding-top:0;border-top:none}
.leeme-body h3{font-size:12.5px;font-weight:700;color:var(--tfc-primary);text-transform:uppercase;letter-spacing:.03em;margin:18px 0 6px}
.leeme-body p{font-size:12.5px;line-height:1.65;color:var(--ink-soft);margin:6px 0}
.leeme-body p.lead{font-size:13px;color:var(--ink)}
.leeme-body ul{margin:6px 0 6px 18px;padding:0}
.leeme-body li{font-size:12.5px;line-height:1.65;color:var(--ink-soft);margin-bottom:4px}
.leeme-body strong{color:var(--ink);font-weight:700}
.leeme-body code{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:4px;padding:1px 5px;font-size:11.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--tf-primary)}
.leeme-flow{display:flex;flex-wrap:wrap;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px;margin:8px 0 14px;font-size:11.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink-soft)}
.leeme-flow b{color:var(--ink);font-weight:600}
.leeme-flow .arrow{color:var(--ink-faint);font-family:inherit}
.leeme-table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0 16px}
.leeme-table th{text-align:left;padding:7px 10px;background:var(--surface-2);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);border-bottom:1px solid var(--border)}
.leeme-table td{padding:8px 10px;border-bottom:1px solid var(--border-soft);color:var(--ink-soft);vertical-align:top}
.leeme-table td:first-child{color:var(--ink);font-weight:600;white-space:nowrap}
.leeme-warn{background:rgba(177,97,31,.08);border:1px solid rgba(177,97,31,.25);border-radius:8px;padding:11px 14px;margin:10px 0;font-size:12px;color:var(--warn);line-height:1.6}
.leeme-warn strong{color:var(--warn)}
@media(max-width:640px){ .leeme-body{padding:8px 16px 28px} .leeme-head{padding:14px 16px} }

/* ═══ MODAL KPI (detalle de cada tarjeta clickeable) ═══════════════════ */
/* Reutiliza el mismo shell que Léeme/Cargar archivos (.leeme-overlay,
   .leeme-modal, .leeme-head, .leeme-close) — solo agrega la tabla. */
.kpi-click{cursor:pointer;transition:background .12s}
.kpi-click:hover{background:var(--surface-2)}
.kd-table{width:100%;border-collapse:collapse;font-size:12.5px}
.kd-table th{text-align:left;padding:8px 14px;background:var(--surface-2);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);border-bottom:1px solid var(--border)}
.kd-table th.r{text-align:right}
.kd-table td{padding:8px 14px;border-bottom:1px solid var(--border-soft);color:var(--ink-soft);vertical-align:top}
.kd-table td:first-child{color:var(--ink);font-weight:600}
.kd-table td.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.kd-table .kd-razon{font-size:11.5px;color:var(--ink-faint)}
.kd-table tr:hover td{background:var(--surface-2)}
@media(max-width:640px){ .kd-table th,.kd-table td{padding:7px 10px} }

.bulk-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 18px;background:rgba(177,97,31,.08);border-bottom:1px solid rgba(177,97,31,.2);flex-shrink:0;min-height:38px;transition:opacity .15s}
.bulk-bar.hidden{opacity:0;pointer-events:none}
.bulk-info{font-size:11px;color:var(--warn);font-weight:600}
.bulk-info span{color:var(--tfc-primary)}
.bulk-actions{display:flex;gap:6px}
.btn-bulk{padding:5px 13px;border-radius:6px;font-size:11px;cursor:pointer;font-family:inherit;border:none;font-weight:600}
.btn-excl{background:var(--bad);color:#fff}
.btn-excl:hover{filter:brightness(.92)}
.btn-restore{background:var(--good);color:#fff}
.btn-restore:hover{filter:brightness(.92)}
.btn-clear-sel{background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--border)}
.btn-clear-sel:hover{background:var(--border-soft)}

.items-wrap{flex:1;overflow-y:auto}
.items-table{width:100%;border-collapse:collapse;font-size:11.5px}
.items-table thead tr{background:var(--surface-2);position:sticky;top:0;z-index:2}
.items-table th{padding:7px 10px;text-align:left;font-weight:700;font-size:10px;color:var(--ink-soft);border-bottom:1px solid var(--border);white-space:nowrap;user-select:none}
.items-table th.r{text-align:right}
.items-table td{padding:6px 10px;border-bottom:1px solid var(--border-soft);vertical-align:middle}
.items-table td.r{text-align:right}
.items-table tr.excl-row td{opacity:.4}
.items-table tr.excl-row td.td-date{text-decoration:line-through}
.items-table tr.sel-row{background:var(--tfc-light)}
.items-table tr:not(.excl-row):hover td{background:var(--surface-2)}
.items-table tr.excl-row:hover td{background:#FDF5F5}
.td-chk{width:32px;text-align:center!important}
.td-chk input[type=checkbox]{accent-color:var(--tfc-primary);cursor:pointer;width:13px;height:13px}
.td-date{min-width:62px;font-size:10.5px;color:var(--ink-soft)}
.td-date.overdue{color:var(--bad);font-weight:600}
.td-desc{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.td-amt{min-width:105px;font-weight:600}
.td-rm{width:28px;text-align:center!important}
.btn-rm{border:none;background:none;color:var(--border);cursor:pointer;font-size:15px;line-height:1;padding:0;width:20px}
.btn-rm:hover{color:var(--bad)}
.tag-overdue{font-size:9px;background:rgba(192,57,43,.1);color:var(--bad);padding:1px 6px;border-radius:999px;margin-left:4px;vertical-align:middle}
.items-empty{padding:22px;text-align:center;color:var(--ink-faint);font-size:11px}
.section-divider{padding:6px 10px;background:var(--surface-2);font-size:10px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-soft);border-top:1px solid var(--border-soft);position:sticky;top:33px;z-index:1}

.ov-footer{padding:11px 18px;border-top:1px solid var(--border);flex-shrink:0;display:flex;flex-direction:column;gap:4px}
.foot-line{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-soft)}
.foot-val{font-weight:700}
.foot-val.primary{font-size:13px;color:var(--tfc-primary)}
.foot-val.neg{color:var(--bad)}

.man-section{padding:13px 18px;border-top:1px solid var(--border-soft);flex-shrink:0}
.man-sec-hdr{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);margin-bottom:8px}
.man-form{display:grid;grid-template-columns:105px 1fr 120px auto;gap:6px;margin-bottom:8px;align-items:center}
.man-form input,.man-form select{font-size:11px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-family:inherit;width:100%;background:var(--surface);color:var(--ink)}
.man-form input:focus{outline:none;border-color:var(--tfc-primary)}
.btn-add-man{padding:6px 13px;background:var(--tfc-primary);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:11px;font-family:inherit}
.btn-add-man:hover{filter:brightness(.92)}
.man-list-item{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:11px;border-bottom:1px solid var(--border-soft)}
.man-list-item:last-child{border-bottom:none}
.man-d{color:var(--ink-faint);min-width:56px;font-size:10.5px}
.man-l{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft)}
.man-a{font-variant-numeric:tabular-nums;font-weight:600;min-width:90px;text-align:right}
.man-a.neg-a{color:var(--bad)}
.btn-rm-man{border:none;background:none;color:var(--border);cursor:pointer;font-size:15px;line-height:1;padding:0}
.btn-rm-man:hover{color:var(--bad)}
.ov-note{font-size:10px;color:var(--ink-faint);margin-top:4px}

.btn-add-chq{font-size:11px;padding:5px 11px;border:1px solid var(--tfc-primary);border-radius:6px;background:var(--tfc-primary);color:#fff;cursor:pointer;font-family:inherit;font-weight:600}
.btn-add-chq:hover{filter:brightness(.92)}
.man-form-chq{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:860px){ .man-form-chq{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ═══ MOBILE (celular, ~640px y menos) ═══════════════════════════════ */
@media (max-width:640px){
  .page{padding-top:14px}

  /* Topbar: marca, switch de empresa y acciones apiladas a ancho completo
     en vez de envolver de forma despareja. */
  .topbar{padding:14px 16px;gap:12px}
  .header-title{font-size:19px}
  .co-switcher-wrap,.co-switcher{width:100%}
  .co-sw{flex:1;padding:10px 6px;letter-spacing:.03em}
  .topbar-actions{width:100%;flex-direction:column;align-items:stretch;gap:8px}
  .export-bar{width:100%}
  .export-bar .btn-export{flex:1;padding:9px 6px}
  .btn-refresh{width:100%;padding:10px}

  /* Horizonte: scroll horizontal de respaldo si no entra */
  .horizon-bar{overflow-x:auto;padding-bottom:1px}
  .status-bar{gap:5px}
  .st-item{font-size:10px;padding:3px 8px}

  /* KPIs: 2 columnas en vez de 3/5 — así el número entra entero, sin "..."
     (antes .kpi-value truncaba con ellipsis y se perdían cifras enteras). */
  .kpi-row,.kpi-row.kpi-row-4,.kpi-row.kpi-row-5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .kpi{padding:11px 12px}
  .kpi-value{font-size:19px;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word}
  .kpi-label{font-size:9.5px}
  #kpi-tfc-bavsa{font-size:19px!important}

  /* Financiera / Modo B: mismo criterio, 2 columnas */
  .fin-kpi-row,.mb-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fin-kpi-value{font-size:18px}
  .mb-kpi-value{font-size:17px}
  .mb-kpi-input{font-size:17px}
  .fin-header,.mb-header{padding:10px 12px}

  /* Tablas: menos padding para que entre más antes de tener que scrollear */
  th,td{padding:7px 8px;font-size:11.5px}
  th:first-child,td:first-child{padding-left:10px}
  .fin-table td,.fin-table th,.mb-table td,.mb-table th,
  .detail-table td,.detail-table th{padding:6px 8px}

  /* Resumen de Posición */
  .resumen-header{flex-direction:column;align-items:stretch;gap:10px;padding:12px 14px}
  .card-title-group{justify-content:space-between}
  .rs-mode-tabs{align-self:stretch;justify-content:center}
  .btn-resumen-refresh{align-self:stretch}
  .resumen-table th,.resumen-table td{padding:7px 8px;font-size:11.5px}
  .rs-th-label{width:auto}

  /* Detalle: filtros a ancho completo */
  .detail-filters{padding:10px 12px}
  .df-select,.df-input{flex:1 1 120px}

  /* Modales Léeme / Cargar archivos: ocupan toda la pantalla, sin márgenes
     laterales perdidos */
  .leeme-overlay{padding:0}
  .leeme-modal{border-radius:0;min-height:100%}
  .leeme-table{font-size:11px}
  .leeme-table th,.leeme-table td{padding:6px 8px}
  .leeme-flow{font-size:10.5px;padding:8px 10px}

  /* Panel de revisión lateral y su formulario manual, a una sola columna */
  .man-form{grid-template-columns:1fr}
}

/* ═══ PRINT ═══════════════════════════════════════════════════════════ */
@media print {
  .topbar,.subbar,.tabbar,.ov-overlay,.detail-filters,.d-chk,
  .detail-tabs button,.btn-dsel-clear,.detail-sel-bar{display:none!important}
  body{background:#fff!important;font-size:11px}
  .page{padding:0;max-width:100%}
  #co-panel-tfc,#co-panel-tf{display:block!important}
  .co-header{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .kpi-block{border:1px solid #ddd!important}
  .cf-table-wrap{max-height:none!important;overflow:visible!important}
  .detail-section{margin-top:12px;border:none}
  .detail-wrap{max-height:none!important;overflow:visible!important}
  thead tr{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  @page{margin:1.5cm;size:A4 landscape}
}
