Responsive cleanup for the book viewer and a cap on long OpenLibrary subject lists. ## Tasks - [ ] Review `App.css`, `BookCard.css`, and the control CSS at a 320 px-wide viewport and a normal desktop viewport - [ ] Keep the subject filter, sort control, jump list, navigation buttons, and favorite controls readable and usable without horizontal scrolling - [ ] Stack or resize book cover, book information, and controls where needed on narrow screens while keeping a balanced desktop layout - [ ] Render at most five subject tags on a book card; show a small `+N more` indicator when additional subjects exist - [ ] Keep text contrast and existing visible keyboard focus clear after the styling changes - [ ] Update component tests/snapshots deliberately if the subject-tag output changes ## Acceptance criteria - [ ] No horizontal page scrolling at 320 px width - [ ] The book viewer remains clear and usable on narrow and wide screens - [ ] Long subject lists no longer dominate a book card - [ ] `npm run format:check` / `npm run lint` / `npm test` / `npm run build` pass Branch `feat/<n>-responsive-book-view` from main. Part of M4.