iamnbutler/shelfgoblinPublic

Shelf Goblin โ€” discover LitRPG audiobooks, follow series, and track your library.

Gruvbox theme with Lora/Lilex typography (#73)

* Gruvbox theme with Lora + Lilex typography

- Gruvbox dark/light theme (auto-detects prefers-color-scheme)
- Lora serif for titles, authors, descriptions
- Lilex mono for metadata, tags, labels, counts, buttons
- Subgenre colors mapped to Gruvbox palette
- Toolbar: count โ†’ filter icon โ†’ typography-only sort toggles
- Genre toggles show book counts
- BookCard: tags before description, meta line at bottom, solid
  countdown badges, text-wrap: balance on titles
- Author + narrator on one line ("Author with Narrator")
- No hover lift animation on cards
- AI narration note in footer

* Polish theme: cover on right, year dropdown, emoji toggles, layout tweaks

- BookCard: cover image on right side, wider (160px), description gets
  more breathing room, meta line at bottom
- SeasonNav: year dropdown instead of arrows, seasons are just buttons
- Genre toggles: emoji prefixes (sword, leaf, runner, skull, truck),
  grayscale when inactive, typography-only (no pills)
- Prevent overscroll bounce (overscroll-behavior: none)
- Favicon: truck emoji
- Footer: AI narration exclusion note
- Grid gutter loosened to 1.5rem

* Fix responsive layout: 1-col grid below 850px, mobile bottom bar pill

- Grid: 2-col above 850px, 1-col below
- Cards: info-left/cover-right at all sizes, smaller cover under 500px
- Mobile header: static, no background, left-aligned title
- Mobile bottom bar: floating pill with season nav
- Overscroll prevention
NBNate Butler authored committed by GitHub
291fb7bPatch
Parentb656c2e
8 files changed+352-199
StackedSplit
src/app.html+2 โˆ’1
src/lib/components/BookCard.svelte+67 โˆ’67
src/lib/components/FilterPopover.svelte+28 โˆ’11
src/lib/components/GenreFilter.svelte+17 โˆ’10
src/lib/components/SeasonNav.svelte+32 โˆ’50
src/lib/types.ts+10 โˆ’10
src/routes/+layout.svelte+77 โˆ’12
src/routes/+page.svelte+119 โˆ’38