TradeIn/Result/index.module.pcss is two rules and both matter: the outer Stack is position: relative with margin: 32px 0, and .result — the ValueBox wrapper — is position: absolute; left: 0; width: 100%; z-index: 1. So the value is pulled out of flow and laid over the graph rather than stacked above it, which is what makes the figure read as the graph's headline. Note 32px appears twice, as the Stack's gap and as its outer margin. Below the graph, the min and max sit in a space-between row as body4 in --red-1 and --green-1 — the only place in the widget where those two semantic colours are used as a range rather than a state. When hideTradeInValue is set, or a bound is 0, the figures are replaced by the literal words "Minimum" and "Maximum", and the ValueBox falls back to its pendingDescription, "Valuation In Progress". A protected customer with no trade-in gets ProtectedSummary instead of this whole screen. TradeIn/index.tsx itself is only a switch: SubmitResult when done, Stepper otherwise.
The card is the Module recipe a fifth time, but on a --gray-6 border rather than gray-5: white, 5px, 16px padding, full width. Past appointments are not hidden or moved — the same card takes background: transparent, opacity: 0.5 and pointer-events: none, so history stays visible and inert in place. The list is split by comparing appointmentAt to now, and the "Past" heading appears only when there is something in it; note the Upcoming heading is --gray-1 while Past is --gray-3. Inside, everything is body3 except the type (h6, capitalized) — the date carries no extra weight, so status and time read equal. sales is relabelled "Consultation" for the customer. Missing notes render the literal "No Comment" in gray-3 so the card keeps its height. The edit button appears only with the retailing package, and the location line needs both a location and a multi-location dealer.
A request has no card of its own — it is a SelectorButton with background="white" whose text comes from getVehicleRequestChips: the first chip becomes the label (falling back to "Vehicle Request") and the rest are joined with " • " as the description. So the summary's content is entirely data-shaped, and the row grows or shrinks with how much the customer told us. Edit and Delete live in the row's menuItems, not as visible buttons. The empty state is one body3 --gray-2 paragraph — no illustration, no icon, no card — followed by the same secondary "New Vehicle Request" button that sits under a populated list, so the primary action never moves. The whole panel returns null when blocks.vehicleRequestsDisabled, which is also what hides its Menu row.