---
globs: **/*.tsx,**/*.jsx,**/*.vue,**/*.svelte,**/*.astro,**/*.dart,**/*.swift,**/*.kt,**/templates/**,**/components/**,**/views/**,**/*.css,**/*.scss
alwaysApply: false
---

# User-facing change standards

You are editing something a person will look at. These are the non-negotiables from `docs/DESIGN_SYSTEM.md`; a violation is a design-review finding, not a matter of taste.

**Every screen state exists in code.** Empty, loading, error, success — and on any surface that can lose connectivity, also offline, queued, sync-pending, and sync-rejected. A state without a design is a bug deferred to production. An unhandled state is at least P1.

**Copy is complete and localized.** Every label, button, error, and empty-state message, in every supported locale. No hardcoded string literals in templates or widgets where i18n is required. Errors say what to *do*, not only what failed.

**Accessibility is not a follow-up.** WCAG AA contrast; tap targets ≥ 48dp; focus order follows visual order; icon-only controls carry labels; form errors are announced next to their field.

**Reuse before invention.** Use the components and patterns already in `docs/DESIGN_SYSTEM.md` by name. A new one-off pattern with no design-system entry is a finding — if the pattern is right, record it there in the same change.

**Fewest steps, one primary action.** The primary action is visually primary on every screen; extra inputs need a reason a preset or a default could not serve.

## Process

Anything beyond a copy tweak gets a spec **before** the build (`/design-spec`, owned by `ux-ui-designer`) and a review **after** (`/design-review`, dispatched concurrently with the verifier). At medium risk and above, the review is required, not optional. For a shipped flow that underperforms — people hesitate, stall, or leave — the behavioral layer is `/ux-psych-audit`, which is a different question from whether the build matches its spec.

Persuasion must serve the goal the user chose. Fake urgency, confirmshaming, roach-motel cancellation, hidden costs, and forced continuity are P0/P1 defects regardless of what they do to conversion.
