{# Harvest plan summary tile — splits out of _harvest_plan.html so it can be HTMX-swapped on checkbox toggle without remounting the table (A2.3). #}
Harvest plan
{% include "_spinner.html" %}
Selected: {{ plan.selected|length }} of {{ rows|length }} candidates · −${{ "%.2f"|format(plan.total_loss_harvested|float|abs) }} loss harvested {% if has_tax_config %} · tax saved (est.): ${{ "%.2f"|format(plan.estimated_tax_saved|float) }} {% else %} · configure tax rates to see tax-saved estimates {% endif %}
Offsets gains: ${{ "%.2f"|format(plan.gain_offset_used|float) }} · against ordinary income (capped $3K): ${{ "%.2f"|format(plan.ordinary_offset_used|float) }}
{# When called via HTMX with HX-Target=harvest-summary, the route also emits per-row OOB tax-saved cell fragments below. #} {% if oob_cells %}{{ oob_cells|safe }}{% endif %}