Working module — a slim dismissible bar, message + optional link + close button. Dismiss is in-page state only: no storage, so it reappears on reload by design.
module · static · zero-JS base, tiny JS for dismiss① Above: bare embed, pinned via data-sticky="top" — scroll this page and watch it stay put. Click the close button, then reload to confirm it comes back (that's correct, not a bug).
Scroll-filler content so the sticky behavior above is visible against page scroll. In a real client site, this would be the page header and hero section sitting just below the bar.
The bar never uses position:fixed — sticky positioning keeps it inside normal document flow, so it can pin without ever overlapping content beneath it.
② Second instance, inside a dark host — 5 --kbd-* lines on the wrapper re-skin it. Voice-swapped copy, no link this time (demonstrating the optional-link deletion), accent-tinted background via data-tone="accent", normal in-flow (no sticky).