Give saved favorites their own app view, keeping every favorite together even when the user changes subject or reloads the page. ## Tasks - [ ] Update `src/hooks/useFavorites.ts` so a favorite stores the book information needed by the overview, not only its OpenLibrary key - [ ] Keep using the existing `t19.favorites` `localStorage` key with JSON data, and tolerate missing, corrupt, or legacy key-only values without crashing - [ ] Update `App.tsx` with clear, accessible Library and Favorites view controls; show one view at a time without introducing a router or a third-party package - [ ] Update `App.tsx` so adding or removing the current book updates the stored favorite book data immediately - [ ] Update `src/components/FavoritesView.tsx` and its CSS so the separate Favorites view renders saved favorites independently of the selected subject and current ten-book result - [ ] Give the favorites overview a clear heading, stable order, useful author information, and an individual remove control for every saved book - [ ] Keep the current favorite button state correct when the user returns to a previously saved book - [ ] Do not persist OpenLibrary search results generally; only persist the user-selected favorite records needed for this feature - [ ] Add MSW-backed component and user-interaction tests for saving favorites from more than one subject, removing a favorite, restoring after reload, and safe handling of bad storage data ## Acceptance criteria - [ ] The app has a clearly labelled Favorites view that is separate from the Library view - [ ] Favorites added from different subjects appear together in that separate view - [ ] Changing the subject never removes or hides an already saved favorite - [ ] Favorites remain after closing and reopening the browser through `localStorage` - [ ] Removing a favorite updates both the overview and the matching book's favorite button - [ ] Existing `t19.favorites` values do not cause the app to crash - [ ] Tests never make real OpenLibrary requests - [ ] `npm run format:check` / `npm run lint` / `npm test` / `npm run build` pass Branch `feat/<n>-global-favorites-overview` from main. Part of M4.