/**
* 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 `