:root{--brand-ink: #0d1117;--brand-lime: #b8ff3d;--brand-red: #e34948;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--t-2xs: 11px;--t-xs: 12px;--t-sm: 13px;--t-md: 15px;--t-lg: 17px;--t-xl: 20px;--t-2xl: 24px;--t-figure: clamp(36px, 11vw, 52px);--t-figure-sm: clamp(28px, 8.5vw, 38px);--w-normal: 400;--w-medium: 550;--w-semi: 620;--w-bold: 720;--track-tight: -.03em;--track-snug: -.012em;--track-normal: 0;--track-caps: .09em;--leading-tight: 1.1;--leading-snug: 1.35;--leading-normal: 1.55;--leading-loose: 1.7;--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 22px;--r-xl: 28px;--r-pill: 999px;--ease: cubic-bezier(.2, .8, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--z-sheet: 40;--z-scrim: 50;--z-tooltip: 60;--z-toast: 70;--z-zoom: 90;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}:root{color-scheme:light;--page: #f4f5f0;--surface: #ffffff;--surface-2: #eceee6;--surface-3: #e0e3d8;--text-primary: #11161c;--text-secondary: #5a636e;--text-muted: #8a929d;--text-on-ink: #e7edf5;--text-on-ink-muted: #9aa6b4;--line: rgba(17, 22, 28, .08);--line-strong: rgba(17, 22, 28, .16);--accent: #b8ff3d;--accent-ink: #0d1117;--accent-text: #4a7c0f;--accent-soft: rgba(184, 255, 61, .22);--up: #3e7a17;--down: #b3453f;--up-soft: rgba(62, 122, 23, .12);--down-soft: rgba(179, 69, 63, .1);--good: #3e7a17;--warning: #8a5a00;--critical: #c0271f;--warning-soft: rgba(138, 90, 0, .12);--critical-soft: rgba(192, 39, 31, .1);--ink: #0d1117;--ink-2: #1a212b;--grid: rgba(255, 255, 255, .09);--axis: rgba(255, 255, 255, .22);--lift-1: 0 1px 2px rgba(17, 22, 28, .05), 0 1px 1px rgba(17, 22, 28, .03);--lift-2: 0 2px 8px rgba(17, 22, 28, .07), 0 10px 24px -14px rgba(17, 22, 28, .22);--lift-3: 0 6px 16px rgba(17, 22, 28, .1), 0 24px 48px -24px rgba(17, 22, 28, .35);--ring: 0 0 0 2px var(--accent-text)}:root.theme-dark{color-scheme:dark;--page: #0d1117;--surface: #161b22;--surface-2: #212936;--surface-3: #2c3542;--text-primary: #e7edf5;--text-secondary: #9aa6b4;--text-muted: #6c7889;--text-on-ink: #e7edf5;--text-on-ink-muted: #9aa6b4;--line: rgba(231, 237, 245, .09);--line-strong: rgba(231, 237, 245, .18);--accent: #b8ff3d;--accent-ink: #0d1117;--accent-text: #b8ff3d;--accent-soft: rgba(184, 255, 61, .16);--up: #a9e85c;--down: #f0817c;--up-soft: rgba(169, 232, 92, .14);--down-soft: rgba(240, 129, 124, .14);--good: #a9e85c;--warning: #e3a800;--critical: #ff7a72;--warning-soft: rgba(227, 168, 0, .16);--critical-soft: rgba(255, 122, 114, .14);--ink: #080b0f;--ink-2: #131922;--grid: rgba(255, 255, 255, .08);--axis: rgba(255, 255, 255, .2);--lift-1: none;--lift-2: 0 2px 10px rgba(0, 0, 0, .45);--lift-3: 0 10px 34px rgba(0, 0, 0, .6);--ring: 0 0 0 2px var(--accent)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:var(--t-md);line-height:var(--leading-normal);background:var(--page);color:var(--text-primary);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit;margin:0}button{-webkit-appearance:none;-moz-appearance:none;appearance:none}h1,h2,h3,p{margin:0}.amount,.hero-figure,.answer-figure,.rank-value,.trail,.tile-value,.data-table td,.recon-value,.delta,.budget-foot,.coverage-line{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.sym{font-size:.54em;font-weight:var(--w-medium);letter-spacing:var(--track-normal);opacity:.45;margin-left:.08em}.sign{opacity:.55;margin-right:.04em;font-weight:var(--w-medium)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.console{height:100%;display:flex;flex-direction:column;max-width:680px;margin:0 auto;width:100%}.console-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 var(--s-4)}.console-body{padding-bottom:var(--s-4)}.boot{height:100%;display:grid;place-items:center;color:var(--text-muted);font-size:var(--t-sm)}.console-section{font-size:var(--t-2xs);font-weight:var(--w-semi);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--text-muted);padding:var(--s-5) var(--s-1) var(--s-2)}.day-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-3);padding:var(--s-4) var(--s-1) var(--s-2);font-size:var(--t-xs);color:var(--text-muted);font-weight:var(--w-semi)}.card{background:var(--surface);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--lift-1)}:root.theme-dark .card,:root.theme-dark .list,:root.theme-dark .receipt-preview,:root.theme-dark .help-grid{border:1px solid var(--line)}.card+.card,.card+.panel-ink,.panel-ink+.card,.panel-ink+.panel-ink{margin-top:var(--s-3)}.card-title{margin:0 0 var(--s-4);font-size:var(--t-2xs);font-weight:var(--w-semi);text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--text-muted);display:flex;align-items:center;gap:var(--s-2)}.card-title .spacer{flex:1}.panel-ink{background:linear-gradient(160deg,var(--ink-2),var(--ink));color:var(--text-on-ink);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--lift-2)}.panel-ink .card-title,.panel-ink .hint,.panel-ink .legend{color:var(--text-on-ink-muted)}.card .panel-ink{margin-top:var(--s-4);box-shadow:none}.grid-2{display:grid;gap:var(--s-3);grid-template-columns:1fr 1fr}.btn-row,.filter-row,.chips,.nudge-actions{display:flex;flex-wrap:wrap;gap:var(--s-2)}.filter-row{align-items:center;gap:var(--s-3)}.filter-row .input{width:auto;flex:1;min-width:130px}.add-row{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--line)}.add-row .input{width:auto;flex:1;min-width:106px;min-height:44px}.full-sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-sheet);background:var(--page);display:flex;flex-direction:column;animation:sheet-in var(--dur-slow) var(--ease-out)}.full-sheet-top{flex:none;display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-2);padding-top:calc(var(--s-2) + var(--safe-t));border-bottom:1px solid var(--line);background:var(--surface)}.full-sheet-top h1{font-size:var(--t-lg);font-weight:var(--w-semi);letter-spacing:var(--track-snug)}.full-sheet-body{flex:1;overflow-y:auto;padding:var(--s-4) var(--s-4) calc(var(--s-8) + var(--safe-b));max-width:680px;width:100%;margin:0 auto}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-scrim);background:#080a0e8c;display:flex;align-items:flex-end;justify-content:center;animation:fade var(--dur-base) var(--ease);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sheet{background:var(--page);width:100%;max-width:520px;border-radius:var(--r-xl) var(--r-xl) 0 0;padding:var(--s-2) var(--s-5) calc(var(--s-5) + var(--safe-b));max-height:92vh;overflow-y:auto;animation:sheet-in var(--dur-slow) var(--ease-out)}.sheet:before{content:"";display:block;width:36px;height:4px;border-radius:var(--r-pill);background:var(--line-strong);margin:0 auto var(--s-4)}.sheet h2{margin:0 0 var(--s-5);font-size:var(--t-xl);font-weight:var(--w-semi);letter-spacing:var(--track-snug)}.sheet-actions{display:flex;gap:var(--s-3);margin-top:var(--s-6)}.sheet-actions .btn{flex:1;min-height:50px}@media (min-width: 760px){.console-scroll{padding:0 var(--s-5)}.composer{padding:var(--s-3) var(--s-5) var(--s-5)}.full-sheet-body{padding:var(--s-6)}.scrim{align-items:center}.sheet{border-radius:var(--r-xl);margin-bottom:4vh}}@media (max-width: 340px){.grid-2{grid-template-columns:1fr}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);border:0;background:var(--surface-2);color:var(--text-primary);border-radius:var(--r-pill);padding:var(--s-3) var(--s-5);font-size:var(--t-sm);font-weight:var(--w-semi);letter-spacing:var(--track-snug);cursor:pointer;min-height:44px;transition:background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}.btn:active{transform:scale(.96)}@media (hover: hover){.btn:hover{background:var(--surface-3)}}.btn.primary{background:var(--accent);color:var(--accent-ink)}@media (hover: hover){.btn.primary:hover{background:var(--accent);filter:brightness(1.06)}}.btn.danger{background:var(--critical-soft);color:var(--critical)}.btn.ghost{background:transparent;color:var(--text-secondary);padding-inline:var(--s-3)}.btn.sm{min-height:38px;padding:var(--s-2) var(--s-4);font-size:var(--t-xs)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:active{transform:none}.icon-btn{width:44px;height:44px;display:inline-grid;place-items:center;border-radius:var(--r-pill);border:0;background:transparent;cursor:pointer;font-size:var(--t-lg);color:var(--text-secondary);transition:background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.icon-btn:active{transform:scale(.9)}@media (hover: hover){.icon-btn:hover{background:var(--surface-2)}}.icon-btn:disabled{opacity:.3}.segmented{display:inline-grid;grid-auto-flow:column;gap:2px;background:var(--surface-2);border-radius:var(--r-pill);padding:3px}.segmented button{border:0;background:transparent;cursor:pointer;padding:var(--s-2) var(--s-4);border-radius:var(--r-pill);font-size:var(--t-sm);font-weight:var(--w-semi);color:var(--text-muted);min-height:40px;transition:background var(--dur-base) var(--ease),color var(--dur-base) var(--ease)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text-primary);box-shadow:var(--lift-1)}.segmented.wide{display:grid;grid-auto-flow:column;width:100%}.segmented button.kind-income[aria-pressed=true]{color:var(--up)}.segmented button.kind-expense[aria-pressed=true]{color:var(--down)}.chip{display:inline-flex;align-items:center;gap:var(--s-2);border:0;background:var(--surface-2);color:var(--text-primary);border-radius:var(--r-pill);padding:var(--s-2) var(--s-4);font-size:var(--t-sm);font-weight:var(--w-medium);cursor:pointer;min-height:42px;transition:background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.chip:active{transform:scale(.95)}@media (hover: hover){.chip:hover{background:var(--surface-3)}}.chip[aria-pressed=true]{background:color-mix(in srgb,currentColor 18%,var(--surface-2));font-weight:var(--w-semi)}.chip .nm{color:var(--text-secondary)}.chip-x{border:0;background:transparent;cursor:pointer;color:var(--text-muted);font-size:var(--t-md);line-height:1;padding:0 0 0 2px}.chip-x:active{color:var(--critical)}.field{display:flex;flex-direction:column;gap:var(--s-2);margin-bottom:var(--s-4)}.field>label{font-size:var(--t-xs);font-weight:var(--w-semi);color:var(--text-secondary);padding-left:2px}.input,select.input,textarea.input{width:100%;border:0;background:var(--surface-2);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4);min-height:50px;outline:none;font-size:var(--t-md);transition:box-shadow var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.input:focus{background:var(--surface);box-shadow:var(--ring)}.input.sm{min-height:40px;padding:var(--s-2) var(--s-3);font-size:var(--t-sm)}.input.amount-input{font-size:var(--t-2xl);font-weight:var(--w-bold);letter-spacing:var(--track-tight);text-align:right;font-variant-numeric:tabular-nums;min-height:60px}.hint{font-size:var(--t-xs);color:var(--text-muted);line-height:var(--leading-normal)}.hint code,.nudge code,.console-onboard code,.help-row code{background:var(--surface-2);border-radius:var(--r-xs);padding:2px var(--s-2);font-family:inherit;font-size:.92em;font-weight:var(--w-medium);color:var(--text-primary)}.error{font-size:var(--t-sm);color:var(--critical);line-height:var(--leading-normal)}.check-row{display:flex;align-items:flex-start;gap:var(--s-3);font-size:var(--t-sm);line-height:var(--leading-normal);cursor:pointer;min-height:44px;padding-block:var(--s-1)}.check-row input{margin-top:2px;width:20px;height:20px;flex:none;accent-color:var(--accent-text)}.date-button{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);text-align:left;cursor:pointer;font-weight:var(--w-medium)}.date-button:active{background:var(--surface-3)}.date-icon{opacity:.55;font-size:var(--t-md)}.list{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--lift-1);overflow:hidden}.row{display:flex;align-items:center;gap:var(--s-3);width:100%;padding:var(--s-3) var(--s-4);min-height:60px;border:0;background:none;text-align:left;cursor:pointer;position:relative;transition:background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.row+.row:before{content:"";position:absolute;left:64px;right:0;top:0;height:1px;background:var(--line)}.row:active{background:var(--surface-2);transform:scale(.99)}@media (hover: hover){.row:hover{background:var(--surface-2)}}.avatar{width:40px;height:40px;border-radius:var(--r-sm);flex:none;display:grid;place-items:center;font-size:var(--t-lg);line-height:1}.row .body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.row .name{font-size:var(--t-md);font-weight:var(--w-semi);letter-spacing:var(--track-snug);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .meta{font-size:var(--t-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .trail{flex:none;text-align:right;font-weight:var(--w-semi);font-size:var(--t-md);letter-spacing:var(--track-snug);white-space:nowrap}.amount.income{color:var(--up)}.amount.expense{color:var(--down)}.empty{text-align:center;padding:var(--s-12) var(--s-4);color:var(--text-muted)}.empty .ico{font-size:40px;display:block;margin-bottom:var(--s-3);opacity:.55}.icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}.icon-btn .icon{width:1.3em;height:1.3em;vertical-align:0}.icon.ok{color:var(--good)}.tile{background:var(--surface-2);border-radius:var(--r-md);padding:var(--s-3) var(--s-4);display:flex;flex-direction:column;gap:var(--s-1);min-width:0}.tile-head{display:flex;align-items:center;gap:var(--s-2);font-size:var(--t-xs);color:var(--text-muted)}.tile-value{font-size:var(--t-xl);font-weight:var(--w-semi);letter-spacing:var(--track-snug);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile.up .tile-value{color:var(--up)}.tile.down .tile-value{color:var(--down)}.delta{display:inline-flex;align-items:center;gap:3px;font-size:var(--t-2xs);font-weight:var(--w-semi);border-radius:var(--r-pill);padding:3px var(--s-2);white-space:nowrap}.delta.up{color:var(--up);background:var(--up-soft)}.delta.down{color:var(--down);background:var(--down-soft)}.delta.flat{color:var(--text-muted);background:var(--surface-2)}.tile .delta.flat{background:transparent;padding-inline:0}.tile .delta{align-self:flex-start;min-height:22px}.panel-ink .delta{background:#ffffff14}.dot{width:9px;height:9px;border-radius:var(--r-pill);display:inline-block;flex:none}.dot.income{background:var(--up)}.dot.expense{background:var(--down)}.stat{display:flex;flex-direction:column;gap:var(--s-1)}.stat .label{font-size:var(--t-xs);color:var(--text-muted);display:flex;align-items:center;gap:var(--s-2)}.stat .value{font-size:var(--t-xl);font-weight:var(--w-semi);letter-spacing:var(--track-snug)}.rank{display:flex;flex-direction:column;gap:var(--s-4)}.rank-item{display:grid;grid-template-columns:1fr auto;gap:var(--s-2) var(--s-3)}.rank-label{display:flex;align-items:center;gap:var(--s-2);font-size:var(--t-sm);font-weight:var(--w-medium);min-width:0}.rank-label .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-value{font-size:var(--t-sm);font-weight:var(--w-semi);text-align:right}.rank-track,.meter{height:8px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden}.rank-track{grid-column:1 / -1}.rank-fill,.meter>i{display:block;height:100%;border-radius:var(--r-pill);transition:width var(--dur-slow) var(--ease)}.rank-pct{font-size:var(--t-2xs);color:var(--text-muted);font-weight:var(--w-normal)}.chart{width:100%;display:block;overflow:visible}.chart text{font-family:var(--font)}.chart .tick{fill:var(--text-on-ink-muted);font-size:var(--t-2xs)}.chart .gridline{stroke:var(--grid);stroke-width:1}.chart .baseline{stroke:var(--axis);stroke-width:1}.chart .bar-income{fill:var(--brand-lime)}.chart .bar-expense{fill:var(--brand-red)}.chart .hit{fill:transparent;cursor:pointer}.chart .focus-ring{fill:none;stroke:none}.chart .col:hover .marks,.chart .col:focus-visible .marks{opacity:.72}.chart .col:focus-visible{outline:none}.chart .col:focus-visible .focus-ring{stroke:var(--text-on-ink);stroke-width:1.5;fill:none}.legend{display:flex;flex-wrap:wrap;gap:var(--s-4);font-size:var(--t-xs);color:var(--text-muted);margin-top:var(--s-3)}.legend span{display:inline-flex;align-items:center;gap:var(--s-2)}.panel-ink .dot.income{background:var(--brand-lime)}.panel-ink .dot.expense{background:var(--brand-red)}.tooltip{position:fixed;z-index:var(--z-tooltip);pointer-events:none;background:var(--surface);color:var(--text-primary);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);box-shadow:var(--lift-3);font-size:var(--t-xs);line-height:var(--leading-snug);white-space:nowrap;transform:translate(-50%,calc(-100% - 12px))}.table-wrap{overflow-x:auto;margin-top:var(--s-4)}.data-table{width:100%;border-collapse:collapse;font-size:var(--t-sm)}.data-table th,.data-table td{padding:var(--s-2);border-bottom:1px solid var(--line);text-align:right}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table th{color:var(--text-muted);font-weight:var(--w-semi);font-size:var(--t-2xs);text-transform:uppercase;letter-spacing:var(--track-caps)}.nudge,.suggest,.store-state{border-radius:var(--r-md);padding:var(--s-4);font-size:var(--t-sm);line-height:var(--leading-normal)}.nudge{background:var(--warning-soft);color:var(--text-secondary);margin-top:var(--s-4)}.nudge b,.suggest-body b{color:var(--text-primary)}.nudge.danger{background:var(--critical-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--critical) 28%,transparent)}.nudge.danger b{color:var(--critical)}.nudge-actions{margin-top:var(--s-3)}.suggest{background:var(--accent-soft);margin-top:var(--s-4);animation:slide-up var(--dur-slow) var(--ease-out)}.suggest-head{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-2)}.suggest-badge{font-size:var(--t-2xs);font-weight:var(--w-bold);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--accent-text);background:var(--accent-soft);border-radius:var(--r-pill);padding:var(--s-1) var(--s-3)}.suggest-count{font-size:var(--t-2xs);color:var(--text-muted)}.suggest-body{color:var(--text-secondary)}.store-state.ok{background:var(--up-soft)}.store-state.warn{background:var(--warning-soft)}.toast{position:fixed;left:var(--s-4);right:var(--s-4);bottom:calc(100px + var(--safe-b));width:fit-content;margin:0 auto;z-index:var(--z-toast);background:var(--text-primary);color:var(--page);padding:var(--s-3) var(--s-5);border-radius:var(--r-pill);font-size:var(--t-sm);font-weight:var(--w-semi);box-shadow:var(--lift-3);animation:toast-in var(--dur-slow) var(--ease-out)}.photo-row{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:var(--s-1) 0 var(--s-2)}.photo-thumb,.photo-add{border:0;padding:0;cursor:pointer;border-radius:var(--r-sm);width:78px;height:78px;overflow:hidden;background:var(--surface-2);transition:transform var(--dur-fast) var(--ease)}.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.photo-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-secondary);font-size:var(--t-2xs);font-weight:var(--w-medium);border:1.5px dashed var(--line-strong);background:transparent}.photo-add:disabled{opacity:.55;cursor:default}.photo-thumb:active,.photo-add:active{transform:scale(.95)}.photo-zoom{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-zoom);background:#000000e6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-4);padding:var(--s-5);padding-bottom:calc(var(--s-5) + var(--safe-b))}.photo-zoom img{max-width:100%;max-height:72vh;object-fit:contain;border-radius:var(--r-sm)}.photo-zoom-actions{display:flex;gap:var(--s-3)}.toast{display:flex;align-items:center;gap:var(--s-3)}.toast-action{border:0;background:var(--accent);color:var(--accent-ink);border-radius:var(--r-pill);font-weight:var(--w-bold);font-size:var(--t-xs);cursor:pointer;padding:var(--s-2) var(--s-3);margin:calc(var(--s-1) * -1) calc(var(--s-2) * -1) calc(var(--s-1) * -1) 0;min-height:34px;white-space:nowrap}.toast-action:active{opacity:.6}.split-meter>i{background:var(--accent-text)}.rank-label{flex-wrap:wrap;row-gap:var(--s-1)}.console-hero{position:relative;padding:calc(var(--s-3) + var(--safe-t)) var(--s-2) var(--s-6)}.hero-wrap{position:relative;margin:0 var(--s-2);--nut: 44px;--khe: 7px}.console-gear{position:absolute;top:0;right:0;width:var(--nut);height:var(--nut);opacity:.75}.console-gear:active{transform:scale(.9)}.hero-card{position:relative;padding:var(--s-6) var(--s-5) var(--s-5);--mask-r: calc(var(--nut) / 2 + var(--khe));-webkit-mask-image:radial-gradient(circle var(--mask-r) at calc(100% - var(--nut) / 2) calc(var(--nut) / 2),transparent 100%,#000 100%);mask-image:radial-gradient(circle var(--mask-r) at calc(100% - var(--nut) / 2) calc(var(--nut) / 2),transparent 100%,#000 100%);border-radius:var(--r-lg);background:linear-gradient(150deg,var(--accent),color-mix(in srgb,var(--accent) 72%,#4a7c0f));color:var(--accent-ink);box-shadow:var(--lift-2);text-align:left;overflow:hidden}.hero-card:after{content:"";position:absolute;inset:-55% -18% auto auto;width:72%;aspect-ratio:1;border-radius:50%;background:#ffffff21;pointer-events:none}.hero-card-label{position:relative;display:inline-block;max-width:calc(100% - var(--nut));font-size:var(--t-2xs);font-weight:var(--w-semi);text-transform:uppercase;letter-spacing:var(--track-caps);opacity:.62}.hero-figure{position:relative;font-size:var(--t-figure);font-weight:var(--w-bold);letter-spacing:var(--track-tight);line-height:var(--leading-tight)}.hero-sub{position:relative;margin-top:var(--s-1);font-size:var(--t-xs);opacity:.7}.hero-sub b{font-weight:var(--w-bold)}.hero-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-2);margin:var(--s-5) var(--s-2) 0}.hero-actions button{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:var(--s-2) 0;border:0;background:none;color:var(--text-secondary);font-size:var(--t-2xs);font-weight:var(--w-semi);cursor:pointer}.hero-actions .ha-ico{display:grid;place-items:center;width:48px;height:48px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-primary);font-size:var(--t-lg);transition:transform var(--dur-fast) var(--ease)}.hero-actions button:active .ha-ico{transform:scale(.9)}.hero-sub b{font-weight:var(--w-semi)}.hero-tiles{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2);margin-top:var(--s-5);text-align:left}.console-onboard{color:var(--text-secondary);font-size:var(--t-md);line-height:var(--leading-loose);padding:var(--s-4) var(--s-1)}.console-onboard p{margin:0 0 var(--s-3)}.composer{flex:none;padding:var(--s-2) var(--s-4) calc(var(--s-3) + var(--safe-b));background:linear-gradient(to top,var(--page) 62%,transparent)}.composer-preview{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);font-size:var(--t-sm);color:var(--text-secondary);padding:var(--s-1) var(--s-2) var(--s-2);min-height:24px;animation:slide-up var(--dur-base) var(--ease)}.composer-preview .sep{color:var(--text-muted);opacity:.6}.composer-preview .tag{font-size:var(--t-2xs);font-weight:var(--w-semi);letter-spacing:var(--track-caps);color:var(--text-muted);background:var(--surface-2);border-radius:var(--r-pill);padding:3px var(--s-2)}.composer-row{display:flex;gap:var(--s-2);align-items:center;background:var(--surface);border-radius:var(--r-xl);padding:var(--s-1) var(--s-1) var(--s-1) var(--s-3);box-shadow:var(--lift-2)}:root.theme-dark .composer-row{border:1px solid var(--line)}.composer-input{flex:1;min-width:0;min-height:46px;border:0;background:transparent;padding:var(--s-3) var(--s-2);font-size:16px;letter-spacing:var(--track-snug);outline:none}.composer-input::placeholder{color:var(--text-muted)}.composer-send,.composer-mic{flex:none;width:46px;height:46px;border-radius:var(--r-pill);border:0;cursor:pointer;display:grid;place-items:center;font-size:var(--t-lg);transition:transform var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}.composer-send{background:var(--accent);color:var(--accent-ink)}.composer-send:active,.composer-mic:active{transform:scale(.9)}.composer-send:disabled{background:var(--accent-soft);color:var(--text-secondary);cursor:not-allowed}.composer-mic{background:var(--surface-2)}.composer-mic.listening{background:var(--brand-red);color:#fff;animation:breathe 1.5s ease-in-out infinite}.composer-chips{display:flex;gap:var(--s-2);margin-top:var(--s-2);overflow-x:auto;scrollbar-width:none;padding:1px 0 2px}.composer-chips::-webkit-scrollbar{display:none}.composer-chips .chip{flex:none;white-space:nowrap}.answer{animation:slide-up var(--dur-slow) var(--ease-out)}.answer-close{margin:var(--s-1) 0 var(--s-3)}.answer-label{font-size:var(--t-2xs);font-weight:var(--w-semi);letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--s-2);padding:0 var(--s-1)}.answer-figure{font-size:var(--t-figure-sm);font-weight:var(--w-bold);letter-spacing:var(--track-tight);line-height:var(--leading-tight);padding:0 var(--s-1)}.answer-meta{margin-top:var(--s-2);padding:0 var(--s-1);font-size:var(--t-sm);color:var(--text-secondary);line-height:var(--leading-normal)}.answer-empty{margin-top:var(--s-3);padding:0 var(--s-1);font-size:var(--t-md);color:var(--text-muted);line-height:var(--leading-loose)}.compare-delta{margin:var(--s-4) var(--s-1) 0;font-size:var(--t-md);font-weight:var(--w-semi);letter-spacing:var(--track-snug)}.help-grid{display:flex;flex-direction:column;gap:2px;margin-top:var(--s-2);background:var(--surface);border-radius:var(--r-md);padding:var(--s-2);box-shadow:var(--lift-1)}.help-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-3);font-size:var(--t-sm);color:var(--text-muted);padding:var(--s-2)}.scan-row{display:flex;flex-direction:column;gap:var(--s-2);margin-bottom:var(--s-4)}.scan-row .btn{width:100%;min-height:52px}.receipt-preview{border-radius:var(--r-md);padding:var(--s-4);background:var(--surface);box-shadow:var(--lift-1)}.receipt-amount{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);font-size:var(--t-2xl);font-weight:var(--w-bold);letter-spacing:var(--track-tight)}.receipt-note{font-size:var(--t-sm);color:var(--text-secondary);margin-top:var(--s-1)}.recon-compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3);align-items:end;margin-bottom:var(--s-4)}.recon-value{font-size:var(--t-xl);font-weight:var(--w-semi);letter-spacing:var(--track-tight);padding:var(--s-3) 0}.recon-diff{background:var(--surface);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4);font-size:var(--t-sm);margin-bottom:var(--s-4);line-height:var(--leading-normal)}.stmt-list{max-height:44vh;overflow-y:auto;border-radius:var(--r-sm);background:var(--surface)}.stmt-row{display:grid;grid-template-columns:auto 74px 1fr auto;align-items:center;gap:var(--s-3);padding:var(--s-3);font-size:var(--t-sm);cursor:pointer;min-height:48px}.stmt-row+.stmt-row{border-top:1px solid var(--line)}.stmt-row.dup{opacity:.5}.stmt-row input{width:20px;height:20px;accent-color:var(--accent-text)}.stmt-date{color:var(--text-muted);font-variant-numeric:tabular-nums}.stmt-note{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stmt-summary{font-size:var(--t-sm);color:var(--text-secondary);margin-top:var(--s-3);line-height:var(--leading-normal)}.month-nav{display:flex;align-items:center;justify-content:center;gap:var(--s-4);font-size:var(--t-lg);font-weight:var(--w-semi);letter-spacing:var(--track-snug)}.budget-row{padding:var(--s-4) 0;border-top:1px solid var(--line)}.budget-row:first-of-type{border-top:0;padding-top:0}.budget-head{display:flex;align-items:center;gap:var(--s-3)}.budget-head .rank-label{flex:1;min-width:0}.budget-input{width:128px;text-align:right}.budget-foot{display:flex;justify-content:space-between;gap:var(--s-3);font-size:var(--t-xs);color:var(--text-muted);margin-top:var(--s-2)}.coverage-line{display:flex;align-items:center;gap:var(--s-3);font-weight:var(--w-semi)}.gap-row{display:grid;grid-template-columns:1fr 110px auto;align-items:center;gap:var(--s-2);padding:var(--s-2) 0;border-top:1px solid var(--line)}.gap-date{font-size:var(--t-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gap-input{min-height:44px;padding:var(--s-2) var(--s-3);text-align:right;font-size:var(--t-sm)}.row.inbox-pending{display:grid;grid-template-columns:1fr auto;gap:var(--s-2) var(--s-3);cursor:default;align-items:center}.row.inbox-pending:active{transform:none;background:none}.inbox-pick{grid-column:1 / -1}.transfer-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--s-3);align-items:start}.transfer-swap{margin-top:28px;background:var(--surface-2)}.privacy-list{margin:0;padding-left:var(--s-5);font-size:var(--t-sm);line-height:var(--leading-loose);color:var(--text-secondary)}.footnote{text-align:center;font-size:var(--t-xs);color:var(--text-muted);margin:var(--s-6) 0 0}.forecast{display:flex;flex-direction:column;gap:var(--s-2);padding-bottom:var(--s-3)}.forecast-figure{font-size:var(--t-2xl);font-weight:var(--w-bold);letter-spacing:var(--track-tight);color:var(--text-primary);font-variant-numeric:tabular-nums}.forecast+.row{border-top:1px solid var(--line)}.card>.row{padding-inline:0}.card>.row+.row:before{left:52px}.composer-warn{background:var(--warning-soft);color:var(--text-secondary);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);margin:0 var(--s-1) var(--s-2);font-size:var(--t-sm);line-height:var(--leading-snug);animation:slide-up var(--dur-base) var(--ease)}.composer-warn b{color:var(--text-primary)}.jar-base{font-size:var(--t-2xl);font-weight:var(--w-bold);letter-spacing:var(--track-tight);font-variant-numeric:tabular-nums}.jar-approx{color:var(--text-muted);font-weight:var(--w-medium);margin-right:.15em}.jar-row{padding:var(--s-4) 0;border-top:1px solid var(--line)}.jar-row:first-of-type{border-top:0;padding-top:0}.jar-head,.jar-assign{display:flex;align-items:center;gap:var(--s-3)}.jar-assign{padding:var(--s-2) 0;border-top:1px solid var(--line)}.jar-assign:first-of-type{border-top:0}.jar-assign select{width:auto;flex:none;min-width:150px}.jar-name{display:flex;align-items:center;gap:var(--s-2);flex:1;min-width:0;font-size:var(--t-sm);font-weight:var(--w-semi)}.jar-name .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jar-percent{display:flex;align-items:center;gap:var(--s-1);flex:none;color:var(--text-muted);font-size:var(--t-sm)}.jar-percent .input{width:62px;text-align:right}.goal-card.done{opacity:.72}.goal-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3)}.goal-name{display:flex;align-items:center;gap:var(--s-2);min-width:0;font-size:var(--t-lg);font-weight:var(--w-semi);letter-spacing:var(--track-snug)}.goal-name .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goal-figure{flex:none;font-size:var(--t-md);font-weight:var(--w-semi);font-variant-numeric:tabular-nums;white-space:nowrap}.goal-target{color:var(--text-muted);font-weight:var(--w-normal)}@keyframes fade{0%{opacity:0}}@keyframes slide-up{0%{opacity:0;transform:translateY(6px)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}@keyframes breathe{50%{opacity:.55;transform:scale(.94)}}.list .row{animation:slide-up .26s var(--ease) backwards}.list .row:nth-child(1){animation-delay:0ms}.list .row:nth-child(2){animation-delay:22ms}.list .row:nth-child(3){animation-delay:44ms}.list .row:nth-child(4){animation-delay:66ms}.list .row:nth-child(5){animation-delay:88ms}.list .row:nth-child(n+6){animation-delay:.1s}
