fix: hide the screen-reader data table on a wrapper div
`width` and `height` are minimums on a table box, so the visually-hidden recipe applied straight to the a11y fallback `<table>` never shrank it — it stayed at its intrinsic size (119x2184px in production) while `clip-path` hid it. Absolutely positioned, that size lands in the host page's nearest scroll container: a chat thread was carrying ~1900px of dead scroll space below its last chart, and `MAX_SR_TABLE_ROWS` puts the worst case near 20,000px. Move the hiding onto a wrapper div, which honours 1x1, and leave the table unstyled so it keeps its role, aria-label, caption, and `th[scope=col]` structure. `display: block` on the table would also collapse it but drops the implicit row/columnheader/cell roles. Switch the sr-only recipe from `overflow: hidden` to `overflow: clip` while here. A 1x1 `hidden` box wrapping taller content is a scrollable scroll container, and Chrome makes a scroller with no focusable descendants an implicit tab stop — the wrapper would have traded dead space for an invisible keyboard stop. `clip` never scrolls. Guard it with a Playwright containment invariant: no HTML box a chart renders may lay out beyond `.oc-root` unless something clips it, and every `.oc-sr-only` box stays 1x1. Verified failing before the fix and passing after, across all four browser projects.
R
Riley Hilliard committed
fcbfc2b377d8b507a53894ab799bcc9fed355f11
Parent: 4e5873d
Committed by Riley Hilliard <2060731+rileyhilliard@users.noreply.github.com>
on 8/19/2026, 2:40:23 PM