Vehicle's whole stylesheet reshapes one RadioGroup: the group gap drops from 16px to 8px, each row is centred with 8px right padding, and the label pads 8px — rising to 12px 8px from 768px up, the one place in the widget where padding grows on wider screens. Every declaration is !important. The labels are JSX (a Stack wrapping an h5), so the rows skip Radio's 64px string-label geometry. The switcher renders only when allowedSearchBys.length > 1: a dealer who permits one mode gets no tabs at all. Mode labels are exactly Make/Model, Search, VIN, Manual.
Make/Model (YMMT): four Selects that cascade — each is disabled until its parent has options — all with useCheckMark, so the green check marks progress down the chain. Search: one query field at a 12px Stack gap, a body6 hint pulled up -8px, then either an inline Spinner, a suggestion list, or a no-matches line. VIN: a 17-character field with a barcode-alt start adornment, a "Need Help? / See Guide" popover at a 5px gap, and once decoded a gray-6 confirmation row (48px, var(--border-radius) — unlike SelectorButton's literal 7px) holding a car-side icon, the vehicle name, and a red-1 trash IconButton that clears the VIN. Manual: a Year Select plus three plain text fields and no useCheckMark, because nothing cascades.
This is the most field-dense step in the widget, so the host contract shows most plainly: --form-input-border-radius reshapes every Select, Input and Checkbox row, --button-border-radius the two buttons, --form-button-text-transform the CTA casing, and --primary-button-color the primary fill. The override tray above sets all four — square corners, sentence-case buttons, a maroon primary — and nothing else in the screen moves. Note what the dealer does not reach: the mode switcher's selected state, the Select check marks and the VIN row's gray-6 fill are all widget-owned, so selection never takes the dealer's brand colour.
The switcher hides for a single-mode dealer. The "Get my free trade value estimate" checkbox appears only under showTradeInConversion, which is how a non-trade flow offers a trade-in without a separate step. VIN's Trim select and confirmation row appear only once decodedVin is non-empty, and the eye toggle on a masked SSN elsewhere follows the same pattern — show the control only when there is something to act on. Vehicle also accepts size and passes it through to StepContainer, so this step can render in the large treatment. One commented-out line in the source would hide the submit button in single-mode Search; it is not active.