Every multi-step flow in the app uses the same canonical chrome — creation wizards, import flows, configuration setup. Header (back arrow + breadcrumb + step pills) → body (2-column: main form left, panel triggers right) → side panels → sticky footer. Don't invent feature-specific wizard layouts.
The wizard chrome is one composition; what changes per flow is the form fields inside the left card and the trigger summaries on the right. Always 2 columns — never 3. Ancillary settings go behind .wiz-panel-trigger chips on the right that open .wiz-side-panel drawers.
| Part | Class | Role |
|---|---|---|
| Step pills | .wiz-step-pill | Top-of-page progress. One pill per step, active and completed states distinct. |
| Wizard card (left) | .wizard-card | Primary form — keep to ~6 fields. More than that → move behind a panel trigger. |
| Panel triggers (right) | .wiz-panel-trigger | Stacked summary chips for ancillary settings. Show current values; refresh after Apply. |
| Side panel | .wiz-side-panel | Slide-in drawer with full settings for one trigger. Sticky Cancel/Apply footer. |
| Sticky footer | .wiz-sticky-footer | Page-level Cancel · Back · primary action. Always visible regardless of scroll. |
.wizard-card with primary fields. Right = stacked .wiz-panel-trigger buttons. Don't render ancillary settings inline as a 3rd column.The wizard composes from: Page header (WizardCrumbs variant), Form elements (inside the card), Buttons (sticky footer + side panel actions), Breadcrumbs (origin-aware crumb in the header).