:root{color-scheme:light;--color-page: #f2f2f7;--color-group: #ffffff;--color-raised: #f2f2f7;--color-fill: rgb(120 120 128 / .12);--color-separator: rgb(60 60 67 / .18);--color-text: #000000;--color-hint: rgb(60 60 67 / .6);--color-hint-2: rgb(60 60 67 / .3);--color-section-title: rgb(60 60 67 / .6);--color-link: #007aff;--color-button: #007aff;--color-button-text: #ffffff;--color-destructive: #ff3b30;--color-positive: #248a3d;--color-switch-on: #34c759;--chart-income: #007aff;--chart-expense: #ff9500;--chart-neutral: #007aff;--chart-grid: rgb(60 60 67 / .12);--partner-a: #5856d6;--partner-b: #ff2d55;--tint-month: #ff9500;--tint-levels: #5856d6;--tint-loans: #ff2d55;--tint-upcoming: #007aff;--tint-spend: #34c759;--color-income: var(--color-positive);--color-expense: var(--color-text);--color-bg: var(--color-page);--color-surface: var(--color-group);--color-surface-2: var(--color-raised);--color-border: var(--color-separator);--color-text-muted: var(--color-hint);--color-accent: var(--color-button);--color-accent-text: var(--color-button-text);--color-transfer: var(--color-link);--font-text: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-sans: var(--font-text);--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1.0625rem;--text-lg: 1.25rem;--text-xl: 1.375rem;--text-2xl: 2.125rem;--text-hero: 2.125rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 2rem;--radius-card: 22px;--radius-group: 22px;--radius-control: 14px;--radius-sheet: 28px;--radius: var(--radius-control);--tabbar-height: 3.25rem;--safe-top: var(--tg-safe-area-inset-top, env(safe-area-inset-top, 0px));--safe-bottom: var(--tg-safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));--content-width: 36rem}@media(prefers-color-scheme:dark){:root:not([data-scheme=light]){color-scheme:dark;--color-page: #000000;--color-group: #1c1c1e;--color-raised: #2c2c2e;--color-fill: rgb(118 118 128 / .24);--color-separator: rgb(84 84 88 / .6);--color-text: #ffffff;--color-hint: rgb(235 235 245 / .6);--color-hint-2: rgb(235 235 245 / .3);--color-section-title: rgb(235 235 245 / .6);--color-link: #0a84ff;--color-button: #0a84ff;--color-destructive: #ff453a;--color-positive: #30d158;--color-switch-on: #30d158;--chart-income: #0a84ff;--chart-expense: #d06e0a;--chart-neutral: #0a84ff;--chart-grid: rgb(235 235 245 / .12);--partner-a: #5e5ce6;--partner-b: #ff375f}}:root[data-scheme=dark]{color-scheme:dark;--color-page: #000000;--color-group: #1c1c1e;--color-raised: #2c2c2e;--color-fill: rgb(118 118 128 / .24);--color-separator: rgb(84 84 88 / .6);--color-text: #ffffff;--color-hint: rgb(235 235 245 / .6);--color-hint-2: rgb(235 235 245 / .3);--color-section-title: rgb(235 235 245 / .6);--color-link: #0a84ff;--color-button: #0a84ff;--color-destructive: #ff453a;--color-positive: #30d158;--color-switch-on: #30d158;--chart-income: #0a84ff;--chart-expense: #d06e0a;--chart-neutral: #0a84ff;--chart-grid: rgb(235 235 245 / .12);--partner-a: #5e5ce6;--partner-b: #ff375f}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font-text);font-size:var(--text-base);line-height:1.45;color:var(--color-text);background:var(--color-page);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden;font-variant-numeric:tabular-nums}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.error{color:var(--color-destructive);font-size:var(--text-sm)}.app{min-height:100vh;min-height:var(--tg-viewport-stable-height, 100vh)}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;max-width:var(--content-width);min-height:3rem;margin:0 auto;padding:var(--space-2) var(--space-4);background:var(--color-page)}.app-title{font-size:var(--text-lg);font-weight:650;letter-spacing:-.01em}.app-main{max-width:var(--content-width);margin:0 auto;padding:var(--space-2) var(--space-4) calc(var(--tabbar-height) + var(--safe-bottom) + var(--space-5))}.app-main>section{display:flex;flex-direction:column;gap:var(--space-5)}.app-main h2{font-size:var(--text-xl);font-weight:650;letter-spacing:-.015em}.app-nav{position:fixed;inset:auto 0 0 0;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);height:calc(var(--tabbar-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--tg-theme-bottom-bar-bg-color, var(--color-group));border-top:1px solid var(--color-separator)}.nav-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--color-hint);text-decoration:none;font-size:.6875rem;font-weight:550}.nav-link svg{width:1.5rem;height:1.5rem}.group{display:flex;flex-direction:column;gap:var(--space-2)}.group-title{padding:0 var(--space-4);font-size:var(--text-sm);font-weight:550;color:var(--color-section-title)}.group-body,.list{margin:0;padding:0;list-style:none;background:var(--color-group);border-radius:var(--radius-group);overflow:hidden}.group-note{padding:0 var(--space-4);font-size:var(--text-xs);color:var(--color-hint)}.row,.list>li{position:relative;display:flex;align-items:center;gap:var(--space-3);min-height:3.25rem;padding:var(--space-2) var(--space-4);color:inherit;text-decoration:none}.row+.row:before,.list>li+li:before{content:"";position:absolute;top:0;left:var(--space-4);right:0;border-top:1px solid var(--color-separator)}.row--dotted+.row--dotted:before{left:calc(var(--space-4) + .625rem + var(--space-3))}.row-main{flex:1;min-width:0;display:flex;flex-direction:column}.row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-sub{font-size:var(--text-xs);color:var(--color-hint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-amount{flex-shrink:0;font-weight:550;text-align:right;white-space:nowrap}.row-chevron{flex-shrink:0;color:var(--color-hint)}.amount--income{color:var(--color-income)}.row-actions{display:flex;gap:var(--space-1);flex-shrink:0}.day-heading{padding:var(--space-3) var(--space-4) var(--space-1);font-size:var(--text-xs);font-weight:550;color:var(--color-hint)}.who{flex-shrink:0;width:.625rem;height:.625rem;border-radius:50%;background:var(--color-separator)}.who--a{background:var(--partner-a)}.who--b{background:var(--partner-b)}button{font:inherit;cursor:pointer}.button,form>button[type=submit]{display:inline-flex;align-items:center;justify-content:center;min-height:2.875rem;padding:0 var(--space-5);border:0;border-radius:var(--radius-control);background:var(--color-button);color:var(--color-button-text);font-weight:600}form>button[type=submit]{width:100%;margin-top:var(--space-2)}button:disabled{opacity:.5;cursor:default}.list button,.row button,.link-button{min-height:2rem;padding:0 var(--space-2);border:0;border-radius:var(--radius-control);background:transparent;color:var(--color-link);font-size:var(--text-sm);font-weight:550}.list button:hover,.row button:hover,.link-button:hover{background:var(--color-raised)}form{display:flex;flex-direction:column;padding:var(--space-2) var(--space-4) var(--space-4);background:var(--color-group);border-radius:var(--radius-group)}.field{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) 0}.field-label{font-size:var(--text-xs);font-weight:550;color:var(--color-hint)}input,select{width:100%;min-height:2.75rem;padding:0 var(--space-3);font:inherit;color:var(--color-text);background:var(--color-raised);border:1px solid transparent;border-radius:var(--radius-control)}input:focus,select:focus{outline:none;border-color:var(--color-link)}input[aria-invalid=true]{border-color:var(--color-destructive)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2.25rem;background-image:linear-gradient(45deg,transparent 50%,var(--color-hint) 50%),linear-gradient(135deg,var(--color-hint) 50%,transparent 50%);background-position:calc(100% - 1.125rem) 50%,calc(100% - .8125rem) 50%;background-size:.3125rem .3125rem;background-repeat:no-repeat}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;flex-shrink:0;width:2.75rem;min-height:0;height:1.625rem;padding:0;border:0;border-radius:999px;background:var(--color-separator);cursor:pointer;transition:background .15s}input[type=checkbox]:after{content:"";position:absolute;top:.1875rem;left:.1875rem;width:1.25rem;height:1.25rem;border-radius:50%;background:#fff;transition:transform .15s}input[type=checkbox]:checked{background:var(--color-button)}input[type=checkbox]:checked:after{transform:translate(1.125rem)}.field:has(>input[type=checkbox]){flex-direction:row;align-items:center;justify-content:space-between}.field:has(>input[type=checkbox]) .field-label{font-size:var(--text-base);font-weight:400;color:var(--color-text)}.frame,.control{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.frame select{width:auto;min-height:2.25rem;font-size:var(--text-sm);font-weight:550;background-color:var(--color-group)}.control-check{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-hint)}.control-check input[type=checkbox]{width:2.25rem;height:1.375rem}.control-check input[type=checkbox]:after{width:1rem;height:1rem}.control-check input[type=checkbox]:checked:after{transform:translate(.875rem)}.frame input[type=date]{width:auto;min-height:2.25rem;font-size:var(--text-sm);background:var(--color-group)}.control[role=radiogroup]{display:inline-flex;flex-wrap:nowrap;gap:2px;padding:2px;background:var(--color-group);border-radius:var(--radius-control)}.seg{min-height:2rem;padding:0 var(--space-3);border:0;border-radius:calc(var(--radius-control) - 2px);background:transparent;color:var(--color-hint);font-size:var(--text-sm);font-weight:550}.seg--active{background:var(--color-raised);color:var(--color-text)}.pace{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) var(--space-4) var(--space-4);background:var(--color-group);border-radius:var(--radius-group)}.pace-label{font-size:var(--text-sm);color:var(--color-hint)}.pace-amount{font-family:var(--font-display);font-size:var(--text-hero);font-weight:600;line-height:1.05;letter-spacing:-.03em}.pace-amount--short{color:var(--color-expense)}.pace-track{position:relative;height:.625rem;margin-top:var(--space-2);background:var(--color-raised);border-radius:999px}.pace-fill{position:absolute;inset:0 auto 0 0;max-width:100%;border-radius:999px;background:var(--color-button)}.pace-fill--ahead{background:var(--color-expense)}.pace-today{position:absolute;top:-.3125rem;bottom:-.3125rem;width:2px;margin-left:-1px;background:var(--color-text);border-radius:1px}.pace-caption{font-size:var(--text-sm);color:var(--color-hint)}.pace-verdict{font-size:var(--text-sm);font-weight:550}.pace-verdict--ahead{color:var(--color-expense)}.pace-verdict--ok{color:var(--color-income)}.flows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3) var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-separator)}.flow{display:flex;flex-direction:column;min-width:0}.flow-label{font-size:var(--text-xs);color:var(--color-hint)}.flow-value{font-weight:600;white-space:nowrap}.flow-delta{font-size:var(--text-xs);color:var(--color-hint)}.panel{margin:0;padding:var(--space-4);background:var(--color-group);border-radius:var(--radius-group)}.panel-title{margin-bottom:var(--space-3);font-size:var(--text-sm);font-weight:550;color:var(--color-section-title)}.panel-empty{font-size:var(--text-sm);color:var(--color-hint)}.legend{display:flex;gap:var(--space-4);margin-bottom:var(--space-2);font-size:var(--text-xs);color:var(--color-hint)}.legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.legend-swatch{width:.625rem;height:.625rem;border-radius:2px}.chart-wrap{position:relative}.chart{display:block;width:100%;height:auto}.chart-tick{fill:var(--color-hint);font-size:11px}.tooltip{position:absolute;top:0;right:0;display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3);background:var(--color-raised);border:1px solid var(--color-separator);border-radius:var(--radius-control);font-size:var(--text-xs);pointer-events:none}.bars{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-3)}.bar-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label value" "track track";gap:var(--space-1) var(--space-3);font-size:var(--text-sm)}.bar-label{grid-area:label;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-value{grid-area:value;color:var(--color-hint);white-space:nowrap}.bar-track{grid-area:track;height:.375rem;background:var(--color-raised);border-radius:999px;overflow:hidden}.bar-fill{display:block;height:100%;background:var(--chart-neutral);border-radius:999px}.bar-fill--over{background:var(--chart-expense)}.budget-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"label value action" "track track track";align-items:center;gap:var(--space-1) var(--space-3);font-size:var(--text-sm)}.budget-row>button{grid-area:action;min-height:1.75rem;padding:0 var(--space-2);border:0;border-radius:var(--radius-control);background:transparent;color:var(--color-link);font-size:var(--text-xs);font-weight:550}.goal-topup{grid-column:1 / -1;display:flex;align-items:flex-end;gap:var(--space-2);margin:var(--space-2) 0 0}.goal-topup .field{flex:1;margin:0}.heatmap{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.heatmap-cell{aspect-ratio:1;border-radius:4px;background:var(--chart-expense)}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.month-nav strong{font-size:var(--text-lg);font-weight:650}.month-nav strong:first-letter{text-transform:uppercase}.month-nav button{width:2.5rem;height:2.5rem;border:0;border-radius:50%;background:var(--color-group);color:var(--color-text);font-size:var(--text-lg)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:var(--space-2);background:var(--color-group);border-radius:var(--radius-group)}.month-weekday{padding:var(--space-1) 0 var(--space-2);text-align:center;font-size:var(--text-xs);color:var(--color-hint)}.month-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;aspect-ratio:1;padding:0;border:0;border-radius:50%;background:transparent;color:var(--color-text);font-size:var(--text-sm)}.month-day--outside{color:var(--color-hint);opacity:.45}.month-day--today .month-day-number{color:var(--color-link);font-weight:700}.month-day--selected{background:var(--color-button);color:var(--color-button-text)}.month-day-marks{display:flex;gap:2px;min-height:4px}.dot{width:4px;height:4px;border-radius:50%;background:var(--partner-b)}.dot--recurring,.dot--loan{background:var(--color-expense)}.month-day--selected .dot{background:var(--color-button-text)}.extra-form{display:flex;align-items:flex-end;flex-wrap:wrap;gap:var(--space-3);margin:var(--space-3) 0}.extra-form .field{flex:1;min-width:10rem;padding:0}.extra-form select{width:auto}.table-scroll{overflow-x:auto;margin:0 calc(-1 * var(--space-4));padding:0 var(--space-4)}.schedule{width:100%;border-collapse:collapse;font-size:var(--text-xs)}.schedule th,.schedule td{padding:var(--space-2);text-align:right;white-space:nowrap;border-bottom:1px solid var(--color-separator)}.schedule th:nth-child(-n+2),.schedule td:nth-child(-n+2){text-align:left}.schedule th{font-weight:550;color:var(--color-hint)}code{font-size:var(--text-xs);word-break:break-all;color:var(--color-hint)}.login{display:flex;flex-direction:column;justify-content:center;gap:var(--space-4);max-width:var(--content-width);min-height:100vh;margin:0 auto;padding:var(--space-5) var(--space-4)}.login .app-title{font-family:var(--font-display);font-size:var(--text-2xl)}.login p{color:var(--color-hint)}.login .field{padding:0}.login button{min-height:2.875rem;border:0;border-radius:var(--radius-control);background:var(--color-button);color:var(--color-button-text);font-weight:600}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.tile{display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);background:var(--color-group);border-radius:var(--radius-group)}.tile-label,.tile-delta{font-size:var(--text-xs);color:var(--color-hint)}.tile-value{font-size:var(--text-lg);font-weight:600}.tile-value--income{color:var(--color-income)}.tile-value--expense{color:var(--color-expense)}body{font-size:var(--text-base);letter-spacing:-.01em;-webkit-font-smoothing:antialiased}.app-main h2{margin-top:var(--space-4);font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;letter-spacing:.01em;line-height:1.15}.group-title{padding:0 var(--space-4);font-size:var(--text-xs);font-weight:400;color:var(--color-section-title);text-transform:uppercase;letter-spacing:.02em}.day-heading{font-size:var(--text-sm);font-weight:600;color:var(--color-text);padding:var(--space-3) 0 var(--space-1)}.group-note{font-size:var(--text-xs);line-height:1.35}.card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4);background:var(--color-group);border-radius:var(--radius-group);color:inherit;text-decoration:none}.card-head{display:flex;align-items:center;gap:var(--space-2);min-height:1.75rem}.card-title{display:inline-flex;align-items:center;gap:.375rem;font-size:var(--text-sm);font-weight:600;color:var(--card-tint, var(--color-link))}.card-title svg{width:1.125rem;height:1.125rem}.card-meta{margin-left:auto;display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-hint)}.card-value{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;line-height:1.1;letter-spacing:.005em;font-variant-numeric:tabular-nums}.card-value small{margin-left:.25rem;font-size:var(--text-sm);font-weight:600;color:var(--color-hint)}.card-caption{font-size:var(--text-sm);color:var(--color-hint)}.panel,.group-body,.list,form,.pace,.month-grid{background:var(--color-group);border:0;border-radius:var(--radius-group);box-shadow:none}.panel-title{font-size:var(--text-sm);font-weight:600;color:var(--color-text)}.row,.list>li{min-height:2.75rem}input,select{min-height:2.75rem;background:var(--color-fill);border:0;border-radius:var(--radius-control);font-size:var(--text-base)}input:focus,select:focus{outline:2px solid var(--color-link);outline-offset:0}.field-label{font-size:var(--text-xs);font-weight:400;color:var(--color-hint)}input[type=checkbox]{width:3.1875rem;height:1.9375rem;background:var(--color-fill);border:0;box-shadow:none}input[type=checkbox]:after{top:2px;left:2px;width:1.6875rem;height:1.6875rem;background:#fff;box-shadow:0 3px 8px #00000026,0 3px 1px #0000000f}input[type=checkbox]:checked{background:var(--color-switch-on)}input[type=checkbox]:checked:after{transform:translate(1.25rem)}.control-check input[type=checkbox]{width:3.1875rem;height:1.9375rem}.control-check input[type=checkbox]:after{width:1.6875rem;height:1.6875rem}.control-check input[type=checkbox]:checked:after{transform:translate(1.25rem)}.button,form>button[type=submit],.login button{min-height:3.125rem;border:0;border-radius:12px;background:var(--color-button);color:var(--color-button-text);font-family:var(--font-text);font-size:var(--text-base);font-weight:600;letter-spacing:-.01em;text-transform:none;box-shadow:none;text-shadow:none}.button:active,form>button[type=submit]:active{opacity:.7;transform:none}.button--quiet{background:var(--color-fill);color:var(--color-link)}.button--destructive{background:var(--color-fill);color:var(--color-destructive)}.list button,.row button,.link-button,.budget-row>button{min-width:2.75rem;min-height:2.75rem;color:var(--color-link);font-size:var(--text-sm);font-weight:400}.list button:hover,.row button:hover,.link-button:hover{background:transparent;opacity:.6}.button-danger,.list button.button-danger{color:var(--color-destructive)}.control[role=radiogroup]{padding:2px;background:var(--color-fill);border:0;border-radius:9px;box-shadow:none}.seg{min-height:2rem;border-radius:7px;color:var(--color-text);font-weight:500;font-size:var(--text-xs)}.seg--active{background:var(--color-group);color:var(--color-text);font-weight:600;box-shadow:0 3px 8px #0000001f,0 3px 1px #0000000a}.frame select,select.control{background-color:var(--color-fill);font-size:var(--text-sm)}.app-nav{gap:0;padding:0 0 var(--safe-bottom);background:var(--color-group);background:rgb(from var(--color-group) r g b / .82);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--color-separator);box-shadow:none}.nav-link{gap:2px;font-size:.625rem;font-weight:500;letter-spacing:0;color:var(--color-hint)}.nav-link svg{width:1.625rem;height:1.625rem}.nav-link--active{color:var(--color-link)}.rings{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--space-4)}.rings svg{width:6.5rem;height:6.5rem;transform:rotate(-90deg)}.ring-track{fill:none;opacity:.18}.ring-fill{fill:none;stroke-linecap:round;transition:stroke-dashoffset .8s ease-out}.ring--a{stroke:var(--partner-a)}.ring--b{stroke:var(--partner-b)}.ring-legend{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.ring-legend li{display:flex;flex-direction:column}.ring-name{font-size:var(--text-sm);font-weight:600}.ring-level{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;font-variant-numeric:tabular-nums}.ring-level--a{color:var(--partner-a)}.ring-level--b{color:var(--partner-b)}.ring-sub{font-size:var(--text-xs);color:var(--color-hint)}.xp-gain{flex-shrink:0;font-size:var(--text-sm);font-weight:600;color:var(--tint-levels)}.pace{gap:var(--space-2);padding:var(--space-3) var(--space-4) var(--space-4)}.pace-amount{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;letter-spacing:.005em;color:var(--color-text);text-shadow:none}.pace-amount--short{color:var(--color-destructive)}.pace-track{height:.5rem;background:var(--color-fill);border:0;border-radius:999px;box-shadow:none}.pace-fill{border-radius:999px;background:var(--tint-month)}.pace-fill--ahead{background:var(--color-destructive)}.pace-today{width:2px;background:var(--color-text);box-shadow:none}.pace-verdict--ok{color:var(--color-positive)}.pace-verdict--ahead{color:var(--color-destructive)}.flow-value{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600}.progress{height:.5rem;overflow:hidden;background:var(--color-fill);border-radius:999px}.progress-fill{display:block;height:100%;border-radius:999px;background:var(--tint-loans);transition:width .8s ease-out}.loan-line+.loan-line{padding-top:var(--space-3);border-top:.5px solid var(--color-separator)}.loan-line{display:flex;flex-direction:column;gap:var(--space-1)}.loan-line-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.loan-line-title{font-weight:600}.loan-line-state{font-size:var(--text-xs);color:var(--color-hint)}.loan-month{gap:var(--space-2)}.bar-track{background:var(--color-fill)}.bar-fill{background:var(--tint-spend)}.bar-fill--over{background:var(--color-destructive)}.month-day--selected{background:var(--color-button);color:var(--color-button-text);box-shadow:none}.month-day--today .month-day-number{color:var(--color-destructive);font-weight:700}.month-day--selected.month-day--today .month-day-number{color:var(--color-button-text)}.month-nav button{background:transparent;border:0;color:var(--color-link);font-size:var(--text-xl)}.dot{background:var(--color-hint)}.dot--recurring,.dot--loan{background:var(--tint-month)}.tag{display:inline-block;padding:1px var(--space-2);border-radius:6px;background:var(--color-fill);font-size:.6875rem;color:var(--color-hint)}.tag--ok{background:var(--color-fill);background:rgb(from var(--color-positive) r g b / .14);color:var(--color-positive)}.statement-preview{display:block;width:100%;border-radius:var(--radius-control);background:#fff}.code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--text-2xl);font-weight:600;letter-spacing:.2em;text-align:center}.swatches{display:flex;flex-wrap:wrap;gap:var(--space-2)}.swatch{width:2.75rem;height:2.75rem;padding:0;border:0;border-radius:50%;cursor:pointer}.swatch[aria-checked=true]{box-shadow:0 0 0 3px var(--color-group),0 0 0 5px var(--color-text)}.swatch--none{background:var(--color-fill);color:var(--color-hint);font-size:var(--text-xs)}.who{width:.625rem;height:.625rem}.card .panel,.card .list,.card .pace{padding-left:0;padding-right:0;background:transparent}.card .pace{padding-top:0;padding-bottom:0}.card .list>li{padding-left:0;padding-right:0}.card .list>li+li:before{left:0}:root{--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}.ring-fill{animation:ring-draw 1.1s var(--ease-out) both;transition:stroke-dashoffset .8s var(--ease-out)}@keyframes ring-draw{0%{stroke-dashoffset:var(--ring-c)}}.bar-fill,.progress-fill{animation:bar-grow .9s var(--ease-out) both;transition:width .6s var(--ease-out)}@keyframes bar-grow{0%{width:0}}button{transition:transform .25s var(--ease-spring),opacity .15s}button:active:not(:disabled){transform:scale(.97);transition-duration:.08s}.app-main{padding-top:var(--safe-top);animation:view-in .24s var(--ease-out)}@keyframes view-in{0%{opacity:0}}.goal-topup,.loan-details{animation:reveal .28s var(--ease-out)}@keyframes reveal{0%{opacity:0;transform:translateY(-6px)}}.nav-link svg{transition:transform .3s var(--ease-spring)}.nav-link--active svg{transform:scale(1.08)}.picker{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:2.75rem;padding:0 var(--space-3);border:0;border-radius:var(--radius-control);background:var(--color-fill);color:var(--color-text);font-size:var(--text-base);text-align:left}.picker:focus-visible,.picker[aria-expanded=true]{outline:2px solid var(--color-link);outline-offset:0}.picker-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-chevrons{flex:none;width:.625rem;height:.875rem;fill:none;stroke:var(--color-link);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.frame .picker{width:auto;min-height:2.25rem;font-size:var(--text-sm);font-weight:550;background:var(--color-group)}.picker.control{display:flex;font-size:var(--text-sm)}.picker-menu{position:fixed;z-index:300;max-height:min(20rem,60vh);margin:0;padding:.25rem 0;overflow-y:auto;list-style:none;border-radius:var(--radius-control);background:var(--color-group);background:rgb(from var(--color-group) r g b / .86);backdrop-filter:blur(24px) saturate(1.8);-webkit-backdrop-filter:blur(24px) saturate(1.8);box-shadow:0 0 0 .5px var(--color-separator),0 12px 40px #0000002e;outline:none;transform-origin:top left;animation:menu-in .32s var(--ease-spring)}.picker-menu--up{translate:0 -100%;transform-origin:bottom left}@keyframes menu-in{0%{opacity:0;transform:scale(.9)}}.picker-option{display:flex;align-items:center;gap:var(--space-2);min-height:2.75rem;padding:0 var(--space-4) 0 var(--space-3);color:var(--color-text);font-size:var(--text-base);cursor:pointer;-webkit-user-select:none;user-select:none}.picker-option+.picker-option{box-shadow:inset 0 .5px 0 var(--color-separator)}.picker-option--active{background:var(--color-fill)}.picker-option[aria-disabled=true]{color:var(--color-hint);cursor:default}.picker-check{flex:none;width:1rem;height:1rem;fill:none;stroke:var(--color-link);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;visibility:hidden}.picker-option[aria-selected=true]{font-weight:600}.picker-option[aria-selected=true] .picker-check{visibility:visible}.screen-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.screen-head h2{margin:0}.screen-action{flex:none;min-height:2.75rem;padding:0;border:0;background:none;color:var(--color-link);font-size:var(--text-sm);font-weight:550}.quick{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--space-2);margin:var(--space-3) 0}.quick-button{display:flex;flex-direction:column;align-items:center;gap:6px;padding:var(--space-2) 0;border:0;border-radius:var(--radius-card);background:none;color:var(--color-text);font-size:.6875rem;font-weight:500}.quick-icon{display:grid;place-items:center;width:3rem;height:3rem;border-radius:50%;background:var(--color-fill);color:var(--color-text)}.quick-icon svg{width:1.375rem;height:1.375rem}.quick-icon--expense{color:var(--tint-spend)}.quick-icon--income{color:var(--color-income)}.quick-icon--transfer{color:var(--color-transfer)}.quick-icon--goal{color:var(--tint-levels)}.quick-icon--loan{color:var(--tint-loans)}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:2.75rem;margin-bottom:var(--space-3);padding:0 var(--space-3);border:0;border-radius:var(--radius-control);background:var(--color-fill);color:var(--color-text);font-size:var(--text-sm)}.filter-bar-label{font-weight:550}.filter-bar-value{color:var(--color-hint)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:flex-end;background:#00000059;animation:fade-in .2s var(--ease-out)}.sheet{width:100%;max-height:88vh;overflow-y:auto;padding:var(--space-2) var(--space-4) calc(var(--space-5) + var(--safe-bottom));border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;background:var(--color-page);outline:none;animation:sheet-up .32s var(--ease-out)}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet-head{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0 var(--space-2)}.sheet-grip{position:absolute;top:6px;left:50%;width:2.25rem;height:5px;border-radius:999px;background:var(--color-separator);transform:translate(-50%)}.sheet-title{margin:0;font-size:var(--text-lg);font-weight:650}.sheet-close{border:0;background:none;color:var(--color-link);font-size:var(--text-base);font-weight:550}.sheet-group+.sheet-group{margin-top:var(--space-4)}.sheet-label{margin:0 0 var(--space-2);color:var(--color-hint);font-size:var(--text-xs)}.sheet-hint{margin:var(--space-3) 0 0;color:var(--color-hint);font-size:var(--text-xs)}.widget-list{margin:0;padding:0;list-style:none}.widget-row{display:flex;align-items:center;gap:var(--space-3);min-height:2.75rem;padding:var(--space-2) 0;box-shadow:inset 0 -.5px 0 var(--color-separator);touch-action:none}.widget-row--dragging{opacity:.6}.widget-grip{flex:none;width:1.25rem;height:1rem;background-image:linear-gradient(var(--color-hint) 1.5px,transparent 1.5px,transparent 5px);background-size:100% 6px;cursor:grab}.widget-name{display:flex;flex:1;align-items:center;gap:var(--space-2);font-size:var(--text-base)}.widget-move{display:flex;gap:var(--space-1)}.widget-move button{min-width:2.25rem;min-height:2.25rem;border:0;border-radius:var(--radius-control);background:var(--color-fill);color:var(--color-link)}.widget-empty{display:flex;flex-direction:column;gap:2px;margin:0 0 var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-card);background:var(--color-fill);color:var(--color-hint);font-size:var(--text-sm)}.widget-empty-title{color:var(--color-text);font-weight:550}.list--spaced{margin-top:var(--space-2)}.card-title{color:var(--color-text)}.card-title svg{color:var(--card-tint)}.app:before,.app:after{content:"";position:fixed;z-index:-1;width:78vw;height:78vw;max-width:26rem;max-height:26rem;border-radius:50%;filter:blur(60px);opacity:.22;pointer-events:none}.app:before{top:-14vh;left:-18vw;background:var(--color-link);animation:drift-a 44s ease-in-out infinite alternate}.app:after{right:-22vw;bottom:6vh;background:var(--tint-levels);animation:drift-b 56s ease-in-out infinite alternate}@keyframes drift-a{to{transform:translate3d(14vw,10vh,0) scale(1.15)}}@keyframes drift-b{to{transform:translate3d(-12vw,-12vh,0) scale(.9)}}:root[data-scheme=dark] .app:before,:root[data-scheme=dark] .app:after{opacity:.16}.app{position:relative;isolation:isolate}.card:has(.pace){position:relative;overflow:hidden}.card:has(.pace--ahead):before{background:var(--tint-month)}.card:has(.pace):before{content:"";position:absolute;top:-40%;right:-20%;width:70%;height:160%;border-radius:50%;background:var(--color-link);opacity:.14;filter:blur(40px);transition:background .6s var(--ease-out);pointer-events:none}.icon-action{position:relative;display:inline-flex}.icon-button{display:grid;place-items:center;width:2.75rem;height:2.75rem;border:0;border-radius:50%;background:transparent;color:var(--color-link)}.icon-button svg{width:1.25rem;height:1.25rem}.icon-button:active{background:var(--color-fill)}.icon-button--danger{color:var(--color-hint)}.icon-hint{position:absolute;right:0;bottom:calc(100% + 4px);z-index:50;padding:4px 10px;border-radius:999px;background:var(--color-text);color:var(--color-page);font-size:var(--text-xs);white-space:nowrap;animation:menu-in .2s var(--ease-out)}
