Clean. Summary:
Post page (app/posts/[slug]/page.tsx)
Cover + header + content + attachments now live inside a single card with border: 1px solid var(--px-wire), rounded corners, and overflow: hidden. The cover sits flush at the top (no border-radius on the image itself — the parent clip takes care of it). Attachment box inside switched to var(--px-void) background so it reads as a nested panel rather than competing with the outer card.
Dispatch cards (app/dispatch/DispatchCard.tsx)
Added coverImage to the DispatchPost type. When a post has a cover, it renders flush at the top of the card (max 260px tall, object-fit: cover, wrapped in the post Link so clicking the image opens the post). Overflow clips the image to the card's rounded corners.
Data threading
app/dispatch/page.tsx and app/page.tsx now pass
coverImage: post.coverImage ?? nullwhen mapping DB rows toDispatchItem.app/dispatch/DispatchList.tsx
DispatchItemtype updated.
Type check clean. Reload dispatch and any post with a cover to see the unified look.

