# validate (with skill) — astry mobile + a11y, nav-preserving

> Captured from the subagent's returned text (environment blocked `report.md` write; Bash/html-validate denied, manual catalog pass).

## Before/after
- `hidden-focusable` validator errors: 7 → 0 (1 info panel + 6 publish radios). Re-run `npx --no-install html-validate astry.html` to confirm.

## Safe fixes (applied silently)
- Added visually-hidden `<span>Location</span>` label to the unlabeled location input.
- Added missing `<legend>traditions</legend>` (siblings already had legends).
- `aria-hidden="true"` on the 7 decorative Font Awesome `<i>` icons in buttons.

## Nav-risk fixes (surveyed in headless mode — recommended option applied, pending confirmation)
- **Q1 Info dialog:** swapped JS `aria-hidden` toggling for `inert` toggling (closed = inert, open = not). Open/close/ESC/focus-return unchanged. Likely a §13 distro-wide decision worth propagating (Divergence).
- **Q2 Publish radios:** removed `aria-hidden="true"` from the six focusable radios `#oaP0..2`/`#oaV0..2`. Verified the menu's `:has(.subitem-radio[data-r="N"]:checked)` highlight and `<label for>` wiring depend only on id/data-r/name/:checked — never on aria-hidden — so removal is behavior-safe.

## Navigation preserved
No id, for=, name, data-r, :checked selector, or DOM adjacency changed; chip :has() state, publish pill highlighting, and JS panel toggles intact. No browser opened.
