The shared table is built to be operable and announced, not just pretty. Below, from one live play frame: the keyboard focus order (certified — no dead controls, every intent known), the accessibility tree (every node's ARIA role + accessible name), and a reduced-motion audit of the stylesheet. Proof-only.
Keyboard focus order — the play frame's interactive targets
In paint order (the renderer's tab sequence). ✓ certified — every control resolves to a known intent, no dead targets
- 1play-card10 of Spadesfocus ⌖ 250,612
- 2play-cardQueen of Spadesfocus ⌖ 361,612
- 3play-card8 of Spadesfocus ⌖ 473,612
- 4play-card10 of Heartsfocus ⌖ 584,612
- 5play-cardKing of Heartsfocus ⌖ 696,612
- 6play-card7 of Heartsfocus ⌖ 807,612
- 7play-cardQueen of Diamondsfocus ⌖ 919,612
- 8play-cardKing of Clubsfocus ⌖ 1030,612
Accessibility tree — what a screen reader announces
Every labelled reference node: ARIA role + accessible name. Seats are group, cards button, the trick img, the HUD status.
| role | accessible name | |
|---|---|---|
| group | Game table | |
| group | You, 8 cards, your turn | |
| group | Player P2, 8 cards | |
| group | Player P3, 8 cards | |
| group | Player P4, 8 cards | |
| button | 10 of Spades | focusable |
| button | Queen of Spades | focusable |
| button | 8 of Spades | focusable |
| button | 10 of Hearts | focusable |
| button | King of Hearts | focusable |
| button | 7 of Hearts | focusable |
| button | Queen of Diamonds | focusable |
| button | King of Clubs | focusable |
| status | Score: A 10, B 10 | |
| status | PLAYING — Your turn |
Reduced motion — every table animation is gated
premium-table.css declares 28 keyframe animations, all gated behind 10 @media (prefers-reduced-motion: reduce) blocks (10 animation:none resets), with dedicated low-motion fallbacks: t304-deal-fade-reduced, t304-flick-fall-reduced.
The live table (honours prefers-reduced-motion)
The genuine table for the frame audited above. Under prefers-reduced-motion its dealing, flick-fall, pulses, aura and holographic loops all stand still.