- Text panel renders per-page `<section>` with `PdfTextToHtml.call(page_text).html_safe`
- Fixed `role="region"` excess landmark bug on sr-only divs
✅ **Add tab switcher to `app/views/submit_form/show.html.erb`**
- Same gate and structure; tablist is `sticky top-[60px]` to stay below sticky form header
- Text panel includes disclaimer + `signing_fields_below` hint; Vue form panel stays below scrollbox
✅ **Fix `role="region"` bug in `app/javascript/template_builder/page.vue`**
- Removed `role="region"` from sr-only div (was creating excess ARIA landmarks)
**Commit**: `929bb13f` — "Add PDF View / Text View tab switcher for accessibility"
### WCAG Criteria Further Addressed
✅ **1.3.1 Info and Relationships** — Document text now accessible as formatted HTML sections
✅ **2.1.1 Keyboard** — Tab switcher fully operable via keyboard (ARIA APG pattern)
✅ **4.1.2 Name, Role, Value** — Tablist, tabs, and tabpanels have correct ARIA roles/attributes
### Next Session Recommendations
1. **Manual verification**: Start dev server (`foreman start -f Procfile.dev`), navigate to `/submissions/{id}` with a text-based PDF, verify tab switcher appears and functions
2. **Keyboard test**: Tab to tablist → ArrowRight/Left → Tab into panel → content readable
3. **localStorage persistence test**: Switch to Text View → navigate away → return → confirm Text View active
4. **Gate test**: Use scanned PDF → verify no tab switcher shown
5. **VoiceOver test**: Announce tabs and panel content
6. **Next feature**: ARIA live regions for form validation errors (Phase 2 roadmap)