{% load i18n %} {% comment %} Quick 2-way RSVP (In/Out) for a hero card -- Home's own (M1) and Coach Today's "Also yours" card share this exact markup. Picking "Out" first asks for an optional reason (Attendance.note) before submitting -- private by construction, not by a visibility flag: nothing anywhere renders another member's own note, so writing it here and reading it back in event_detail's "Your answers" (this same member/family) and Coach mode's bench attendance (mobile/templates/mobile/coach/attendance.html) is the entire access story, no extra permission check needed. Expects ``hero_attendance`` in scope. ``cross_shell`` no longer changes anything here (kept as a no-op param for call-site compatibility) -- both forms are unconditionally hx-boost="false" regardless of shell. Boosting a form that Alpine also owns (x-show toggling between this pair of sibling forms) had htmx and Alpine both trying to intercept the same submit, which was breaking both In and Out. A real navigation for a write action is a fine, standard trade -- hx-boost's value is in link-to- link browsing, not swallowing every POST on the page. Neither button is colour-coded (no green "In") -- nobody has answered yet at this point (that's the whole reason for the "are you in?" prompt), so a green default would misleadingly read as an already-recorded answer. Both are the same neutral steel tone with a shared border/white-text treatment for readability against the photo backdrop. The row is CSS grid (grid-cols-2), not flex -- flex-1 alone kept giving "Out" a wider share than "In" in practice (a longer label's own intrinsic content width can still influence a flex item's rendered size even with flex-basis:0, depending on what else is set on it/its children -- min-w-0 didn't fully neutralise it here). Two equal-width `1fr` grid columns don't have that ambiguity: track size is fixed by the grid regardless of content, full stop. The Out reason step (label + textarea + Cancel/Confirm) is wrapped in one bordered/backed panel, same border colour as the In/Out pair -- reads as one cohesive control rather than loose floating text and buttons. Its own Cancel/Confirm pair is grid-cols-2 for the same equal-width reason. {% endcomment %}
{% csrf_token %}
{% csrf_token %}