Two frames at 375 × 760 (iPhone-class viewport). Per-PM CTC review session for a single project
(route /ctc/project/:listId).
Every cost code starts as ○ Not yet reviewed; PM walks the list and assigns
● On track / ▲ Over / ▼ Under; Finalize atomically files all overrun + underrun adjustments.
Each cost code becomes a tappable card with the §6e two-column code | name pattern. Status icon at the left (○ pending, ● on track, ▲ over, ▼ under, ⚠ already-over). Decided cards take a tinted background so the PM sees progress at a glance. Sticky bottom bar shows count + Save-for-later + Finalize (disabled until all 16 are decided).
Cost code · 5 of 16 to go
Tapping a "not yet" card slides up a bottom sheet (shadcn Sheet).
Title is the same code | name. Three big tap targets stack vertically — each colored to its semantic tone
(green / amber / blue) with a one-line description so the PM never has to remember which icon does what.
▲ Over and ▼ Under route into the existing CTC entry dialog (source picker etc.); ● On track records
immediately and advances. Skip leaves the row pending; Save & next moves on without closing the session.