Summary
MuscleMap.jsx uses a multi-step flow (upload → analysing → confirm → muscles), but when the active step changes, focus remains on whatever element was last focused — often a button that no longer exists in the new step. Screen reader users receive no indication that the page content has changed and must manually explore to discover the new step. This breaks the fundamental screen reader contract that navigation changes are announced.
Priority
High
Acceptance criteria
Summary
MuscleMap.jsxuses a multi-step flow (upload → analysing → confirm → muscles), but when the active step changes, focus remains on whatever element was last focused — often a button that no longer exists in the new step. Screen reader users receive no indication that the page content has changed and must manually explore to discover the new step. This breaks the fundamental screen reader contract that navigation changes are announced.Priority
High
Acceptance criteria
useEffecton thestepstate variable programmatically moves focus to a stable landmark (e.g. the step heading or the first interactive element) wheneverstepchanges