/* One shared timeline: balance above, dividends below. */
.projection-panel,.projection-chart-root{min-width:0;max-width:100%}
.projection-section-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 20px;margin:0 0 18px}
.projection-section-heading h2,.projection-section-heading h3{margin:0}
.projection-controls{display:flex;flex-wrap:wrap;align-items:end;gap:12px 18px;margin:18px 0;min-width:0}
.projection-controls>label{display:grid;gap:6px;flex:1 1 180px;min-width:0;font-size:0.875rem;color:var(--muted)}
.projection-controls select{width:100%;min-width:0;max-width:100%;color:var(--text)}
.projection-note{font-size:0.875rem;line-height:1.7;color:var(--muted);margin:14px 0}
.projection-ledger{min-width:0;margin-top:22px;border-top:1px solid var(--line);padding-top:10px}
.projection-ledger>summary{cursor:pointer;font-size:0.875rem;line-height:1.6;min-height:44px;align-content:center}
.projection-ledger[open]>summary{margin-bottom:14px}
.projection-chart-root{--projection-balance:var(--chart-before);--projection-dividend:var(--chart-after);--projection-negative:var(--status-danger,#af493c);--projection-spending:var(--status-warning,#96631e);color:var(--text)}
.projection-chart-key{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-size:0.875rem;line-height:1.65;margin:0 0 10px;color:var(--muted)}
.projection-chart-key>span{display:flex;align-items:center;gap:7px;min-width:0}
.projection-chart-key i{display:inline-block;width:21px;flex:0 0 21px}
.projection-key-line{height:3px;background:var(--projection-balance)}
.projection-key-bar{height:12px;background:var(--projection-dividend);border-radius:2px}
.projection-key-spending{height:0;border-top:3px dashed var(--projection-spending)}
.projection-chart-key .projection-chart-basis{margin-left:auto;font-size:0.875rem;border:1px solid var(--line);border-radius:4px;padding:3px 8px}
.projection-chart-svg{display:block;width:100%;max-width:100%;height:auto;overflow:visible;touch-action:pan-y;border-radius:5px}
.projection-chart-svg:focus-visible{outline:2px solid var(--focus);outline-offset:4px}
.projection-chart-svg text{fill:var(--muted);font-family:ui-sans-serif,system-ui,sans-serif;font-size:0.875rem;font-variant-numeric:tabular-nums}
.projection-chart-svg .projection-zone-title{fill:var(--text);font-size:0.875rem;font-weight:550}
.projection-chart-svg .projection-axis-caption{font-size:0.875rem}
.projection-chart-tick line{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4}
.projection-chart-tick .projection-zero-line{stroke-dasharray:none}
.projection-retired-zone{fill:var(--soft);opacity:.6}
.projection-balance-area{fill:var(--projection-balance);opacity:.08}
.projection-balance-line{fill:none;stroke:var(--projection-balance);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.projection-spending-line{fill:none;stroke:var(--projection-spending);stroke-width:2.5;stroke-dasharray:6 4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.projection-dividend-bar{fill:var(--projection-dividend);opacity:.65;transition:opacity .12s}
.projection-dividend-bar.is-negative{fill:var(--projection-negative)}
.projection-dividend-bar.is-selected{opacity:1;stroke:var(--text);stroke-width:1;vector-effect:non-scaling-stroke}
.projection-retirement-line{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 5;opacity:.65}
.projection-chart-svg .projection-retirement-label{font-size:0.875rem}
.projection-year-cursor{stroke:var(--text);stroke-width:1;stroke-dasharray:3 4;opacity:.6;pointer-events:none}
.projection-balance-dot{fill:var(--projection-balance);stroke:var(--surface);stroke-width:2;pointer-events:none}
.projection-dividend-dot{fill:var(--projection-dividend);stroke:var(--surface);stroke-width:1.5;pointer-events:none}
.projection-spending-dot{fill:var(--projection-spending);stroke:var(--surface);stroke-width:1.5;pointer-events:none}
.projection-navigation{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;margin:12px 0 18px}
.projection-chart-root .projection-navigation button{height:44px;min-height:44px;min-width:44px;width:44px;padding:0;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:1.5rem;line-height:1;border-radius:7px}
.projection-navigation button:disabled{opacity:.35;cursor:default}
.projection-navigation>label{font-size:0.875rem;line-height:1.5;color:var(--muted);min-width:0;display:grid;gap:3px}
.projection-chart-root input[type=range]{width:100%;max-width:100%;min-width:0;min-height:32px;margin:0;padding:0;accent-color:var(--projection-balance);cursor:pointer;background:transparent;border:0;box-shadow:none}
.projection-chart-root input[type=range]:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.projection-chart-readout{background:var(--soft);border:1px solid var(--line);border-radius:9px;padding:16px 18px;min-width:0}
.projection-readout-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin-bottom:15px}
.projection-readout-heading h4{font:550 0.875rem/1.6 ui-sans-serif,system-ui,sans-serif;color:var(--text);margin:0}
.projection-readout-heading p{font-size:0.875rem;line-height:1.6;color:var(--muted);margin:0}
.projection-readout-basis{font-size:0.875rem;line-height:1.6;color:var(--muted);margin:-6px 0 15px}
.projection-year-values{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr));gap:15px 18px;margin:0}
.projection-year-values>div{min-width:0}
.projection-year-values>div[hidden]{display:none}
.projection-year-values dt{font-size:0.875rem;line-height:1.6;color:var(--muted);margin:0 0 4px}
.projection-year-values dd{font-size:.88rem;line-height:1.5;font-weight:550;font-variant-numeric:tabular-nums;color:var(--text);margin:0;overflow-wrap:anywhere}
.projection-year-values .projection-value-primary dd{font-size:1.1rem}
.projection-year-values [data-projection-unmet] dd{color:var(--status-danger,var(--projection-negative))}
.projection-chart-help,.projection-chart-empty{font-size:0.875rem;line-height:1.7;color:var(--muted);margin:12px 0 0}
@media(max-width:540px){.projection-controls{gap:12px}.projection-chart-key .projection-chart-basis{margin-left:0}.projection-chart-readout{padding:14px}.projection-navigation{gap:10px}.projection-chart-key{column-gap:12px}}
@media(prefers-reduced-motion:reduce){.projection-dividend-bar{transition:none}}
