cdragon 0.1.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.
Files changed (91) hide show
  1. package/README.md +110 -0
  2. package/bin/cdragon.js +170 -0
  3. package/package.json +31 -0
  4. package/skills/agent-browser/SKILL.md +50 -0
  5. package/skills/grill-me/SKILL.md +7 -0
  6. package/skills/herdr-agent/SKILL.md +142 -0
  7. package/skills/herdr-cli/SKILL.md +388 -0
  8. package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
  9. package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
  10. package/skills/notion-presentation/SKILL.md +170 -0
  11. package/skills/notion-presentation/references/example-redis-deck.md +97 -0
  12. package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
  13. package/skills/setup-matt-pocock-skills/domain.md +51 -0
  14. package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
  15. package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
  16. package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  17. package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  18. package/skills/tdd/SKILL.md +108 -0
  19. package/skills/tdd/mocking.md +59 -0
  20. package/skills/tdd/refactoring.md +10 -0
  21. package/skills/tdd/tests.md +61 -0
  22. package/skills/to-html/SKILL.md +83 -0
  23. package/skills/to-html/designs/INDEX.md +74 -0
  24. package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
  25. package/skills/to-html/designs/airtable.DESIGN.md +275 -0
  26. package/skills/to-html/designs/alipay.DESIGN.md +456 -0
  27. package/skills/to-html/designs/apple.DESIGN.md +566 -0
  28. package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
  29. package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
  30. package/skills/to-html/designs/clay.DESIGN.md +398 -0
  31. package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
  32. package/skills/to-html/designs/cohere.DESIGN.md +361 -0
  33. package/skills/to-html/designs/coinone.DESIGN.md +218 -0
  34. package/skills/to-html/designs/coupang.DESIGN.md +502 -0
  35. package/skills/to-html/designs/cursor.DESIGN.md +416 -0
  36. package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
  37. package/skills/to-html/designs/expo.DESIGN.md +373 -0
  38. package/skills/to-html/designs/figma.DESIGN.md +490 -0
  39. package/skills/to-html/designs/framer.DESIGN.md +393 -0
  40. package/skills/to-html/designs/freee.DESIGN.md +572 -0
  41. package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
  42. package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
  43. package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
  44. package/skills/to-html/designs/hahow.DESIGN.md +158 -0
  45. package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
  46. package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
  47. package/skills/to-html/designs/ibm.DESIGN.md +420 -0
  48. package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
  49. package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
  50. package/skills/to-html/designs/karrot.DESIGN.md +445 -0
  51. package/skills/to-html/designs/kdan.DESIGN.md +160 -0
  52. package/skills/to-html/designs/krds.DESIGN.md +997 -0
  53. package/skills/to-html/designs/line.DESIGN.md +431 -0
  54. package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
  55. package/skills/to-html/designs/miro.DESIGN.md +272 -0
  56. package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
  57. package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
  58. package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
  59. package/skills/to-html/designs/naver.DESIGN.md +533 -0
  60. package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
  61. package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
  62. package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
  63. package/skills/to-html/designs/posthog.DESIGN.md +430 -0
  64. package/skills/to-html/designs/raycast.DESIGN.md +422 -0
  65. package/skills/to-html/designs/remember.DESIGN.md +460 -0
  66. package/skills/to-html/designs/resend.DESIGN.md +396 -0
  67. package/skills/to-html/designs/sanity.DESIGN.md +449 -0
  68. package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
  69. package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
  70. package/skills/to-html/designs/socar.DESIGN.md +403 -0
  71. package/skills/to-html/designs/spotify.DESIGN.md +265 -0
  72. package/skills/to-html/designs/supabase.DESIGN.md +348 -0
  73. package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
  74. package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
  75. package/skills/to-html/designs/toss.DESIGN.md +655 -0
  76. package/skills/to-html/designs/uber.DESIGN.md +387 -0
  77. package/skills/to-html/designs/upstage.DESIGN.md +232 -0
  78. package/skills/to-html/designs/velog.DESIGN.md +168 -0
  79. package/skills/to-html/designs/vercel.DESIGN.md +479 -0
  80. package/skills/to-html/designs/wanted.DESIGN.md +529 -0
  81. package/skills/to-html/designs/wise.DESIGN.md +276 -0
  82. package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
  83. package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
  84. package/skills/to-html/designs/zapier.DESIGN.md +433 -0
  85. package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
  86. package/skills/to-issues/SKILL.md +84 -0
  87. package/skills/to-prd/SKILL.md +75 -0
  88. package/src/colors.js +15 -0
  89. package/src/link.js +47 -0
  90. package/src/prompt.js +137 -0
  91. package/src/skills.js +75 -0
@@ -0,0 +1,322 @@
1
+ ---
2
+ id: pinterest
3
+ name: Pinterest
4
+ country: US
5
+ category: consumer-tech
6
+ homepage: "https://www.pinterest.com"
7
+ primary_color: "#e60023"
8
+ logo:
9
+ type: simpleicons
10
+ slug: pinterest
11
+ verified: "2026-05-15"
12
+ omd: "0.1"
13
+ ds:
14
+ name: Gestalt
15
+ url: "https://gestalt.pinterest.systems"
16
+ type: system
17
+ description: Pinterest's open-source React component library with tokens and foundations.
18
+ ---
19
+
20
+ # Design System Inspiration of Pinterest
21
+
22
+ ## 1. Visual Theme & Atmosphere
23
+
24
+ Pinterest's website is a warm, inspiration-driven canvas that treats visual discovery like a lifestyle magazine. The design operates on a soft, slightly warm white background with Pinterest Red (`#e60023`) as the singular, bold brand accent. Unlike the cool blues of most tech platforms, Pinterest's neutral scale has a distinctly warm undertone — grays lean toward olive/sand (`#91918c`, `#62625b`, `#e5e5e0`) rather than cool steel, creating a cozy, craft-like atmosphere that invites browsing.
25
+
26
+ The typography uses Pin Sans — a custom proprietary font with a broad fallback stack including Japanese fonts, reflecting Pinterest's global reach. At display scale (70px, weight 600), Pin Sans creates large, inviting headlines. At smaller sizes, the system is compact: buttons at 12px, captions at 12–14px. The CSS variable naming system (`--comp-*`, `--sema-*`, `--base-*`) reveals a sophisticated three-tier design token architecture: component-level, semantic-level, and base-level tokens.
27
+
28
+ What distinguishes Pinterest is its generous border-radius system (12px–40px, plus 50% for circles) and warm-tinted button backgrounds. The secondary button (`#e5e5e0`) has a distinctly warm, sand-like tone rather than cold gray. The primary red button uses 16px radius — rounded but not pill-shaped. Combined with warm badge backgrounds (`hsla(60,20%,98%,.5)` — a subtle yellow-warm wash) and photography-dominant layouts, the result is a design that feels handcrafted and personal, not corporate and sterile.
29
+
30
+ **Key Characteristics:**
31
+ - Warm white canvas with olive/sand-toned neutrals — cozy, not clinical
32
+ - Pinterest Red (`#e60023`) as singular bold accent — never subtle, always confident
33
+ - Pin Sans custom font with global fallback stack (including CJK)
34
+ - Three-tier token architecture: `--comp-*` / `--sema-*` / `--base-*`
35
+ - Warm secondary surfaces: sand gray (`#e5e5e0`), warm badge (`hsla(60,20%,98%,.5)`)
36
+ - Generous border-radius: 16px standard, up to 40px for large containers
37
+ - Photography-first content — pins/images are the primary visual element
38
+ - Dark near-purple text (`#211922`) — warm, with a hint of plum
39
+
40
+ ## 2. Color Palette & Roles
41
+
42
+ ### Primary Brand
43
+ - **Pinterest Red** (`#e60023`): Primary CTA, brand accent — bold, confident red
44
+ - **Green 700** (`#103c25`): `--base-color-green-700`, success/nature accent
45
+ - **Green 700 Hover** (`#0b2819`): `--base-color-hover-green-700`, pressed green
46
+
47
+ ### Text
48
+ - **Plum Black** (`#211922`): Primary text — warm near-black with plum undertone
49
+ - **Black** (`#000000`): Secondary text, button text
50
+ - **Olive Gray** (`#62625b`): Secondary descriptions, muted text
51
+ - **Warm Silver** (`#91918c`): `--comp-button-color-text-transparent-disabled`, disabled text, input borders
52
+ - **White** (`#ffffff`): Text on dark/colored surfaces
53
+
54
+ ### Interactive
55
+ - **Focus Blue** (`#435ee5`): `--comp-button-color-border-focus-outer-transparent`, focus rings
56
+ - **Performance Purple** (`#6845ab`): `--sema-color-hover-icon-performance-plus`, performance features
57
+ - **Recommendation Purple** (`#7e238b`): `--sema-color-hover-text-recommendation`, AI recommendation
58
+ - **Link Blue** (`#2b48d4`): Link text color
59
+ - **Facebook Blue** (`#0866ff`): `--facebook-background-color`, social login
60
+ - **Pressed Blue** (`#617bff`): `--base-color-pressed-blue-200`, pressed state
61
+
62
+ ### Surface & Border
63
+ - **Sand Gray** (`#e5e5e0`): Secondary button background — warm, craft-like
64
+ - **Warm Light** (`#e0e0d9`): Circular button backgrounds, badges
65
+ - **Warm Wash** (`hsla(60, 20%, 98%, 0.5)`): `--comp-badge-color-background-wash-light`, subtle warm badge bg
66
+ - **Fog** (`#f6f6f3`): Light surface (at 50% opacity)
67
+ - **Border Disabled** (`#c8c8c1`): `--sema-color-border-disabled`, disabled borders
68
+ - **Hover Gray** (`#bcbcb3`): `--base-color-hover-grayscale-150`, hover border
69
+ - **Dark Surface** (`#33332e`): Dark section backgrounds
70
+
71
+ ### Semantic
72
+ - **Error Red** (`#9e0a0a`): Checkbox/form error states
73
+
74
+ ## 3. Typography Rules
75
+
76
+ ### Font Family
77
+ - **Primary**: `Pin Sans`, fallbacks: `-apple-system, system-ui, Segoe UI, Roboto, Oxygen-Sans, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, ヒラギノ角ゴ Pro W3, メイリオ, Meiryo, MS Pゴシック, Arial`
78
+
79
+ ### Hierarchy
80
+
81
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
82
+ |------|------|------|--------|-------------|----------------|-------|
83
+ | Display Hero | Pin Sans | 70px (4.38rem) | 600 | normal | normal | Maximum impact |
84
+ | Section Heading | Pin Sans | 28px (1.75rem) | 700 | normal | -1.2px | Negative tracking |
85
+ | Body | Pin Sans | 16px (1.00rem) | 400 | 1.40 | normal | Standard reading |
86
+ | Caption Bold | Pin Sans | 14px (0.88rem) | 700 | normal | normal | Strong metadata |
87
+ | Caption | Pin Sans | 12px (0.75rem) | 400–500 | 1.50 | normal | Small text, tags |
88
+ | Button | Pin Sans | 12px (0.75rem) | 400 | normal | normal | Button labels |
89
+
90
+ ### Principles
91
+ - **Compact type scale**: The range is 12px–70px with a dramatic jump — most functional text is 12–16px, creating a dense, app-like information hierarchy.
92
+ - **Warm weight distribution**: 600–700 for headings, 400–500 for body. No ultra-light weights — the type always feels substantial.
93
+ - **Negative tracking on headings**: -1.2px on 28px headings creates cozy, intimate section titles.
94
+ - **Single font family**: Pin Sans handles everything — no secondary display or monospace font detected.
95
+
96
+ ## 4. Component Stylings
97
+
98
+ ### Buttons
99
+
100
+ **Primary Red**
101
+ - Background: `#e60023` (Pinterest Red)
102
+ - Text: `#000000` (black — unusual choice for contrast on red)
103
+ - Padding: 6px 14px
104
+ - Radius: 16px (generously rounded, not pill)
105
+ - Border: `2px solid rgba(255, 255, 255, 0)` (transparent)
106
+ - Focus: semantic border + outline via CSS variables
107
+
108
+ **Secondary Sand**
109
+ - Background: `#e5e5e0` (warm sand gray)
110
+ - Text: `#000000`
111
+ - Padding: 6px 14px
112
+ - Radius: 16px
113
+ - Focus: same semantic border system
114
+
115
+ **Circular Action**
116
+ - Background: `#e0e0d9` (warm light)
117
+ - Text: `#211922` (plum black)
118
+ - Radius: 50% (circle)
119
+ - Use: Pin actions, navigation controls
120
+
121
+ **Ghost / Transparent**
122
+ - Background: transparent
123
+ - Text: `#000000`
124
+ - No border
125
+ - Use: Tertiary actions
126
+
127
+ ### Cards & Containers
128
+ - Photography-first pin cards with generous radius (12px–20px)
129
+ - No traditional box-shadow on most cards
130
+ - White or warm fog backgrounds
131
+ - 8px white thick border on some image containers
132
+
133
+ ### Inputs
134
+ - Email input: white background, `1px solid #91918c` border, 16px radius, 11px 15px padding
135
+ - Focus: semantic border + outline system via CSS variables
136
+
137
+ ### Navigation
138
+ - Clean header on white or warm background
139
+ - Pinterest logo + search bar centered
140
+ - Pin Sans 16px for nav links
141
+ - Pinterest Red accents for active states
142
+
143
+ ### Image Treatment
144
+ - Pin-style masonry grid (signature Pinterest layout)
145
+ - Rounded corners: 12px–20px on images
146
+ - Photography as primary content — every pin is an image
147
+ - Thick white borders (8px) on featured image containers
148
+
149
+ ## 5. Layout Principles
150
+
151
+ ### Spacing System
152
+ - Base unit: 8px
153
+ - Scale: 4px, 6px, 7px, 8px, 10px, 11px, 12px, 16px, 18px, 20px, 22px, 24px, 32px, 80px, 100px
154
+ - Large jumps: 32px → 80px → 100px for section spacing
155
+
156
+ ### Grid & Container
157
+ - Masonry grid for pin content (signature layout)
158
+ - Centered content sections with generous max-width
159
+ - Full-width dark footer
160
+ - Search bar as primary navigation element
161
+
162
+ ### Whitespace Philosophy
163
+ - **Inspiration density**: The masonry grid packs pins tightly — the content density IS the value proposition. Whitespace exists between sections, not within the grid.
164
+ - **Breathing above, density below**: Hero/feature sections get generous padding; the pin grid is compact and immersive.
165
+
166
+ ### Border Radius Scale
167
+ - Standard (12px): Small cards, links
168
+ - Button (16px): Buttons, inputs, medium cards
169
+ - Comfortable (20px): Feature cards
170
+ - Large (28px): Large containers
171
+ - Section (32px): Tab elements, large panels
172
+ - Hero (40px): Hero containers, large feature blocks
173
+ - Circle (50%): Action buttons, tab indicators
174
+
175
+ ## 6. Depth & Elevation
176
+
177
+ | Level | Treatment | Use |
178
+ |-------|-----------|-----|
179
+ | Flat (Level 0) | No shadow | Default — pins rely on content, not shadow |
180
+ | Subtle (Level 1) | Minimal shadow (from tokens) | Elevated overlays, dropdowns |
181
+ | Focus (Accessibility) | `--sema-color-border-focus-outer-default` ring | Focus states |
182
+
183
+ **Shadow Philosophy**: Pinterest uses minimal shadows. The masonry grid relies on content (photography) to create visual interest rather than elevation effects. Depth comes from the warmth of surface colors and the generous rounding of containers.
184
+
185
+ ## 7. Do's and Don'ts
186
+
187
+ ### Do
188
+ - Use warm neutrals (`#e5e5e0`, `#e0e0d9`, `#91918c`) — the warm olive/sand tone is the identity
189
+ - Apply Pinterest Red (`#e60023`) only for primary CTAs — it's bold and singular
190
+ - Use Pin Sans exclusively — one font for everything
191
+ - Apply generous border-radius: 16px for buttons/inputs, 20px+ for cards
192
+ - Keep the masonry grid dense — content density is the value
193
+ - Use warm badge backgrounds (`hsla(60,20%,98%,.5)`) for subtle warm washes
194
+ - Use `#211922` (plum black) for primary text — it's warmer than pure black
195
+
196
+ ### Don't
197
+ - Don't use cool gray neutrals — always warm/olive-toned
198
+ - Don't use pure black (`#000000`) as primary text — use plum black (`#211922`)
199
+ - Don't use pill-shaped buttons — 16px radius is rounded but not pill
200
+ - Don't add heavy shadows — Pinterest is flat by design, depth from content
201
+ - Don't use small border-radius (<12px) on cards — the generous rounding is core
202
+ - Don't introduce additional brand colors — red + warm neutrals is the complete palette
203
+ - Don't use thin font weights — Pin Sans at 400 minimum
204
+
205
+ ## 8. Responsive Behavior
206
+
207
+ ### Breakpoints
208
+ | Name | Width | Key Changes |
209
+ |------|-------|-------------|
210
+ | Mobile | <576px | Single column, compact layout |
211
+ | Mobile Large | 576–768px | 2-column pin grid |
212
+ | Tablet | 768–890px | Expanded grid |
213
+ | Desktop Small | 890–1312px | Standard masonry grid |
214
+ | Desktop | 1312–1440px | Full layout |
215
+ | Large Desktop | 1440–1680px | Expanded grid columns |
216
+ | Ultra-wide | >1680px | Maximum grid density |
217
+
218
+ ### Collapsing Strategy
219
+ - Pin grid: 5+ columns → 3 → 2 → 1
220
+ - Navigation: search bar + icons → simplified mobile nav
221
+ - Feature sections: side-by-side → stacked
222
+ - Hero: 70px → scales down proportionally
223
+ - Footer: dark multi-column → stacked
224
+
225
+ ## 9. Agent Prompt Guide
226
+
227
+ ### Quick Color Reference
228
+ - Brand: Pinterest Red (`#e60023`)
229
+ - Background: White (`#ffffff`)
230
+ - Text: Plum Black (`#211922`)
231
+ - Secondary text: Olive Gray (`#62625b`)
232
+ - Button surface: Sand Gray (`#e5e5e0`)
233
+ - Border: Warm Silver (`#91918c`)
234
+ - Focus: Focus Blue (`#435ee5`)
235
+
236
+ ### Example Component Prompts
237
+ - "Create a hero: white background. Headline at 70px Pin Sans weight 600, plum black (#211922). Red CTA button (#e60023, 16px radius, 6px 14px padding). Secondary sand button (#e5e5e0, 16px radius)."
238
+ - "Design a pin card: white background, 16px radius, no shadow. Photography fills top, 16px Pin Sans weight 400 description below in #62625b."
239
+ - "Build a circular action button: #e0e0d9 background, 50% radius, #211922 icon."
240
+ - "Create an input field: white background, 1px solid #91918c, 16px radius, 11px 15px padding. Focus: blue outline via semantic tokens."
241
+ - "Design the dark footer: #33332e background. Pinterest script logo in white. 12px Pin Sans links in #91918c."
242
+
243
+ ### Iteration Guide
244
+ 1. Warm neutrals everywhere — olive/sand grays, never cool steel
245
+ 2. Pinterest Red for CTAs only — bold and singular
246
+ 3. 16px radius on buttons/inputs, 20px+ on cards — generous but not pill
247
+ 4. Pin Sans is the only font — compact at 12px for UI, 70px for display
248
+ 5. Photography carries the design — the UI stays warm and minimal
249
+ 6. Plum black (#211922) for text — warmer than pure black
250
+
251
+ ## 10. Voice & Tone
252
+
253
+ Pinterest's voice is **inspirational-warm and visual-first.** Marketing copy avoids tech jargon — speaks to creative life moments (weddings, recipes, home decor, fashion). UI chrome stays minimal because the photography carries the brand. Plum black `#211922` for text — slightly warmer than pure black, matching the warm-photography aesthetic.
254
+
255
+ | Context | Tone |
256
+ |---|---|
257
+ | CTA | Inspirational verb. "Get started", "Save", "Pin it" |
258
+ | Marketing | Lifestyle moments. "Get inspired" recurring |
259
+ | Documentation | Sparse — Pinterest is consumer-product, devs use API docs |
260
+ | Error | Quiet. "Couldn't load — try again" |
261
+
262
+ **Voice samples**
263
+ - Marketing pattern: *"Get inspired"* / *"Find ideas you'll love"* <!-- illustrative: tagline patterns -->
264
+
265
+ **Forbidden phrases.** "Revolutionary discovery". Aggressive ad-platform framing in consumer surfaces.
266
+
267
+ ## 11. Brand Narrative
268
+
269
+ Pinterest was founded **2010** in Palo Alto by **Ben Silbermann (CEO, born July 14 1982 in Des Moines, Iowa)**, **Paul Sciarra**, and **Evan Sharp** ([Pinterest — Wikipedia](https://en.wikipedia.org/wiki/Pinterest), [Evan Sharp — Wikipedia](https://en.wikipedia.org/wiki/Evan_Sharp)). Pinterest emerged from an earlier Silbermann + Sciarra app called **Tote** (a virtual paper-catalog replacement); Silbermann pivoted into a visual board-collection product. **Development began December 2009**; **closed-beta prototype launched March 2010**. **Paul Sciarra left April 2012**. Visual discovery platform — users save ("pin") images to themed boards. **NYSE IPO April 18 2019** under ticker **PINS**. **June 2022 leadership transition**: Silbermann became **Executive Chairman** and **Bill Ready** (former President of Commerce + Payments at **Google**, ex-COO at **PayPal**) became CEO. The brand has stayed remarkably consistent across the leadership change: warm cream canvas, plum-black text, image-grid as primary chrome, red-pill CTA.
270
+
271
+ ## 12. Principles
272
+
273
+ 1. **Photography is the design.** *UI implication:* chrome stays minimal so pins read.
274
+ 2. **Plum black `#211922` over pure black.** *UI implication:* warmer text inherits warmth from photography.
275
+ 3. **Red `#e60023` pill is THE CTA.** *UI implication:* primary actions always red pill.
276
+ 4. **Masonry grid is the layout.** *UI implication:* preserve variable-height tile grid.
277
+ 5. **No corporate polish.** *UI implication:* keep the warm-handmade-collection aesthetic.
278
+
279
+ ## 13. Personas
280
+
281
+ *Personas are fictional archetypes informed by Pinterest user segments (creative planners, home/recipe enthusiasts, ecommerce sellers), not individual people.*
282
+
283
+ **Sofia Park, 31, Seoul.** Wedding planner. Boards organized by season + venue. Treats Pinterest as professional moodboard.
284
+
285
+ **Marcus Chen, 38, San Francisco.** Home renovation enthusiast. Multi-board project planning.
286
+
287
+ **Yuki Tanaka, 27, Tokyo.** Indie ecommerce seller using Pinterest Ads for product discovery.
288
+
289
+ ## 14. States
290
+
291
+ | State | Treatment |
292
+ |---|---|
293
+ | **Empty (no pins)** | "Save pins to see them here" + recommended pin grid |
294
+ | **Empty (search)** | "No results for `<query>`. Try different keywords." |
295
+ | **Loading (feed)** | Masonry skeleton with cream-warm rectangles |
296
+ | **Loading (image)** | Dominant-color placeholder before image loads |
297
+ | **Error (image)** | Plum-black "Couldn't load" with retry icon |
298
+ | **Error (board)** | Inline "Refresh" link |
299
+ | **Success (saved)** | Red `#e60023` heart fills + toast "Saved to <board>" |
300
+ | **Success (followed)** | Subtle confirmation, no celebration |
301
+ | **Skeleton (board)** | Image-aspect-ratio placeholders |
302
+ | **Disabled (private)** | "This board is private" message |
303
+ | **Loading (image upload)** | Per-image progress bar |
304
+
305
+ ## 15. Motion & Easing
306
+
307
+ | Token | Value | Use |
308
+ |---|---|---|
309
+ | `motion-instant` | 0ms | Pin save |
310
+ | `motion-fast` | 200ms | Hover scale on tiles |
311
+ | `motion-standard` | 300ms | Modal expand |
312
+ | `motion-spring` | variable | Pin save heart fill |
313
+
314
+ **Pin save** has signature spring scale + heart fill. `prefers-reduced-motion: reduce` removes spring (instant fill).
315
+
316
+ ---
317
+
318
+ **Verified:** 2026-05-08 (omd:migrate run 45 — Apple-tier)
319
+ **Tier 1 sources:** kr.pinterest.com home + business.pinterest.com/ko (live DOM via playwright — **Two-system dual-canvas split**: consumer Pinterest Red `#e60023` 16px Login + Cream `#e5e5e0` Secondary + Plum-Black `#211922` ghost nav (12px·400 / 48px); business Charcoal `#111111` dual-radius (20px compact 36px / 30px hero 60px) / 16px·400 — separate B2B track).
320
+ **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
321
+ **Tier 2 (Philosophy/founders/IPO):** Wikipedia (Pinterest + Evan Sharp), Founders Era, Inc 30 Under 30, EBSCO, Buildd, Companies History.
322
+ **Style ref:** `notion`. **Conflicts unresolved:** none. **Earlier addition:** Pinterest Red `#e60023` + Cream `#e5e5e0` + Pinterest Business Charcoal dual-radius system missed by prior pass (which had only ghost nav + Plum text).