:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.48;color-scheme:dark;--bg:#0d1117;--rail:#121820;--panel:#19212a;--sub:#222d39;--border:#303e4d;--text:#f4f7f9;--muted:#a0b0be;--green:#4bdf9b;--yellow:#facc62;--red:#ff7b8d;--focus:#89e9be}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px}input,select,textarea{background:#101820;border:1px solid var(--border);color:var(--text);padding:12px 13px;border-radius:10px;max-width:100%;width:100%}a{color:var(--green)}.splash,.center{min-height:100vh;display:grid;place-items:center;padding:22px}.login{width:min(460px,100%);padding:30px;background:var(--panel);border:1px solid var(--border);border-radius:22px;box-shadow:0 24px 70px #0004}.brand{font-weight:900;letter-spacing:-.7px;font-size:22px}.brand b{color:var(--green)}.eyebrow{color:var(--green);font-size:10px;font-weight:800;letter-spacing:.19em;text-transform:uppercase}.login h1{font-size:27px;letter-spacing:-1px;margin:25px 0 9px}.subtle,.caption{color:var(--muted)}.caption{font-size:11px}.login p{line-height:1.6}.field{display:grid;gap:6px;margin:15px 0}.field label{font-size:12px;color:var(--muted);font-weight:700}.field input{min-height:44px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);border-radius:10px;background:var(--sub);color:var(--text);font-weight:700;min-height:40px;padding:10px 14px;transition:background .14s,border-color .14s}.btn:hover{border-color:var(--green)}.btn.primary{background:var(--green);color:#082017;border-color:transparent}.btn.danger{color:var(--red)}.btn.wide{width:100%}.hint{background:#262e21;border:1px solid #526144;border-radius:12px;padding:12px;color:#d5e6bd;font-size:12px;line-height:1.65;margin:14px 0}.error{background:#42252d;border:1px solid #854352;color:#ffccd6;padding:12px;border-radius:10px;line-height:1.5}.shell{display:flex;min-height:100vh}.sidebar{width:222px;flex-shrink:0;background:var(--rail);border-right:1px solid var(--border);padding:23px 13px;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar .caption{margin:0 8px 28px}.group{margin-bottom:17px}.group-label{color:var(--muted);font-weight:700;font-size:10px;letter-spacing:.13em;text-transform:uppercase;margin:0 10px 8px}.navbtn{display:flex;align-items:center;gap:11px;border:0;background:transparent;color:var(--muted);width:100%;text-align:left;border-radius:10px;padding:12px;margin:1px 0}.navbtn span:first-child{font-size:18px;display:grid;place-items:center;width:23px}.navbtn.active,.navbtn:hover{background:var(--sub);color:var(--green)}.main{flex:1;min-width:0;max-width:1600px;margin:0 auto;padding:28px 33px 60px}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:21px}.top h1{font-size:27px;letter-spacing:-1px;margin:4px 0}.topactions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grid{display:grid;gap:12px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin:15px 0}.stat,.panel{border:1px solid var(--border);background:var(--panel);border-radius:16px;padding:20px;min-width:0}.stat label{color:var(--muted);display:block;font-size:11px;margin-bottom:8px}.stat strong{font-size:clamp(18px,2.5vw,27px);line-height:1.2;letter-spacing:-.5px;display:block;overflow-wrap:anywhere}.stat small{display:block;color:var(--muted);margin-top:7px}.green{color:var(--green)!important}.red{color:var(--red)!important}.yellow{color:var(--yellow)!important}.cols{display:grid;grid-template-columns:1.1fr 1fr;gap:12px}.panel h2{font-size:16px;margin:0 0 14px}.panel h3{font-size:14px}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.row.wrap{flex-wrap:wrap}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:15px 0}.tablewrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;min-width:650px}.table th{text-align:left;color:var(--muted);font-size:11px;padding:11px 10px;border-bottom:1px solid var(--border)}.table td{padding:12px 10px;font-size:12px;border-bottom:1px solid var(--border)}.table tr:last-child td{border:0}.table .actions{display:flex;gap:7px;justify-content:flex-end}.tag{border-radius:30px;background:var(--sub);padding:5px 9px;display:inline-block;font-weight:750;font-size:10px}.tag.y{background:#463921;color:var(--yellow)}.tag.g{background:#1e4133;color:var(--green)}.avatar{width:39px;height:39px;border-radius:12px;background:#234336;color:var(--green);display:inline-grid;place-items:center;font-weight:850;flex:0 0 39px;object-fit:cover}.person{display:flex;align-items:center;gap:9px}.muted{color:var(--muted)}.stack{display:grid;gap:8px}.activity{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);justify-content:space-between}.activity:last-child{border:0}.activity>div{min-width:0}.activity small{color:var(--muted);display:block;font-size:11px;margin-top:3px}.empty{text-align:center;padding:30px;color:var(--muted)}.quick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.quick .btn{text-align:left;justify-content:flex-start;padding:16px}.fold{margin-top:14px;border:1px solid var(--border);border-radius:13px;overflow:hidden}.fold summary{padding:13px 18px;cursor:pointer;font-weight:700}.fold>div{padding:16px;border-top:1px solid var(--border)}.overlay{position:fixed;inset:0;background:#020408bb;display:grid;place-items:center;padding:15px;z-index:20}.dialog{background:var(--panel);border:1px solid var(--border);border-radius:19px;padding:25px;width:min(100%,640px);max-height:92vh;overflow:auto;box-shadow:0 24px 75px #0008}.dialog h2{margin:0 0 12px;font-size:21px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:7px 14px}.formgrid .full{grid-column:1/-1}.dialogfooter{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;flex-wrap:wrap}.menu-toggle{display:none}.notice{padding:12px;background:var(--sub);border:1px solid var(--border);border-radius:12px;font-size:12px;color:var(--muted);line-height:1.6}.login .notice{margin:14px 0}.dots{display:grid;gap:4px}.dots small{color:var(--muted)}.preview-data{background:var(--sub);border:1px solid var(--border);border-radius:12px;padding:13px}.dangerzone{border-color:#854052}.split{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.copyright{color:var(--muted);font-size:10px;margin-top:22px}.sidebar-backdrop{display:none}.hidden{display:none!important}@media(max-width:1120px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.quick{grid-template-columns:repeat(2,minmax(0,1fr))}.cols{grid-template-columns:1fr}}@media(max-width:780px){.menu-toggle{display:inline-flex}.sidebar{position:fixed;inset:0 auto 0 0;height:100dvh;z-index:30;transform:translateX(-110%);transition:transform .16s;box-shadow:12px 0 40px #0007}.sidebar.open{transform:translateX(0)}.sidebar-backdrop.open{display:block;position:fixed;inset:0;background:#0008;z-index:29;border:0;width:100%}.main{padding:17px 14px 60px}.top{align-items:flex-start}.top h1{font-size:23px}.stats .stat{padding:15px}.stat strong{font-size:20px}}@media(max-width:450px){.formgrid{grid-template-columns:1fr}.formgrid .full{grid-column:auto}.quick .btn{padding:12px}.topactions .label-long{display:none}.stats .stat{padding:12px}.stats{gap:8px}.stat strong{font-size:19px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

/* Formularios financieros y teclado en pantallas pequeñas. */
.dialog{max-height:calc(100dvh - 32px);overflow:auto}
.formgrid>*{min-width:0}
.line-unit{max-width:110px;min-width:0;flex:0 1 110px}
.row .quantity{max-width:80px;flex:0 0 80px}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #69b6f5;outline-offset:3px}
@media(max-width:540px){.dialog .row{flex-wrap:wrap}.dialog .row>div{min-width:100%}.toolbar{flex-wrap:wrap}.dialog{max-height:calc(100dvh - 16px)}}

.finance-chart{display:flex;gap:15px;overflow:auto;padding:20px}.finance-chart>div{min-width:80px;flex:1}.finance-bars{display:flex;align-items:end;gap:5px;height:130px}.finance-bars i{display:block;flex:1;min-height:1px;background:#3dbb9a}.finance-bars i:nth-child(2){background:#e18c6c}.snapshot{white-space:pre-wrap;overflow-wrap:anywhere}
html[data-theme=light]{color-scheme:light;--bg:#edf2f7;--panel:#fff;--text:#172b3d;--muted:#476174;--line:#cfdae3}html[data-theme=light] body{background:#edf2f7;color:#172b3d}html[data-theme=light] .panel,html[data-theme=light] .stat,html[data-theme=light] .dialog,html[data-theme=light] .sidebar,html[data-theme=light] input,html[data-theme=light] select,html[data-theme=light] textarea{background:#fff;color:#172b3d;border-color:#cfdae3}
@media print{.sidebar,.topbar,button,.sidebar-backdrop,.toolbar{display:none!important}.content{margin:0;padding:0}.panel,.stat,.dialog{break-inside:avoid;background:#fff!important;color:#111!important}.overlay{position:static;background:#fff}.dialog{max-height:none;max-width:none}.snapshot{color:#111}}

input[type=checkbox]{width:auto;min-width:18px;min-height:18px}html[data-theme=light]{--rail:#f7fafc;--sub:#e6eef5;--border:#cbd8e2;--yellow:#835200;--green:#086943;--red:#b72041}html[data-theme=light] .topbar,html[data-theme=light] .btn,html[data-theme=light] .activity,html[data-theme=light] .row{color:var(--text)}

@media print{body:has(.dialog) .shell{display:none!important}body:has(.dialog){background:#fff;color:#111}.dialog{width:100%;border:0;padding:0;box-shadow:none}}

/* Etapa 3: categorías persistentes, lectura prioritaria y gráficos sin dependencias. */
.nav-category{margin:8px 0;border-bottom:1px solid var(--border);padding-bottom:8px}
.nav-category summary{display:flex;align-items:center;gap:10px;padding:12px 10px;cursor:pointer;font-weight:750;color:var(--text);list-style:none;min-height:44px}
.nav-category summary::-webkit-details-marker{display:none}
.nav-category svg,.navbtn svg{width:20px;height:20px;flex:0 0 20px}
.nav-category>div{padding-left:7px}.nav-chevron{margin-left:auto;color:var(--muted);transition:transform .15s}.nav-category[open] .nav-chevron{transform:rotate(180deg)}
.nav-category .navbtn{min-height:44px;padding:10px;font-size:12px}
.stage3-panel{margin-top:14px}.cols>.stage3-panel{margin-top:0}
.chart-scroll{overflow-x:auto}.line-chart{width:100%;min-width:440px;height:auto;display:block;margin-top:18px}
.line-chart text{fill:var(--muted);font-size:11px}.chart-grid{stroke:var(--border);stroke-width:1}
.chart-legend{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:12px;margin:12px 0}.chart-legend span{display:flex;align-items:center;gap:6px}.chart-legend i{width:9px;height:9px;border-radius:50%}
.center:has(#inviteSignup){gap:18px;padding:36px 16px}.center:has(#inviteSignup) .login{width:min(100%,440px)}
.table input[type=number]{min-width:76px}.toolbar input[type=search]{max-width:360px;flex:1;min-width:150px}
.nav-category summary:focus-visible,summary:focus-visible{outline:3px solid #69b6f5;outline-offset:2px}
@media(min-width:1440px){.sidebar{width:242px}.main{padding:32px 40px 60px}}
@media(max-width:780px){.btn{min-height:44px}.navbtn{min-height:44px}.stage3-panel{padding:16px}.line-chart{min-width:480px}.dialog{padding:20px}.tablewrap{overscroll-behavior-x:contain}}
@media print{.chart-scroll{overflow:visible}.line-chart{min-width:0}.line-chart text{fill:#333}.chart-legend{color:#333}.chart-grid{stroke:#ccc}details.fold,details:not(.nav-category){display:block}details:not([open])>*:not(summary){display:block}}

.btn svg{width:18px;height:18px;flex:0 0 18px}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif}

.center:has(.recovery-card){gap:16px;align-content:center;padding:32px 16px}.recovery-card{padding:20px 24px}.recovery-card summary{cursor:pointer;font-weight:700}.recovery-card p{font-size:12px;color:var(--muted)}


/* Vista previa exclusiva de Dirección; no altera Auth ni los permisos RLS. */
.role-mode{margin:18px 0 20px;padding:12px 9px;border:1px solid var(--border);background:var(--panel);border-radius:14px}
.role-mode .group-label{margin:0 2px 9px}
.role-options{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:var(--bg);border-radius:10px;padding:4px}
.role-option{min-width:0;min-height:42px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:12px;font-weight:750}
.role-option:hover{color:var(--text)}
.role-option.active{background:var(--green);color:#09251a}
.role-mode .caption{margin:8px 2px 0}
.preview-banner{background:var(--sub);border:1px solid var(--border);border-left:4px solid var(--green);border-radius:10px;padding:11px 15px;margin-bottom:16px;font-size:12px;font-weight:800;letter-spacing:.02em}
@media(max-width:780px){.role-option{min-height:44px}.role-mode{margin-top:13px}}
