Redesign the portfolio list/category grid into a premium, image-first gallery
(Phase 3), applying the warm-premium tokens.
- Add components/site/portfolio-cover.tsx: renders the stored cover image
(next/image, object-cover, hover zoom) or a restrained branded placeholder
(monogram + category) when none is set. Placeholders are temporary — the
owner will swap in real artwork.
- Rewrite portfolio-project-grid: responsive 1/2/3-col gallery, featured
projects span two columns with a larger cover, cards use the type scale
(text-h2/h3/caption), eyebrow category labels, line-clamped summaries, soft
elevation and hover lift. Directly fixes the "portfolio shows no images"
gap on the list and category pages.
Verified: eslint clean, no new type errors, tailwind generates the utilities.