{# Inputs: cash_points: list[CashBalancePoint] (each has .on: date, .cash_balance: Decimal, .cumulative_contributions: Decimal), year: int #}

Cash & Contributions

Cash balance + net contributed · {{ year }}
{% if cash_points|length == 0 %}
No cash events yet — import a Schwab Transactions CSV to populate this chart.
{% else %} {# data-series-solid / data-series-dashed: stable hooks for tests + future JS readers (§5.12 P7). Solid line = cash balance; dashed = net contributed. #}
{% endif %}