## 2025-02-18 - Missing Alerts for Dynamic Status **Learning:** The application uses `framer-motion` for dynamic feedback messages but consistently lacks `role="alert"` and `aria-live` attributes, causing screen readers to miss critical status updates. **Action:** When auditing forms, check all `motion.div/p` elements used for feedback and add `role="alert"` and `aria-live="polite"` (or "assertive" for errors). ## 2024-05-22 - Semantic Required Fields with Custom Validation **Learning:** To combine custom validation UI with semantic `required` attributes (vital for a11y), add `noValidate` to the `
`. This prevents native browser bubbles while keeping the accessibility benefits. **Action:** Use `noValidate` on forms when implementing custom validation but keep `required` attributes on inputs.