:root{--bg:#f8f7f4;--text:#000;--text-muted:#8a8780;--text-inactive:#77746e;--divider:#cfcbc3;--accent:#d1001b;--cell-light:#ebe8e2;--surface:#fff;--sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--serif:"EB Garamond", Georgia, "Times New Roman", serif;--mono:"Courier New", Courier, monospace;--text-xs:13px;--text-sm:14px;--text-body:16px;--text-section:24px;--text-display:32px;--text-greeting:48px;--text-hero:56px;--w-light:300;--w-regular:400;--w-medium:500;--w-bold:700;--lh-tight:1;--lh-snug:1.2;--lh-base:1.4;--lh-relaxed:1.5;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:40px;--space-6:48px;--space-7:56px;--space-8:64px;--space-9:72px;--radius-none:0;--radius-sm:2px;--radius-lg:16px;--radius-pill:999px;--radius-card:12px;--radius-field:10px;--radius-chip:6px;--radius-sheet:16px;--radius-full:50%;--duration-instant:80ms;--duration-fast:.1s;--duration-base:.26s;--duration-moderate:.36s;--duration-slow:.48s;--duration-enter:.7s;--ease-default:ease;--ease-out:cubic-bezier(.25, .46, .45, .94);--ease-modal:cubic-bezier(.32, .72, 0, 1);--ease-spring:cubic-bezier(.16, 1, .3, 1);--ease-bounce:cubic-bezier(.34, 1.56, .64, 1);--shadow-none:none;--shadow-sm:0 2px 8px #0000000f;--shadow-md:0 8px 24px #0000001a;--shadow-lg:0 16px 48px #00000024;--rule-section:2px;--rule-row:.5px;--ring-stroke:8px;--accent-muted:#e87878;--positive-muted:#8fcf9c;--accent-punct:var(--accent);--max-width:480px;--nav-clearance:120px;--surface-pressed:color-mix(in srgb, var(--text) 6%, transparent)}[data-theme=dark] .section-title{font-weight:var(--w-bold)}*,:before,:after{box-sizing:border-box}html,body,#root{background:var(--bg);min-height:100%;color:var(--text);font-family:var(--sans);font-weight:var(--w-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0;padding:0}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text}body{font-size:var(--text-body);line-height:var(--lh-base)}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}input,textarea{font:inherit;color:inherit;background:0 0;border:none;outline:none;width:100%}h1,h2,h3,p,ul,ol{font-weight:var(--w-regular);margin:0;padding:0}h1,h2,h3{font-family:var(--serif)}ul,ol{list-style:none}.app{min-height:100dvh;max-width:var(--max-width);background:var(--bg);margin:0 auto;position:relative;overflow-x:hidden}@keyframes screen-in-right{0%{opacity:0;transform:translate(22px)}to{opacity:1;transform:translate(0)}}@keyframes screen-in-left{0%{opacity:0;transform:translate(-22px)}to{opacity:1;transform:translate(0)}}[data-nav=forward] .home,[data-nav=forward] .ledger-screen{animation:screen-in-right var(--duration-base) var(--ease-out) both}[data-nav=back] .home,[data-nav=back] .ledger-screen{animation:screen-in-left var(--duration-base) var(--ease-out) both}.section,.section-head{gap:var(--space-1);flex-direction:column;width:100%;display:flex}.section-title-row{padding:0 var(--space-2);justify-content:space-between;align-items:center;display:flex}.section-title{font-size:var(--text-section);font-weight:var(--w-medium);line-height:var(--lh-snug);color:var(--text)}.section-title-meta{font-size:var(--text-section);font-weight:var(--w-medium);color:var(--text);opacity:.35;margin-left:6px}.card{background:var(--surface);border-radius:var(--radius-card);padding:12px var(--space-2);width:100%}.card-list{background:var(--surface);border-radius:var(--radius-card);padding:0 var(--space-2);flex-direction:column;width:100%;display:flex}.card-list>*+*{border-top:var(--rule-row) solid var(--divider)}.card-row{justify-content:space-between;align-items:center;gap:var(--space-1);min-height:48px;font-size:var(--text-body);color:var(--text);padding:11px 0;display:flex}.card-row-value{color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right}.card-row.is-emphasized{font-weight:var(--w-medium)}.card-row.is-emphasized .card-row-value{color:var(--text)}button.card-row{text-align:left;width:100%}.card-select-row{cursor:pointer}.card-select{appearance:none;font:inherit;color:var(--text-muted);text-align:right;text-align-last:right;cursor:pointer;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='14' viewBox='0 0 10 14' fill='none' stroke='%238a8780' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m1 5 4-4 4 4M1 9l4 4 4-4'/%3E%3C/svg%3E") 100% no-repeat;border:none;outline:none;padding-right:18px}.btn-primary,.btn-outline{border-radius:var(--radius-field);height:50px;font-size:var(--text-body);font-weight:var(--w-medium);width:100%;padding:0 var(--space-3);transition:opacity var(--duration-fast) var(--ease-default);justify-content:center;align-items:center;display:flex}.btn-primary{background:var(--text);color:var(--bg);border:1.5px solid var(--text);font-weight:600}.btn-outline{color:var(--text);border:1.5px solid var(--text);background:0 0}.btn-primary:active,.btn-outline:active{opacity:.7}.btn-primary:disabled,.btn-outline:disabled{opacity:.4;cursor:default}.btn-danger{background:var(--accent);color:#fff;border-color:var(--accent)}.social-btns{gap:var(--space-1);flex-direction:column;display:flex}.social-btn{justify-content:center;align-items:center;gap:var(--space-1);height:var(--space-6);width:100%;font-size:var(--text-body);font-weight:var(--w-regular);border:1.5px solid var(--divider);color:var(--text);opacity:.5;cursor:not-allowed;display:flex}.social-btn--apple{background:var(--text);color:var(--bg);border-color:var(--text)}.social-divider{align-items:center;gap:var(--space-1);display:flex}.social-divider:before,.social-divider:after{content:"";background:var(--divider);flex:1;height:1px}.social-divider span{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.screen-header{gap:var(--space-1);flex-direction:column;display:flex}.screen-back{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);padding:var(--space-1) 0;align-self:flex-start}.accent-period{color:var(--accent-punct)}.app-loading{background:var(--bg);width:100%;height:100dvh}.glass{background:color-mix(in srgb, var(--surface) 72%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.6);backdrop-filter:blur(20px)saturate(1.6);border:.5px solid #ffffff8c;box-shadow:0 8px 24px #0000001a}.glass-circle{border-radius:var(--radius-full);width:44px;height:44px;color:var(--text);transition:transform var(--duration-fast) var(--ease-default), opacity .2s var(--ease-default);justify-content:center;align-items:center;display:flex}.glass-circle:active{transform:scale(.92)}.pill-group{align-items:center;gap:4px;display:flex}.pill{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text);border-radius:var(--radius-chip);white-space:nowrap;transition:background-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);padding:4px 12px}.pill.is-active{background:var(--text);color:var(--bg);font-weight:var(--w-medium)}.ledger-back-btn{top:calc(var(--space-3) + env(safe-area-inset-top));left:max(var(--space-2), calc((100vw - var(--max-width)) / 2 + var(--space-2)));z-index:40;position:fixed}.segmented{background:#7676801f;border-radius:9px;padding:2px;display:flex}[data-theme=dark] .segmented{background:#7676803d}.segmented.is-compact{flex-shrink:0;width:160px}.segmented-option{min-height:32px;font-size:var(--text-sm);color:#000;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-default), box-shadow var(--duration-fast) var(--ease-default);border-radius:7px;flex:1}.segmented-option.is-active{font-weight:var(--w-medium);background:#fff;box-shadow:0 3px 8px #0000001f,0 3px 1px #0000000a}[data-theme=dark] .segmented-option{color:#fff}[data-theme=dark] .segmented-option.is-active{box-shadow:none;background:#636366}.segmented-option:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.login{justify-content:center;gap:var(--space-9);min-height:100dvh;padding:calc(var(--space-6) + env(safe-area-inset-top)) var(--space-2) calc(var(--space-6) + env(safe-area-inset-bottom));background:var(--bg);flex-direction:column;display:flex}.login-form-wrap{gap:var(--space-3);flex-direction:column;width:100%;display:flex}.login-form-header{gap:var(--space-1);flex-direction:column;display:flex}.login-welcome{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);line-height:var(--lh-relaxed)}.login-top{flex-direction:column;align-items:center;width:100%;display:flex}.login-brand{align-items:flex-start;gap:var(--space-2);flex-direction:column;display:inline-flex}.login-tagline{font-size:var(--text-section);font-weight:var(--w-regular);color:var(--text);overflow-wrap:break-word;max-width:100%}.login-bottom{gap:var(--space-3);flex-direction:column;width:100%;display:flex}.login-form{gap:var(--space-2);flex-direction:column;display:flex}.login-field{border-bottom:var(--rule-row) solid var(--divider);flex-direction:column;display:flex}.login-input{width:100%;font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);padding:var(--space-1) 0;background:0 0;border:none;outline:none}.login-input::placeholder{color:var(--text-muted);font-style:italic}.login-error{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--accent);padding-top:2px}.login-actions{gap:var(--space-1);flex-direction:column;display:flex}.login-forgot{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);text-align:right;width:100%;transition:color var(--duration-fast) var(--ease-default);padding:6px 0 0}.login-forgot:active{color:var(--text)}.login-reset-confirm{gap:var(--space-3);flex-direction:column;display:flex}.login-reset-msg{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);line-height:var(--lh-relaxed)}.login-disclaimer{text-align:center;font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.login-skip{text-align:center;width:100%;font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);display:block}.mfa-digits{gap:var(--space-1);padding:var(--space-2) 0 var(--space-1);justify-content:space-between;display:flex}.mfa-digit{aspect-ratio:1;text-align:center;max-width:48px;font-size:var(--text-section);font-weight:var(--w-light);color:var(--text);border:var(--rule-row) solid var(--divider);border-radius:var(--radius-sm);caret-color:#0000;transition:border-color var(--duration-fast) var(--ease-default);background:0 0;outline:none;flex:1}.mfa-digit:focus,.mfa-digit--filled{border-color:var(--text)}.mfa-paste-btn{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);text-align:center;transition:color var(--duration-fast) var(--ease-default);padding:0}.mfa-paste-btn:active{color:var(--text)}.cat-picker-wrap{gap:var(--space-1);flex-direction:column;display:flex}.cat-picker{flex-wrap:wrap;gap:6px;display:flex}.cat-picker__btn{width:40px;height:40px;color:var(--text-muted);border:1px dashed var(--divider);border-radius:var(--radius-chip);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default), border-style var(--duration-fast) var(--ease-default);flex-shrink:0;justify-content:center;align-items:center;display:flex}@media (hover:hover){.cat-picker__btn:hover{border-color:var(--text-muted);color:var(--text)}}.cat-picker__btn.is-active{color:var(--text);border-color:var(--text);border-style:solid}.cat-picker--sm .cat-picker__btn{width:30px;height:30px}.cat-picker__hints{display:grid}.cat-picker__hint{flex-direction:column;grid-area:1/1;gap:2px;display:flex}.cat-picker__hint.is-hidden{visibility:hidden}.cat-picker__label{font-size:var(--text-sm);font-weight:var(--w-medium);color:var(--text)}.cat-picker__desc{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);font-style:italic}.switch{border-radius:var(--radius-pill);width:51px;height:31px;transition:background-color var(--duration-fast) var(--ease-default);background:#78788029;flex-shrink:0;position:relative}.switch.is-on{background:#34c759}[data-theme=dark] .switch{background:#78788052}[data-theme=dark] .switch.is-on{background:#30d158}.switch input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.switch input:disabled{cursor:default}.switch-thumb{border-radius:var(--radius-full);pointer-events:none;width:27px;height:27px;transition:transform var(--duration-base) var(--ease-out);background:#fff;position:absolute;top:2px;left:2px;box-shadow:0 2px 6px #0000002e}.switch.is-on .switch-thumb{transform:translate(20px)}.switch input:focus-visible+.switch-thumb{outline:2px solid var(--accent);outline-offset:2px}.nav-row-trailing{align-items:center;gap:6px;min-width:0;display:flex}.nav-row-chevron{color:var(--text-inactive);flex-shrink:0}.card-row:disabled{opacity:.4;cursor:default}.home{gap:var(--space-3);padding:calc(var(--space-9) + env(safe-area-inset-top)) var(--space-2) calc(var(--nav-clearance) + env(safe-area-inset-bottom));flex-direction:column;display:flex}.section>.ledger-list{padding-top:var(--space-1)}.home-greeting h1{font-size:var(--text-greeting);font-weight:var(--w-bold);letter-spacing:-.02em;line-height:1}.home-budget{margin-top:var(--space-1);font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);text-align:left;cursor:pointer;display:block}.home-budget-amount{font-weight:var(--w-medium);color:var(--text)}.home-budget-amount.is-over{color:var(--accent)}.home-search-btn{color:var(--text-muted);padding:var(--space-1);margin:calc(var(--space-1) * -1);transition:color var(--duration-fast) var(--ease-default);display:flex}.home-search-btn:active{color:var(--text)}.donut{width:100%;max-width:360px;margin:var(--space-1) auto;position:relative}.donut-svg{width:100%;height:100%;overflow:visible}.donut-svg circle{transition:stroke-dasharray var(--duration-enter) var(--ease-spring), stroke-dashoffset var(--duration-enter) var(--ease-spring)}.donut-leader{stroke:var(--text-muted);stroke-width:1px;opacity:.5;vector-effect:non-scaling-stroke}.donut-label{text-overflow:ellipsis;white-space:nowrap;max-width:50px;font-size:var(--text-xs);font-weight:var(--w-light);color:var(--text-muted);pointer-events:none;position:absolute;overflow:hidden}.donut-label--right{transform:translateY(-50%)}.donut-label--left{text-align:right;transform:translate(-100%,-50%)}.donut-center{pointer-events:none;flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%,-50%)}.donut-center-value{font-size:var(--text-display);font-weight:var(--w-medium);letter-spacing:-.01em;color:var(--text);line-height:var(--lh-tight)}.donut-center-label{font-size:var(--text-xs);font-weight:var(--w-light);color:var(--text-muted)}.spend-title-row{width:100%;padding:0 var(--space-2);justify-content:space-between;align-items:center;display:flex}.spend-chart-meta{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:6px;display:flex}.spend-chart-meta-left{flex-direction:column;gap:3px;display:flex}.spend-chart-period{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.spend-chart-total{font-size:var(--text-body);font-weight:var(--w-medium);color:var(--text)}.spend-chart-avg-badge{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap;align-items:center;gap:5px;display:flex}.spend-chart-avg-dot{border-radius:var(--radius-full);background:var(--accent);flex-shrink:0;width:7px;height:7px}.spend-chart-plot{touch-action:pan-y;height:160px;margin-top:calc(var(--space-2) + 34px);align-items:flex-end;gap:8px;display:flex;position:relative}.spend-chart-tooltip{border-radius:var(--radius-chip);background:var(--text);height:24px;color:var(--bg);line-height:24px;font-size:var(--text-sm);font-weight:var(--w-medium);white-space:nowrap;pointer-events:none;z-index:3;padding:0 8px;position:absolute;top:-34px}.spend-chart-tooltip-caret{border:5px solid #0000;border-top-color:var(--text);pointer-events:none;z-index:3;position:absolute;top:-10px;transform:translate(-50%)}.spend-chart-tooltip-line{background:var(--text);pointer-events:none;z-index:1;width:1px;position:absolute;top:-1px;transform:translate(-50%)}.spend-chart-bar-col{cursor:pointer;background:0 0;border:none;flex:1;align-items:flex-end;min-width:0;height:100%;padding:0;display:flex;position:relative}.spend-chart-bar-col:active .spend-chart-bar{opacity:.6}.spend-chart-bar{border-radius:var(--radius-chip) var(--radius-chip) 0 0;background:var(--divider);width:100%;min-height:2px;transition:height var(--duration-enter) var(--ease-spring)}.spend-chart-bar-col.is-selected .spend-chart-bar{background:var(--text)}.spend-chart-bar-value{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap;position:absolute;left:50%;transform:translate(-50%)}.spend-chart-avg-line{z-index:2;border-top:1px dashed var(--accent);transition:bottom var(--duration-enter) var(--ease-spring);position:absolute;left:0;right:0}.spend-chart-labels{margin-top:var(--space-1);gap:8px;display:flex}.spend-chart-label{text-align:center;min-width:0;font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex:1;padding:2px 0}.spend-chart-label.is-current{color:var(--text);font-weight:var(--w-medium)}.spend-chart-label.is-selected{color:var(--accent);font-weight:var(--w-medium);border:1px solid var(--text-muted);border-radius:var(--radius-chip)}.spend-chart-label:active{opacity:.6}.spend-vs-avg{margin-top:var(--space-2);padding:var(--space-2);border-radius:var(--radius-card);background:var(--accent-muted);animation:breakdown-in var(--duration-base) var(--ease-out) both;flex-direction:column;gap:2px;display:flex}.spend-vs-avg.is-under{background:var(--positive-muted)}.spend-vs-avg-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text);opacity:.75}.spend-vs-avg-value{font-size:var(--text-body);font-weight:var(--w-medium);color:var(--text)}@keyframes breakdown-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.spend-breakdown{margin-top:var(--space-3);padding-top:var(--space-1);animation:breakdown-in var(--duration-base) var(--ease-out) both}.spend-breakdown-title{font-size:var(--text-body);font-weight:var(--w-medium);color:var(--text)}.breakdown-list{margin-top:var(--space-2);gap:var(--space-2);flex-direction:column;display:flex}.breakdown-row{align-items:stretch;gap:var(--space-1);text-align:left;width:100%;color:inherit;display:flex}.breakdown-entries{margin-top:var(--space-1);padding-left:calc(4px + var(--space-1) + 32px + var(--space-1));animation:breakdown-in var(--duration-base) var(--ease-out) both}.breakdown-entries .ledger-row:last-child .ledger-divider{display:none}.breakdown-row-bar{border-radius:var(--radius-pill);background:var(--text);flex-shrink:0;width:4px}.breakdown-row-icon{width:32px;height:32px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-self:center;align-items:center;display:flex}.breakdown-row-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.breakdown-row-top{justify-content:space-between;align-items:baseline;gap:var(--space-1);display:flex}.breakdown-row-name{font-size:var(--text-body);font-weight:var(--w-regular);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.breakdown-row-amount{font-size:var(--text-body);font-weight:var(--w-medium);color:var(--text);font-variant-numeric:tabular-nums;flex-shrink:0}.breakdown-row-pct{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.year-chart{margin-top:calc(var(--space-2) + 34px);padding-right:40px;position:relative}.year-chart-plot{touch-action:pan-y;height:160px;position:relative}.year-chart-grid{border-top:1px solid var(--divider);opacity:.55;position:absolute;left:0;right:0}.year-chart-grid.is-base{opacity:1}.year-chart-axis{text-align:right;width:36px;font-size:var(--text-xs);font-weight:var(--w-light);color:var(--text-muted);position:absolute;right:-40px;transform:translateY(-50%)}.year-chart-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.year-chart-line{fill:none;stroke:var(--text);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.year-chart-line.is-last{stroke:var(--divider);stroke-width:2px}.year-chart-point{background:var(--text);width:12px;height:12px;box-shadow:0 0 0 3px var(--surface);pointer-events:none;z-index:2;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.year-chart-leader{bottom:auto}.year-chart-hits{grid-template-columns:repeat(12,1fr);display:grid;position:absolute;inset:0}.year-chart-hits button:disabled,.year-chart-labels .spend-chart-label:disabled{cursor:default}.year-chart-labels{gap:0;padding-right:40px}.year-chart-legend{gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);display:flex}.year-chart-legend>span{align-items:center;gap:5px;display:inline-flex}.year-chart-swatch{background:var(--text);border-radius:50%;width:7px;height:7px}.year-chart-swatch.is-last{background:var(--divider)}.bar-hero{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.bar-hero-amount{font-size:var(--text-display);font-weight:var(--w-medium);letter-spacing:-.01em;color:var(--text);line-height:var(--lh-tight)}.bar-hero-amount-over{color:var(--accent)}.bar-hero-label{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted)}.bar-track{border-radius:var(--radius-pill);width:100%;height:6px;margin-top:var(--space-1);background:#c5c5c566;position:relative}.bar-fill{border-radius:var(--radius-pill);background:var(--text);height:100%;transition:width var(--duration-enter) var(--ease-spring), background var(--duration-enter) var(--ease-spring)}.bar-fill-over{background:var(--accent)}.bar-savings-mark{background:var(--accent);pointer-events:none;width:2px;position:absolute;top:-3px;bottom:-3px;transform:translate(-50%)}.bar-stats{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);flex-wrap:wrap;align-items:baseline;gap:5px;margin-top:10px;display:flex}.bar-stats-val{font-weight:var(--w-regular);color:var(--text)}.bar-sep{opacity:.4}.bar-vs-over{color:var(--accent)}.bar-cats{flex-direction:column;gap:4px;margin-top:8px;display:flex}.bar-cat-row{align-items:center;gap:6px;height:18px;display:flex}.bar-cat-rank{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);text-align:center;flex-shrink:0;width:10px}.bar-cat-icon{color:var(--text-muted);flex-shrink:0;align-items:center;width:14px;display:flex}.bar-cat-name{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;width:68px;overflow:hidden}.bar-cat-track{border-radius:var(--radius-pill);background:#c5c5c566;flex:1;height:3px;overflow:hidden}.bar-cat-fill{border-radius:var(--radius-pill);background:var(--text);height:100%;transition:width var(--duration-enter) var(--ease-spring)}.bar-cat-amount{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;flex-shrink:0;width:44px}.bar-behavioral{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);align-items:baseline;gap:5px;margin-top:6px;display:flex}.bar-setup-prompt{align-items:flex-start;gap:var(--space-1);padding:var(--space-2) 0;flex-direction:column;display:flex}.bar-setup-msg{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);font-style:italic}.bar-setup-link{font-size:var(--text-body);font-weight:var(--w-regular);color:var(--accent)}.sheet-backdrop{opacity:0;pointer-events:none;transition:opacity var(--duration-base) var(--ease-modal);z-index:50;background:#00000052;position:fixed;inset:0}.sheet-backdrop.is-open{opacity:1;pointer-events:auto}.sheet{width:100%;max-width:var(--max-width);background:var(--bg);border-top-left-radius:var(--radius-sheet);border-top-right-radius:var(--radius-sheet);max-height:88dvh;box-shadow:var(--shadow-lg);transition:transform var(--duration-moderate) var(--ease-modal);z-index:51;flex-direction:column;display:flex;position:fixed;bottom:0;left:50%;overflow:hidden;transform:translate(-50%,100%)}.sheet.is-open{transform:translate(-50%)}.sheet-handle{background:var(--text-muted);border-radius:var(--radius-pill);opacity:.4;width:36px;height:5px;margin:8px auto 0}.sheet-header{gap:var(--space-1);padding:var(--space-2) var(--space-2) var(--space-1);grid-template-columns:44px 1fr 44px;align-items:center;display:grid}.sheet-title{text-align:center;font-size:var(--text-section);font-weight:var(--w-medium);color:var(--text)}.sheet-close{cursor:pointer}.sheet-confirm{background:var(--text);color:var(--bg);cursor:pointer;border:none}.sheet-confirm:disabled{opacity:.3;cursor:not-allowed}.sheet-confirm:disabled:active{transform:none}.sheet-body{gap:var(--space-3);padding:var(--space-3) var(--space-2) calc(var(--space-3) + env(safe-area-inset-bottom));flex-direction:column;flex:1;display:flex;overflow-y:auto}.add-amount-row{padding:var(--space-1) 0;justify-content:center;align-items:baseline;gap:2px;display:flex}.add-amount-prefix,.add-amount{font-size:var(--text-greeting);font-weight:var(--w-medium);letter-spacing:-.01em;line-height:var(--lh-tight)}.add-amount-prefix{color:var(--text-muted)}.add-amount{color:var(--text);field-sizing:content;min-width:4ch}.add-amount::placeholder{color:var(--text-muted)}.add-repeat{gap:var(--space-1);flex-direction:column;display:flex}.add-repeat .add-field-hint{margin-top:0}.add-field{gap:var(--space-1);flex-direction:column;display:flex}.add-field-label{font-size:var(--text-section);font-weight:var(--w-medium);color:var(--text)}.add-input{font-size:var(--text-body);padding:12px var(--space-2);border-radius:var(--radius-field);background:var(--surface);color:var(--text);width:100%}.add-note{resize:none;font-style:italic;font-family:var(--sans)}.add-input::placeholder,.add-note::placeholder{color:var(--text-muted);font-style:italic}.add-actions{gap:var(--space-1);flex-direction:column;display:flex}.add-delete-link{text-align:center;width:100%;font-size:var(--text-sm);font-weight:var(--w-light);color:var(--accent);cursor:pointer;padding:var(--space-1) 0}.add-datetime-row{gap:var(--space-2);transition:opacity var(--duration-fast) var(--ease-default);flex-wrap:wrap;display:flex}.add-datetime-row.is-disabled{opacity:.4}.add-dt-selects{border-radius:var(--radius-field);background:var(--surface);flex:1;align-items:baseline;gap:4px;min-width:0;padding:10px 12px;display:flex}.add-dt-select{font-family:var(--sans);font-size:var(--text-body);color:var(--text);cursor:pointer;appearance:none;background:0 0;border:none;min-width:0;padding:2px 4px}.add-dt-select.is-empty{color:var(--text-muted);font-weight:var(--w-light);font-style:italic}.add-dt-sep{color:var(--text-muted);font-weight:var(--w-light)}.add-field-hint{margin-top:var(--space-1);font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.range-body{gap:var(--space-2)}.range-presets{gap:var(--space-1);flex-wrap:wrap;display:flex}.range-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}.range-field{flex-direction:column;gap:6px;display:flex}.range-field-label,.range-hint{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.range-input-wrap{align-items:baseline;gap:4px;display:flex}.range-input-wrap input{min-width:0;font-size:var(--text-body);color:var(--text);flex:1}.range-input-wrap input::placeholder{color:var(--text-muted);font-style:italic}.range-prefix{color:var(--text-muted)}.range-actions{grid-template-columns:1fr 1fr;gap:12px;display:grid}.ledger-selector{align-items:center;gap:var(--space-2);padding:0 var(--space-2);display:flex}.ledger-year-select{font:inherit;font-size:var(--text-sm);font-weight:var(--w-medium);color:var(--text);cursor:pointer;appearance:auto;background:0 0;border:none;outline:none;flex-shrink:0;padding:0}.ledger-month-pills{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:6px;padding:4px 0;display:flex;overflow-x:auto}.ledger-month-pills::-webkit-scrollbar{display:none}.ledger-month-pill{border-radius:var(--radius-chip);font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text);white-space:nowrap;transition:background var(--duration-fast), color var(--duration-fast);flex-shrink:0;padding:4px 12px}.ledger-month-pill.is-active{background:var(--text);color:var(--bg);font-weight:var(--w-medium)}.ledger-months{gap:var(--space-4);flex-direction:column;display:flex}.ledger-month{flex-direction:column;display:flex}.ledger-month-head{align-items:baseline;gap:var(--space-1);padding-bottom:var(--space-1);display:flex}.ledger-recurring-sticky{margin-bottom:var(--space-2);flex-direction:column;display:flex}.ledger-recurring-sticky-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);margin:-12px calc(-1 * var(--space-2));padding:12px var(--space-2);width:calc(100% + 2 * var(--space-2));text-align:left;cursor:pointer;font:inherit;background:0 0;border:none;align-items:center;gap:4px;display:flex}.ledger-recurring-sticky-label.is-expanded{padding-bottom:var(--space-1);margin-bottom:0}.ledger-recurring-chevron{transition:transform var(--duration-fast) var(--ease-default);margin-left:auto}.ledger-recurring-chevron.is-collapsed{transform:rotate(-90deg)}.ledger-recurring-chip{text-align:left;width:100%;transition:background-color var(--duration-fast) var(--ease-default);justify-content:space-between;align-items:baseline;padding:3px 0;display:flex}.ledger-recurring-chip:active{background-color:var(--surface-pressed)}.ledger-recurring-chip-name{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--w-light)}.ledger-recurring-chip-right{flex-direction:column;align-items:flex-end;gap:1px;display:flex}.ledger-recurring-chip-amount{font-size:var(--text-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:var(--w-light)}.ledger-recurring-chip-sub{font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--w-light);font-variant-numeric:tabular-nums;opacity:.7}.ledger-list{gap:var(--space-1);flex-direction:column;display:flex}.ledger-row{flex-direction:column;gap:4px;display:flex}.ledger-row-inner{gap:var(--space-1);transition:background-color var(--duration-fast) var(--ease-default);align-items:center;display:flex}.ledger-icon{width:32px;height:32px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.ledger-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.ledger-line-top,.ledger-line-bottom{justify-content:space-between;align-items:flex-start;gap:var(--space-1);display:flex}.ledger-when{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.ledger-row-button{text-align:left;width:100%;color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0;display:block}.ledger-row-button:active .ledger-row-inner{background-color:var(--surface-pressed)}.ledger-time{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap}.ledger-merchant{font-size:var(--text-body);font-weight:var(--w-regular);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ledger-amount{font-size:var(--text-body);font-weight:var(--w-regular);color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}.ledger-note,.ledger-date{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.ledger-note{white-space:nowrap;text-overflow:ellipsis;font-style:italic;overflow:hidden}.ledger-date{white-space:nowrap;flex-shrink:0}.ledger-divider{height:var(--rule-row);background:var(--divider);width:100%}.ledger-row:last-child .ledger-divider{display:none}.ledger-empty{text-align:center;font-style:italic;font-weight:var(--w-light);color:var(--text-muted);padding:var(--space-3) 0}.view-all{text-align:right;font-size:var(--text-sm);color:var(--accent);width:100%;padding:var(--space-1) var(--space-2) 0}.ledger-screen{flex-direction:column;display:flex}.ledger-header{gap:var(--space-1);padding:calc(var(--space-9) + env(safe-area-inset-top)) var(--space-2) var(--space-1);flex-direction:column;display:flex}.ledger-header h1{font-size:var(--text-greeting);font-weight:var(--w-bold);letter-spacing:-.02em;line-height:1}.ledger-search-header{z-index:10;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2) var(--space-2);background:var(--bg);max-height:80px;transition:max-height var(--duration-base) var(--ease-default), padding var(--duration-base) var(--ease-default), opacity var(--duration-fast) var(--ease-default);display:flex;position:sticky;top:0;overflow:hidden}.ledger-search-header.is-collapsed{opacity:0;max-height:0;padding-top:0;padding-bottom:0}.ledger-search-icon{color:var(--text-muted);flex-shrink:0}.ledger-search-input{min-width:0;font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);flex:1}.ledger-search-input::placeholder{color:var(--text-muted)}.ledger-search-clear{color:var(--text-muted);flex-shrink:0;display:flex}.ledger-carousel{scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-x;overscroll-behavior-x:contain;align-items:flex-start;display:flex;overflow:scroll hidden}.ledger-carousel::-webkit-scrollbar{display:none}.ledger-carousel-page{scroll-snap-align:start;min-width:100%;padding:var(--space-2) var(--space-2) calc(var(--nav-clearance) + env(safe-area-inset-bottom));flex-direction:column;display:flex;overflow-x:hidden}.ledger-carousel-page .ledger-month-head{padding-bottom:0}.ledger-day-scroll{padding:var(--space-2) var(--space-2) calc(var(--nav-clearance) + env(safe-area-inset-bottom));overflow-y:auto}.ledger-search-field{align-items:center;gap:var(--space-1);border-radius:var(--radius-field);background:var(--surface);flex:1;padding:10px 14px;display:flex}.ledger-month-head{padding-top:var(--space-1)}.ledger-filter-btn{width:30px;height:30px;color:var(--text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin:-4px -8px -4px 0;display:flex}.ledger-filter-btn.is-active{background:var(--text);color:var(--bg)}.ledger-clear-month{border:1px solid var(--divider);width:26px;height:26px;color:var(--text);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex;position:relative}.ledger-clear-month:after{content:"";position:absolute;inset:-9px}.ledger-month-meta{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap}.ledger-year-list{gap:var(--space-3);padding:var(--space-2) var(--space-2) calc(var(--nav-clearance) + env(safe-area-inset-bottom));flex-direction:column;display:flex}.cp-overlay{z-index:60;background:#00000059;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.cp-sheet{width:100%;max-width:var(--max-width);background:var(--bg);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;max-height:72vh;padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom));flex-direction:column;display:flex;overflow:hidden}.cp-search-wrap{padding:var(--space-3) var(--space-2) var(--space-2);flex-shrink:0}.cp-search{width:100%;font-size:var(--text-body);color:var(--text);background:var(--surface);border-radius:var(--radius-field);padding:10px var(--space-2)}.cp-search::placeholder{color:var(--text-muted);font-style:italic}.cp-list{margin:0 var(--space-2);padding:0 var(--space-2);background:var(--surface);border-radius:var(--radius-card);flex:1;overflow-y:auto}.cp-item{align-items:center;gap:var(--space-1);min-height:48px;font-size:var(--text-body);color:var(--text);cursor:pointer;transition:background var(--duration-fast) var(--ease-default);padding:11px 0;display:flex}.cp-item+.cp-item{border-top:var(--rule-row) solid var(--divider)}.cp-flag{flex-shrink:0;font-style:normal;line-height:1}.cp-item:active{background:#0000000d}.cp-item.is-active:after{content:"✓";margin-left:auto;font-weight:600}.cp-empty{padding:var(--space-2) 0;font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);font-style:italic}.recurring-card .ledger-empty{text-align:left}.recurring-row{align-items:center;gap:var(--space-1);cursor:pointer;min-height:48px;transition:background-color var(--duration-fast) var(--ease-default);padding:11px 0;display:flex}.recurring-row:active{background-color:var(--surface-pressed)}.recurring-icon{width:32px;height:32px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.recurring-label-wrap{flex:1;align-items:baseline;gap:6px;display:flex;overflow:hidden}.recurring-label{font-size:var(--text-body);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.recurring-pretax{font-size:var(--text-xs);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap;flex-shrink:0}.recurring-right{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.recurring-amount{font-size:var(--text-body);font-variant-numeric:tabular-nums}.recurring-sub{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.plan-amount-label{flex-direction:column;gap:2px;display:flex}.plan-field-label{font-size:var(--text-body);color:var(--text)}.plan-amount-wrap{border-radius:var(--radius-chip);background:var(--bg);box-shadow:inset 0 0 0 0 var(--text);cursor:text;transition:box-shadow var(--duration-fast) var(--ease-default);align-items:baseline;gap:2px;padding:7px 12px;display:flex}.plan-amount-wrap:focus-within{box-shadow:inset 0 0 0 1.5px var(--text)}.plan-amount-input::placeholder{color:var(--text-muted)}.plan-amount-input{font-size:var(--text-body);text-align:right;field-sizing:content;min-width:2ch;color:var(--text)}.plan-amount-input.is-computed{color:var(--text-muted)}.plan-takehome-row{align-items:baseline}.plan-takehome-label{font-size:var(--text-body);font-weight:var(--w-medium)}.plan-takehome-amount{font-size:var(--text-section);font-weight:var(--w-bold);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.plan-sub{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.plan-add-btn{align-items:center;gap:var(--space-1);font-size:var(--text-body);font-weight:var(--w-medium);color:var(--accent);text-align:left;width:100%;min-height:48px;transition:opacity var(--duration-fast) var(--ease-default);padding:11px 0;display:flex}.plan-add-btn:active{opacity:.6}.plan-add-icon{flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.plan-recurring-form{gap:var(--space-1);padding:var(--space-2) 0;flex-direction:column;display:flex}.section-head-count{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.setting-select{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);text-align:right;cursor:pointer;background:0 0;border:none;max-width:180px}.setting-city{font-size:var(--text-body);color:var(--text-muted);text-align:right;width:160px}.setting-city::placeholder{color:var(--text-muted);font-style:italic}.setting-city:disabled{opacity:.4;cursor:default}@keyframes modal-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}.delete-overlay{z-index:200;background:#00000059;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.delete-modal{background:var(--bg);padding:var(--space-5) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom));width:100%;max-width:var(--max-width);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;gap:var(--space-2);animation:modal-in var(--duration-moderate) var(--ease-modal) both;flex-direction:column;display:flex;position:relative}.delete-modal:before{content:"";border-radius:var(--radius-pill);background:color-mix(in srgb, var(--text) 25%, transparent);width:36px;height:5px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.delete-modal-title{font-family:var(--serif);font-size:var(--text-greeting);font-weight:var(--w-regular);line-height:var(--lh-tight)}.delete-modal-body{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted)}.delete-modal-error{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--accent)}.delete-modal-actions{gap:var(--space-1);margin-top:var(--space-1);flex-direction:column;display:flex}.mfa-qr{width:180px;height:180px;margin:var(--space-2) auto;display:block}.mfa-secret-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);text-align:center}.mfa-secret{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);text-align:center;word-break:break-all;padding-bottom:var(--space-1)}.account-delete-row{color:var(--accent)}.card-footnote{padding:0 var(--space-2)}.rf-text{font-size:var(--text-body);border-bottom:var(--rule-row) solid var(--divider);padding:var(--space-1) 0;width:100%}.rf-text::placeholder{color:var(--text-muted);font-style:italic}.rf-row{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.rf-amount-wrap{align-items:baseline;gap:2px;display:flex}.rf-field-label{font-size:var(--text-body);color:var(--text)}.rf-amount{font-size:var(--text-body);width:90px}.rf-freq-select{font-family:var(--sans);font-size:var(--text-sm);border:1px solid var(--text);border-radius:var(--radius-chip);color:var(--text);font-weight:var(--w-medium);cursor:pointer;background:0 0;padding:3px 8px}.rf-pretax{align-items:center;gap:var(--space-1);cursor:pointer;padding:var(--space-1) 0;-webkit-user-select:none;user-select:none;display:flex}.rf-checkbox{border:1.5px solid var(--text-muted);width:16px;height:16px;transition:border-color var(--duration-fast) var(--ease-default), background-color var(--duration-fast) var(--ease-default);flex-shrink:0;justify-content:center;align-items:center;display:flex}.rf-checkbox.is-checked{border-color:var(--text);background:var(--text)}.rf-checkbox.is-checked:after{content:"";border-left:1.5px solid var(--bg);border-bottom:1.5px solid var(--bg);width:8px;height:5px;display:block;transform:translateY(-1px)rotate(-45deg)}.rf-pretax-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);transition:color var(--duration-fast) var(--ease-default)}.rf-pretax:has(.is-checked) .rf-pretax-label{color:var(--text)}.rf-actions{align-items:center;gap:var(--space-2);display:flex}.rf-save{background:var(--text);color:var(--bg);font-size:var(--text-sm);border-radius:var(--radius-chip);transition:opacity var(--duration-fast) var(--ease-default);padding:7px 14px;font-weight:600}.rf-save:disabled{opacity:.35}.rf-cancel{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--w-light);margin-left:auto}.onboarding{background:var(--bg);min-height:100dvh;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex}.ob-progress{background:var(--divider);flex-shrink:0;width:100%;height:2px}.ob-progress-fill{background:var(--text);height:100%;transition:width var(--duration-moderate) var(--ease-out)}.ob-header{padding:var(--space-3) var(--space-2) var(--space-2);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.ob-header-right{align-items:center;gap:var(--space-2);display:flex}.ob-back{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);padding:var(--space-1) 0}.ob-body{flex-direction:column;flex:1;display:flex;overflow:hidden}@keyframes ob-in-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes ob-in-left{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}.ob-step{flex-direction:column;flex:1;display:flex}.ob-step[data-dir=forward]{animation:ob-in-right var(--duration-base) var(--ease-out) both}.ob-step[data-dir=back]{animation:ob-in-left var(--duration-base) var(--ease-out) both}.ob-step-content{padding:var(--space-2) var(--space-2) 0;gap:var(--space-1);flex-direction:column;flex:1;display:flex}.ob-step-num{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);letter-spacing:.04em;padding-bottom:var(--space-1)}.ob-heading{font-size:var(--text-display);font-weight:var(--w-bold);color:var(--text);line-height:var(--lh-snug);letter-spacing:-.02em}.ob-sub{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);line-height:var(--lh-relaxed);padding-bottom:var(--space-1)}.ob-text-input{font-size:var(--text-body);padding:var(--space-1) 0;border-bottom:var(--rule-row) solid var(--divider);width:100%;color:var(--text);background:0 0}.ob-text-input::placeholder{color:var(--text-muted);font-style:italic}.ob-text-input--right{text-align:right}.ob-country-btn{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);text-align:right;transition:opacity var(--duration-fast) var(--ease-default)}.ob-country-btn:active{opacity:.5}.ob-country-btn--disabled,.ob-country-btn:disabled{color:var(--text-muted);opacity:.4;cursor:default}.ob-city-input{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);text-align:right;background:0 0;width:140px}.ob-city-input::placeholder{color:var(--text-muted);font-style:italic}.ob-city-input:disabled{opacity:.4;cursor:default}.ob-credentials{gap:var(--space-1);flex-direction:column;display:flex}.ob-password-wrap{align-items:baseline;gap:var(--space-1);display:flex}.ob-password-wrap .ob-text-input{flex:1}.ob-password-toggle{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);transition:color var(--duration-fast) var(--ease-default);flex-shrink:0}.ob-password-toggle:active{color:var(--text)}.ob-amount-row{padding:var(--space-2) 0;border-bottom:var(--rule-row) solid var(--divider);align-items:baseline;gap:4px;display:flex}.ob-amount-prefix{font-size:var(--text-display);font-weight:var(--w-medium);color:var(--text-muted);line-height:var(--lh-tight)}.ob-amount-input{font-size:var(--text-display);font-weight:var(--w-medium);color:var(--text);line-height:var(--lh-tight);flex:1;min-width:2ch}.ob-amount-input::placeholder{color:var(--text-muted)}.ob-field{padding:var(--space-1) 0;border-bottom:var(--rule-row) solid var(--divider);justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.ob-field--stacked{align-items:flex-start;gap:var(--space-1);padding-top:var(--space-2);border-bottom:none;flex-direction:column}.ob-field-label{font-size:var(--text-body);color:var(--text);flex-shrink:0}.ob-toggle{font-size:var(--text-body);align-items:center;gap:6px;display:flex}.ob-toggle-btn{font-weight:var(--w-light);color:var(--text-muted);transition:color var(--duration-fast) var(--ease-default);padding:2px 0}.ob-toggle-btn.is-active{font-weight:var(--w-medium);color:var(--text);text-underline-offset:4px;text-decoration:underline}.ob-select{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);text-align:right;cursor:pointer;background:0 0;border:none;max-width:200px}.ob-fs-grid{gap:var(--space-1);grid-template-columns:1fr 1fr;width:100%;display:grid}.ob-fs-btn{align-items:center;gap:var(--space-1);padding:var(--space-1) 0;cursor:pointer;display:flex}.ob-fs-dot{border-radius:var(--radius-full);border:1.5px solid var(--text-muted);width:16px;height:16px;transition:background-color var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default), box-shadow var(--duration-fast) var(--ease-default);flex-shrink:0}.ob-fs-btn.is-active .ob-fs-dot{background:var(--text);border-color:var(--text);box-shadow:inset 0 0 0 3px var(--bg)}.ob-fs-label{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);transition:color var(--duration-fast) var(--ease-default)}.ob-fs-btn.is-active .ob-fs-label{color:var(--text);font-weight:var(--w-regular)}.ob-preview-row{padding:var(--space-1) 0;border-top:var(--rule-row) solid var(--divider);margin-top:var(--space-1);justify-content:space-between;align-items:baseline;display:flex}.ob-preview-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.ob-goals-status{padding-top:var(--space-1);flex-direction:column;gap:4px;display:flex}.ob-goals-feasibility{font-size:var(--text-sm);font-weight:var(--w-regular)}.ob-goals-feasibility--ok{color:var(--text-muted)}.ob-goals-feasibility--warn{color:var(--text);font-style:italic}.ob-goals-feasibility--error{color:var(--accent)}.ob-preview-value{font-size:var(--text-body);font-weight:var(--w-medium);font-variant-numeric:tabular-nums;color:var(--text)}.ob-summary{margin-top:var(--space-2);flex-direction:column;display:flex}.ob-summary-row{padding:var(--space-1) 0;justify-content:space-between;align-items:baseline;display:flex}.ob-summary-label,.ob-summary-amount{font-size:var(--text-body);font-variant-numeric:tabular-nums}.ob-summary-sub .ob-summary-label,.ob-summary-sub .ob-summary-amount{color:var(--text-muted);font-weight:var(--w-light)}.ob-summary-divider{background:var(--text);height:1px;margin:4px 0}.ob-summary-result .ob-summary-label,.ob-summary-result .ob-summary-amount{font-weight:var(--w-medium)}.ob-footer{gap:var(--space-1);padding:var(--space-2) var(--space-2) calc(var(--space-5) + env(safe-area-inset-bottom));flex-direction:column;flex-shrink:0;display:flex}.ob-auth-error{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--accent);text-align:center}.ob-skip{text-align:center;width:100%;font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);padding:var(--space-1) 0;display:block}.ob-recurring-list{margin-top:var(--space-1);flex-direction:column;gap:0;display:flex}.ob-recurring-row{align-items:center;gap:var(--space-1);padding:var(--space-1) 0;border-bottom:var(--rule-row) solid var(--divider);display:flex}.ob-recurring-icon{width:24px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.ob-recurring-label{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.ob-recurring-amount{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.ob-recurring-remove{font-size:18px;line-height:var(--lh-tight);color:var(--text-muted);padding:0 0 0 var(--space-1);transition:color var(--duration-fast) var(--ease-default);flex-shrink:0}.ob-recurring-remove:active{color:var(--text)}.ob-add-btn{font-size:var(--text-body);font-weight:var(--w-light);color:var(--text-muted);padding:var(--space-2) 0;text-align:left;transition:color var(--duration-fast) var(--ease-default)}.ob-add-btn:active{color:var(--text)}.ob-rf{gap:var(--space-1);padding-top:var(--space-1);flex-direction:column;display:flex}.ob-summary-count{font-weight:var(--w-light);color:var(--text-muted)}.ob-summary-recurring-list{padding:0 0 var(--space-1) var(--space-2);flex-direction:column;gap:2px;display:flex}.ob-summary-recurring-item{align-items:center;gap:6px;padding:2px 0;display:flex}.ob-summary-recurring-icon{color:var(--text-muted);flex-shrink:0;align-items:center;width:16px;display:flex}.ob-summary-recurring-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.ob-summary-recurring-amount{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.cc-cat-row{align-items:center;gap:var(--space-1);background:var(--surface);min-height:48px;transition:box-shadow var(--duration-fast) var(--ease-default);list-style:none;display:flex}.cc-cat-row.is-dragging{z-index:1;box-shadow:var(--shadow-lg);border-radius:var(--radius-chip);position:relative}.cc-cat-main{align-items:center;gap:var(--space-1);text-align:left;min-width:0;color:inherit;cursor:pointer;flex:1;padding:11px 0;display:flex}.cc-cat-icon{width:32px;height:32px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:flex}.cc-cat-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.cc-cat-label{font-size:var(--text-body);color:var(--text)}.cc-cat-desc{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-style:italic;overflow:hidden}.cc-grip{width:36px;height:44px;color:var(--text-inactive);cursor:grab;touch-action:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.cc-cat-row.is-dragging .cc-grip{cursor:grabbing;color:var(--text)}.cc-note{margin-top:var(--space-1);padding:0 var(--space-2);font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.cc-sheet-body{gap:var(--space-2)}.cc-field{flex-direction:column;gap:6px;display:flex}.cc-field-label{font-size:var(--text-sm);font-weight:var(--w-light);color:var(--text-muted)}.cc-icon-grid{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.cc-icon-grid .cat-picker__btn{width:100%;height:44px}.cc-move-select{margin-bottom:var(--space-2)}.nav-floating{bottom:calc(var(--space-2) + env(safe-area-inset-bottom));width:min(calc(100vw - var(--space-4)), calc(var(--max-width) - var(--space-4)));gap:var(--space-1);z-index:40;justify-content:space-between;align-items:center;display:flex;position:fixed;left:50%;transform:translate(-50%)}.nav-pill{border-radius:var(--radius-pill);flex:auto;align-items:center;padding:4px;display:flex}.nav-btn{border-radius:var(--radius-pill);min-width:0;color:var(--text);white-space:nowrap;transition:background-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);flex-direction:column;flex:1 1 0;align-items:center;gap:2px;padding:6px 0 5px;display:flex;overflow:hidden}.nav-btn-label{font-size:11px;font-weight:var(--w-medium);line-height:1.1}.nav-btn.is-active{color:var(--accent);background:color-mix(in srgb, var(--text) 7%, transparent)}.nav-btn:active{transform:scale(.94)}.nav-add{border-radius:var(--radius-full);width:60px;height:60px;color:var(--accent);transition:transform var(--duration-fast) var(--ease-default);flex:none;justify-content:center;align-items:center;display:flex}.nav-add:active{transform:scale(.94)}@keyframes nav-confirm{0%{transform:scale(1)}25%{transform:scale(.8)}65%{transform:scale(1.12)}to{transform:scale(1)}}.nav-add.is-confirming{animation:nav-confirm var(--duration-slow) var(--ease-bounce) both}.nav-add.is-confirming:active{transform:none}.profile-btn{top:calc(var(--space-3) + env(safe-area-inset-top));right:max(var(--space-2), calc((100vw - var(--max-width)) / 2 + var(--space-2)));z-index:40;position:fixed}.profile-btn.is-hidden{opacity:0;pointer-events:none}.ios-banner{top:calc(var(--space-3) + env(safe-area-inset-top));left:var(--space-2);max-width:calc(100% - var(--space-2) * 2);align-items:center;gap:var(--space-1);height:40px;padding:0 40px 0 var(--space-2);background:var(--text);color:var(--bg);border-radius:var(--radius-pill);box-shadow:var(--shadow-md);z-index:40;transition:transform var(--duration-instant) var(--ease-default);text-decoration:none;display:flex;position:fixed}.ios-banner:active{transform:scale(.99)}.ios-banner-text{font-size:var(--text-sm);font-weight:var(--w-medium);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ios-banner-close{right:var(--space-1);width:24px;height:24px;color:var(--bg);opacity:.6;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.ios-banner-close:active{opacity:1}
