:root{--font-display:"Space Grotesk","IBM Plex Sans",sans-serif;--font-body:"IBM Plex Sans",sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,monospace}body{min-height:100vh;background:#f4f6fa}.bg-photo{position:fixed;inset:-20px;z-index:-1;background:url("./assets/planta-coronel.jpg") center 30% / cover no-repeat;filter:blur(8px);transform:scale(1.05)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-0.01em}.page-shell{max-width:1560px;margin:0 auto;padding:24px 20px 60px;display:flex;flex-direction:column;gap:18px}.hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;background:rgba(19,34,56,0.9);border-radius:var(--radius-lg);padding:18px 22px;box-shadow:var(--shadow-soft)}.hero--photo{flex-direction:column;align-items:stretch;gap:8px;padding:10px 18px}.hero--photo .hero-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.hero--photo .hero-title{margin:0;font-size:20px}.hero-filters{display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px;padding-top:10px;border-top:1px solid rgba(255,255,255,0.15)}.eyebrow{margin:0 0 4px;font-size:12px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:rgba(247,250,255,0.7)}.hero-title{margin:0 0 6px;font-family:"Space Grotesk","IBM Plex Sans",sans-serif;font-size:26px;font-weight:700;color:#f7faff}.hero-subtitle{margin:0;font-size:12.5px;color:rgba(247,250,255,0.75);max-width:640px}.hero-actions{display:flex;align-items:center;gap:8px}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:999px;padding:8px 16px;font-size:13px;font-weight:700;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:transform 0.12s ease,box-shadow 0.12s ease}.button-primary{background:var(--accent);color:#fff;width:100%}.button-save{margin-top:8px;background:var(--success)}.admin-link{display:block;text-align:center;margin-top:4px;font-size:10.5px;color:rgba(19,34,56,0.35);text-decoration:none}.admin-link:hover{color:var(--ink-soft);text-decoration:underline}.button-primary:hover{box-shadow:0 8px 20px rgba(44,103,255,0.35)}.button-ghost{background:#fff;border-color:rgba(19,34,56,0.18);color:var(--ink)}.button-ghost:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.hero-actions .button-ghost{background:var(--surface-soft);border-color:var(--border);color:#f7faff}.hero-actions .button-ghost:hover{background:rgba(255,255,255,0.22);border-color:rgba(255,255,255,0.5);color:#fff}.layout{display:grid;grid-template-columns:250px 1fr;gap:16px;align-items:start}@media (max-width:900px){.layout{grid-template-columns:1fr}}.layout--full{grid-template-columns:1fr}.admin-standalone{grid-template-columns:minmax(0,480px);justify-content:center}.admin-tab-inner{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:12px;align-items:start}@media (max-width:900px){.admin-tab-inner{grid-template-columns:1fr}}.admin-card{background:rgba(255,255,255,0.7);border:1px solid rgba(19,34,56,0.1);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);padding:16px;margin-bottom:0}.admin-card .sb-title{margin-top:0}.admin-actions{grid-column:1 / -1;background:rgba(255,255,255,0.7);border:1px solid rgba(19,34,56,0.1);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);padding:16px}.admin-section-title{margin-top:18px}.barra-quick-well{background:rgba(19,34,56,0.035);border:1px solid rgba(19,34,56,0.08);border-radius:var(--radius-md);padding:8px;margin-bottom:10px}.barra-quick-well .barra-quick{margin-bottom:0}.vt-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.vt-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:rgba(247,250,255,0.7);white-space:nowrap}.vt-group select{border:1px solid rgba(255,255,255,0.3);border-radius:8px;padding:5px 9px;font-size:12px;color:var(--ink);background:rgba(255,255,255,0.92)}.vt-input-num{width:64px;border:1px solid rgba(255,255,255,0.3);border-radius:8px;padding:5px 8px;font-size:12px;font-family:var(--font-mono);color:var(--ink);background:rgba(255,255,255,0.92)}.vt-label--unit{text-transform:none;letter-spacing:0;margin-left:-4px}.hero-filters .barra-quick{margin-bottom:0}.hero-filters .barra-quick-btn{background:rgba(255,255,255,0.92);border-color:rgba(255,255,255,0.4)}.vt-estado{margin:0 0 0 auto;font-size:11px;font-weight:600;color:#fff;white-space:nowrap}.vt-estado .ok{color:#6ee7b7}.vt-estado .err{color:#ff8a8a}.vt-hint{font-size:10px;font-style:italic;color:rgba(247,250,255,0.55);white-space:nowrap}.panel{background:rgba(255,255,255,0.92);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);padding:16px;color:var(--ink)}.sidebar{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px}.sb-section{border-top:1px solid rgba(19,34,56,0.08);padding-top:14px}.sb-section:first-child{border-top:0;padding-top:0}.sb-title{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-family:var(--font-display);font-size:12px;font-weight:700;letter-spacing:0.03em;color:var(--ink)}.sb-num{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-family:var(--font-mono);font-size:10px;font-weight:700;flex-shrink:0}.sb-hint{margin:0 0 10px;font-size:11px;color:var(--ink-soft);line-height:1.4}.barra-quick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.barra-quick-btn{border:1px solid rgba(19,34,56,0.15);background:#fff;color:var(--ink-soft);border-radius:999px;padding:5px 11px;font-size:10.5px;font-weight:700;font-family:var(--font-mono);cursor:pointer;transition:background 0.12s ease,color 0.12s ease,border-color 0.12s ease}.barra-quick-btn:hover{border-color:var(--accent);color:var(--accent)}.barra-quick-btn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}.barra-quick-chip{display:inline-flex;align-items:center;gap:3px}.barra-quick-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:1px solid rgba(19,34,56,0.15);border-radius:50%;background:#fff;color:var(--ink-soft);font-size:11px;line-height:1;cursor:pointer}.barra-quick-remove:hover{border-color:var(--danger);color:var(--danger);background:rgba(191,76,76,0.08)}.barra-quick-empty{font-size:11px;font-style:italic;color:var(--ink-soft)}.barra-actual{display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px 8px;padding:10px 12px;background:rgba(19,34,56,0.03);border:1px solid rgba(19,34,56,0.08);border-radius:var(--radius-md)}.barra-actual-label{grid-column:1 / -1;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em;color:var(--ink-soft);white-space:nowrap}.barra-actual-value{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap}.barra-cambiar-btn{justify-self:end;border:0;background:none;padding:0;font-size:11px;font-weight:700;color:var(--accent);text-decoration:underline;cursor:pointer;white-space:nowrap}.barra-cambiar-btn:hover{color:var(--ink)}.barra-avanzado{margin-top:10px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:12px}.field span{font-weight:700;color:var(--ink-soft);font-size:11px}.field input,.field select{border:1px solid rgba(19,34,56,0.18);border-radius:10px;padding:7px 10px;font-size:12.5px;color:var(--ink);background:#fff}.field--sm input{padding:6px 8px}.file-grid{display:flex;flex-direction:column;gap:8px}.file-field{display:flex;flex-direction:column;gap:4px;font-size:11.5px}.file-field span{font-weight:700;color:var(--ink-soft)}.file-field input[type="file"]{font-size:11px}.file-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.file-grid .file-drop:last-child:nth-child(odd){grid-column:1 / -1}.file-drop{display:flex;align-items:center;gap:10px;padding:10px 12px;min-width:0;border:1.5px dashed rgba(19,34,56,0.22);border-radius:var(--radius-md);background:rgba(19,34,56,0.02);cursor:pointer;transition:border-color 0.15s ease,background 0.15s ease}.file-drop:hover{border-color:var(--accent);background:var(--accent-soft)}.file-drop.is-dragover{border-color:var(--accent);background:var(--accent-soft)}.file-drop.is-filled{border-style:solid;border-color:var(--success);background:rgba(31,154,108,0.07)}.file-drop-icon{font-size:18px;line-height:1;flex-shrink:0}.file-drop-text{display:flex;flex-direction:column;gap:1px;min-width:0}.file-drop-title{font-size:12px;font-weight:700;color:var(--ink)}.file-drop-sub{font-size:10.5px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-drop.is-filled .file-drop-sub{color:var(--success);font-weight:600}.admin-mes-inline{margin-left:auto;width:84px;border:1px solid rgba(19,34,56,0.14);border-radius:8px;padding:4px 8px;font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--ink-soft);background:rgba(19,34,56,0.03);text-align:center}.admin-mes-inline:focus{color:var(--ink);border-color:var(--accent);outline:none}.param-block{margin-bottom:12px;padding:10px 12px;background:rgba(19,34,56,0.03);border-radius:var(--radius-md)}.param-block-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--ink-soft);margin-bottom:8px}.param-block .sb-hint{margin:6px 0 0}.param-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.download-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.estado-box{margin-top:10px;background:rgba(19,34,56,0.04);border:1px solid rgba(19,34,56,0.1);border-radius:10px;padding:10px;font-size:11px;font-family:"IBM Plex Mono",monospace;color:var(--ink);white-space:pre-wrap;line-height:1.6}.estado-box .ok{color:var(--success);font-weight:700}.estado-box .warn{color:var(--warning);font-weight:700}.estado-box .err{color:var(--danger);font-weight:700}.main{min-width:0}.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.tab{border:0;background:rgba(19,34,56,0.06);color:var(--ink-soft);border-radius:999px;padding:7px 14px;font-size:12px;font-weight:800;cursor:pointer}.tab.is-active{background:var(--accent);color:#fff}.tab-panel{display:none}.tab-panel.is-active{display:block}.plot{width:100%;min-height:300px}.plot--tall{min-height:480px}.balance-grid{display:flex;flex-direction:column;gap:12px}.chart-card{background:rgba(255,255,255,0.88);border:1px solid rgba(19,34,56,0.1);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:12px}.chart-card-title{font-family:var(--font-display);font-size:13px;font-weight:700;color:var(--ink);margin-bottom:2px}.chart-card-desc{font-size:11px;color:var(--ink-soft);margin-bottom:8px;line-height:1.35}.balance-grid .plot{min-height:460px}.subtabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.subtab{border:1px solid rgba(19,34,56,0.14);background:rgba(19,34,56,0.04);color:var(--ink-soft);border-radius:999px;padding:6px 14px;font-size:11.5px;font-weight:700;cursor:pointer;transition:background 0.12s ease,color 0.12s ease,border-color 0.12s ease}.subtab:hover{border-color:var(--ink);color:var(--ink)}.subtab.is-active{background:var(--ink);border-color:var(--ink);color:#fff}.balance-grid[hidden]{display:none}.oportunidad-panel{background:rgba(255,255,255,0.92);border:1px solid rgba(19,34,56,0.1);border-left:4px solid var(--danger);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);padding:16px;margin-bottom:12px}.oportunidad-panel[hidden]{display:none}.oportunidad-panel-title{margin:0 0 12px;font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--ink)}.oportunidad-panel .kpi-grid{margin-bottom:14px}.oportunidad-panel .plot{min-height:460px}.resumen-layout{display:grid;grid-template-columns:minmax(280px,340px) 1fr;gap:14px;align-items:start}.resumen-layout>.kpi-hero,.resumen-layout>.kpi-grid{grid-column:1 / -1}@media (max-width:1000px){.resumen-layout{grid-template-columns:1fr}}.resumen-chart-col{min-width:0}.kpi-hero{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;padding:14px 18px;margin-bottom:10px;border-radius:var(--radius-md);background:rgba(19,34,56,0.9);box-shadow:var(--shadow-soft)}.kpi-hero-label{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:rgba(247,250,255,0.6);margin-bottom:3px}.kpi-hero-value{font-family:var(--font-mono);font-size:26px;font-weight:700;line-height:1;color:#fff;font-variant-numeric:tabular-nums}.kpi-hero-value.is-negative{color:#ff8a8a}.kpi-hero-value.is-positive{color:#6ee7b7}.kpi-hero-sub{margin-top:4px;font-size:10.5px;color:rgba(247,250,255,0.75)}.kpi-hero-aside{display:flex;gap:16px;text-align:right}.kpi-hero-stat-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:rgba(247,250,255,0.55);margin-bottom:2px}.kpi-hero-stat-value{font-family:var(--font-mono);font-size:14px;font-weight:600;color:#fff}.kpi-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.kpi-grid .kpi-card{flex:1 1 150px}.kpi-card{background:rgba(255,255,255,0.88);border:1px solid rgba(19,34,56,0.1);border-radius:var(--radius-md);padding:8px 10px;box-shadow:var(--shadow-soft);border-left:3px solid var(--accent)}.kpi-card.kpi-success{border-left-color:var(--success)}.kpi-card.kpi-warn{border-left-color:var(--warning)}.kpi-card.kpi-danger{border-left-color:var(--danger)}.kpi-label{font-size:9px;color:var(--ink-soft);font-weight:700;text-transform:uppercase;letter-spacing:0.03em;margin-bottom:2px}.kpi-value{font-family:var(--font-mono);font-size:15px;font-weight:700;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums}.kpi-sub{font-size:9px;color:var(--ink-soft);margin-top:2px}.ledger{background:rgba(255,255,255,0.88);border:1px solid rgba(19,34,56,0.1);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);overflow:hidden}.ledger-section-title{padding:10px 20px 6px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--ink-soft);background:rgba(19,34,56,0.03)}.ledger-row{display:flex;align-items:baseline;justify-content:space-between;padding:9px 20px;border-bottom:1px dashed rgba(19,34,56,0.1);font-size:13px}.ledger-row:last-child{border-bottom:0}.ledger-row-label{color:var(--ink-soft);font-weight:600}.ledger-row-value{font-family:var(--font-mono);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.ledger-row--total{padding:14px 20px;background:var(--ink)}.ledger-row--total .ledger-row-label{color:rgba(247,250,255,0.8);font-family:var(--font-display);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:0.03em}.ledger-row--total .ledger-row-value{color:#fff;font-size:20px;font-weight:700}.ledger-row--total .ledger-row-value.is-negative{color:#ff8a8a}.ledger-row--total .ledger-row-value.is-positive{color:#6ee7b7}.table-wrap{overflow-x:auto;border:1px solid rgba(19,34,56,0.1);border-radius:var(--radius-md)}.table-wrap--scroll{max-height:70vh;overflow-y:auto}.detalle-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin-bottom:10px}.detalle-toolbar .detalle-mode-label{margin-right:auto}.detalle-mode-label{font-size:11.5px;font-weight:700;color:var(--ink-soft)}.detalle-diag-toggle{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--ink-soft);cursor:pointer}.data-table--sin-diag th:nth-child(7),.data-table--sin-diag td:nth-child(7),.data-table--sin-diag th:nth-child(8),.data-table--sin-diag td:nth-child(8){display:none}.data-table{width:100%;border-collapse:collapse;font-size:12px;color:var(--ink)}.data-table th,.data-table td{padding:5px 8px;text-align:right;white-space:nowrap;border-bottom:1px solid rgba(19,34,56,0.06);font-size:11.5px}.data-table th:nth-child(-n+8),.data-table td:nth-child(-n+8){text-align:left}.data-table td:nth-child(n+9){font-family:var(--font-mono);font-variant-numeric:tabular-nums}.data-table thead th{position:sticky;top:0;background:#f8fafc;font-size:10.5px;text-transform:uppercase;letter-spacing:0.02em;color:var(--ink-soft)}.data-table tbody tr:nth-child(even){background:rgba(19,34,56,0.02)}.data-table td.is-negative{color:var(--danger);font-weight:700}.data-table td.is-positive{color:var(--success);font-weight:700}.data-table td.is-warning{color:var(--warning);font-weight:700}