Part of the SPA look-and-feel pass (design review 2026-09-02). Sibling slices: numeric typesetting, elevation hierarchy, all-caps labels, dashboard rework, empty states, visual identity. ## Problem Two layout faults visible in the committed screenshots: 1. **Provenance column carries sentences.** `docs/images/sales.png` HISTORY: `Created by sim-sales-1@sim.local on 2026-08-16 20:09:49` / `Confirmed 2026-08-16 20:09:49` — three lines per row, the widest column in the table, and it squeezes REFERENCE and DATE into wrapping. `ProvenanceCell` (`web/src/components/ProvenanceCell.tsx`) renders the full audit stamp inline on every list screen that has it. 2. **Report date range spans the page.** `docs/images/reports.png`: `From` / `To` `<input type="date">` stretch to ~950px because the form-grid input rule fills the column. Two 10-character dates in a 950px field. ## Proposal 1. `ProvenanceCell` → one muted line: relative time + actor (`2 days ago · sim-sales-1`), the full timestamp in a `title` and available in the row's detail / audit link (#493 already links the trail). Column gets `white-space: nowrap` and a max width; never wider than the reference column. 2. Reports: `From` / `To` into a `.toolbar` row, `max-width: 12rem` each, side by side; the same treatment for every other date-range filter (History, Audit, Feed, Water, Expenses). 3. While there: column widths on `table.data` — give the reference/id column `white-space: nowrap` so `SO-66C100AD` stops splitting. ## Acceptance - [ ] Provenance renders one line on every list screen; the full stamp is still reachable (title / detail). - [ ] Relative time respects the farm clock (`useFarmToday` / `web/src/lib/dates.ts`), not the device clock — #123. - [ ] Date-range filters sit in a toolbar at a bounded width on every screen that has one. - [ ] Reference / order-number cells never wrap. - [ ] Vitest tests for `ProvenanceCell`'s new output (frontend tests ship in the same PR); i18n strings for the relative-time phrasing in en / es / tl. - [ ] `tools/simulation/ui/` specs that read the provenance text are updated — read the callers (#394). **Siblings:** #650 #651 #652 #654 #655 #656 #657