+**App.test.tsx updates:**
+
+The existing test "renders BackendSelectionStep when currentStep is 0" will fail because `` now shows IntroSection first. Update this test to:
+1. First assert that IntroSection content is visible (e.g., check for "Get Started" button or the intro copy)
+2. Click "Get Started"
+3. THEN assert "Select Backend" heading and StepIndicator navigation are visible
+
+Add a new test:
+- "shows intro section on initial render" — render ``, assert intro copy is present, assert StepIndicator is NOT in the DOM
+
+The renderAtStep() tests (step 1, step 2) bypass WizardShell entirely so they need NO changes.
+
+**Step descriptions (UX-03):**
+
+Add a `` element immediately after the `
` in each of the 4 step components. Use className `text-sm text-on-surface-variant mt-1 mb-4`. Claude has discretion on wording, but each must be 1-2 sentences explaining what the user is doing and why. Suggested tone — direct, practical, no jargon:
+
+- BackendSelectionStep: Explain that the user names their remote and picks a cloud storage provider
+- RemoteConfigStep: Explain that the user enters credentials for the selected backend
+- DeploymentStep: Explain that the user chooses how the config gets deployed to the target machine
+- ReviewStep: Explain that the user reviews generated files and downloads them
+
+IMPORTANT: Do NOT change any heading text (h2 content must remain identical). Only ADD a `
` after the `
`.
+IMPORTANT: Use `text-on-surface-variant` (not `text-on-surface-container/70`) — this is the standard MD3 secondary text token.
+
+