.control-input,.control-select,.control-group{border:1.5px solid var(--border);border-radius:var(--radius-m);background:var(--bg);width:100%;min-width:0;min-height:48px;color:var(--ink);transition:border-color .12s,box-shadow .12s}.control-input,.control-select{max-width:100%;padding:11px 13px;font-size:16px;font-weight:400;line-height:24px;display:block}.control-input::placeholder{color:var(--muted);opacity:1}.control-input:hover:not(:disabled):not([readonly]),.control-select:hover:not(:disabled){border-color:var(--muted)}.control-group:hover:has(.control-input:not(:disabled):not([readonly])){border-color:var(--muted)}.control-input:focus,.control-select:focus,.control-group:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 18%, transparent);outline:none}.control-input:disabled,.control-select:disabled{background:var(--surface-2);color:var(--muted);cursor:not-allowed;box-shadow:none}.control-group:has(.control-input:disabled){background:var(--surface-2);color:var(--muted);cursor:not-allowed;box-shadow:none}.control-input[readonly]{background:var(--surface-2);color:var(--muted)}.control-input[aria-invalid=true],.control-select[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}.control-input:user-invalid{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}.control-select:user-invalid{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}.control-group:has(.control-input[aria-invalid=true],.control-input:user-invalid){border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}.control-select-wrapper{vertical-align:middle;width:100%;min-width:0;display:inline-flex;position:relative}.control-select{appearance:none;cursor:pointer;text-overflow:ellipsis;padding-right:40px}.control-select-wrapper>svg{color:var(--muted);pointer-events:none;position:absolute;top:50%;right:13px;transform:translateY(-50%)}.control-select-wrapper:has(select:disabled)>svg{opacity:.5}.control-group{align-items:center;gap:10px;padding:0 13px;display:inline-flex}.control-group>.control-input{width:0;box-shadow:none;background:0 0;border:0;border-radius:0;outline:none;flex:1;padding-left:0;padding-right:0}.control-addon{color:var(--muted);flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:400;display:inline-flex}.control-input[type=date],.control-input[type=month]{appearance:none;font-variant-numeric:tabular-nums;text-align:left}.control-input::-webkit-date-and-time-value{text-align:left;min-height:24px}.control-input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6}.control-input[type=color]{cursor:pointer;height:48px;padding:7px}.control-input[type=color]::-webkit-color-swatch-wrapper{padding:0}.control-input[type=color]::-webkit-color-swatch{border:0;border-radius:6px}.control-input[type=color]::-moz-color-swatch{border:0;border-radius:6px}@media (prefers-reduced-motion:reduce){.control-input,.control-select,.control-group{transition:none}}@font-face{font-family:Geologica;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geologica-latin-wght-normal-BBL8hQxZ.woff2)format("woff2-variations")}@font-face{font-family:Onest;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/onest-latin-wght-normal-Dun_Rd-l.woff2)format("woff2-variations")}@property --sky-top{syntax:"<color>";inherits:true;initial-value:#8fcbeb}@property --sky-bot{syntax:"<color>";inherits:true;initial-value:#daf0f9}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef3f5;--surface:#f9fbfc;--surface-2:#e6eef2;--surface-3:#d8e4ea;--ink:#10283a;--muted:#4a6273;--border:#cbd8e0;--border-strong:#a9bcc8;--primary:#164c70;--primary-hover:#0f3b58;--on-primary:#fff;--focus:#0b6fb8;--green:#24704f;--green-bg:#ddefe5;--danger:#a2324b;--danger-bg:#f7e1e6;--amber:#6e4300;--amber-bg:#f5e6c4;--bar-income:#24704f;--bar-expense:#164c70;--chart-muted:#9db0bd;--heat-1:#d6eaf5;--heat-2:#9ccbe6;--heat-3:#4e93c2;--heat-4:#164c70;--heat-ink-1:#10283a;--heat-ink-2:#10283a;--heat-ink-3:#fff;--heat-ink-4:#fff;--split-fixed:#164c70;--split-variable:#9ccbe6;--chart-balance:#a86f12;--shadow-sm:0 1px 2px #10283a0f;--shadow-md:0 8px 28px #164c701f;--shadow-lg:0 24px 70px #10283a3d;--backdrop:#06141e61;--cat-1:#a86f12;--cat-2:#6752c2;--cat-3:#187c82;--cat-4:#c4552e;--cat-5:#24704f;--cat-6:#7a6f66;--cat-7:#2f7fb8;--cat-8:#8e4a8c;--cat-9:#3d5a9e;--sky-top:#8fcbeb;--sky-bot:#daf0f9;--sky-ink:#0c2c42;--cloud:#ffffffe6;--sun:#ffd66b;--sun-opacity:1;--font-display:"Geologica", ui-sans-serif, system-ui, sans-serif;--font-ui:"Onest", ui-sans-serif, system-ui, sans-serif;--radius-s:10px;--radius-m:14px;--radius:16px;--radius-add:22px;--radius-l:28px;--ease-air:cubic-bezier(.2, .7, .2, 1);--dur-1:.16s;--dur-2:.28s;--dur-sky:1.2s;--nav-height:72px;font-family:var(--font-ui);color:var(--ink);background:var(--bg);font-synthesis:none;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c1822;--surface:#13222e;--surface-2:#192b39;--surface-3:#22384a;--ink:#e3edf3;--muted:#9db3c2;--border:#25394a;--border-strong:#35506a;--primary:#9cd3f0;--primary-hover:#c2e5f7;--on-primary:#06202f;--focus:#9cd3f0;--green:#7fd1a6;--green-bg:#12352a;--danger:#f29bae;--danger-bg:#3a1823;--amber:#f2d08a;--amber-bg:#3a2e14;--bar-income:#7fd1a6;--bar-expense:#9cd3f0;--chart-muted:#4a6273;--heat-1:#183f5e;--heat-2:#22608a;--heat-3:#5fa3d0;--heat-4:#9cd3f0;--heat-ink-1:#fff;--heat-ink-2:#fff;--heat-ink-3:#06202f;--heat-ink-4:#06202f;--split-fixed:#9cd3f0;--split-variable:#22608a;--chart-balance:#e6b657;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 28px #00000059;--shadow-lg:0 24px 70px #00000080;--backdrop:#02080e99;--cat-1:#e6b657;--cat-2:#b4a7f2;--cat-3:#6ccfd4;--cat-4:#f29a72;--cat-5:#7fd1a6;--cat-6:#c2b6aa;--cat-7:#8cc8ee;--cat-8:#d9a0d6;--cat-9:#a3b8f0;--sky-top:#071827;--sky-bot:#183f5e;--sky-ink:#e6f2fa;--cloud:#aac8de2e;--sun:#f2e4ae;--sun-opacity:.95}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c1822;--surface:#13222e;--surface-2:#192b39;--surface-3:#22384a;--ink:#e3edf3;--muted:#9db3c2;--border:#25394a;--border-strong:#35506a;--primary:#9cd3f0;--primary-hover:#c2e5f7;--on-primary:#06202f;--focus:#9cd3f0;--green:#7fd1a6;--green-bg:#12352a;--danger:#f29bae;--danger-bg:#3a1823;--amber:#f2d08a;--amber-bg:#3a2e14;--bar-income:#7fd1a6;--bar-expense:#9cd3f0;--chart-muted:#4a6273;--heat-1:#183f5e;--heat-2:#22608a;--heat-3:#5fa3d0;--heat-4:#9cd3f0;--heat-ink-1:#fff;--heat-ink-2:#fff;--heat-ink-3:#06202f;--heat-ink-4:#06202f;--split-fixed:#9cd3f0;--split-variable:#22608a;--chart-balance:#e6b657;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 28px #00000059;--shadow-lg:0 24px 70px #00000080;--backdrop:#02080e99;--cat-1:#e6b657;--cat-2:#b4a7f2;--cat-3:#6ccfd4;--cat-4:#f29a72;--cat-5:#7fd1a6;--cat-6:#c2b6aa;--cat-7:#8cc8ee;--cat-8:#d9a0d6;--cat-9:#a3b8f0;--sky-top:#071827;--sky-bot:#183f5e;--sky-ink:#e6f2fa;--cloud:#aac8de2e;--sun:#f2e4ae;--sun-opacity:.95}*{box-sizing:border-box}body{background:var(--bg);min-width:320px;margin:0;font-size:15px;line-height:1.5}button,input,select{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;min-width:44px;min-height:44px}button:disabled,.disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2,h3{margin-bottom:0;line-height:1.25}h1,h2{font-family:var(--font-display);font-weight:400}h1{letter-spacing:-.02em;font-size:30px}h2{letter-spacing:-.01em;font-size:22px}h3{font-size:15px;font-weight:600}strong{font-weight:600}strong,h1,h2,.entry-amount,dd{font-variant-numeric:tabular-nums}svg{flex-shrink:0}input[type=checkbox]{width:22px;height:22px;accent-color:var(--primary);flex-shrink:0;margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.positive{color:var(--green)}.negative{color:var(--danger)}.warn-text{color:var(--amber)}.muted{color:var(--muted)}.hint{color:var(--muted);margin-bottom:0;font-size:13px;line-height:1.55}.button{background:var(--surface);border:1.5px solid var(--border);text-align:center;min-height:46px;transition:background var(--dur-1) var(--ease-air);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:15px;font-weight:600;display:inline-flex}.button:hover:not(:disabled){background:var(--surface-2)}.button.primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.button.primary:hover:not(:disabled){background:var(--primary-hover)}.button.danger{color:var(--danger);background:0 0;border-color:#0000}.button.danger:hover:not(:disabled){background:var(--danger-bg)}.button.full{width:100%}.button.small{min-height:40px;padding:6px 16px;font-size:14px}.button-row{flex-wrap:wrap;gap:10px;display:flex}.text-button{color:var(--primary);align-items:center;gap:6px;padding:6px 2px;font-size:14px;font-weight:600;display:inline-flex}.text-button:hover:not(:disabled){text-underline-offset:3px;text-decoration:underline}.text-button.start{align-self:flex-start}.icon-button{background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.icon-button:hover:not(:disabled){background:color-mix(in srgb, var(--ink) 11%, transparent)}.inline-icon{vertical-align:-3px}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.chip{border-radius:var(--radius-m);border:1.5px solid var(--border);background:var(--surface);white-space:nowrap;align-items:center;gap:8px;min-height:44px;padding:6px 14px;font-size:14px;font-weight:500;display:inline-flex}.chip small{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.chip[aria-pressed=true]{border-color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, var(--surface));font-weight:650}.pill{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.badge{border-radius:6px;padding:1px 7px;font-size:12px;font-weight:600;display:inline-flex}.badge.warn{background:var(--amber-bg);color:var(--amber)}.segmented{background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:999px;gap:2px;padding:3px;display:flex}.segmented button{min-height:40px;color:var(--muted);transition:background var(--dur-1) var(--ease-air);border-radius:999px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:15px;font-weight:600;display:inline-flex}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #10283a24}.segmented button[data-kind=income][aria-pressed=true]{color:var(--green)}.segmented.compact button{min-height:36px;font-size:14px}.error,.warning,.success,.notice{border-radius:var(--radius);overflow-wrap:anywhere;margin:0;padding:11px 14px;font-size:14px;line-height:1.55}.error,.warning{background:var(--danger-bg);color:var(--danger)}.success{background:var(--green-bg);color:var(--green)}.notice{background:var(--surface);border:1px solid var(--border)}.main-content>.warning{margin-bottom:16px}.frequent{margin-top:-6px}.format-help summary{cursor:pointer;min-height:32px;font-size:14px;font-weight:600}.format-help p{margin-top:6px}.toast-region{z-index:40;left:16px;right:16px;bottom:calc(var(--nav-height) + 16px + env(safe-area-inset-bottom));pointer-events:none;justify-content:center;display:flex;position:fixed}.toast{pointer-events:auto;border-radius:var(--radius);background:var(--ink);width:100%;max-width:520px;min-height:52px;color:var(--bg);box-shadow:var(--shadow-md);animation:toast-in var(--dur-2) var(--ease-air);align-items:center;gap:12px;padding:6px 6px 6px 16px;font-size:14px;display:flex}.toast span{flex:1;padding:8px 0}.toast button{color:inherit;text-underline-offset:3px;border-radius:10px;padding:0 14px;font-size:14px;font-weight:700;text-decoration:underline}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.app-shell{min-height:100dvh}.sidebar{display:none}.brand{font-family:var(--font-display);letter-spacing:-.02em;align-items:center;gap:10px;font-size:26px;font-weight:400;display:flex}.brand-mark{color:#0c2c42;width:36px;height:36px;font-family:var(--font-display);background:linear-gradient(#8fcbeb,#daf0f9);border-radius:12px;justify-content:center;align-items:center;font-size:24px;font-weight:400;line-height:1;display:inline-flex}.main-content{max-width:640px;padding:calc(14px + env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) calc(var(--nav-height) + 40px + env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));margin:0 auto}.page-header{gap:8px;margin-bottom:8px;display:grid}.page-header h1{margin:0}.month-bar{align-items:center;gap:4px;min-width:0;display:flex}.month-picker{align-items:center;min-width:0;margin-left:-10px;display:flex}.month-picker>button{border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.month-picker>button:hover:not(:disabled){background:color-mix(in srgb, currentColor 10%, transparent)}.month-label{min-width:0;min-height:44px;font-family:var(--font-display);cursor:pointer;align-items:center;padding:0 2px;font-size:17px;font-weight:500;display:flex;position:relative}.month-label>span{white-space:nowrap}.month-year{opacity:.8;font-weight:300}.month-label>span:first-letter{text-transform:uppercase}.month-label>.control-input{opacity:0;cursor:pointer;position:absolute;inset:0}.month-picker:focus-within .month-label{outline:3px solid var(--focus);outline-offset:2px;border-radius:8px}.today-chip.chip{border-color:color-mix(in srgb, currentColor 35%, transparent);min-height:36px;color:inherit;background:0 0;border-radius:999px}.demo-pill{white-space:nowrap;border:1.5px solid color-mix(in srgb, currentColor 30%, transparent);border-radius:999px;flex-shrink:0;align-items:center;gap:2px;min-height:40px;padding-left:14px;font-size:13px;font-weight:600;display:inline-flex}.demo-pill button{text-underline-offset:3px;min-height:38px;padding:0 14px;font-weight:700;text-decoration:underline}.main-content>.demo-pill{background:var(--amber-bg);color:var(--amber);border-color:#0000;margin-bottom:12px}.bottom-nav{z-index:20;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding:4px max(6px, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(6px, env(safe-area-inset-left));background:var(--bg);border-top:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr)) 76px repeat(2,minmax(0,1fr));align-items:center;display:grid;position:fixed;bottom:0;left:0;right:0}@supports ((-webkit-backdrop-filter:blur(16px)) or (backdrop-filter:blur(16px))){.bottom-nav{background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(16px)}}.bottom-nav button{min-width:0;min-height:56px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:2px 0;font-size:12px;font-weight:500;display:flex}.bottom-nav button[aria-current=page]{color:var(--ink);font-weight:700}.bottom-nav .nav-add{border-radius:var(--radius-add);background:var(--primary);width:60px;height:60px;min-height:60px;color:var(--on-primary);box-shadow:0 8px 20px -8px color-mix(in srgb, var(--primary) 70%, transparent);transition:transform var(--dur-1) var(--ease-air);justify-self:center}.bottom-nav .nav-add:active:not(:disabled){transform:scale(.94)}.skeleton{gap:18px;padding-top:20px;display:grid}.skeleton span{border-radius:var(--radius);background:linear-gradient(100deg, var(--surface-2) 30%, var(--surface) 50%, var(--surface-2) 70%);background-size:300% 100%;height:180px;animation:1.4s linear infinite shimmer}.skeleton span:first-child{height:48px}@keyframes shimmer{to{background-position:-150% 0}}.loading{height:100dvh;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.card{border-top:1px solid var(--border);background:0 0;min-width:0;padding:20px 0 22px}.card-heading{justify-content:space-between;align-items:center;gap:12px;min-height:32px;margin-bottom:12px;display:flex}.empty{flex-direction:column;align-items:flex-start;gap:8px;padding:4px 0;display:flex}.empty p{color:var(--muted);margin:0;font-size:14px}.empty .button{margin-top:6px}.large-number{font-family:var(--font-display);letter-spacing:-.02em;overflow-wrap:anywhere;margin:2px 0 10px;font-size:34px;font-weight:300;line-height:1.1;display:block}.progress{background:color-mix(in srgb, var(--ink) 9%, transparent);border-radius:4px;height:8px;display:block;position:relative}.progress>span{border-radius:inherit;background:var(--primary);height:100%;display:block}.progress.cat>span{background:var(--cat,var(--primary))}.progress.near>span{background:var(--amber)}.progress.over>span{background:repeating-linear-gradient(-45deg, var(--danger) 0 5px, color-mix(in srgb, var(--danger) 70%, var(--surface)) 5px 8px)}.category-icon{--cat:var(--cat-6);background:color-mix(in srgb, var(--cat) 16%, var(--surface));width:40px;height:40px;color:color-mix(in srgb, var(--cat) 80%, var(--ink));border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.category-icon.small{border-radius:9px;width:30px;height:30px}.shape{flex-shrink:0}.entry-row{text-align:left;border-radius:12px;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;width:calc(100% + 12px);min-height:60px;margin:0 -6px;padding:8px 6px;display:grid}.entry-row:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.entry-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.entry-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.entry-copy>span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.entry-amount{text-align:right;white-space:nowrap;font-size:15px;font-weight:600}.origin-icon{vertical-align:-2px;margin-left:6px}.swipe-row{touch-action:pan-y;border-radius:12px;margin:0 -6px;position:relative;overflow:hidden}.swipe-row .entry-row{background:var(--bg);width:100%;transition:transform var(--dur-1) ease-out;touch-action:pan-y;margin:0;position:relative}.swipe-row .entry-row.dragging{transition:none}.swipe-action{background:var(--danger-bg);color:var(--danger);justify-content:flex-end;align-items:center;gap:6px;padding-right:18px;font-size:14px;font-weight:650;display:flex;position:absolute;inset:0}.swipe-action.armed{background:var(--danger);color:var(--surface)}.entry-amount small{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400;display:block}.dashboard,.dashboard-main,.analysis{align-items:start;display:grid}.dashboard-side{display:contents}.analysis{gap:0}.notice-banner{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0;padding:12px 14px;display:flex}.notice-banner>span:nth-child(2){flex:1;min-width:180px;display:grid}.notice-banner small{color:var(--muted);font-size:13px}.banner-actions{align-items:center;gap:8px;display:flex}.sky-header{margin:calc(-14px - env(safe-area-inset-top)) calc(-1 * max(20px, env(safe-area-inset-right))) 0 calc(-1 * max(20px, env(safe-area-inset-left)))}.sky-tone[data-tone=steady]{--sky-top:#a3b8c8;--sky-bot:#e0e8ee;--sky-ink:#142a3a;--cloud:#fff;--sun-opacity:.7}.sky-tone[data-tone=fast]{--sky-top:#8a86a0;--sky-bot:#d2cfdc;--sky-ink:#1b1730;--cloud:#eceaf1;--sun-opacity:.3}.sky-tone[data-tone=over]{--sky-top:#3b3752;--sky-bot:#6b6486;--sky-ink:#fff;--cloud:#57526e;--sun-opacity:0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .sky-tone[data-tone=steady]{--sky-top:#0f1922;--sky-bot:#2a3a48;--sky-ink:#e6f2fa;--cloud:#becdda38}:root:not([data-theme=light]) .sky-tone[data-tone=fast]{--sky-top:#14111c;--sky-bot:#352f47;--sky-ink:#eeeaf6;--cloud:#c8bee13d}:root:not([data-theme=light]) .sky-tone[data-tone=over]{--sky-top:#100b15;--sky-bot:#40273f;--sky-ink:#fbeff2;--cloud:#785a788c}:root:not([data-theme=light]) .sky-tone:is([data-tone=calm],[data-tone=dawn],[data-tone=steady]) .stars{opacity:.8}:root:not([data-theme=light]) .sky-tone{--strip-track:#ffffff14;--strip-gap:#0c1822}}:root[data-theme=dark] .sky-tone[data-tone=steady]{--sky-top:#0f1922;--sky-bot:#2a3a48;--sky-ink:#e6f2fa;--cloud:#becdda38}:root[data-theme=dark] .sky-tone[data-tone=fast]{--sky-top:#14111c;--sky-bot:#352f47;--sky-ink:#eeeaf6;--cloud:#c8bee13d}:root[data-theme=dark] .sky-tone[data-tone=over]{--sky-top:#100b15;--sky-bot:#40273f;--sky-ink:#fbeff2;--cloud:#785a788c}:root[data-theme=dark] .sky-tone:is([data-tone=calm],[data-tone=dawn],[data-tone=steady]) .stars{opacity:.8}:root[data-theme=dark] .sky-tone{--strip-track:#ffffff14;--strip-gap:#0c1822}.sky{isolation:isolate;transition:--sky-top var(--dur-sky) var(--ease-air), --sky-bot var(--dur-sky) var(--ease-air), color var(--dur-sky) var(--ease-air);padding:calc(10px + env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) 22px max(20px, env(safe-area-inset-left));color:var(--sky-ink);background:linear-gradient(180deg, var(--sky-top), var(--sky-bot) 92%);position:relative;overflow:hidden}.sky:after{content:"";background:linear-gradient(180deg, transparent, var(--bg));z-index:-1;height:28px;position:absolute;inset:auto 0 0}.sky-clouds{z-index:-1;pointer-events:none;position:absolute;inset:0}.cloud{fill:var(--cloud);opacity:.6;animation:linear infinite alternate drift;position:absolute}@keyframes drift{0%{translate:-14px}to{translate:22px}}.sky-clouds.paused .cloud{animation-play-state:paused}.stars{fill:#fff;opacity:0;width:100%;height:300px;position:absolute;inset:0}.sky-top{justify-content:space-between;align-items:center;gap:8px;min-height:48px;display:flex}.sky-verdict{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;align-items:center;gap:14px;max-width:18ch;margin:18px 0 0;font-size:clamp(27px,8vw,34px);font-weight:300;line-height:1.12;display:flex}.tone-glyph{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.sky-detail{max-width:40ch;margin:10px 0 0;font-size:15px;line-height:1.45}.sky-detail.small{opacity:.85;font-size:13px}.sky .button-row{margin-top:20px}.sky-toggle{background:color-mix(in srgb, var(--sky-ink) 10%, transparent);border:1.5px solid color-mix(in srgb, var(--sky-ink) 22%, transparent);border-radius:999px;align-items:center;gap:8px;margin-top:14px;padding:0 16px;font-size:14px;font-weight:600;display:inline-flex}.sky-toggle svg{transition:transform var(--dur-2) var(--ease-air)}.sky-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.month-strip{margin:26px 0 0}.strip-track{background:var(--strip-track,#ffffffb8);height:36px;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--sky-ink) 14%, transparent);border-radius:12px;display:flex;position:relative;overflow:hidden}.strip-track.over{box-shadow:inset 0 0 0 2px var(--danger)}.strip-piece{border-right:2px solid var(--strip-gap,#fffc);transform-origin:0;min-width:3px;height:100%;animation:strip-in var(--dur-2) var(--ease-air) both;justify-content:center;align-items:center;display:flex;position:relative}.strip-piece.rest,.strip-piece.pending{background:repeating-linear-gradient(-45deg, var(--chart-muted) 0 4px, color-mix(in srgb, var(--chart-muted) 55%, #fff) 4px 7px)!important}.strip-shape{fill:#fff}.strip-shape path{fill:var(--strip-gap,#fff)!important;stroke:none!important}@keyframes strip-in{0%{opacity:0;transform:scaleX(.6)}}.strip-track{overflow:visible}.strip-track>.strip-piece:first-child{border-radius:12px 0 0 12px}.strip-drop{background:var(--surface);width:30px;height:30px;box-shadow:var(--shadow-md);animation:strip-drop .76s var(--ease-air) both;pointer-events:none;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;left:50%;translate:-50% -50%}@keyframes strip-drop{0%{opacity:0;transform:translateY(-90px)scale(1.2)}55%{opacity:1;transform:translateY(0)scale(1)}75%{transform:translateY(0)scale(1.08)}to{opacity:0;transform:translateY(0)scale(.4)}}.strip-today{background:var(--sky-ink);border-radius:2px;width:3px;margin-left:-1.5px;position:absolute;top:-4px;bottom:-4px}.month-strip figcaption{font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:6px;font-size:12px;font-weight:500;display:flex;position:relative}.strip-today-label{white-space:nowrap;font-weight:700;position:absolute;top:0;transform:translate(-50%)}.sky-figures{transition:grid-template-rows var(--dur-2) var(--ease-air);grid-template-rows:0fr;display:grid}.sky-figures.open{grid-template-rows:1fr}.sky-figures>div{min-height:0;overflow:hidden}.sky-figures:not(.open)>div{visibility:hidden}.sky-figures dl{padding:4px max(20px, env(safe-area-inset-right)) 8px max(20px, env(safe-area-inset-left));grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.sky-figures dl>div{border-bottom:1px solid var(--border);min-width:0;padding:12px 0}.sky-figures dl>div:nth-child(2n){padding-left:12px}.sky-figures .wide{grid-column:1/-1}.sky-figures dt{color:var(--muted);font-size:13px}.sky-figures dt:first-letter{text-transform:uppercase}.sky-figures dd{overflow-wrap:anywhere;margin:2px 0 0;font-size:18px;font-weight:600}.balance-amount{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:proportional-nums;line-height:1.1;font-size:clamp(34px,10vw,44px)!important;font-weight:300!important}.sky-figures .expense{color:var(--ink)}.dashboard-main>.card:first-of-type,.dashboard-main>.notice-banner+.card{border-top:0}.tray{z-index:15;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom));margin:0 calc(-1 * max(20px, env(safe-area-inset-right))) 0 calc(-1 * max(20px, env(safe-area-inset-left)));padding:10px max(20px, env(safe-area-inset-right)) 10px max(20px, env(safe-area-inset-left));background:color-mix(in srgb, var(--bg) 92%, transparent);border-top:1px solid var(--border);order:2;gap:8px;display:grid;position:sticky}@supports ((-webkit-backdrop-filter:blur(16px)) or (backdrop-filter:blur(16px))){.tray{background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:blur(16px)}}.tray-pending{align-items:center;gap:10px;font-size:14px;display:flex}.tray-pending strong{flex:1}.tray-frequent{scrollbar-width:none;margin:0 calc(-1 * max(20px, env(safe-area-inset-right))) 0 calc(-1 * max(20px, env(safe-area-inset-left)));padding:0 max(20px, env(safe-area-inset-right)) 0 max(20px, env(safe-area-inset-left));gap:8px;display:flex;overflow-x:auto}.tray-frequent .chip{flex:none}.recent-card{order:1}.recent-card .card-heading{margin-bottom:4px}.forecast-figure{margin:0;font-size:16px}.forecast-figure strong{font-family:var(--font-display);white-space:nowrap;font-size:22px;font-weight:400}.forecast-range{height:30px;margin:14px 0 6px;position:relative}.forecast-range:before{content:"";background:var(--border);height:2px;position:absolute;top:14px;left:0;right:0}.forecast-band{background:color-mix(in srgb, var(--primary) 18%, transparent);border:1.5px solid color-mix(in srgb, var(--primary) 55%, transparent);border-radius:9px;min-width:6px;height:18px;position:absolute;top:6px}.forecast-band.negative{background:color-mix(in srgb, var(--danger) 16%, transparent);border-color:var(--danger)}.forecast-point{background:var(--primary);border-radius:2px;width:4px;height:28px;margin-left:-2px;position:absolute;top:1px}.forecast-zero{background:var(--muted);width:1px;height:22px;position:absolute;top:4px}.forecast-trust{color:var(--muted);align-items:center;gap:8px;margin:8px 0 0;font-size:14px;display:flex}.trust-dots{gap:3px;display:inline-flex}.trust-dots i{border:1.5px solid var(--muted);border-radius:50%;width:8px;height:8px}.trust-dots i.on{background:var(--muted)}.forecast-card>.hint{margin-top:6px}.forecast-front{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);margin-top:14px;padding:14px}.forecast-front p{margin:0 0 10px;font-size:14px}.budget-list{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr);margin:14px 0 0;padding:0;list-style:none;display:grid}.budget-row{border-bottom:1px solid var(--border);text-align:left;align-items:center;gap:12px;width:100%;padding:12px 0;display:flex}.budget-list li:last-child .budget-row{border-bottom:0}.budget-row-copy{flex:1;gap:6px;min-width:0;display:grid}.budget-row-top{justify-content:space-between;gap:12px;font-size:14px;display:flex}.budget-row-top strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.budget-row-top>span{text-align:right;overflow-wrap:anywhere;flex-shrink:0;max-width:60%;font-size:13px;font-weight:600}.budget-row small{color:var(--muted);font-size:12px}.budgets-card>.button{margin-top:10px}.budget-empty p{color:var(--muted);margin-bottom:14px;font-size:14px}.entries-view{gap:12px;display:grid}.filters{gap:10px;display:grid}.filter-chips{scrollbar-width:none;gap:8px;margin:0 -20px;padding:0 20px 2px;display:flex;overflow-x:auto}.filter-chips::-webkit-scrollbar{display:none}.filter-chips .chip-row{flex-wrap:nowrap}.shape-filter{scrollbar-width:none;gap:8px;margin:0 -20px;padding:0 20px 2px;display:flex;overflow-x:auto}.shape-filter .chip{flex:none;min-height:40px}.filter-chips .control-select-wrapper{flex-shrink:0;width:auto}.filter-chips .control-select{border-color:var(--border-strong);border-radius:999px;max-width:220px;min-height:38px;padding:6px 36px 6px 14px;font-size:16px;font-weight:500}.filter-chips .control-select.active{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.filter-chips .control-select-wrapper:has(.active)>svg{color:var(--on-primary)}.list-summary{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 14px;min-height:32px;font-size:14px;display:flex}.list-totals{color:var(--ink);gap:10px;font-weight:600;display:flex}.list-summary .text-button{margin-left:auto}.day-group{padding:6px 14px 8px}.day-heading{color:var(--muted);border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;margin-bottom:4px;padding:8px 0 4px;font-size:13px;font-weight:600;display:flex}.day-heading>span:last-child{font-variant-numeric:tabular-nums}.legend{margin:0;padding:0;list-style:none;display:grid}.legend-button{text-align:left;border-radius:10px;grid-template-columns:10px minmax(0,1fr) auto auto;align-items:center;gap:10px;width:calc(100% + 12px);margin:0 -6px;padding:8px 6px;font-size:14px;display:grid}.legend-button:hover{background:var(--surface-2)}.legend-dot{border-radius:3px;width:10px;height:10px}.legend-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.legend-share{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.chart-key{color:var(--muted);gap:12px;font-size:12px;display:flex}.chart-key span{align-items:center;gap:5px;display:flex}.trend-figures{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 8px;padding-top:12px;display:grid}.trend-figures dt{color:var(--muted);font-size:12px}.trend-figures dd{overflow-wrap:anywhere;margin:0;font-size:15px;font-weight:650}.comparison-range{margin:8px 0 12px}.change-chart{gap:4px;display:grid}.change-row{text-align:left;border-radius:12px;align-items:flex-start;gap:12px;width:calc(100% + 12px);margin:0 -6px;padding:10px 6px;display:flex}.change-row:hover{background:var(--surface-2)}.change-body{flex:1;gap:6px;min-width:0;display:grid}.change-heading{justify-content:space-between;gap:12px;font-size:14px;display:flex}.change-heading>span{overflow-wrap:anywhere;min-width:0}.change-track{background:var(--surface-3);border-radius:999px;height:6px;display:block;overflow:hidden}.change-track>span{border-radius:inherit;height:100%;display:block}.change-track .up{background:var(--bar-expense)}.change-track .down{background:var(--bar-income)}.change-row small{color:var(--muted);font-size:12px}.weekly-review>.muted{margin:0;font-size:13px}.weekly-delta{color:var(--muted);margin-bottom:8px;font-size:14px}.weekly-delta span{font-weight:650}.weekly-changes,.merchant-changes{margin:0;padding:0;list-style:none;display:grid}.weekly-change-button{text-align:left;border-radius:10px;align-items:center;gap:12px;width:calc(100% + 12px);margin:0 -6px;padding:6px;font-size:14px;display:flex}.weekly-change-button:hover{background:var(--surface-2)}.weekly-change-button>span:nth-child(2){overflow-wrap:anywhere;flex:1;min-width:0}.comparison-detail{gap:12px;display:grid}.comparison-detail>p,.comparison-detail>h3{margin:0}.comparison-detail>section{margin-top:12px}.comparison-detail>section>h3{margin-bottom:2px}.detail-total{font-size:18px;font-weight:650}.merchant-changes li{border-bottom:1px solid var(--border)}.merchant-change-button{text-align:left;overflow-wrap:anywhere;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;width:100%;padding:10px;display:grid}.merchant-change-button:hover{background:var(--surface-2)}.merchant-change-button[aria-pressed=true]{background:var(--green-bg);box-shadow:inset 0 0 0 1px var(--green)}.merchant-change-name{grid-column:1}.merchant-change-amounts{color:var(--muted);grid-column:1;font-size:13px}.merchant-change-delta{grid-area:1/2/3;align-self:center;font-weight:650}.filter-context{color:var(--muted);overflow-wrap:anywhere;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.sheet{background:var(--surface);color:var(--ink);width:100%;max-width:100%;max-height:calc(100dvh - env(safe-area-inset-top) - 16px);border-radius:var(--radius-l) var(--radius-l) 0 0;box-shadow:var(--shadow-lg);overscroll-behavior:contain;animation:sheet-up var(--dur-2) var(--ease-air);border:0;margin:auto 0 0;padding:0;overflow:auto}.sheet::backdrop{background:var(--backdrop)}@keyframes sheet-up{0%{opacity:0;transform:translateY(40px)}}.sheet-content{padding:0 20px calc(16px + env(safe-area-inset-bottom))}.sheet-header{z-index:2;background:var(--surface);justify-content:space-between;align-items:center;gap:8px;margin:0 -20px 6px;padding:18px 20px 12px;display:flex;position:sticky;top:0}.sheet-handle{background:var(--border-strong);border-radius:2px;width:36px;height:4px;margin-left:-18px;position:absolute;top:7px;left:50%}.sheet-header h2{font-size:22px}.stack-form{flex-direction:column;gap:18px;display:flex}.stack-form>label,.field>label,.mapping-grid label,.recovery label,.remembered-categories>label{flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.field{gap:10px;display:grid}.stack-form p{margin-bottom:0}fieldset{border:0;min-width:0;margin:0;padding:0}legend{margin-bottom:8px;padding:0;font-size:14px;font-weight:600}.amount-field .control-group{border:0;border-bottom:2px solid var(--border);min-height:84px;box-shadow:none;background:0 0;border-radius:0;padding:0 4px}.amount-field .control-group:focus-within{border-bottom-color:var(--focus);box-shadow:none}.amount-field .control-input{font-family:var(--font-display);letter-spacing:-.03em;text-align:right;font-variant-numeric:tabular-nums;font-size:56px;font-weight:200;line-height:1.1}.amount-field .control-addon{font-family:var(--font-display);color:var(--muted);font-size:28px;font-weight:300}.category-chips>div{flex-wrap:wrap;gap:8px;display:flex}.category-chips button{border:1.5px solid var(--border);border-radius:var(--radius-m);background:var(--surface);align-items:center;gap:8px;max-width:100%;min-height:46px;padding:6px 12px 6px 7px;font-size:14px;font-weight:500;display:inline-flex}.category-chips button>span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.category-chips button[aria-pressed=true]{border-color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, var(--surface));font-weight:650}.category-chips .later-chip{color:var(--muted);border-style:dashed;padding:6px 14px}.category-chips .later-chip[aria-pressed=true]{color:var(--ink);border-style:solid}.chip-badge{background:var(--amber-bg);color:var(--amber);border-radius:6px;padding:2px 6px;font-size:11px;font-weight:700}.date-picker .chip-row{flex-wrap:nowrap}.date-chip.control-input{border-radius:var(--radius-m);flex:1;width:auto;min-width:0;min-height:44px;padding:5px 12px;font-size:16px}.date-chip.active{border-color:var(--ink);background:color-mix(in srgb, var(--ink) 7%, var(--surface));font-weight:650}.check-line{cursor:pointer;align-items:flex-start;gap:12px;font-size:14px;font-weight:500;display:flex}.stack-form>.check-line,.field>.check-line{background:var(--surface-2);border-radius:12px;flex-direction:row;padding:12px 14px}.check-line small{color:var(--muted);margin-top:2px;font-size:13px;font-weight:400;display:block}.form-actions{gap:8px;margin-top:4px;display:grid}.entry-form .form-actions{bottom:calc(-16px - env(safe-area-inset-bottom));z-index:2;padding:12px 20px calc(16px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;margin:0 -20px;position:sticky}.entry-form .form-actions>.button{min-height:52px;font-size:16px}.entry-form .form-actions>.button.danger{grid-column:1/-1;min-height:44px;font-size:15px}.impact-line{color:var(--sky-ink);background:linear-gradient(100deg, var(--sky-top), var(--sky-bot));transition:background var(--dur-sky) var(--ease-air);align-items:center;gap:12px;margin:-4px -20px 0;padding:12px 20px;display:flex}.impact-line p{margin:0;font-size:13px;display:grid}.impact-line strong{font-family:var(--font-display);font-size:17px;font-weight:400;line-height:1.25}.option-buttons{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.option-button{border:1px solid var(--border);min-height:44px;color:var(--muted);background:0 0;border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:0 6px;font-size:13px;font-weight:600;display:inline-flex}.option-button[aria-pressed=true]{border-color:var(--ink);background:var(--surface-2);color:var(--ink)}.draft-note{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin:0;font-size:13px;display:flex}.merchant-history{margin-top:-2px}.merchant-history.unusual{color:var(--amber);font-weight:600}.selected-category,.category-preview{background:var(--surface-2);border-radius:14px;align-items:center;gap:12px;padding:12px;display:flex}.category-preview strong{overflow-wrap:anywhere;font-size:17px}.icon-grid,.color-grid{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px;display:grid}.icon-grid button{aspect-ratio:1;background:var(--surface-2);color:var(--muted);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.icon-grid button[aria-pressed=true]{background:color-mix(in srgb, var(--cat) 18%, var(--surface));color:color-mix(in srgb, var(--cat) 72%, var(--ink));box-shadow:inset 0 0 0 2px var(--cat)}.color-grid button,.custom-color{aspect-ratio:1;border-radius:50%;min-width:44px}.color-grid button{place-items:center;display:inline-grid}.color-grid .shape path{fill:#fff!important}.color-grid button[aria-pressed=true]{box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--ink)}.custom-color{cursor:pointer;background:conic-gradient(#ef4444,#f59e0b,#84cc16,#14b8a6,#3b82f6,#a855f7,#ef4444);display:block;position:relative}.custom-color input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.custom-color:focus-within{outline:2px solid var(--ink);outline-offset:2px}.review-progress{font-weight:600}.review-card{background:var(--surface-2);border-radius:16px;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;padding:16px;display:grid}.review-card strong{overflow-wrap:anywhere;font-size:17px}.review-amount{font-size:17px;font-weight:700}.review-card small{color:var(--muted);grid-column:1/-1;font-size:13px}.review-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.review-done-title{font-size:18px;font-weight:650}.settings-group{grid-template-columns:minmax(0,1fr);display:grid}.settings-group+.settings-group,.settings-group+.demo-card{margin-top:28px}.group-title{font-family:var(--font-display);color:var(--muted);margin:0 0 4px;font-size:15px;font-weight:500}.settings{gap:0;display:grid}.category-settings{grid-template-columns:minmax(0,1fr);display:grid}.category-setting{text-align:left;border-radius:10px;align-items:center;gap:12px;min-width:0;margin:0 -6px;padding:8px 6px;display:flex}.category-setting:hover{background:var(--surface-2)}.category-setting>span:nth-child(2){overflow-wrap:anywhere;flex:1;min-width:0;font-size:15px}.category-setting small{color:var(--muted);font-size:12px;display:block}.category-setting>svg{color:var(--muted)}.category-setting.archived{opacity:.55}.setting-list{margin:0;padding:0;list-style:none}.setting-row{border-bottom:1px solid var(--border);align-items:center;gap:8px;display:flex}.setting-row:last-child{border-bottom:0}.setting-main{text-align:left;flex:1;align-items:center;gap:12px;min-width:0;padding:10px 0;display:flex}.setting-copy{min-width:0}.setting-copy strong{overflow-wrap:anywhere;font-size:15px;display:block}.setting-copy small{color:var(--muted);font-size:13px;display:block}.settings-action{text-align:left;border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:12px;width:100%;min-height:64px;padding:8px 0;display:flex;position:relative}.settings-action>svg{color:var(--muted);margin-left:auto}.settings-action>span:nth-child(2){min-width:0}.settings-action strong{font-size:15px;display:block}.settings-action small{color:var(--muted);font-size:13px;display:block}.action-icon{background:var(--surface-2);width:40px;height:40px;color:var(--muted);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-action input,.file-drop input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.file-action:focus-within,.file-drop:focus-within{outline:2px solid var(--ink);outline-offset:2px}.backup-hint{margin:12px 0 4px}.remembered-categories{gap:12px;display:grid}.remembered-categories>.card-heading{margin-bottom:0}.remembered-list{margin:0;padding:0;list-style:none}.remembered-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.remembered-list li>div:first-child{overflow-wrap:anywhere;min-width:0;display:grid}.remembered-list li span{color:var(--muted);font-size:13px}.remembered-list .button{min-height:38px;font-size:14px}.demo-card{border:1px dashed var(--border-strong);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:18px;display:flex}.demo-card p{color:var(--muted);margin:4px 0 0;font-size:14px}.install-help summary{cursor:pointer;justify-content:space-between;align-items:center;min-height:32px;list-style:none;display:flex}.install-help summary::-webkit-details-marker{display:none}.install-help summary:after{content:"+";color:var(--muted);font-size:20px}.install-help[open] summary:after{content:"−"}.install-help p{color:var(--muted);margin:12px 0 0;font-size:14px}.file-drop{text-align:center;background:var(--surface-2);border:1px dashed var(--border-strong);color:var(--muted);border-radius:14px;flex-direction:column;align-items:center;gap:10px;padding:24px;display:flex;position:relative}.file-drop strong{overflow-wrap:anywhere;font-size:14px}.mapping-grid{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.preview-summary{justify-content:space-between;gap:8px;font-size:14px;display:flex}.preview-summary span{color:var(--muted)}.table-scroll{max-width:100%;overflow:auto}.csv-preview{max-height:280px}table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}th{color:var(--muted);white-space:nowrap;background:var(--surface-2);font-weight:600}td,th{border-bottom:1px solid var(--border);padding:10px}td small{color:var(--muted);overflow-wrap:anywhere;max-width:220px;margin-top:4px;display:block}.restore-counts{background:var(--surface-2);border-radius:14px;flex-direction:column;gap:6px;padding:18px;font-size:14px;display:flex}.restore-counts strong{font-size:22px}.recovery{flex-direction:column;gap:16px;max-width:550px;margin:24px 16px;display:flex}.recovery h1{margin-top:10px;font-size:24px}.analysis-tabs{margin-bottom:16px}.card-heading>.segmented{flex-shrink:0}.card-heading>.segmented button{white-space:nowrap;padding:6px 10px}.chart-lead{color:var(--muted);margin:-4px 0 10px;font-size:14px}.chart-lead strong{color:var(--ink)}.chart-frame{touch-action:pan-y;position:relative}.chart-frame svg{display:block;overflow:visible}.chart-frame text{font-family:inherit}.chart-frame .axis{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.chart-frame .axis.strong{fill:var(--ink);font-weight:700}.chart-frame .value{fill:var(--ink);font-size:11px;font-weight:650}.chart-frame .grid{stroke:var(--surface-3);stroke-width:1px}.chart-frame .baseline,.chart-frame .crosshair{stroke:var(--border-strong);stroke-width:1px}.chart-frame .line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-frame .line.expense{stroke:var(--bar-expense)}.chart-frame .line.muted{stroke:var(--chart-muted)}.chart-frame .line.dashed{stroke-dasharray:5 4}.chart-frame .line.balance{stroke:var(--chart-balance)}.chart-frame .dot.balance{fill:var(--chart-balance);stroke:var(--surface);stroke-width:2px}.chart-key .key-balance{background:var(--chart-balance);border-radius:50%}.chart-frame .area.expense{fill:var(--bar-expense);opacity:.1}.chart-frame .dot.expense{fill:var(--bar-expense);stroke:var(--surface);stroke-width:2px}.chart-frame .bar.income{fill:var(--bar-income)}.chart-frame .bar.expense{fill:var(--bar-expense)}.chart-frame .bar.projection{fill:var(--bar-expense);opacity:.3}.chart-frame .bar.ghost{fill:var(--chart-muted);opacity:.55}.chart-frame .band{fill:var(--surface-2)}.chart-hit{display:flex;position:absolute;top:0;bottom:0}.chart-hit button{border-radius:8px;flex:1;min-width:0;min-height:0}.chart-hit button:focus-visible{outline-offset:-2px}.chart-tip{z-index:3;background:var(--primary);color:var(--on-primary);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-md);border-radius:8px;gap:1px;padding:6px 10px;font-size:12px;display:grid;position:absolute;transform:translate(-50%,calc(-100% - 6px))}.chart-key i{border-radius:3px;width:10px;height:10px;display:block}.chart-key .key-income{background:var(--bar-income)}.chart-key .key-expense{background:var(--bar-expense)}.chart-key .key-muted{background:var(--chart-muted)}.chart-key .key-projection{background:var(--bar-expense);opacity:.3}.chart-key i.dashed{background:repeating-linear-gradient(90deg, var(--bar-expense) 0 4px, transparent 4px 7px);opacity:1;border-radius:0;width:14px;height:2px}.trend-card .chart-key,.weekly-review .chart-key{flex-wrap:wrap;margin-bottom:8px}.chart-table{margin-top:8px;font-size:13px}.chart-table summary{cursor:pointer;color:var(--muted);min-height:32px;padding:6px 0}.category-breakdown{gap:12px;display:grid}.donut{width:168px;height:168px;margin:0 auto;position:relative}.donut svg{display:block}.donut path{transition:stroke-width .12s}.donut-center{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;padding:0 34px;display:flex;position:absolute;inset:0}.donut-center strong{font-variant-numeric:proportional-nums;font-size:17px}.donut-center span{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.legend-name small{font-size:12px;font-weight:600;display:block}.heat-legend{color:var(--muted);align-items:center;gap:3px;font-size:11px;display:flex}.heat-legend i{border-radius:3px;width:12px;height:12px}.calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;max-width:440px;display:grid}.calendar-head{text-align:center;color:var(--muted);font-size:11px}.calendar button{aspect-ratio:1;font-variant-numeric:tabular-nums;background:var(--surface-2);min-width:0;min-height:0;color:var(--muted);border-radius:8px;font-size:12px;position:relative}.calendar-shape{filter:drop-shadow(0 0 1px var(--surface));position:absolute;bottom:3px;right:3px}.calendar button:disabled{opacity:.4;cursor:default}.calendar .today{box-shadow:inset 0 0 0 2px var(--ink);font-weight:700}.calendar .heat-1,.heat-legend .heat-1{background:var(--heat-1);color:var(--heat-ink-1)}.calendar .heat-2,.heat-legend .heat-2{background:var(--heat-2);color:var(--heat-ink-2)}.calendar .heat-3,.heat-legend .heat-3{background:var(--heat-3);color:var(--heat-ink-3)}.calendar .heat-4,.heat-legend .heat-4{background:var(--heat-4);color:var(--heat-ink-4)}.split-bar{border-radius:999px;gap:2px;height:14px;display:flex;overflow:hidden}.split-bar .fixed,.split-legend .fixed{background:var(--split-fixed)}.split-bar .variable,.split-legend .variable{background:var(--split-variable)}.split-legend{gap:8px;margin:12px 0 0;padding:0;list-style:none;display:grid}.split-legend li{align-items:center;gap:10px;font-size:14px;display:flex}.split-legend i{border-radius:3px;flex-shrink:0;width:10px;height:10px}.split-legend span{flex:1;min-width:0}.split-legend small{color:var(--muted);font-size:12px;display:block}.rank-list{grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.rank-list button{text-align:left;border-radius:10px;gap:5px;width:calc(100% + 12px);margin:0 -6px;padding:8px 6px;display:grid}.rank-list button:hover{background:var(--surface-2)}.rank-top{justify-content:space-between;gap:12px;min-width:0;font-size:14px;display:flex}.rank-top>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.rank-track{background:var(--surface-3);border-radius:999px;height:8px;display:block;overflow:hidden}.rank-track>span{border-radius:inherit;background:var(--bar-expense);height:100%;display:block}.rank-list small{color:var(--muted);font-size:12px}.progress{position:relative;overflow:visible}.progress>span.pace-mark,.progress.cat>span.pace-mark{background:var(--ink);border-radius:1px;width:2px;height:auto;margin-left:-1px;position:absolute;top:-3px;bottom:-3px}@media (width>=560px){.category-breakdown{grid-template-columns:168px minmax(0,1fr);align-items:center;column-gap:24px}.category-breakdown>.hint{grid-column:1/-1}}@media (width>=761px){.analysis-tabs{max-width:320px}}.more-options{background:var(--surface-2);border-radius:14px;gap:16px;padding:14px;display:grid}.more-options>label{flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.text-button .muted{font-weight:400}.rate-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.rate-row label{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.rate-row .control-input{width:110px}.split-editor{gap:10px;display:grid}.split-line{grid-template-columns:minmax(0,1fr) minmax(0,.8fr) 44px;align-items:center;gap:8px;display:grid}.split-footer{justify-content:space-between;align-items:center;gap:12px;font-size:14px;font-weight:600;display:flex}.account-chip{--cat:#64748b}.account-chip i,.account-dot{background:var(--cat,#64748b);border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.chip[aria-pressed=true].account-chip i{box-shadow:0 0 0 2px var(--on-primary)}.chip.ghost{color:var(--muted);border-style:dashed}.tag-input .chip-row{gap:6px}.account-list,.goal-list,.transfer-list{grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.account-list{border-top:1px solid var(--border);margin-top:8px}.account-list button{border-bottom:1px solid var(--border);text-align:left;align-items:center;gap:12px;width:100%;padding:12px 0;display:flex}.account-list li:last-child button{border-bottom:0}.account-list button>span{overflow-wrap:anywhere;flex:1;min-width:0}.account-list small,.transfer-list small{color:var(--muted);font-size:12px;display:block}.account-list svg{color:var(--muted)}.category-setting .account-dot{margin:0 10px}.goal-list{gap:4px}.goal-row{text-align:left;border-radius:10px;gap:6px;width:calc(100% + 12px);margin:0 -6px;padding:10px 6px;display:grid}.goal-row:hover{background:var(--surface-2)}.goal-top{justify-content:space-between;gap:12px;font-size:14px;display:flex}.goal-top small{color:var(--muted);font-size:12px}.goal-row>small{font-size:12px}.transfer-list li{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 0;font-size:14px;display:flex}.transfer-list li>span{overflow-wrap:anywhere;flex:1;min-width:0}.transfer-list strong{white-space:nowrap}.contribution-form{background:var(--surface-2);border-radius:14px;gap:10px;padding:14px;display:grid}.contribution-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.budget-actions{margin-top:12px}.budget-actions .button{flex:auto}.field-label{font-size:14px;font-weight:600}.receipt-pick{cursor:pointer;position:relative}.receipt-pick input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.receipt-pick:focus-within{outline:2px solid var(--ink);outline-offset:2px}.receipt-preview{align-items:center;gap:12px;display:flex}.receipt-thumb{border:1px solid var(--border-strong);border-radius:12px;flex-shrink:0;width:72px;height:72px;padding:0;overflow:hidden}.receipt-thumb img{object-fit:cover;width:100%;height:100%;display:block}.receipt-actions{flex-wrap:wrap;gap:8px;display:flex}.receipt-zoom{z-index:50;background:#000000d9;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.receipt-zoom img{border-radius:8px;max-width:100%;max-height:100%}.receipt-zoom .icon-button{top:calc(16px + env(safe-area-inset-top));position:absolute;right:16px}.lock-screen{min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom));text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.lock-screen h1{margin-top:12px;font-size:22px}.lock-screen .muted{margin:0}.pin-dots{gap:14px;margin:18px 0 4px;display:flex}.pin-dots i{border:2px solid var(--ink);border-radius:50%;width:14px;height:14px}.pin-dots i.filled{background:var(--ink)}.lock-error{min-height:22px;color:var(--danger);margin:0;font-size:14px}.keypad{grid-template-columns:repeat(3,72px);gap:14px;margin-top:8px;display:grid}.keypad button{background:var(--surface);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;font-size:26px;font-weight:500;display:inline-flex}.keypad button:active{background:var(--surface-3)}.lock-help{max-width:340px;margin-top:20px;font-size:14px}.lock-help summary{cursor:pointer;color:var(--muted);min-height:32px}.banner-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.setting-toggles{gap:12px;display:grid}.time-field{align-items:center;gap:10px;margin-left:34px;font-size:14px;font-weight:600;display:flex}.time-field .control-input{width:130px}.report-card{align-items:center;gap:12px;display:grid}.report-card .hint{margin-top:4px}@media (width>=560px){.report-card{grid-template-columns:minmax(0,1fr) auto}}.dashboard,.dashboard-main,.analysis,.settings,.entries-view,.filters,.field,.legend,.change-chart,.weekly-changes,.merchant-changes,.comparison-detail,.remembered-categories,.analysis-view,.budget-row-copy,.change-body{grid-template-columns:minmax(0,1fr)}@media (width>=560px){.mapping-grid{grid-template-columns:1fr 1fr}.category-settings{grid-template-columns:1fr 1fr;column-gap:24px}}@media (width>=761px){:root{--nav-height:0px}.sidebar{border-right:1px solid var(--border);background:var(--bg);z-index:10;flex-direction:column;gap:24px;width:240px;padding:28px 18px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar nav{gap:4px;display:grid}.sidebar nav button{color:var(--muted);text-align:left;border-radius:12px;align-items:center;gap:12px;padding:10px 12px;font-size:15px;font-weight:500;display:flex}.sidebar nav button:hover{background:var(--surface-2)}.sidebar nav button[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm);font-weight:650}.bottom-nav{display:none}.main-content{max-width:1120px;margin-left:240px;padding:28px 40px 56px}.page-header{justify-content:space-between;align-items:center;min-height:48px;margin-bottom:24px;display:flex}h1{font-size:30px}.month-bar{flex-direction:row-reverse}.month-picker{flex:0 300px}.filter-chips,.shape-filter{flex-wrap:wrap;margin:0;padding:0}.toast-region{bottom:24px;left:240px}.sheet{border-radius:22px;width:min(540px,100vw - 48px);max-height:90dvh;margin:auto}.sheet-handle{display:none}.sheet-content{padding:4px 24px 24px}.sheet-header{padding-top:16px}.settings{max-width:760px}.sky-header{border-radius:var(--radius-l);margin:0 0 8px;overflow:hidden}.sky{padding:14px 28px 24px}.sky:after{display:none}.sky-figures dl{padding:4px 28px 8px}.main-content>.page-header.sr-only+*{margin-top:0}.tray{border:1px solid var(--border);border-radius:var(--radius);margin:16px 0 8px;padding:16px;position:static}.tray-frequent{flex-wrap:wrap;margin:0;padding:0}}@media (width>=1100px){.dashboard{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:40px}.dashboard-side{padding-top:8px;display:grid}.tray{order:0;margin-top:0}.analysis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=359px){.card{padding:16px 0 18px}.entry-row{grid-template-columns:32px minmax(0,1fr) auto;gap:8px}.entry-row .category-icon{border-radius:10px;width:32px;height:32px}.bottom-nav button{font-size:11px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
