:root{--canvas:#090a0d;--card:#16181e;--raised:#1e212a;--sunken:#0a0b0e;--line:#262a34;--line-soft:#1c1f27;--edge:inset 0 1px 0 #ffffff0e;--lift:0 1px 2px #0006, 0 8px 24px -12px #0009;--ink:#f2f3f5;--ink-2:#a0a4ae;--ink-3:#6b7080;--accent:#8b5cf6;--accent-ink:#fff;--accent-soft:#8b5cf629;--accent-line:#8b5cf673;--good:#3ddc97;--warn:#f0b429;--bad:#f2555a;--good-soft:#3ddc9724;--warn-soft:#f0b42924;--bad-soft:#f2555a24;--c1:#3987e5;--c2:#d95926;--c3:#199e70;--c4:#c98500;--c5:#d55181;--c6:#008300;--c7:#9085e9;--c8:#e66767;--c-rest:#4a5060;--g-food:#e8a13c;--g-home:#3ddc97;--g-move:#4f9bf0;--g-fun:#d97ad3;--g-health:#f2555a;--g-shop:#a78bfa;--g-bills:#46c6d4;--g-in:#3ddc97;--g-flat:#7b8194;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, sans-serif;--num:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--r-sm:12px;--r:20px;--r-lg:28px;--gutter:16px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--tabbar:60px;--ease:cubic-bezier(.2, .8, .2, 1);--fast:.14s;--base:.26s;--slow:.62s;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:16px/1.45 var(--sans);color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--canvas:#f7f7f9;--card:#fff;--raised:#f1f2f5;--sunken:#ecedf1;--line:#e2e4ea;--line-soft:#eef0f4;--ink:#14161c;--ink-2:#565c69;--ink-3:#868c9a;--accent:#6d3ff0;--accent-soft:#6d3ff01a;--accent-line:#6d3ff059;--edge:inset 0 0 0 1px #11141c0f;--lift:0 1px 2px #11141c0d, 0 8px 22px -14px #11141c38;--good:#14956a;--warn:#b57a00;--bad:#d13438;--good-soft:#14956a1f;--warn-soft:#b57a001f;--bad-soft:#d134381f;--c1:#2a78d6;--c2:#eb6834;--c3:#1baf7a;--c4:#eda100;--c5:#e87ba4;--c6:#008300;--c7:#4a3aa7;--c8:#e34948;--c-rest:#9aa0ad;--g-food:#b8720c;--g-home:#14956a;--g-move:#2a6fd0;--g-fun:#b03fa8;--g-health:#d13438;--g-shop:#7c53e8;--g-bills:#0f8a97;--g-in:#14956a;--g-flat:#6b7280;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes grow{0%{opacity:.35;transform:scaleY(0)}to{opacity:1;transform:none}}*{box-sizing:border-box}html,body,#root{min-height:100svh;margin:0;padding:0}body{background:var(--canvas);overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.app{min-height:100svh;padding-bottom:calc(var(--tabbar) + var(--safe-b) + 28px);flex-direction:column;display:flex}.app:after{content:"";height:calc(var(--tabbar) + var(--safe-b) + 34px);background:linear-gradient(to bottom, transparent, var(--canvas) 62%);pointer-events:none;z-index:19;position:fixed;bottom:0;left:0;right:0}.screen>:first-child{--stagger:0s}.screen>:nth-child(2){--stagger:40ms}.screen>:nth-child(3){--stagger:80ms}.screen>:nth-child(4){--stagger:.12s}.screen>:nth-child(5){--stagger:.16s}.screen>:nth-child(6){--stagger:.2s}.screen>:nth-child(7){--stagger:.24s}.screen>:nth-child(8){--stagger:.28s}.screen>:nth-child(9){--stagger:.32s}.screen>:nth-child(n+10){--stagger:.36s}.screen{animation:fade-in var(--fast) var(--ease);padding:0 var(--gutter);padding-left:calc(var(--gutter) + var(--safe-l));padding-right:calc(var(--gutter) + var(--safe-r));flex:1;width:100%;max-width:720px;margin:0 auto}.screen-head{padding:calc(var(--safe-t) + 20px) 0 14px;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.screen-heading{align-items:center;gap:8px;display:flex}.step{background:var(--raised);width:32px;height:32px;color:var(--ink-2);cursor:pointer;border:0;border-radius:99px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.step:disabled{opacity:.35;cursor:default}.step{transition:transform var(--fast) var(--ease), background var(--fast) var(--ease)}.step:active:not(:disabled){transform:scale(.9)}.step svg{width:16px;height:16px}.screen-title{letter-spacing:-.03em;margin:0;font-size:1.65rem;font-weight:660}.screen-sub{color:var(--ink-3);margin:2px 0 0;font-size:.82rem}.card{background:var(--card);border-radius:var(--r);box-shadow:var(--edge), var(--lift);animation:rise var(--base) var(--ease) var(--stagger,0s) backwards;border:0;margin-bottom:12px;padding:18px}a.card{transition:transform .12s,background .12s;display:block}a.card:active{background:var(--raised);transform:scale(.985)}.card-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.card-head-main{align-items:center;gap:9px;min-width:0;display:flex}.card-title{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin:0;font-size:.75rem;font-weight:600}.hero{font-family:var(--num);letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin:0;font-size:clamp(2.4rem,13vw,3.4rem);font-weight:620;line-height:1.02}.hero-cents{color:var(--ink-3);letter-spacing:-.01em;font-size:.52em;font-weight:560}.hero-label{color:var(--ink-3);margin:0 0 6px;font-size:.78rem;font-weight:500}.hero-row{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.delta{font-family:var(--num);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:4px;font-size:.82rem;font-weight:600;display:inline-flex}.delta.up{color:var(--good)}.delta.down{color:var(--bad)}.delta.flat{color:var(--ink-3)}.delta svg{width:13px;height:13px}.tiles{border-top:1px solid var(--line-soft);grid-auto-columns:1fr;grid-auto-flow:column;margin:18px -18px -4px;padding:16px 6px 0;display:grid}.tile{border-right:1px solid var(--line-soft);text-align:center;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:0 6px;display:flex}.tile:last-child{border-right:0}.tile svg{width:15px;height:15px;color:var(--ink-3)}.tile-value{font-family:var(--num);font-variant-numeric:tabular-nums;letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.88rem;font-weight:620;overflow:hidden}.tile-label{color:var(--ink-3);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.62rem;overflow:hidden}.duo{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;display:grid}.duo>.card{margin-bottom:0}@media (width<=340px){.duo{grid-template-columns:1fr}}.glyph{background:var(--raised);background:color-mix(in srgb, currentColor 15%, transparent);border-radius:11px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.glyph svg{width:17px;height:17px}.glyph.is-small{border-radius:8px;width:24px;height:24px}.glyph.is-small svg{width:13px;height:13px}.num{font-family:var(--num);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.pos{color:var(--good)}.neg{color:var(--bad)}.dim{color:var(--ink-3)}.meter{background:var(--sunken);height:10px;animation:wipe var(--slow) var(--ease) var(--stagger,0s) backwards;border-radius:99px;display:flex;overflow:hidden}.meter-fill{border-radius:99px;min-width:3px;height:100%;transition:width .32s cubic-bezier(.2,.8,.2,1)}.meter-fill.is-good{background:var(--good)}.meter-fill.is-warn{background:var(--warn)}.meter-fill.is-bad{background:var(--bad)}.meter-projected{opacity:.55;background-image:repeating-linear-gradient(135deg,currentColor 0 3px,#0000 3px 6px);height:100%}.meter-legend{color:var(--ink-3);justify-content:space-between;margin-top:8px;font-size:.78rem;display:flex}.chip{white-space:nowrap;transition:transform var(--fast) var(--ease), background var(--fast) var(--ease);border:1px solid #0000;border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:.76rem;font-weight:560;display:inline-flex}.filters .chip:active,a.chip:active,button.chip:active{transform:scale(.94)}.chip.is-good{background:var(--good-soft);color:var(--good)}.chip.is-warn{background:var(--warn-soft);color:var(--warn)}.chip.is-bad{background:var(--bad-soft);color:var(--bad)}.chip.is-plain{background:var(--raised);color:var(--ink-2)}.filters{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.filters .chip{cursor:pointer;min-height:32px;font-family:inherit}.chip.is-on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--ink)}.dot{border-radius:3px;flex:none;width:9px;height:9px}.row{border-bottom:1px solid var(--line-soft);text-align:left;cursor:pointer;width:100%;transition:opacity var(--fast) var(--ease);background:0 0;border-top:0;border-left:0;border-right:0;align-items:center;gap:12px;padding:11px 0;display:flex}.row:active{opacity:.55}.row:last-child{border-bottom:0}.row-main{flex:1;min-width:0}.row-title{text-overflow:ellipsis;white-space:nowrap;font-size:.94rem;font-weight:520;overflow:hidden}.row-sub{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;overflow:hidden}.note-text{color:var(--ink-3);margin:0;font-size:.78rem;line-height:1.45}.row-amount{font-family:var(--num);font-variant-numeric:tabular-nums;flex:none;font-size:.94rem;font-weight:560}.day-label{z-index:2;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);background:linear-gradient(var(--canvas) 70%, transparent);padding:14px 0 6px;font-size:.74rem;font-weight:600;position:sticky;top:0}.tabbar{left:50%;bottom:calc(var(--safe-b) + 12px);z-index:20;width:calc(100% - 2 * var(--gutter) - var(--safe-l) - var(--safe-r));max-width:440px;height:var(--tabbar);background:var(--raised);box-shadow:var(--edge), 0 2px 6px #00000059, 0 14px 34px -10px #000000b3;border-radius:99px;padding:0 4px;display:flex;position:fixed;transform:translate(-50%)}.tab{color:var(--ink-3);letter-spacing:.02em;cursor:pointer;background:0 0;border:0;border-radius:99px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-height:44px;font-size:.62rem;font-weight:560;display:flex}.tab.is-active{color:var(--accent)}.tab svg{width:22px;height:22px;transition:transform var(--base) var(--ease)}.tab.is-active svg{transform:scale(1.08)}.tab:active svg{transform:scale(.88)}.tab-mark{border-radius:99px;justify-content:center;align-items:center;width:46px;height:28px;transition:background .14s;display:flex}.tab.is-active .tab-mark{background:var(--accent-soft)}.tab.is-primary .tab-mark{background:var(--accent);color:var(--accent-ink)}.btn{border-radius:var(--r-sm);background:var(--accent);min-height:48px;color:var(--accent-ink);cursor:pointer;width:100%;transition:transform var(--fast) var(--ease), opacity var(--fast) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:.95rem;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.is-quiet{background:var(--raised);color:var(--ink);border-color:var(--line)}.btn.is-danger{background:var(--bad-soft);color:var(--bad);border-color:#0000}.btn.is-inline{width:auto;min-height:38px;padding:0 14px;font-size:.85rem}.field{margin-bottom:14px}.label{color:var(--ink-3);margin-bottom:6px;font-size:.76rem;font-weight:560;display:block}.input{border-radius:var(--r-sm);border:1px solid var(--line);background:var(--raised);width:100%;min-height:48px;color:var(--ink);outline:none;padding:0 14px}.input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}.input::placeholder{color:var(--ink-3)}select.input{appearance:none}.check{cursor:pointer;align-items:flex-start;gap:11px;padding:4px 0;display:flex}.check input{width:20px;height:20px;accent-color:var(--accent);flex:none;margin:1px 0 0}.check-text{color:var(--ink);font-size:.9rem;line-height:1.35}.check-hint{color:var(--ink-3);margin-top:3px;font-size:.76rem;display:block}.amount{justify-content:center;align-items:center;gap:6px;padding:18px 0 6px;display:flex}.amount input{font-family:var(--num);letter-spacing:-.04em;color:var(--ink);text-align:center;font-variant-numeric:tabular-nums;background:0 0;border:0;outline:none;width:100%;max-width:8ch;padding:0;font-size:clamp(2.4rem,13vw,3.4rem);font-weight:620}.amount .sym{font-family:var(--num);color:var(--ink-3);font-size:clamp(1.5rem,8vw,2rem);font-weight:500}.suggest{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--raised);margin-top:-6px;margin-bottom:14px;overflow:hidden}.suggest button{border:0;border-bottom:1px solid var(--line-soft);cursor:pointer;text-align:left;background:0 0;justify-content:space-between;align-items:baseline;gap:10px;width:100%;padding:11px 14px;display:flex}.suggest button:last-child{border-bottom:0}.suggest .hint{color:var(--ink-3);flex:none;font-size:.72rem}.chart{width:100%;display:block;overflow:visible}.chart-stack{position:relative}.chart-pin{color:var(--ink-3);white-space:nowrap;pointer-events:none;padding-bottom:3px;font-size:10px;position:absolute;transform:translateY(-100%)}.chart-pin.is-warn{color:var(--warn)}.chart-pin.is-top{padding-top:2px;padding-bottom:0;transform:none}.chart .draw{stroke-dasharray:1;animation:draw var(--slow) var(--ease) var(--stagger,0s) backwards}.chart .fill-in{animation:fade-in var(--slow) var(--ease) calc(var(--stagger,0s) + .12s) backwards}.bar{transform-origin:bottom;animation:grow var(--base) var(--ease) backwards}.bar-track{animation:wipe var(--slow) var(--ease) var(--stagger,0s) backwards}.chart text{font-family:var(--sans);fill:var(--ink-3);font-size:10px}.chart .grid{stroke:var(--line-soft);stroke-width:1px}.chart .axis{stroke:var(--line);stroke-width:1px}.axis-label{text-align:center;min-width:0;color:var(--ink-3);white-space:nowrap;flex:1;font-size:.65rem}.legend{color:var(--ink-2);flex-wrap:wrap;gap:6px 14px;margin-top:12px;font-size:.78rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.empty{text-align:center;color:var(--ink-3);padding:40px 20px;font-size:.9rem}.error{background:var(--bad-soft);color:var(--bad);border-radius:var(--r-sm);margin-bottom:12px;padding:11px 14px;font-size:.85rem}.notice{background:var(--raised);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink-2);margin-bottom:12px;padding:11px 14px;font-size:.82rem}.skeleton{background:linear-gradient(90deg, var(--raised) 25%, var(--line) 37%, var(--raised) 63%);border-radius:var(--r-sm);background-size:400% 100%;animation:1.3s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.offline{left:50%;bottom:calc(var(--tabbar) + var(--safe-b) + 26px);z-index:30;background:var(--raised);border:1px solid var(--line);color:var(--ink-2);border-radius:99px;padding:7px 15px;font-size:.78rem;position:fixed;transform:translate(-50%);box-shadow:0 8px 24px #0006}.sheet-backdrop{z-index:40;animation:fade-in var(--fast) var(--ease);background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) 0 0;width:100%;max-width:560px;max-height:88svh;padding-bottom:var(--safe-b);animation:sheet-up var(--base) var(--ease);border-bottom:0;flex-direction:column;display:flex;box-shadow:0 -12px 40px #00000073}@keyframes sheet-up{0%{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}.sheet-head{padding:16px var(--gutter) 12px;border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-title{margin:0;font-size:1rem;font-weight:620}.sheet-close{border:1px solid var(--line);background:var(--raised);width:34px;height:34px;color:var(--ink-2);cursor:pointer;border-radius:99px;flex:none;line-height:1}.sheet-body{padding:14px var(--gutter);-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.sheet-foot{padding:12px var(--gutter) 16px;border-top:1px solid var(--line-soft);gap:8px;display:grid}.picker{border-radius:var(--r-sm);border:1px solid var(--line);background:var(--raised);width:100%;min-height:52px;color:var(--ink);text-align:left;cursor:pointer;align-items:center;gap:12px;padding:8px 14px;display:flex}.picker:focus-visible{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.picker-main{flex:1;min-width:0;display:grid}.picker-caret{color:var(--ink-3);flex:none;font-size:1.1rem}.picker-value{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:560;overflow:hidden}.picker-value.is-empty{color:var(--ink-3);font-weight:460}.picker-path{font-family:var(--num);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;overflow:hidden}.opt{align-items:center}.opt .row-main{display:grid}.opt.is-on .row-title{color:var(--accent)}.opt-count{font-family:var(--num);color:var(--ink-3);flex:none;font-size:.74rem}.group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:14px 0 2px;font-size:.7rem;font-weight:600}.flow{gap:6px;display:grid}.flow-leg,.flow-mid{grid-template-columns:34px 1fr;align-items:center;gap:10px;display:grid}.flow-tag{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-size:.68rem;font-weight:700}.flow-arrow{text-align:center;color:var(--ink-3);line-height:1}.flow-amount{font-family:var(--num);font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:.82rem;font-weight:560}.flow-say{margin-top:12px}.seg{background:var(--sunken);box-shadow:var(--edge);border:0;border-radius:99px;grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;margin-bottom:14px;padding:3px;display:grid}.seg button{min-height:36px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:99px;padding:0 6px;font-size:.82rem;font-weight:600;transition:background .14s,color .14s}.seg button.is-on{background:var(--raised);color:var(--ink);box-shadow:0 1px 3px #00000059}.seg.is-range{margin:14px 0 0}.journal-preview{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--sunken);font-family:var(--num);white-space:pre;-webkit-overflow-scrolling:touch;margin:0;padding:12px 14px;font-size:.78rem;line-height:1.65;overflow-x:auto}.say{margin:0;font-size:.95rem;line-height:1.5}.draft-row{grid-template-columns:2fr 1fr;gap:8px;margin-bottom:10px;display:grid}.draft-amount{text-align:right}
