:root{
  /* Tema claro (refinado) */
  --bg:#0f1b2d;                 /* cabecera oscura (igual en ambos temas) */
  --page:#f4f6f9;               /* fondo de la app */
  --surface:#ffffff;            /* paneles / tarjetas */
  --surface2:#fafbfd;           /* zonas suaves (encabezados de tabla, hovers) */
  --panel:#ffffff;
  --ink:#0f172a; --ink2:#475569; --muted:#7c8798;
  --line:#e6e9f0;
  --brand:#2563eb; --brand2:#1e40af; --brand-soft:#eff4ff;
  --ok:#16a34a; --warn:#d97706; --bad:#dc2626;
  --soft:#f1f5f9; --soft2:#f8fafc;
  --navsec:#8b94a6;
  --shadow:0 1px 2px rgba(15,23,42,.04),0 4px 14px rgba(15,23,42,.05);
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --radius:12px;
}
html[data-theme="dark"]{
  --bg:#0a1220;
  --page:#0b1220;
  --surface:#141d2e;
  --surface2:#101827;
  --panel:#141d2e;
  --ink:#e6ebf3; --ink2:#aab6c8; --muted:#7e8ba0;
  --line:#26324a;
  --brand:#5b9bff; --brand2:#7fb0ff; --brand-soft:#18243c;
  --ok:#4ade80; --warn:#fbbf24; --bad:#f87171;
  --soft:#1a2436; --soft2:#101827;
  --navsec:#63708a;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 18px rgba(0,0,0,.35);
  --shadow-sm:0 1px 2px rgba(0,0,0,.3);
}
/* Tema Verde (claro) — acento #8CBE46 */
html[data-theme="verde"]{
  --bg:#4a7020;
  --page:#f4f8ec;
  --surface:#ffffff;
  --surface2:#f6faed;
  --panel:#ffffff;
  --ink:#1b2a0e; --ink2:#4a5a38; --muted:#7f8a6d;
  --line:#e2ead2;
  --brand:#8CBE46; --brand2:#5f8a2a; --brand-soft:#eef5df;
  --ok:#4d7c0f; --warn:#d97706; --bad:#dc2626;
  --soft:#eef3e2; --soft2:#f6faed;
  --navsec:#8a9670;
  --shadow:0 1px 2px rgba(60,80,20,.05),0 4px 14px rgba(60,80,20,.06);
  --shadow-sm:0 1px 2px rgba(60,80,20,.06);
}
/* Tema Verde (oscuro) — acento #8CBE46 */
html[data-theme="verde-oscuro"]{
  --bg:#14200a;
  --page:#111a0a;
  --surface:#1b2711;
  --surface2:#151f0c;
  --panel:#1b2711;
  --ink:#e7efd8; --ink2:#b3c398; --muted:#84936a;
  --line:#2c3a1a;
  --brand:#8CBE46; --brand2:#a9d76a; --brand-soft:#22300f;
  --ok:#84cc16; --warn:#fbbf24; --bad:#f87171;
  --soft:#1e2b12; --soft2:#151f0c;
  --navsec:#6b7a4e;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.4);
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
}
/* Sobre el acento #8CBE46 el texto va oscuro para contraste (ambos verdes) */
html[data-theme="verde"] header button,
html[data-theme="verde"] button.btn,
html[data-theme="verde"] .seg span.on,
html[data-theme="verde-oscuro"] header button,
html[data-theme="verde-oscuro"] button.btn,
html[data-theme="verde-oscuro"] .seg span.on{color:#1c2b0d}
*{box-sizing:border-box}
body{margin:0;font-family:'Inter',-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--page);font-size:14px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--brand);text-decoration:none}
.app{display:grid;grid-template-columns:224px 1fr;grid-template-rows:56px 1fr;height:100vh}
header{grid-column:1/3;display:flex;align-items:center;gap:14px;background:var(--bg);color:#fff;padding:0 18px}
header .logo{font-weight:700;letter-spacing:.3px}
header .logo span{color:#7fb0ff}
header .sp{flex:1}
header select,header input{background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:6px 10px;font-size:13px}
header label{color:#9fb0c9;font-size:12px;margin-right:4px}
header button{background:var(--brand);color:#fff;border:0;border-radius:8px;padding:7px 12px;cursor:pointer;font-size:13px;font-weight:500}
header button:hover{filter:brightness(1.08)}
nav{background:var(--surface);border-right:1px solid var(--line);padding:10px 10px;overflow:auto}
nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;color:var(--ink2);font-weight:500;font-size:13.5px;margin-bottom:1px;cursor:pointer}
nav a .i{width:17px;text-align:center;font-size:14px;opacity:.8}
nav a:hover{background:var(--surface2);color:var(--ink)}
nav a.active{background:var(--brand-soft);color:var(--brand);font-weight:600}
nav a.active .i{opacity:1}
.navgrp{margin-bottom:2px}
.grphd{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:12px 12px 5px;border-radius:8px;user-select:none}
.grphd:hover{background:var(--surface2)}
.grphd>span:first-child{font-size:10.5px;text-transform:uppercase;color:var(--navsec);letter-spacing:.7px;font-weight:700}
.grphd .chev{font-size:10px;color:var(--navsec);transition:transform .18s ease}
.navgrp.collapsed .chev{transform:rotate(-90deg)}
.navgrp.collapsed .grpitems{display:none}
main{overflow:auto;padding:24px 28px}
h1{font-size:21px;margin:0 0 3px;letter-spacing:-.2px}
.sub{color:var(--ink2);margin:0 0 18px;font-size:13.5px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:20px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.card .k{color:var(--muted);font-size:11.5px;font-weight:600;letter-spacing:.3px}
.card .v{font-size:23px;font-weight:700;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.card.ok .v{color:var(--ok)} .card.bad .v{color:var(--bad)} .card.warn .v{color:var(--warn)}
.avisos{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.aviso{display:flex;flex-direction:column;gap:1px;border:1px solid var(--line);border-radius:9px;padding:7px 11px;background:var(--surface);min-width:92px;box-shadow:var(--shadow-sm)}
.aviso .k{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.aviso .v{font-size:16px;font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums}
.aviso .s{color:var(--muted);font-size:10px}
.aviso.click{cursor:pointer}
.aviso.click:hover{border-color:var(--brand);background:var(--surface2)}
.aviso.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.aviso.bad .v{color:var(--bad)} .aviso.warn .v{color:var(--warn)} .aviso.ok .v{color:var(--ok)}
.cm-cfg{margin:0 0 8px}
.cm-cfg summary{cursor:pointer;font-weight:600;padding:8px 0;color:var(--brand2)}
.cm-box{border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--surface2);margin-top:6px}
.cm-box h4{margin:0 0 6px;font-size:13px;color:var(--ink)}
.cm-box .fld{margin:0}
.cta{padding:5px 8px;border:1px solid var(--line);border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--surface);color:var(--ink)}
.cta:focus{outline:none;border-color:var(--brand)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:18px;box-shadow:var(--shadow)}
.panel h2{font-size:15px;margin:0 0 12px;font-weight:600}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.row .grow{flex:1}
input,select,textarea{font-family:inherit;font-size:13px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:var(--ink);background:var(--surface)}
input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--brand) 35%,transparent);border-color:var(--brand)}
button.btn{background:var(--brand);color:#fff;border:0;border-radius:8px;padding:8px 14px;cursor:pointer;font-size:13px;font-weight:600}
button.btn:hover{filter:brightness(1.06)}
button.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
button.ghost:hover{background:var(--surface2)}
button.sm{padding:4px 9px;font-size:12px}
button.green{background:var(--ok);color:#fff;border:0}
button.danger{background:var(--surface);color:var(--bad);border:1px solid color-mix(in srgb,var(--bad) 40%,var(--line))}
button.danger:hover{background:color-mix(in srgb,var(--bad) 10%,var(--surface))}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:9px 11px;border-bottom:1px solid var(--line);white-space:nowrap}
th{background:var(--surface2);color:var(--muted);font-weight:600;font-size:11.5px;letter-spacing:.2px;position:sticky;top:0}
tbody tr:hover{background:var(--surface2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.tablewrap{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600}
.pill.ok{background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok)}
.pill.warn{background:color-mix(in srgb,var(--warn) 17%,transparent);color:var(--warn)}
.pill.bad{background:color-mix(in srgb,var(--bad) 15%,transparent);color:var(--bad)}
.pill.em{background:color-mix(in srgb,var(--brand) 15%,transparent);color:var(--brand)}
.pill.re{background:#f3e8ff;color:#6b21a8}
.tabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.tabs a{padding:8px 14px;border-bottom:2px solid transparent;color:var(--muted);font-weight:500;cursor:pointer}
.tabs a.active{color:var(--brand);border-color:var(--brand)}
.empty{color:var(--muted);text-align:center;padding:40px}
.muted{color:var(--muted)}
/* Barra de progreso indeterminada (conciliación: cambio de banco) */
.nc-load{text-align:center;padding:40px 20px}
.nc-bar{position:relative;height:6px;width:100%;max-width:420px;margin:0 auto;background:var(--line);border-radius:6px;overflow:hidden}
.nc-bar>span{position:absolute;left:0;top:0;height:100%;width:40%;border-radius:6px;background:var(--brand,#2563eb);animation:ncslide 1.05s ease-in-out infinite}
@keyframes ncslide{0%{left:-40%}50%{left:60%}100%{left:100%}}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface);vertical-align:middle}
.seg span{padding:6px 13px;font-size:12.5px;cursor:pointer;color:var(--ink2);border-right:1px solid var(--line);user-select:none;line-height:1.2}
.seg span:last-child{border-right:0}
.seg span:hover{background:var(--surface2)}
.seg span.on{background:var(--brand);color:#fff;font-weight:600}
.toast{position:fixed;bottom:22px;right:22px;background:#0f172a;color:#fff;padding:12px 18px;border-radius:10px;opacity:0;transform:translateY(10px);transition:.25s;z-index:50;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.toast.show{opacity:1;transform:none}
.modal-bg{position:fixed;inset:0;background:rgba(8,14,26,.55);display:none;align-items:center;justify-content:center;z-index:40}
.modal-bg.show{display:flex}
.modal{background:var(--surface);color:var(--ink);border-radius:14px;padding:22px;width:min(520px,92vw);max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.modal h3{margin:0 0 14px}
.fld{margin-bottom:10px}
.fld label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}
.fld input,.fld select,.fld textarea{width:100%}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* Pólizas */
.asi{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
.asi th{text-align:left;color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;padding:6px 8px;border-bottom:1px solid var(--line)}
.asi td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere;word-break:break-word}
.asi td.num,.asi th.num{text-align:right;font-variant-numeric:tabular-nums}
.codbadge{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;background:var(--soft);padding:2px 6px;border-radius:6px;white-space:nowrap}
.acwrap{position:relative}
.acmenu{position:absolute;left:0;top:38px;min-width:100%;width:max-content;max-width:520px;background:var(--surface);border:1px solid var(--line);border-radius:8px;max-height:240px;overflow:auto;z-index:60;box-shadow:0 6px 24px rgba(15,23,42,.14)}
.acopt{padding:7px 10px;cursor:pointer;font-size:13px;display:flex;gap:8px;align-items:center}
.acopt:hover,.acopt.hi{background:var(--brand-soft)}
.acname{color:var(--muted);font-size:12px;white-space:normal}
.uuidchip{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;background:var(--brand-soft);color:var(--brand);padding:3px 8px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.uuidchip:hover{text-decoration:underline}
.paper{background:#fff;color:#1e293b;width:100%;max-width:100%;margin:0 auto;padding:20px 22px;border-radius:8px}
.paper .rt{table-layout:auto}
.paper .rt td:nth-child(2){white-space:normal}
.paper .rgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px 18px;margin:8px 0}
.paper .rf{display:flex;justify-content:space-between;gap:10px;font-size:12px;border-bottom:1px solid #e2e8f0;padding:3px 0}
.paper .rf span{color:#64748b}
.paper .rsec{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:12px 0 4px;font-weight:600}
.paper .rt{width:100%;border-collapse:collapse;font-size:12px}
.paper .rt th{text-align:left;color:#64748b;font-weight:600;padding:4px 6px;border-bottom:1px solid #e2e8f0}
.paper .rt td{padding:4px 6px;border-bottom:1px solid #e2e8f0}

/* ===== Responsive / móvil (R58) ===== */
/* min-width:0 permite que la columna 1fr del grid se ciña al viewport y que
   las tablas anchas hagan scroll DENTRO de main en vez de estirar la página. */
main{min-width:0}
#maincontent{min-width:0;max-width:100%}
#hamb{display:none;background:transparent;border:none;color:#fff;font-size:22px;line-height:1;cursor:pointer;padding:0 6px;margin-right:2px}
.navscrim{display:none;position:fixed;inset:56px 0 0 0;background:rgba(15,23,42,.45);z-index:55}
@media (max-width:860px){
  html,body{max-width:100%;overflow-x:hidden}
  #hamb{display:inline-flex;align-items:center}
  .app{grid-template-columns:1fr;max-width:100vw}
  header{grid-column:1/2;gap:6px;padding:0 10px;overflow:hidden}
  nav{position:fixed;top:56px;left:0;bottom:0;width:min(82vw,300px);transform:translateX(-100%);transition:transform .22s ease;z-index:60;box-shadow:0 8px 30px rgba(15,23,42,.28)}
  .app.nav-open nav{transform:translateX(0)}
  .app.nav-open .navscrim{display:block}
  main{padding:16px 12px;overflow-x:auto}
  header label{display:none}
  header .sp{flex:0 1 auto}
  .hidem{display:none}
  #empSel{max-width:46vw}
  .cards{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
  .grid2,.grid3{grid-template-columns:1fr!important}
  .row{gap:8px}
  .row .grow{flex:1 1 100%}
  .panel{padding:12px;overflow-x:auto}
  .tablewrap{max-height:none}
  .modal{width:96vw!important;max-width:96vw!important;max-height:88vh;overflow:auto}
  #pagtabs{overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  h1{font-size:20px}
  .sub{font-size:12.5px;margin-bottom:12px}
  .paper{padding:14px 12px}
  .paper .rgrid{grid-template-columns:1fr}
}
/* EF: el estado financiero (tabla ancha comparativa) hace scroll interno en vez de recortarse */
.ef-panel{overflow:auto}
@media (max-width:860px){
  /* CRM chat: apilar lista de conversaciones arriba y el chat abajo a lo ancho */
  .crmchat-wrap{flex-direction:column}
  .crmchat-side{flex:1 1 auto!important;width:100%;max-height:34vh;overflow:auto}
  .crmchat-main{flex:1 1 auto!important;width:100%}
  #crmChatMsgs{max-height:46vh!important}
  /* Estados financieros: cifras legibles, menos padding lateral */
  .ef-panel table{font-size:12px}
  .ef-panel table td,.ef-panel table th{padding-left:8px!important;padding-right:8px!important}
  /* Rejillas fijas de KPIs/tarjetas (repeat(3/4/5,1fr)) → 2 columnas en celular */
  main [style*="grid-template-columns:repeat"]{grid-template-columns:repeat(2,1fr)!important}
  /* Layouts a 2 paneles desiguales (p.ej. 2.2fr 1fr del Resumen) → apilar */
  main [style*="grid-template-columns:2"]{grid-template-columns:1fr!important}
  /* Inputs/selects con ancho mínimo fijo no deben desbordar la pantalla */
  input[style*="min-width"],select[style*="min-width"]{min-width:0!important;max-width:100%!important}
}
@media (max-width:520px){
  .logo span{display:none}
  #anioSel{max-width:78px}
  main{padding:12px 10px}
  th,td{padding:7px 8px}
  /* En pantallas muy chicas, oculta la columna "Var." del comparativo para que quepan las 2 cifras */
  .ef-panel table td:nth-child(4),.ef-panel table th:nth-child(4){display:none}
  /* KPIs a 1 columna en pantallas muy chicas */
  main [style*="grid-template-columns:repeat"]{grid-template-columns:1fr!important}
}
