## Decorative by default

Backgrounds are rendered `aria-hidden`. Put real text on top of them, never inside. If a surface carries meaning, label it yourself with an `aria-label` on its parent.

## Images keep their alt

`DitherImage` leaves the `img` and its `alt` in the DOM. Screen readers announce the alt text whether or not the shader starts, and with JavaScript off the original photo shows.

## Reduced motion

With `prefers-reduced-motion: reduce` a surface draws one frame at the effect's still time and stops. No looping animation, no shimmering. This is per-element, so it also works when the OS setting changes while the page is open.

## Without WebGL

If WebGL2 is unavailable an ordered surface renders nothing; build pages so the background is decorative. `DitherImage` still shows the plain `img`.