One screen, two views. A single #viewToggle chip (data-role="two-state" data-body-class="table-mode") flips the page between Board and Table IN PLACE: the pagehead and quick-filter band stay constant; only the content region swaps (body:not(.table-mode) shows the board and hides .sb-datatable; body.table-mode does the reverse and additionally hides the ministat effort strip). View-specific utilities swap with it: Sort is table-only, Compact is board-only. Default = BOARD (authored data-state="a", no body class): per the incumbent-default ruling the incumbent view ships as default everywhere until the table is validated — Board for Leads, List for Contacts. Authoring rule: the state-a (incumbent) content MUST exist statically in the file — the two-state chip only writes the body class on init/click, so a page whose default content waits on JS renders blank until first click.The Leads table screen. Every row is a DEAL — the same DealItem payload the board cards render, one row per deal. Eleven columns, widths declared once on .sb-datatable (rows are CSS subgrid — no stagger), in order: Name (sticky left, min 200px) · Stage (full-cell 14%-tinted .sb-statusdd, caret pushed to the right cell edge) · Score (.sb-embergrid with live scoretip) · Last activity · Assigned (overlapping avatars + watcher eye-chip) · Vehicle · Price (right-aligned tabular) · Source (normalized name; raw feed value in the tooltip) · Labels · Email · Phone. Absent values render an em-dash cell that takes no hover. The five stages map 1:1 to DealProcessingStatus with the shipped hues: New/orange, Working/indigo, Finance/blue, Close/green, Lost/red. The whole .sb-datatable is the two-axis scroll container; the header row is sticky-top, Name is sticky-left, and the header-Name corner cell wins at z-4. Per-cell hover (gray-07 + pointer) marks every clickable cell; empty cells and the Stage dropdown (which owns its own interaction) are excluded, and destinations are v1 read-and-open. Twin flags for engineering: Last-activity heat colors are currently scoped to card selectors so table cells render neutral — intended behavior is the card's exact recency mapping; the Stage cell label reads 'New' where the board lane reads 'Fresh' (same status — reconcile to one label); Working/Close cells reuse the generic --indigo/--sold statusdd variants.