/** * ComparisonTable — a domain-neutral, typed-generic component for comparing a * bounded set of candidate options across labeled attributes. Options are the * columns; attributes are the rows. It knows nothing about the option type `T`, * fetches nothing, and owns no routes — data comes in via `columns`/`rows` and * selection goes out via `onSelectColumn` (router-neutral). * * Each column can carry `states` (recommended / lowest / highest / selected / * unavailable). State is never color-only: every state renders a Badge with a * text label and an icon, and selection carries `aria-pressed`. Recommended and * selected columns are additionally emphasized with a tint + accent border. * * Accessibility: * - semantic `` with `scope="col"` option headers and `scope="row"` * attribute headers * - selection is a real `