The Four Phases
You MUST complete each phase before proceeding to the next.
Phase 1: The Design System (The "Palette")
BEFORE designing a single screen:
- •
Audit the Atoms
- •Do not invent new colors. Use the defined palette (Primary, Secondary, Neutral, Semantic/Error).
- •Do not pick arbitrary font sizes. Use the Type Scale (H1, H2, Body, Caption).
- •Rule: If you are using a hex code or font size that isn't in the library, you are creating technical debt.
- •
Establish the Grid
- •Define the underlying structure (e.g., 8pt/4pt grid).
- •Spacing is not random. Margins and padding should be multiples of the base unit (8, 16, 24, 32px).
- •Define breakpoints for responsiveness (Mobile, Tablet, Desktop).
- •
Check for Existing Components
- •Need a dropdown? Check the library.
- •Need a card? Check the library.
- •Rule: Reuse > Modify > Create. Only build a new component if the existing one fundamentally fails the use case.
Phase 2: Visual Hierarchy & Composition
Guide the user's eye:
- •
The "Squint Test"
- •Squint at your design (or blur it). What stands out?
- •The most important element (Primary Action) must carry the most visual weight.
- •If everything is bold, nothing is bold.
- •
Contrast & Accessibility
- •Text Contrast: Check WCAG AA compliance (4.5:1 ratio).
- •Color Independence: Don't use color alone to convey meaning (e.g., Error state needs red color + icon/text).
- •Focus States: Design the blue ring/outline for keyboard users.
- •
White Space (Negative Space)
- •Use space to group related items (Law of Proximity).
- •Use space to separate distinct sections.
- •Rule: Clutter increases cognitive load. When in doubt, add more padding.
Phase 3: Interactivity & States (The "Behavior")
The interface is not a static poster:
- •
Define All States
- •Default: How it looks initially.
- •Hover: How it invites interaction (desktop).
- •Pressed/Active: The tactile feedback.
- •Disabled: Why is it disabled? (Tooltip?).
- •Loading: Spinner or Skeleton?
- •Error: How does it scream "Fix me"?
- •
Micro-Interactions & Motion
- •Animations must have purpose (guiding the eye), not just flair.
- •Duration: 200ms-300ms is the sweet spot.
- •Easing: Use
ease-outfor entering elements,ease-infor exiting.
- •
Responsive Adaptation
- •How does this 3-column grid stack on mobile?
- •Do tables turn into cards? Does the menu become a hamburger?
- •Mock it up. Don't make the developer guess.
Phase 3.5: Modern CSS Capabilities (2026)
New CSS superpowers:
- •
Container Queries (Responsive Components)
css.card-container { container-type: inline-size; } @container (min-width: 400px) { .card { grid-template-columns: 1fr 2fr; } }- •Why: Responsive based on parent, not viewport
- •Use Case: Card component that adapts to sidebar vs main content
- •
:has() Selector (Parent Selectors)
css/* Style card differently if it has an image */ .card:has(img) { padding-top: 0; }- •Why: Previously impossible without JavaScript
- •Support: Safari 15.4+, Chrome 105+, Firefox 121+
- •
CSS Layers (@layer)
css@layer reset, base, components, utilities; @layer components { .button { ... } }- •Why: Control cascade order explicitly
- •Use Case: Prevent utility classes from being overridden
- •
Variable Fonts
- •Single file, multiple styles: 100-900 weight, normal-italic
- •Performance: One request vs 10 font files
- •Animation: Smoothly animate font-weight
- •Tools: Google Fonts (many now variable), v-fonts.com
Phase 4: Handoff & Visual QA (The "Polish")
Pixel perfection in code, not just Figma:
- •
Asset Preparation
- •Export SVGs for icons (scalable).
- •Optimize images (WebP/PNG).
- •Name your layers/assets logically (
icon/user-profilenotVector 14 copy).
- •
Redlining / Spec-ing
- •If you use Figma Dev Mode, ensure variables are mapped correctly.
- •Annotate specific behaviors ("Sticky header stops here").
- •Annotate responsive rules ("On mobile, hide this image").
- •
Visual QA (VQA)
- •Sit with the developer.
- •Compare the build to the design.
- •Check for "Layout Shift" (things jumping around).
- •Rule: You own the visual quality of the final product, not the developer.
Red Flags - STOP and Follow Process
If you catch yourself thinking:
- •"I'll just eyeball the padding, it looks fine."
- •"This light grey text looks elegant." (It's unreadable).
- •"I don't need to design the hover state, they know standard behavior."
- •"I'll make this button slightly different to make it pop." (Inconsistency).
- •"I'm bored of this layout, let's change the style." (Brand fragmentation).
- •"I'll use Lorem Ipsum." (Real content will break your layout).
- •Designing "Mobile" last.
ALL of these mean: STOP. Return to Phase 1.
Your Human Partner's Signals You're Doing It Wrong
Watch for these complaints:
- •Dev: "I don't have this font weight in the system." (You broke the system).
- •UX: "The user didn't see the error message." (Bad hierarchy/contrast).
- •Dev: "Is this padding 15px or 16px?" (Inconsistent spacing).
- •PM: "The text gets cut off in German." (You didn't test content length).
- •User: "I didn't know I could click that." (Weak affordance).
When you see these: STOP. Audit your hierarchy and system usage.
Common Rationalizations
| Excuse | Reality |
|---|---|
| "Strict grids stifle creativity" | Grids enable consistency. Creativity lives within constraints. |
| "Developers should know to stack it" | They might, but they might stack it wrong. Define it. |
| "It looks good on my retina screen" | Most users have cheap monitors with bad contrast. |
| "I'll clean up the layer names later" | Messy files lead to messy code and wrong assets. |
| "Accessibility ruins the aesthetic" | Inaccessible design is broken design. |
| "Motion is just extra polish" | Motion conveys state change. It is functional. |
Quick Reference
| Phase | Key Activities | Success Criteria |
|---|---|---|
| 1. System | Tokens, Grid, Type Scale | Consistent foundation |
| 2. Hierarchy | Contrast, Spacing, Layout | Clear "Squint Test" results |
| 3. States | Hover, Error, Loading, Mobile | Complete component lifecycle |
| 4. Handoff | Specs, VQA, Assets | Build matches Design |
When The "Brand" Clashes with "Usability"
When Marketing wants a "Branded Experience" that hurts UI patterns:
- •Prioritize Clarity: If the brand font is illegible at small sizes, use the system font for UI/Body text and brand font for Headings only.
- •Test it: Show the "on-brand" button vs the "accessible" button to users.
- •Compromise: Use brand colors for delight/accents, not for core navigation if they lack contrast.
Supporting Techniques
- •
superpowers:design-tokens- Mapping hex codes to semantic names (primary-action-bg). - •
superpowers:atomic-design- Building from Atoms -> Molecules -> Organisms. - •
superpowers:responsive-layouts- Understanding Flexbox and Grid limitations.
Real-World Impact
- •"Artist" UI: Looks great on Dribbble, falls apart with real data, confuses users, expensive to build/refactor.
- •"System" UI: Scales infinitely, developers build 2x faster (reusable components), users feel "at home" instantly due to consistency.