:root{--ink:#053f40;--muted:#698580;--mint:#16c5aa;--mint2:#6be5ad;--line:#e2ede8;--paper:#fff;--bg:#f5faf7;--soft:#e8f8f1;--red:#da6770;--shadow:0 15px 45px rgba(0,66,53,.065)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font:14px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}input,button,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}a{color:#088a78}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #80e7cf;outline-offset:2px}h1,h2,h3,p{margin-top:0}h1{font-size:29px;letter-spacing:-1.2px}h2{font-size:22px;letter-spacing:-.6px}h3{font-size:16px}.small{font-size:12px}.muted{color:var(--muted)}.hidden{display:none!important}.shell{max-width:1260px;margin:auto;padding:28px 26px 100px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:23px}.brand{display:flex;gap:10px;align-items:center;color:var(--ink);text-decoration:none;font-size:25px;font-weight:900;letter-spacing:-1.4px}.brand img{width:48px;height:48px;object-fit:contain}.top-actions{display:flex;gap:8px;align-items:center}.tag{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;background:#e1f7ed;color:#12735d;font-size:11px;font-weight:800}.tag.warn{background:#fff0d9;color:#a46912}.tag.err{background:#ffeded;color:#b03d50}.pill{padding:8px 12px;border:1px solid var(--line);background:white;border-radius:20px;color:var(--ink)}.layout{display:grid;grid-template-columns:205px minmax(0,1fr);gap:22px}.sidebar{background:#fff;border:1px solid var(--line);padding:12px;border-radius:24px;align-self:start;position:sticky;top:16px;box-shadow:var(--shadow)}.nav{display:grid;gap:5px}.nav button{border:0;background:transparent;border-radius:13px;padding:13px;text-align:left;font-weight:700;color:#728b85;display:flex;gap:9px;align-items:center}.nav button.active,.nav button:hover{background:#e9faf1;color:#087865}.main{min-width:0}.view{display:none}.view.active{display:block}.heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:18px}.heading h1{margin:0}.heading p{margin:4px 0 0}.btn{border:0;border-radius:14px;padding:11px 17px;font-weight:800;min-height:42px}.btn.primary{background:linear-gradient(120deg,#11ad9f,#19caa8);color:white;box-shadow:0 8px 20px #17b69e35}.btn.light{background:var(--soft);color:#086f60}.btn.ghost{background:white;color:var(--ink);border:1px solid var(--line)}.btn.danger{background:#ffebeb;color:#a93f50}.btn.tiny{padding:6px 10px;min-height:32px;border-radius:10px;font-size:12px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}.card,.panel{background:white;border:1px solid var(--line);border-radius:23px;padding:22px;box-shadow:var(--shadow);min-width:0}.card{background:linear-gradient(160deg,#fff,#fafffc)}.card .k{font-weight:700;color:var(--muted);font-size:12px}.card .v{font-size:27px;font-weight:850;letter-spacing:-1px;overflow-wrap:anywhere}.card .v.inc{color:#0a9e80}.card .v.exp{color:#d06c6a}.panel+.panel{margin-top:15px}.split{display:grid;grid-template-columns:1.2fr .8fr;gap:15px}.bar-chart{display:grid;gap:11px}.bar-row{display:grid;grid-template-columns:110px 1fr 90px;gap:10px;align-items:center;font-size:12px}.bar-track{height:9px;background:#ebf4ee;border-radius:15px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#19bba7,#7addbb);border-radius:15px}.bar-fill.out{background:linear-gradient(90deg,#ff9876,#e9be76)}.stack{display:grid;gap:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.filters{display:flex;gap:9px;flex-wrap:wrap;align-items:end;margin-bottom:15px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field label{font-size:12px;font-weight:800;color:#607d75}.field input,.field select,.field textarea,.fileinput{width:100%;background:#fff;border:1px solid #d9e8e1;min-height:43px;padding:9px 12px;border-radius:12px;color:var(--ink);font-size:16px;outline:none}.field textarea{min-height:75px;resize:vertical}.field input[type=color]{padding:4px;width:75px}.field input[type=checkbox]{width:18px;min-height:auto}.filters .field{min-width:140px;flex:1}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.table-wrap{overflow:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:13px;text-align:left}th{font-size:11px;letter-spacing:.02em;color:#77918a;background:#f7fbf8}th,td{border-bottom:1px solid #edf2ee;padding:11px 8px;white-space:nowrap}td.detail-cell{white-space:normal;min-width:145px;max-width:260px}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.sum{font-weight:850}.sum.pos{color:#079b7d}.sum.neg{color:#d16768}.empty{padding:25px;background:#f6fbf8;text-align:center;border-radius:15px;color:#7c948d}.idchip{background:#edf6f1;border-radius:8px;padding:3px 7px;font-weight:800;color:#3c7467}.modal-backdrop{position:fixed;inset:0;background:#002d2e77;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto}.modal{background:#fff;max-width:600px;width:100%;max-height:94vh;overflow:auto;border-radius:25px;padding:24px;box-shadow:0 30px 100px #0003}.modal.wide{max-width:850px}.modal h2{margin:0 0 6px}.modalhead{display:flex;align-items:center;justify-content:space-between;gap:12px}.iconbtn{border:0;background:var(--soft);border-radius:12px;width:38px;height:38px}.actions{display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap;margin-top:20px}.notice{padding:12px;border-radius:14px;background:#ecfaf1;border:1px solid #d4f4e3;color:#17665b;margin:13px 0}.notice.warn{background:#fff5e3;border-color:#f6dfb8;color:#976615}.notice.error{background:#fff0f1;border-color:#ffd3d5;color:#a73850}.toast{position:fixed;z-index:100;bottom:26px;left:50%;transform:translateX(-50%);background:#063f3f;color:#fff;border-radius:15px;padding:13px 19px;box-shadow:0 12px 35px #0002;max-width:92vw}.auth-bg{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 10%,#d5fae8,transparent 50%),radial-gradient(circle at 100% 90%,#d9fcf4,transparent 45%),#f8fcf9}.auth-card{max-width:450px;width:100%;padding:30px;border-radius:29px;background:white;border:1px solid #e2eee9;box-shadow:0 25px 90px #007e5730}.auth-brand{display:flex;align-items:center;gap:10px;font-size:28px;font-weight:900;letter-spacing:-1px;justify-content:center;margin-bottom:20px}.auth-brand img{width:65px;height:65px}.auth-card h2{text-align:center}.auth-card .field{margin-top:10px}.auth-card .btn{width:100%;margin-top:15px}.auth-links{display:flex;justify-content:space-between;gap:10px;margin-top:16px}.auth-links button{background:none;border:0;color:#078d7b;font-weight:700}.footer{color:#8aa49a;text-align:center;font-size:12px;padding:22px}.mobile-nav{display:none}.statlist{display:grid;gap:8px}.statrow{display:flex;justify-content:space-between;gap:10px;padding:10px;border-bottom:1px solid var(--line)}.currency{white-space:nowrap}.dot{width:9px;height:9px;background:#19c5aa;border-radius:50%;display:inline-block}.csv-help{font-size:12px;color:#768d86;line-height:1.6;overflow-wrap:anywhere}.csv-help code{color:#0e7562}.pinpad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;max-width:240px;margin:18px auto}.pinpad button{border:1px solid #d7e7de;background:#f6fcf9;border-radius:15px;padding:15px;font-size:22px;font-weight:800}.pin-dots{text-align:center;font-size:25px;letter-spacing:7px;height:45px}.attention{color:#a15a32}.admin-banner{padding:11px 16px;background:#fff2dd;border-bottom:1px solid #f4ddac;text-align:center;color:#96610c}.pointer{cursor:pointer}.mono{font-family:ui-monospace,Consolas,monospace}.installed-only{display:none}.app-installed .installed-only{display:block}@media(max-width:850px){.shell{padding:20px 16px 110px}.layout{display:block}.sidebar{display:none}.mobile-nav{display:flex;justify-content:space-around;gap:3px;position:fixed;bottom:0;left:0;right:0;z-index:20;background:#ffffffed;backdrop-filter:blur(15px);padding:8px 7px max(9px,env(safe-area-inset-bottom));border-top:1px solid #e3eee8}.mobile-nav button{flex:1;min-width:0;background:none;border:0;color:#7b958a;font-size:11px;font-weight:750;padding:6px 3px;border-radius:11px}.mobile-nav button.active{background:#e9faef;color:#08765e}.mobile-nav button span{display:block;font-size:19px}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.cards .card:first-child{grid-column:1/-1}.split{grid-template-columns:1fr}.brand{font-size:20px}.brand img{width:39px;height:39px}}@media(max-width:520px){.cards{gap:8px}.card,.panel{padding:16px;border-radius:19px}.card .v{font-size:22px}.heading{flex-wrap:wrap}.heading h1{font-size:25px}.grid2,.grid3{grid-template-columns:1fr}.modal{padding:18px}.filters .field{min-width:115px}.topbar{align-items:flex-start}.top-actions{flex-direction:column;align-items:flex-end}th,td{padding:8px 6px}.bar-row{grid-template-columns:78px 1fr 74px}}

.full-logo{display:block;max-width:100%;height:auto}.auth-brand{display:flex;align-items:center;justify-content:center;margin-bottom:20px}.auth-brand-logo{width:min(270px,100%);height:auto;display:block}.brand{display:flex;align-items:center;gap:10px}.brand-logo{width:170px;max-width:42vw;height:auto;display:block}.brand.brand--full{font-size:0;line-height:0}.brand.brand--full img{width:170px;height:auto;object-fit:contain}.admin-login-logo{width:min(280px,100%);height:auto;display:block;margin:0 auto 12px}.brand-tag-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.topbar .brand-tag-wrap .tag{margin-left:2px}@media(max-width:850px){.brand.brand--full img,.brand-logo{width:145px}.auth-brand-logo{width:min(230px,100%)}}@media(max-width:520px){.brand.brand--full img,.brand-logo{width:130px}.admin-login-logo{width:min(220px,100%)}}

/* v1.0.4: widths consistent across all sections and screen modes */
html{scrollbar-gutter:stable}
.shell{width:100%;max-width:1260px;margin-inline:auto}
.layout,.main,.view{min-width:0;width:100%;box-sizing:border-box}
.layout{grid-template-columns:205px minmax(0,1fr);align-items:start}
.view{max-width:100%;overflow:visible}
.view>.panel,.view>.cards,.view>.split,.view>.filters{width:100%;max-width:100%;min-width:0}
.view .filters>*{min-width:0;flex:1 1 165px}
.view .table-wrap{width:100%;max-width:100%;min-width:0}
.topbar{min-height:68px}
.brand.brand--full{font-size:0;line-height:1;display:inline-flex;align-items:center;gap:8px}
.brand.brand--full .brand-mark{width:44px;height:46px;object-fit:contain}
.brand.brand--full .brand-wordmark{width:144px;height:auto;object-fit:contain}
.auth-brand-logo{width:min(205px,65vw);height:auto;object-fit:contain}
.admin-login-logo{width:min(220px,65vw)}
.toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:2000;min-width:200px;max-width:min(540px,calc(100vw - 32px));text-align:center;animation:ah-toast .18s ease-out;background:#063f3f;box-shadow:0 18px 50px #063f3f38}
.toast-error{background:#ac4352}
@keyframes ah-toast{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
.support-line{text-align:center;margin:15px 0 0;font-size:13px}
.support-line a,.footer a{color:#0b826f;text-decoration:none}
.support-line a:hover,.footer a:hover{text-decoration:underline}
@media(max-width:850px){.layout{display:block;width:100%}.topbar{min-height:64px}.brand.brand--full .brand-mark{width:35px;height:40px}.brand.brand--full .brand-wordmark{width:118px}}
@media(max-width:520px){html{scrollbar-gutter:auto}.view .filters>*{flex-basis:145px}.brand.brand--full .brand-wordmark{width:98px}.brand.brand--full .brand-mark{width:30px;height:34px}.topbar{gap:6px}}

/* Instalación PWA: sólo visible en /app y nunca en /web */
.ah-install-guide{position:fixed;inset:0;background:rgba(3,32,33,.68);z-index:150;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(8px)}
.ah-install-card{background:#fff;border-radius:26px;padding:25px;box-shadow:0 30px 90px rgba(0,34,30,.28);max-width:410px;width:100%;text-align:center}
.ah-install-logo{display:block;width:190px;height:auto;max-width:100%;margin:0 auto 12px}
.ah-install-card h2{font-size:23px;margin:5px 0 10px}.ah-install-card p{line-height:1.55}
/* Previene saltos de ancho al alternar secciones y aparecer/desaparecer barras */
html{scrollbar-gutter:stable}.shell{width:100%;max-width:1260px}.layout{grid-template-columns:205px minmax(0,1fr)}.main{width:100%;min-width:0}.view{width:100%;min-width:0}.view .panel{min-width:0}
@media(max-width:850px){html{scrollbar-gutter:auto}.layout{display:block}.main{width:100%}}


/* V1.0.7: progreso real de preparación offline, solo dentro de /app. */
.offline-download{display:grid;gap:7px;margin:12px 0 16px;max-width:430px}
.offline-download-track{height:7px;background:#e5f1ec;border-radius:99px;overflow:hidden}
.offline-download-track>div{width:0;height:100%;background:#14bfa8;border-radius:99px;transition:width .2s ease}

/* V1.0.8 - Dock: seis columnas reales, mismo tamaño y margen safe-area de iOS */
@media(max-width:850px){
 .mobile-nav{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr));gap:2px;align-items:stretch;justify-items:stretch;padding:8px max(6px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left));min-height:70px;box-sizing:border-box;overflow:hidden;}
 .mobile-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;width:100%;padding:7px 1px 6px;gap:4px;line-height:1.1;font-size:10px;letter-spacing:-.18px;border-radius:12px;white-space:nowrap;text-align:center;}
 .mobile-nav .nav-icon{height:23px;width:23px;flex:0 0 23px;display:block;}
 .mobile-nav .nav-label{display:block;font-size:10px;font-weight:750;min-width:0;width:100%;white-space:nowrap;overflow:hidden;text-overflow:clip;}
 .shell{padding-bottom:calc(122px + env(safe-area-inset-bottom,0px));}
 .toast{bottom:calc(94px + env(safe-area-inset-bottom,0px));}
}
@media(max-width:375px){.mobile-nav button{font-size:9px;letter-spacing:-.35px}.mobile-nav .nav-label{font-size:9px}.mobile-nav .nav-icon{width:21px;height:21px;flex-basis:21px}}
@media(min-width:851px){.toast{bottom:26px}}
/* Login admin: logotipo en dos piezas PNG originales de alta resolución */
.admin-logo-lockup{display:flex;align-items:center;flex-direction:column;gap:9px;margin:0 auto 20px;max-width:100%;}
.admin-logo-lockup .admin-logo-symbol{display:block;width:128px;height:128px;object-fit:contain;image-rendering:auto;}
.admin-logo-lockup .admin-logo-type{display:block;width:245px;max-width:100%;height:auto;object-fit:contain;image-rendering:auto;}
.admin-logo-lockup .tag{margin-top:6px}
/* Indicador persistente mientras se preparan los archivos offline */
.offline-prep-banner{position:fixed;bottom:calc(106px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);width:min(390px,calc(100vw - 26px));z-index:46;background:#ffffff;box-shadow:0 10px 35px rgba(0,61,56,.18);border:1px solid #c8ebe0;border-radius:17px;padding:12px 14px;color:#06554b;font-size:12px}
.offline-prep-header,.offline-prep-footer{display:flex;align-items:center;justify-content:space-between;gap:9px}
.offline-prep-header{font-size:12px;font-weight:800}
.offline-prep-track{height:7px;width:100%;background:#e4f1ed;overflow:hidden;border-radius:30px;margin:9px 0}
#offlinePrepFill{height:100%;width:0%;background:linear-gradient(90deg,#0f9989,#22d7b1);transition:width .23s ease}
#offlinePrepRetry{border:0;background:#e5f8f0;color:#096957;border-radius:9px;padding:6px 9px;font-weight:800;white-space:nowrap}
@media(min-width:851px){.offline-prep-banner{bottom:24px}}


/* Ahorrito V1.0.9 — consistent responsive language-ready design */
:root{--ink:#07464a;--mint:#0ebda8;--bg:#f4faf8;--line:#dcece7;--shadow:0 16px 45px rgba(8,74,70,.055)}
body{background:radial-gradient(ellipse at 70% -20%,#e2fbf1 0%,transparent 55%),var(--bg)}
.shell{max-width:1260px;width:100%;margin:0 auto;padding:25px clamp(15px,3vw,32px) 100px}.main{min-width:0;width:100%}.view{min-height:580px}.view>.panel,.view>.cards,.view>.split{max-width:100%}
.topbar{padding:12px 16px;background:#ffffffd9;border:1px solid #e1eee9;border-radius:21px;min-height:80px;box-shadow:0 8px 25px #0c5c4010}
.top-actions{flex-wrap:wrap;justify-content:flex-end;row-gap:7px}.sidebar{border-radius:22px}.nav button{border-radius:12px}.nav button.active{background:#d9f7ec;box-shadow:inset 3px 0 #0baf92;color:#096a60}.heading h1{font-size:clamp(24px,3vw,33px);letter-spacing:-1px}.cards .card:first-child{background:linear-gradient(133deg,#063e42 0%,#078c7b 60%,#18c6ac 100%);border:0;color:#fff;position:relative;overflow:hidden;min-height:144px}.cards .card:first-child:after{content:'';position:absolute;right:-50px;top:-55px;width:170px;height:170px;border:35px solid #ffffff17;border-radius:50%;pointer-events:none}.cards .card:first-child .k,.cards .card:first-child .v,.cards .card:first-child p{color:#fff!important}.cards .card:not(:first-child){background:#fff}.card,.panel{border-radius:21px;box-shadow:var(--shadow)}.btn.primary{background:linear-gradient(120deg,#008e82,#19c5ab);box-shadow:0 7px 18px #11b8a429}
.ah-language-control{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.ah-language-caption{font-size:12px;font-weight:750;color:#607f78}.ah-language-control select{background:#fff;border:1px solid #cce7de;border-radius:12px;color:#075f58;min-height:39px;min-width:155px;padding:7px 27px 7px 10px;font-size:13px;font-weight:750;max-width:100%}.ah-language-control.compact .ah-language-caption{display:none}.ah-language-control.compact select{min-width:118px;width:auto}.language-preference{margin:0 0 16px}.language-preference .ah-language-control select{min-width:240px}.settings-language-title{display:flex;justify-content:space-between;align-items:center;gap:14px}.language-globe{font-size:32px;background:#e6faf1;border-radius:15px;padding:12px}.auth-locale{display:flex;justify-content:center;margin:0 0 16px}.auth-locale .ah-language-control select{min-width:160px}.auth-bg{background:radial-gradient(circle at 85% 7%,#caf8e4,transparent 35%),radial-gradient(circle at -5% 92%,#ccf6eb,transparent 40%),#f6fcfa}.auth-card{border:1px solid #e0eee9;box-shadow:0 20px 65px #014c3e17}
.mobile-nav{box-shadow:0 -7px 22px #126c5019}.mobile-nav button{font-weight:750;min-width:0}.mobile-nav button .nav-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
[data-lang='zh-TW'] .mobile-nav button .nav-label{font-size:12px}[data-lang='zh-TW'] .heading h1{letter-spacing:0}[data-lang='zh-TW'] .nav button{letter-spacing:0}
.creator-credit{font-weight:800;color:#07826d}.public-locale{margin-left:auto}.public-nav{gap:12px}.public-nav nav{margin:auto}.public-landing .public-header{backdrop-filter:blur(24px);background:#ffffffed}
.public-orbit{position:absolute;pointer-events:none;border:2px solid #ffffffbb;border-radius:50%;opacity:.6}.public-orbit-a{width:160px;height:160px;right:14%;top:10%}.public-orbit-b{width:65px;height:65px;right:48%;top:24%}.hero{position:relative;isolation:isolate}.hero-art img{filter:drop-shadow(0 22px 24px #00a58d17)}.feature-card{transition:transform .18s ease,box-shadow .18s ease}.feature-card:hover{transform:translateY(-4px);box-shadow:0 20px 45px #03574e17}
@media(max-width:900px){.public-nav nav{gap:10px}.public-nav nav a{font-size:11px}.public-locale .ah-language-control select{min-width:110px}.top-language{display:none}.topbar{align-items:center}}
@media(max-width:640px){.public-nav{min-height:70px;flex-wrap:wrap;gap:8px}.public-nav nav{order:3;display:flex;width:100%;justify-content:space-around;padding:8px 0 11px}.public-nav nav a{font-size:11px}.public-nav>.public-btn{font-size:12px;padding:8px}.public-brand img:last-child{max-width:100px}.public-locale .ah-language-control select{width:110px;font-size:12px}.creator-credit{width:100%;text-align:center}.shell{padding-left:14px;padding-right:14px;padding-bottom:115px}.topbar{padding:10px;gap:5px}.top-actions{min-width:0}.top-actions .tag{max-width:130px;white-space:normal;line-height:1.15}.top-actions .pill{padding:7px}.heading{align-items:flex-start}.heading .btn{max-width:100%}.view>.split{display:grid;grid-template-columns:1fr}.mobile-nav{padding-left:4px;padding-right:4px}.mobile-nav button .nav-label{font-size:10px}}

.admin-languages-panel .heading{margin-bottom:12px}.language-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.language-stat{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:18px;border:1px solid #d9eee6;border-radius:16px;background:linear-gradient(145deg,#f4fcf7,#fff);gap:10px}.language-stat strong{font-size:26px;color:#058e7b}@media(max-width:650px){.language-stats{grid-template-columns:1fr}.language-stat{padding:11px 15px}}

/* Stable language picker and compact mobile navigation */
@media(max-width:380px){.mobile-nav .nav-label{font-size:9px}.ah-language-control.compact select{min-width:105px}.topbar .brand-mark{max-width:32px}.topbar .brand-wordmark{max-width:100px}}
