Contrast is not a preference
Body text at 7:1 where possible, UI text at 4.5:1. Checked in both themes and every stage.
- ✓Ink on canvas for body copy
- ✕Grey-on-grey “subtle” captions
Twelve rules in three groups. When two conflict, the earlier group wins: accessibility over conversion, conversion over decoration.
Body text at 7:1 where possible, UI text at 4.5:1. Checked in both themes and every stage.
Kanban, sorting and sliders all have a keyboard and a non-drag path (WCAG 2.5.7).
Anything moving longer than 5 seconds gets a visible pause. Reduced motion removes it entirely.
Touch targets, focus rings and hit areas are designed, not left to defaults.
Heroes embed working product UI built from app components. Screenshots go stale; Live UI can’t.
Deltas show the start value, the period and the source. No baseline, no number.
Magenta appears once per screen. Every section ends at a decision point, never a dead end.
No fake scarcity, no confirmshaming, no hidden renewal. Cancel is as easy as signup.
Ship stamps, version tags and a changelog ticker make progress part of the interface.
Motion lives inside product frames. Page chrome stays still; scrolling stays native.
Marketing and app share tokens and components. If the site needs it, the app has it.
Say what’s in progress. Label illustrative data. Name customers only with permission.