ui-ux-master 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +170 -182
- package/SKILL.md +89 -47
- package/docs/package-publishing.md +84 -0
- package/index.cjs +39 -0
- package/index.d.ts +17 -0
- package/index.mjs +30 -0
- package/package.json +86 -11
- package/references/brand-method-card-based-discovery.md +285 -0
- package/references/brand-method-conversion-simplicity.md +276 -0
- package/references/brand-method-ecosystem-bundling.md +263 -0
- package/references/brand-method-editorial-brand-world.md +265 -0
- package/references/brand-method-enterprise-trust-hub.md +298 -0
- package/references/brand-method-playful-familiarity.md +284 -0
- package/references/brand-method-premium-restraint.md +270 -0
- package/references/brand-method-product-cinema.md +258 -0
- package/references/brand-method-technical-authority.md +290 -0
- package/references/brand-method-utility-command-center.md +278 -0
- package/references/color-psychology-branding.md +286 -0
- package/references/color-scale-system.md +347 -0
- package/references/competitive-landscape.md +32 -6
- package/references/design-discovery-protocol.md +171 -0
- package/references/design-system-schema.md +407 -0
- package/references/industry-reasoning-rules.md +504 -0
- package/references/landing-page-patterns.md +327 -0
- package/references/output-quality-gates.md +246 -0
- package/references/tech-stack-guidelines.md +636 -0
- package/references/ui-styles-catalog.md +552 -0
- package/references/visual-directions.md +362 -0
- package/tests/install-smoke.test.mjs +93 -12
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Brand Method: Card-Based Discovery
|
|
2
|
+
|
|
3
|
+
Use this skill when building for marketplaces, media platforms, travel aggregators, content libraries, product catalogs, rental platforms, or any context where the user browses, saves, and discovers from a large collection.
|
|
4
|
+
|
|
5
|
+
Reference brands: Airbnb, YouTube, Spotify, Netflix, Disney+, LEGO, Nintendo, Booking.com listings, Etsy, Pinterest.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## When to Apply This Method
|
|
10
|
+
|
|
11
|
+
Apply Card-Based Discovery when:
|
|
12
|
+
- The product is a catalog, marketplace, or content library.
|
|
13
|
+
- Users browse, save, filter, and compare rather than searching for one specific item.
|
|
14
|
+
- The value proposition is breadth: "there's always something for you."
|
|
15
|
+
- Discovery and serendipity are core to the experience.
|
|
16
|
+
|
|
17
|
+
Do not apply when:
|
|
18
|
+
- Users arrive with a specific known item in mind (use Utility Command Center).
|
|
19
|
+
- The brand has a single product hero (use Product Cinema).
|
|
20
|
+
- The primary goal is subscription sign-up (use Conversion Simplicity).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Layout Structure
|
|
25
|
+
|
|
26
|
+
### Hero / Entry Point
|
|
27
|
+
- Not a full-screen hero — the card grid IS the value proposition.
|
|
28
|
+
- Compact hero: search bar, category tabs, or personalized greeting with immediate content below.
|
|
29
|
+
- Alternative: carousel or featured editorial band (1-3 items), then immediate card grid.
|
|
30
|
+
- Call to action: "Browse [Category]" or personalized "Continue Watching / Listening / Exploring."
|
|
31
|
+
|
|
32
|
+
### Card Grid
|
|
33
|
+
- Primary layout pattern.
|
|
34
|
+
- Grid: responsive, 2-6 columns depending on card type and screen.
|
|
35
|
+
- Card rows: grouped by category, mood, recommendation engine, or curator picks.
|
|
36
|
+
- Section headings above each row with optional "See all →" link.
|
|
37
|
+
- Horizontal scroll rows for mobile (swipe gesture expected).
|
|
38
|
+
|
|
39
|
+
### Filter and Sort Controls
|
|
40
|
+
- Persistent or collapsible filter panel.
|
|
41
|
+
- Filter types: category, price/rating range, location, date, availability, mood/genre.
|
|
42
|
+
- Active filter chips shown above results — easy to clear individually or all.
|
|
43
|
+
- Sort: relevance, price, rating, newest, most popular.
|
|
44
|
+
|
|
45
|
+
### Card Types
|
|
46
|
+
Define at least one primary card type per context:
|
|
47
|
+
- **Content card**: thumbnail (16:9 or 1:1), title, creator/source, metadata (duration, views, rating).
|
|
48
|
+
- **Product card**: image, name, price, rating, badge (deal, new, bestseller).
|
|
49
|
+
- **Place/listing card**: image (4:3), name, location, rating, price/night, favorite icon.
|
|
50
|
+
- **Media card**: album art, title, artist/show, play button.
|
|
51
|
+
|
|
52
|
+
### Detail Page
|
|
53
|
+
- Hero: large image or media player.
|
|
54
|
+
- Primary action: "Play", "Book", "Add to Cart", "Save."
|
|
55
|
+
- Metadata: ratings, description, related tags.
|
|
56
|
+
- Recommendation section: "More like this", "Because you watched/liked."
|
|
57
|
+
- Reviews (if applicable): summary + individual reviews.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Color Scheme
|
|
62
|
+
|
|
63
|
+
### Palette by Sub-category
|
|
64
|
+
|
|
65
|
+
**Travel Marketplace (Airbnb)**
|
|
66
|
+
- Background: `#FFFFFF`
|
|
67
|
+
- Primary: `#FF385C` (coral/brand)
|
|
68
|
+
- Surface: `#F7F7F7`
|
|
69
|
+
- Text: `#222222`
|
|
70
|
+
- Secondary text: `#717171`
|
|
71
|
+
- Border: `#DDDDDD`
|
|
72
|
+
- Map accent: brand coral
|
|
73
|
+
- Favorite icon: `#FF385C`
|
|
74
|
+
|
|
75
|
+
**Streaming / Media (Netflix, Spotify)**
|
|
76
|
+
- Background: `#141414` (Netflix) or `#121212` (Spotify)
|
|
77
|
+
- Surface: `#1E1E1E` or `#282828`
|
|
78
|
+
- Primary text: `#FFFFFF`
|
|
79
|
+
- Secondary text: `#B3B3B3`
|
|
80
|
+
- Accent: `#E50914` (Netflix red) or `#1DB954` (Spotify green)
|
|
81
|
+
- Progress bar: accent color on dark track
|
|
82
|
+
|
|
83
|
+
**Family / Toys (LEGO, Disney, Nintendo)**
|
|
84
|
+
- Background: `#FFFFFF`
|
|
85
|
+
- Primary: Brand color (LEGO yellow `#FFD700` / red, Nintendo red `#E4000F`)
|
|
86
|
+
- Surface: `#F8F8F8`
|
|
87
|
+
- Text: `#1A1A1A`
|
|
88
|
+
- Secondary text: `#666666`
|
|
89
|
+
- Card border: `#EEEEEE`
|
|
90
|
+
- Accent / CTA: brand primary
|
|
91
|
+
|
|
92
|
+
**General Marketplace (Etsy)**
|
|
93
|
+
- Background: `#FFFFFF`
|
|
94
|
+
- Primary: `#F1641E` (Etsy orange)
|
|
95
|
+
- Surface: `#F4F4F4`
|
|
96
|
+
- Text: `#222222`
|
|
97
|
+
|
|
98
|
+
### Rules
|
|
99
|
+
- Dark surfaces: Spotify and Netflix — vivid accent pops against dark. Use sparingly.
|
|
100
|
+
- Light surfaces: marketplaces, travel — clean white lets imagery drive color.
|
|
101
|
+
- Card backgrounds must be neutral — let card content (images) provide color energy.
|
|
102
|
+
- Favorites / save icon: always high-contrast so users can find it.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Typography
|
|
107
|
+
|
|
108
|
+
### Scale
|
|
109
|
+
| Role | Size | Weight | Notes |
|
|
110
|
+
|---|---|---|---|
|
|
111
|
+
| Section heading | 18-24px | 600-700 | |
|
|
112
|
+
| Card title | 14-16px | 500-600 | 1-2 line clamp |
|
|
113
|
+
| Card metadata | 12-14px | 400 | Duration, views, rating |
|
|
114
|
+
| Price | 14-16px | 600 | Tabular numerals |
|
|
115
|
+
| Badge | 10-12px | 600-700 | All-caps, high contrast on brand color |
|
|
116
|
+
| Filter label | 13-14px | 500 | |
|
|
117
|
+
| CTA | 14-16px | 600 | |
|
|
118
|
+
| Hero headline (if any) | 28-40px | 700 | |
|
|
119
|
+
|
|
120
|
+
### Font Pairings
|
|
121
|
+
| Context | Font |
|
|
122
|
+
|---|---|
|
|
123
|
+
| Travel / marketplace | Cereal (Airbnb), Circular, or Inter |
|
|
124
|
+
| Streaming dark | Netflix Sans, or Inter/Roboto |
|
|
125
|
+
| Music | Circular, Montserrat, or Nunito |
|
|
126
|
+
| Family/toys | Nunito, Poppins, or Fredoka One |
|
|
127
|
+
|
|
128
|
+
### Rules
|
|
129
|
+
- Card titles must be readable at small sizes — minimum 14px.
|
|
130
|
+
- Use `line-clamp` to keep card grids uniform — never let one card blow the layout.
|
|
131
|
+
- Price: bold, tabular numerals, never ambiguous position on card.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Spacing System
|
|
136
|
+
|
|
137
|
+
| Token | Value | Use |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `--space-xs` | 4px | Icon nudges, badge padding |
|
|
140
|
+
| `--space-sm` | 8px | Card inner gaps |
|
|
141
|
+
| `--space-md` | 12-16px | Card padding |
|
|
142
|
+
| `--space-lg` | 20-24px | Grid gutters |
|
|
143
|
+
| `--space-xl` | 32-40px | Section separation (heading to grid) |
|
|
144
|
+
| `--space-2xl` | 48-64px | Between major content sections |
|
|
145
|
+
|
|
146
|
+
- Grid gutter: 16-24px between cards. Smaller for media, larger for travel listings.
|
|
147
|
+
- Section separation: 32-48px between category rows.
|
|
148
|
+
- Cards must have consistent height within a row (use fixed aspect ratio on images).
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Motion and Interaction
|
|
153
|
+
|
|
154
|
+
### Card Interactions
|
|
155
|
+
- Hover: subtle shadow lift `box-shadow: 0 4px 16px rgba(0,0,0,0.15)`, image zoom `scale(1.03)` transition 200ms.
|
|
156
|
+
- Favorite/save button: heart icon fill animation on click (scale 1.2 → 1.0, 150ms).
|
|
157
|
+
- Play button overlay: appears on card hover with opacity transition.
|
|
158
|
+
- Carousel/row scroll: smooth scroll with momentum. Show scroll indicator or arrows at edges.
|
|
159
|
+
|
|
160
|
+
### Loading
|
|
161
|
+
- Always use skeleton screens for card grids — never blank areas.
|
|
162
|
+
- Skeleton: match exact card dimensions. Animate shimmer gradient left to right.
|
|
163
|
+
- Infinite scroll: load next batch 200px before viewport bottom. Show spinner at bottom.
|
|
164
|
+
|
|
165
|
+
### Transitions
|
|
166
|
+
- Page navigation: instant load with skeleton → content fade-in. No full-page loading spinners.
|
|
167
|
+
- Filter apply: instant result update with skeleton transition, never full page reload.
|
|
168
|
+
- Media player appear: slide-up from bottom (mobile) or smooth expand (desktop).
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Responsive Behavior
|
|
173
|
+
|
|
174
|
+
| Breakpoint | Key changes |
|
|
175
|
+
|---|---|
|
|
176
|
+
| Mobile 375px | Single column (1-2 cards wide). Horizontal scroll rows. Filter: bottom sheet. Search: full width. |
|
|
177
|
+
| Tablet 768px | 2-3 column grid. Horizontal scroll or pagination. Collapsible filter sidebar. |
|
|
178
|
+
| Desktop 1024px | 3-5 column grid. Persistent or toggle filter panel. |
|
|
179
|
+
| Wide 1440px+ | 4-6 columns for media/product cards. Max-width content container. |
|
|
180
|
+
|
|
181
|
+
- Mobile: horizontal scroll card rows (Netflix-style) are expected and usable.
|
|
182
|
+
- Mobile: filter is a full-screen bottom sheet with apply/clear buttons.
|
|
183
|
+
- Mobile: card images must be large enough to see detail (min 140px width).
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Accessibility Requirements
|
|
188
|
+
|
|
189
|
+
- Card: each card is a single interactive unit. Use `<article>` or `<li>`. Primary action (title link) is the main focus target.
|
|
190
|
+
- Favorite button: `aria-label="Save [Item Name]"` or `aria-pressed="true/false"`.
|
|
191
|
+
- Play button: `aria-label="Play [Title]"`.
|
|
192
|
+
- Rating stars: `aria-label="4.2 out of 5 stars"`.
|
|
193
|
+
- Carousel/row: `role="region"` with `aria-label="[Category Name]"`. Left/right scroll buttons keyboard accessible.
|
|
194
|
+
- Infinite scroll: announce new results with `aria-live="polite"` — "12 more results loaded."
|
|
195
|
+
- Filter: `<fieldset>` + `<legend>` per group. Active filters: each chip has a remove button with `aria-label="Remove [filter name] filter"`.
|
|
196
|
+
- Image thumbnails: `alt` describes the content (movie title, product name, property name).
|
|
197
|
+
- Dark streaming UI: ensure text-on-image thumbnails meet contrast. Provide text overlays only with scrim.
|
|
198
|
+
- Touch targets: card images, titles, and favorite buttons all ≥ 44×44px on mobile.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## UX Principles for This Method
|
|
203
|
+
|
|
204
|
+
1. **Discovery over search.** Browsing should feel rewarding — "I didn't know I wanted that."
|
|
205
|
+
2. **Cards are atoms.** Every card must be independently scannable: image, title, key metadata in one glance.
|
|
206
|
+
3. **Personalization is the feature.** Surface what the user is likely to want next — recommendation rows are high-value real estate.
|
|
207
|
+
4. **Save and resume.** Favorites, watch later, saved searches — users leave and return. Meet them where they left off.
|
|
208
|
+
5. **Never lose the user in the grid.** Section headings, pagination, and "see all" links provide orientation.
|
|
209
|
+
6. **Fast first render.** Skeletons, lazy images, and fast first card row matter — the grid must feel instant.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Component Specs
|
|
214
|
+
|
|
215
|
+
### Standard Card
|
|
216
|
+
```
|
|
217
|
+
Width: flexible (grid cell) — typically 200-320px
|
|
218
|
+
Image: aspect-ratio 16:9 (video/media), 1:1 (music/product), 4:3 (travel/place)
|
|
219
|
+
Image object-fit: cover
|
|
220
|
+
Title: 14-16px, font-weight 500-600, 2-line clamp
|
|
221
|
+
Metadata row: 12-13px, text-secondary
|
|
222
|
+
Price (if applicable): 14-16px, bold
|
|
223
|
+
Favorite button: absolute top-right, 36×36px, heart icon, background: white circle with shadow
|
|
224
|
+
Border-radius: 8-12px (travel/marketplace) | 4px (media) | 0 (ultra editorial)
|
|
225
|
+
Shadow: default none, hover: 0 4px 16px rgba(0,0,0,0.1)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Category Section Row
|
|
229
|
+
```
|
|
230
|
+
Heading: 18-22px, font-weight 600, margin-bottom 12px
|
|
231
|
+
"See all" link: right-aligned, 14px, brand color
|
|
232
|
+
Horizontal scroll: overflow-x: scroll, scroll-snap-type: x mandatory
|
|
233
|
+
Scroll snapping: scroll-snap-align: start per card
|
|
234
|
+
Scrollbar: hidden (visually), accessible via keyboard
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Filter Bottom Sheet (Mobile)
|
|
238
|
+
```
|
|
239
|
+
Position: fixed bottom 0, full width
|
|
240
|
+
Height: auto, max-height 85vh, overflow-y: scroll
|
|
241
|
+
Background: white
|
|
242
|
+
Border-radius: 16px 16px 0 0
|
|
243
|
+
Handle bar: 4px × 32px, centered top, gray
|
|
244
|
+
Animation: slide up 250ms ease
|
|
245
|
+
Footer: "Apply Filters" (primary) + "Clear All" (ghost), sticky
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Skeleton Card
|
|
249
|
+
```
|
|
250
|
+
Background: var(--surface)
|
|
251
|
+
Image area: same aspect ratio as real card, background: linear-gradient shimmer
|
|
252
|
+
Title lines: 2 lines, height 14px, border-radius 4px, same shimmer
|
|
253
|
+
Animation: @keyframes shimmer, background-position shift 1.5s linear infinite
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Anti-Patterns to Avoid
|
|
259
|
+
|
|
260
|
+
- Do not show more than 6 items per horizontal scroll row before a "See all" link.
|
|
261
|
+
- Do not hide card metadata (price, rating, duration) until hover — mobile users cannot hover.
|
|
262
|
+
- Do not use infinite scroll without an easy way to get back to a specific position.
|
|
263
|
+
- Do not auto-play media in card hover on mobile.
|
|
264
|
+
- Do not use pagination alone without telling users how many total results exist.
|
|
265
|
+
- Do not load the full product catalog without filtering options.
|
|
266
|
+
- Do not use pop-up interstitials over the card grid.
|
|
267
|
+
- Do not make the save/favorite button so small it's untappable on mobile.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## QA Checklist
|
|
272
|
+
|
|
273
|
+
- [ ] Card grid renders correctly at 375px, 768px, 1024px, 1440px.
|
|
274
|
+
- [ ] Skeleton cards shown while data loads.
|
|
275
|
+
- [ ] Infinite scroll loads next batch before hitting bottom.
|
|
276
|
+
- [ ] Filter updates results without full page reload.
|
|
277
|
+
- [ ] Active filter chips visible above results with individual remove buttons.
|
|
278
|
+
- [ ] Favorite button has `aria-label` with item name.
|
|
279
|
+
- [ ] Rating stars have accessible text alternative.
|
|
280
|
+
- [ ] Horizontal scroll rows keyboard navigable (arrow keys or tab).
|
|
281
|
+
- [ ] `aria-live` announces new results loaded.
|
|
282
|
+
- [ ] Mobile filter bottom sheet accessible and closeable via swipe or close button.
|
|
283
|
+
- [ ] All card images have meaningful `alt` text.
|
|
284
|
+
- [ ] Dark streaming UI: text-on-image contrast passes 4.5:1.
|
|
285
|
+
- [ ] No media autoplays on mobile.
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# Brand Method: Conversion Simplicity
|
|
2
|
+
|
|
3
|
+
Use this skill when building for subscription products, fintech signups, mobile app downloads, SaaS trials, waitlists, or any context where the entire page exists to convert one type of visitor to one action.
|
|
4
|
+
|
|
5
|
+
Reference brands: Netflix, PayPal, Uber, Google (signup), Instagram (signup), LinkedIn (signup), Dropbox, Stripe, Linear.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## When to Apply This Method
|
|
10
|
+
|
|
11
|
+
Apply Conversion Simplicity when:
|
|
12
|
+
- There is one primary user action: sign up, start trial, download, subscribe, join waitlist.
|
|
13
|
+
- The user is a new visitor evaluating whether to commit.
|
|
14
|
+
- Reducing friction is more valuable than providing exhaustive information.
|
|
15
|
+
- The funnel is: land → understand → trust → act.
|
|
16
|
+
|
|
17
|
+
Do not apply when:
|
|
18
|
+
- Users need to browse or discover first (use Card-Based Discovery).
|
|
19
|
+
- Multiple stakeholders are evaluating a complex product (use Enterprise Trust Hub).
|
|
20
|
+
- The product experience is the selling point (use Product Cinema or Editorial Brand World).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Layout Structure
|
|
25
|
+
|
|
26
|
+
### Above the Fold (the only thing that matters)
|
|
27
|
+
- **One promise**: the most compelling, specific outcome the user gets. Not a feature list.
|
|
28
|
+
- **One primary CTA**: email signup, "Start Free Trial", "Get the App", "Join Waitlist". Nothing else.
|
|
29
|
+
- **Visual proof**: product screenshot, phone mockup, short testimonial, or simple illustration.
|
|
30
|
+
- **Objection handler**: one line of trust copy beneath the CTA ("No credit card required", "Free forever plan", "Cancel anytime").
|
|
31
|
+
|
|
32
|
+
### Page Flow (in order)
|
|
33
|
+
1. **Hero** — promise + CTA + objection handler.
|
|
34
|
+
2. **Social proof** — trusted by N users/companies, logo strip, star rating aggregate.
|
|
35
|
+
3. **Core benefit blocks** — 3 benefits max. Each: icon, one-line headline, one supporting sentence.
|
|
36
|
+
4. **Product proof** — screenshot, animation, or short demo video showing the product working.
|
|
37
|
+
5. **Testimonials** — 3 specific quotes with name, title, company, photo.
|
|
38
|
+
6. **FAQ** — 5-7 questions answering the top objections (pricing, commitment, compatibility).
|
|
39
|
+
7. **Final CTA** — repeat the hero CTA with the same promise, no new information.
|
|
40
|
+
|
|
41
|
+
### Navigation
|
|
42
|
+
- Minimal: logo left, 2-3 links max (Features, Pricing, Login), primary CTA right.
|
|
43
|
+
- Do not provide a full mega-nav — it gives users escape routes.
|
|
44
|
+
- No sticky nav unless it includes the CTA.
|
|
45
|
+
|
|
46
|
+
### Footer
|
|
47
|
+
- Minimal. Legal links, privacy, terms, social icons. No sitemap.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Color Scheme
|
|
52
|
+
|
|
53
|
+
### Primary Palette Patterns
|
|
54
|
+
|
|
55
|
+
**SaaS / Startup (Stripe, Linear, Vercel)**
|
|
56
|
+
- Background: `#FFFFFF` or dark `#0A0A0A` / `#111111`
|
|
57
|
+
- Primary: brand color (`#635BFF` Stripe purple, `#5E6AD2` Linear, `#000000` Vercel)
|
|
58
|
+
- Surface: `#F4F4F5` (light) or `#1C1C1E` (dark)
|
|
59
|
+
- Text: `#0F0F0F` (light) or `#FAFAFA` (dark)
|
|
60
|
+
- Secondary text: `#71717A`
|
|
61
|
+
- CTA: brand primary, white text — maximum contrast
|
|
62
|
+
- CTA hover: darken 10%
|
|
63
|
+
- Accent: gradient (`#635BFF → #0074D9`) for premium SaaS feel
|
|
64
|
+
|
|
65
|
+
**Fintech / Payments (PayPal, Stripe)**
|
|
66
|
+
- Background: `#FFFFFF`
|
|
67
|
+
- Primary: `#0070BA` (PayPal blue) or `#635BFF`
|
|
68
|
+
- Trust accent: `#00457C` (darker blue, for security copy)
|
|
69
|
+
- CTA: primary blue, white text
|
|
70
|
+
- Success: `#007B5E`
|
|
71
|
+
|
|
72
|
+
**Consumer App (Netflix, Uber, Instagram)**
|
|
73
|
+
- Netflix: Background `#000000`, accent `#E50914` (red), text white
|
|
74
|
+
- Uber: Background `#000000` or `#FFFFFF`, monochrome, CTA black-on-white or white-on-black
|
|
75
|
+
- Instagram: gradient CTA on white background, or gradient hero
|
|
76
|
+
|
|
77
|
+
**Minimal / Developer (Vercel, GitHub, Linear)**
|
|
78
|
+
- Background: `#000000` or `#FAFAFA`
|
|
79
|
+
- Text: inverse of background
|
|
80
|
+
- Accent: 1 brand color or white
|
|
81
|
+
- No gradients unless minimal and purposeful
|
|
82
|
+
|
|
83
|
+
### Rules
|
|
84
|
+
- CTA button must be the highest-contrast interactive element on the page.
|
|
85
|
+
- Social proof logos: grayscale — they support, not compete.
|
|
86
|
+
- Testimonial sections: slightly different background (`#F9FAFB`) to create visual rhythm.
|
|
87
|
+
- Never use two competing CTAs in the hero (no "Sign Up" + "Learn More" — pick one).
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Typography
|
|
92
|
+
|
|
93
|
+
### Scale
|
|
94
|
+
| Role | Size | Weight | Notes |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| Hero headline | 40-72px | 700-900 | Bold, specific promise |
|
|
97
|
+
| Hero subheadline | 18-22px | 400 | Supporting detail, max 2 lines |
|
|
98
|
+
| Section headline | 28-36px | 600-700 | |
|
|
99
|
+
| Benefit headline | 18-20px | 600 | |
|
|
100
|
+
| Benefit body | 15-16px | 400 | 1 sentence |
|
|
101
|
+
| Testimonial quote | 18-22px | 400-500 | Italic optional |
|
|
102
|
+
| Testimonial attribution | 14px | 500 | Name, title, company |
|
|
103
|
+
| FAQ question | 16-18px | 600 | |
|
|
104
|
+
| FAQ answer | 15-16px | 400 | |
|
|
105
|
+
| CTA | 15-18px | 600 | |
|
|
106
|
+
| Trust copy (under CTA) | 12-14px | 400 | Muted color |
|
|
107
|
+
|
|
108
|
+
### Font Pairings
|
|
109
|
+
| Context | Font |
|
|
110
|
+
|---|---|
|
|
111
|
+
| SaaS / startup | Inter, Plus Jakarta Sans, or Geist |
|
|
112
|
+
| Fintech | Helvetica Neue, DM Sans, or Lato |
|
|
113
|
+
| Consumer app | Circular, Nunito, or Poppins |
|
|
114
|
+
| Developer tool | Geist, JetBrains Mono (for code), Inter |
|
|
115
|
+
|
|
116
|
+
### Rules
|
|
117
|
+
- Hero headline: the most important thing on the page. It must be large and specific.
|
|
118
|
+
- Avoid vague headlines ("The future of work") — use outcomes ("Ship 3× faster with automated deploys").
|
|
119
|
+
- Trust copy under CTA: 12-14px, muted color — supportive, not competing.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Spacing System
|
|
124
|
+
|
|
125
|
+
| Token | Value | Use |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| `--space-xs` | 4px | Trust copy gap from CTA |
|
|
128
|
+
| `--space-sm` | 8px | Icon to text, badge padding |
|
|
129
|
+
| `--space-md` | 16-20px | Component padding |
|
|
130
|
+
| `--space-lg` | 32-40px | Between sections within same topic |
|
|
131
|
+
| `--space-xl` | 64-80px | Between major page sections |
|
|
132
|
+
| `--space-2xl` | 96-128px | Hero padding, final CTA section |
|
|
133
|
+
|
|
134
|
+
- Hero: generous padding top and bottom (80-128px) — breathing room signals confidence.
|
|
135
|
+
- Benefit blocks: equal spacing, grid alignment — visual consistency conveys professionalism.
|
|
136
|
+
- FAQ: no extra spacing — tight, scannable, no wasted room.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Motion and Interaction
|
|
141
|
+
|
|
142
|
+
### Hero CTA
|
|
143
|
+
- Button: no over-engineered animation. Hover: darken 8-10%, scale `1.02`, transition 150ms.
|
|
144
|
+
- On submit: show loading spinner inside button, disable button, replace text with "…".
|
|
145
|
+
- On success: replace CTA area with success message ("Check your email!" or redirect).
|
|
146
|
+
- On error: show inline error below CTA, shake animation on button (3-frame, 200ms).
|
|
147
|
+
|
|
148
|
+
### Product Preview
|
|
149
|
+
- Short looping video (10-15s, muted, no controls) OR animated GIF OR screenshot with subtle entrance animation.
|
|
150
|
+
- `prefers-reduced-motion`: replace with static screenshot.
|
|
151
|
+
- Load above fold immediately — this is conversion-critical content.
|
|
152
|
+
|
|
153
|
+
### FAQ Accordion
|
|
154
|
+
- Height transition: `max-height` 0 → auto equivalent, 200ms ease.
|
|
155
|
+
- Icon rotates 90° or 45° when open.
|
|
156
|
+
- Only one open at a time (optional — single-expand pattern).
|
|
157
|
+
|
|
158
|
+
### Scroll Animations
|
|
159
|
+
- Keep minimal: fade-in of benefit blocks, testimonials. Duration 300-500ms.
|
|
160
|
+
- Never use scroll animations on the CTA — users may be scrolling to reach it.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Responsive Behavior
|
|
165
|
+
|
|
166
|
+
| Breakpoint | Key changes |
|
|
167
|
+
|---|---|
|
|
168
|
+
| Mobile 375px | Hero: headline 28-36px. CTA: full-width button. Benefit blocks: single column. Testimonials: horizontal scroll or single-column. Nav: logo + CTA only (no extra links). |
|
|
169
|
+
| Tablet 768px | Hero: headline 36-48px. 2-column benefits. |
|
|
170
|
+
| Desktop 1024px | Full layout. Side-by-side hero text + product image/video. |
|
|
171
|
+
| Wide 1440px+ | Max-width 1100-1200px centered. Hero may use split layout at 1440px+. |
|
|
172
|
+
|
|
173
|
+
- Mobile CTA: full-width button, at least 48px height, pinned to viewport if possible.
|
|
174
|
+
- Mobile: no horizontal scroll except testimonials carousel.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Accessibility Requirements
|
|
179
|
+
|
|
180
|
+
- CTA button: descriptive label — not just "Sign Up" but "Start your free trial" or match the specific offer.
|
|
181
|
+
- Email input: always a `<label>`. `type="email"`, `autocomplete="email"`, `inputmode="email"`.
|
|
182
|
+
- Trust copy under CTA: `role="note"` or just visible text — no hidden aria required.
|
|
183
|
+
- Product video: `<video>` with `aria-label`, `loop`, `muted`, no `autoplay` without `playsinline`; poster image required; `prefers-reduced-motion` disables autoplay.
|
|
184
|
+
- Testimonial images: `alt="[Person Name], [Title] at [Company]"`.
|
|
185
|
+
- FAQ accordion: `<button aria-expanded="true/false" aria-controls="faq-answer-id">`. Answer `<div id="faq-answer-id">`.
|
|
186
|
+
- Social proof logos: `alt="[Company Name]"`.
|
|
187
|
+
- All text: 4.5:1 contrast minimum. CTA text on brand button must pass.
|
|
188
|
+
- Focus: CTA is the first logical focus target after the hero heading.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## UX Principles for This Method
|
|
193
|
+
|
|
194
|
+
1. **One job, one CTA.** Every element on the page exists to support the single conversion event.
|
|
195
|
+
2. **Answer objections before they form.** "No credit card" under the CTA is worth more than a features section.
|
|
196
|
+
3. **Specificity converts.** "Save 5 hours/week on reporting" beats "Save time." Name the number, name the outcome.
|
|
197
|
+
4. **Social proof is not decoration.** Real names, real companies, specific outcomes in quotes.
|
|
198
|
+
5. **Remove escape routes.** Minimal nav means fewer ways to leave the page without converting.
|
|
199
|
+
6. **Repeat the CTA.** Users need to see it multiple times before committing — top, middle, and bottom of page.
|
|
200
|
+
7. **Speed is a conversion feature.** A 1-second delay reduces conversions. Image optimization, no-blocking scripts, instant form feedback.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Component Specs
|
|
205
|
+
|
|
206
|
+
### Hero CTA Button
|
|
207
|
+
```
|
|
208
|
+
Background: brand primary (max contrast)
|
|
209
|
+
Text: white or high-contrast inverse
|
|
210
|
+
Padding: 14-16px 32-40px
|
|
211
|
+
Border-radius: 6px (modern) | 24px (friendly) | 2px (serious/fintech)
|
|
212
|
+
Font: 16-18px, weight 600
|
|
213
|
+
Min-height: 48-52px
|
|
214
|
+
Width: auto (desktop) | 100% (mobile)
|
|
215
|
+
Transition: background 150ms, transform 120ms
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Trust Copy (under CTA)
|
|
219
|
+
```
|
|
220
|
+
Font: 12-13px
|
|
221
|
+
Color: var(--text-muted)
|
|
222
|
+
Margin-top: 10-12px
|
|
223
|
+
Icon: optional checkmark or lock icon (14px)
|
|
224
|
+
Example: "✓ No credit card required · ✓ Cancel anytime"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Testimonial Card
|
|
228
|
+
```
|
|
229
|
+
Background: white (on light) or var(--surface) (on dark)
|
|
230
|
+
Border: 1px solid var(--border)
|
|
231
|
+
Border-radius: 12px
|
|
232
|
+
Padding: 24-28px
|
|
233
|
+
Quote: 17-20px, weight 400, font-style italic optional
|
|
234
|
+
Attribution: 14px, weight 500, flex row with avatar
|
|
235
|
+
Avatar: 36-40px, border-radius 50%
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### FAQ Item
|
|
239
|
+
```
|
|
240
|
+
Border-bottom: 1px solid var(--border)
|
|
241
|
+
Trigger button: full width, text-left, 17-18px, weight 600, padding 16px 0
|
|
242
|
+
Chevron icon: right-aligned, 16px, rotates 180° on open, transition 200ms
|
|
243
|
+
Answer: 15-16px, text-secondary, padding 0 0 16px, line-height 1.6
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Anti-Patterns to Avoid
|
|
249
|
+
|
|
250
|
+
- Do not add a full navigation with 8+ links — it gives users too many ways to leave.
|
|
251
|
+
- Do not use vague CTAs like "Learn More" as the primary action — users need to know what happens next.
|
|
252
|
+
- Do not put pricing objections in a way that makes pricing seem scary — be honest and frame value first.
|
|
253
|
+
- Do not require more than an email (and optionally a name) for the first signup step.
|
|
254
|
+
- Do not use dark patterns: pre-checked marketing consent, hidden trial-to-paid, confusing cancellation.
|
|
255
|
+
- Do not show 10 testimonials — 3 specific, credible testimonials outperform 10 generic ones.
|
|
256
|
+
- Do not use countdown timers unless the offer genuinely expires.
|
|
257
|
+
- Do not make the page long before you've earned the scroll — the best Conversion Simplicity pages are short.
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## QA Checklist
|
|
262
|
+
|
|
263
|
+
- [ ] Hero headline is specific and outcome-focused — not generic.
|
|
264
|
+
- [ ] CTA is the visually dominant interactive element.
|
|
265
|
+
- [ ] Trust copy (no credit card / cancel anytime) visible below CTA.
|
|
266
|
+
- [ ] Email input has `<label>` and correct input type.
|
|
267
|
+
- [ ] CTA button has descriptive accessible label.
|
|
268
|
+
- [ ] Form error message shown inline, associated with input via `aria-describedby`.
|
|
269
|
+
- [ ] Product video: muted, poster, `prefers-reduced-motion` fallback.
|
|
270
|
+
- [ ] Social proof logos grayscale.
|
|
271
|
+
- [ ] FAQ accordion has `aria-expanded` and `aria-controls`.
|
|
272
|
+
- [ ] Final CTA section repeats the hero CTA.
|
|
273
|
+
- [ ] Mobile: CTA full-width, at least 48px height.
|
|
274
|
+
- [ ] No more than 3 links in nav.
|
|
275
|
+
- [ ] Page LCP ≤ 2.5s — hero content must be server-rendered or critically preloaded.
|
|
276
|
+
- [ ] No dark patterns: no pre-checked marketing consent, no hidden costs, no fake urgency.
|