# Accessibility Compliance Guide

Accessibility isn't a feature; it's a foundational standard. Apple's design philosophy requires apps to be fully usable by everyone, regardless of their physical or cognitive abilities.

## The 4 Pillars of Accessibility

### 1. Perceivable
Information and UI components must be presentable to users in ways they can perceive.
- **VoiceOver**: Provide meaningful accessibility labels and hints. Avoid "Button 1". Use "Submit Order" with hint "Double tap to place your order."
- **Visuals**: Don't rely on color alone to convey meaning (e.g., use icons + color for errors).

### 2. Operable
User interface components and navigation must be operable.
- **Tap Targets**: 44x44 points minimum.
- **Motor Control**: Support Switch Control and AssistiveTouch.

### 3. Understandable
Information and the operation of the user interface must be understandable.
- **Predictability**: Use standard Apple UI patterns (Tab Bars, Sidebars) so users already know how they work.

### 4. Robust
Content must be robust enough to be interpreted by a wide variety of user agents, including assistive technologies.

## Technical Requirements (2026)

### Dynamic Type
Apps must respond to system-wide font size changes.
- **Scaling Layouts**: Use Auto Layout or SwiftUI `VStack`/`HStack` that wrap content when fonts get large.
- **No Clipped Text**: Text should never be truncated unnecessarily.

### Contrast Ratios
- **Normal Text**: 4.5:1 minimum against its background.
- **Large Text**: 3:1 minimum.
- **Liquid Glass Exception**: Be extremely careful with translucency (vibrancy). If a background is too busy, reduce transparency for accessibility.

### Haptics & Audio
- Provide haptic feedback for primary actions (success, failure, selection change).
- Ensure all audio content has captions or visual equivalents.

## Checklist for Designers

- [ ] Does the app work in Grayscale mode?
- [ ] Are all buttons at least 44pt tall?
- [ ] Is every icon labeled for VoiceOver?
- [ ] Does the layout remain usable at the largest Dynamic Type size?
- [ ] Have you tested with "Reduce Transparency" enabled in system settings?
