@charset "UTF-8";@font-face{font-family:Fraunces Variable;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/fraunces-wght.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--plane: #f2eee5;--surface-1: #fbf9f4;--surface-2: #ece7dc;--text-primary: #191713;--text-secondary: #565046;--text-muted: #6a6455;--gridline: #e3ddd0;--baseline: #c2baa8;--border: rgba(25, 23, 19, .13);--rule: rgba(25, 23, 19, .085);--wash: rgba(25, 23, 19, .05);--accent: #4a3aa7;--accent-ink: #fdfcf9;--accent-wash: rgba(74, 58, 167, .1);--accent-text: #4a3aa7;--series-fixed: #2a78d6;--series-variable: #eb6834;--series-invested: #1baf7a;--series-accent: #4a3aa7;--slot-1: #2a78d6;--slot-2: #eb6834;--slot-3: #1baf7a;--slot-4: #eda100;--slot-5: #e87ba4;--slot-6: #008300;--status-good: #0ca30c;--status-warning: #fab219;--status-serious: #ec835a;--status-critical: #d03b3b;--text-good: #006300;--text-bad: #c22a2a;--font-display: "Fraunces Variable", "Iowan Old Style", Georgia, "Times New Roman", serif;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font: var(--font-ui);--fs-hero: clamp(38px, 11.5vw, 60px);--fs-stat: 26px;--fs-title: 20px;--fs-section: 16px;--fs-body: 15px;--fs-sub: 13px;--fs-label: 12px;--fs-fine: 11px;--lh-tight: 1.1;--lh-normal: 1.5;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-7: 32px;--s-8: 48px;--gutter: 16px;--page-max: 1320px;--radius: 12px;--radius-sm: 8px;--radius-pill: 999px;--shadow: 0 1px 2px rgba(25, 23, 19, .05), 0 8px 24px -16px rgba(25, 23, 19, .2);--shadow-lift: 0 -2px 8px rgba(25, 23, 19, .06), 0 -24px 48px -24px rgba(25, 23, 19, .28);--z-header: 20;--z-tabbar: 30;--z-scrim: 50;--z-sheet: 60;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--appbar-h: calc(var(--safe-top) + 64px);--tabbar-h: 60px;--page-bottom: calc(var(--tabbar-h) + var(--safe-bottom) + var(--s-6))}@media(min-width:1000px){:root{--appbar-h: 76px}}@media(prefers-color-scheme:dark){:root:where(:not([data-theme=light])){color-scheme:dark;--plane: #121110;--surface-1: #1c1a18;--surface-2: #26231f;--text-primary: #f6f3ec;--text-secondary: #bdb6a8;--text-muted: #948d7d;--gridline: #2d2a26;--baseline: #3c3832;--border: rgba(246, 243, 236, .13);--rule: rgba(246, 243, 236, .09);--wash: rgba(246, 243, 236, .06);--accent: #9085e9;--accent-ink: #14120f;--accent-wash: rgba(144, 133, 233, .16);--accent-text: #a49bee;--series-fixed: #3987e5;--series-variable: #d95926;--series-invested: #199e70;--series-accent: #9085e9;--slot-1: #3987e5;--slot-2: #d95926;--slot-3: #199e70;--slot-4: #c98500;--slot-5: #d55181;--slot-6: #008300;--text-good: #0ca30c;--text-bad: #ea6a60;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -16px rgba(0, 0, 0, .7);--shadow-lift: 0 -2px 8px rgba(0, 0, 0, .4), 0 -24px 48px -24px rgba(0, 0, 0, .8)}}:root[data-theme=dark]{color-scheme:dark;--plane: #121110;--surface-1: #1c1a18;--surface-2: #26231f;--text-primary: #f6f3ec;--text-secondary: #bdb6a8;--text-muted: #948d7d;--gridline: #2d2a26;--baseline: #3c3832;--border: rgba(246, 243, 236, .13);--rule: rgba(246, 243, 236, .09);--wash: rgba(246, 243, 236, .06);--accent: #9085e9;--accent-ink: #14120f;--accent-wash: rgba(144, 133, 233, .16);--accent-text: #a49bee;--series-fixed: #3987e5;--series-variable: #d95926;--series-invested: #199e70;--series-accent: #9085e9;--slot-1: #3987e5;--slot-2: #d95926;--slot-3: #199e70;--slot-4: #c98500;--slot-5: #d55181;--slot-6: #008300;--text-good: #0ca30c;--text-bad: #ea6a60;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -16px rgba(0, 0, 0, .7);--shadow-lift: 0 -2px 8px rgba(0, 0, 0, .4), 0 -24px 48px -24px rgba(0, 0, 0, .8)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--plane);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--fs-body);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{margin:0;font-family:var(--font-display);font-weight:600;font-variation-settings:"wght" 600;letter-spacing:-.005em;line-height:1.2}h1{font-size:var(--fs-title)}h2{font-size:var(--fs-section)}h3{font-size:var(--fs-sub)}p{margin:0}button{font:inherit;color:inherit}table{border-collapse:collapse;width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.num{font-variant-numeric:tabular-nums;text-align:right}.muted{color:var(--text-secondary)}.fine{font-size:var(--fs-fine);color:var(--text-muted)}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s-5);min-width:0}.card--quiet{background:transparent;border-color:var(--rule)}.card--feature{border-left:3px solid var(--text-primary);box-shadow:var(--shadow)}.card--rows{padding:var(--s-3)}@media(max-width:720px){.card{padding:var(--s-4)}.card--rows{padding:var(--s-2)}}.panel{background:var(--surface-2);border-radius:var(--radius-sm);padding:var(--s-4);min-width:0}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-2) var(--s-4)}.page-head h2{font-size:var(--fs-title)}.page-head p{margin:var(--s-1) 0 0;font-size:var(--fs-sub);color:var(--text-secondary);max-width:62ch}.page-head-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}.section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s-2) var(--s-4);margin-bottom:var(--s-3)}.section-head p{margin:var(--s-1) 0 0;font-size:var(--fs-label);color:var(--text-secondary)}.hero{display:grid;gap:var(--s-6)}.hero-label{margin:0;font-size:var(--fs-label);font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}.hero-value{margin:var(--s-2) 0 0;font-family:var(--font-display);font-size:var(--fs-hero);font-weight:600;font-variation-settings:"wght" 600;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:var(--lh-tight)}.hero-value.negative{color:var(--text-bad)}.hero-note{margin:var(--s-3) 0 0;font-size:var(--fs-sub);color:var(--text-secondary);max-width:54ch}.hero-note strong,.hero-note em{color:var(--text-primary);font-style:normal;font-weight:600}.hero-detail{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:var(--s-4);margin:var(--s-5) 0 0}.hero-detail dt{font-size:var(--fs-label);color:var(--text-muted)}.hero-detail dd{margin:var(--s-1) 0 0;font-family:var(--font-display);font-size:var(--fs-stat);font-weight:600;font-variation-settings:"wght" 600;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:var(--lh-tight)}.hero-detail dd.negative{color:var(--text-bad)}.hero-detail dd.positive{color:var(--text-good)}.stat{display:block;min-width:0}.stat-label{margin:0;font-size:var(--fs-label);color:var(--text-muted)}.stat-value{margin:var(--s-1) 0 0;font-family:var(--font-display);font-size:var(--fs-stat);font-weight:600;font-variation-settings:"wght" 600;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:var(--lh-tight)}.stat-value.negative{color:var(--text-bad)}.stat-value.positive{color:var(--text-good)}.stat-note{margin:var(--s-1) 0 0;font-size:var(--fs-fine);color:var(--text-muted)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:var(--s-4) var(--s-5)}.data-table th{text-align:left;font-size:var(--fs-label);font-weight:500;color:var(--text-muted);padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--border);white-space:nowrap}.data-table th.num,.data-table td.num{text-align:right;font-variant-numeric:tabular-nums}.data-table td{padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--rule);font-size:var(--fs-sub)}.data-table tbody tr:last-child td{border-bottom:0}.data-table .strong{font-weight:600}.data-table .total td{border-top:1px solid var(--baseline);border-bottom:0;font-weight:600}@media(max-width:720px){.data-table.stack,.data-table.stack tbody{display:block}.data-table.stack thead{display:none}.data-table.stack tr{display:block;padding:var(--s-3);background:var(--surface-2);border-radius:var(--radius-sm)}.data-table.stack tr+tr{margin-top:var(--s-2)}.data-table.stack td{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);padding:var(--s-1) 0;border:0;text-align:right}.data-table.stack td:before{content:attr(data-label);flex:0 1 auto;font-size:var(--fs-label);color:var(--text-muted);text-align:left;white-space:nowrap}.data-table.stack td[data-label=""]:before,.data-table.stack td:not([data-label]):before{display:none}.data-table.stack td.lead{display:block;font-size:var(--fs-body);font-weight:600;text-align:left;padding-bottom:var(--s-2)}.data-table.stack td.wide{display:block;text-align:left}.data-table.stack td.wide:before{display:block;margin-bottom:var(--s-1)}.data-table.stack td.empty{display:block;text-align:left}.data-table.stack .total td{border-top:0}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);border:1px solid transparent;border-radius:var(--radius-sm);background:none;font:inherit;font-size:var(--fs-sub);font-weight:500;color:var(--text-primary);text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer}.btn--primary{background:var(--text-primary);border-color:var(--text-primary);color:var(--surface-1)}.btn--primary:hover{background:var(--text-secondary);border-color:var(--text-secondary)}.btn--secondary{background:var(--surface-1);border-color:var(--border)}.btn--secondary:hover{background:var(--wash)}.btn--quiet{color:var(--text-secondary)}.btn--quiet:hover{background:var(--wash);color:var(--text-primary)}.btn--danger{border-color:var(--status-critical);color:var(--text-bad)}.btn--danger:hover{background:color-mix(in oklab,var(--status-critical) 10%,transparent)}.btn--sm{min-height:36px;padding:0 var(--s-3);font-size:var(--fs-label)}.btn--block{width:100%}.btn:disabled{opacity:.45;cursor:default}.btn-row{display:flex;flex-wrap:wrap;gap:var(--s-2)}.link{border:none;background:none;font:inherit;font-size:var(--fs-label);color:var(--text-secondary);text-decoration:underline;text-underline-offset:2px;cursor:pointer;padding:8px 2px;margin:-8px -2px}.link:hover{color:var(--text-primary)}.remove{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-10px -10px -10px 0;border:none;background:none;color:var(--text-muted);font-size:var(--fs-body);line-height:1;cursor:pointer;border-radius:var(--radius-sm)}.remove:hover{color:var(--text-bad);background:var(--wash)}.field{display:block;min-width:0}.field-label{display:block;margin-bottom:var(--s-1);font-size:var(--fs-label);color:var(--text-secondary)}.field-hint{margin:var(--s-1) 0 0;font-size:var(--fs-fine);color:var(--text-muted)}.field-error{margin:var(--s-1) 0 0;font-size:var(--fs-fine);color:var(--text-bad)}.field input,.field select,.field textarea,.input{display:block;width:100%;min-height:44px;padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-1);color:var(--text-primary);font:inherit;font-size:16px}.field textarea{min-height:88px;resize:vertical}.field input::placeholder,.input::placeholder{color:var(--text-muted)}.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--status-critical)}.amount-input{text-align:right;font-variant-numeric:tabular-nums}.field-unit{display:flex;align-items:stretch;gap:0}.field-unit>span{display:flex;align-items:center;padding:0 var(--s-2) 0 var(--s-3);border:1px solid var(--border);border-right:0;border-radius:var(--radius-sm) 0 0 var(--radius-sm);background:var(--surface-2);font-size:var(--fs-sub);color:var(--text-secondary)}.field-unit>input{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.check{display:flex;align-items:center;gap:var(--s-2);min-height:44px;font-size:var(--fs-sub);cursor:pointer}.check input{width:20px;height:20px;margin:0;accent-color:var(--accent);flex:0 0 auto}.inline-edit{font:inherit;font-size:var(--fs-sub);width:100%;min-height:32px;border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--s-1) var(--s-2);background:none;color:inherit}.inline-edit:hover{border-color:var(--border)}.inline-edit:focus{border-color:var(--accent);outline:none}@media(max-width:720px){.inline-edit{min-height:44px;font-size:16px}}.segmented{display:inline-flex;gap:var(--s-1);padding:3px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-2);max-width:100%;overflow-x:auto;scrollbar-width:none}.segmented::-webkit-scrollbar{display:none}.segmented button{min-height:44px;padding:0 var(--s-4);border:0;border-radius:var(--radius-pill);background:none;font:inherit;font-size:var(--fs-sub);color:var(--text-secondary);white-space:nowrap;cursor:pointer}.segmented button:hover{color:var(--text-primary)}.segmented button[aria-pressed=true],.segmented button.active{background:var(--text-primary);color:var(--surface-1);font-weight:500}.presets{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-1)}.presets button{min-height:40px;padding:0 var(--s-3);border:1px solid transparent;border-radius:var(--radius-pill);background:none;font:inherit;font-size:var(--fs-label);color:var(--text-secondary);cursor:pointer}.presets button:hover{background:var(--wash);color:var(--text-primary)}.presets button.active{background:var(--text-primary);color:var(--surface-1)}.badge{display:inline-flex;align-items:center;gap:var(--s-1);padding:1px var(--s-2);border-radius:var(--radius-pill);background:var(--wash);font-size:var(--fs-fine);font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}.badge--warn{background:color-mix(in oklab,var(--status-warning) 22%,var(--surface-1));color:var(--text-primary)}.badge--good{background:color-mix(in oklab,var(--status-good) 16%,var(--surface-1));color:var(--text-primary)}.badge--critical{background:color-mix(in oklab,var(--status-critical) 16%,var(--surface-1));color:var(--text-primary)}.badge--assumption{background:transparent;border:1px dashed var(--baseline);color:var(--text-muted)}.chip{display:inline-flex;align-items:center;gap:var(--s-1);min-height:34px;padding:0 var(--s-3);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-1);font-size:var(--fs-label);color:var(--text-secondary);cursor:pointer}.chip[aria-pressed=true]{border-color:var(--text-primary);background:var(--wash);color:var(--text-primary)}.empty-state{display:grid;justify-items:start;gap:var(--s-3);padding:var(--s-6) 0;max-width:52ch}.empty-state h3{font-size:var(--fs-section)}.empty-state p{margin:0;font-size:var(--fs-sub);color:var(--text-secondary)}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--wash),var(--surface-2),var(--wash));background-size:200% 100%;animation:shimmer 1.4s linear infinite}.skeleton--figure{height:calc(var(--fs-hero) * 1.1);width:min(240px,60%)}.skeleton--line{height:12px;width:100%;margin-top:var(--s-2)}@keyframes shimmer{to{background-position:-200% 0}}.loading{color:var(--text-muted);font-size:var(--fs-sub)}.footnote{margin:var(--s-3) 0 0;font-size:var(--fs-fine);color:var(--text-muted);max-width:96ch}.footnote.warn{border-left:2px solid var(--status-warning);padding-left:var(--s-2)}.banner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-5);padding:var(--s-3) var(--s-4);border:1px solid var(--status-warning);border-left-width:3px;border-radius:var(--radius-sm);background:color-mix(in oklab,var(--status-warning) 8%,var(--surface-1));font-size:var(--fs-label);line-height:var(--lh-normal)}.banner>div{flex:1 1 280px}.banner strong{display:block;font-size:var(--fs-sub)}.banner em{font-style:normal;font-weight:600}.banner--good{border-color:var(--series-invested);background:color-mix(in oklab,var(--series-invested) 8%,var(--surface-1))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.chart{margin:0;min-width:0}.chart figcaption{margin-bottom:var(--s-2)}.chart figcaption h3{font-size:var(--fs-section)}.chart figcaption p{margin:var(--s-1) 0 0;font-size:var(--fs-sub);color:var(--text-secondary)}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4);list-style:none;margin:0 0 var(--s-3);padding:0;font-size:var(--fs-label);color:var(--text-secondary)}.chart-legend li{display:flex;align-items:center;gap:var(--s-2)}.chart-key{width:12px;height:10px;border-radius:2px;flex:none}.plot{position:relative;min-width:0}.plot>svg{display:block;width:100%;height:auto;touch-action:pan-y}.plot .grid{stroke:var(--gridline);stroke-width:1}.plot .baseline,.plot .zero,.plot .crosshair{stroke:var(--baseline);stroke-width:1}.plot .tick,.plot .month,.plot .year{fill:var(--text-muted);font-variant-numeric:tabular-nums}.plot .tick,.plot .month,.plot .year{font-size:11px}.plot .month.struck{text-decoration:line-through}.chart-tip{margin-top:var(--s-3);padding:var(--s-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:var(--fs-label)}.chart-tip strong{display:block;font-size:var(--fs-sub)}.chart-tip em{display:block;font-size:var(--fs-fine);font-style:normal;font-weight:600;color:var(--text-secondary)}.chart-tip .value{font-size:var(--fs-section);font-weight:600;font-variant-numeric:tabular-nums}.chart-tip dl{display:grid;grid-template-columns:1fr auto;gap:2px var(--s-4);margin:var(--s-2) 0 0}.chart-tip dt{display:flex;align-items:center;gap:var(--s-2);color:var(--text-secondary)}.chart-tip dd{margin:0;font-variant-numeric:tabular-nums}.chart-tip .total{margin-top:2px;padding-top:var(--s-1);border-top:1px solid var(--border);color:var(--text-primary);font-weight:600}.chart-tip .short{color:var(--text-bad);font-weight:600}@media(min-width:720px){.chart-tip{position:absolute;top:0;z-index:2;margin-top:0;min-width:200px;max-width:300px;background:var(--surface-1);box-shadow:var(--shadow);pointer-events:none;transform:translate(-50%)}.chart-tip.tip-start{transform:none}.chart-tip.tip-end{transform:translate(-100%)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}html[data-privacy=on] .amount-input{-webkit-text-security:disc}html[data-privacy=on] .amount-input::placeholder{-webkit-text-security:none}@supports not (-webkit-text-security: disc){html[data-privacy=on] .amount-input{color:transparent;text-shadow:0 0 9px var(--text-primary, #0b0b0b);caret-color:var(--text-primary, #0b0b0b)}html[data-privacy=on] .amount-input::placeholder{color:var(--text-muted)}}
