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

Type check clean. Reload dispatch and any post with a cover to see the unified look.