Ephemeral feedback for actions like Fix applied, Citations checked, and
Copied. Same canonical tokens, four incompatible form factors:
where the toast lives, how it animates in/out, and whether it occupies dedicated space
or shares the layout. All four ship a role="status"/aria-live="polite"
region — fixing the unannounced-results SR gap the audit flagged.
A single dedicated slot pinned to the bottom of the taskpane. The toast replaces the last result row's space for a few seconds, then leaves. Reads as a physical card lifted off the paper — engraved-parchment aesthetic preserved with a soft hairline + 1px shadow. Single-slot means newest message wins; no stacking complexity.
A full-width strip docked to the top of the pane, pushing content down rather than floating over it. Drops down, pauses, lifts back up. The ribbon uses a 3-px top edge in the semantic color and a tint wash — no fill-on-fill clash. Most assertive of the four; suits a product where confirmations should be felt not just seen.
A first-class citizen of the layout: a dedicated status row that sits between the header and the result list, lives in flow, and animates with a horizontal slide + opacity (not vertical). Quiet, persistent-while-relevant, no float, no overlay. Most native to the engraved-parchment metaphor — it behaves like a printed marginal note.
A small column pinned to the top of the pane. Each new toast pushes the others down — you keep the full history of what just happened (fix applied, then copied, then error). Slides in from the right; old items fade & collapse. Best for the SwiftUI launcher, which has no 350 px constraint and benefits from a visible audit trail of recent actions.
A · dock: 1 toast, bottom-anchored, fades after 3s. Most Material-y, but executed in parchment.
B · push: 1 toast, top-anchored, pushes content (re-flows). Most assertive, most "noticed".
C · replace: 1 toast, in-flow, lives above results. Most native to engraved-parchment, lowest visual cost.
D · stack: Multi-toast, top-anchored, history-preserving. Best for launcher / wide panes; most complex.
All four use the same canonical tokens (raised, hair, tints, ink-soft, mono labels, --green/--err/--gold-text).
The aesthetic cost difference is zero — the form-factor difference is the whole point.
Every direction exposes role="status" + aria-live="polite", fixing the WCAG unannounced-results gap.