Full-bleed serif title on a woven ground, drawn in the browser rather than
stored, sized with container queries so one component works from 36px to full
page. Colour is hashed into a list of bookcloth tones instead of the hue wheel.
The grid and search were falling back to default_cover.jpg because a missing
cover made the src "/api/undefined"; they now check for one first.