:root{--navy-900:#081638;--navy-800:#0d2054;--navy-500:#5a78b4;--navy-300:#8d9ac4;--cream-100:#e6e4da;--cream-200:#d8d5c9;--cream-300:#cbc8ba;--stone-300:#c6c3b5;--stone-400:#b3b0a2;--stone-500:#a9a699;--stone-700:#6e6b60;--slate-600:#3e4a6b;--clay-800:#8a3d0e;--clay-600:#b0561a;--clay-300:#d9915c;--teal-300:#6fb3a3;--surface-page:var(--cream-300);--surface-raised:var(--cream-200);--surface-sunken:var(--cream-300);--surface-field:var(--cream-100);--surface-inverse:var(--navy-800);--ink:var(--navy-800);--ink-muted:var(--slate-600);--ink-inverse:var(--cream-300);--ink-attention:var(--clay-800);--border:var(--stone-400);--border-subtle:var(--stone-300);--border-control:var(--stone-700);--action-primary:var(--navy-800);--action-primary-hover:var(--navy-900);--on-action-primary:var(--cream-300);--focus-ring:var(--navy-800);--progress-track:var(--stone-500);--progress-fill:var(--navy-800);--progress-fill-attention:var(--clay-600);--chart-loans:var(--navy-800);--chart-recurring:var(--navy-500);--chart-planned:var(--clay-600);--chart-estimate:var(--stone-500);--chart-inverse-1:var(--cream-300);--chart-inverse-2:var(--navy-300);--chart-inverse-3:var(--teal-300);--chart-inverse-4:var(--clay-300);--scrim:#08163899;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:40px;--space-9:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:12px;--radius-xl:14px;--radius-2xl:18px;--radius-pill:999px;--touch-min:44px;--control-height:48px;--sidebar-width:248px;--dialog-width:760px;--font-display:Fraunces, Georgia, serif;--font-sans:"IBM Plex Sans", system-ui, sans-serif}.page-title{font-family:var(--font-display);font-size:44px;font-weight:600;line-height:1.05}.hero-figure{font-family:var(--font-display);font-size:42px;font-weight:600;line-height:1.05}.section-title{font-family:var(--font-display);font-size:26px;font-weight:600;line-height:1.2}.panel-title{font-family:var(--font-display);font-size:22px;font-weight:600;line-height:1.25}.figure-lg{font-family:var(--font-display);font-size:28px;font-weight:600;line-height:1.15}.figure-sm{font-family:var(--font-display);font-size:19px;font-weight:600;line-height:1.2}.body{font-family:var(--font-sans);font-size:15px;font-weight:400;line-height:22px}.body-strong{font-family:var(--font-sans);font-size:15px;font-weight:600;line-height:22px}.body-sm{font-family:var(--font-sans);font-size:13px;font-weight:400;line-height:18px}.label{font-family:var(--font-sans);font-size:14px;font-weight:600;line-height:20px}.overline{font-family:var(--font-sans);letter-spacing:.8px;text-transform:uppercase;font-size:12px;font-weight:600;line-height:16px}.caption{font-family:var(--font-sans);font-size:12px;font-weight:400;line-height:16px}.fn-root{font-family:var(--font-sans);color:var(--ink);background:var(--surface-page);font-size:15px;line-height:22px}.fn-root *,.fn-root :before,.fn-root :after{box-sizing:border-box}.fn-num{font-variant-numeric:tabular-nums}.fn-root :focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.fn-btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-height);border-radius:var(--radius-lg);border:1px solid var(--action-primary);background:var(--action-primary);color:var(--on-action-primary);font:600 15px/22px var(--font-sans);cursor:pointer;padding:0 22px;text-decoration:none;display:inline-flex}.fn-btn:hover{background:var(--action-primary-hover);border-color:var(--action-primary-hover)}.fn-btn--secondary{color:var(--ink);background:0 0}.fn-btn--secondary:hover{background:var(--surface-raised);color:var(--ink)}.fn-btn--link{min-height:var(--touch-min);color:var(--ink);text-underline-offset:3px;background:0 0;border:none;padding:0;font-size:14px;text-decoration:underline}.fn-btn--link:hover{color:var(--navy-900);background:0 0}.fn-btn--icon{width:var(--touch-min);min-height:var(--touch-min);border-radius:var(--radius-md);border-color:var(--border-control);color:var(--ink);background:0 0;padding:0}.fn-btn--icon:hover{background:var(--surface-raised)}.fn-btn svg{flex-shrink:0}.fn-sidebar{width:var(--sidebar-width);background:var(--surface-inverse);color:var(--ink-inverse);gap:var(--space-8);flex-direction:column;padding:32px 20px;display:flex}.fn-sidebar__brand{align-items:center;gap:var(--space-3);font:600 22px/1.2 var(--font-display);padding:0 8px;display:flex}.fn-sidebar__brand img{width:40px;height:40px}.fn-sidebar__list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fn-nav-item{align-items:center;gap:var(--space-3);width:100%;min-height:var(--touch-min);border-radius:var(--radius-md);color:var(--ink-inverse);font:400 15px/22px var(--font-sans);text-align:left;cursor:pointer;background:0 0;border:none;padding:0 12px;text-decoration:none;display:flex}.fn-nav-item:hover{background:var(--navy-900)}.fn-nav-item[aria-current=page]{background:var(--surface-page);color:var(--ink);font-weight:600}.fn-sidebar :focus-visible{outline-color:var(--ink-inverse)}.fn-tabbar{background:var(--surface-raised);border-top:1px solid var(--border);justify-content:space-around;align-items:center;height:84px;padding:0 8px 12px;display:flex}.fn-tab{align-items:center;gap:var(--space-1);min-width:56px;min-height:var(--touch-min);color:var(--ink-muted);font:400 11px/14px var(--font-sans);cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;text-decoration:none;display:flex}.fn-tab[aria-current=page]{color:var(--ink);font-weight:600}.fn-tab--add{background:var(--action-primary);width:56px;min-width:56px;height:56px;color:var(--on-action-primary);border-radius:18px;margin-top:-26px}.fn-page-header{justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;display:flex}.fn-page-header__kicker{font:500 14px/20px var(--font-sans);letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-muted)}.fn-page-header__title{font:600 44px/1.05 var(--font-display);color:var(--ink);text-wrap:balance;margin:0}.fn-page-header__actions{align-items:center;gap:var(--space-4);display:flex}.fn-rate{border:1px solid var(--border-control);border-radius:var(--radius-lg);flex-direction:column;align-items:flex-end;gap:2px;padding:8px 16px;display:inline-flex}.fn-rate__value{font-variant-numeric:tabular-nums;font-weight:600}.fn-rate__source{color:var(--ink-muted);font-size:12px;line-height:16px}.fn-tiles{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.fn-tile{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-xl);flex-direction:column;gap:6px;padding:18px 22px;display:flex}.fn-tile__label{color:var(--ink-muted);font-size:13px;font-weight:500;line-height:18px}.fn-tile__value{font:600 28px/1.15 var(--font-display);font-variant-numeric:tabular-nums;white-space:nowrap}.fn-tile__note{color:var(--ink-muted);font-size:12px;line-height:16px}.fn-panel{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-xl);flex-direction:column;gap:14px;padding:22px 24px;display:flex}.fn-panel__header{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.fn-panel__title{font:600 22px/1.25 var(--font-display);margin:0}.fn-panel__subtitle{color:var(--ink-muted);margin:2px 0 0;font-size:13px;line-height:18px}.fn-panel__row{align-items:center;gap:var(--space-4);background:var(--surface-sunken);border-radius:var(--radius-lg);padding:14px 16px;display:flex}.fn-table{border-collapse:collapse;width:100%;font-size:15px;line-height:22px}.fn-table th{border-bottom:1px solid var(--border);letter-spacing:.8px;text-transform:uppercase;color:var(--ink-muted);text-align:left;padding:0 6px 8px;font-size:12px;font-weight:600;line-height:16px}.fn-table td{border-bottom:1px solid var(--border-subtle);vertical-align:middle;padding:10px 6px}.fn-table tr:last-child td{border-bottom:none}.fn-table .fn-col-num{text-align:right;font-variant-numeric:tabular-nums}.fn-table .fn-col-muted{color:var(--ink-muted)}.fn-table .fn-col-name{font-weight:500}.fn-amount{font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;gap:1px;display:inline-flex}.fn-amount__converted{color:var(--ink-muted);font-size:12px;line-height:16px}.fn-amount__converted:before{content:"≈ "}.fn-pill{border-radius:var(--radius-pill);border:1.5px solid var(--ink);color:var(--ink);white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:3px 11px;font-size:12px;font-weight:600;line-height:16px;display:inline-flex}.fn-pill--positive{background:var(--action-primary);border-color:var(--action-primary);color:var(--on-action-primary)}.fn-pill--attention{border-color:var(--ink-attention);color:var(--ink-attention)}.fn-pill svg{width:14px;height:14px}.fn-progress{border-radius:var(--radius-pill);background:var(--progress-track);height:10px;position:relative}.fn-progress__fill{border-radius:var(--radius-pill);background:var(--progress-fill);height:100%}.fn-progress--attention .fn-progress__fill{background:var(--progress-fill-attention)}.fn-progress__pace{background:var(--ink);width:2px;height:18px;position:absolute;top:-4px}.fn-goal{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-xl);gap:var(--space-3);flex-direction:column;padding:20px 22px;display:flex}.fn-goal__head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.fn-goal__kind{letter-spacing:.8px;text-transform:uppercase;color:var(--ink-muted);font-size:12px;font-weight:600;line-height:16px}.fn-goal__title{font-size:17px;font-weight:600;line-height:24px}.fn-goal__figures{align-items:baseline;gap:var(--space-2);font-variant-numeric:tabular-nums;display:flex}.fn-goal__current{font:600 26px/1.15 var(--font-display)}.fn-goal__target{color:var(--ink-muted);font-size:14px}.fn-goal__foot{justify-content:space-between;gap:var(--space-3);color:var(--ink-muted);font-size:13px;line-height:18px;display:flex}.fn-field{gap:var(--space-2);flex-direction:column;display:flex}.fn-field__label{color:var(--ink);font-size:14px;font-weight:600;line-height:20px}.fn-field__control{min-height:var(--control-height);border-radius:var(--radius-md);border:1px solid var(--border-control);background:var(--surface-field);color:var(--ink);font:400 15px/22px var(--font-sans);width:100%;padding:0 14px}.fn-field__hint{color:var(--ink-muted);font-size:13px;line-height:18px}.fn-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px;display:grid}.fn-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.fn-chip{min-height:var(--touch-min);border-radius:var(--radius-pill);border:1px solid var(--border-control);color:var(--ink);font:500 14px/20px var(--font-sans);cursor:pointer;white-space:nowrap;background:0 0;padding:0 16px}.fn-chip[aria-pressed=true]{border-color:var(--action-primary);background:var(--action-primary);color:var(--on-action-primary);font-weight:600}.fn-scrim{background:var(--scrim);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.fn-dialog{width:min(var(--dialog-width), 100%);background:var(--surface-raised);border-radius:var(--radius-2xl);gap:var(--space-6);flex-direction:column;max-height:calc(100% - 32px);padding:36px 40px;display:flex;overflow-y:auto}.fn-dialog__header{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.fn-dialog__title{font:600 30px/1.15 var(--font-display);margin:0}.fn-dialog__footer{justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-5);border-top:1px solid var(--border);display:flex}.fn-sheet{background:var(--surface-raised);border-radius:22px 22px 0 0;flex-direction:column;max-height:88%;display:flex;position:fixed;bottom:0;left:0;right:0}.fn-toast{border-radius:var(--radius-lg);background:var(--surface-inverse);color:var(--ink-inverse);align-items:center;gap:10px;padding:14px 20px;font-weight:600;display:inline-flex}.fn-summary{background:var(--surface-inverse);color:var(--ink-inverse);border-radius:16px;flex-direction:column;gap:18px;padding:26px 28px;display:flex}.fn-summary__label{font-size:14px;font-weight:500}.fn-summary__figure{font:600 42px/1.05 var(--font-display);font-variant-numeric:tabular-nums}.fn-summary__bar{border-radius:var(--radius-pill);gap:3px;height:12px;display:flex;overflow:hidden}.fn-summary__legend{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.fn-summary__key{align-items:flex-start;gap:10px;display:flex}.fn-summary__swatch{border-radius:3px;flex-shrink:0;width:12px;height:12px;margin-top:4px}.fn-summary__key-label{font-size:13px;line-height:18px}.fn-summary__key-value{font-variant-numeric:tabular-nums;font-size:18px;font-weight:600;line-height:24px}.fn-s1{background:var(--chart-inverse-1)}.fn-s2{background:var(--chart-inverse-2)}.fn-s3{background:var(--chart-inverse-3)}.fn-s4{background:var(--chart-inverse-4)}.fn-figure-expected{border-radius:var(--radius-lg);background:var(--surface-inverse);color:var(--ink-inverse);flex-direction:column;gap:2px;padding:10px 16px;display:inline-flex}.fn-figure-estimate{border-radius:var(--radius-lg);border:2px dashed var(--border-control);color:var(--ink-muted);flex-direction:column;gap:2px;padding:9px 15px;display:inline-flex}.fn-figure-expected__label,.fn-figure-estimate__label{letter-spacing:.8px;text-transform:uppercase;font-size:12px;font-weight:600;line-height:16px}.fn-figure-expected__value{font:600 22px/1.2 var(--font-display);font-variant-numeric:tabular-nums}.fn-figure-estimate__value{font-variant-numeric:tabular-nums;font-size:22px;font-style:italic;line-height:1.2}.fn-hatch{box-sizing:border-box;border:1.5px dashed var(--ink-muted);background:repeating-linear-gradient(135deg, var(--chart-estimate) 0 2px, transparent 2px 6px)}.fn-columns{border-bottom:1px solid var(--border-control);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;align-items:end;gap:14px;display:grid}.fn-column{flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;display:flex}.fn-column__total{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px;font-weight:600;line-height:16px}.fn-column__estimate{color:var(--ink-muted);white-space:nowrap;font-size:12px;font-style:italic;line-height:16px}.fn-column__stack{flex-direction:column;gap:2px;width:44px;display:flex}.fn-seg-loans{background:var(--chart-loans)}.fn-seg-recurring{background:var(--chart-recurring)}.fn-seg-planned{background:var(--chart-planned)}.fn-column__stack>:first-child{border-radius:4px 4px 0 0}body{margin:0}
