:root{--bg:#f7f1e6;--card:#fffdf8;--ink:#2f261d;--muted:#5f564a;--line:#d9cdb9;--accent:#5b3d28;--accent-ink:#fff;--soft:#efe5d3;--plus:#2f6b3f;--danger:#8a2f2f;--focus:#1d4f91;--accent-hover:#4a3120;--input-bg:#fff;--input-line:#8f8068;--danger-bg:#8a2f2f;--danger-ink:#fff;--chart-1:#8a6b4f;--chart-2:#2f6b3f;--chart-3:#b5472f;--chart-in:#e6d8c0;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-size:100%}html[data-accent=sage]{--accent:#3f5f4a;--accent-hover:#334d3c;--chart-1:#5f7f6a}html[data-accent=slate]{--accent:#3d4f66;--accent-hover:#2f3f53;--chart-1:#5a6f8c}html[data-theme=dark]{--bg:#1b1713;--card:#252019;--ink:#f3ebde;--muted:#c9bdaa;--line:#4b4236;--soft:#332c24;--accent:#e8c9a4;--accent-ink:#2a1e12;--accent-hover:#f3dcc0;--plus:#86d39b;--danger:#ffa6a6;--danger-bg:#b3413f;--focus:#8ab6f5;--input-bg:#1f1b16;--input-line:#a09482;--chart-1:#d1a97e;--chart-2:#86d39b;--chart-3:#ff9a85;--chart-in:#5a4c3d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=dark][data-accent=sage]{--accent:#b3dcc0;--accent-hover:#cdebd7;--chart-1:#9fcfb0}html[data-theme=dark][data-accent=slate]{--accent:#b6cdee;--accent-hover:#d0e0f6;--chart-1:#9fbbe3}@media (prefers-color-scheme:dark){html[data-theme=auto]{--bg:#1b1713;--card:#252019;--ink:#f3ebde;--muted:#c9bdaa;--line:#4b4236;--soft:#332c24;--accent:#e8c9a4;--accent-ink:#2a1e12;--accent-hover:#f3dcc0;--plus:#86d39b;--danger:#ffa6a6;--danger-bg:#b3413f;--focus:#8ab6f5;--input-bg:#1f1b16;--input-line:#a09482;--chart-1:#d1a97e;--chart-2:#86d39b;--chart-3:#ff9a85;--chart-in:#5a4c3d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=auto][data-accent=sage]{--accent:#b3dcc0;--accent-hover:#cdebd7;--chart-1:#9fcfb0}html[data-theme=auto][data-accent=slate]{--accent:#b6cdee;--accent-hover:#d0e0f6;--chart-1:#9fbbe3}}html.text-large{font-size:120%}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);padding-bottom:env(safe-area-inset-bottom);margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Arial,sans-serif;font-size:1rem;line-height:1.5}h1{margin:0;font-size:1.5rem;line-height:1.2}h2{margin:1.6rem 0 .6rem;font-size:1.15rem}p{margin:.4rem 0}a{color:var(--accent)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.skip{background:var(--card);z-index:10;padding:.75rem;position:absolute;top:0;left:-999px}.skip:focus{top:.5rem;left:.5rem}.shell{max-width:46rem;margin:0 auto;padding:1rem 1rem 6rem}main{outline:none}.nav{z-index:5;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.nav a{text-align:center;min-height:48px;color:var(--muted);flex:1;padding:.85rem .1rem;font-size:.9rem;font-weight:600;text-decoration:none}.nav a[aria-current=page]{color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}@media (min-width:760px){.nav{background:0 0;border:0;gap:.5rem;margin-bottom:1rem;padding:0;position:static}.nav a{border-radius:.6rem;flex:none;padding:.6rem 1rem}.nav a[aria-current=page]{background:var(--soft);box-shadow:none}.shell{padding-bottom:3rem}}.top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.75rem;display:flex}.date{color:var(--muted);margin:0}.number-card{background:var(--card);border:1px solid var(--line);border-radius:1.1rem;margin:.75rem 0 1rem;padding:1.25rem 1.1rem 1.1rem}.label{color:var(--muted);margin:0;font-weight:600}.big{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:.1rem 0 .25rem;font-size:clamp(2.8rem,14vw,4.2rem);font-weight:700;line-height:1.1}.sub{color:var(--muted);margin:0 0 1rem}.chips{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.why{border-top:1px solid var(--line);margin-top:1rem;padding-top:.75rem}.why summary{cursor:pointer;align-items:center;min-height:44px;font-weight:600;display:flex}.calc{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:.5rem 0}.calc th{text-align:left;padding:.3rem .5rem .3rem 0;font-weight:400}.calc td{text-align:right;white-space:nowrap;padding:.3rem 0}.calc .total th,.calc .total td{border-top:1px solid var(--line);font-weight:700}.btn{font:inherit;border:1px solid var(--line);background:var(--card);min-width:44px;min-height:44px;color:var(--ink);cursor:pointer;border-radius:.7rem;justify-content:center;align-items:center;padding:.55rem 1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--soft)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.primary:hover{background:var(--accent-hover)}.btn.danger{background:var(--danger-bg);color:var(--danger-ink);border-color:var(--danger-bg)}.btn.large{width:100%;min-height:56px;font-size:1.15rem}.btn.small{padding:.35rem .8rem;font-size:.95rem}.btn.chip{border-radius:2rem}.btn-row{flex-wrap:wrap;gap:.6rem;margin:.6rem 0;display:flex}.banner{background:var(--soft);border:1px solid var(--line);border-radius:.9rem;margin:.75rem 0;padding:.8rem 1rem}.banner.soft{background:var(--card)}.banner .btn{margin-top:.4rem}.list,.plain{margin:.4rem 0;padding:0;list-style:none}.plain li{color:var(--muted);padding:.15rem 0}.row{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:.15rem .75rem;padding:.75rem 0;display:grid}.row.muted{color:var(--muted)}.row-title{overflow-wrap:anywhere;margin:0;font-weight:600}.row-sub{color:var(--muted);margin:0;font-size:.92rem}.note{color:var(--muted);font-weight:400}.amount{font-variant-numeric:tabular-nums;text-align:right;margin:0;font-weight:700}.amount.plus{color:var(--plus)}.row-actions{flex-wrap:wrap;grid-column:1/-1;gap:.5rem;display:flex}.tag{background:var(--soft);color:var(--muted);border-radius:.5rem;margin-left:.3rem;padding:.1rem .45rem;font-size:.78rem;font-weight:600}.empty{color:var(--muted);padding:.5rem 0}.hint{color:var(--muted);font-size:.92rem}.stat{font-variant-numeric:tabular-nums;margin:0;font-size:1.8rem;font-weight:700}.preview{margin-top:.75rem;font-weight:600}.dialog{border:1px solid var(--line);background:var(--card);width:min(30rem,100vw - 1.5rem);max-height:calc(100dvh - 1.5rem);color:var(--ink);border-radius:1rem;padding:1.25rem;overflow-y:auto}.dialog::backdrop{background:#2f261d80}.dialog h2{margin-top:0}.intro{color:var(--muted)}.field{margin:.8rem 0}.field label{margin-bottom:.25rem;font-weight:600;display:block}.field input[type=text],.field input[type=date],.field select,.field textarea{width:100%;font:inherit;border:1px solid var(--input-line);background:var(--input-bg);min-height:46px;color:var(--ink);border-radius:.6rem;padding:.5rem .7rem}.field-check label{align-items:center;gap:.6rem;min-height:44px;font-weight:400;display:flex}.field-check input{width:1.4rem;height:1.4rem}[aria-invalid=true]{box-shadow:0 0 0 2px #8a2f2f40;border-color:var(--danger)!important}.err{color:var(--danger);min-height:0;margin:.3rem 0 0;font-weight:600}.err:empty{display:none}.choice{border:1px solid var(--line);border-radius:.7rem;margin:.7rem 0;padding:.5rem .8rem .7rem}.choice legend{padding:0 .3rem;font-weight:600}.choice label{align-items:center;gap:.5rem;min-height:40px;display:flex}.dlg-foot{background:var(--card);border-top:1px solid var(--line);margin-top:.75rem;padding:.5rem 0 .25rem;position:sticky;bottom:-1.25rem}.dlg-foot .preview{margin:.2rem 0 0}.dlg-actions{margin:.4rem 0 0}[hidden]{display:none!important}#toast{left:.75rem;right:.75rem;bottom:calc(4.6rem + env(safe-area-inset-bottom));z-index:20;color:#fff;border:1px solid var(--line);background:#2f261d;border-radius:.8rem;justify-content:space-between;align-items:center;gap:.6rem;max-width:34rem;margin:0 auto;padding:.6rem .8rem;display:flex;position:fixed}#toast .btn{color:#fff;background:0 0;border-color:#cbbfa9}@media (min-width:760px){#toast{bottom:1.5rem}}@media (prefers-reduced-motion:no-preference){.btn{transition:background-color .15s}}@media (prefers-contrast:more){:root{--line:#6f6454;--muted:#3f372e}}.noscript{padding:1rem}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.defs{width:0;height:0;position:absolute;overflow:hidden}.hatch-bg{fill:var(--chart-3)}.hatch-line{stroke:var(--ink)}h3{margin:1.1rem 0 .4rem;font-size:1.02rem}.flat{margin:0 0 .25rem}.card{background:var(--card);border:1px solid var(--line);border-radius:1rem;margin:.75rem 0;padding:.8rem 1rem}.tiles{grid-template-columns:repeat(auto-fit,minmax(8.2rem,1fr));gap:.6rem;margin:.75rem 0;padding:0;display:grid}.tile{background:var(--card);border:1px solid var(--line);border-radius:.8rem;margin:0;padding:.55rem .8rem}.tile dt{color:var(--muted);font-size:.88rem}.tile dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.15rem;font-weight:700}.stat-line{margin:.4rem 0}.chart{background:var(--card);border:1px solid var(--line);border-radius:1rem;margin:1rem 0;padding:.8rem .9rem}.chart figcaption strong{display:block}.chart-sum{color:var(--muted);margin:.1rem 0 .5rem;font-size:.95rem;display:block}.svg{width:100%;height:auto;display:block}.axis,.lbl,.val{font-family:inherit;font-size:12px}.axis,.lbl{fill:var(--muted)}.val{fill:var(--ink);font-weight:600}.c-bar{fill:var(--chart-1)}.c-today{fill:var(--chart-2)}.c-over{fill:url(#hatch);stroke:var(--ink);stroke-width:1px}.c-in{fill:var(--chart-in);stroke:var(--ink);stroke-width:1px}.c-future{fill:var(--line)}.c-zero{fill:var(--muted)}.c-axis{stroke:var(--muted);stroke-width:1px}.c-line{stroke:var(--ink);stroke-width:1.3px}.c-cap{stroke:var(--ink);stroke-width:2.2px}.c-curve{stroke:var(--chart-1);stroke-width:2.6px}.c-dot{fill:var(--chart-2);stroke:var(--ink);stroke-width:1px}.p-track{fill:var(--soft)}.progress{grid-column:1/-1;width:100%;height:10px;margin-top:.35rem;display:block}.spark{flex:none;width:9.5rem;height:2.4rem}.spark-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.chart-table{margin-top:.5rem}.chart-table summary{cursor:pointer;align-items:center;min-height:44px;font-weight:600;display:flex}.chart-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.92rem}.chart-table th,.chart-table td{border-bottom:1px solid var(--line);text-align:left;padding:.3rem;font-weight:400}.chart-table thead th{font-weight:700}.chart-table td{text-align:right}.budgets .row{grid-template-columns:1fr}.quick{margin:.9rem 0 .4rem}.quick label{margin-bottom:.25rem;font-weight:600;display:block}.quick-row{gap:.5rem;display:flex}.quick-row input{min-width:0;font:inherit;border:1px solid var(--input-line);background:var(--input-bg);min-height:46px;color:var(--ink);border-radius:.6rem;flex:1;padding:.5rem .7rem}.fit{border-top:0;margin-top:.4rem;padding-top:0}.fit-out{margin:.3rem 0;font-weight:600}.dump{margin-top:1.5rem}.note-row{grid-template-columns:1fr auto}.note-check{overflow-wrap:anywhere;align-items:center;gap:.6rem;min-height:44px;display:flex}.note-check input{flex:none;width:1.35rem;height:1.35rem}.note-check .done{color:var(--muted);text-decoration:line-through}.cal-nav{align-items:center;gap:.5rem;margin:.5rem 0;display:flex}.cal-title{text-align:center;flex:1;margin:0;font-weight:700}.cal{table-layout:fixed;border-collapse:separate;border-spacing:2px;width:100%;margin:.5rem 0}.cal th{color:var(--muted);padding:.15rem 0;font-size:.8rem;font-weight:600}.cal td{vertical-align:top;height:3.6rem;padding:0}.cal-out{background:0 0}.cal-cell{border:1px solid var(--line);background:var(--card);width:100%;height:100%;min-height:3.6rem;color:var(--ink);font:inherit;cursor:pointer;border-radius:.5rem;flex-direction:column;align-items:flex-start;gap:1px;padding:.2rem .15rem;display:flex;overflow:hidden}.cal-cell.is-today{border:2px solid var(--accent)}.cal-cell.is-selected{background:var(--soft)}.cal-num{font-size:.85rem;font-weight:700;line-height:1.1}.cal-spent{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.66rem;line-height:1.1}.cal-marks{flex-wrap:wrap;gap:2px;display:flex}.mk{border:1px solid var(--ink);color:var(--ink);border-radius:.25rem;padding:0 .2rem;font-size:.58rem;font-weight:700;line-height:1.2;display:inline-block}.mk-pay{background:var(--ink);color:var(--card)}.mk-rem{border-style:dotted}@media (max-width:420px){.shell{padding-left:.75rem;padding-right:.75rem}}
