:root{--page: #f4f2ec;--surface: #ffffff;--surface-muted: #fbfaf7;--border: #eae7dd;--text: #1f1d18;--text-muted: #6f6a5e;--positive: #0c7550;--alert: #b23c0b;--accent: #5b4bc4;--radius: 14px;--shadow-pop: 0 2px 6px rgb(31 29 24 / 8%);--mono: "Spline Sans Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--text);font:400 14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.app{max-width:1240px;margin:0 auto;padding:clamp(12px,4vw,24px)}.app-header{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:16px}.app-title{margin:0;font-size:18px;font-weight:600}.app-age{margin:0;font:500 11px/1 var(--mono);color:var(--text-muted)}.app-body{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}@media(max-width:1023px){.app-body{grid-template-columns:minmax(0,1fr)}}.app-main,.rail,.empty-state,.placeholder{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.app-main{padding:0;background:transparent;border:none;display:flex;flex-direction:column;gap:20px}.app-header-status{display:flex;align-items:baseline;gap:14px}.save-indicator{margin:0;font:500 11px/1 var(--mono);color:var(--text-muted)}.save-indicator.save-not-saved,.save-indicator.save-conflict,.save-indicator.save-sign-in-required{color:var(--alert)}.notice{margin:0 0 16px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-muted);color:var(--text-muted);font-size:12.5px}.notice-alert{border-color:var(--alert);color:var(--text)}.notice-alert p{margin:0 0 8px}.notice-title{font-weight:600}.notice-action{margin-top:4px;padding:7px 12px;border:1px solid var(--alert);border-radius:8px;background:var(--surface);color:var(--alert);font:600 12px/1 inherit;cursor:pointer}.notice-action:hover{background:var(--surface-muted)}.freshness-mark{margin:0 0 10px;font:500 11px/1.4 var(--mono);color:var(--text-muted)}.freshness-mark.freshness-outdated{color:var(--alert)}[data-freshness=outdated] .verdict-badge,[data-freshness=outdated] .verdict-headline,[data-freshness=outdated] .rail-note,[data-freshness=outdated] .sparkline,[data-freshness=outdated] .surplus-amount,[data-freshness=outdated] .surplus-none,[data-freshness=outdated] .money-moves-surplus,[data-freshness=outdated] .chart-legend,[data-freshness=outdated] .growth-chart,[data-freshness=outdated] .rail-stat[data-source=projection]{opacity:.45;filter:grayscale(100%)}.empty-state,.placeholder{padding:32px}.empty-state h2,.placeholder h2{margin:0 0 12px;font-size:16px}.empty-state p{margin:0 0 12px;max-width:62ch;color:var(--text-muted)}.empty-state-note{font-size:12.5px}.primary-action{margin-top:8px;padding:8px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-muted);color:var(--accent);font:500 12px var(--mono);cursor:pointer}.primary-action:hover{background:#efecfa}.app-rail{display:flex;flex-direction:column;gap:20px;min-width:0}.rail{padding:20px}.verdict-badge{display:inline-block;margin:0 0 8px;padding:3px 8px;border-radius:9px;font:500 10px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.04em}.verdict-badge.tone-on-track{color:var(--positive);background:#e8f5ef}.verdict-badge.tone-at-risk{color:var(--alert);background:#fceee7}.verdict-headline{margin:0 0 16px;font-size:18px;font-weight:600}.sparkline{margin:0;max-width:360px}.sparkline svg{display:block;height:auto}.sparkline-line{fill:none;stroke-width:2}.sparkline-line.tone-on-track{stroke:var(--positive)}.sparkline-line.tone-at-risk{stroke:var(--alert)}.sparkline-fill.tone-on-track{fill:#0e8f621f}.sparkline-fill.tone-at-risk{fill:#c2410c1f}.sparkline-marker{stroke:var(--text-muted);stroke-width:1;stroke-dasharray:3 3}.sparkline-dot.tone-on-track{fill:var(--positive)}.sparkline-dot.tone-at-risk{fill:var(--alert)}.sparkline-axis{display:flex;flex-direction:column;gap:1px;font:500 10px var(--mono);color:var(--text-muted)}.sparkline-axis-marker-row{position:relative;display:block;height:12px}.sparkline-axis-retirement{position:absolute;top:0;white-space:nowrap;font-weight:600;color:var(--accent)}.sparkline-axis-retirement.anchor-middle{transform:translate(-50%)}.sparkline-axis-retirement.anchor-end{transform:translate(-100%)}.sparkline-axis-ends{display:flex;justify-content:space-between}.rail-note{margin:16px 0 0;font-size:12px;color:var(--text-muted)}.rail-sliders{margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.rail-slider{display:flex;flex-direction:column;gap:5px}.rail-slider-head{display:flex;align-items:baseline;gap:10px;font-size:12.5px}.rail-slider-label{color:var(--text);font-weight:500;min-width:0}.rail-slider-value{margin-left:auto;flex:0 0 auto;white-space:nowrap;font:600 13px var(--mono);color:var(--accent)}.rail-slider-input{width:100%;margin:0;accent-color:var(--accent);touch-action:pan-y}.rail-slider-input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.rail-stats{margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:9px}.rail-stat{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px}.rail-stat dt{color:var(--text-muted);min-width:0}.rail-stat dd{margin:0;flex:0 0 auto;white-space:nowrap;font:600 12.5px var(--mono);color:var(--text)}.rail-stat-value.tone-alert{color:var(--alert)}.placeholder-hint{font-size:12.5px;color:var(--text-muted)}code{font-family:var(--mono)}.accounts-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;overflow-x:auto}.accounts-header h2{margin:0 0 2px;font-size:14px}.accounts-note,.accounts-legend{margin:0;font-size:12px;color:var(--text-muted)}.accounts{width:100%;margin-top:16px;border-collapse:collapse;table-layout:fixed}.accounts th{padding:0 8px 6px;font:600 9.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);text-align:left}.accounts th.cell-numeric{text-align:right}.accounts th:first-child{width:auto}.accounts th:nth-child(2){width:100px}.accounts th:nth-child(3){width:76px}.accounts th:nth-child(4),.accounts th:nth-child(5){width:74px}.cell-until{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:3px}.cell-until-label{font-size:10px;color:var(--text-muted);white-space:nowrap}.cell-until .inline-field{width:30px;font-size:11px;padding-left:4px;padding-right:4px}.accounts th:nth-child(6),.accounts td.cell-surplus{width:64px;padding-left:4px;padding-right:4px}.accounts th:last-child{width:48px}.accounts td{padding:3px 8px;vertical-align:top;position:relative}.cell-delete{text-align:right}.cell-name{display:flex;align-items:center;gap:8px}.account-dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--series-color)}.palette-0{--series-color: #5b4bc4}.palette-1{--series-color: #0e8f62}.palette-2{--series-color: #d9a13b}.palette-3{--series-color: #c2410c}.palette-4{--series-color: #8f7ff0}.palette-5{--series-color: #1f6f8b}.palette-idle{--series-color: #a09a8c}.inline-field{width:100%;min-width:0;padding:6px 8px;border:1px solid #e0dccf;border-radius:8px;background:var(--surface-muted);color:var(--text);font:500 12px inherit;font-family:inherit}.cell-name .inline-field{flex:1}.inline-field.align-right{text-align:right;font-family:var(--mono)}.inline-field:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.field-hint{position:absolute;top:calc(100% - 2px);left:8px;z-index:2;display:block;width:max-content;max-width:264px;padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);box-shadow:var(--shadow-pop);color:var(--alert);font-size:11px;line-height:1.35;text-align:left;pointer-events:none}.cell-numeric .field-hint{left:auto;right:8px}.field-hint:empty{padding:0;border-width:0;box-shadow:none}.delete-account,.delete-confirm button{border:1px solid transparent;border-radius:8px;background:none;color:var(--text-muted);cursor:pointer;font:500 12px var(--mono)}.delete-account{padding:4px 6px;font-size:15px;line-height:1}.delete-account:hover{color:var(--alert)}.delete-confirm{position:absolute;top:3px;right:8px;z-index:2;display:inline-flex;gap:4px;padding:2px;border-radius:8px;background:var(--surface);white-space:nowrap}.delete-confirm-yes{padding:4px 8px;border-color:var(--border)!important;color:var(--alert)!important}.delete-confirm-no{padding:4px 8px;border-color:var(--border)!important}.delete-account:focus-visible,.delete-confirm button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.accounts-footer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px}.accounts-footer .primary-action{margin-top:0}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.surplus-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:14px}.surplus-header h2{margin:0 0 2px;font-size:14px}.surplus-amount,.surplus-none,.surplus-note{margin:0;font-size:12.5px;color:var(--text-muted)}.surplus-amount{color:var(--text)}.surplus-routing{margin:0;padding:0;border:0;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}.surplus-routing legend{padding:0;margin-bottom:8px;font:600 9.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}.surplus-option{display:flex;align-items:center;gap:6px;font-size:12.5px;cursor:pointer}.surplus-option input{accent-color:var(--accent);cursor:pointer}.surplus-chip{font:500 10px var(--mono);padding:3px 6px;width:100%;border:1px solid var(--border);border-radius:9px;background:var(--surface-muted);color:var(--text-muted);cursor:pointer}.surplus-chip:hover{color:var(--text)}.surplus-chip:focus-visible,.surplus-option input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.surplus-chip-on,.surplus-chip-on:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent)}.growth-card,.allocation-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:12px}.growth-header{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 16px}.growth-header h2,.allocation-header h2{margin:0;font-size:14px}.growth-header h2{margin-right:auto}.chart-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0;padding:0;list-style:none;font-size:11.5px;color:var(--text-muted)}.chart-legend li{display:flex;align-items:center;gap:6px}.chart-swatch{width:8px;height:8px;border-radius:2px;flex:none;background:var(--series-color)}.chart-swatch.swatch-round{border-radius:50%}.growth-chart{margin:0;display:flex;flex-direction:column;gap:4px}.growth-chart svg{display:block;width:100%;height:190px}.growth-baseline{stroke:var(--border);stroke-width:1}.growth-band{fill:var(--series-color);opacity:.72}.growth-marker{stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3;opacity:.75}.growth-axis{margin:0;display:flex;flex-direction:column;gap:1px;font:500 10px var(--mono);color:var(--text-muted)}.growth-axis-marker-row{position:relative;display:block;height:13px}.growth-axis-retirement{position:absolute;top:0;white-space:nowrap;font-weight:600;color:var(--accent)}.growth-axis-retirement.anchor-middle{transform:translate(-50%)}.growth-axis-retirement.anchor-end{transform:translate(-100%)}.growth-axis-ends{display:flex;justify-content:space-between}.allocation-bar{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--border)}.allocation-segment{flex-basis:0;min-width:0;background:var(--series-color)}.allocation-percent{font:500 11.5px var(--mono);color:var(--text)}.allocation-note{margin:0;font-size:12px;color:var(--text-muted)}.money-moves{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px}.money-moves h2{margin:0 0 12px;font-size:13.5px;font-weight:600}.money-moves-regimes{margin:0;display:flex;flex-direction:column;gap:10px}.money-moves-regime{display:flex;align-items:baseline;gap:10px;font-size:12.5px;color:var(--text-muted)}.money-moves-regime dd{margin:0;flex:1;min-width:0;text-wrap:pretty}.money-moves-span{flex:0 0 auto;padding:3px 8px;border-radius:10px;font:500 11px var(--mono);white-space:nowrap}.money-moves-span.tone-before{color:var(--positive);background:#e8f5ef}.money-moves-span.tone-after{color:var(--accent);background:#efecfa}.money-moves-surplus{font:600 12.5px var(--mono);color:var(--text)}.nudge{padding:16px 18px;border:1px solid #d6cff0;border-radius:var(--radius);background:#efecfa;display:flex;flex-direction:column;gap:6px}.nudge-title{margin:0;font-size:13px;font-weight:600;color:#463a9e}.nudge-line,.nudge-figure{margin:0;font-size:12.5px;line-height:1.55;color:#4a4470;text-wrap:pretty}.nudge-figure{padding-top:6px;border-top:1px solid #d6cff0}.nudge-caveat{margin:0;font-size:11.5px;line-height:1.5;color:#565078}[data-freshness=outdated].nudge{opacity:.45;filter:grayscale(100%)}@media(max-width:767px){.accounts-card{overflow-x:visible}.accounts,.accounts tbody,.accounts tr,.accounts td{display:block;width:auto}.accounts thead{display:none}.accounts{margin-top:12px}.accounts tr{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-muted)}.accounts td{padding:0;border:none}.cell-name{grid-row:1;grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;row-gap:2px;padding-right:34px}.cell-label-name{flex-basis:100%}.cell-delete{grid-row:1;grid-column:1 / -1;justify-self:end;align-self:center;z-index:1}.cell-numeric{display:flex;flex-direction:column;gap:4px;position:relative}.cell-numeric[data-field=balance]{grid-column:1 / -1}.cell-numeric[data-field=monthlyContribution]{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start}.cell-field{display:flex;flex-direction:column;gap:4px;min-width:0}.cell-label{display:block;font:600 9.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}.accounts .inline-field{width:100%;min-height:44px;padding:10px 12px;font-size:13.5px;text-align:right}.cell-name .inline-field{text-align:left;font-weight:600}.cell-until{display:flex;flex-direction:column;align-items:stretch;gap:4px;margin-top:0;position:relative}.cell-until-label{display:none}.cell-until .inline-field{width:100%;font-size:13.5px;padding-left:12px;padding-right:12px}.cell-until-note{font-size:11px;line-height:1.35;color:var(--text-muted)}.accounts td.cell-surplus{grid-column:1 / -1;width:auto}.accounts td.cell-delete{width:auto}.accounts .surplus-chip{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px}}@media(min-width:768px){.cell-label,.cell-until-note{display:none}.cell-field{display:contents}}
