picasso-skill 1.2.0 → 1.3.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.
@@ -4,92 +4,181 @@ This is the most important reference file. These are the patterns that make AI-g
4
4
 
5
5
  ---
6
6
 
7
+ ## The AI Slop Fingerprint
8
+
9
+ Any 3 or more of these together = AI slop. Stop and redesign.
10
+
11
+ - Inter/Roboto + purple-to-blue gradient + centered hero + 3 equal feature cards + "Build the future of work" headline
12
+ - `bg-indigo-500` as default accent (the Tailwind feedback loop)
13
+ - Uniform 8px or 16px border-radius on everything
14
+ - Generic `box-shadow: 0 4px 6px rgba(0,0,0,0.1)` on every card
15
+ - Same page structure: hero > 3 cards > testimonials > pricing > CTA
16
+ - Gradient text (`background-clip: text`) that fails accessibility
17
+ - Abstract 3D blobs or stock photos of people smiling at laptops
18
+ - Everything perfectly centered on a vertical axis
19
+ - Uniform spacing with no density variation between sections
20
+ - Fade-in-on-scroll applied identically to every element
21
+ - Feature icons from Lucide/Heroicons in tinted circles
22
+ - "Trusted by 10,000+ teams" with grayed-out logos nobody recognizes
23
+
24
+ **The test:** Show someone a screenshot without context. If they say "AI-generated" in 3 seconds, it fails. The fingerprint is not any single choice -- it is the combination of defaults that signals zero human judgment.
25
+
26
+ ---
27
+
7
28
  ## Typography Anti-Patterns
8
29
 
9
- - **Inter everywhere.** The default safe choice. It signals "I did not think about fonts."
10
- - **Roboto, Arial, Helvetica, system-ui as primary.** Same problem.
11
- - **Space Grotesk on repeat.** Overused in AI/crypto contexts. Pick something else.
12
- - **Light (300) weight for body text.** Hard to read on most screens.
13
- - **Centered paragraphs.** Center alignment works for 1-2 lines (headings, quotes). Never for body text.
14
- - **No max-width on text.** Lines spanning 1400px are unreadable. Cap at 600-750px for body text.
15
- - **All caps without letter-spacing.** All-caps text needs 0.08-0.15em spacing to be legible.
30
+ - **Inter everywhere.** Signals "I did not think about fonts."
31
+ - **Roboto, Arial, Helvetica, system-ui as primary.** System defaults, not design decisions.
32
+ - **Space Grotesk on repeat.** Overused in AI/crypto contexts.
33
+ - **Light (300) weight for body text.** Hard to read. 400 minimum for body, 500+ for small text.
34
+ - **Centered paragraphs.** Center alignment works for 1-2 lines only. Never for body text.
35
+ - **No max-width on text.** Cap at 600-750px for body (45-75 characters per line).
36
+ - **All caps without letter-spacing.** Needs 0.08-0.15em spacing to be legible.
16
37
  - **More than 3 font families.** Two is ideal. Three is the maximum.
17
- - **Font size under 14px for body text.** Especially on mobile.
38
+ - **Font size under 14px for body text.** 16px is a safe default.
39
+ - **Same font weight for everything.** Use at least 3 distinct weights for hierarchy.
40
+ - **Line-height of 1.5 for all text.** Headings: 1.1-1.2. Body: 1.5-1.7. Small text: 1.6-1.8.
41
+ - **No optical size adjustment.** Display text: lighter weight, tighter tracking. Small UI text: heavier, looser tracking.
18
42
 
19
43
  ---
20
44
 
21
45
  ## Color Anti-Patterns
22
46
 
23
- - **Purple gradient on white background.** The signature AI slop aesthetic.
24
- - **Pure black text (#000000).** Always use tinted near-black (e.g., oklch(0.15 0.02 260)).
25
- - **Pure gray (#808080, #cccccc).** Always tint neutrals toward the palette hue.
26
- - **Gray text on colored backgrounds.** Creates low contrast and looks washed out.
27
- - **Full-saturation brand colors for large surfaces.** Reserve maximum chroma for small accents. Large areas need reduced saturation.
28
- - **Too many accent colors.** One primary, one secondary maximum. More creates visual chaos.
29
- - **Using opacity instead of actual color values.** opacity:0.5 on colored elements creates inconsistent results depending on background.
30
- - **No dark mode consideration.** Even if not implementing dark mode, design with the possibility in mind.
47
+ - **Purple gradient on white background.** The signature AI slop aesthetic. If your first instinct is purple-to-blue, stop.
48
+ - **`bg-indigo-500`, `bg-violet-500`, `bg-purple-500` as primary.** The Tailwind default palette trap.
49
+ - **Pure black text (#000000).** Use tinted near-black (e.g., `oklch(0.15 0.02 260)`).
50
+ - **Pure gray (#808080, #cccccc).** Tint neutrals toward the palette hue.
51
+ - **Gray text on colored backgrounds.** Low contrast, washed out. Use white or a very light tint.
52
+ - **Full-saturation brand colors for large surfaces.** Reserve max chroma for small accents. Large areas need reduced saturation.
53
+ - **Too many accent colors.** One primary, one secondary maximum.
54
+ - **Using opacity instead of actual color values.** `opacity:0.5` creates inconsistent results. Define explicit tokens.
55
+ - **No dark mode consideration.** Use CSS custom properties from the start.
56
+ - **Gradient text without a solid fallback.** Breaks in selection, high contrast mode, some browsers.
57
+ - **Rainbow or multi-stop gradients.** Two stops maximum. Four or more is a circus.
31
58
 
32
59
  ---
33
60
 
34
61
  ## Layout Anti-Patterns
35
62
 
36
- - **Everything centered vertically and horizontally.** Creates a lifeless vertical highway. Use left-aligned content with intentional centering for specific elements.
37
- - **Cards nested inside cards.** One level of card is usually enough. Nesting creates visual confusion about hierarchy.
38
- - **Wrapping everything in cards.** Not every piece of content needs a container with rounded corners and a shadow. Sometimes flat sections, dividers, or whitespace work better.
39
- - **Uniform rounded corners on everything.** Vary border-radius by context: pills for tags (999px), subtle rounding for cards (8-12px), sharper for data elements (4px).
40
- - **Equal spacing everywhere.** Groups need tighter internal spacing and wider external spacing. Without this, there is no visual structure.
41
- - **Three or four equal columns at every breakpoint.** Asymmetric grids (2:1, 3:2) are more interesting and create clearer hierarchy.
63
+ - **Everything centered vertically and horizontally.** Creates a lifeless vertical highway. Use left-aligned content with intentional centering.
64
+ - **Three-column equal-width feature grid as default.** The most common AI layout. Make one card dominant (2:1 split) or use a different structure.
65
+ - **Same page structure every time.** Hero > cards > testimonials > pricing > CTA. Break the pattern: split-screen, bento grid, horizontal scroll, text-as-hero.
66
+ - **No spatial surprises.** Every section on the same grid. Professional sites break the grid -- full-bleed images, asymmetric splits, oversized pull quotes.
67
+ - **No density variation.** Some sections should feel spacious (hero, CTA), others dense (feature lists, data tables, pricing).
68
+ - **No overlapping elements or grid breaks.** Elements that bleed outside containers add depth and interest.
69
+ - **Uniform card sizing in grids.** Primary item should be visually dominant. Featured card taller/wider.
70
+ - **Cards nested inside cards.** One level is usually enough.
71
+ - **Wrapping everything in cards.** Sometimes flat sections, dividers, or whitespace work better.
72
+ - **Equal spacing everywhere.** Groups need tighter internal spacing and wider external spacing.
42
73
  - **Content that could belong to any product.** If the layout has no personality, the design is not done.
74
+ - **Sticky header over 80px.** Keep slim (48-56px) or hide on scroll-down.
75
+
76
+ ---
77
+
78
+ ## Shadow Anti-Patterns
79
+
80
+ - **Same shadow on every elevated element.** `shadow-md` on cards, modals, dropdowns, and buttons is not a system.
81
+ - **No shadow hierarchy.** Define 3-4 levels: subtle (tooltips), moderate (cards, dropdowns), dramatic (modals, drawers).
82
+ - **Shadows invisible in dark mode.** `rgba(0,0,0,0.1)` disappears on dark backgrounds. Use inner glows, border effects, or background lightness differentiation.
83
+ - **Shadows instead of background-color for elevation.** Elevation is often better communicated through surface tint, not shadows.
84
+ - **Hard-edged shadows.** Small blur + high opacity = 2005. Modern shadows: large blur (20-40px), low opacity (0.03-0.08).
85
+ - **Colored shadows that do not match the element.** A blue button with gray shadow looks disconnected. Use the element's hue at low opacity.
86
+
87
+ ---
88
+
89
+ ## Border Radius Anti-Patterns
90
+
91
+ - **Uniform 8px or 16px on everything.** Border radius is a system, not one value.
92
+ - **No hierarchy.** Pills for tags (999px), generous for modals (16-24px), subtle for cards (8-12px), sharp for data (2-4px), sharp for marketing (0-2px).
93
+ - **Nested radius not accounting for padding.** Inner radius = outer radius minus padding. Card with `16px` radius and `8px` padding = inner element at `8px` radius.
94
+ - **Rounded corners on elements flush with container edges.** Touching corners should be 0 radius.
95
+ - **Mixing rounded and sharp in the same component.** Button at `8px` next to input at `0px` = two design systems colliding.
43
96
 
44
97
  ---
45
98
 
46
99
  ## Motion Anti-Patterns
47
100
 
48
- - **Bounce/elastic easing.** Feels dated and gimmicky. Use ease-out curves.
49
- - **Animating everything on the page.** Creates visual noise. Animate the important moments.
50
- - **transition: all 0.3s.** Animates properties you did not intend. Be specific: `transition: opacity 0.2s, transform 0.3s`.
51
- - **No loading feedback.** User clicks a button and nothing happens for 2 seconds. Always show progress.
52
- - **Spinner for content areas.** Use skeleton screens instead. Spinners should be reserved for small inline actions.
53
- - **Animation without prefers-reduced-motion handling.** Always provide a reduced-motion path.
101
+ - **Bounce/elastic easing.** Dated. Use ease-out for entrances, ease-in for exits.
102
+ - **Animating everything.** Animate important moments only: state changes, entrances, user-initiated actions.
103
+ - **transition: all 0.3s.** Be specific: `transition: opacity 0.2s ease-out, transform 0.3s ease-out`.
104
+ - **Uniform fade-in-on-scroll.** Stagger timing. Vary animation type. Let some elements just be there.
105
+ - **No loading feedback.** Always show progress on async actions.
106
+ - **Spinner for content areas.** Use skeleton screens. Spinners for small inline actions only.
107
+ - **No prefers-reduced-motion handling.** Wrap motion in `@media (prefers-reduced-motion: no-preference)`.
108
+ - **Duration over 500ms for UI transitions.** 150-300ms for most interactions. 300-500ms for large layout changes.
109
+ - **Animating layout properties (width, height, top, left).** Triggers reflows. Animate `transform` and `opacity` only.
54
110
 
55
111
  ---
56
112
 
57
113
  ## Interaction Anti-Patterns
58
114
 
59
115
  - **Placeholder text as the only label.** Disappears on focus. Inaccessible.
60
- - **outline: none without replacement.** Keyboard users lose all orientation.
116
+ - **outline: none without replacement.** Replace with a custom focus ring, never remove it.
61
117
  - **Hover-only interactions.** Must have keyboard and touch equivalents.
62
- - **Custom scrollbars that break native behavior.** Users expect scrolling to work natively.
63
- - **Toast notifications for errors.** They disappear. Use inline error messages instead.
64
- - **Alert/confirm dialogs for minor actions.** Blocking the entire page for "Are you sure?" on non-destructive actions.
65
- - **No focus trapping in modals.** Tab key escapes the modal and the user gets lost.
66
- - **Links that look like buttons and buttons that look like links.** Use the correct element for the correct purpose.
118
+ - **Custom scrollbars that break native behavior.** Custom thin scrollbars fine. Custom scroll physics not.
119
+ - **Toast notifications for errors.** They disappear. Use inline errors. Toasts for confirmations only.
120
+ - **Alert/confirm dialogs for minor actions.** Do not block the page for non-destructive actions.
121
+ - **No focus trapping in modals.** Tab key must stay within the modal.
122
+ - **Links that look like buttons, buttons that look like links.** `<a>` navigates. `<button>` acts.
123
+ - **Disabled buttons with no explanation.** Show inline validation or tooltip for why the action is unavailable.
124
+ - **Click targets smaller than 44x44px on mobile.** 44px minimum per Apple and Google guidelines.
67
125
 
68
126
  ---
69
127
 
70
- ## Code Anti-Patterns
128
+ ## Content / Copy Anti-Patterns
71
129
 
72
- - **div soup.** Use semantic HTML: nav, main, section, article, aside, header, footer.
73
- - **Inline styles for everything.** Use CSS variables, modules, or Tailwind. Inline styles cannot be overridden or themed.
74
- - **!important everywhere.** If specificity requires !important, the CSS architecture is broken.
75
- - **z-index: 9999.** Use a z-index scale (1, 10, 20, 30...) with named CSS variables.
76
- - **Fixed pixel values for everything.** Use rem for typography and spacing, em for component-internal sizing, px only for borders and shadows.
77
- - **console.log left in production.** Clean it up.
130
+ - **"Lorem ipsum" in final deliverables.** Design without content is decoration.
131
+ - **Stock photo people smiling at laptops.** Use contextual illustrations, product screenshots, or abstract art.
132
+ - **"Click here" link text.** Describe the destination: "View documentation."
133
+ - **"Submit" button text.** Use the specific action: "Create account", "Send message", "Save changes."
134
+ - **Walls of text without hierarchy.** Break with headings, spacing, and visual rhythm.
135
+ - **Generic headlines.** "Build the future of work." "Your all-in-one platform." "Scale without limits." These say nothing. Use a specific value proposition.
136
+ - **AI-telltale words.** "Delve", "pivotal", "seamless", "leverage", "cutting-edge", "elevate", "harness", "robust", "streamline", "utilize." If you would not say it in conversation, do not write it.
137
+ - **Hedge language.** "May help you", "might improve." Commit to the claim or do not make it.
138
+ - **Unrealistic demo data.** Not $1M revenue and 99.99% uptime. Use $47,230 and 99.93%. Not "John Doe" -- use "Sarah Chen" or "Marcus Rivera."
139
+ - **Broken Unsplash placeholder links.** `unsplash.com/random` links rot. Use solid color blocks or local assets.
140
+ - **Exclamation marks in UI copy.** "Welcome!" "Success!" Save enthusiasm for genuinely exciting moments.
78
141
 
79
142
  ---
80
143
 
81
- ## Content Anti-Patterns
144
+ ## Code Anti-Patterns
82
145
 
83
- - **"Lorem ipsum" in final deliverables.** Use real or realistic content. Design without content is decoration.
84
- - **Stock photo people smiling at laptops.** If using imagery, make it contextual.
85
- - **"Click here" link text.** Links should describe their destination: "View documentation" not "Click here".
86
- - **"Submit" button text.** Use the specific action: "Create account", "Send message", "Save changes".
87
- - **Walls of text without hierarchy.** Break content with headings, spacing, and visual rhythm.
146
+ - **div soup.** Use semantic HTML: `nav`, `main`, `section`, `article`, `aside`, `header`, `footer`.
147
+ - **Inline styles for everything.** Use CSS variables, modules, or Tailwind.
148
+ - **!important everywhere.** If needed, the CSS architecture is broken.
149
+ - **z-index: 9999.** Use a scale with named variables: `--z-dropdown: 10`, `--z-modal: 20`, `--z-toast: 30`.
150
+ - **Fixed pixel values for everything.** `rem` for typography/spacing, `em` for component internals, `px` for borders/shadows.
151
+ - **console.log left in production.**
152
+ - **Tailwind class strings over 200 characters.** Extract to a component or use `@apply`.
153
+ - **Hardcoded color values instead of CSS custom properties.** `bg-[#6366f1]` in 40 files means 40 edits for a brand change.
154
+ - **No responsive behavior.** Test at 320px, 768px, and 1440px minimum.
88
155
 
89
156
  ---
90
157
 
91
158
  ## The Overall Pattern to Avoid
92
159
 
93
- The "AI slop" aesthetic is recognizable by its combination of: Inter/Roboto font, purple/blue gradient accents, evenly spaced centered layouts, uniform card grids with identical rounded corners, and generic stock imagery. Any single element might be fine in isolation. Together, they signal "an AI made this with zero human judgment."
160
+ The AI slop aesthetic: Inter/Roboto + purple/blue gradient + centered layouts + uniform card grids + identical rounded corners + generic shadows + stock imagery. Any single element is fine in isolation. Together they signal zero human judgment.
161
+
162
+ The antidote is intentionality. Every choice -- font, color, spacing, layout, animation, shadow, radius, copy -- should be a conscious decision tied to the specific context. If you cannot explain why you chose it, you defaulted.
163
+
164
+ ---
94
165
 
95
- The antidote is intentionality. Every choice (font, color, spacing, layout, animation) should be a conscious decision tied to the specific context of what you are building.
166
+ ## Professional Alternatives (Quick Reference)
167
+
168
+ | AI Default | Professional Alternative |
169
+ |---|---|
170
+ | Inter / Roboto | Satoshi, Cabinet Grotesk, Plus Jakarta Sans, Outfit, General Sans, Switzer |
171
+ | Purple-to-blue gradient | Single brand hue + tinted neutrals (monochromatic palette) |
172
+ | 3-column equal cards | Asymmetric grid with primary card dominant (2:1 or 3:2 split) |
173
+ | Centered everything | Left-aligned content with intentional centering for heroes/CTAs only |
174
+ | Uniform 8px radius | Context-appropriate: 0-2px marketing, 8-12px cards, 16-24px modals, 999px tags |
175
+ | `0 4px 6px rgba(0,0,0,0.1)` | Elevation-based shadow scale with 3-4 distinct levels |
176
+ | Hero > Cards > Testimonials > CTA | Split-screen, bento grid, horizontal scroll, text-as-hero, editorial layout |
177
+ | Fade-in everything identically | Staggered entrance with varied timing, direction, and type per element |
178
+ | "Scale without limits" | Specific claim with real metric: "Process 10k invoices in 3 minutes" |
179
+ | `bg-indigo-500` accent | A hue reflecting the brand, not Tailwind's default palette |
180
+ | Generic box icons in circles | Custom illustrations, product screenshots, or no icons at all |
181
+ | "Trusted by 10,000+ teams" | Real customer logos with permission, or skip entirely |
182
+ | Uniform section spacing | Varied density: spacious heroes, dense feature grids, breathing room at CTAs |
183
+ | Same shadow on everything | Shadow hierarchy: none flat, subtle cards, medium dropdowns, heavy modals |
184
+ | Stock laptop photos | Product screenshots, hand-drawn illustrations, or abstract geometric art |
@@ -7,7 +7,9 @@
7
7
  4. Dark Mode
8
8
  5. Accessibility
9
9
  6. CSS Variables Pattern
10
- 7. Common Mistakes
10
+ 7. Curated Color Palettes
11
+ 8. Wide Gamut Colors (P3)
12
+ 9. Common Mistakes
11
13
 
12
14
  ---
13
15
 
@@ -163,7 +165,254 @@ For component-level overrides:
163
165
 
164
166
  ---
165
167
 
166
- ## 7. Common Mistakes
168
+ ## 7. Curated Color Palettes
169
+
170
+ Ten tested OKLCH palettes ready to drop into any project. Each includes a complete token set. Copy the one that fits your domain, then adjust chroma and hue to taste.
171
+
172
+ ### 7.1 Warm Terracotta
173
+ **Vibe**: Earthy, grounded, artisanal. Good for lifestyle brands, wellness, real estate, organic products.
174
+ ```css
175
+ :root {
176
+ --surface-0: oklch(0.98 0.008 55);
177
+ --surface-1: oklch(0.95 0.012 55);
178
+ --text-primary: oklch(0.18 0.025 55);
179
+ --text-secondary: oklch(0.42 0.02 55);
180
+ --accent: oklch(0.58 0.16 45);
181
+ --accent-hover: oklch(0.52 0.18 45);
182
+ --accent-subtle: oklch(0.93 0.04 45);
183
+ --border: oklch(0.87 0.015 55);
184
+ --success: oklch(0.55 0.16 155);
185
+ --warning: oklch(0.68 0.16 75);
186
+ --error: oklch(0.55 0.20 25);
187
+ }
188
+ ```
189
+
190
+ ### 7.2 Forest Green
191
+ **Vibe**: Natural, sustainable, trustworthy. Good for fintech, health, environmental, agriculture.
192
+ ```css
193
+ :root {
194
+ --surface-0: oklch(0.98 0.006 145);
195
+ --surface-1: oklch(0.96 0.01 145);
196
+ --text-primary: oklch(0.17 0.03 150);
197
+ --text-secondary: oklch(0.40 0.02 150);
198
+ --accent: oklch(0.52 0.14 155);
199
+ --accent-hover: oklch(0.46 0.16 155);
200
+ --accent-subtle: oklch(0.93 0.04 155);
201
+ --border: oklch(0.88 0.012 145);
202
+ --success: oklch(0.55 0.16 145);
203
+ --warning: oklch(0.66 0.16 80);
204
+ --error: oklch(0.55 0.20 25);
205
+ }
206
+ ```
207
+
208
+ ### 7.3 Amber Gold
209
+ **Vibe**: Premium, confident, optimistic. Good for finance, luxury SaaS, productivity tools.
210
+ ```css
211
+ :root {
212
+ --surface-0: oklch(0.99 0.005 85);
213
+ --surface-1: oklch(0.96 0.01 85);
214
+ --text-primary: oklch(0.16 0.02 85);
215
+ --text-secondary: oklch(0.40 0.018 85);
216
+ --accent: oklch(0.68 0.18 75);
217
+ --accent-hover: oklch(0.62 0.20 75);
218
+ --accent-subtle: oklch(0.94 0.04 75);
219
+ --border: oklch(0.88 0.012 85);
220
+ --success: oklch(0.55 0.16 150);
221
+ --warning: oklch(0.68 0.18 75);
222
+ --error: oklch(0.55 0.20 28);
223
+ }
224
+ ```
225
+
226
+ ### 7.4 Coral Salmon
227
+ **Vibe**: Warm, energetic, approachable. Good for social apps, creative tools, food and hospitality.
228
+ ```css
229
+ :root {
230
+ --surface-0: oklch(0.98 0.006 30);
231
+ --surface-1: oklch(0.96 0.01 30);
232
+ --text-primary: oklch(0.18 0.02 30);
233
+ --text-secondary: oklch(0.42 0.018 30);
234
+ --accent: oklch(0.65 0.20 25);
235
+ --accent-hover: oklch(0.58 0.22 25);
236
+ --accent-subtle: oklch(0.94 0.04 25);
237
+ --border: oklch(0.88 0.012 30);
238
+ --success: oklch(0.55 0.16 150);
239
+ --warning: oklch(0.66 0.16 75);
240
+ --error: oklch(0.52 0.22 20);
241
+ }
242
+ ```
243
+
244
+ ### 7.5 Deep Teal
245
+ **Vibe**: Calm, medical, authoritative. Good for health tech, enterprise SaaS, data platforms, legal.
246
+ ```css
247
+ :root {
248
+ --surface-0: oklch(0.98 0.005 195);
249
+ --surface-1: oklch(0.96 0.008 195);
250
+ --text-primary: oklch(0.16 0.025 200);
251
+ --text-secondary: oklch(0.40 0.02 200);
252
+ --accent: oklch(0.52 0.12 195);
253
+ --accent-hover: oklch(0.46 0.14 195);
254
+ --accent-subtle: oklch(0.93 0.03 195);
255
+ --border: oklch(0.88 0.01 195);
256
+ --success: oklch(0.55 0.14 155);
257
+ --warning: oklch(0.66 0.16 75);
258
+ --error: oklch(0.55 0.20 25);
259
+ }
260
+ ```
261
+
262
+ ### 7.6 Slate Blue
263
+ **Vibe**: Professional, systematic, dependable. Good for project management, B2B SaaS, documentation.
264
+ ```css
265
+ :root {
266
+ --surface-0: oklch(0.98 0.005 250);
267
+ --surface-1: oklch(0.96 0.008 250);
268
+ --text-primary: oklch(0.17 0.02 250);
269
+ --text-secondary: oklch(0.42 0.018 250);
270
+ --accent: oklch(0.55 0.14 250);
271
+ --accent-hover: oklch(0.49 0.16 250);
272
+ --accent-subtle: oklch(0.93 0.03 250);
273
+ --border: oklch(0.88 0.01 250);
274
+ --success: oklch(0.55 0.16 150);
275
+ --warning: oklch(0.66 0.16 75);
276
+ --error: oklch(0.55 0.20 25);
277
+ }
278
+ ```
279
+
280
+ ### 7.7 Burgundy
281
+ **Vibe**: Sophisticated, editorial, rich. Good for wine/food, publishing, luxury, fashion.
282
+ ```css
283
+ :root {
284
+ --surface-0: oklch(0.98 0.006 10);
285
+ --surface-1: oklch(0.96 0.01 10);
286
+ --text-primary: oklch(0.16 0.025 10);
287
+ --text-secondary: oklch(0.40 0.02 10);
288
+ --accent: oklch(0.42 0.16 15);
289
+ --accent-hover: oklch(0.36 0.18 15);
290
+ --accent-subtle: oklch(0.93 0.04 15);
291
+ --border: oklch(0.87 0.012 10);
292
+ --success: oklch(0.55 0.16 150);
293
+ --warning: oklch(0.66 0.16 75);
294
+ --error: oklch(0.50 0.20 25);
295
+ }
296
+ ```
297
+
298
+ ### 7.8 Sage
299
+ **Vibe**: Soft, organic, restorative. Good for wellness, meditation, journaling, therapy platforms.
300
+ ```css
301
+ :root {
302
+ --surface-0: oklch(0.98 0.006 130);
303
+ --surface-1: oklch(0.95 0.012 130);
304
+ --text-primary: oklch(0.20 0.02 130);
305
+ --text-secondary: oklch(0.42 0.018 130);
306
+ --accent: oklch(0.58 0.10 130);
307
+ --accent-hover: oklch(0.52 0.12 130);
308
+ --accent-subtle: oklch(0.93 0.03 130);
309
+ --border: oklch(0.88 0.01 130);
310
+ --success: oklch(0.55 0.14 150);
311
+ --warning: oklch(0.66 0.15 75);
312
+ --error: oklch(0.55 0.18 25);
313
+ }
314
+ ```
315
+
316
+ ### 7.9 Charcoal with Orange Accent
317
+ **Vibe**: Bold, industrial, high-contrast. Good for dev tools, gaming, analytics, creative coding.
318
+ ```css
319
+ :root {
320
+ --surface-0: oklch(0.97 0.003 60);
321
+ --surface-1: oklch(0.94 0.005 60);
322
+ --text-primary: oklch(0.15 0.01 60);
323
+ --text-secondary: oklch(0.40 0.01 60);
324
+ --accent: oklch(0.65 0.22 55);
325
+ --accent-hover: oklch(0.58 0.24 55);
326
+ --accent-subtle: oklch(0.94 0.04 55);
327
+ --border: oklch(0.86 0.008 60);
328
+ --success: oklch(0.55 0.16 150);
329
+ --warning: oklch(0.66 0.18 70);
330
+ --error: oklch(0.55 0.22 25);
331
+ }
332
+ ```
333
+
334
+ ### 7.10 Monochrome Black and White
335
+ **Vibe**: Stark, typographic, gallery-like. Good for portfolios, photography, editorial, minimal SaaS.
336
+ ```css
337
+ :root {
338
+ --surface-0: oklch(0.99 0.000 0);
339
+ --surface-1: oklch(0.96 0.000 0);
340
+ --text-primary: oklch(0.13 0.000 0);
341
+ --text-secondary: oklch(0.45 0.000 0);
342
+ --accent: oklch(0.15 0.000 0);
343
+ --accent-hover: oklch(0.25 0.000 0);
344
+ --accent-subtle: oklch(0.93 0.000 0);
345
+ --border: oklch(0.85 0.000 0);
346
+ --success: oklch(0.50 0.14 150);
347
+ --warning: oklch(0.62 0.14 75);
348
+ --error: oklch(0.50 0.18 25);
349
+ }
350
+ ```
351
+
352
+ For the monochrome palette, the accent is near-black. CTAs rely on fill weight (solid black buttons with white text) rather than color. Semantic colors (success, warning, error) break the monochrome intentionally so they remain functional.
353
+
354
+ ---
355
+
356
+ ## 8. Wide Gamut Colors (P3)
357
+
358
+ ### What is Display P3?
359
+ Display P3 is a color space that covers roughly 25% more visible colors than sRGB. Modern Apple devices, most OLED screens, and recent monitors support it. Colors outside the sRGB gamut appear more vivid without being oversaturated.
360
+
361
+ ### CSS Syntax
362
+ ```css
363
+ /* Display P3 via color() function */
364
+ --accent: color(display-p3 0.92 0.34 0.15); /* vivid orange impossible in sRGB */
365
+ --success: color(display-p3 0.18 0.75 0.35); /* richer green */
366
+ --highlight: color(display-p3 1 0.85 0); /* pure P3 yellow */
367
+ ```
368
+
369
+ ### Feature Detection
370
+ ```css
371
+ @media (color-gamut: p3) {
372
+ :root {
373
+ --accent: color(display-p3 0.92 0.34 0.15);
374
+ --success: color(display-p3 0.18 0.75 0.35);
375
+ }
376
+ }
377
+ ```
378
+
379
+ ### Progressive Enhancement Pattern
380
+ Always define an sRGB fallback first, then override for wide gamut displays. This ensures every screen gets a reasonable color.
381
+
382
+ ```css
383
+ :root {
384
+ /* sRGB fallback (works everywhere) */
385
+ --accent: oklch(0.65 0.22 35);
386
+ --success: oklch(0.55 0.18 150);
387
+ --highlight: oklch(0.82 0.18 90);
388
+ }
389
+
390
+ @media (color-gamut: p3) {
391
+ :root {
392
+ /* P3 override (wider gamut screens) */
393
+ --accent: oklch(0.65 0.27 35); /* push chroma beyond sRGB limit */
394
+ --success: oklch(0.55 0.22 150);
395
+ --highlight: oklch(0.82 0.22 90);
396
+ }
397
+ }
398
+ ```
399
+
400
+ Note: OKLCH values automatically map to the widest gamut the browser and display support. Increasing chroma beyond ~0.15-0.20 (depending on hue) often pushes into P3 territory. This makes OKLCH the ideal space for progressive enhancement because you write one value and the browser resolves it to the best available gamut.
401
+
402
+ ### When to Use P3
403
+ - Hero gradients and accent splashes where vibrancy matters
404
+ - Success/error states that need to "pop" on capable screens
405
+ - Brand colors that were designed in P3 (increasingly common)
406
+ - Image overlays and tinted surfaces that blend with wide-gamut photography
407
+
408
+ ### When NOT to Use P3
409
+ - Body text colors (perceptual difference is negligible)
410
+ - Border and surface tokens (subtle differences, not worth the complexity)
411
+ - Any context where the sRGB version already looks correct
412
+
413
+ ---
414
+
415
+ ## 9. Common Mistakes
167
416
 
168
417
  - Using pure black (#000) for text (use tinted near-black instead)
169
418
  - Using gray text on colored backgrounds (low contrast, hard to read)