:root{--brand:#263b57;--brand-ink:#1b2a40;--brand-tint:#eef1ec;--accent:#c8862e;--accent-ink:#8f5f1b;--good:#2f9165;--good-bg:#e3f0e9;--warn:#c99a2e;--warn-bg:#f6eeda;--bad:#c34a3d;--bad-bg:#f5e4e2;--info:#3e6b8a;--info-bg:#e4edf1;--chart-1:var(--brand);--chart-2:var(--accent);--chart-3:var(--info);--chart-4:#5f8f68;--chart-5:#a35f3f;--chart-6:#7a6a99;--paper:#eef1ec;--surface:#fbfaf6;--surface-2:#f3f1e9;--field-bg:#fff;--ink:#16211d;--muted:#5b6b66;--line:#dad9cd;--r-sm:6px;--r-md:10px;--r-lg:16px;--serif:Georgia, "Iowan Old Style", "Source Serif Pro", "Palatino Linotype", serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Mono", "JetBrains Mono", Consolas, monospace;--shadow-sm:0 1px 2px #16211d0f, 0 1px 1px #16211d0a;--shadow-md:0 6px 20px #16211d1a}@media (prefers-color-scheme:dark){:root{--brand:#a9bedb;--brand-ink:#dce5f2;--brand-tint:#1b2735;--accent:#e0a24f;--accent-ink:#f4ce9b;--good:#5fbf8f;--good-bg:#163427;--warn:#e0b453;--warn-bg:#362a11;--bad:#e08277;--bad-bg:#3a2220;--info:#7faac7;--info-bg:#16232b;--chart-1:var(--brand);--chart-2:var(--accent);--chart-3:var(--info);--chart-4:#7fb08a;--chart-5:#c98a68;--chart-6:#a493c2;--paper:#131a18;--surface:#1b2320;--surface-2:#212a26;--field-bg:#232e29;--ink:#eaefeb;--muted:#9aaca5;--line:#313d37;--shadow-sm:0 1px 2px #0006;--shadow-md:0 10px 28px #00000073}}.ag-root-wrapper{--ag-background-color:var(--surface);--ag-foreground-color:var(--ink);--ag-border-color:var(--line);--ag-row-border-color:var(--line);--ag-header-background-color:var(--surface-2);--ag-header-foreground-color:var(--ink);--ag-odd-row-background-color:var(--surface-2);--ag-row-hover-color:var(--brand-tint);--ag-selected-row-background-color:var(--brand-tint);--ag-accent-color:var(--brand);--ag-font-family:var(--sans);--ag-border-radius:var(--r-md);--ag-font-size:10px;--ag-row-height:25px}.ag-root-wrapper .pill{font-size:10px}.ag-root-wrapper .ag-row.fila-anulada .ag-cell:not(.no-strike){text-decoration:line-through;-webkit-text-decoration-color:var(--muted);text-decoration-color:var(--muted)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow-x:hidden}body{font-family:var(--sans);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;background-image:linear-gradient(#eef1ecdb,#eef1ecdb),url(/fondo.webp);background-position:50%;background-size:cover;background-attachment:fixed;font-size:14px;line-height:1.5}a{color:inherit}button{font-family:inherit}h1,h2,h3{font-family:var(--serif);text-wrap:balance;margin:0;font-weight:600}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.print-header,.print-footer{display:none}@media print{.rail,.env-stripe,.topbar,.no-print{display:none!important}.shell{display:block}.main,.screen{max-width:none;padding:0;display:block}body{background:#fff}.card{box-shadow:none;break-inside:avoid;border:1px solid #000}table.lines{font-size:11.5px}.print-header{text-align:center;border-bottom:2px solid #000;margin-bottom:18px;padding-bottom:10px;display:block}.print-header .razon-social{font-family:var(--serif);text-transform:uppercase;font-size:16px;font-weight:700}.print-header .ruc{margin-top:2px;font-size:12px}.print-header .titulo{text-transform:uppercase;margin-top:10px;font-size:14px;font-weight:700}.print-header .periodo{margin-top:2px;font-size:12px}.print-header .moneda{color:#333;margin-top:2px;font-size:11px;font-style:italic}.print-footer{break-inside:avoid;justify-content:space-between;gap:40px;margin-top:60px;display:flex}.print-footer .firma{text-align:center;flex:1;font-size:11px}.print-footer .firma .linea{border-top:1px solid #000;margin-bottom:4px;padding-top:4px}.print-footer .firma .cargo{font-weight:700}.print-meta{color:#555;text-align:right;margin-top:6px;font-size:10px}}.shell{grid-template-columns:236px 1fr;min-height:100vh;display:grid}.nav-toggle-checkbox,.nav-toggle-btn{display:none}.rail-collapse-btn{z-index:30;border:1px solid var(--line);background:var(--surface);width:28px;height:28px;color:var(--brand);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0 0 2px;font-size:20px;font-weight:700;line-height:1;display:inline-flex;position:fixed;top:76px;left:222px;box-shadow:0 2px 8px #0000002e}.rail-collapse-btn:hover{background:var(--surface-2)}.shell.rail-collapsed .rail-collapse-btn{border-radius:0 var(--r-sm) var(--r-sm) 0;border-left:none;width:22px;height:40px;left:0}.shell.rail-collapsed{grid-template-columns:1fr}.shell.rail-collapsed .rail,.nav-overlay-bg,.nav-close-btn{display:none}@media (max-width:1024px){.rail-collapse-btn{display:none}.shell{grid-template-columns:1fr}.shell .rail{z-index:50;width:min(80vw,280px);display:none;position:fixed;inset:0 auto 0 0;overflow-y:auto;box-shadow:4px 0 24px #00000059}.shell:has(.nav-toggle-checkbox:checked) .rail{display:flex}.shell:has(.nav-toggle-checkbox:checked) .nav-close-btn{z-index:60;border:1px solid var(--line);background:var(--surface);width:28px;height:28px;color:var(--brand);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding-bottom:2px;font-size:20px;font-weight:700;line-height:1;display:inline-flex;position:fixed;top:76px;left:calc(min(80vw,280px) - 14px);box-shadow:0 2px 8px #00000040}.shell:has(.nav-toggle-checkbox:checked) .nav-overlay-bg{z-index:40;background:#00000073;display:block;position:fixed;inset:0}.nav-toggle-btn{border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);cursor:pointer;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:17px;display:inline-flex}}.rail{color:#edefea;background:linear-gradient(#1e2f47 0%,#16233a 100%);flex-direction:column;gap:22px;padding:20px 14px;display:flex}.brandmark{border-bottom:1px solid #ffffff17;align-items:center;gap:10px;padding:4px 6px 14px;display:flex}.brandmark .glyph{background:var(--accent);border-radius:9px;flex:none;width:32px;height:32px;overflow:hidden}.brandmark .glyph img{object-fit:cover;width:100%;height:100%}.brandmark .name{font-family:var(--serif);color:#fbfaf6;font-size:16.5px;font-weight:600;line-height:1.25}.brandmark .tag{color:#93a4b8;letter-spacing:.05em;margin-top:1px;font-size:10px}.nav{flex-direction:column;gap:1px;display:flex}.nav a{border-radius:var(--r-sm);color:#b7c2cf;border-left:2px solid #0000;align-items:center;gap:9px;padding:8px 10px;font-size:13px;font-weight:500;text-decoration:none;display:flex}.nav a svg{opacity:.8;flex:none;width:15px;height:15px}.nav a.active{color:#fbfaf6;border-left-color:var(--accent);background:#c8862e29;font-weight:600}.nav a.active svg{opacity:1;color:var(--accent)}.nav a:not(.active):hover{color:#edefea;background:#ffffff0d}.nav-group-label{cursor:pointer;border-radius:var(--r-sm);color:#b7c2cf;width:100%;font-family:var(--sans);background:0 0;border:none;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.nav-group-label:hover{background:#ffffff0d}.nav-group-label.depth-0{color:#d7deea;margin-top:6px;font-size:13px;font-weight:600}.nav-group-label.depth-0 .icon{align-items:center;gap:9px;display:flex}.nav-group-label.depth-0 svg{opacity:.85;flex:none;width:15px;height:15px}.nav-group-label .caret{opacity:.6;font-size:10px}.rail-foot{color:#8c99a6;font-variant-numeric:tabular-nums;border-top:1px solid #ffffff17;margin-top:auto;padding-top:14px;font-size:11px;line-height:1.5}.main{flex-direction:column;min-width:0;min-height:100vh;display:flex}.env-stripe{letter-spacing:.02em;color:#241704;background:repeating-linear-gradient(135deg, var(--warn-bg) 0 12px, #e7d9ae 12px 24px);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:7px 24px;font-size:12px;font-weight:600;display:flex}.env-stripe.prod{background:var(--good);color:#06301c}.env-stripe .dot{background:currentColor;border-radius:50%;width:7px;height:7px}.topbar{flex-wrap:wrap;align-items:center;gap:16px;padding:18px 28px 14px;display:flex}.topbar .sub{color:var(--muted);margin-top:3px;font-size:12.5px}.topbar .who{color:var(--muted);align-items:center;gap:10px;margin-left:auto;font-size:12.5px;display:flex}.avatar{background:var(--brand);width:30px;height:30px;color:var(--surface);font-size:12px;font-weight:700;font-family:var(--serif);border-radius:50%;justify-content:center;align-items:center;display:flex}.screen{flex-direction:column;gap:22px;max-width:980px;padding:24px 28px 60px;display:flex}.screen:has(.ag-root-wrapper){max-width:1080px}@media (max-width:560px){.screen{padding:16px 14px 40px}.topbar{padding:14px 14px 10px}}.kpi-row{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:start;gap:12px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:10px 14px}.kpi .label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.kpi .value{font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:2px;font-size:19px;font-weight:600;line-height:1.25}.kpi .delta{color:var(--good);margin-top:2px;font-size:11px}.kpi .delta.warn{color:var(--warn)}.kpi--accent{border-left:3px solid var(--kpi-tone,var(--brand));align-items:center;gap:10px;display:flex}.kpi-icon{background:var(--kpi-tone-bg,var(--brand-tint));width:26px;height:26px;color:var(--kpi-tone,var(--brand));border-radius:7px;flex:none;justify-content:center;align-items:center;display:flex}.kpi-icon svg{width:13px;height:13px}.kpi-body{flex:1;min-width:0}.section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px;font-size:13px;font-weight:700}.doc-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;display:grid}.doc-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;text-align:left;color:var(--ink);flex-direction:column;gap:8px;padding:14px;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.doc-card:hover{border-color:var(--accent);transform:translateY(-1px)}.doc-card.disabled{opacity:.5;cursor:default;pointer-events:none}.doc-card .icon{width:26px;height:26px;color:var(--brand)}.doc-card .t{font-size:13px;font-weight:700}.doc-card .d{color:var(--muted);font-size:11.5px}.action-btn{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;color:var(--ink);text-align:left;align-items:center;gap:10px;padding:14px;font-size:13px;font-weight:600;display:flex}.action-btn:hover{border-color:var(--brand)}.action-btn svg{width:18px;height:18px;color:var(--brand);flex:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:20px 22px}.inv-list{flex-direction:column;gap:8px;display:flex}.inv-row{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r-sm);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:11px 14px;display:flex}.inv-row.good{border-left-color:var(--good)}.inv-row.warn{border-left-color:var(--warn)}.inv-row.bad{border-left-color:var(--bad)}.inv-row .num{min-width:150px;font-size:12.5px}.inv-row .client{flex:1;min-width:0;font-size:13px}.inv-row .client .name{font-weight:600}.inv-row .client .meta{color:var(--muted);font-size:11.5px}.inv-row .amt{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}.empty-state{text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r-md);padding:30px 20px;font-size:13px}.pill{letter-spacing:.01em;white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-flex}.pill.good{background:var(--good-bg);color:var(--good)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.bad{background:var(--bad-bg);color:var(--bad)}.pill.info{background:var(--info-bg);color:var(--info)}.field{flex-direction:column;gap:5px;display:flex}.field label{color:var(--muted);font-size:11.5px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field-bg);color:var(--ink);min-height:40px;padding:9px 11px;font-family:inherit;font-size:13.5px}.field textarea{resize:vertical;line-height:1.35}.field input:focus,.field select:focus,.field textarea:focus,button:focus-visible,.doc-card:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.row{flex-wrap:wrap;gap:12px;display:flex}.row>*{flex:1;min-width:160px}table.lines{border-collapse:collapse;width:100%;font-size:13px}table.lines th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:0 8px 8px;font-size:11px;font-weight:600}table.lines td{border-top:1px solid var(--line);padding:8px}table.lines td.num,table.lines th.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}table.lines input,table.lines select{border:1px solid var(--line);background:var(--surface-2);width:100%;color:var(--ink);border-radius:5px;padding:6px 8px;font-family:inherit;font-size:13px}table.lines input.num-in{text-align:right;font-family:var(--mono)}.add-line{border:1px dashed var(--line);color:var(--muted);border-radius:var(--r-sm);cursor:pointer;background:0 0;align-self:flex-start;padding:7px 12px;font-size:12.5px}.add-line:hover{border-color:var(--brand);color:var(--brand)}.remove-line{color:var(--bad);cursor:pointer;background:0 0;border:none;padding:4px;font-size:12px}.totals{flex-direction:column;gap:6px;width:260px;margin-left:auto;font-size:13px;display:flex}.totals .line{justify-content:space-between;display:flex}.totals .line .v{font-family:var(--mono);font-variant-numeric:tabular-nums}.totals .total{border-top:1px solid var(--line);margin-top:4px;padding-top:8px;font-size:18px;font-weight:700}.totals.totals-compact{gap:0;width:200px;font-size:10px;line-height:1.3}.totals.totals-compact .total{margin-top:2px;padding-top:2px;font-size:10px}.btn{border-radius:var(--r-sm);cursor:pointer;border:none;align-items:center;gap:8px;padding:10px 18px;font-family:inherit;font-size:13.5px;font-weight:700;display:inline-flex}.btn-primary{background:var(--accent);color:#241704}.btn-primary:hover{filter:brightness(1.06)}.btn-ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.btn-ghost:hover{border-color:var(--brand)}.btn:disabled{opacity:.55;cursor:default}.progress-bar{align-items:center;gap:10px;display:flex}.progress-bar-track{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;flex:1;height:8px;overflow:hidden}.progress-bar-fill{background:var(--accent);height:100%;transition:width .2s}.progress-bar-label{color:var(--muted);white-space:nowrap;font-size:12.5px}.btn-confirm-final{background:var(--good);color:#fff;border-radius:var(--r-md,var(--r-sm));justify-content:center;width:100%;padding:16px 20px;font-size:15.5px;box-shadow:0 2px 10px -2px #2f916573}.btn-confirm-final:hover{filter:brightness(1.05)}.helper{color:var(--muted);font-size:11.5px}.form-error{background:var(--bad-bg);color:var(--bad);border-radius:var(--r-sm);padding:10px 13px;font-size:13px}.form-info{background:var(--info-bg);color:var(--info);border-radius:var(--r-sm);padding:10px 13px;font-size:13px}.confirm-hero{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:30px 0 6px;display:flex}.confirm-hero.bad .check{background:var(--bad-bg);color:var(--bad)}.confirm-hero .check{background:var(--good-bg);width:60px;height:60px;color:var(--good);border-radius:50%;justify-content:center;align-items:center;display:flex}.confirm-hero h2{color:var(--good);font-size:24px}.confirm-hero.bad h2{color:var(--bad)}.confirm-hero .sub{color:var(--muted);font-size:13px}.kv{background:var(--surface-2);border-radius:var(--r-sm);flex-direction:column;gap:4px;padding:12px 14px;display:flex}.kv .k{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.kv .vrow{align-items:center;gap:10px;display:flex}.kv .v{font-family:var(--mono);word-break:break-all;flex:1;font-size:12.5px}.copy-btn{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;flex:none;padding:4px 9px;font-size:11px}.copy-btn:hover{border-color:var(--brand);color:var(--brand)}.centered-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;max-width:400px;box-shadow:var(--shadow-sm);flex-direction:column;gap:16px;padding:34px 30px;display:flex}.auth-logo{justify-content:center;display:flex}.auth-logo img{box-shadow:var(--shadow-sm);border-radius:14px}.auth-title{font-size:26px}.auth-sub{color:var(--muted);margin:-8px 0 0;font-size:13.5px}.auth-switch{color:var(--muted);text-align:center;font-size:13px}.auth-switch button{color:var(--accent-ink);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}.form-compact .field{gap:3px}.form-compact .field label{font-size:10.5px;line-height:1.3}.form-compact .field input,.form-compact .field select{min-height:30px;padding:4px 8px;font-size:12.5px}.form-compact .btn{padding:6px 12px;font-size:12.5px}.factura-compacta,.factura-compacta *{font-size:10px!important}.factura-compacta input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.factura-compacta select{height:25px!important;min-height:25px!important;padding-top:2px!important;padding-bottom:2px!important}.factura-compacta button.add-line{min-height:25px!important;padding:1px 6px!important}