oh-my-design-cli 1.6.0 → 1.6.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.
Files changed (50) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +37 -0
  3. package/data/reference-fingerprints.json +380 -2
  4. package/dist/bin/oh-my-design.js +1 -1
  5. package/dist/{install-skills-IETT2TBJ.js → install-skills-UKEVE3KT.js} +11 -9
  6. package/dist/{install-skills-IETT2TBJ.js.map → install-skills-UKEVE3KT.js.map} +1 -1
  7. package/package.json +8 -3
  8. package/scripts/postinstall.cjs +6 -6
  9. package/web/references/91app/DESIGN.md +151 -0
  10. package/web/references/airtable/DESIGN.md +16 -2
  11. package/web/references/bithumb/DESIGN.md +170 -0
  12. package/web/references/bunjang/DESIGN.md +19 -0
  13. package/web/references/cakeresume/DESIGN.md +162 -0
  14. package/web/references/catchtable/DESIGN.md +19 -0
  15. package/web/references/classum/DESIGN.md +19 -0
  16. package/web/references/dabang/DESIGN.md +19 -0
  17. package/web/references/dji/DESIGN.md +0 -1
  18. package/web/references/fastcampus/DESIGN.md +19 -0
  19. package/web/references/flex/DESIGN.md +19 -0
  20. package/web/references/gmarket/DESIGN.md +19 -0
  21. package/web/references/gogolook/DESIGN.md +126 -0
  22. package/web/references/hahow/DESIGN.md +158 -0
  23. package/web/references/hyundaicard/DESIGN.md +172 -0
  24. package/web/references/inflearn/DESIGN.md +19 -0
  25. package/web/references/kbank/DESIGN.md +18 -0
  26. package/web/references/kdan/DESIGN.md +160 -0
  27. package/web/references/kkbox/DESIGN.md +114 -0
  28. package/web/references/kream/DESIGN.md +18 -0
  29. package/web/references/lunit/DESIGN.md +19 -0
  30. package/web/references/melon/DESIGN.md +153 -0
  31. package/web/references/nhncloud/DESIGN.md +174 -0
  32. package/web/references/oliveyoung/DESIGN.md +19 -0
  33. package/web/references/rayark/DESIGN.md +132 -0
  34. package/web/references/sendbird/DESIGN.md +285 -0
  35. package/web/references/socar/DESIGN.md +18 -0
  36. package/web/references/toss-securities/DESIGN.md +19 -0
  37. package/web/references/tving/DESIGN.md +18 -0
  38. package/web/references/upbit/DESIGN.md +19 -0
  39. package/web/references/upstage/DESIGN.md +18 -0
  40. package/web/references/velog/DESIGN.md +168 -0
  41. package/web/references/wadiz/DESIGN.md +19 -0
  42. package/web/references/webflow/DESIGN.md +16 -2
  43. package/web/references/yeogiotte/DESIGN.md +19 -0
  44. package/data/architecture-proposals/2026-05-13-thin-install-fresh-fetch.md +0 -189
  45. package/data/issues/2026-05-13-multi-surface-schema-rfc.md +0 -67
  46. package/data/reference-audits/2026-05-13-kr10.md +0 -132
  47. package/data/reference-audits/2026-05-14-kr10.md +0 -72
  48. package/data/reference-audits/2026-05-15-kr10.md +0 -124
  49. package/data/research/2026-05-18-agent-landscape.md +0 -69
  50. package/data/research/2026-05-18-kr-style-presets.md +0 -572
@@ -0,0 +1,132 @@
1
+ ---
2
+ id: "rayark"
3
+ name: "Rayark"
4
+ country: TW
5
+ category: entertainment
6
+ homepage: "https://rayark.com"
7
+ primary_color: "#5FE0EE"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=rayark.com&sz=128"
11
+ verified: "2026-06-01"
12
+ omd: "0.1"
13
+ ---
14
+ # Design System Inspiration of Rayark
15
+
16
+ ## 1. Visual Theme & Atmosphere
17
+
18
+ Rayark presents the cool, premium mood of a rhythm-game interface: a near-black canvas lit by a single shard of electric cyan. The Taipei indie studio behind Cytus, Deemo, VOEZ and the RPG Sdorica carries that gameplay aesthetic straight into its brand surface, where almost everything recedes into darkness so that one accent color can carry all the energy. White display type sits crisply on the black ground, corners stay sharp rather than soft, and the cyan reads like a neon line glowing on a dark stage. The atmosphere is restrained but charged — calm, confident, and unmistakably built by people who design for the screen. Nothing is decorative for its own sake; the contrast between deep black, bright white, and one luminous accent is the entire personality.
19
+
20
+ ## 2. Color Palette & Roles
21
+ The palette is deliberately tight: a single near-black ground, one electric-cyan accent, and white for text. This three-value discipline is what makes the cyan feel like light rather than paint.
22
+
23
+ | Role | Value | Notes |
24
+ | --- | --- | --- |
25
+ | Ground / page background | `#1A1C1D` | Near-black canvas (rgb 26,28,29); the base everything sits on |
26
+ | Accent / signature | `#5FE0EE` | Electric cyan (rgb 95,224,238); hero and accent text, primary CTA fill |
27
+ | Text on dark | `#FFFFFF` | White display and navigation type |
28
+ | Text on accent | `#000000` | Black label inside the cyan CTA for maximum contrast |
29
+
30
+ Use the cyan sparingly — as the single point of emphasis against the dark field. White carries legibility; black is the stage.
31
+
32
+ ## 3. Typography Rules
33
+ Typography is set in Noto Sans, a clean humanist sans that keeps the dark UI readable and modern.
34
+
35
+ - **Family:** Noto Sans across the interface.
36
+ - **Navigation:** 20px, weight 400 — confident but not heavy, white on the dark ground.
37
+ - **Body:** 16px for running text.
38
+ - **CTA label:** 16px, weight 700 — the bold weight gives the button its punch.
39
+
40
+ Keep the type white on the dark canvas and reserve weight (700) for the moments that must act, like the primary button.
41
+
42
+ ## 4. Component Stylings
43
+
44
+ ### Primary Button — "Play Now"
45
+
46
+ **Default**
47
+ - Background: #5FE0EE
48
+ - Text: #000000
49
+ - Border: 2px solid #FFFFFF
50
+ - Radius: 3px
51
+ - Height: 40px
52
+ - Font: 16px / 700
53
+ - Use: Primary call-to-action — the cyan CTA with sharp corners and a white outline that pops off the black ground
54
+
55
+ ### Top Navigation
56
+
57
+ **Default**
58
+ - Background: transparent
59
+ - Text: #FFFFFF
60
+ - Border: none
61
+ - Height: 70px
62
+ - Font: 20px / 400
63
+ - Use: Transparent header with white nav links floating over the dark hero
64
+
65
+ ### Page Surface
66
+
67
+ **Default**
68
+ - Background: #1A1C1D
69
+ - Text: #FFFFFF
70
+ - Border: none
71
+ - Height: full viewport
72
+ - Font: 16px / 400
73
+ - Use: The near-black canvas that grounds every screen and lets the cyan accent read as light
74
+
75
+ ## 5. Layout Principles
76
+ The layout leans on a transparent header that lets the hero artwork run edge to edge beneath it, with the navigation (70px tall) floating over the dark canvas rather than sitting in a separate bar. Content is staged against the near-black ground so that bright accents define the eye path. Keep the structure clean and full-bleed; let the darkness provide the negative space rather than crowding the frame with boxes.
77
+
78
+ ## 6. Depth & Elevation
79
+ Depth here comes from contrast, not shadow. The near-black ground (`#1A1C1D`) recedes while white text and the cyan accent advance, and the primary button earns its prominence through a bright fill plus a 2px white outline rather than a drop shadow. The transparent navigation reinforces the sense of layers — UI floating above artwork — without any heavy elevation effect. Treat luminosity as the elevation system: brighter means closer.
80
+
81
+ ## 7. Do's and Don'ts
82
+
83
+ ### Do
84
+ - Build on the near-black ground `#1A1C1D` and let it carry most of the screen.
85
+ - Reserve the cyan `#5FE0EE` as a single point of emphasis so it reads as light.
86
+ - Keep corners sharp (radius 3px on the CTA) for the game-UI edge.
87
+ - Outline the primary button with a 2px white border so it pops off the dark.
88
+
89
+ ### Don't
90
+ - Dilute the palette with extra accent colors — the power is in the single cyan.
91
+ - Soften the CTA into a pill; the sharp 3px radius is part of the character.
92
+ - Drop white text onto the cyan fill — labels on the accent are black `#000000`.
93
+ - Add heavy drop shadows; depth comes from contrast and luminosity.
94
+
95
+ ## 8. Responsive Behavior
96
+ The transparent header and full-bleed dark canvas adapt gracefully across viewports, with the 70px navigation bar anchoring the top of the screen. Maintain the dark ground and the single cyan accent at every breakpoint, and keep the CTA's height (40px) and weight (700) intact so the call-to-action stays tappable and legible on smaller screens. Let hero artwork scale behind the floating navigation rather than reflowing into separate panels.
97
+
98
+ ## 9. Agent Prompt Guide
99
+ When generating UI in Rayark's spirit: start from a near-black ground `#1A1C1D`, set type in Noto Sans (nav 20px/400, body 16px) in white `#FFFFFF`, and introduce exactly one accent — electric cyan `#5FE0EE`. Make the primary action a cyan button with black `#000000` label text, a 2px solid white border, a sharp 3px radius, and a 40px height with a 16px/700 label. Keep the header transparent at 70px so artwork runs beneath it. Favor contrast and luminosity over shadows, and keep the whole palette to three values so the cyan always reads as glowing light.
100
+
101
+ ## 10. Voice & Tone
102
+ Cool, confident, and screen-native — the tone of a studio that designs for play. The voice is economical and assured rather than chatty, matching an interface that says everything with one accent color. It carries the quiet swagger of a rhythm-game UI: precise, modern, and a little electric.
103
+
104
+ ## 11. Brand Narrative
105
+ Rayark is a Taipei indie game studio known for the rhythm games Cytus, Deemo and VOEZ and the RPG Sdorica. Its brand surface translates that catalog into a dark, premium gaming aesthetic — a near-black stage where a single shard of electric cyan does the work of a spotlight. The identity reads as the cool, neon-on-black mood of a rhythm-game screen carried into the studio's own front door.
106
+
107
+ ## 12. Principles
108
+ - **One accent, maximum charge.** A single electric cyan against black does more than a full palette ever could.
109
+ - **Darkness as the stage.** The near-black ground is the foundation that lets light read as light.
110
+ - **Sharp over soft.** Crisp corners (3px) keep the game-UI edge.
111
+ - **Contrast is the depth system.** Luminosity, not shadow, signals hierarchy.
112
+
113
+ ## 13. Personas
114
+ - **The rhythm-game player** who expects a sleek, neon-lit interface and reads the dark canvas as native territory.
115
+ - **The fan of the studio's titles** (Cytus, Deemo, VOEZ, Sdorica) arriving to learn more, who recognizes the premium, screen-first mood.
116
+
117
+ ## 14. States
118
+ - **Default CTA:** cyan `#5FE0EE` fill, black `#000000` label, 2px solid white border, 3px radius, 40px height.
119
+ - **Navigation default:** white `#FFFFFF` links at 20px/400 on a transparent 70px header.
120
+ - **Surface default:** near-black `#1A1C1D` ground with white body text.
121
+
122
+ (Hover, pressed, and focus values are not present in the verified source and are intentionally left to qualitative judgment rather than invented.)
123
+
124
+ ## 15. Motion & Easing
125
+ No motion or easing values were captured in the verified source. In keeping with the brand's character, any motion should feel as crisp and precise as the visual language — quick, clean transitions that match a rhythm-game cadence, with the cyan accent used to draw the eye rather than elaborate animation. Specific timing and easing curves are intentionally left unspecified rather than fabricated.
126
+
127
+ ---
128
+ **Verified:** 2026-06-01
129
+ **Tier 1 sources:** https://rayark.com (live DOM: body bg #1A1C1D, accent cyan #5FE0EE, transparent header, white nav 20px/400, 70px height, 'Play Now' CTA values), https://rayark.com/en/about/ (English studio identity / brand narrative), https://github.com/rayark (studio org / catalog cross-reference)
130
+ **Tier 2 sources:** getdesign.md/rayark — NOT LISTED. refero — not listed (game studio absent).
131
+ **Conflicts unresolved:** none
132
+ **Proof:** see .verification.md (## Proof block)
@@ -0,0 +1,285 @@
1
+ ---
2
+ id: "sendbird"
3
+ name: "Sendbird"
4
+ country: US
5
+ category: developer-tools
6
+ homepage: "https://sendbird.com"
7
+ primary_color: "#742DDD"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=sendbird.com&sz=128"
11
+ verified: "2026-06-01"
12
+ omd: "0.1"
13
+ ds:
14
+ name: Sendbird UIKit
15
+ url: "https://sendbird.com/docs/chat/uikit/v3/react/overview"
16
+ type: system
17
+ description: Sendbird's official chat UIKit — a documented, token-driven conversation-UI system (React, iOS, Android, React Native) with named color sets, message components, and themeable light/dark resources.
18
+ ---
19
+ # Design System Inspiration of Sendbird
20
+
21
+ ## 1. Visual Theme & Atmosphere
22
+
23
+ Sendbird is a developer-infrastructure company that wears two faces, and the gap between them is the whole story. The **product** — the Sendbird UIKit that powers chat inside thousands of apps — is a disciplined, token-driven system built on a single confident **purple** (`#742DDD`, "Sendbird purple") sitting on an eight-step neutral grayscale, with green, red and blue reserved strictly for semantic meaning. It is functional software color: a 4px corner radius everywhere, flat fills, no gradients, a palette that survives being dropped into a customer's own app without fighting it. The **marketing site** (sendbird.com), by contrast, is a near-monochrome editorial surface — pure white grounds, an oversized **serif display face** running to 72px for headlines, body text set in Helvetica Now Text, and pill-shaped black-and-white CTAs with no brand color at all. One surface is engineered to disappear into a developer's product; the other is engineered to read like a printed enterprise brochure. The through-line is restraint: a brand that earns trust by looking calm, legible, and uncluttered, letting the single purple do its work only where it carries product meaning.
24
+
25
+ ## 2. Color Palette & Roles
26
+
27
+ Sendbird's UIKit ships a fully named, five-step-per-family color set (the authoritative design-system source). The marketing site layers a separate near-grayscale identity on top.
28
+
29
+ **Primary — Sendbird purple (brand + primary actions)**
30
+ - primary-100: `#DBD1FF`
31
+ - primary-200: `#C2A9FA`
32
+ - primary-300: `#742DDD` (the main color — default fills, links, focus)
33
+ - primary-400: `#6211C8` (hover)
34
+ - primary-500: `#491389` (pressed/active)
35
+
36
+ **Secondary — green (accents, success-adjacent)**
37
+ - secondary-100: `#A8E2AB`
38
+ - secondary-200: `#69C085`
39
+ - secondary-300: `#259C72`
40
+ - secondary-400: `#027D69`
41
+ - secondary-500: `#066858`
42
+
43
+ **Error — red (destructive, validation)**
44
+ - error-100: `#FDAAAA`
45
+ - error-200: `#F66161`
46
+ - error-300: `#DE360B` (light-theme error border + danger fill)
47
+ - error-400: `#BF0711`
48
+ - error-500: `#9D091E`
49
+
50
+ **Information — `#ADC9FF`** (informational highlights, link previews)
51
+
52
+ **Background — neutral grayscale (surfaces, light → dark)**
53
+ - background-50: `#FFFFFF`
54
+ - background-100: `#EEEEEE` (incoming message bubble, subtle fills)
55
+ - background-200: `#E0E0E0` (disabled fills)
56
+ - background-300: `#BDBDBD`
57
+ - background-400: `#393939`
58
+ - background-500: `#2C2C2C`
59
+ - background-600: `#161616`
60
+ - background-700: `#000000`
61
+
62
+ **Text on light (alpha black)**
63
+ - onlight-01: `#000000` @ 87% (primary text)
64
+ - onlight-02: `#000000` @ 50% (secondary text)
65
+ - onlight-03: `#000000` @ 38% (disabled text)
66
+ - onlight-04: `#000000` @ 12% (dividers, default input border)
67
+
68
+ **Text on dark (alpha white)** mirrors the above at 87 / 50 / 38 / 12% white. **Overlay:** `#000000` @ 55% (modal scrim), `#000000` @ 32% (lighter scrim).
69
+
70
+ **Marketing surface (sendbird.com, live):** ground `#FFFFFF`, body text `#424242`, near-black display + CTA ink `#0D0D0D`, nav ink `#0E1017`, footer + chip fill `#F2F3F7`, hairline borders `#E3E5EF` and `#D1D1D1`. No purple appears in the marketing chrome — brand color is held back for the product.
71
+
72
+ ## 3. Typography Rules
73
+
74
+ - **Product (UIKit):** the system font stack via `--sendbird-font-family-default` — platform-native sans (SF Pro / Roboto / system-ui) so embedded chat matches the host app. Message text and labels sit at 14px with a clear weight ladder (400 body, 500–600 labels).
75
+ - **Marketing display:** a **serif** display face for headlines, observed at **72px / weight 500** on the hero (`#0D0D0D`). The serif is the single most distinctive type choice — it signals editorial confidence and separates Sendbird from the geometric-sans default of developer-tool marketing.
76
+ - **Marketing body + nav:** **Helvetica Now Text** — body at 18px / 400 (`#424242`), nav links at 16px / 500 (`#0E1017`), small print near 13px / 600 on pill CTAs.
77
+ - **Hierarchy:** large serif headline → Helvetica Now subhead/body → medium-weight nav and buttons. Tight, legible, generous line spacing; never more than two type families on one surface.
78
+
79
+ ## 4. Component Stylings
80
+
81
+ > Two systems documented below: the **UIKit** (product, token-driven, purple) verified from the official component source, and the **marketing chrome** (sendbird.com) verified from live computed style. Each is the source of truth for its own surface.
82
+
83
+ ### UIKit Button
84
+
85
+ **Primary — Big (default)**
86
+ - Background: `#742DDD` (primary-300)
87
+ - Text: `#FFFFFF`
88
+ - Border: none
89
+ - Radius: 4px
90
+ - Padding: 10px 16px
91
+ - Height: 40px
92
+ - Font: 14px / 600 / system default
93
+ - Hover: background `#6211C8` (primary-400)
94
+ - Pressed: background `#491389` (primary-500)
95
+ - Use: the single most prominent action in a UIKit surface (send, confirm, create channel)
96
+
97
+ **Primary — Small**
98
+ - Background: `#742DDD`
99
+ - Text: `#FFFFFF`
100
+ - Radius: 4px
101
+ - Padding: 6px 16px
102
+ - Height: 32px
103
+ - Use: inline and toolbar actions
104
+
105
+ **Secondary (ghost)**
106
+ - Background: transparent
107
+ - Text: `#742DDD`
108
+ - Border: 1px solid `#742DDD`
109
+ - Radius: 4px
110
+ - Pressed: background `#000000` @ 4% (onlight wash)
111
+ - Use: lower-emphasis alternative beside a primary button
112
+
113
+ **Danger**
114
+ - Background: `#DE360B` (error-300)
115
+ - Text: `#FFFFFF`
116
+ - Radius: 4px
117
+ - Hover: background `#BF0711` (error-400)
118
+ - Pressed: background `#9D091E` (error-500)
119
+ - Use: destructive actions (leave channel, delete message)
120
+
121
+ **Disabled**
122
+ - Background: `#E0E0E0` (background-200)
123
+ - Text: `#000000` @ 38% (onlight-03)
124
+ - Radius: 4px
125
+ - Use: any blocked action; non-interactive
126
+
127
+ ### UIKit Input / TextField
128
+
129
+ **Default**
130
+ - Background: `#FFFFFF`
131
+ - Text: `#000000` @ 87% (onlight-01)
132
+ - Border: 1px solid `#000000` @ 12% (onlight-04)
133
+ - Radius: 4px
134
+ - Padding: 7px 12px
135
+ - Font: 14px / 400
136
+
137
+ **Focus**
138
+ - Border: 1px solid `#742DDD` (primary-300)
139
+ - Shadow: 0 0 0 1px `#742DDD`
140
+
141
+ **Error**
142
+ - Border: 1px solid `#DE360B` (error-300)
143
+
144
+ ### UIKit Message Bubble
145
+
146
+ **Outgoing (mine)**
147
+ - Background: `#742DDD` (primary-300)
148
+ - Text: `#FFFFFF`
149
+ - Max-width: 400px
150
+ - Use: messages sent by the current user, right-aligned
151
+
152
+ **Incoming (other)**
153
+ - Background: `#EEEEEE` (background-100)
154
+ - Text: `#000000` @ 87% (onlight-01)
155
+ - Max-width: 400px
156
+ - Avatar: 40px (min-width, left of bubble)
157
+ - Use: messages from other participants, left-aligned
158
+
159
+ ### Marketing CTA — Dark pill (primary)
160
+
161
+ **Default**
162
+ - Background: `#0D0D0D`
163
+ - Text: `#FFFFFF`
164
+ - Border: 1px solid `#0D0D0D`
165
+ - Radius: 24px
166
+ - Padding: 12px 10px
167
+ - Height: 42px
168
+ - Font: 13px / 600 / Helvetica Now Text
169
+ - Use: highest-emphasis marketing action
170
+
171
+ ### Marketing CTA — Outline pill (secondary)
172
+
173
+ **Default**
174
+ - Background: `#FFFFFF`
175
+ - Text: `#0D0D0D`
176
+ - Border: 1px solid `#0D0D0D`
177
+ - Radius: 24px
178
+ - Padding: 12px 10px
179
+ - Height: 42px
180
+ - Font: 13px / 600
181
+ - Use: secondary marketing action paired with the dark pill
182
+
183
+ ### Marketing Utility chip
184
+
185
+ **Default**
186
+ - Background: `#F2F3F7`
187
+ - Text: `#0D0D0D`
188
+ - Border: 1px solid `#E3E5EF`
189
+ - Radius: 8px
190
+ - Padding: 8px 12px
191
+ - Height: 50px
192
+ - Font: 18px / 400 / Helvetica Now Text
193
+ - Use: neutral selector / utility control on marketing surfaces
194
+
195
+ ### Marketing Input (newsletter)
196
+
197
+ **Default**
198
+ - Background: `#FFFFFF`
199
+ - Text: `#424242`
200
+ - Border: 1px solid `#D1D1D1`
201
+ - Radius: 50px
202
+ - Padding: 6px 35px
203
+ - Font: 12.8px / 400
204
+ - Use: pill-shaped email capture in footer/forms
205
+
206
+ ## 5. Layout Principles
207
+
208
+ - **UIKit:** a vertical conversation column with a fixed channel header, a scrolling message list, and a docked composer. Message rows are avatar + bubble, bubbles capped at 400px so long text wraps rather than spanning wide screens. 4px is the universal corner unit; spacing is an 8px rhythm.
209
+ - **Marketing:** generous single-column-of-attention sections on white, oversized serif headlines anchoring each block, wide margins, and image columns doing the visual work. No dense grids — the page breathes.
210
+ - **Density:** product is information-dense but calm (chat needs scannability); marketing is deliberately sparse.
211
+
212
+ ## 6. Depth & Elevation
213
+
214
+ Sendbird is overwhelmingly **flat**. The UIKit uses fills and 1px hairlines, not shadows, to separate surfaces — incoming bubble vs. ground is a fill contrast (`#EEEEEE` on `#FFFFFF`), not a drop shadow. Elevation appears only where it carries meaning: modals/menus float above a `#000000` @ 55% overlay scrim, and the input focus ring is a 1px purple halo rather than a glow. Marketing is similarly shadowless — depth comes from whitespace and scale, not z-axis tricks.
215
+
216
+ ## 7. Do's and Don'ts
217
+
218
+ ### Do
219
+ - Use purple `#742DDD` for exactly one primary action per surface; let neutrals carry everything else.
220
+ - Keep the 4px radius on product controls and the pill (24px / 50px) radius on marketing chrome — don't mix the two languages.
221
+ - Reserve green, red, and blue for semantic roles (success-adjacent, destructive/error, informational).
222
+ - Pair the serif display headline with Helvetica Now body on marketing; never set body copy in the serif.
223
+
224
+ ### Don't
225
+ - Introduce gradients, drop shadows, or a second brand hue — the system's calm depends on restraint.
226
+ - Put brand purple into marketing chrome, or near-black pills into the product UI; the surfaces are intentionally distinct.
227
+ - Combine multiple fields on one spec line; each token gets its own value.
228
+ - Let message bubbles exceed the 400px cap or drop the 40px avatar gutter.
229
+
230
+ ## 8. Responsive Behavior
231
+
232
+ - **UIKit:** the conversation column is fluid; bubble max-width collapses from 400px to `calc(100vw - 140px)` on narrow viewports, preserving the avatar gutter and right/left alignment. Channel list and conversation become a single stacked view on mobile.
233
+ - **Marketing:** the serif hero scales down from 72px on large screens; multi-column sections reflow to a single column; pill CTAs stay full-radius and stack vertically.
234
+ - Touch targets respect the 40px (Big) / 32px (Small) button heights as comfortable minimums.
235
+
236
+ ## 9. Agent Prompt Guide
237
+
238
+ When generating a Sendbird-style interface, specify which surface you mean:
239
+ - **"Sendbird UIKit style"** → token-driven chat UI: purple `#742DDD` primary, neutral grayscale, 4px radius, flat fills, 14px system-font text, message bubbles (outgoing purple / incoming `#EEEEEE`) capped at 400px with 40px avatars, semantic green/red/blue only.
240
+ - **"Sendbird marketing style"** → near-monochrome editorial: white ground, 72px serif display headline, Helvetica Now Text body, black `#0D0D0D` and white pill CTAs (24px radius), `#F2F3F7` neutral chips, no brand color in chrome.
241
+ - Default corner radius: **4px** (product) — state "pill" explicitly for marketing CTAs.
242
+ - Keep it flat: 1px hairlines and fills, not shadows. One primary action per surface.
243
+
244
+ ## 10. Voice & Tone
245
+
246
+ Sendbird speaks like **infrastructure that respects your time**: precise, technical without jargon-for-its-own-sake, confident but never loud. Product copy (UIKit labels, empty states) is plain and instructive — "No messages yet," "Send," "Leave channel." Marketing copy is declarative and enterprise-assured — "The AI customer experience platform" — short clauses, present tense, outcomes over features. The serif display face gives the words a measured, editorial gravity; the tone is a senior engineer who has already solved your problem and is calmly telling you how.
247
+
248
+ ## 11. Brand Narrative
249
+
250
+ Founded in Korea (originally as a community for parents) and now powering in-app conversations for some of the world's largest apps, Sendbird's story is **invisible reliability at scale**. The brand's job is to be the messaging layer you never think about — which is why the product design system is built to disappear into the host app, and why the brand color is held back from marketing chrome. The single purple is a signature you only meet where it matters: the action that sends, the link that connects. Everything else — grayscale surfaces, flat fills, serif calm — communicates "we are the dependable substrate, not the spectacle."
251
+
252
+ ## 12. Principles
253
+
254
+ 1. **Color carries meaning, not decoration.** One purple for primary action; semantic green/red/blue; everything else neutral.
255
+ 2. **Flat by default.** Fills and hairlines over shadows; elevation only for true overlays.
256
+ 3. **The product disappears.** UIKit is themeable and system-font-based so it adopts the host app's identity.
257
+ 4. **Two surfaces, two languages.** Product = 4px functional; marketing = pill editorial. Never blur them.
258
+ 5. **Restraint reads as trust.** Whitespace, legibility, and a single accent over visual noise.
259
+
260
+ ## 13. Personas
261
+
262
+ - **The app developer** embedding chat — wants tokens, theming, and components that drop in without fighting their design. Lives in the UIKit docs.
263
+ - **The enterprise buyer** evaluating a CX/messaging platform — meets the serif marketing site, reads "reliable, secure, at scale," needs trust signals (certifications, G2).
264
+ - **The end user** inside a customer's app — never sees "Sendbird," only a calm, legible conversation that feels native to the app they're using.
265
+
266
+ ## 14. States
267
+
268
+ - **Default / Hover / Pressed:** buttons step purple-300 → purple-400 → purple-500 (danger steps error-300 → 400 → 500).
269
+ - **Focus:** 1px purple `#742DDD` border + 1px purple box-shadow halo on inputs.
270
+ - **Error:** input border switches to error-300 `#DE360B`; validation text in error color.
271
+ - **Disabled:** background-200 `#E0E0E0` fill with onlight-03 (38% black) text; no interaction.
272
+ - **Empty:** plain instructive copy ("No messages yet") centered in the conversation column, neutral text, no illustration noise.
273
+ - **Loading:** lightweight skeleton/spinner in neutral grays; the composer stays docked.
274
+
275
+ ## 15. Motion & Easing
276
+
277
+ Motion is **minimal and purposeful**. New messages slide/fade into the list at the bottom; the composer and channel transitions are quick (~150–200ms) ease-out movements that never block input. State changes (hover, focus, pressed) are near-instant color transitions, not animated flourishes. Overlays fade their scrim in over ~200ms. The marketing site favors restraint too — subtle reveal-on-scroll rather than parallax theatrics. The guiding rule mirrors the visual system: motion clarifies, it does not perform.
278
+
279
+ ---
280
+ **Verified:** 2026-06-01 (CREATE pilot — first ref through the proof-gated pipeline)
281
+ **Tier 1 sources:** https://sendbird.com (live DOM via playwright getComputedStyle — marketing chrome: nav `#0E1017` 16px/500, serif h1 72px/500 `#0D0D0D`, dark pill `#0D0D0D` 24px radius, neutral chip `#F2F3F7`/`#E3E5EF` 8px, pill input 50px radius), https://sendbird.com/docs/chat/uikit/v3/android-view/customizations/resource-customization/color-resources (official UIKit color tokens — primary/secondary/error/background/onlight/ondark/overlay full palette), https://github.com/sendbird/sendbird-uikit-react (official UIKit source — Button index.scss 4px radius / Big 40px / Small 32px / variant fills, Input index.scss 7px·12px / focus + error borders, MessageContent index.scss 400px max-width / 40px avatar)
282
+ **Tier 2 sources:** getdesign.md/sendbird — NOT LISTED ("No designs found"). styles.refero.design — NOT LISTED (curated taste-set; ?q= does not server-filter; B2B SDK absent). Tier 1 (official UIKit docs + source + live inspect) treated as authoritative per pipeline.
283
+ **Conflicts unresolved:** none. Note: an earlier web search reported a green primary (#259c72) — that is the UIKit **secondary** palette; the Android `colors.xml` source confirms **primary = purple #742DDD**. Resolved in favor of the official source file.
284
+ **Proof:** see `.verification.md` (`## Proof` block, ≥5 raw computed-style samples).
285
+ **Surface split:** §4 documents two parallel systems — the UIKit product DS (purple, 4px, token-driven) and the sendbird.com marketing chrome (monochrome serif editorial, pill radius). Both retained as authoritative for their surface.
@@ -383,3 +383,21 @@ plus standard FRAME-tier conventions, not published SOCAR tokens. Treat as
383
383
  inference until cross-checked against the internal SOCAR Frame 2.0 motion
384
384
  documentation.
385
385
  -->
386
+
387
+ ## 16. Do's and Don'ts
388
+
389
+ ### Do
390
+ - Set all body and heading text in cool blue-grey #354153 on pure white #ffffff, never true black, to signal a calm service rather than a bank or government form
391
+ - Reserve SOCAR Blue exclusively for the Space Frame symbol, app-store badges, and the primary booking CTA, keeping the rest of the chrome achromatic
392
+ - Keep radii on the 12 / 14 / 16px ladder — 12px for inputs and the search button, 14px for booking chips and city tiles, 16px for content cards
393
+ - Contain article cards with the single soft shadow rgba(0,0,0,0.1) 0 4px 8px and let it act as the border, rather than adding outlines
394
+ - Cap headings at the mobile-first scale (H1 26px/700, H2 22px/700, H3 16px/600) even on desktop, and separate hierarchy by size and weight, not by a darker color
395
+ - Render booking and payment confirmations as a dedicated single-column screen with one '확인' CTA, never reducing money-moving events to a toast
396
+
397
+ ### Don't
398
+ - Spread SOCAR Blue across large background areas or general chrome — it must stay achromatic so the blue does the brand-flagging where it matters
399
+ - Reuse the #b4bbcb placeholder/disabled grey for active text, since it only measures ~2.5:1 on white and fails WCAG AA
400
+ - Introduce pill (9999px) or sharp-corner (0px) primary components, or multi-layer chromatic shadow stacks — both break the single-shadow, mid-radius geometry
401
+ - Swap Pretendard for a bespoke web display face or add letter-spacing to Korean text; the type voice comes from disciplined sizing with tracking left at normal
402
+ - Revive the pre-2024 playful consumer-app vocabulary — bright accents, illustrated empty states, or character mascots — that the rebrand deliberately retired
403
+ - Write generic error copy like '검색 결과가 없습니다' or '문제가 발생했습니다', or put exclamation marks and emoji on booking, payment, or return surfaces
@@ -11,6 +11,25 @@ logo:
11
11
  slug: "https://www.google.com/s2/favicons?domain=tossinvest.com&sz=256"
12
12
  verified: "2026-05-15"
13
13
  omd: "0.1"
14
+
15
+ ## 14. Do's and Don'ts
16
+
17
+ ### Do
18
+ - Build dark-mode-first, layering surfaces from deepest #101013 to body rgb(23,23,28) to overlay #202025 for sheets
19
+ - Encode the KR-finance locale by using red #dc2e47 for positive/up ticks and blue #3182f6 for negative/down ticks via the positive/negative semantic tokens
20
+ - Create depth with translucent rgba(214,224,239,0.09) 1px borders and layered surface alpha instead of elevation
21
+ - Keep the two-tier radius scale, using 8px for cards, inputs, and buttons and 32px for pill controls like memo and filter chips
22
+ - Set type from the observed hierarchy: 24px/700 section H2, 18.72px/700 sub-section H3, 15px/500 nav links, and 16px/400 body
23
+ - Use Toss Product Sans tabular numerals so price ticks, order-book columns, and percent changes align by column
24
+
25
+ ### Don't
26
+ - Copy positive=red / negative=blue into non-KR/JP/TW locales without inverting positive-* to green and negative-* to red
27
+ - Assume Toss Blue #3182f6 always means brand CTA, since on this surface it is also the down-tick fill and only context disambiguates
28
+ - Introduce box-shadow as elevation language; this system deliberately uses translucent borders plus layered surface alphas
29
+ - Add a third radius tier beyond the deliberate two-tier 8px / 32px scale
30
+ - Introduce a display-only accent typeface; restraint is the rule and there is no decorative accent face
31
+ - Decorate data surfaces with illustration; the price chart itself is the imagery
32
+
14
33
  ---
15
34
 
16
35
  # Design System Inspiration of Toss Securities (토스증권)
@@ -257,3 +257,21 @@ Consistent with the systemic Korean-coverage gap.
257
257
  ---
258
258
 
259
259
  *Captured via `omd:add-reference` (CREATE mode) on 2026-05-15. See `assets/_reference/` for tokens.json, structure.json, fonts.json, .live-inspect-proof.json, screenshots/, LICENSE-NOTE.md, attribution.md.*
260
+
261
+ ## 16. Do's and Don'ts
262
+
263
+ ### Do
264
+ - Lock the canvas to pure black (#000000) at the document root and build depth through surface contrast (#000 → #2E2E2E → rgba(15,15,15,0.74)) since box-shadow renders 0 0 #0000 across all product chrome
265
+ - Reserve the brand red #FF153C strictly for CTAs, brand marks, and live-status accents — keeping it to a handful of background nodes the way the doc samples only twelve red backgrounds across 3,000 nodes
266
+ - Drive content-area-aware chrome from the six --color-cate-* tokens (home #FF1F45, live #FF584A, clip #FD8163, VOD #387DFF, movie #7D57FC, ad #FCC800) so color carries product taxonomy
267
+ - Apply the top-corners-only radius (16.5292px 16.5292px 0 0) to poster cards so the image bleeds flush to the bottom metadata edge
268
+ - Set Pretendard as the exclusive typeface and hold weights to the binary 400 body / 700 heading-and-CTA scale, with no 500/600 intermediates
269
+ - Build primary CTAs as #FF153C background, #FFFFFF label, Pretendard 18.6px/700 with generous 19.6292px 62px padding so 4-syllable Korean labels never wrap
270
+
271
+ ### Don't
272
+ - Spread #FF153C across large background areas or decorative fills — it is a CTA, brand-mark, and live-status accent only, never an ambient surface color
273
+ - Apply the locked dark canvas to non-video products, since #000 earns its energy from poster art and video frames a SaaS dashboard or marketplace cannot supply
274
+ - Adopt the six --color-cate-* taxonomy hues for a product with fewer than six genuine content surface paradigms, which only produces visual noise
275
+ - Reproduce #FF153C verbatim as it is a CJ ENM brand color — shift it within the #E0142E–#FF2A4D range with WCAG contrast checks on dark surface if you want a TVING-like scarlet
276
+ - Substitute a system font for Pretendard, whose optical sizing differs meaningfully from Apple SD Gothic Neo at the 12–18px display range
277
+ - Apply the top-corners-only radius to text cards or import the live geometry tokens (e.g. --kbo-player-width: calc(100vw - 31.25rem)) as-is, since both are calibrated to TVING's poster bleed and specific sidebar
@@ -271,6 +271,25 @@ The "why now" thesis encoded in the surface: in a market famous for speculative
271
271
  3. Modal enter from `translateY(8px) opacity:0` → identity over 200ms ease-out. Exit reverses, 250ms.
272
272
  4. Row-print blink: tint fades in 150ms then holds for 800ms before easing out 400ms. The 800ms hold is what makes a moving market legible.
273
273
 
274
+
275
+ ## 16. Do's and Don'ts
276
+
277
+ ### Do
278
+ - Lead with tables, not cards — make the data the hero and the chrome the frame, with row heights of 45px on tradable lists and 30px on column headers
279
+ - Encode direction in the Korean convention: red `#DD3C44` for 상승 (up) and blue `#1375EC` for 하락 (down), and invert to green-up/red-down only when porting to US/EU markets
280
+ - Communicate row direction with an 8% alpha tint (`rgba(221,60,68,0.08)` rise / `rgba(19,117,236,0.08)` fall) so the hue supports rather than overpowers the numeral
281
+ - Keep buttons flat and tight — 4px radius, no border, white text, scaling the blue by stakes: `#0062DF` for nav CTAs, `#003597` for the 44px hero CTA
282
+ - Label CTAs as nouns or noun-phrases (로그인, 회원가입, 거래소 둘러보기, 직접입력) and split sentence-final forms by surface — `~합니다` on notices, `~해요` on product modules
283
+ - Hold motion to the duration scale (100ms hover / 150ms row blink / 200ms nav / 250ms modal out) and animate only a price cell's background tint, never its typography
284
+
285
+ ### Don't
286
+ - Wrap a price or numeral in a decorative card container — table primitives outrank card primitives on trading surfaces
287
+ - Spread the accent blues (`#1375EC` / `#003597`) across large background areas; the page stays light on `#E9ECF1` with white panels and color used structurally
288
+ - Add page transitions, parallax, scroll-jacking, or spring easing — the exchange surface is already in constant micro-motion from updating numbers
289
+ - Sell with imperatives or exclamation (지금 시작하세요!, 쉽고 빠르게!) or lead with brand voice on a trading screen; keep persuasive copy to marketing surfaces only
290
+ - Use emoji, exclamation marks, or a startup-slang tone on price surfaces — the register stays composed and procedural
291
+ - Treat English as a translation layer — ship the Korean stack first with EN as a sibling KO/EN segment, and don't prune the Korean fallback chain to legacy families like Dotum / 돋움
292
+
274
293
  ---
275
294
 
276
295
  **OmD provenance:** Created 2026-05-14 via `omd:add-reference` CREATE pipeline. Tier 1 = live CDP inspect (2 surfaces, 121 raw samples). Tier 2 = both indexes attempted, both empty (documented). Tier 1 official DS = negative (documented). IP guardrails: brand assets reference-only; voice fresh characterization; no verbatim taglines. See `_research.md` for full source map.
@@ -212,3 +212,21 @@ These are reasoned inferences from the surface IA and proof bands, not user rese
212
212
  6. Motion tokens and component-state coverage incomplete — UPDATE pass recommended on a product detail page (e.g. `/products/solar-pro-3`) and Documentation surface.
213
213
 
214
214
  **IP guardrails confirmed**: brand assets reference-only (logos / Espeak face not redistributed); no verbatim Upstage marketing copy quoted; §10 voice samples are fresh OmD-derived shape-only alternatives; KR business-information block reproduced as factual disclosure, not promotion.
215
+
216
+ ## 16. Do's and Don'ts
217
+
218
+ ### Do
219
+ - Reserve interactive violet #5B52FF as the only chromatic gesture that does work — links, CTAs, and secondary-button text, the way it appears across its 55 sampled occurrences
220
+ - Anchor the brand on the plum canvas #3C043B (the '--colors--grey-background' hero) paired with violet primary, staying on the violet-plum axis instead of any cobalt default
221
+ - Build vertical rhythm from surface-color flips band to band (plum hero to white product band to dark industry grid to near-black footer #191722), not from drop shadows or a numeric spacing ladder
222
+ - Keep type to the three-family, three-job system: Geist for ~93% of body and headings, Espeak only on the hero H1 at 57.6px/600, and a monospace mid-sentence swap for the rotating industry word
223
+ - Encode the binary radius literally — 0px for sections, cards, hero, and footer; 8px ('--style--radius-8px') only for pressable controls and content chips
224
+ - Set body copy in Geist gray #70757F (the dominant 428-element text color) at 18px/400, the way most paragraph text ships
225
+
226
+ ### Don't
227
+ - Spread the Solar yellow-green #D2FF95 broadly — keep it as a single-use accent adjacent to the Solar product narrative, never a default button surface or section background
228
+ - Introduce a fourth type family beyond Geist, Espeak, and the monospace swap, which would break the rotating-word gesture
229
+ - Soften the binary geometry with 4px, 12px, or 16px middle radii, which erases the layout-versus-pressable distinction
230
+ - Import drop-shadow card chrome like 'box-shadow: 0 8px 24px rgba(0,0,0,0.08)' — Upstage ships effectively zero elevation and builds depth from surface contrast and #EEEEEE hairlines
231
+ - Default to a corporate blue primary, the enterprise-AI cliche Upstage consciously avoids in favor of the violet-plum axis
232
+ - Center-align the hero or signal the rotating industry word with color or weight — keep it left-aligned with the typographic monospace shift as the variable-slot cue