:root {
  --bg:#F2F0EB;--surface:#FAFAF7;--surface2:#ECEAE4;--border:#DDD9D0;--border2:#CBC7BD;
  --t1:#1A1816;--t2:#3A3733;--t3:#7A756E;--t4:#B5B0A8;
  --nav:#152A35;--nav2:#1E3D4D;
  --blue:#1B4A6B;--blue-lt:#EBF3F9;
  --green:#1A5233;--green-lt:#EAF3EE;
  --red:#7A1A1A;--red-lt:#F8EDED;
  --amber:#7A4A08;--amber-lt:#FDF4E3;
  --purple:#4A1A6B;--purple-lt:#F2EBF9;
  --r:10px;--rsm:6px;
  --sh:0 1px 3px rgba(26,24,22,.07),0 4px 12px rgba(26,24,22,.04);
  --sh-md:0 4px 16px rgba(26,24,22,.1),0 1px 4px rgba(26,24,22,.06);
}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{height:100%;background:var(--bg);color:var(--t1);font-family:'Figtree',sans-serif;font-size:13px;}

/* LOGIN */
#login-wrap{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:999;}
.login-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-md);width:380px;overflow:hidden;}
.login-hdr{background:var(--nav);padding:28px 32px 22px;}
.login-logo{font-family:'Syne',sans-serif;font-weight:800;font-size:22px;color:#fff;}
.login-app{font-family:'Syne',sans-serif;font-weight:600;font-size:13px;color:rgba(255,255,255,.55);margin-top:3px;}
.login-sub{font-size:10px;color:rgba(255,255,255,.28);text-transform:uppercase;letter-spacing:1.5px;margin-top:5px;}
.login-body{padding:26px 32px;}
.login-title{font-size:15px;font-weight:600;color:var(--t1);margin-bottom:18px;}

/* APP */
#app{display:none;grid-template-columns:220px 1fr;height:100vh;overflow:hidden;}

/* SIDEBAR */
.sidebar{background:var(--nav);display:flex;flex-direction:column;overflow:hidden;}
.sb-brand{padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.07);}
.logo-mark{width:32px;height:32px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:7px;display:flex;align-items:center;justify-content:center;font-family:'Syne',sans-serif;font-weight:800;font-size:12px;color:#fff;margin-bottom:9px;}
.brand-name{font-family:'Syne',sans-serif;font-weight:700;font-size:13px;color:#fff;}
.brand-sub{font-size:9px;color:rgba(255,255,255,.3);text-transform:uppercase;letter-spacing:1.5px;margin-top:1px;}
.nav{flex:1;padding:10px 0;overflow-y:auto;}
.nav-sep{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:rgba(255,255,255,.22);padding:12px 18px 4px;}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 18px;margin:1px 8px;border-radius:6px;color:rgba(255,255,255,.5);cursor:pointer;transition:.12s;font-size:12px;font-weight:500;}
.nav-item:hover{background:rgba(255,255,255,.07);color:rgba(255,255,255,.85);}
.nav-item.active{background:rgba(255,255,255,.12);color:#fff;}
.ni{font-size:12px;width:16px;text-align:center;}
.sb-foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.07);}
.u-pill{display:flex;align-items:center;gap:9px;}
.u-av{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0;}
.u-name{font-size:12px;font-weight:600;color:rgba(255,255,255,.8);}
.u-role{font-size:10px;color:rgba(255,255,255,.3);}
.logout-btn{background:none;border:none;color:rgba(255,255,255,.3);font-size:11px;cursor:pointer;font-family:'Figtree',sans-serif;padding:6px 0 0;display:block;width:100%;text-align:left;}
.logout-btn:hover{color:rgba(255,255,255,.6);}

/* MAIN */
.main{display:flex;flex-direction:column;overflow:hidden;}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:0 24px;height:52px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.page-title{font-family:'Syne',sans-serif;font-weight:700;font-size:16px;}
.content{flex:1;overflow-y:auto;padding:20px 24px;}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--rsm);font-family:'Figtree',sans-serif;font-size:12px;font-weight:600;cursor:pointer;border:none;transition:.12s;white-space:nowrap;}
.btn-primary{background:var(--nav);color:#fff;}.btn-primary:hover{background:var(--nav2);}
.btn-success{background:var(--green);color:#fff;}
.btn-danger{background:var(--red);color:#fff;}
.btn-ghost{background:transparent;color:var(--t2);border:1px solid var(--border2);}.btn-ghost:hover{background:var(--surface2);}
.btn-sm{padding:5px 10px;font-size:11px;}
.btn-xs{padding:3px 8px;font-size:10px;}

/* CARDS */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh);}
.card-hdr{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:10px;}
.card-title{font-family:'Syne',sans-serif;font-weight:700;font-size:13px;}
.card-body{padding:18px;}

/* KPI */
.kpi-grid{display:grid;gap:12px;margin-bottom:16px;}
.g4{grid-template-columns:repeat(4,1fr);}
.g5{grid-template-columns:repeat(5,1fr);}
.g3{grid-template-columns:repeat(3,1fr);}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;box-shadow:var(--sh);position:relative;min-height:80px;display:flex;flex-direction:column;justify-content:center;}
.kpi-stripe{position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--r) var(--r) 0 0;}
.kpi-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--t3);margin-bottom:6px;}
.kpi-val{font-family:'JetBrains Mono',monospace;font-size:15px;font-weight:600;color:var(--t1);line-height:1.3;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Celdas de monto: el número no se parte y la columna se achica al contenido */
td.mono, td.r { white-space: nowrap; }
td.r { text-align: right; }
th.r { text-align: right; }
.kpi-sub{font-size:10px;color:var(--t3);margin-top:4px;}
.kpi-delta{display:inline-flex;align-items:center;font-size:10px;font-weight:700;margin-top:4px;padding:2px 6px;border-radius:20px;}
.pos{color:var(--green);}.pos-bg{background:var(--green-lt);color:var(--green);}
.neg{color:var(--red);}.neg-bg{background:var(--red-lt);color:var(--red);}
.amb{color:var(--amber);}

/* TABLE — todo visible, montos al mismo tamaño que el texto, GS y USD pueden apilarse */
.tw{overflow-x:auto;max-width:100%;}
table{width:100%;max-width:100%;min-width:0;border-collapse:collapse;table-layout:auto;}
.content table,.modal-body table,.drawer-body table,.tw table{width:100% !important;max-width:100%;min-width:0;table-layout:auto;}
thead th{padding:8px 8px;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--t3);background:var(--surface2);border-bottom:1px solid var(--border);white-space:normal;line-height:1.3;text-align:left;}
tbody td{padding:9px 8px;border-bottom:1px solid var(--border);color:var(--t2);vertical-align:middle;font-size:13px;overflow-wrap:break-word;word-break:normal;}
tbody td:not(.r){white-space:normal !important;max-width:none !important;overflow:visible !important;text-overflow:unset !important;}
tbody tr:last-child td{border-bottom:none;}
tbody tr.clickable{cursor:pointer;}
tbody tr.clickable:hover{background:#F7F5F0;}
.mono{font-family:'JetBrains Mono',monospace;font-size:13px;}
th.r,td.r{width:1%;white-space:nowrap !important;overflow:visible;}
td.r,td.mono{font-family:'JetBrains Mono',monospace;font-size:13px !important;font-variant-numeric:tabular-nums;}
.monto-par{display:flex;flex-direction:column;align-items:flex-end;gap:2px;line-height:1.35;}
.monto-par > div{white-space:nowrap;}
.r{text-align:right;}.c{text-align:center;}
.muted{color:var(--t3);}
#terceros-tbody td:last-child{white-space:nowrap !important;}

/* Solicitud de estructura / obras chicas: que entre sin scroll lateral */
.est-stack{display:flex;flex-direction:column;gap:4px;min-width:0;}
.est-monto-cell{display:flex;align-items:center;gap:4px;justify-content:flex-end;min-width:0;}
.est-monto-cell .est-i-mon{flex:0 0 58px;width:58px;min-width:0;padding:6px 4px;}
.est-monto-cell .est-i-monto{flex:1;min-width:110px;width:100%;text-align:right;}
.est-monto-stack{align-items:stretch;}
.est-vence-row{display:flex;align-items:center;gap:8px;min-width:0;}
.est-vence-row .est-i-venc{flex:1;min-width:0;}
.est-fact-lbl{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--t3);white-space:nowrap;flex-shrink:0;}
.est-sol-table .est-i-desc{min-height:52px;resize:vertical;line-height:1.35;}
.est-sol-table td:nth-child(5){width:22%;min-width:168px;}
.est-sol-table th:nth-child(6),.est-sol-table td:nth-child(6){width:1%;}
.est-acc-cell{white-space:normal !important;font-size:11px;}
.est-sol-table .inp,.est-sol-table .combo-inp{min-width:0;width:100%;max-width:100%;padding:6px 8px;font-size:13px;}
.est-sol-table input[type="date"]{min-width:0;width:100%;max-width:100%;padding:6px 4px;}
.est-sol-table td{vertical-align:top;}

/* BADGE */
.badge{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:20px;font-size:9.5px;font-weight:700;white-space:nowrap;}
.bdg-green{background:var(--green-lt);color:var(--green);}
.bdg-red{background:var(--red-lt);color:var(--red);}
.bdg-amber{background:var(--amber-lt);color:var(--amber);}
.bdg-blue{background:var(--blue-lt);color:var(--blue);}
.bdg-gray{background:var(--surface2);color:var(--t3);}
.bdg-purple{background:var(--purple-lt);color:var(--purple);}

/* FORM */
.fg{display:grid;gap:12px;}
.fg2{grid-template-columns:1fr 1fr;}
.fg3{grid-template-columns:1fr 1fr 1fr;}
.full{grid-column:1/-1;}
.field{display:flex;flex-direction:column;gap:4px;}
.field label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--t3);}
.req{color:var(--red);}
.inp{padding:8px 11px;border:1px solid var(--border2);border-radius:var(--rsm);font-family:'Figtree',sans-serif;font-size:13px;color:var(--t1);background:var(--surface);outline:none;width:100%;transition:.12s;}
.combo-pop{display:none;position:fixed;z-index:9999;background:var(--surface);border:1px solid var(--border2);border-radius:var(--rsm);max-height:280px;overflow:auto;box-shadow:var(--sh);}
.combo-pop .combo-opt{padding:8px 11px;cursor:pointer;font-size:13px;color:var(--t1);}
.combo-pop .combo-opt:hover{background:var(--surface2);}
.combo-pop .combo-empty{padding:8px 11px;color:var(--t3);font-size:12px;}
.inp:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(27,74,107,.1);}
.inp[readonly]{background:var(--surface2);color:var(--t3);}
textarea.inp{resize:vertical;min-height:64px;}
.hint{font-size:10px;color:var(--t4);}

/* PANES */
.pane{display:none;}.pane.active{display:block;}

/* MODAL */
.modal-back{position:fixed;inset:0;background:rgba(20,16,12,.45);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:200;opacity:0;pointer-events:none;transition:.18s;}
.modal-back.open{opacity:1;pointer-events:all;}
.modal{background:var(--surface);border-radius:var(--r);box-shadow:var(--sh-md);width:660px;max-width:95vw;max-height:90vh;overflow-y:auto;transform:translateY(16px);transition:.18s;}
.modal-back.open .modal{transform:translateY(0);}
.modal-hdr{padding:18px 22px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.modal-title{font-family:'Syne',sans-serif;font-weight:700;font-size:15px;}
.modal-close{background:none;border:none;font-size:20px;color:var(--t3);cursor:pointer;}
.modal-body{padding:22px;}
.modal-foot{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;}

/* DRAWER */
.drawer-back{position:fixed;inset:0;background:rgba(20,16,12,.35);z-index:150;opacity:0;pointer-events:none;transition:.18s;}
.drawer-back.open{opacity:1;pointer-events:all;}
.drawer{position:fixed;top:0;right:0;bottom:0;width:680px;max-width:96vw;background:var(--surface);box-shadow:-4px 0 32px rgba(0,0,0,.12);transform:translateX(100%);transition:.22s;overflow-y:auto;z-index:151;}
.drawer.open{transform:translateX(0);}
.drawer-hdr{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--surface);z-index:1;}
.drawer-body{padding:22px;}

/* SECTION HEADER */
.sh2{font-family:'Syne',sans-serif;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.9px;color:var(--t3);margin:20px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border);}

/* ALERT */
.alert{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-radius:var(--rsm);font-size:12px;line-height:1.5;margin-bottom:14px;}
.alert-blue{background:var(--blue-lt);color:var(--blue);border:1px solid #8FBBE0;}
.alert-amber{background:var(--amber-lt);color:var(--amber);border:1px solid #F0D088;}
.alert-red{background:var(--red-lt);color:var(--red);border:1px solid #E8A0A0;}
.alert-green{background:var(--green-lt);color:var(--green);border:1px solid #8FD0A8;}

/* PROGRESS */
.pb{height:5px;background:var(--surface2);border-radius:3px;overflow:hidden;}
.pb-fill{height:100%;border-radius:3px;transition:.3s;}

/* TIMELINE */
.tl-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);}
.tl-item:last-child{border-bottom:none;}
.tl-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;}
.tl-dot-green{background:var(--green-lt);color:var(--green);}
.tl-dot-blue{background:var(--blue-lt);color:var(--blue);}
.tl-dot-amber{background:var(--amber-lt);color:var(--amber);}

/* EMPTY */
.empty{text-align:center;padding:40px 20px;color:var(--t3);}
.empty-icon{font-size:30px;opacity:.4;margin-bottom:10px;}

/* TOAST */
#toast{position:fixed;bottom:20px;right:20px;background:var(--nav);color:#fff;padding:11px 18px;border-radius:var(--r);font-size:12px;font-weight:600;box-shadow:var(--sh-md);opacity:0;transform:translateY(8px);transition:.25s;pointer-events:none;z-index:500;}
#toast.show{opacity:1;transform:translateY(0);}

/* LOADING */
.loading{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--t3);font-size:12px;gap:8px;}
.spin{width:16px;height:16px;border:2px solid var(--border2);border-top-color:var(--nav);border-radius:50%;animation:spin .7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:10px;}

/* ══════════════════════════════════════
   RESPONSIVE MÓVIL
   ══════════════════════════════════════ */

/* Botón hamburguesa — oculto en desktop */
.mob-menu-btn{display:none;background:none;border:none;color:#fff;font-size:22px;cursor:pointer;padding:4px 8px;line-height:1;flex-shrink:0;}

/* Overlay del sidebar en móvil */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:299;}
.sidebar-overlay.open{display:block;}

@media(max-width:768px){
  #app{grid-template-columns:1fr;height:100dvh;}
  .sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;z-index:300;transform:translateX(-100%);transition:transform .22s ease;overflow-y:auto;}
  .sidebar.mob-open{transform:translateX(0);}
  .mob-menu-btn{display:flex;align-items:center;justify-content:center;}
  .topbar{padding:0 14px;gap:8px;}
  .page-title{font-size:14px;}
  .topbar .btn{font-size:11px;padding:6px 10px;}
  .content{padding:12px 14px;}
  .kpi-grid{gap:8px;margin-bottom:12px;}
  #kpi-empresa{grid-template-columns:repeat(2,1fr) !important;}
  .g4,.g5,.g3{grid-template-columns:repeat(2,1fr);}
  .kpi{padding:12px 14px;}
  .kpi-val{font-size:14px !important;}
  .kpi-lbl{font-size:8.5px;}
  .fg2,.fg3{grid-template-columns:1fr;}
  .full{grid-column:1/-1;}
  .tw{overflow-x:auto;}
  thead th{font-size:9px;padding:6px 6px;white-space:normal;}
  tbody td{font-size:13px;padding:8px 6px;}
  .mono,td.r,td.mono{font-size:13px;}
  .modal-back{align-items:flex-end;}
  .modal{width:100% !important;max-width:100% !important;max-height:92dvh;border-radius:16px 16px 0 0;transform:translateY(100%);}
  .modal-back.open .modal{transform:translateY(0);}
  .modal-body{padding:16px;}
  .modal-foot{padding:12px 16px;}
  .drawer{width:100% !important;max-width:100% !important;}
  .drawer-body{padding:16px;}
  .drawer-hdr{padding:14px 16px;}
  .inp{font-size:16px !important;padding:10px 12px;}
  select.inp{font-size:16px !important;}
  .btn{min-height:38px;}
  .btn-sm{min-height:34px;}
  .btn-xs{min-height:28px;font-size:10px;}
  #toast{left:14px;right:14px;bottom:16px;text-align:center;}
  .login-box{width:calc(100vw - 32px);max-width:360px;}
  .login-body{padding:20px 22px;}
  .login-hdr{padding:22px 22px 18px;}
  ::-webkit-scrollbar{width:0;height:0;}
}

@media(max-width:400px){
  #kpi-empresa{grid-template-columns:1fr !important;}
  .g4,.g5,.g3{grid-template-columns:1fr;}
}

.nav a.nav-item{text-decoration:none;color:rgba(255,255,255,.72);}
.nav a.nav-item:hover{color:rgba(255,255,255,.92);}
.nav a.nav-item.active{color:#fff;}
