64px min-height, 8px padding all round, --gray-7 fill, 1px --gray-5 border, row direction with an 8px gap. The body is a display3 label (14/16/600, with its 4px trailing gap) over a body6 description, in a flex: 1 column with overflow: hidden so a long VIN truncates rather than widening the row. A start icon takes an asymmetric 0 18px 0 10px margin; the end adornment is a fixed 32px box at font-size: 12px. The image well is 96px wide with top-left and bottom-left radius 7px, and the image inside is absolutely positioned and covering — deliberate, so photos of different sizes cannot give rows different heights.
Hover fills --gray-6, and is skipped entirely on nonInteractive. active is --primary-accent border on --blue-3; error is --red-1 on --red-2; both also recolour every icon inside, and both mark the background !important — the source comments that this is to beat the :hover rule. incomplete changes nothing but border-style: dashed, which is how an unfinished step reads without claiming to be an error. disabled is opacity 0.5 with pointer events off. background="white" swaps the fill for --white, for rows on a gray-7 surface.
This row's border-radius: 7px is written literally in SelectorButton/index.module.pcss, not taken from var(--border-radius) or var(--input-border-radius) — and so are the two image-well corner radii, which carry a source comment saying they should match the container. Same value as the token today, so nothing looks wrong; but a dealer changing --form-input-border-radius reshapes every Input, Checkbox and Radio row and leaves this row at 7px. Worth fixing upstream; mirrored as-is here because the code wins.
Several properties here are not in index.module.pcss at all — they come from the component's JSX in SelectorButton/index.tsx: the row's display: flex, row direction, 8px gap and centred alignment are the outer Stack direction="row" gap={8} alignItems="center"; the body's flex: 1 and overflow: hidden are Stack flex={1} overflow="hidden"; the label is Typography variant="display3" and a string description is variant="body6". Icon colour is a prop, not CSS: the start adornment takes color={Color.Gray0} (overridable through startAdornmentProps), and the end adornment takes it only when it is an IconDefinition — pass a JSX element and it inherits instead, which is why .endAdornment carries no colour rule.
The source declares height: 100% and align-self: stretch on the same rule, and they conflict: a percentage height is not auto, so the declared stretch never takes effect, and the percentage resolves against the row's indefinite height — collapsing the well to zero height. Measured, not inferred. This twin uses height: auto so the stretch does the work the source intends, and the well renders at 96px as designed. Probably a live bug; worth checking against a real vehicle row upstream.