Migrates Tailwind v3 -> v4 (CSS-first, theme tokens for brand, workflow
states and charts) and adds 23 shadcn/ui components on Radix.
- lib/workflow.ts is now the single source of truth for state name, colour,
icon and available actions; "Financial Review" is the canonical served
name, with "Finance Review" kept as an alias so those rows stop falling
through to the unstyled fallback and dropping out of every count
- record view: TanStack Table with server-side sort/paginate, company column
with initials avatar, page totals, density and a URL-synced query state
- dashboard: one cached analytics fetch shared by tiles and charts, donut +
aging + vendor spend, click-to-filter
- detail view: rebuilt against the live detailview payload — restores the PO
number and payment terms that the old key heuristics silently dropped,
parses match_summary into a 3-way-match checklist, and separates the
department's and reviewer's own words from AI-generated content
- form modal on Radix Dialog (focus trap, scroll lock, escape handling)