Accessibility first: Reduce Motion, transition tokens, and killing animation debt
Added @Environment(\.accessibilityReduceMotion) to 4 perpetual animations so the app respects the user's preference. Any animation that loops indefinitely — loading spinners, pulsing indicators — now falls back to static visuals when Reduce Motion is enabled. While in there, found 10 occurrences of 3 duplicated transition patterns scattered across the codebase with no semantic naming. Consolidated them into AppTransition tokens. Created AppAnimation.micro for inline animations. Fixed typography violations. This is the kind of work that doesn't ship a feature but makes every feature better — and it's the kind of thing you have to actively choose to do, because nobody asks for it.