{# Confirm gate rendered as a real modal (not a toast): a blocking, focus-trapping prompt the user must act on. On the htmx path it renders closed and app.js calls dialog.showModal() after the swap; the no-JS full-page fallback has no JS to open it, so it renders ``open`` (visible inline) when ``is_htmx`` is false. Submitting posts stage=execute and *appends* the result toast to #toast-stack (so it coexists with other in-flight results); app.js closes this dialog on beforeSend and clears #action-slot on afterRequest, so the modal never lingers. #}