:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f3ee;--panel:#fffdf8;--panel-strong:#f0e9dc;--ink:#24231f;--muted:#6d665a;--line:#d7cebf;--line-strong:#b9ad99;--green:#2b7a58;--green-soft:#dcecdf;--amber:#9b6a12;--amber-soft:#fff0c2;--red:#a93d3d;--red-soft:#ffe0dc;--blue:#34728b;--teal:#1f7d76;--cash-chart:#00ad5f;--shadow:0 12px 28px #3d301f14}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.access-page{background:linear-gradient(180deg, #2b7a5814, transparent 48%), var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.access-panel{border:1px solid var(--line);border-top:5px solid var(--green);background:var(--panel);width:min(100%,380px);box-shadow:var(--shadow);border-radius:8px;padding:28px}.access-panel h1{margin-top:8px}.access-copy{color:var(--muted);margin-top:12px}.access-form{gap:10px;margin-top:24px;display:grid}.access-form label{color:var(--muted);font-size:.78rem;font-weight:700}.access-form input{min-height:44px}.access-form button{margin-top:4px}.access-form button:disabled{cursor:wait;opacity:.65}.access-error{color:var(--red);font-size:.82rem;font-weight:700}button,input,select{font:inherit}button,select,input{border:1px solid var(--line-strong);color:var(--ink);background:#fffefa;border-radius:7px}button{cursor:pointer;background:var(--ink);color:#fffefa;min-height:38px;padding:0 14px}button.quiet{color:var(--ink);background:0 0}input,select{min-height:34px;padding:6px 8px}h1,h2,p{margin:0}.app-shell{flex-direction:column;height:100vh;padding:12px;display:flex;overflow:hidden}.topbar{flex:none;justify-content:space-between;align-items:center;gap:20px;margin-bottom:8px;display:flex}.eyebrow{color:var(--muted);text-transform:uppercase;font-size:.8rem;font-weight:700}h1{letter-spacing:0;font-size:clamp(1.55rem,2.4vw,2.4rem);line-height:1}h2{letter-spacing:0;font-size:1rem}.scenario-controls{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.scenario-controls label{color:var(--muted);gap:4px;font-size:.78rem;font-weight:700;display:grid}.scenario-picker{min-width:180px;font-weight:700}.scenario-picker-group{align-items:stretch;display:flex;position:relative}.scenario-picker-group:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:5px solid var(--ink);pointer-events:none;width:0;height:0;position:absolute;top:50%;right:11px;transform:translateY(-35%)}.scenario-picker-group .scenario-picker{border-radius:6px 0 0 6px}.scenario-switcher{appearance:none;color:#0000;cursor:pointer;border-left:0;border-radius:0 6px 6px 0;width:34px;min-width:34px;padding:0 4px}.scenario-switcher option{color:var(--ink)}.focus-grid-button{border-color:var(--teal);color:var(--teal)}.panel-hide-button{border:1px solid var(--line);width:26px;min-width:26px;min-height:26px;color:var(--muted);background:0 0;border-radius:5px;place-items:center;padding:0;font-size:1rem;font-weight:900;line-height:1;display:inline-grid}.panel-hide-button:hover,.panel-hide-button:focus-visible{border-color:var(--teal);color:var(--teal);background:#eef7f5;outline:none}.panel-restore-bar{flex:none;align-items:center;gap:5px;min-height:28px;margin-bottom:5px;display:flex;overflow-x:auto}.panel-restore-bar button{border-color:var(--teal);color:#176a64;background:#e5f3ef;flex:none;min-height:25px;padding:2px 8px;font-size:.7rem;font-weight:900}.panel-restore-bar button.restore-all{background:var(--teal);color:#fff}.dialog-backdrop{z-index:40;background:#24231f6b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.scenario-dialog{border:1px solid var(--line-strong);background:var(--panel);border-radius:8px;width:min(100%,420px);padding:20px;box-shadow:0 18px 48px #24231f3d}.setup-dialog{border:1px solid var(--line-strong);background:var(--panel);border-radius:8px;width:min(100%,620px);max-height:calc(100vh - 32px);padding:24px;overflow:auto;box-shadow:0 18px 48px #24231f3d}.equity-dialog{width:min(100%,480px);max-height:calc(100dvh - 40px);overflow-y:auto}.equity-modes{gap:4px;margin:12px 0;display:flex}.equity-modes button{white-space:normal;flex:1;font-size:.78rem}.equity-fields{gap:12px;display:grid}.equity-fields label{gap:5px;font-size:.8rem;font-weight:700;display:grid}.equity-fields input{width:100%;min-height:40px;font-size:1rem}.equity-fields small{color:var(--muted);font-weight:500}.equity-preview{border-block:1px solid var(--line);grid-template-columns:1fr auto;gap:8px;padding:12px 0;font-size:.85rem;display:grid}.equity-preview dd{margin:0;font-weight:700}.equity-cash-negative{color:var(--red)}.equity-actions{flex-wrap:wrap}.equity-fields .mortgage-toggle{align-items:center;margin-top:0;display:flex}.equity-fields .mortgage-toggle input{flex-shrink:0;width:16px;height:16px;min-height:16px}.mortgage-toggle{margin-bottom:14px}.setup-mortgage{margin-top:18px}.setup-mortgage .setup-fields+.mortgage-toggle{margin-top:14px}.equity-modes{flex-wrap:wrap}.future-grid .equity-cell-button{width:100%;min-height:0;color:inherit;font:inherit;text-align:right;cursor:pointer;background:0 0;border:0;border-radius:0;padding:0;display:block}.future-grid .equity-cell-button:hover{text-decoration:underline}.future-grid .equity-cell-button.equity-set{font-weight:800}.future-grid .equity-cell-button:focus-visible{outline:2px solid var(--teal)}.setup-progress{color:var(--muted);gap:7px;margin-bottom:18px;font-size:.74rem;font-weight:800;display:grid}.setup-progress-track{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.setup-progress-track i{background:var(--line);height:4px}.setup-progress-track i.complete{background:var(--teal)}.setup-copy{color:var(--muted);margin:6px 0 18px;line-height:1.45}.setup-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;display:grid}.setup-fields label{color:var(--ink);grid-template-rows:minmax(2.2rem,auto) 42px minmax(2rem,auto);gap:5px;font-size:.8rem;font-weight:800;display:grid}.setup-fields input{width:100%;height:42px;font-size:1rem}.setup-fields small{color:var(--muted);font-size:.7rem;font-weight:600;line-height:1.35}.setup-dismiss-option{color:var(--muted);align-items:center;gap:8px;margin-top:20px;font-size:.76rem;font-weight:700;display:flex}.setup-dismiss-option input{width:16px;height:16px;margin:0}.setup-error{color:var(--red);margin:10px 0 0;font-size:.76rem;font-weight:800}.setup-actions,.setup-actions>div{align-items:center;gap:8px;display:flex}.setup-actions{justify-content:space-between;margin-top:18px}.guided-setup-button{border:1px solid var(--teal);color:#176a64;background:#e5f3ef;min-height:26px;padding:3px 8px;font-size:.7rem;font-weight:900}.scenario-dialog form,.scenario-dialog label{gap:8px;display:grid}.scenario-dialog form{margin-top:18px}.scenario-dialog label{color:var(--muted);font-size:.78rem;font-weight:700}.scenario-dialog input{width:100%;min-height:42px}.dialog-copy{color:var(--muted);margin-top:12px;line-height:1.45}button.danger{color:var(--red)}button.danger-action{border-color:var(--red);background:var(--red)}button:disabled{cursor:not-allowed;opacity:.5}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:10px;display:flex}.summary-band{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid;position:relative}.hideable-panel{position:relative}.panel-corner{z-index:2;background:#fffdf8e6;position:absolute;top:4px;right:4px}.summary-band .metric:nth-of-type(2){padding-right:34px}.metric{border:1px solid var(--line);border-left:5px solid var(--green);background:var(--panel);min-height:68px;box-shadow:var(--shadow);border-radius:8px;gap:4px;padding:8px 10px;display:grid}.metric span,.metric small{color:var(--muted);font-size:.7rem;font-weight:700}.metric strong{font-size:1.05rem;line-height:1}.metric.watch{border-left-color:var(--amber)}.metric.critical{border-left-color:var(--red)}.chart-band{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);border-radius:8px}.chart{padding:8px 10px 4px}.chart-labels{color:var(--muted);align-items:center;gap:16px;font-size:.8rem;font-weight:800;display:flex}.chart-labels .chart-impact{color:var(--ink);font-variant-numeric:tabular-nums;margin-left:auto}.chart-labels .chart-impact:before{display:none}.chart-labels span:before{content:"";vertical-align:middle;width:18px;height:3px;margin-right:6px;display:inline-block}.chart-labels .cash:before{background:var(--cash-chart);height:4px;box-shadow:0 0 4px #00ad5f73}.chart-labels .equity:before{background:var(--blue)}.chart-labels .net:before{background:var(--red)}.chart svg{aspect-ratio:520/396;width:100%;height:auto;display:block}.chart path{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.chart-year-guides line{stroke:var(--line);stroke-width:1px}.chart-year-guides text{fill:var(--muted);text-anchor:middle;font-size:26px;font-weight:700}.zero-line{stroke:var(--line-strong);stroke-dasharray:6 8}.cash-line{stroke:var(--cash-chart);stroke-width:5px;filter:drop-shadow(0 0 2px #00ad5f61)}.equity-line{stroke:var(--blue)}.net-line{stroke:var(--red)}.baseline-line{stroke:var(--muted);stroke-dasharray:7 7;opacity:.7;stroke-width:2px!important}.chart-drag-value line{stroke:var(--ink);stroke-width:1.5px}.chart-drag-value rect{fill:var(--ink)}.chart-drag-value text{fill:#fff;text-anchor:middle;font-size:18px;font-weight:800}.chart-drag-dot{fill:var(--ink);stroke:#fff;stroke-width:3px;filter:drop-shadow(0 1px 2px #24231f73)}.workspace{flex:auto;grid-template-columns:minmax(0,1fr) 318px;align-items:stretch;gap:10px;min-height:0;display:grid}.workspace.grid-only{grid-template-columns:minmax(0,1fr)}.assumptions-panel,.grid-panel{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);border-radius:8px}.assumptions-panel{padding:10px}.insights-panel{flex-direction:column;gap:10px;min-height:0;display:flex;overflow:auto}.panel-heading,.grid-meta{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-heading{margin-bottom:8px}.panel-heading span{color:var(--muted);font-size:.76rem;font-weight:800}.panel-heading-actions{align-items:center;gap:7px;display:flex}.assumption-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.assumption-grid label{color:var(--muted);gap:4px;font-size:.76rem;font-weight:800;display:grid}.assumption-grid input{width:100%}.grid-panel{flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.grid-meta .drag-instruction{color:#176a64;margin-top:3px;font-size:.7rem;font-weight:800}.drag-onboarding-copy{border-left:3px solid var(--teal);color:#175d50;background:#eef7f5;margin:12px 0 0;padding:10px 11px;font-size:.82rem;font-weight:800;line-height:1.45}.move-status{color:#245c55;background:#e9f5f1;border-bottom:1px solid #b8d8cf;justify-content:space-between;align-items:center;gap:12px;min-height:34px;padding:5px 10px;font-size:.78rem;font-weight:800;display:flex}.move-status button{background:var(--teal);min-height:24px;padding:0 9px;font-size:.72rem}.grid-meta{border-bottom:1px solid var(--line);flex:none;padding:8px 10px}.grid-meta p{color:var(--muted);margin-top:3px;font-size:.85rem}.grid-view-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.scrunch-toggle,.override-toggle{border:1px solid var(--line);min-height:26px;color:var(--muted);background:0 0;padding:3px 8px;font-size:.72rem;font-weight:800}.scrunch-toggle:hover,.scrunch-toggle:focus-visible,.override-toggle:hover,.override-toggle:focus-visible{border-color:var(--teal);color:var(--teal);background:#eef7f5}.scrunch-toggle.active{background:var(--teal);color:#fff;border-color:#176a64;min-height:30px;padding:4px 11px;box-shadow:0 2px 8px #1f7d7647}.scrunch-toggle.active:hover,.scrunch-toggle.active:focus-visible{color:#fff;background:#176a64;outline:2px solid #1f7d7640}.override-toggle.active{border-color:var(--teal);color:var(--teal);background:#eef7f5}.table-wrap{flex:auto;min-height:0;overflow:auto}.future-grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.76rem}.future-grid th,.future-grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;height:30px;padding:3px 5px}.future-grid tbody td{font-weight:600}.future-grid th{z-index:3;background:var(--panel-strong);color:#4d453b;text-transform:uppercase;font-size:.68rem;position:sticky;top:0}.future-grid th.column-year,.future-grid td.column-year,.future-grid th.column-age,.future-grid td.column-age{box-sizing:border-box;width:6ch;min-width:6ch;max-width:6ch;padding-left:3px;padding-right:3px;overflow:hidden}.future-grid th.column-cash,.future-grid td.column-cash{box-sizing:border-box;width:12ch;min-width:12ch;max-width:12ch;overflow:hidden}.future-grid th.column-net,.future-grid td.column-net{box-sizing:border-box;width:13ch;min-width:13ch;max-width:13ch;overflow:hidden}.future-grid th.column-age .column-header-button{padding-left:1px;padding-right:1px}.future-grid th.column-age .column-collapse-button{flex-basis:10px;width:10px}.future-grid.scrunched tbody td{height:19px;padding-top:0;padding-bottom:0;font-size:.68rem;line-height:18px}.future-grid.scrunched .money-input,.future-grid.scrunched .note-cell input{height:17px;min-height:17px;padding-top:0;padding-bottom:0;font-size:.68rem;line-height:16px}.future-grid.scrunched .drag-grip{background-position:4px 1px;height:15px;min-height:15px}.column-header-button{width:100%;min-height:22px;color:inherit;cursor:pointer;font-size:inherit;text-align:right;text-transform:inherit;background:0 0;border:0;border-radius:5px;padding:2px 4px;font-weight:900;display:block}.column-header-controls{justify-content:flex-end;align-items:center;gap:1px;display:flex}.column-collapse-button,.column-expand-all-button{color:currentColor;background:#ffffff73;border:0;border-radius:3px;flex:0 0 13px;width:13px;min-height:16px;padding:0;font-size:.58rem;font-weight:900;line-height:1}.column-collapse-button:hover,.column-collapse-button:focus-visible,.column-expand-all-button:hover,.column-expand-all-button:focus-visible{background:#24231f1f;outline:1px solid}.column-expand-all-button{white-space:nowrap;flex:none;width:auto;padding:0 5px;font-size:.6rem}.future-grid th.column-collapsed,.future-grid td.column-collapsed{color:#0000;width:14px;min-width:14px;max-width:14px;padding-left:0;padding-right:0;font-size:0;overflow:hidden}.future-grid td.column-collapsed>*{display:none}.future-grid th.column-collapsed .column-header-controls,.future-grid th.column-collapsed .column-collapse-button{display:flex}.future-grid th.column-collapsed .column-collapse-button{width:12px;min-height:18px;color:var(--ink);flex-basis:12px;justify-content:center;align-items:center}.column-header-button:hover,.column-header-button:focus-visible,.column-header-button[aria-pressed=true]{background:#1f7d7621;outline:none}.column-pinned .column-header-button:before{content:"";background:var(--teal);vertical-align:1px;border-radius:999px;width:6px;height:6px;margin-right:5px;display:inline-block}.future-grid td.column-year,.future-grid td.column-age,.future-grid td.column-note{background:#faf8f3}.future-grid td.column-equity{background:#edf4f7}.future-grid td.column-cash{color:#5f4500;background:#fff0ad;font-weight:900;box-shadow:inset 2px 0 #a978006b,inset -2px 0 #a978006b}.future-grid td.column-cash.negative-cash{color:var(--red)}.future-grid td.column-interest{background:#eef7f5}.future-grid td.column-incomeOverride{background:#eef6eb}.future-grid td.column-pensionOverride{background:#e5f0f7}.future-grid td.column-budgetOverride{background:#fff2ed}.future-grid td.column-spend{background:#fbdedb}.future-grid td.column-downsize{background:#fff7dc}.future-grid td.column-windfall{background:#cfe9d8}.future-grid td.column-net{background:#eeeae3}.future-grid th.column-equity{box-shadow:inset 0 3px 0 var(--blue);background:#d7e7ee}.future-grid th.column-cash{color:#5f4500;background:#efd46b;box-shadow:inset 2px 0 #a97800,inset -2px 0 #a97800,inset 0 4px #a97800}.future-grid th.column-interest{background:#dcece8;box-shadow:inset 0 3px #57948d}.future-grid th.column-incomeOverride{box-shadow:inset 0 3px 0 var(--green);background:#dcebd7}.future-grid th.column-pensionOverride{box-shadow:inset 0 3px 0 var(--blue);background:#cadfea}.future-grid th.column-budgetOverride{background:#f7dfd7;box-shadow:inset 0 3px #b65f4b}.future-grid th.column-spend{box-shadow:inset 0 3px 0 var(--red);background:#efc2bd}.future-grid th.column-downsize{box-shadow:inset 0 3px 0 var(--amber);background:#f3e6b9}.future-grid th.column-windfall{background:#a9d6b9;box-shadow:inset 0 3px #197445}.future-grid th.column-net{background:#ddd7cc;box-shadow:inset 0 3px #5e574d}.future-grid tr.steady td{background:#edf7ef}.future-grid tr.watch td{background:#fff8df}.future-grid tr.critical td{background:#fff0ee}.future-grid tr:hover td{background:#eef5ed}.future-grid th.column-active,.future-grid td.column-active,.future-grid tr.watch td.column-active,.future-grid tr.critical td.column-active,.future-grid tr:hover td.column-active{box-shadow:inset 2px 0 0 var(--teal), inset -2px 0 0 #1f7d7659;background:#dff1eb}.future-grid th.column-active{color:var(--ink);background:#cfe7df}.sticky-col{z-index:2;text-align:left;background:inherit;position:sticky;left:0}th.sticky-col{z-index:4}.year-cell{font-weight:900}.money{font-variant-numeric:tabular-nums}.money.strong{font-weight:900}.money-input{text-align:right;font-variant-numeric:tabular-nums;background:0 0;border-color:#0000;width:66px;min-height:23px;padding:2px 4px}.money-input.touched{font-weight:800}.override-locked .money-input{cursor:default}.event-cell{cursor:grab;position:relative}.future-grid .downsize-edit-button{width:100%;min-height:0;color:inherit;text-align:right;cursor:pointer;background:0 0;border:0;font-family:inherit;display:block}.event-cell:active{cursor:grabbing}.event-cell .money-input{padding-right:13px;font-weight:800}.event-cell .money-input.touched{cursor:grab;touch-action:none}.event-cell .money-input.touched:active{cursor:grabbing}.drag-grip{background:radial-gradient(circle, var(--teal) 1px, transparent 1.5px) 4px 2px / 4px 4px;color:#0000;cursor:grab;opacity:.7;touch-action:none;-webkit-user-select:none;user-select:none;border:0;border-radius:3px;width:12px;min-height:20px;padding:0;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.drag-grip:hover,.drag-grip:focus-visible{outline:1px solid var(--teal);opacity:1;background-color:#d8eee8}.drag-grip:active{cursor:grabbing}.drag-value-ghost{z-index:60;border:1px solid var(--teal);min-width:92px;color:var(--ink);text-align:right;white-space:nowrap;pointer-events:none;will-change:transform;background:#fffefa;border-radius:5px;padding:5px 9px;font-size:.74rem;font-weight:900;line-height:1.2;position:fixed;top:0;left:0;box-shadow:0 5px 16px #24231f38}.future-grid td.drag-target,.future-grid tr.watch td.drag-target,.future-grid tr.critical td.drag-target,.future-grid tr:hover td.drag-target{box-shadow:inset 0 0 0 2px var(--teal);background:#c9eadf}.future-grid td.drag-blocked,.future-grid tr.watch td.drag-blocked,.future-grid tr.critical td.drag-blocked,.future-grid tr:hover td.drag-blocked{background:var(--red-soft);box-shadow:inset 0 0 0 2px var(--red)}.money-input.touched{background:0 0;border-color:#0000;outline:none}.money-input:focus{border-color:var(--line-strong);background:#fffefa;outline:none}.event-cell .money-input.touched{border-color:var(--line-strong);background:#fffefa}.note-cell{min-width:140px}.note-cell input{background:0 0;border-color:#0000;width:100%}.note-cell input:focus{border-color:var(--line-strong);background:#fffefa;outline:none}@media (max-width:980px){.app-shell{padding:12px;overflow:auto}.topbar{flex-direction:column;align-items:stretch}.summary-band,.workspace{grid-template-columns:1fr}.grid-panel{min-height:78vh}.insights-panel{overflow:visible}.table-wrap{max-height:none}}@media (max-width:640px){.summary-band{grid-template-columns:1fr 1fr}.scenario-controls{align-items:stretch}.scenario-controls label,.scenario-controls button{flex:150px}.assumption-grid{grid-template-columns:1fr}.setup-backdrop{padding:8px}.setup-dialog{overscroll-behavior:contain;max-height:calc(100dvh - 16px);padding:18px 18px 0}.setup-fields{grid-template-columns:1fr}.setup-actions{z-index:2;padding:11px 18px calc(11px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--panel);margin:18px -18px 0;position:sticky;bottom:0;box-shadow:0 -5px 12px #24231f14}}
