Dashboard signal grid

The matrix is merged into its pane: rows are sections (or themes), columns are participants. Hue = the sentiment chip · cell depth = quote count · inset circle area = residual (how over-represented the cell is). Signal cells wear the blue keyline and jump to their card; every other cell lands among its section's quotes. Hover a cell for the sentiment as its real tag chip.

Residual = the shipped adjustedResidual() statistic; dot area (never radius) ∝ value, so r = √value. Under-representation has no mark — it's the empty cells. Signal keyline = --bn-selection-border, from .signal-card.bn-selected. Column headers = the split speaker badge (person-badge.css). Sentiment is taught in the tooltip as its own .badge. Sample: IKEA 9-session study.