:root{--accent: #F2786A;--accent-strong: #E0604F;--accent-soft: #FDE7E3;--mint: #BFE3D0;--mint-strong: #3F8F6B;--bg: #FAFAF8;--surface: #FFFFFF;--fg: #2B2B2E;--muted: #8A8A92;--border: #ECECE8;--danger: #D92D20;--cat-proteina: #F6B8B0;--cat-verduras: #B5E0B0;--cat-frutas: #FBD3A0;--cat-hidratos: #F5E3A0;--cat-despensa: #D9C4A8;--cat-limpieza: #A9D8EE;--cat-higiene: #CDBCEB;--cat-otro: #D3D3D8;--radius: 1rem;--radius-sm: .75rem;--shadow: 0 2px 12px rgba(40, 30, 30, .07);--space-1: .5rem;--space-2: .75rem;--space-3: 1rem;--space-4: 1.5rem;--tap: 3rem;--tabbar-h: 4rem;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{margin:0;background:var(--bg);color:var(--fg)}h1,h2,p{margin:0}h1{font-size:1.5rem}h2{font-size:1.25rem}.screen{min-height:100dvh;padding:calc(var(--space-3) + env(safe-area-inset-top)) calc(var(--space-3) + env(safe-area-inset-right)) calc(var(--space-3) + env(safe-area-inset-bottom)) calc(var(--space-3) + env(safe-area-inset-left))}.center{display:grid;place-items:center}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-4)}form.card{display:grid;gap:var(--space-2);width:100%;max-width:22rem}form.card h1{text-align:center;margin-bottom:var(--space-1)}input,button{font:inherit;min-height:var(--tap);padding:0 var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:inherit}input{font-size:1rem}input:focus-visible{outline:2px solid var(--mint-strong);outline-offset:1px}button{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;cursor:pointer}button:active{background:var(--accent-strong)}button:disabled{opacity:.6}button.secondary{background:var(--surface);color:var(--fg);border-color:var(--border)}.error{color:var(--danger);font-size:.9rem}.app-main{padding:calc(var(--space-3) + env(safe-area-inset-top)) calc(var(--space-3) + env(safe-area-inset-right)) calc(var(--tabbar-h) + var(--space-3) + env(safe-area-inset-bottom)) calc(var(--space-3) + env(safe-area-inset-left))}.section{display:grid;gap:var(--space-2)}.section .card p{color:var(--muted);margin-top:var(--space-1)}.badge{display:inline-block;margin-top:var(--space-2);padding:.25rem .75rem;border-radius:999px;background:var(--mint);color:#1f5a41;font-size:.85rem;font-weight:600}.tabbar{position:fixed;inset:auto 0 0;z-index:10;display:grid;grid-template-columns:repeat(4,1fr) 3.25rem;padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -2px 12px #281e1e0d}.tabbar a{display:grid;justify-items:center;align-content:center;gap:.15rem;min-height:var(--tabbar-h);color:var(--muted);font-size:.7rem;font-weight:600;text-decoration:none}.tabbar a svg{width:1.5rem;height:1.5rem}.tabbar a[aria-current=page]{color:var(--accent-strong)}.tabbar a[aria-current=page] svg{background:var(--accent-soft);border-radius:.6rem;padding:.2rem;width:2.25rem;height:1.75rem}.muted{color:var(--muted)}.app-main>.section+.section{margin-top:var(--space-4)}.app-main>.error{margin-bottom:var(--space-2)}.group{--cat: var(--cat-otro);display:grid;gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius);background:color-mix(in srgb,var(--cat) 22%,var(--surface))}.group+.group{margin-top:var(--space-3)}.group h3{margin:0;padding:.35rem var(--space-2);border-radius:var(--radius-sm);background:var(--cat);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--fg)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.shop-go{min-height:2.5rem;background:var(--mint-strong);border-color:var(--mint-strong)}.shop-go:active{background:#2f7556}.bolsa{border:2px dashed transparent;border-radius:var(--radius);padding:var(--space-1);margin:calc(var(--space-1) * -1);transition:background .15s,border-color .15s}.app-main>.section.bolsa{margin-top:var(--space-3)}.bolsa.target{border-color:var(--mint-strong);background:color-mix(in srgb,var(--mint) 20%,transparent)}.bolsa.target.over{background:color-mix(in srgb,var(--mint) 55%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mint-strong) 35%,transparent)}.lista-zone{display:grid;padding:var(--space-1);margin:calc(var(--space-1) * -1);border-radius:var(--radius);border:2px dashed transparent;min-height:3rem}.lista-zone.over{border-color:var(--mint-strong);background:color-mix(in srgb,var(--mint) 25%,transparent)}.items{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-1)}.item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-1) 0 var(--space-3);background:var(--surface);border-radius:var(--radius-sm);border-left:.4rem solid var(--cat, var(--border));box-shadow:var(--shadow);touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.item.dragging{opacity:.5;position:relative;z-index:5}.item-name{overflow-wrap:anywhere}.icon-btn{flex:none;width:2.5rem;min-height:2.5rem;padding:0;background:transparent;border-color:transparent;color:var(--muted);font-size:1rem}.icon-btn:active{background:var(--accent-soft);color:var(--accent-strong)}.chips{display:flex;flex-wrap:wrap;gap:var(--space-1)}.chip{min-height:2.5rem;padding:0 var(--space-3);border-radius:999px;background:var(--surface);border:2px solid var(--cat, var(--border));color:var(--fg);font-weight:500;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.chip:active{background:var(--accent-soft)}.chip.dim{opacity:.4;cursor:default}.chip.dim:active{background:var(--surface)}.chip.dragging{opacity:.3}.chip.overlay-chip{display:inline-flex;align-items:center;background:var(--cat);color:var(--fg);box-shadow:var(--shadow)}.chip.pick.on{background:var(--cat, var(--accent-soft));font-weight:700}.shop-mode{position:fixed;inset:0;z-index:30;display:grid;grid-template-rows:auto 1fr auto;background:var(--bg)}.shop-top,.shop-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:calc(var(--space-2) + env(safe-area-inset-top)) calc(var(--space-3) + env(safe-area-inset-right)) var(--space-2) calc(var(--space-3) + env(safe-area-inset-left));background:var(--surface);border-bottom:1px solid var(--border)}.shop-bottom{padding:var(--space-2) calc(var(--space-3) + env(safe-area-inset-right)) calc(var(--space-2) + env(safe-area-inset-bottom)) calc(var(--space-3) + env(safe-area-inset-left));border-bottom:0;border-top:1px solid var(--border)}.shop-bottom button{flex:1;min-height:3.5rem;font-size:1.1rem}.shop-progress{font-size:1.5rem}.shop-body{overflow-y:auto;padding:var(--space-3) calc(var(--space-3) + env(safe-area-inset-right)) var(--space-3) calc(var(--space-3) + env(safe-area-inset-left))}.shop-card{width:100%;min-height:4.5rem;padding:0 var(--space-3);border:0;border-left:.6rem solid var(--cat);border-radius:var(--radius-sm);background:var(--surface);color:var(--fg);box-shadow:var(--shadow);font-size:1.3rem;font-weight:600;text-align:left;overflow-wrap:anywhere}.shop-card:active{background:color-mix(in srgb,var(--cat) 30%,var(--surface))}.shop-card.done{opacity:.5;text-decoration:line-through;background:color-mix(in srgb,var(--cat) 15%,var(--surface))}.shop-error{position:fixed;z-index:40;top:0;left:0;right:0;padding:var(--space-1) var(--space-3);background:var(--surface)}.overlay.shop-dialog{z-index:50}.fab{position:fixed;z-index:11;right:calc(var(--space-3) + env(safe-area-inset-right));bottom:calc(var(--tabbar-h) + var(--space-3) + env(safe-area-inset-bottom));width:3.5rem;height:3.5rem;padding:0;border-radius:50%;font-size:1.75rem;line-height:1;box-shadow:0 4px 16px #e0604f66}.overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:var(--space-3);background:#2b2b2e66}.dialog{display:grid;gap:var(--space-2);width:100%;max-width:22rem}.dialog h3{margin:0;font-size:1.1rem}.dialog p{color:var(--muted)}button.danger{background:var(--danger);border-color:var(--danger)}.sheet-overlay{place-items:end center;padding:0}.sheet{display:grid;gap:var(--space-2);width:100%;max-width:32rem;padding:var(--space-4) calc(var(--space-3) + env(safe-area-inset-right)) calc(var(--space-3) + env(safe-area-inset-bottom)) calc(var(--space-3) + env(safe-area-inset-left));background:var(--surface);border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 -4px 24px #281e1e26;animation:sheet-up .2s ease-out}.sheet h3{margin:0;font-size:1.1rem}.check{display:flex;align-items:center;gap:var(--space-2);min-height:var(--tap)}.check input{width:1.4rem;min-height:1.4rem;height:1.4rem;padding:0;accent-color:var(--accent)}@keyframes sheet-up{0%{transform:translateY(100%)}}.add-row{display:flex;gap:var(--space-1)}.add-row input{flex:1;min-width:0}.add-row button{flex:none;width:var(--tap);padding:0;font-size:1.5rem;line-height:1}.item-text{display:grid;gap:.1rem;padding:.5rem 0;min-width:0}.item-by{font-size:.75rem;color:var(--muted)}:root{--gasto: #C9514A;--gasto-soft: #F6B8B0;--ingreso: #3F8F6B;--ingreso-soft: #BFE3D0}.fin-panel{display:grid;gap:var(--space-2);margin-top:var(--space-4)}.fin-panel+.section{margin-top:var(--space-4)}.kpis{display:flex;gap:var(--space-2);overflow-x:auto;scroll-snap-type:x proximity;padding:2px 2px var(--space-1);margin:0 calc(-1 * var(--space-3));padding-inline:var(--space-3);scrollbar-width:none}.kpis::-webkit-scrollbar{display:none}.kpi{flex:none;width:9.5rem;display:grid;gap:.25rem;padding:var(--space-3);scroll-snap-align:start;align-content:start}.kpi small{color:var(--muted);font-size:.75rem}.kpi strong{font-size:1.3rem}.kpi-sub{font-size:.75rem;color:var(--muted)}.kpi-sub.good{color:var(--ingreso)}.kpi-sub.bad{color:var(--gasto)}.fold{padding:0}.fold-head{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--tap);padding:var(--space-2) var(--space-3);background:none;border:0;color:var(--fg);text-align:left}.fold-head:active{background:none}.fold-head h3{margin:0;font-size:1rem}.fold-chev{font-size:1.3rem;color:var(--muted);transition:transform .25s}.fold[data-open=false] .fold-chev{transform:rotate(-90deg)}.fold-collapse{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s ease,visibility .3s}.fold[data-open=false] .fold-collapse{grid-template-rows:0fr;visibility:hidden}.fold-inner{overflow:hidden;min-height:0;display:grid;gap:var(--space-2);padding:0 var(--space-3)}.fold[data-open=true] .fold-inner{padding-bottom:var(--space-3)}.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--space-3));padding:0 var(--space-3)}.chips.scroll::-webkit-scrollbar{display:none}.chips.scroll .chip{flex:none}.seg{display:inline-flex;justify-self:start;padding:3px;border-radius:999px;background:var(--bg);border:1px solid var(--border)}.seg button{min-height:2.25rem;padding:0 var(--space-3);border:0;border-radius:999px;background:none;color:var(--muted)}.seg button.on{background:var(--accent-soft);color:var(--fg);font-weight:700}.ch-empty{color:var(--muted);text-align:center;padding:var(--space-3) 0}.ch-note{font-size:.85rem;color:var(--muted)}.ch-wrap{position:relative;display:grid;gap:var(--space-1)}.ch-wrap svg{width:100%;height:auto;display:block;touch-action:pan-y;overflow:visible}.ch-grid line{stroke:var(--border);stroke-width:1}.ch-grid line.zero{stroke:#cfcfd4}.ch-grid text,.ch-xl text{fill:var(--muted);font-size:9px}.ch-line{fill:none;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;animation:ch-draw .9s ease-out both}.ch-area{opacity:.12;animation:ch-fade .9s ease-out both}.ch-end{animation:ch-fade 1s both}.ch-pt{fill:var(--surface);stroke-width:2}.ch-cursor{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}.ch-band{fill:var(--accent-soft);opacity:.45}.ch-bar{transform-box:fill-box;transform-origin:center bottom;animation:ch-grow .6s cubic-bezier(.2,.8,.2,1) both}.ch-tip{position:absolute;top:0;transform:translate(-50%);display:grid;gap:.15rem;padding:.4rem .6rem;border-radius:var(--radius-sm);background:var(--surface);box-shadow:0 2px 14px #281e1e2e;font-size:.75rem;white-space:nowrap;pointer-events:none;z-index:1}.ch-tip span{display:flex;align-items:center;gap:.35rem}.ch-tip i,.ch-legend i,.ch-donut-legend i,.ch-stack-legend i{display:inline-block;flex:none;width:.65rem;height:.65rem;border-radius:50%}.ch-legend{display:flex;flex-wrap:wrap;gap:.25rem var(--space-3);list-style:none;margin:0;padding:0;font-size:.75rem;color:var(--muted)}.ch-legend li{display:flex;align-items:center;gap:.35rem}@keyframes ch-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes ch-fade{0%{opacity:0}}@keyframes ch-grow{0%{transform:scaleY(0)}}.ch-donut{display:grid;gap:var(--space-3);justify-items:center}.ch-donut-box{position:relative;width:min(13rem,70%)}.ch-donut-box svg{display:block;width:100%;transform:rotate(0)}.ch-track{fill:none;stroke:var(--bg);stroke-width:6}.ch-slice{fill:none;stroke-width:6;cursor:pointer;transition:opacity .2s;animation:ch-fade .6s both}.ch-slice.dim{opacity:.35}.ch-donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:.1rem;pointer-events:none;padding:22%}.ch-donut-center small{font-size:.7rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-donut-center strong{font-size:.95rem}.ch-donut-legend{list-style:none;margin:0;padding:0;width:100%;display:grid}.ch-donut-legend button{display:flex;align-items:center;gap:var(--space-1);width:100%;min-height:2.5rem;padding:0 var(--space-1);border:0;border-radius:var(--radius-sm);background:none;color:var(--fg);font-weight:400;text-align:left}.ch-donut-legend button.on{background:var(--bg);font-weight:700}.ch-donut-legend .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-donut-legend .pc{color:var(--muted);font-size:.8rem}.ch-donut-legend .vl{min-width:5rem;text-align:right;font-size:.9rem}.ch-stack{display:flex;height:2.25rem;border-radius:999px;overflow:hidden;background:var(--bg)}.ch-stack span{display:grid;place-items:center;font-size:.8rem;font-weight:700;transition:width .6s ease;animation:ch-stack-in .7s ease both}@keyframes ch-stack-in{0%{transform:scaleX(0);transform-origin:left}}.ch-stack-legend{list-style:none;margin:var(--space-2) 0 0;padding:0;display:grid;gap:.35rem}.ch-stack-legend li{display:flex;align-items:center;gap:var(--space-1)}.ch-stack-legend span{flex:1}.ch-stack-legend small{color:var(--muted);min-width:2.5rem;text-align:right}.top3{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3)}.top3 li{display:grid;gap:.35rem}.top-head{display:flex;align-items:center;gap:var(--space-1)}.top-head .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-rank{display:grid;place-items:center;flex:none;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--accent-soft);font-size:.8rem;font-weight:700}.delta{font-size:.75rem;font-weight:700}.delta.good{color:var(--ingreso)}.delta.bad{color:var(--gasto)}.top-track{position:relative;height:.6rem;border-radius:999px;background:var(--bg)}.top-fill{position:absolute;inset:0 auto 0 0;border-radius:999px;animation:ch-stack-in .7s ease both}.top-avg{position:absolute;top:-.2rem;bottom:-.2rem;width:2px;background:var(--fg);border-radius:1px}@media(prefers-reduced-motion:reduce){.ch-line,.ch-area,.ch-end,.ch-bar,.ch-slice,.ch-stack span,.top-fill{animation:none}.fold-collapse,.fold-chev{transition:none}}.month-nav{display:flex;align-items:center;justify-content:space-between}.month-nav .icon-btn{width:var(--tap);min-height:var(--tap);font-size:1.5rem}.month-label{font-size:1.1rem;text-transform:capitalize}.totals{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-1);padding:var(--space-3);text-align:center}.totals div{display:grid;gap:.15rem;min-width:0}.totals small{color:var(--muted);font-size:.75rem}.totals strong{font-size:1.05rem;overflow-wrap:anywhere}.gasto{color:var(--gasto)}.ingreso{color:var(--ingreso)}.big-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.big{min-height:3.5rem;font-size:1.1rem}.big.gasto-btn{background:var(--gasto);border-color:var(--gasto);color:#fff}.big.ingreso-btn{background:var(--ingreso);border-color:var(--ingreso);color:#fff}.big.aportar-btn{grid-column:1 / -1}.day{display:grid;gap:var(--space-1)}.day+.day{margin-top:var(--space-2)}.day h3{margin:0;font-size:.8rem;color:var(--muted);text-transform:capitalize}.item.mov.gasto{--cat: var(--gasto-soft)}.item.mov.ingreso{--cat: var(--ingreso-soft)}.item.mov .item-text{flex:1}.amt{flex:none;white-space:nowrap}.fijo-icon{color:var(--muted)}.quitar{flex:none;min-height:2.25rem;padding:0 var(--space-2);margin-right:var(--space-1)}.chip.new{border-style:dashed;color:var(--muted)}.sheet{max-height:92dvh;overflow-y:auto}.sheet input.amount{font-size:1.5rem;font-weight:600}.sheet input[type=date]{width:100%}.field{display:grid;gap:.25rem;font-size:.85rem;color:var(--muted)}.tab-logout{display:grid;place-items:center;min-height:var(--tabbar-h);padding:0;border:0;border-radius:0;background:none;color:var(--muted)}.tab-logout:active{background:none;color:var(--fg)}.tab-logout svg{width:1.25rem;height:1.25rem}.tag-work{margin-left:.4rem;padding:.05rem .45rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:.65rem;font-weight:700;vertical-align:middle}.switch{display:flex;align-items:center;gap:var(--space-2);min-height:var(--tap);color:var(--fg);font-weight:600}.switch input{appearance:none;position:relative;flex:none;width:2.75rem;height:1.6rem;margin:0;padding:0;border-radius:999px;border:0;background:var(--border);transition:background .2s}.switch input:after{content:"";position:absolute;top:.2rem;left:.2rem;width:1.2rem;height:1.2rem;border-radius:50%;background:var(--surface);box-shadow:var(--shadow);transition:transform .2s}.switch input:checked{background:var(--mint-strong)}.switch input:checked:after{transform:translate(1.15rem)}.work-kpis{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.work-kpi{display:grid;gap:.3rem;padding:var(--space-3);min-width:0}.work-kpi.main{grid-column:1 / -1}.work-kpi small{color:var(--muted);font-size:.8rem}.work-kpi strong{font-size:1.5rem;overflow-wrap:anywhere}.work-kpi.main:first-child strong{font-size:2.2rem}.work-kpi .kpi-sub{font-size:.8rem;color:var(--muted)}.link-btn{justify-self:start;width:auto;min-height:0;padding:0;border:0;background:none;color:var(--muted);font-size:.85rem;text-decoration:underline}
