{% comment %} The single global toast surface. Included once by base.html, so it is on every page — authenticated or not — and no view needs a per-page include. DEVIATION 2 of the L1-B brief. Studio ships two independent, non-communicating systems: * an Alpine red error box in base.html, fed by htmx:responseError, that can only ever show errors; and * a vanilla-JS bottom-centre host in approvals/partials/_toasts.html which renders the four tones but has to be included by hand on each page, outside any htmx-swapped region, or a list refresh fired by the same response tears the toast down before it is read. They are merged here. This host listens for BOTH `showToast` (dispatched by htmx from the HX-Trigger header that apps.common.htmx.toast_response sets) and htmx:responseError, so toast_response(...) works from any view on any page and a server error still surfaces instead of dying in the console. Carried over unchanged, because each exists for a reason: * server-supplied strings only ever reach the DOM through textContent; the element skeleton is built from a hard-coded table in this file. Toast bodies carry platform-supplied content (SECURITY-BASELINE §2). * error responses are parsed with DOMParser, which builds an INERT document: no script runs, no /