Accessibility pass for the controls and book viewer before delivery. ## Tasks - [ ] Review `App`, `SubjectFilter`, `SortSelect`, `BookJumpList`, `NavigationControls`, `FavoriteButton`, and `FavoritesView` - [ ] Ensure every select and button has a clear visible label or accessible name - [ ] Keep clear semantic structure for the header, main content, book viewer, navigation, and favorites section - [ ] Make keyboard tab order sensible and ensure focus is always clearly visible - [ ] Ensure loading, error, empty-result, and changed-book feedback is announced appropriately - [ ] Ensure book covers have useful alternative text and the no-cover fallback communicates the same information - [ ] Add or update focused component/user-interaction tests for changed accessibility behaviour ## Acceptance criteria - [ ] All library controls can be operated with keyboard only - [ ] `npm run format:check` / `npm run lint` / `npm test` / `npm run build` pass, jsx-a11y clean Branch `feat/<n>-accessibility-pass` from main. Part of M4.