{# One expense-account row, read entirely from a loop-bound `row` view-model (bulk-code/account-row-vm). The account typeahead reuses the shared components/typeahead.html partial (its context mapped in from row.account via a with block); the location select, percentage input, and remove button are inlined plain HTML. The location cell (#account-location-N) swaps just itself on account change; the remove button swaps the whole #bulk-code-form. Every dynamic attribute arrives pre-serialized as a string. #}
{{ row.account_error }}
{{ row.location_error }}
{{ row.pct_error }}