a11y(loyalty): Phase 4.2 — accessibility audit fixes
Fix 15 accessibility issues across loyalty templates:
Modals (4 fixes):
- storefront/dashboard.html: barcode modal — add role="dialog",
aria-modal, aria-labelledby, @keydown.escape
- storefront/enroll.html: terms modal — add role="dialog",
aria-modal, aria-labelledby, aria-label on close button
- store/enroll.html: success modal — add role="dialog",
aria-modal, aria-labelledby, @keydown.escape
- store/terminal.html: PIN entry — add aria-live="polite" on
digit display with role="status" for screen reader announcements
Icon-only buttons (10 fixes):
- shared/pins-list.html: edit, delete, unlock — add aria-label
- admin/programs.html: view, edit, delete, activate/deactivate —
add aria-label (dynamic for toggle state)
- store/terminal.html: clear customer, backspace — add aria-label
All buttons also get explicit type="button" where missing.
342 tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>