:root{color:#1d1d1f;--accent: #0a84ff;--accent-soft: rgba(10, 132, 255, .16);--glass: rgba(255, 255, 255, .64);--line: rgba(60, 60, 67, .12);font-family:system-ui,Segoe UI,sans-serif;line-height:1.45;font-size:16px}*{box-sizing:border-box;overscroll-behavior-x:none}html,body{margin:0;min-height:100%;overscroll-behavior-x:none}body{background:radial-gradient(1100px 560px at 8% -12%,rgba(90,168,255,.42),transparent 58%),radial-gradient(860px 480px at 92% -8%,rgba(176,140,255,.32),transparent 52%),radial-gradient(720px 420px at 78% 108%,rgba(255,176,128,.28),transparent 55%),#e8ecf4}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app{height:100vh;display:grid;grid-template-columns:64px minmax(0,1fr);overflow:hidden}.side{position:relative;z-index:30;min-width:0}.side-panel{position:absolute;inset:0 auto 0 0;width:64px;height:100%;overflow:hidden;background:#ffffff94;backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);display:flex;flex-direction:column;border-right:1px solid var(--accent-soft);transition:width .2s ease,background .2s ease,box-shadow .2s ease}.side-brand{display:flex;align-items:center;gap:10px;padding:16px 16px 0;white-space:nowrap}.side-mark{display:grid;place-items:center;flex:0 0 32px;height:32px;border-radius:8px;background:#1d6fad;color:#f4f7fb;font-family:Segoe UI,system-ui,sans-serif;font-size:16px;font-weight:650}.side-title{overflow:hidden;opacity:0;font-size:14px;font-weight:600;letter-spacing:-.02em;color:#1d1d1f}.side:hover .side-panel,.side:has(:focus-visible) .side-panel{width:196px;background:#ffffffe0;box-shadow:12px 0 32px #1d1d1f14}.side:hover .side-title,.side:has(:focus-visible) .side-title{opacity:1;transition:opacity .12s ease .06s}.workspace{min-width:0;height:100vh;overflow:auto}.top{position:sticky;top:0;z-index:10;background:var(--glass);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);border-bottom:1px solid var(--accent-soft)}.top-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;padding:14px 28px 8px}.brand{margin:0;font-weight:600;letter-spacing:.02em}.period{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#636366;font-size:14px}.period input{padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#fffc}.top-user{margin-left:auto;display:flex;align-items:center;gap:12px}.nav{display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-height:0;padding:8px 0 12px;overflow-x:hidden;overflow-y:auto}.nav a{display:flex;align-items:center;gap:12px;min-height:40px;margin:auto 8px;padding:0 14px;border-radius:12px;color:#636366;white-space:nowrap}.nav a svg{width:20px;height:20px;flex:0 0 20px}.nav a[data-icon=pyg] svg{color:#2e9d57}.nav a[data-icon=balance] svg{color:#1d6fad}.nav a[data-icon=flujo] svg{color:#0f9aa3}.nav a[data-icon=proveedores] svg{color:#d97a0f}.nav a[data-icon=validacion] svg{color:#c2399a}.nav a[data-icon=transacciones] svg{color:#5856d6}.nav a[data-icon=inventario] svg{color:#a0662a}.nav a[data-icon=fiscal] svg{color:#d64545}.nav a[data-icon=amortizaciones] svg{color:#8e5bd8}.nav a[data-icon=cuentas] svg{color:#5b6b80}.nav a[data-icon=cargar] svg{color:#0a84ff}.nav-label{font-size:15px;font-weight:500;letter-spacing:-.01em;opacity:0}.side:hover .nav-label,.side:has(:focus-visible) .nav-label{opacity:1;transition:opacity .12s ease .06s}.nav a:hover{color:#1d1d1f;background:#ffffffb8}.nav a.active{color:var(--accent);background:var(--accent-soft)}.nav a:focus-visible{outline:2px solid var(--accent-soft);outline-offset:1px}@media(prefers-reduced-motion:reduce){.side-panel,.side-title{transition:none}}.main{padding:32px 28px 48px}.page h1{margin:0 0 8px;font-size:28px;font-weight:600;letter-spacing:-.02em}.muted{color:#636366}.status{font-size:14px;color:#c93413}.button,.button-quiet{padding:8px 14px;border-radius:10px;cursor:pointer}.button{border:1px solid var(--accent);background:var(--accent);color:#fff}.button:disabled{opacity:.6;cursor:default}.button-quiet{border:1px solid transparent;background:transparent;color:#636366}.button-quiet:hover{color:#1d1d1f}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(380px,100%);padding:32px 28px;background:var(--glass);backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--accent-soft);border-radius:18px;display:flex;flex-direction:column;gap:14px}.login-card h1{margin:0;font-size:24px;font-weight:600}.field{display:flex;flex-direction:column;gap:6px;font-size:14px;color:#636366}.field input,.field select{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#ffffffdb}.field input:focus,.period input:focus,.field.inline select:focus{outline:2px solid var(--accent-soft);outline-offset:1px}.banner{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:#ffd6ccb3;color:#c93413;font-size:15px}.banner-info{background:#0a84ff1f;color:#1d1d1f}.kpi-inline{margin:8px 0;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.hint{margin:8px 0 16px;font-size:14px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 8px}.kpi-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.kpi-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi-small{font-size:18px!important}.kpi{padding:16px 18px;background:var(--glass);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border:1px solid var(--accent-soft);border-radius:16px}.kpi h2{margin:0 0 8px;font-size:14px;font-weight:500;color:#636366}.kpi p{margin:0;font-size:28px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:#1d1d1f}.kpi .hint,.kpi .muted{font-size:14px;font-weight:400;letter-spacing:0}.panel{margin-top:28px;padding:18px 20px 20px;background:var(--glass);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border:1px solid var(--accent-soft);border-radius:16px}.panel h2{margin:0;font-size:17px;font-weight:600}.upload-blocks{display:flex;flex-direction:column;gap:14px}.upload-block{padding:14px 16px 12px;border:1px solid var(--line);border-radius:12px;background:#ffffff8c}.upload-block h3{margin:0 0 10px;font-size:16px;font-weight:600}.upload-row{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end}.upload-row .field{flex:1 1 220px}.upload-row .field.year{flex:0 0 7.5rem}.upload-block .hint,.upload-block .status{margin:8px 0 0}.panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.panel-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.field.inline{flex-direction:row;align-items:center;gap:8px}.page>.field.inline{margin:12px 0 4px}.field.inline select,.field.inline input[type=number]{padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#ffffffdb}.field.inline input[type=number]{width:5.5rem}.field.inline input[type=text]{padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#ffffffdb;min-width:16rem}.field.inline input.wide{width:8rem}.field.inline input[type=date]{padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#ffffffdb}.actions{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin:12px 0}.split,.split-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.split-side{grid-template-columns:260px minmax(0,1fr)}.split>*{min-width:0}.split .grain{flex-wrap:wrap;max-width:100%}.split .table-wrap{max-height:min(58vh,640px);overflow:auto}.split .stmt th{position:sticky;top:0;z-index:1;background:#f7f8fb}.split .stmt td.wrap{max-width:12rem}.split .field.inline input[type=text]{min-width:10rem}@media(max-width:900px){.split,.split-side{grid-template-columns:minmax(0,1fr)}}.button-danger{padding:8px 14px;border-radius:10px;cursor:pointer;border:1px solid transparent;background:transparent;color:#c93413}.button-danger:hover{background:#ff3b3014}.stmt .check{width:28px;text-align:center}.stmt input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.stmt-picked td{background:#0a84ff14}.field.inline input[type=checkbox]{width:16px;height:16px;padding:0;margin:0;border:0;background:transparent;accent-color:var(--accent)}.grain{display:flex;border:1px solid var(--accent-soft);border-radius:10px;overflow:hidden;background:#ffffff73}.page>.grain,.panel .grain{width:fit-content;margin:16px 0 8px}.panel-head .grain{margin:0}.grain button{padding:6px 12px;border:0;background:transparent;color:#636366;cursor:pointer}.grain button+button{border-left:1px solid var(--accent-soft)}.grain-on{background:var(--accent)!important;color:#fff!important}.chart{display:block;width:100%;height:280px}.chart-grid{stroke:#3c3c431f;stroke-width:1}.chart-line{fill:none;stroke:#1d1d1f73;stroke-width:1.75}.chart-dot,.chart-dot-Realizado{fill:#1d1d1f}.chart-dot-En-curso{fill:#0a84ff}.chart-dot-Previsto{fill:#ff9f0a}.chart-label{fill:#636366;font-size:12px}.legend{display:flex;flex-wrap:wrap;gap:12px 18px;margin:0 0 8px;font-size:13px;color:#636366}.legend i{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:99px;background:#1d1d1f}.legend .curso i{background:#0a84ff}.legend .previsto i{background:#ff9f0a}.legend .s1 i{background:#0a84ff}.legend .s2 i{background:#1d1d1f}.legend .s3 i{background:#30d158}.legend .s4 i{background:#ff9f0a}.legend .s5 i{background:#bf5af2}.legend .s6 i{background:#ff375f}.chart-line-1{stroke:#0a84ff}.chart-line-2{stroke:#1d1d1f}.chart-line-3{stroke:#30d158}.chart-line-4{stroke:#ff9f0a}.chart-line-5{stroke:#bf5af2}.chart-line-6{stroke:#ff375f}circle.chart-line-1{fill:#0a84ff}circle.chart-line-2{fill:#1d1d1f}circle.chart-line-3{fill:#30d158}circle.chart-line-4{fill:#ff9f0a}circle.chart-line-5{fill:#bf5af2}circle.chart-line-6{fill:#ff375f}.table-wrap{overflow-x:auto}.stmt{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}.stmt th,.stmt td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;color:#1d1d1f}.stmt th{font-weight:500;color:#636366}.stmt tr.stmt-filters th{padding:4px 6px 8px;font-weight:400;white-space:normal;vertical-align:middle}.stmt tr.stmt-filters input{width:100%;min-width:4.5rem;box-sizing:border-box;padding:4px 6px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:13px;background:#fff;color:#1d1d1f}.stmt tr.stmt-filters input:focus{outline:2px solid var(--accent-soft);outline-offset:1px}.stmt .num{text-align:right;color:#1d1d1f}.stmt-section td{font-weight:650;padding-top:12px}.stmt-subgroup td:first-child{padding-left:18px;color:#636366}.stmt-account td:first-child{padding-left:32px}.stmt-subtotal td{font-weight:600}.stmt-total td{font-weight:650;border-top:1px solid var(--line)}.stmt-tree tr.depth-0 td:first-child{padding-left:8px}.stmt-tree tr.depth-1 td:first-child{padding-left:28px;color:#1d1d1f;font-weight:600}.stmt-tree tr.depth-2 td:first-child{padding-left:52px;font-weight:400;color:#1d1d1f}.stmt-tree tr.depth-3 td:first-child{padding-left:76px;font-weight:400;color:#1d1d1f}.stmt-tree tr.stmt-category td:first-child{font-weight:600}.stmt-tree tr.can-open{cursor:pointer}.stmt-tree tr.can-open:hover td{background:#0a84ff0f}.stmt-twist{border:0;background:transparent;color:#636366;cursor:pointer;font:inherit;padding:0 6px 0 0;line-height:1}.stmt-twist:hover{color:var(--accent)}.stmt-cuadre_ok td{font-weight:600}.stmt-cuadre_bad td{font-weight:600;background:#ffd6cc73}.stmt-ok td{background:#30d1581f}.stmt-bad td{background:#ff3b301a}.stmt-row-vencida td{background:#f8d7da8c}.stmt-row-sin-vencimiento td{background:#fff3cdb3}.stmt-row-Previsto td{background:#ffd60a1f}.stmt-row-En-curso td{background:#0a84ff14}.stmt-otros td{background:#fff3cd8c}.stmt td.wrap{white-space:normal;max-width:28rem}.etl-log{margin:0;max-height:420px;overflow:auto;white-space:pre-wrap;font-size:13px;line-height:1.45;color:#1d1d1f}@media(max-width:1100px){.kpi-grid-5{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.kpi-grid,.kpi-grid-5,.kpi-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
