src/layouts/AppLayout.tsx:293) and the Deals page adds its own 24px on top (src/pages/Deals.tsx:257), so with the 12px card padding plus 1px border, text starts 61px from the screen edge on each side (measured in the live DOM). The mock collapses the double wrapper to a single 12px gutter.src/pages/Deals.tsx:74-92).All measurements taken from the live DOM on production at the same 390 by 844 px test viewport (source: this session's browse tool setup), 2026-07-13.
| Metric | Before | After (mock) | Where it comes from |
|---|---|---|---|
| Edge-to-text inset (each side) | 61px | ~26px | 24px shell padding + 24px page padding + 12px card padding + 1px border, measured via getBoundingClientRect |
| Card width on a 390px screen | 294px | 366px | Live DOM measurement; mock uses a 12px gutter |
| Width available for the hotel name | 54px | full row (~338px) | Measured on "DoubleTree Houston Galleria" row |
| Stage control / Pass tap-target height | 27px | 40px | Measured; Apple HIG minimum is 44px, mock buttons sit at 40px inside a 64px row |
| Stage select font size | 12px | n/a (select removed) | Computed style; iOS Safari auto-zooms inputs under 16px |
| Bordered boxes on screen | 14 cards | 1 container | 14 deals in the pipeline as of 2026-07-13 (production list) |
src/layouts/AppLayout.tsx:293: make the shell wrapper responsive, e.g. p-3 md:p-6, and remove the page-level double-up (Deals drops its own p-6 to p-0 md:p-6, or the shell owns padding and pages stop adding it; needs one pass over sibling pages so nothing loses its gutter).src/pages/Deals.tsx:143-219 (MobileListView): rebuild the row as a stacked card in a single grouped container, name full-width, meta line under it, advance + Pass action row at 44px, dropdown removed.window.prompt pass-reason (src/pages/Deals.tsx:246) with a small bottom sheet, which fixes desktop too.