# Desktop/web design pass — global foundations + listing detail page ## Problem The app looks noticeably worse on web/desktop than the HTML design prototype (`prototype/Volana.dc.html`): content runs edge-to-edge with no max-width, typography doesn't scale up for desktop, secondary text has no visual hierarchy, addresses/fees aren't distinguished from regular text, and there's no shared, theme-token-driven system for any of this — every screen does its own ad-hoc centering and spacing. The listing detail screen (`app/src/app/listing/[id].tsx`) is the worst offender (hero is an oversized flat-color box with a tiny emoji, sidebar isn't visually a distinct card) and gets a full page-specific redesign here. But the underlying problem — no shared container, no responsive typography/spacing scale, no consistent treatment of muted/subtle text and monospace data — is app-wide, so this spec has two layers: 1. **Foundations** (theme, fonts, `PageContainer`, typography/spacing conventions, hover pattern): built once, applied to every screen. 2. **Listing detail page**: the one screen that also gets a full page-specific redesign (hero, purchase sidebar, verified/about sections) to close the gap with its prototype counterpart. Other screens (Home, Browse, Orders, Order Detail) get layer 1 applied to their *existing* layout and content — this spec does not redesign their structure or add new sections to them, only replaces ad-hoc containers/spacing/text-color choices with the shared foundations. ## Scope **Foundations (app-wide):** - `app/src/global.css` (theme tokens) - `app/src/app/_layout.tsx` (font loading) - A new `app/src/components/PageContainer.tsx` - `app/src/components/StatusChip.tsx`, `app/src/components/ResolverCard.tsx`, `app/src/components/TopNav.tsx`, `app/src/components/ListingCard.tsx` (shared components, used across screens) - `app/src/app/(tabs)/index.tsx` (Home) — wrap in `PageContainer`, adopt the spacing scale - `app/src/app/(tabs)/browse.tsx` (Browse) — wrap in `PageContainer`, filter captions ("Currency", "Sort") adopt the micro-label convention - `app/src/app/(tabs)/orders.tsx` (Orders list) — wrap in `PageContainer` (replacing its current `md:mx-auto md:w-full md:max-w-2xl` ad-hoc centering) - `app/src/app/orders/[id].tsx` (Order detail) — wrap in `PageContainer` (same ad-hoc centering to replace), "Order Progress" caption adopts the micro-label convention - `app/src/components/OrderRow.tsx` — seller address adopts the monospace convention - `app/src/components/CheckoutSheet.tsx` — `listing.seller` adopts the monospace convention (no `PageContainer`; it's a bottom sheet, not a page) **Listing detail page (full redesign):** `app/src/app/listing/[id].tsx`, covered in detail below. Out of scope: on-chain/wallet logic, redesigning the *content/structure* of Home/Browse/Orders/Order Detail (their current sections, copy, and interactions stay as they are — only containers/spacing/text treatment change), `WalletConnectSheet` (no addresses or long text needing the new conventions), the mobile/desktop nav breakpoint (768px) itself, nav blur/translucency. The prototype (`prototype/Volana.dc.html`) is the visual source of truth; it has **zero responsive/mobile CSS** — it's a desktop-only mockup, no `@media` queries touch layout anywhere in it. All mobile-specific sizing in this spec (hero aspect ratio, typography minimums, the two-column breakpoint) is therefore this spec's own design judgment, not something derived from the prototype. ## Theme (`app/src/global.css`) Theme colors are sourced from the prototype's own CSS variables (`--c-bg`, `--c-surf`, `--c-surf2`, `--c-a`, `--c-g`, `--c-y`, `--c-r`, defined in `prototype/Volana.dc.html`'s `