oh-my-design-cli 1.8.0 → 1.8.1

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.
@@ -0,0 +1,497 @@
1
+ ---
2
+ id: teamblind
3
+ name: Blind
4
+ display_name_kr: 블라인드
5
+ country: KR
6
+ category: consumer-tech
7
+ homepage: "https://www.teamblind.com/kr"
8
+ primary_color: "#da3238"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://www.google.com/s2/favicons?domain=teamblind.com&sz=128"
12
+ verified: "2026-06-10"
13
+ added: "2026-06-10"
14
+ omd: "0.1"
15
+ tokens:
16
+ source: live-extract
17
+ extracted: "2026-06-10"
18
+ note: "Two live reds across surfaces: EN sign-up CTA #da3238 (canonical brand red) vs KR login CTA #fb5957 (lighter coral). KR surface is white-canvas list UI; EN surface is a #f9f9fb-canvas card feed. Both run Pretendard."
19
+ colors:
20
+ primary: "#da3238"
21
+ primary-coral: "#fb5957"
22
+ accent-up: "#ff4848"
23
+ ink: "#222222"
24
+ ink-deep: "#18202a"
25
+ body-en: "#42424b"
26
+ muted-nav: "#5f6b7c"
27
+ muted-meta: "#94969b"
28
+ muted-en: "#989a9e"
29
+ secondary-en: "#65696c"
30
+ rank-bg: "#e6e8ef"
31
+ rank-fg: "#939dac"
32
+ canvas: "#ffffff"
33
+ canvas-en: "#f9f9fb"
34
+ surface: "#eff0f4"
35
+ surface-soft: "#f6f7fa"
36
+ surface-chip: "#f2f2f3"
37
+ hairline: "#d7d7d7"
38
+ hairline-en: "#e9ebee"
39
+ hairline-input: "#d4d4d4"
40
+ on-primary: "#ffffff"
41
+ typography:
42
+ family: { sans: "Pretendard" }
43
+ nav-kr: { size: 16, weight: 600, use: "KR global nav (홈/채널/기업 리뷰)" }
44
+ section: { size: 18, weight: 600, lineHeight: 2.39, use: "KR section headings (토픽 베스트)" }
45
+ hero-input: { size: 18, weight: 400, use: "KR hero search input text" }
46
+ body: { size: 14, weight: 400, lineHeight: 1.5, use: "Standard UI text, both surfaces" }
47
+ post-title: { size: 14, weight: 600, use: "Feed post titles" }
48
+ body-en: { size: 16, weight: 400, lineHeight: 1.5, use: "EN base body text" }
49
+ meta: { size: 12, weight: 400, use: "Category labels, timestamps" }
50
+ label-en: { size: 12, weight: 600, use: "EN sidebar group labels (Location, Industry)" }
51
+ badge: { size: 10, weight: 600, use: "Numeric rank chips" }
52
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, section: 48 }
53
+ rounded: { sm: 4, md: 8, lg: 12, pill: 20, hero: 30, full: 9999 }
54
+ shadow:
55
+ none: "none"
56
+ components:
57
+ button-signup: { type: button, bg: "#da3238", fg: "#ffffff", radius: "8px", padding: "0 16px", height: "40px", font: "14px / 600", use: "EN 'Sign up' — the canonical brand-red CTA" }
58
+ button-login-kr: { type: button, bg: "#fb5957", fg: "#ffffff", radius: "4px", height: "40px", border: "1px solid #fb5957", font: "14px / 600", use: "KR '로그인' CTA — lighter coral red on the KR surface" }
59
+ button-signin-ghost: { type: button, fg: "#222222", radius: "8px", padding: "0 16px", height: "40px", border: "1px solid #e9ebee", font: "14px / 600", use: "EN 'Sign in' secondary ghost button" }
60
+ input-search-en: { type: input, bg: "#eff0f4", fg: "#222222", radius: "8px", font: "14px / 400", use: "EN header search — borderless grey field" }
61
+ input-hero-kr: { type: input, bg: "#ffffff", fg: "#222222", radius: "30px", height: "60px", border: "2px solid #222222", font: "18px / 400", use: "KR hero search — bold ink-outlined pill" }
62
+ card-feed: { type: card, bg: "#ffffff", border: "1px solid #e9ebee", radius: "12px", padding: "16px", use: "EN feed/content card on the #f9f9fb canvas" }
63
+ badge-rank: { type: badge, bg: "#e6e8ef", fg: "#939dac", radius: "4px", padding: "3px", font: "10px / 600", use: "KR '토픽 베스트' numeric rank chip (1–10)" }
64
+ tab-gnb-kr: { type: tab, active: "text #18202a", fg: "#5f6b7c", font: "16px / 600", use: "KR global nav — 홈 active vs 채널/기업 리뷰 inactive" }
65
+ pill-side-nav: { type: tab, bg: "#f6f7fa", fg: "#222222", radius: "8px", padding: "8px 12px", font: "14px / 600", use: "EN sidebar selected item; inactive items #65696c on transparent" }
66
+ list-post: { type: listItem, fg: "#222222", font: "14px / 600", use: "Post-row title; 12px #94969b category label above" }
67
+ components_harvested: true
68
+ ---
69
+
70
+ # Design System Inspiration of Blind
71
+
72
+ ## 1. Visual Theme & Atmosphere
73
+
74
+ Blind (블라인드) is the anonymous workplace community where over twelve million verified professionals talk about salary, career moves, and company life — and its design reads exactly like what it is: a high-velocity text forum wearing the lightest possible chrome. The Korean surface (`teamblind.com/kr`) is a dense, white-canvas (`#ffffff`) list UI in the lineage of Korean portal communities: near-black ink text (`#222222`), thin `#d7d7d7` hairline dividers between post rows, tiny grey metadata, and almost no decoration. Nothing competes with the posts themselves, because the posts — raw, unfiltered, anonymous — are the product.
75
+
76
+ The single point of heat in this deliberately cool system is red. Blind's brand red appears in two live variants: the deeper `#da3238` on the global English surface's "Sign up" button, and a lighter coral `#fb5957` on the Korean 로그인 button. Red carries an unusually heavy semantic load for a community product — it is simultaneously the brand mark, the only CTA color, and an echo of the "blind item" tabloid red that suits a platform built on anonymous disclosure. Everything else stays in a long grey ladder (`#5f6b7c` nav, `#94969b` metadata, `#939dac` rank chips), so the one red element on any screen is unambiguous.
77
+
78
+ Typographically the system is pure Pretendard at functional sizes — 16px/600 for the Korean global nav, 14px/600 for post titles, 12px for metadata — with no display typography at all on the community surfaces. The most expressive single element on the Korean homepage is the hero search field: a 60px-tall pill with a blunt 2px solid `#222222` outline and 30px radius, an ink-drawn loud-speaker of an input that says "ask anything." The newer English surface shifts the same DNA into a contemporary card feed: an off-white `#f9f9fb` canvas, white cards with 1px `#e9ebee` borders and 12px radius, 8px-radius controls, and a completely flat, shadow-free elevation model on both surfaces. Blind is what a trusted rumor mill looks like when it grows up: plain, fast, text-first, and punctuated by exactly one red button.
79
+
80
+ **Key Characteristics:**
81
+ - Text-first density — post titles at 14px/600 ink (`#222222`) with hairline (`#d7d7d7`) row dividers, no card chrome on the KR list
82
+ - One red, one job — `#da3238` / `#fb5957` reserved for the primary auth CTA; nothing else on screen is red
83
+ - Pretendard everywhere, at UI sizes only — no display typography on community surfaces
84
+ - Flat, shadow-free elevation on both KR and EN surfaces; separation by hairline and canvas tint
85
+ - Two-generation surface split: KR legacy white list UI vs EN `#f9f9fb` card feed with 12px-radius cards
86
+ - The ink-outlined hero search pill (2px `#222222`, radius 30px, 60px tall) as the KR signature element
87
+ - Long grey ladder for hierarchy: `#18202a` → `#5f6b7c` → `#94969b` → `#939dac`
88
+ - Anonymity cues in the UI: posts attributed to scrambled handles and "비공개" rather than names or faces
89
+
90
+ ## 2. Color Palette & Roles
91
+
92
+ ### Primary
93
+ - **Blind Red** (`#da3238`): The canonical brand red — EN "Sign up" CTA background, and the contact-link red on Blind's own fallback pages. The single action color of the system.
94
+ - **Coral Red** (`#fb5957`): The KR surface's 로그인 button red — a lighter, warmer variant of the brand red used as the Korean primary CTA.
95
+ - **Upvote Red** (`#ff4848`): Accent red for like/upvote counts and live signals on the EN feed.
96
+
97
+ ### Ink & Text
98
+ - **Ink** (`#222222`): Primary text everywhere — post titles, headings, nav, body on the KR surface.
99
+ - **Ink Deep** (`#18202a`): Active state of the KR global nav (홈) — a barely-darker blue-black that reads as "selected" against `#5f6b7c`.
100
+ - **Body EN** (`#42424b`): The EN surface's default body/copy grey-ink.
101
+ - **Nav Muted** (`#5f6b7c`): Inactive KR global-nav items (채널, 기업 리뷰) — a desaturated steel blue.
102
+ - **Meta Grey** (`#94969b`): KR post metadata — category labels, counts, timestamps.
103
+ - **Muted EN** (`#989a9e`): EN inactive top-nav items and sidebar group labels.
104
+ - **Secondary EN** (`#65696c`): EN sidebar links and secondary actions.
105
+ - **Rank Grey** (`#939dac`): Text inside the numeric rank chips.
106
+
107
+ ### Canvas & Surface
108
+ - **White** (`#ffffff`): The KR page canvas, cards, and input fields; text on red.
109
+ - **Canvas EN** (`#f9f9fb`): The EN feed's off-white page background that makes white cards legible without shadows.
110
+ - **Search Surface** (`#eff0f4`): EN borderless search-field fill.
111
+ - **Surface Soft** (`#f6f7fa`): EN sidebar selected-item pill background.
112
+ - **Chip Surface** (`#f2f2f3`): KR app-download circular button fill.
113
+ - **Rank Chip** (`#e6e8ef`): Background of the 토픽 베스트 numeric rank chips.
114
+
115
+ ### Hairlines & Borders
116
+ - **Hairline** (`#d7d7d7`): The KR list-row divider — the system's primary separation device.
117
+ - **Hairline EN** (`#e9ebee`): EN card and ghost-button border.
118
+ - **Input Border** (`#d4d4d4`): KR header search-pill border.
119
+ - **On Primary** (`#ffffff`): Text/icon color on red CTAs.
120
+
121
+ ## 3. Typography Rules
122
+
123
+ ### Font Family
124
+ - **Primary**: `Pretendard` — on KR with the legacy stack `AppleSDGothicNeo-Regular, "Malgun Gothic", dotum`; on EN as `pretendard, ui-sans-serif, system-ui`. One family carries both surfaces.
125
+
126
+ ### Hierarchy
127
+
128
+ | Role | Font | Size | Weight | Line Height | Notes |
129
+ |------|------|------|--------|-------------|-------|
130
+ | KR Global Nav | Pretendard | 16px | 600 | 2.0 (32px box) | 홈 / 채널 / 기업 리뷰 |
131
+ | Section Heading | Pretendard | 18px | 600 | 43px box | 토픽 베스트, channel names |
132
+ | Hero Search Input | Pretendard | 18px | 400 | — | Inside the 60px ink-outlined pill |
133
+ | EN Body | Pretendard | 16px | 400 | 24px | EN base text |
134
+ | Post Title | Pretendard | 14px | 600 | 37px row | The workhorse — feed post titles |
135
+ | UI / Buttons | Pretendard | 14px | 600 | — | CTAs, nav links, sidebar items |
136
+ | Body / Footer | Pretendard | 14px | 400 | 1.5 | Footer links, descriptions |
137
+ | Meta | Pretendard | 12px | 400 | — | Category labels, timestamps |
138
+ | EN Group Label | Pretendard | 12px | 600 | — | "Location", "Industry", "Job Function" |
139
+ | Rank Badge | Pretendard | 10px | 600 | — | Numeric chips 1–10 |
140
+
141
+ ### Principles
142
+ - **UI sizes only**: the community surfaces have no display typography — the largest live text is an 18px section heading. Scale is expressed through weight (600 vs 400) and greys, not size jumps.
143
+ - **600 is the emphasis weight**: post titles, nav, buttons, and section heads all sit at semibold; regular 400 carries metadata and body. Bold (700) is nearly absent.
144
+ - **Density over air**: 14px titles in 37px rows, 12px metadata — the KR feed is tuned to show many posts per viewport, like a stock ticker for workplace talk.
145
+ - **One family, two generations**: identical Pretendard on the legacy KR markup and the modern EN Tailwind feed keeps the brand coherent across the split.
146
+
147
+ ## 4. Component Stylings
148
+
149
+ ### Buttons
150
+
151
+ **Sign Up (EN Primary)**
152
+ - Background: `#da3238`
153
+ - Text: `#ffffff`
154
+ - Radius: 8px
155
+ - Padding: 0px 16px
156
+ - Height: 40px
157
+ - Font: 14px / 600 / Pretendard
158
+ - Use: EN header primary CTA — the one red element on the page
159
+
160
+ **로그인 (KR Primary)**
161
+ - Background: `#fb5957`
162
+ - Text: `#ffffff`
163
+ - Border: 1px solid `#fb5957`
164
+ - Radius: 4px
165
+ - Height: 40px
166
+ - Font: 14px / 600 / Pretendard
167
+ - Use: KR header login CTA — coral variant of the brand red
168
+
169
+ **Sign In (EN Ghost)**
170
+ - Background: transparent
171
+ - Text: `#222222`
172
+ - Border: 1px solid `#e9ebee`
173
+ - Radius: 8px
174
+ - Padding: 0px 16px
175
+ - Height: 40px
176
+ - Font: 14px / 600 / Pretendard
177
+ - Use: EN secondary auth action next to Sign up
178
+
179
+ **App Download Circle (KR)**
180
+ - Background: `#f2f2f3`
181
+ - Text: `#222222`
182
+ - Radius: 50%
183
+ - Height: 40px
184
+ - Use: Circular App Store / Google Play buttons in the KR header
185
+
186
+ ### Inputs & Forms
187
+
188
+ **Hero Search (KR)**
189
+ - Background: `#ffffff`
190
+ - Text: `#222222`
191
+ - Border: 2px solid `#222222`
192
+ - Radius: 30px
193
+ - Height: 60px
194
+ - Padding: 0px 10px 0px 62px
195
+ - Font: 18px / 400 / Pretendard
196
+ - Use: KR homepage hero search — placeholder "관심있는 내용을 검색해보세요!"
197
+
198
+ **Header Search (KR)**
199
+ - Background: `#ffffff`
200
+ - Text: `#222222`
201
+ - Border: 1px solid `#d4d4d4`
202
+ - Radius: 20px
203
+ - Height: 40px
204
+ - Padding: 2px 12px 0px 36px
205
+ - Font: 14px / 400 / Pretendard
206
+ - Use: Compact pill search in the KR global header
207
+
208
+ **Header Search (EN)**
209
+ - Background: `#eff0f4`
210
+ - Text: `#222222`
211
+ - Radius: 8px
212
+ - Font: 14px / 400 / Pretendard
213
+ - Use: EN borderless grey search field (radius on the wrapping container)
214
+
215
+ ### Cards & Containers
216
+
217
+ **Feed Card (EN)**
218
+ - Background: `#ffffff`
219
+ - Border: 1px solid `#e9ebee`
220
+ - Radius: 12px
221
+ - Padding: 16px
222
+ - Use: Content/feed card sitting on the `#f9f9fb` canvas — no shadow
223
+
224
+ **List Section (KR)**
225
+ - Background: `#ffffff`
226
+ - Border: 1px solid `#d7d7d7` row dividers
227
+ - Use: KR post lists separate rows by hairline only; no card chrome
228
+
229
+ ### Badges
230
+
231
+ **Rank Chip**
232
+ - Background: `#e6e8ef`
233
+ - Text: `#939dac`
234
+ - Radius: 4px
235
+ - Padding: 3px
236
+ - Font: 10px / 600 / Pretendard
237
+ - Use: Numeric 1–10 chips in 토픽 베스트 rankings
238
+
239
+ ### Tabs & Navigation
240
+
241
+ **KR Global Nav**
242
+ - Text: `#5f6b7c`
243
+ - Active: `#18202a` text
244
+ - Font: 16px / 600 / Pretendard
245
+ - Use: 홈 / 채널 / 기업 리뷰 top navigation
246
+
247
+ **EN Top Nav**
248
+ - Text: `#989a9e`
249
+ - Active: `#222222` text
250
+ - Font: 14px / 600 / Pretendard
251
+ - Use: Community / Salaries / Reviews / Layoffs / Jobs
252
+
253
+ **EN Sidebar Pill**
254
+ - Background: `#f6f7fa`
255
+ - Text: `#222222`
256
+ - Radius: 8px
257
+ - Padding: 8px 12px
258
+ - Font: 14px / 600 / Pretendard
259
+ - Use: Selected sidebar item (Feed); inactive items `#65696c` on transparent
260
+
261
+ ### List Items
262
+
263
+ **Post Row**
264
+ - Text: `#222222`
265
+ - Font: 14px / 600 / Pretendard
266
+ - Padding: 8px 0px
267
+ - Use: Feed post title; 12px `#94969b` category label above; like/comment counts in meta grey
268
+
269
+ ---
270
+ **Verified:** 2026-06-10
271
+ **Tier 1 sources:** https://www.teamblind.com/kr, https://www.teamblind.com, https://recruit.teamblind.com
272
+ **Tier 2 sources:** none available (getdesign.md/teamblind and getdesign.md/blind both 404; styles.refero.design ?q=blind returns no Blind entry)
273
+ **Conflicts unresolved:** none
274
+
275
+ ## 5. Layout Principles
276
+
277
+ ### Spacing System
278
+ - Base unit: 4px
279
+ - Scale: 4px, 8px, 12px, 16px, 24px, 32px, 48px
280
+ - Notable: row padding on post lists is a tight 8px vertical — density is a feature
281
+
282
+ ### Grid & Container
283
+ - KR homepage: centered content column with a multi-column "topic board" grid of post lists, each section headed by an 18px/600 title
284
+ - EN feed: classic three-zone community layout — left sidebar (filters/channels as 8px-radius pills), center feed of 12px-radius cards, right rail
285
+ - Header is a persistent white bar: logo left, search center/right, single red CTA at the far right on both surfaces
286
+
287
+ ### Whitespace Philosophy
288
+ - **Density first**: Blind optimizes posts-per-viewport. Whitespace exists to keep rows scannable, never to dramatize.
289
+ - **Hairline segmentation**: `#d7d7d7` (KR) and `#e9ebee` (EN) lines do the structural work that other systems give to shadows and cards.
290
+ - **Tinted canvas on EN**: the `#f9f9fb` page color lets borderless white cards read as surfaces without any elevation.
291
+
292
+ ### Border Radius Scale
293
+ - Small (4px): KR buttons, rank chips
294
+ - Medium (8px): EN buttons, search fields, sidebar pills
295
+ - Large (12px): EN feed cards
296
+ - Pill (20px): KR header search
297
+ - Hero (30px): KR hero search pill
298
+ - Full (50% / 9999px): avatars, circular app buttons
299
+
300
+ ## 6. Depth & Elevation
301
+
302
+ | Level | Treatment | Use |
303
+ |-------|-----------|-----|
304
+ | Flat (Level 0) | No shadow | Everything — both surfaces are shadow-free |
305
+ | Tint (Level 1) | `#f9f9fb` canvas vs `#ffffff` card | EN card separation |
306
+ | Hairline (Level 2) | 1px `#d7d7d7` / `#e9ebee` | Row dividers, card borders |
307
+ | Scrim | `rgba(0,0,0,0.8)` overlay | Modal/photo viewer backdrop |
308
+
309
+ **Shadow Philosophy**: Live inspection found no box-shadows in use on either the KR homepage or the EN feed. Blind's elevation model is entirely flat: tinted canvas, white surfaces, and hairlines. For a platform whose content is emotionally loud — salary reveals, layoff rumors, anonymous grievances — the chrome stays visually silent. Depth would imply editorial curation; flatness implies the feed is just the feed.
310
+
311
+ ## 7. Do's and Don'ts
312
+
313
+ ### Do
314
+ - Reserve red (`#da3238` EN / `#fb5957` KR) for exactly one CTA per screen
315
+ - Set post titles at 14px Pretendard weight 600 in ink `#222222`
316
+ - Separate list rows with 1px `#d7d7d7` hairlines instead of cards on dense KR-style lists
317
+ - Use the `#f9f9fb` canvas + white card + 1px `#e9ebee` border pattern for EN-style feeds
318
+ - Keep the system shadow-free — tint and hairline carry all depth
319
+ - Use the grey ladder (`#18202a` active → `#5f6b7c` nav → `#94969b` meta) for hierarchy
320
+ - Make search prominent — up to a 60px pill with a 2px `#222222` outline on the home surface
321
+ - Express anonymity in the UI: scrambled handles, "비공개" attribution, no profile photos
322
+
323
+ ### Don't
324
+ - Use red for anything other than the primary action — no red headings, links, or decorations
325
+ - Add drop shadows or elevated card stacks — the system is flat
326
+ - Use display-size typography on community surfaces — 18px is the ceiling
327
+ - Replace hairline-separated lists with heavy card chrome on the KR surface
328
+ - Show real names, faces, or employer-identifying avatars in feed patterns
329
+ - Introduce a second accent color — greys plus one red is the whole palette
330
+ - Use weight 700 for emphasis — 600 is the system's strong weight
331
+ - Let metadata compete with titles — counts and categories stay at 12px grey `#94969b`
332
+
333
+ ## 8. Responsive Behavior
334
+
335
+ ### Breakpoints
336
+ | Name | Width | Key Changes |
337
+ |------|-------|-------------|
338
+ | Mobile | <640px | Single-column feed; app-download banner prominent; search collapses to icon |
339
+ | Tablet | 640–1024px | Two-column topic boards on KR; EN sidebar collapses |
340
+ | Desktop | 1024px+ | Full three-zone EN layout; multi-column KR topic grid |
341
+
342
+ ### Touch Targets
343
+ - All header controls sit at 40px height (buttons, search pills, app circles)
344
+ - KR hero search at 60px is an oversized, unmissable target
345
+ - Post rows at ~37px with 8px vertical padding remain tappable despite density
346
+
347
+ ### Collapsing Strategy
348
+ - KR topic-board columns stack into a single scrolling feed on mobile
349
+ - EN left sidebar (Location/Industry/Job Function filters) folds behind "Show More" and off-canvas patterns
350
+ - The single red CTA stays in the header at every breakpoint
351
+ - Blind is mobile-app-first: web surfaces consistently promote App Store / Google Play installs
352
+
353
+ ### Image Behavior
354
+ - Post thumbnails are small and right-aligned; text always dominates the row
355
+ - Avatars are fully round (9999px) and anonymized — no real faces
356
+ - No hero imagery on community surfaces; the search pill is the hero
357
+
358
+ ## 9. Agent Prompt Guide
359
+
360
+ ### Quick Color Reference
361
+ - Primary CTA: Blind Red (`#da3238`); KR variant Coral (`#fb5957`)
362
+ - Canvas: White (`#ffffff`) on KR; Off-white (`#f9f9fb`) on EN
363
+ - Primary text: Ink (`#222222`); EN body (`#42424b`)
364
+ - Nav active: Ink Deep (`#18202a`); nav muted (`#5f6b7c`)
365
+ - Metadata: Meta Grey (`#94969b`)
366
+ - Card border: `#e9ebee`; list hairline: `#d7d7d7`
367
+ - Search fill: `#eff0f4`; selected pill: `#f6f7fa`
368
+ - Rank chip: `#e6e8ef` bg / `#939dac` text
369
+ - Upvote accent: `#ff4848`
370
+
371
+ ### Example Component Prompts
372
+ - "Create a community header: white bar, logo left, pill search input (1px solid #d4d4d4, radius 20px, 40px tall, 14px Pretendard), and one red login button (#fb5957 background, white text, radius 4px, 40px tall, 14px weight 600)."
373
+ - "Design a dense post list: each row 8px vertical padding, title 14px Pretendard weight 600 #222222, category label 12px #94969b above, like/comment counts 12px #94969b right, rows separated by 1px solid #d7d7d7. No cards, no shadows."
374
+ - "Build an EN-style feed card: #ffffff background, 1px solid #e9ebee border, radius 12px, padding 16px, on a #f9f9fb page canvas. Body text 16px Pretendard #42424b. No shadow."
375
+ - "Create a hero search: 60px-tall pill input, white background, 2px solid #222222 border, radius 30px, 18px Pretendard text, placeholder '관심있는 내용을 검색해보세요!'."
376
+ - "Design a ranking widget '토픽 베스트': heading 18px Pretendard 600 #222222; rows numbered with 20px chips (#e6e8ef background, #939dac text, radius 4px, 10px weight 600) followed by 14px weight-600 titles."
377
+
378
+ ### Iteration Guide
379
+ 1. One red per screen — `#da3238` (or `#fb5957` on KR surfaces) on the primary action only
380
+ 2. Pretendard at UI sizes; 600 for emphasis, 400 for everything else; 18px is the largest community text
381
+ 3. Flat always: tinted canvas + hairlines, never shadows
382
+ 4. KR mode = white canvas + `#d7d7d7` hairline lists; EN mode = `#f9f9fb` canvas + bordered 12px cards
383
+ 5. Hierarchy through the grey ladder, not through size
384
+ 6. Search is the hero element; auth is the only red element
385
+ 7. Anonymize everything: scrambled handles, round generic avatars, "비공개"
386
+
387
+ ---
388
+
389
+ ## 10. Voice & Tone
390
+
391
+ Blind's voice is **direct, peer-level, and unvarnished** — the platform talks like a trusted colleague, not like HR. Korean copy is functional and unceremonious ("관심있는 내용을 검색해보세요!", "기업 리뷰", "토픽 베스트"); English copy is blunt about the core promise: anonymity and honest conversation ("Stay Anonymous", "Level up your career in real-time"). The corporate voice, visible on the careers surface, frames bluntness as a value: "표현은 솔직하게, 공유는 투명하게" — honesty is the product and the register.
392
+
393
+ | Context | Tone |
394
+ |---|---|
395
+ | Service UI labels | Plain, functional Korean. "홈", "채널", "기업 리뷰", "더보기" — zero marketing inflection. |
396
+ | Search prompts | Friendly imperative. "관심있는 내용을 검색해보세요!" — the one exclamation the system allows. |
397
+ | EN marketing | Benefit-direct, anonymity-forward. "Level up your career in real-time." "Stay Anonymous." |
398
+ | Careers / corporate | Mission-framed, declarative. "블라인드, 모든 변화의 시작." |
399
+ | Trust & safety copy | Sober and procedural — 신고가이드, 개인정보 처리방침 surfaced plainly in the footer. |
400
+
401
+ **Voice samples (verbatim from live surfaces):**
402
+ - "블라인드 | 직장인 기업 연봉 & 이직 커리어" — KR page title (the value proposition as a flat list). *(verified live 2026-06-10)*
403
+ - "관심있는 내용을 검색해보세요!" — KR hero search placeholder. *(verified live 2026-06-10)*
404
+ - "블라인드, 모든 변화의 시작" — recruit.teamblind.com hero heading. *(verified live 2026-06-10)*
405
+ - "Blind - Anonymous and Professional Community" — EN page title. *(verified live 2026-06-10)*
406
+
407
+ **Forbidden register**: corporate euphemism, HR-speak, hedged "we value your feedback" tones, hype superlatives, and anything that implies the company curates or sanitizes what members say.
408
+
409
+ ## 11. Brand Narrative
410
+
411
+ Blind was launched in **2013** by Teamblind Inc., founded in Korea by former Naver employees — a team that had watched an internal anonymous board get shut down and concluded that employees having an honest channel was worth building a company around. The premise was contrarian: workplace conversation is most valuable precisely when it is *not* attributable. Blind verifies that you are a real employee of a real company (work-email verification, with patented anonymity protection between the verification and the identity), then deletes the link between who you are and what you say.
412
+
413
+ The model travelled. After dominating Korean tech and conglomerate workplaces, Blind expanded to the US in 2015 and became the de-facto town square for Silicon Valley compensation talk, layoff rumors, and company reviews. The careers page states the scale plainly: over 12 million verified professionals across hundreds of thousands of companies, more than 90% sign-up rates among Korea's 10 largest conglomerate groups, and a spot on TIME's 100 Most Influential Companies. The corporate vision — "구성원 목소리로 만드는 건강한 조직 문화" (healthy organizational culture built from members' voices) — reframes the rumor mill as infrastructure: companies get better when employees can say true things safely.
414
+
415
+ The design follows the ethics. What Blind refuses: editorial gloss, influencer mechanics, real-name social graphs, and any visual hierarchy that would imply the platform endorses one post over another. What it embraces: text-first density, a single red CTA, flat chrome, scrambled handles, and an interface that disappears behind the conversation. The product's restraint is a trust signal — a platform holding this much sensitive speech cannot afford to look like it is performing.
416
+
417
+ ## 12. Principles
418
+
419
+ 1. **Anonymity is the architecture.** The product's entire value rests on the wall between identity and speech. *UI implication:* no real names, no face avatars, "비공개" attribution, scrambled handles — anonymity cues are rendered, not just promised.
420
+ 2. **The feed is not edited.** Blind displays what members say without visual endorsement. *UI implication:* uniform post rows, identical typography for every post, ranking only by transparent counts (likes, comments, numeric rank chips).
421
+ 3. **One red, one action.** Red is too loaded to spend on decoration. *UI implication:* `#da3238`/`#fb5957` appears once per screen, always on the primary action; everything else is ink and grey.
422
+ 4. **Density equals respect.** Professionals come for information; making them scroll through air wastes their lunch break. *UI implication:* 14px titles, 8px row padding, hairline separation, many posts per viewport.
423
+ 5. **Honest by default, even about itself.** The corporate value "표현은 솔직하게, 공유는 투명하게" applies to the interface. *UI implication:* plain labels, visible report/policy links, no euphemism in empty or error states.
424
+
425
+ ## 13. Personas
426
+
427
+ *Personas below are fictional archetypes informed by publicly observable Blind user segments (verified employees discussing salary, career moves, and company culture), not individual people.*
428
+
429
+ **박지훈, 32, 판교.** A backend engineer at a major Korean tech company. Opens Blind at lunch to check his company channel and the 주식·투자 board. Posted his offer-comparison question anonymously last year and got blunt, useful answers within an hour — the kind no one would give him face-to-face. Trusts the platform because his handle is scrambled and his employer can't see who he is.
430
+
431
+ **Sarah Lin, 29, Seattle.** A product manager at a big-tech firm negotiating a promotion. Uses Blind's salary threads and company reviews to calibrate her ask. Values that comp numbers come from verified employees, not recruiters. The flat, dense feed lets her scan fifty data points in five minutes.
432
+
433
+ **김민정, 38, 서울.** An HR-adjacent team lead who reads Blind to understand what employees actually think — the unfiltered counterpart to the company's engagement surveys. Doesn't post; lurks. Appreciates that the interface never sensationalizes: a post about layoffs looks typographically identical to a post about lunch menus.
434
+
435
+ ## 14. States
436
+
437
+ | State | Treatment |
438
+ |---|---|
439
+ | **Empty (no posts in channel)** | White canvas, single ink (`#222222`) line at 14px stating the channel has no posts yet, with a plain prompt to write the first one. No illustration. |
440
+ | **Empty (search, no results)** | Meta-grey (`#94969b`) line under the search pill: no results for the query, suggest different keywords. Search field stays focused. |
441
+ | **Loading (feed)** | Flat skeleton rows at final row height — grey bars on white, hairlines kept visible. No shimmer theatrics, consistent with the shadow-free system. |
442
+ | **Loading (more posts)** | Inline spinner under the last row; existing rows never shift. |
443
+ | **Error (network)** | Plain inline message in ink with a retry action; no mascot, no apology theater. |
444
+ | **Error (verification failed)** | Field-level message stating exactly what failed in work-email verification and what to do next — precision matters most at the trust boundary. |
445
+ | **Success (post published)** | The post simply appears in the feed under the user's scrambled handle — presence in the list is the confirmation. Minor toast only if navigation occurred. |
446
+ | **Skeleton** | `#eff0f4`-tone blocks at final dimensions; titles as one 14px-height bar, meta as a shorter 12px bar. |
447
+ | **Disabled** | Controls drop to the faint grey range (`#939dac` text); the red CTA never renders in a half-red disabled state — it disappears or greys out fully. |
448
+
449
+ ## 15. Motion & Easing
450
+
451
+ **Durations**:
452
+
453
+ | Token | Value | Use |
454
+ |---|---|---|
455
+ | `motion-instant` | 0ms | Tab switches, vote count updates |
456
+ | `motion-fast` | 120ms | Hover/press feedback, pill highlights |
457
+ | `motion-standard` | 200ms | Dropdowns, sheet/modal entry, feed item insert |
458
+
459
+ **Easings**:
460
+
461
+ | Token | Curve | Use |
462
+ |---|---|---|
463
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Default two-way transitions |
464
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals, overlay close |
465
+
466
+ **Motion rules**: Blind's surfaces are functionally static — the live pages animate almost nothing, and that is the brand. New feed content appears in place without slide or bounce; the modal scrim (`rgba(0,0,0,0.8)`) fades at `motion-standard`. No spring, no overshoot, no celebratory motion: a platform carrying anonymous workplace speech signals stability and discretion, not delight. Under `prefers-reduced-motion: reduce`, the few transitions collapse to instant with no loss of function.
467
+
468
+ <!--
469
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
470
+
471
+ Tier 1 live inspect (2026-06-10) via playwright getComputedStyle:
472
+ - https://www.teamblind.com/kr — KR homepage (login CTA #fb5957, nav, hero search pill, post rows, rank chips, hairlines)
473
+ - https://www.teamblind.com — EN logged-out feed (Sign up CTA #da3238, #f9f9fb canvas, 12px cards, sidebar pills)
474
+ - https://recruit.teamblind.com — official careers page ("블라인드, 모든 변화의 시작", "블라인드의 핵심 가치")
475
+
476
+ Corporate values quoted from recruit.teamblind.com (fetched 2026-06-10):
477
+ - vision "구성원 목소리로 만드는 건강한 조직 문화"
478
+ - value "표현은 솔직하게, 공유는 투명하게"
479
+ - value "세상에 없던 플랫폼을 만들고 있습니다"
480
+ - stats: 12M+ users, 450,000+ companies, launched 2013; press items on the page:
481
+ "블라인드, 가입자 1200만 돌파…10대 그룹 가입률 90% 넘어",
482
+ "블라인드, 美 타임지 '세계에서 가장 영향력 있는 100대 기업' 선정"
483
+
484
+ EN taglines "Stay Anonymous" / "Level up your career in real-time" and "12M professionals"
485
+ from https://www.teamblind.com/about (fetched 2026-06-10).
486
+
487
+ Not independently verified this turn — widely documented public facts used:
488
+ - Teamblind Inc. founded in Korea (2013) by former Naver employees; US launch 2015;
489
+ work-email verification with patented anonymity protection.
490
+
491
+ Personas (§13) are fictional archetypes informed by publicly observable Blind user
492
+ segments. Names are illustrative; they do not refer to real people.
493
+
494
+ Interpretive claims (e.g., "flat chrome as a trust signal", "one red, one action",
495
+ "density equals respect") are editorial readings connecting Blind's observed design
496
+ to its stated values, not direct Teamblind statements.
497
+ -->