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.
- package/README.md +110 -0
- package/bin/cdragon.js +170 -0
- package/package.json +31 -0
- package/skills/agent-browser/SKILL.md +50 -0
- package/skills/grill-me/SKILL.md +7 -0
- package/skills/herdr-agent/SKILL.md +142 -0
- package/skills/herdr-cli/SKILL.md +388 -0
- package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
- package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
- package/skills/notion-presentation/SKILL.md +170 -0
- package/skills/notion-presentation/references/example-redis-deck.md +97 -0
- package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
- package/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
- package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/skills/tdd/SKILL.md +108 -0
- package/skills/tdd/mocking.md +59 -0
- package/skills/tdd/refactoring.md +10 -0
- package/skills/tdd/tests.md +61 -0
- package/skills/to-html/SKILL.md +83 -0
- package/skills/to-html/designs/INDEX.md +74 -0
- package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
- package/skills/to-html/designs/airtable.DESIGN.md +275 -0
- package/skills/to-html/designs/alipay.DESIGN.md +456 -0
- package/skills/to-html/designs/apple.DESIGN.md +566 -0
- package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
- package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
- package/skills/to-html/designs/clay.DESIGN.md +398 -0
- package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
- package/skills/to-html/designs/cohere.DESIGN.md +361 -0
- package/skills/to-html/designs/coinone.DESIGN.md +218 -0
- package/skills/to-html/designs/coupang.DESIGN.md +502 -0
- package/skills/to-html/designs/cursor.DESIGN.md +416 -0
- package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
- package/skills/to-html/designs/expo.DESIGN.md +373 -0
- package/skills/to-html/designs/figma.DESIGN.md +490 -0
- package/skills/to-html/designs/framer.DESIGN.md +393 -0
- package/skills/to-html/designs/freee.DESIGN.md +572 -0
- package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
- package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
- package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
- package/skills/to-html/designs/hahow.DESIGN.md +158 -0
- package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
- package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
- package/skills/to-html/designs/ibm.DESIGN.md +420 -0
- package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
- package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
- package/skills/to-html/designs/karrot.DESIGN.md +445 -0
- package/skills/to-html/designs/kdan.DESIGN.md +160 -0
- package/skills/to-html/designs/krds.DESIGN.md +997 -0
- package/skills/to-html/designs/line.DESIGN.md +431 -0
- package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
- package/skills/to-html/designs/miro.DESIGN.md +272 -0
- package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
- package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
- package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
- package/skills/to-html/designs/naver.DESIGN.md +533 -0
- package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
- package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
- package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
- package/skills/to-html/designs/posthog.DESIGN.md +430 -0
- package/skills/to-html/designs/raycast.DESIGN.md +422 -0
- package/skills/to-html/designs/remember.DESIGN.md +460 -0
- package/skills/to-html/designs/resend.DESIGN.md +396 -0
- package/skills/to-html/designs/sanity.DESIGN.md +449 -0
- package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
- package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
- package/skills/to-html/designs/socar.DESIGN.md +403 -0
- package/skills/to-html/designs/spotify.DESIGN.md +265 -0
- package/skills/to-html/designs/supabase.DESIGN.md +348 -0
- package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
- package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
- package/skills/to-html/designs/toss.DESIGN.md +655 -0
- package/skills/to-html/designs/uber.DESIGN.md +387 -0
- package/skills/to-html/designs/upstage.DESIGN.md +232 -0
- package/skills/to-html/designs/velog.DESIGN.md +168 -0
- package/skills/to-html/designs/vercel.DESIGN.md +479 -0
- package/skills/to-html/designs/wanted.DESIGN.md +529 -0
- package/skills/to-html/designs/wise.DESIGN.md +276 -0
- package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
- package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
- package/skills/to-html/designs/zapier.DESIGN.md +433 -0
- package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
- package/skills/to-issues/SKILL.md +84 -0
- package/skills/to-prd/SKILL.md +75 -0
- package/src/colors.js +15 -0
- package/src/link.js +47 -0
- package/src/prompt.js +137 -0
- package/src/skills.js +75 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "hyundaicard"
|
|
3
|
+
name: "Hyundai Card"
|
|
4
|
+
country: KR
|
|
5
|
+
category: fintech
|
|
6
|
+
homepage: "https://www.hyundaicard.com"
|
|
7
|
+
primary_color: "#000000"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=hyundaicard.com&sz=128"
|
|
11
|
+
verified: "2026-06-01"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: Hyundai Card Design Library
|
|
15
|
+
url: "https://newsroom.hyundaicard.com/front/board/Hyundai-Card-Design-Library?country=en"
|
|
16
|
+
type: brand
|
|
17
|
+
description: Hyundai Card's official Design Library — the brand's design philosophy, the proprietary Youandi typeface, and visual identity.
|
|
18
|
+
---
|
|
19
|
+
# Design System Inspiration of Hyundai Card
|
|
20
|
+
|
|
21
|
+
## 1. Visual Theme & Atmosphere
|
|
22
|
+
|
|
23
|
+
Hyundai Card is Korea's most design-celebrated credit-card brand, and its visual identity is an exercise in disciplined restraint: monochrome premium minimalism built almost entirely from ink black (#000000) on a clean white (#FFFFFF) ground. Color is not used as decoration here — it is withheld on purpose, treated as a luxury that the brand chooses not to spend, so that the absence of color becomes the statement. The signature element is typography itself: the proprietary "Youandi" (유앤아이) typeface carries the brand's voice, making letterforms the primary expressive medium rather than imagery or palette. The atmosphere is gallery-like and editorial — generous whitespace, high contrast, and a quiet confidence that reads as understated wealth rather than loud premium cues. Surfaces are flat and unadorned, headers are transparent, and every element earns its place. The result feels less like a banking product and more like a cultural design platform, which is exactly how the DIVE surface presents the brand. This is typography-as-identity, where the discipline of black, white, and a custom face does all the work.
|
|
24
|
+
|
|
25
|
+
## 2. Color Palette & Roles
|
|
26
|
+
The palette is deliberately monochrome. The ground is white (#FFFFFF) and the ink is black (#000000), and the brand color is essentially black itself — color is the thing that is held back, which is the entire point of the identity. The only chromatic accents appear as functional category tags on the DIVE content surface, never as primary brand expression.
|
|
27
|
+
|
|
28
|
+
| Role | Value | Usage |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| Ground | #FFFFFF | Page and surface background; the dominant field |
|
|
31
|
+
| Ink | #000000 | Body text, headings, primary brand color; the monochrome anchor |
|
|
32
|
+
| Accent — red (functional) | #F36464 | Content category tag on DIVE only |
|
|
33
|
+
| Accent — green (functional) | #15A91F | Content category tag on DIVE only |
|
|
34
|
+
|
|
35
|
+
The accents are strictly utilitarian. They classify content; they do not brand. Treat #F36464 and #15A91F as labeling tools confined to tags, and keep the rest of the experience in pure black-and-white.
|
|
36
|
+
|
|
37
|
+
## 3. Typography Rules
|
|
38
|
+
Typography is the brand. The display layer uses the proprietary "Youandi" typeface (confirmed in the DOM as YouandiNewKr, with HEB / TR / HB weights) for headings and branding — it is the signature element and should be reserved for moments that carry the brand's voice. Body text is set in Noto Sans KR for legibility across Korean and Latin content. The captured body size is 13px, and the heading size is 26px at weight 600, giving a clear two-step hierarchy: a confident editorial heading over a quiet, readable body.
|
|
39
|
+
|
|
40
|
+
| Token | Value |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| Display / branding | Youandi (YouandiNewKr — HEB / TR / HB weights), proprietary |
|
|
43
|
+
| Body | Noto Sans KR |
|
|
44
|
+
| Body size | 13px |
|
|
45
|
+
| Heading | 26px / 600 |
|
|
46
|
+
|
|
47
|
+
Rule of thumb: let Youandi own the brand and headline moments; let Noto Sans KR carry running text at 13px; reserve the 26px/600 step for section-level headings.
|
|
48
|
+
|
|
49
|
+
## 4. Component Stylings
|
|
50
|
+
|
|
51
|
+
### Page Surface (DIVE)
|
|
52
|
+
|
|
53
|
+
**Default**
|
|
54
|
+
- Background: #FFFFFF
|
|
55
|
+
- Text: #000000
|
|
56
|
+
- Border: none
|
|
57
|
+
- Padding: generous whitespace (editorial)
|
|
58
|
+
- Height: full viewport
|
|
59
|
+
- Font: 13px / 400 (Noto Sans KR)
|
|
60
|
+
- Use: the base content canvas — white ground, black ink, maximal restraint
|
|
61
|
+
|
|
62
|
+
### Heading
|
|
63
|
+
|
|
64
|
+
**Section heading**
|
|
65
|
+
- Background: transparent
|
|
66
|
+
- Text: #000000
|
|
67
|
+
- Border: none
|
|
68
|
+
- Padding: editorial spacing above and below
|
|
69
|
+
- Height: auto
|
|
70
|
+
- Font: 26px / 600
|
|
71
|
+
- Use: section-level titles; pair with Youandi for true brand moments
|
|
72
|
+
|
|
73
|
+
### Button
|
|
74
|
+
|
|
75
|
+
**Primary (minimal pill)**
|
|
76
|
+
- Background: #FFFFFF
|
|
77
|
+
- Text: #000000
|
|
78
|
+
- Border: minimal outline (monochrome)
|
|
79
|
+
- Radius: 24px
|
|
80
|
+
- Padding: balanced for a 48px pill
|
|
81
|
+
- Height: 48px
|
|
82
|
+
- Font: body scale (Noto Sans KR)
|
|
83
|
+
- Use: primary action; the rounded pill is the one soft gesture in an otherwise hard, flat system
|
|
84
|
+
|
|
85
|
+
### Header
|
|
86
|
+
|
|
87
|
+
**Transparent header**
|
|
88
|
+
- Background: transparent
|
|
89
|
+
- Text: #000000
|
|
90
|
+
- Border: none
|
|
91
|
+
- Padding: edge-aligned to the content grid
|
|
92
|
+
- Height: auto
|
|
93
|
+
- Font: Noto Sans KR
|
|
94
|
+
- Use: lets the white ground read continuously from header into content; no chrome, no shadow
|
|
95
|
+
|
|
96
|
+
### Content Tag
|
|
97
|
+
|
|
98
|
+
**Category tag (red)**
|
|
99
|
+
- Background: tag fill
|
|
100
|
+
- Text: #F36464
|
|
101
|
+
- Border: none
|
|
102
|
+
- Radius: pill
|
|
103
|
+
- Padding: compact
|
|
104
|
+
- Height: compact label
|
|
105
|
+
- Font: small body scale
|
|
106
|
+
- Use: functional content classification on DIVE only — not brand color
|
|
107
|
+
|
|
108
|
+
**Category tag (green)**
|
|
109
|
+
- Background: tag fill
|
|
110
|
+
- Text: #15A91F
|
|
111
|
+
- Border: none
|
|
112
|
+
- Radius: pill
|
|
113
|
+
- Padding: compact
|
|
114
|
+
- Height: compact label
|
|
115
|
+
- Font: small body scale
|
|
116
|
+
- Use: functional content classification on DIVE only — not brand color
|
|
117
|
+
|
|
118
|
+
## 5. Layout Principles
|
|
119
|
+
The layout is editorial and gallery-like, built on generous whitespace and a continuous white ground. The transparent header dissolves into the content so the page reads as one uninterrupted surface, and the absence of borders, fills, and chrome keeps attention on type and spacing. Black ink on white field creates the contrast that structures the page; there is no competing color to organize around. Hierarchy is established through the typographic step — 26px/600 headings over 13px body — and through the rhythm of negative space rather than through dividers or boxes. The pill button at 24px radius is the single soft moment in an otherwise crisp, rectilinear field. Treat layout as composition: align to a clean grid, let whitespace breathe, and resist the urge to add color or ornament.
|
|
120
|
+
|
|
121
|
+
## 6. Depth & Elevation
|
|
122
|
+
This is a flat system. There are no documented shadows, gradients, or elevation layers — the header is transparent and surfaces sit at a single plane on the white ground. Depth, to the extent it exists, comes from contrast (black ink against white) and from spacing, not from drop shadows or stacking. Keep elements coplanar; if separation is needed, use whitespace and the typographic hierarchy rather than introducing elevation. The only curvature in the system is the 24px button radius, which softens the action without implying lift. Restraint applies to depth exactly as it applies to color.
|
|
123
|
+
|
|
124
|
+
## 7. Do's and Don'ts
|
|
125
|
+
|
|
126
|
+
### Do
|
|
127
|
+
- Keep the palette monochrome: #FFFFFF ground, #000000 ink.
|
|
128
|
+
- Treat black (#000000) as the brand color — withholding color is the point.
|
|
129
|
+
- Reserve Youandi (proprietary) for headings and branding moments.
|
|
130
|
+
- Set body in Noto Sans KR at 13px; use 26px/600 for headings.
|
|
131
|
+
- Use the 48px pill button with 24px radius as the soft action gesture.
|
|
132
|
+
- Keep the header transparent and surfaces flat.
|
|
133
|
+
|
|
134
|
+
### Don't
|
|
135
|
+
- Introduce color as a brand element — the accents #F36464 and #15A91F are for functional content tags only.
|
|
136
|
+
- Add shadows, gradients, or elevation; the system is flat.
|
|
137
|
+
- Substitute a generic display face where Youandi carries the brand voice.
|
|
138
|
+
- Crowd the layout — whitespace is structural.
|
|
139
|
+
- Box content in borders or fills; let contrast and spacing do the work.
|
|
140
|
+
|
|
141
|
+
## 8. Responsive Behavior
|
|
142
|
+
The captured surface (DIVE) is a content/culture platform whose responsive logic follows its editorial, whitespace-driven layout: the continuous white ground and transparent header scale naturally from desktop to mobile, with the typographic hierarchy (26px/600 heading over 13px body) carrying structure at every width. The 48px pill button provides a comfortable touch target on mobile. Beyond these observed values, responsive specifics were not captured (the main banking site is security-plugin-walled), so adapt qualitatively: preserve generous whitespace, keep the monochrome contrast, maintain the flat single-plane surface, and let the type hierarchy — not added chrome — communicate structure as the viewport narrows.
|
|
143
|
+
|
|
144
|
+
## 9. Agent Prompt Guide
|
|
145
|
+
When generating UI in the Hyundai Card style, instruct the agent: "Design a monochrome, editorial interface — white (#FFFFFF) ground, black (#000000) ink, and treat black as the brand color. Withhold color entirely; the absence of color is the statement. Use a proprietary-feeling display typeface (Youandi, weights HEB/TR/HB) for headings and branding, and Noto Sans KR for body at 13px, with 26px/600 section headings. Keep everything flat — no shadows, no gradients, no elevation, transparent header. The only soft gesture is a 48px pill button with 24px radius, white fill, black text. Lean on generous whitespace and high black-on-white contrast for structure. If you must classify content, you may use red #F36464 or green #15A91F as small functional tag colors only — never as brand color." Emphasize restraint above all: when in doubt, remove rather than add.
|
|
146
|
+
|
|
147
|
+
## 10. Voice & Tone
|
|
148
|
+
The voice is quietly confident and editorial — the tone of a design gallery rather than a bank. It speaks with the assurance of a brand that has nothing to prove, letting restraint imply premium. There is no shouting, no urgency, no decorative flourish; the message lands through clarity and discipline. Like the monochrome palette, the language withholds: it says only what is needed, and it trusts the audience to read the sophistication in the negative space. The tone is cultured, deliberate, and self-assured.
|
|
149
|
+
|
|
150
|
+
## 11. Brand Narrative
|
|
151
|
+
Hyundai Card built its reputation as Korea's most design-celebrated credit-card brand by treating design as the product, not the packaging. The brand's central idea is that luxury is restraint: a monochrome world of black and white, anchored by a typeface it commissioned for itself — Youandi (유앤아이) — so that even the letters belong to the brand alone. Color is the resource it refuses to spend, turning absence into a signature. The DIVE platform extends this story from finance into culture and design, presenting the same monochrome, Youandi-led identity as a creative point of view rather than a transactional one. The narrative is consistent at every touchpoint: typography-as-identity, discipline-as-luxury, and the quiet confidence of a brand that lets what it leaves out speak as loudly as what it puts in.
|
|
152
|
+
|
|
153
|
+
## 12. Principles
|
|
154
|
+
- **Withhold color.** Black (#000000) on white (#FFFFFF) is the identity; color is deliberately held back.
|
|
155
|
+
- **Typography is the brand.** Youandi (proprietary) carries the voice; let letterforms lead.
|
|
156
|
+
- **Restraint as luxury.** Remove before you add; whitespace and contrast do the structural work.
|
|
157
|
+
- **Flat and honest.** No shadows, no gradients, no chrome — a single clean plane.
|
|
158
|
+
- **One soft gesture.** The 24px-radius, 48px pill button is the system's only concession to softness.
|
|
159
|
+
- **Function over decoration.** The only accents (#F36464, #15A91F) exist to classify, never to brand.
|
|
160
|
+
|
|
161
|
+
## 13. Personas
|
|
162
|
+
- **The design-literate cardholder** — values craft and discretion over flash; reads the monochrome restraint as a marker of taste and expects the interface to feel like a curated space.
|
|
163
|
+
- **The culture seeker on DIVE** — comes for design, art, and editorial content rather than banking, and responds to the gallery-like white-ground layout and Youandi typography.
|
|
164
|
+
- **The premium minimalist** — wants the confidence of black-and-white sophistication, prefers whitespace to ornament, and trusts a brand that says less.
|
|
165
|
+
|
|
166
|
+
## 14. States
|
|
167
|
+
Observed component states are minimal by design — the system favors flat, high-contrast defaults over elaborate interactive feedback. From the captured values: the default surface is #FFFFFF ground with #000000 text; the primary button defaults to white fill, black text, 24px radius, 48px height; the header defaults to transparent. Hover, pressed, focus, disabled, and error states were not captured in the blob, so do not invent them — derive them qualitatively in keeping with the monochrome, flat philosophy (e.g., subtle black/white contrast shifts rather than colored state changes), and keep any feedback as restrained as the rest of the system. Functional content tags carry the red (#F36464) or green (#15A91F) accent to signal category, the closest thing to a "stateful" color in the system.
|
|
168
|
+
|
|
169
|
+
## 15. Motion & Easing
|
|
170
|
+
No motion or easing values were captured in the blob. In keeping with the brand's restraint, motion should be treated qualitatively: quiet, minimal, and unobtrusive — transitions that respect the gallery-like calm rather than drawing attention to themselves. The flat, monochrome system implies subtle, understated movement (gentle fades and clean transitions) over expressive or bouncy animation. Do not invent specific durations or curves; let any motion echo the same discipline as the visual identity — present only when it serves clarity, never as decoration.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
**Verified:** 2026-06-01
|
|
174
|
+
**Tier 1 sources:** https://www.hyundaicard.com (homepage / brand context — main site security-plugin-walled), https://dive.hyundaicard.com (live DOM inspect — monochrome surface, Youandi display fonts, Noto Sans KR body, button + tag values), https://newsroom.hyundaicard.com (brand-owned regional source)
|
|
175
|
+
**Tier 2 sources:** getdesign.md/hyundaicard — NOT LISTED. refero — not listed. Note: hyundaicard.com main site is security-plugin-walled; DIVE (dive.hyundaicard.com) is the accessible brand surface and carries the same Youandi/monochrome identity.
|
|
176
|
+
**Conflicts unresolved:** none
|
|
177
|
+
**Proof:** see .verification.md (## Proof block)
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ibm
|
|
3
|
+
name: IBM
|
|
4
|
+
country: US
|
|
5
|
+
category: consumer-tech
|
|
6
|
+
homepage: "https://www.ibm.com"
|
|
7
|
+
primary_color: "#0f62fe"
|
|
8
|
+
logo:
|
|
9
|
+
type: github
|
|
10
|
+
slug: IBM
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: Carbon
|
|
15
|
+
url: "https://carbondesignsystem.com"
|
|
16
|
+
type: system
|
|
17
|
+
description: IBM's open-source design system with React, Angular, Vue, and Web Components.
|
|
18
|
+
og_image: "https://carbondesignsystem.com/ogimage.png"
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Design System Inspiration of IBM
|
|
22
|
+
|
|
23
|
+
## 1. Visual Theme & Atmosphere
|
|
24
|
+
|
|
25
|
+
IBM's website is the digital embodiment of enterprise authority built on the Carbon Design System — a design language so methodically structured it reads like an engineering specification rendered as a webpage. The page operates on a stark duality: a bright white (`#ffffff`) canvas with near-black (`#161616`) text, punctuated by a single, unwavering accent — IBM Blue 60 (`#0f62fe`). This isn't playful tech-startup minimalism; it's corporate precision distilled into pixels. Every element exists within Carbon's rigid 2x grid, every color maps to a semantic token, every spacing value snaps to the 8px base unit.
|
|
26
|
+
|
|
27
|
+
The IBM Plex type family is the system's backbone. IBM Plex Sans at light weight (300) for display headlines creates an unexpectedly airy, almost delicate quality at large sizes — a deliberate counterpoint to IBM's corporate gravity. At body sizes, regular weight (400) with 0.16px letter-spacing on 14px captions introduces the meticulous micro-tracking that makes Carbon text feel engineered rather than designed. IBM Plex Mono serves code, data, and technical labels, completing the family trinity alongside the rarely-surfaced IBM Plex Serif.
|
|
28
|
+
|
|
29
|
+
What defines IBM's visual identity beyond monochrome-plus-blue is the reliance on Carbon's component token system. Every interactive state maps to a CSS custom property prefixed with `--cds-` (Carbon Design System). Buttons don't have hardcoded colors; they reference `--cds-button-primary`, `--cds-button-primary-hover`, `--cds-button-primary-active`. This tokenized architecture means the entire visual layer is a thin skin over a deeply systematic foundation — the design equivalent of a well-typed API.
|
|
30
|
+
|
|
31
|
+
**Key Characteristics:**
|
|
32
|
+
- IBM Plex Sans at weight 300 (Light) for display — corporate gravitas through typographic restraint
|
|
33
|
+
- IBM Plex Mono for code and technical content with consistent 0.16px letter-spacing at small sizes
|
|
34
|
+
- Single accent color: IBM Blue 60 (`#0f62fe`) — every interactive element, every CTA, every link
|
|
35
|
+
- Carbon token system (`--cds-*`) driving all semantic colors, enabling theme-switching at the variable level
|
|
36
|
+
- 8px spacing grid with strict adherence — no arbitrary values, everything aligns
|
|
37
|
+
- Flat, borderless cards on `#f4f4f4` Gray 10 surface — depth through background-color layering, not shadows
|
|
38
|
+
- Bottom-border inputs (not boxed) — the signature Carbon form pattern
|
|
39
|
+
- 0px border-radius on primary buttons — unapologetically rectangular, no softening
|
|
40
|
+
|
|
41
|
+
## 2. Color Palette & Roles
|
|
42
|
+
|
|
43
|
+
### Primary
|
|
44
|
+
- **IBM Blue 60** (`#0f62fe`): The singular interactive color. Primary buttons, links, focus states, active indicators. This is the only chromatic hue in the core UI palette.
|
|
45
|
+
- **White** (`#ffffff`): Page background, card surfaces, button text on blue, `--cds-background`.
|
|
46
|
+
- **Gray 100** (`#161616`): Primary text, headings, dark surface backgrounds, nav bar, footer. `--cds-text-primary`.
|
|
47
|
+
|
|
48
|
+
### Neutral Scale (Gray Family)
|
|
49
|
+
- **Gray 100** (`#161616`): Primary text, headings, dark UI chrome, footer background.
|
|
50
|
+
- **Gray 90** (`#262626`): Secondary dark surfaces, hover states on dark backgrounds.
|
|
51
|
+
- **Gray 80** (`#393939`): Tertiary dark, active states.
|
|
52
|
+
- **Gray 70** (`#525252`): Secondary text, helper text, descriptions. `--cds-text-secondary`.
|
|
53
|
+
- **Gray 60** (`#6f6f6f`): Placeholder text, disabled text.
|
|
54
|
+
- **Gray 50** (`#8d8d8d`): Disabled icons, muted labels.
|
|
55
|
+
- **Gray 30** (`#c6c6c6`): Borders, divider lines, input bottom-borders. `--cds-border-subtle`.
|
|
56
|
+
- **Gray 20** (`#e0e0e0`): Subtle borders, card outlines.
|
|
57
|
+
- **Gray 10** (`#f4f4f4`): Secondary surface background, card fills, alternating rows. `--cds-layer-01`.
|
|
58
|
+
- **Gray 10 Hover** (`#e8e8e8`): Hover state for Gray 10 surfaces.
|
|
59
|
+
|
|
60
|
+
### Interactive
|
|
61
|
+
- **Blue 60** (`#0f62fe`): Primary interactive — buttons, links, focus. `--cds-link-primary`, `--cds-button-primary`.
|
|
62
|
+
- **Blue 70** (`#0043ce`): Link hover state. `--cds-link-primary-hover`.
|
|
63
|
+
- **Blue 80** (`#002d9c`): Active/pressed state for blue elements.
|
|
64
|
+
- **Blue 10** (`#edf5ff`): Blue tint surface, selected row background.
|
|
65
|
+
- **Focus Blue** (`#0f62fe`): `--cds-focus` — 2px inset border on focused elements.
|
|
66
|
+
- **Focus Inset** (`#ffffff`): `--cds-focus-inset` — white inner ring for focus on dark backgrounds.
|
|
67
|
+
|
|
68
|
+
### Support & Status
|
|
69
|
+
- **Red 60** (`#da1e28`): Error, danger. `--cds-support-error`.
|
|
70
|
+
- **Green 50** (`#24a148`): Success. `--cds-support-success`.
|
|
71
|
+
- **Yellow 30** (`#f1c21b`): Warning. `--cds-support-warning`.
|
|
72
|
+
- **Blue 60** (`#0f62fe`): Informational. `--cds-support-info`.
|
|
73
|
+
|
|
74
|
+
### Dark Theme (Gray 100 Theme)
|
|
75
|
+
- **Background**: Gray 100 (`#161616`). `--cds-background`.
|
|
76
|
+
- **Layer 01**: Gray 90 (`#262626`). Card and container surfaces.
|
|
77
|
+
- **Layer 02**: Gray 80 (`#393939`). Elevated surfaces.
|
|
78
|
+
- **Text Primary**: Gray 10 (`#f4f4f4`). `--cds-text-primary`.
|
|
79
|
+
- **Text Secondary**: Gray 30 (`#c6c6c6`). `--cds-text-secondary`.
|
|
80
|
+
- **Border Subtle**: Gray 80 (`#393939`). `--cds-border-subtle`.
|
|
81
|
+
- **Interactive**: Blue 40 (`#78a9ff`). Links and interactive elements shift lighter for contrast.
|
|
82
|
+
|
|
83
|
+
## 3. Typography Rules
|
|
84
|
+
|
|
85
|
+
### Font Family
|
|
86
|
+
- **Primary**: `IBM Plex Sans`, with fallbacks: `Helvetica Neue, Arial, sans-serif`
|
|
87
|
+
- **Monospace**: `IBM Plex Mono`, with fallbacks: `Menlo, Courier, monospace`
|
|
88
|
+
- **Serif** (limited use): `IBM Plex Serif`, for editorial/expressive contexts
|
|
89
|
+
- **Icon Font**: `ibm_icons` — proprietary icon glyphs at 20px
|
|
90
|
+
|
|
91
|
+
### Hierarchy
|
|
92
|
+
|
|
93
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
94
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
95
|
+
| Display 01 | IBM Plex Sans | 60px (3.75rem) | 300 (Light) | 1.17 (70px) | 0 | Maximum impact, light weight for elegance |
|
|
96
|
+
| Display 02 | IBM Plex Sans | 48px (3.00rem) | 300 (Light) | 1.17 (56px) | 0 | Secondary hero, responsive fallback |
|
|
97
|
+
| Heading 01 | IBM Plex Sans | 42px (2.63rem) | 300 (Light) | 1.19 (50px) | 0 | Expressive heading |
|
|
98
|
+
| Heading 02 | IBM Plex Sans | 32px (2.00rem) | 400 (Regular) | 1.25 (40px) | 0 | Section headings |
|
|
99
|
+
| Heading 03 | IBM Plex Sans | 24px (1.50rem) | 400 (Regular) | 1.33 (32px) | 0 | Sub-section titles |
|
|
100
|
+
| Heading 04 | IBM Plex Sans | 20px (1.25rem) | 600 (Semibold) | 1.40 (28px) | 0 | Card titles, feature headers |
|
|
101
|
+
| Heading 05 | IBM Plex Sans | 20px (1.25rem) | 400 (Regular) | 1.40 (28px) | 0 | Lighter card headings |
|
|
102
|
+
| Body Long 01 | IBM Plex Sans | 16px (1.00rem) | 400 (Regular) | 1.50 (24px) | 0 | Standard reading text |
|
|
103
|
+
| Body Long 02 | IBM Plex Sans | 16px (1.00rem) | 600 (Semibold) | 1.50 (24px) | 0 | Emphasized body, labels |
|
|
104
|
+
| Body Short 01 | IBM Plex Sans | 14px (0.88rem) | 400 (Regular) | 1.29 (18px) | 0.16px | Compact body, captions |
|
|
105
|
+
| Body Short 02 | IBM Plex Sans | 14px (0.88rem) | 600 (Semibold) | 1.29 (18px) | 0.16px | Bold captions, nav items |
|
|
106
|
+
| Caption 01 | IBM Plex Sans | 12px (0.75rem) | 400 (Regular) | 1.33 (16px) | 0.32px | Metadata, timestamps |
|
|
107
|
+
| Code 01 | IBM Plex Mono | 14px (0.88rem) | 400 (Regular) | 1.43 (20px) | 0.16px | Inline code, terminal |
|
|
108
|
+
| Code 02 | IBM Plex Mono | 16px (1.00rem) | 400 (Regular) | 1.50 (24px) | 0 | Code blocks |
|
|
109
|
+
| Mono Display | IBM Plex Mono | 42px (2.63rem) | 400 (Regular) | 1.19 (50px) | 0 | Hero mono decorative |
|
|
110
|
+
|
|
111
|
+
### Principles
|
|
112
|
+
- **Light weight at display sizes**: Carbon's expressive type set uses weight 300 (Light) at 42px+. This creates a distinctive tension — the content speaks with corporate authority while the letterforms whisper with typographic lightness.
|
|
113
|
+
- **Micro-tracking at small sizes**: 0.16px letter-spacing at 14px and 0.32px at 12px. These seemingly negligible values are Carbon's secret weapon for readability at compact sizes — they open up the tight IBM Plex letterforms just enough.
|
|
114
|
+
- **Three functional weights**: 300 (display/expressive), 400 (body/reading), 600 (emphasis/UI labels). Weight 700 is intentionally absent from the production type scale.
|
|
115
|
+
- **Productive vs. Expressive**: Productive sets use tighter line-heights (1.29) for dense UI. Expressive sets breathe more (1.40-1.50) for marketing and editorial content.
|
|
116
|
+
|
|
117
|
+
## 4. Component Stylings
|
|
118
|
+
|
|
119
|
+
### Buttons
|
|
120
|
+
|
|
121
|
+
**Primary Button (Blue)**
|
|
122
|
+
- Background: `#0f62fe` (Blue 60) → `--cds-button-primary`
|
|
123
|
+
- Text: `#ffffff` (White)
|
|
124
|
+
- Padding: 14px 63px 14px 15px (asymmetric — room for trailing icon)
|
|
125
|
+
- Border: 1px solid transparent
|
|
126
|
+
- Border-radius: 0px (sharp rectangle — the Carbon signature)
|
|
127
|
+
- Height: 48px (default), 40px (compact), 64px (expressive)
|
|
128
|
+
- Hover: `#0353e9` (Blue 60 Hover) → `--cds-button-primary-hover`
|
|
129
|
+
- Active: `#002d9c` (Blue 80) → `--cds-button-primary-active`
|
|
130
|
+
- Focus: `2px solid #0f62fe` inset + `1px solid #ffffff` inner
|
|
131
|
+
|
|
132
|
+
**Secondary Button (Gray)**
|
|
133
|
+
- Background: `#393939` (Gray 80)
|
|
134
|
+
- Text: `#ffffff`
|
|
135
|
+
- Hover: `#4c4c4c` (Gray 70)
|
|
136
|
+
- Active: `#6f6f6f` (Gray 60)
|
|
137
|
+
- Same padding/radius as primary
|
|
138
|
+
|
|
139
|
+
**Tertiary Button (Ghost Blue)**
|
|
140
|
+
- Background: transparent
|
|
141
|
+
- Text: `#0f62fe` (Blue 60)
|
|
142
|
+
- Border: 1px solid `#0f62fe`
|
|
143
|
+
- Hover: `#0353e9` text + Blue 10 background tint
|
|
144
|
+
- Border-radius: 0px
|
|
145
|
+
|
|
146
|
+
**Ghost Button**
|
|
147
|
+
- Background: transparent
|
|
148
|
+
- Text: `#0f62fe` (Blue 60)
|
|
149
|
+
- Padding: 14px 16px
|
|
150
|
+
- Border: none
|
|
151
|
+
- Hover: `#e8e8e8` background tint
|
|
152
|
+
|
|
153
|
+
**Danger Button**
|
|
154
|
+
- Background: `#da1e28` (Red 60)
|
|
155
|
+
- Text: `#ffffff`
|
|
156
|
+
- Hover: `#b81921` (Red 70)
|
|
157
|
+
|
|
158
|
+
### Cards & Containers
|
|
159
|
+
- Background: `#ffffff` on white theme, `#f4f4f4` (Gray 10) for elevated cards
|
|
160
|
+
- Border: none (flat design — no border or shadow on most cards)
|
|
161
|
+
- Border-radius: 0px (matching the rectangular button aesthetic)
|
|
162
|
+
- Hover: background shifts to `#e8e8e8` (Gray 10 Hover) for clickable cards
|
|
163
|
+
- Content padding: 16px
|
|
164
|
+
- Separation: background-color layering (white → gray 10 → white) rather than shadows
|
|
165
|
+
|
|
166
|
+
### Inputs & Forms
|
|
167
|
+
- Background: `#f4f4f4` (Gray 10) — `--cds-field`
|
|
168
|
+
- Text: `#161616` (Gray 100)
|
|
169
|
+
- Padding: 0px 16px (horizontal only)
|
|
170
|
+
- Height: 40px (default), 48px (large)
|
|
171
|
+
- Border: none on sides/top — `2px solid transparent` bottom
|
|
172
|
+
- Bottom-border active: `2px solid #161616` (Gray 100)
|
|
173
|
+
- Focus: `2px solid #0f62fe` (Blue 60) bottom-border — `--cds-focus`
|
|
174
|
+
- Error: `2px solid #da1e28` (Red 60) bottom-border
|
|
175
|
+
- Label: 12px IBM Plex Sans, 0.32px letter-spacing, Gray 70
|
|
176
|
+
- Helper text: 12px, Gray 60
|
|
177
|
+
- Placeholder: Gray 60 (`#6f6f6f`)
|
|
178
|
+
- Border-radius: 0px (top) — inputs are sharp-cornered
|
|
179
|
+
|
|
180
|
+
### Navigation
|
|
181
|
+
- Background: `#161616` (Gray 100) — full-width dark masthead
|
|
182
|
+
- Height: 48px
|
|
183
|
+
- Logo: IBM 8-bar logo, white on dark, left-aligned
|
|
184
|
+
- Links: 14px IBM Plex Sans, weight 400, `#c6c6c6` (Gray 30) default
|
|
185
|
+
- Link hover: `#ffffff` text
|
|
186
|
+
- Active link: `#ffffff` with bottom-border indicator
|
|
187
|
+
- Platform switcher: left-aligned horizontal tabs
|
|
188
|
+
- Search: icon-triggered slide-out search field
|
|
189
|
+
- Mobile: hamburger with left-sliding panel
|
|
190
|
+
|
|
191
|
+
### Links
|
|
192
|
+
- Default: `#0f62fe` (Blue 60) with no underline
|
|
193
|
+
- Hover: `#0043ce` (Blue 70) with underline
|
|
194
|
+
- Visited: remains Blue 60 (no visited state change)
|
|
195
|
+
- Inline links: underlined by default in body copy
|
|
196
|
+
|
|
197
|
+
### Distinctive Components
|
|
198
|
+
|
|
199
|
+
**Content Block (Hero/Feature)**
|
|
200
|
+
- Full-width alternating white/gray-10 background bands
|
|
201
|
+
- Headline left-aligned with 60px or 48px display type
|
|
202
|
+
- CTA as blue primary button with arrow icon
|
|
203
|
+
- Image/illustration right-aligned or below on mobile
|
|
204
|
+
|
|
205
|
+
**Tile (Clickable Card)**
|
|
206
|
+
- Background: `#f4f4f4` or `#ffffff`
|
|
207
|
+
- Full-width bottom-border or background-shift hover
|
|
208
|
+
- Arrow icon bottom-right on hover
|
|
209
|
+
- No shadow — flatness is the identity
|
|
210
|
+
|
|
211
|
+
**Tag / Label**
|
|
212
|
+
- Background: contextual color at 10% opacity (e.g., Blue 10, Red 10)
|
|
213
|
+
- Text: corresponding 60-grade color
|
|
214
|
+
- Padding: 4px 8px
|
|
215
|
+
- Border-radius: 24px (pill — exception to the 0px rule)
|
|
216
|
+
- Font: 12px weight 400
|
|
217
|
+
|
|
218
|
+
**Notification Banner**
|
|
219
|
+
- Full-width bar, typically Blue 60 or Gray 100 background
|
|
220
|
+
- White text, 14px
|
|
221
|
+
- Close/dismiss icon right-aligned
|
|
222
|
+
|
|
223
|
+
## 5. Layout Principles
|
|
224
|
+
|
|
225
|
+
### Spacing System
|
|
226
|
+
- Base unit: 8px (Carbon 2x grid)
|
|
227
|
+
- Component spacing scale: 2px, 4px, 8px, 12px, 16px, 24px, 32px, 40px, 48px
|
|
228
|
+
- Layout spacing scale: 16px, 24px, 32px, 48px, 64px, 80px, 96px, 160px
|
|
229
|
+
- Mini unit: 8px (smallest usable spacing)
|
|
230
|
+
- Padding within components: typically 16px
|
|
231
|
+
- Gap between cards/tiles: 1px (hairline) or 16px (standard)
|
|
232
|
+
|
|
233
|
+
### Grid & Container
|
|
234
|
+
- 16-column grid (Carbon's 2x grid system)
|
|
235
|
+
- Max content width: 1584px (max breakpoint)
|
|
236
|
+
- Column gutters: 32px (16px on mobile)
|
|
237
|
+
- Margin: 16px (mobile), 32px (tablet+)
|
|
238
|
+
- Content typically spans 8-12 columns for readable line lengths
|
|
239
|
+
- Full-bleed sections alternate with contained content
|
|
240
|
+
|
|
241
|
+
### Whitespace Philosophy
|
|
242
|
+
- **Functional density**: Carbon favors productive density over expansive whitespace. Sections are tightly packed compared to consumer design systems — this reflects IBM's enterprise DNA.
|
|
243
|
+
- **Background-color zoning**: Instead of massive padding between sections, IBM uses alternating background colors (white → gray 10 → white) to create visual separation with minimal vertical space.
|
|
244
|
+
- **Consistent 48px rhythm**: Major section transitions use 48px vertical spacing. Hero sections may use 80px–96px.
|
|
245
|
+
|
|
246
|
+
### Border Radius Scale
|
|
247
|
+
- **0px**: Primary buttons, inputs, tiles, cards — the dominant treatment. Carbon is fundamentally rectangular.
|
|
248
|
+
- **2px**: Occasionally on small interactive elements (tags)
|
|
249
|
+
- **24px**: Tags/labels (pill shape — the sole rounded exception)
|
|
250
|
+
- **50%**: Avatar circles, icon containers
|
|
251
|
+
|
|
252
|
+
## 6. Depth & Elevation
|
|
253
|
+
|
|
254
|
+
| Level | Treatment | Use |
|
|
255
|
+
|-------|-----------|-----|
|
|
256
|
+
| Flat (Level 0) | No shadow, `#ffffff` background | Default page surface |
|
|
257
|
+
| Layer 01 | No shadow, `#f4f4f4` background | Cards, tiles, alternating sections |
|
|
258
|
+
| Layer 02 | No shadow, `#e0e0e0` background | Elevated panels within Layer 01 |
|
|
259
|
+
| Raised | `0 2px 6px rgba(0,0,0,0.3)` | Dropdowns, tooltips, overflow menus |
|
|
260
|
+
| Overlay | `0 2px 6px rgba(0,0,0,0.3)` + dark scrim | Modal dialogs, side panels |
|
|
261
|
+
| Focus | `2px solid #0f62fe` inset + `1px solid #ffffff` | Keyboard focus ring |
|
|
262
|
+
| Bottom-border | `2px solid #161616` on bottom edge | Active input, active tab indicator |
|
|
263
|
+
|
|
264
|
+
**Shadow Philosophy**: Carbon is deliberately shadow-averse. IBM achieves depth primarily through background-color layering — stacking surfaces of progressively darker grays rather than adding box-shadows. This creates a flat, print-inspired aesthetic where hierarchy is communicated through color value, not simulated light. Shadows are reserved exclusively for floating elements (dropdowns, tooltips, modals) where the element genuinely overlaps content. This restraint gives the rare shadow meaningful impact — when something floats in Carbon, it matters.
|
|
265
|
+
|
|
266
|
+
## 7. Do's and Don'ts
|
|
267
|
+
|
|
268
|
+
### Do
|
|
269
|
+
- Use IBM Plex Sans at weight 300 for display sizes (42px+) — the lightness is intentional
|
|
270
|
+
- Apply 0.16px letter-spacing on 14px body text and 0.32px on 12px captions
|
|
271
|
+
- Use 0px border-radius on buttons, inputs, cards, and tiles — rectangles are the system
|
|
272
|
+
- Reference `--cds-*` token names when implementing (e.g., `--cds-button-primary`, `--cds-text-primary`)
|
|
273
|
+
- Use background-color layering (white → gray 10 → gray 20) for depth instead of shadows
|
|
274
|
+
- Use bottom-border (not box) for input field indicators
|
|
275
|
+
- Maintain the 48px default button height and asymmetric padding for icon accommodation
|
|
276
|
+
- Apply Blue 60 (`#0f62fe`) as the sole accent — one blue to rule them all
|
|
277
|
+
|
|
278
|
+
### Don't
|
|
279
|
+
- Don't round button corners — 0px radius is the Carbon identity
|
|
280
|
+
- Don't use shadows on cards or tiles — flatness is the point
|
|
281
|
+
- Don't introduce additional accent colors — IBM's system is monochromatic + blue
|
|
282
|
+
- Don't use weight 700 (Bold) — the scale stops at 600 (Semibold)
|
|
283
|
+
- Don't add letter-spacing to display-size text — tracking is only for 14px and below
|
|
284
|
+
- Don't box inputs with full borders — Carbon inputs use bottom-border only
|
|
285
|
+
- Don't use gradient backgrounds — IBM's surfaces are flat, solid colors
|
|
286
|
+
- Don't deviate from the 8px spacing grid — every value should be divisible by 8 (with 2px and 4px for micro-adjustments)
|
|
287
|
+
|
|
288
|
+
## 8. Responsive Behavior
|
|
289
|
+
|
|
290
|
+
### Breakpoints
|
|
291
|
+
| Name | Width | Key Changes |
|
|
292
|
+
|------|-------|-------------|
|
|
293
|
+
| Small (sm) | 320px | Single column, hamburger nav, 16px margins |
|
|
294
|
+
| Medium (md) | 672px | 2-column grids begin, expanded content |
|
|
295
|
+
| Large (lg) | 1056px | Full navigation visible, 3-4 column grids |
|
|
296
|
+
| X-Large (xlg) | 1312px | Maximum content density, wide layouts |
|
|
297
|
+
| Max | 1584px | Maximum content width, centered with margins |
|
|
298
|
+
|
|
299
|
+
### Touch Targets
|
|
300
|
+
- Button height: 48px default, minimum 40px (compact)
|
|
301
|
+
- Navigation links: 48px row height for touch
|
|
302
|
+
- Input height: 40px default, 48px large
|
|
303
|
+
- Icon buttons: 48px square touch target
|
|
304
|
+
- Mobile menu items: full-width 48px rows
|
|
305
|
+
|
|
306
|
+
### Collapsing Strategy
|
|
307
|
+
- Hero: 60px display → 42px → 32px heading as viewport narrows
|
|
308
|
+
- Navigation: full horizontal masthead → hamburger with slide-out panel
|
|
309
|
+
- Grid: 4-column → 2-column → single column
|
|
310
|
+
- Tiles/cards: horizontal grid → vertical stack
|
|
311
|
+
- Images: maintain aspect ratio, max-width 100%
|
|
312
|
+
- Footer: multi-column link groups → stacked single column
|
|
313
|
+
- Section padding: 48px → 32px → 16px
|
|
314
|
+
|
|
315
|
+
### Image Behavior
|
|
316
|
+
- Responsive images with `max-width: 100%`
|
|
317
|
+
- Product illustrations scale proportionally
|
|
318
|
+
- Hero images may shift from side-by-side to stacked below
|
|
319
|
+
- Data visualizations maintain aspect ratio with horizontal scroll on mobile
|
|
320
|
+
|
|
321
|
+
## 9. Agent Prompt Guide
|
|
322
|
+
|
|
323
|
+
### Quick Color Reference
|
|
324
|
+
- Primary CTA: IBM Blue 60 (`#0f62fe`)
|
|
325
|
+
- Background: White (`#ffffff`)
|
|
326
|
+
- Heading text: Gray 100 (`#161616`)
|
|
327
|
+
- Body text: Gray 100 (`#161616`)
|
|
328
|
+
- Secondary text: Gray 70 (`#525252`)
|
|
329
|
+
- Surface/Card: Gray 10 (`#f4f4f4`)
|
|
330
|
+
- Border: Gray 30 (`#c6c6c6`)
|
|
331
|
+
- Link: Blue 60 (`#0f62fe`)
|
|
332
|
+
- Link hover: Blue 70 (`#0043ce`)
|
|
333
|
+
- Focus ring: Blue 60 (`#0f62fe`)
|
|
334
|
+
- Error: Red 60 (`#da1e28`)
|
|
335
|
+
- Success: Green 50 (`#24a148`)
|
|
336
|
+
|
|
337
|
+
### Example Component Prompts
|
|
338
|
+
- "Create a hero section on white background. Headline at 60px IBM Plex Sans weight 300, line-height 1.17, color #161616. Subtitle at 16px weight 400, line-height 1.50, color #525252, max-width 640px. Blue CTA button (#0f62fe background, #ffffff text, 0px border-radius, 48px height, 14px 63px 14px 15px padding)."
|
|
339
|
+
- "Design a card tile: #f4f4f4 background, 0px border-radius, 16px padding. Title at 20px IBM Plex Sans weight 600, line-height 1.40, color #161616. Body at 14px weight 400, letter-spacing 0.16px, line-height 1.29, color #525252. Hover: background shifts to #e8e8e8."
|
|
340
|
+
- "Build a form field: #f4f4f4 background, 0px border-radius, 40px height, 16px horizontal padding. Label above at 12px weight 400, letter-spacing 0.32px, color #525252. Bottom-border: 2px solid transparent default, 2px solid #0f62fe on focus. Placeholder: #6f6f6f."
|
|
341
|
+
- "Create a dark navigation bar: #161616 background, 48px height. IBM logo white left-aligned. Links at 14px IBM Plex Sans weight 400, color #c6c6c6. Hover: #ffffff text. Active: #ffffff with 2px bottom border."
|
|
342
|
+
- "Build a tag component: Blue 10 (#edf5ff) background, Blue 60 (#0f62fe) text, 4px 8px padding, 24px border-radius, 12px IBM Plex Sans weight 400."
|
|
343
|
+
|
|
344
|
+
### Iteration Guide
|
|
345
|
+
1. Always use 0px border-radius on buttons, inputs, and cards — this is non-negotiable in Carbon
|
|
346
|
+
2. Letter-spacing only at small sizes: 0.16px at 14px, 0.32px at 12px — never on display text
|
|
347
|
+
3. Three weights: 300 (display), 400 (body), 600 (emphasis) — no bold
|
|
348
|
+
4. Blue 60 is the only accent color — do not introduce secondary accent hues
|
|
349
|
+
5. Depth comes from background-color layering (white → #f4f4f4 → #e0e0e0), not shadows
|
|
350
|
+
6. Inputs have bottom-border only, never fully boxed
|
|
351
|
+
7. Use `--cds-` prefix for token naming to stay Carbon-compatible
|
|
352
|
+
8. 48px is the universal interactive element height
|
|
353
|
+
|
|
354
|
+
## 10. Voice & Tone
|
|
355
|
+
|
|
356
|
+
IBM's voice is **enterprise-technical and Carbon-systematic.** Carbon Design System discipline shows up in every surface — uppercase labels, IBM Plex font, 0px-radius buttons, IBM Blue `#0f62fe` primary. The voice is closer to a research lab + enterprise contract than to consumer marketing.
|
|
357
|
+
|
|
358
|
+
| Context | Tone |
|
|
359
|
+
|---|---|
|
|
360
|
+
| CTA | Verb. "Get started", "Try free", "Talk to sales" |
|
|
361
|
+
| Marketing | Enterprise-fluent. SOC 2 / FedRAMP / ISO references |
|
|
362
|
+
| Documentation | Carbon-component-named; deep-linked component docs |
|
|
363
|
+
| Error | Specific. "Authentication failed (HTTP 401). Check API key." |
|
|
364
|
+
|
|
365
|
+
**Voice samples**
|
|
366
|
+
- Marketing CTA (KR): *"무료로 시작하기"* <!-- verified: ibm.com/kr-ko 2026-05 -->
|
|
367
|
+
|
|
368
|
+
**Forbidden phrases.** "Revolutionary AI" without specifics. Casual emoji.
|
|
369
|
+
|
|
370
|
+
## 11. Brand Narrative
|
|
371
|
+
|
|
372
|
+
IBM was founded **June 16 1911** as the **Computing-Tabulating-Recording Company (CTR)** by **Charles Ranlett Flint** — a Wall Street financier who **amalgamated four companies** (Tabulating Machine Company, International Time Recording Company, Computing Scale Company of America, Bundy Manufacturing Company) ([Charles Ranlett Flint — Wikipedia](https://en.wikipedia.org/wiki/Charles_Ranlett_Flint), [IBM — The origins of IBM](https://www.ibm.com/history/ctr-and-ibm)). **Renamed "International Business Machines" 1924** under **Thomas J. Watson Sr.**, who had joined CTR in 1914. The contemporary brand identity was established through **Paul Rand**, hired by **Thomas J. Watson Jr. in 1956** — Rand replaced Beton Bold with **City Medium** and created the iconic 8-bar (later 13-bar) striped IBM logo, with a directive to "**herald a new era of IBM while also communicating continuity**" ([History of IBM logo — Hatchwise](https://www.hatchwise.com/resources/the-history-of-the-ibm-logo)). The Rand→**Eddy Opara** design legacy continues today through the **Carbon Design System** (open-sourced 2018, [carbondesignsystem.com](https://carbondesignsystem.com/)) — IBM Plex font, IBM Blue `#0f62fe`, 0px-radius buttons. Carbon makes IBM one of the few enterprise vendors with a publicly documented design system that's also adopted by external teams. **In 2024-2025 IBM acquired HashiCorp** ($6.4B announced April 24 2024, **closed February 27 2025**), folding HashiCorp's products into IBM's hybrid cloud strategy.
|
|
373
|
+
|
|
374
|
+
## 12. Principles
|
|
375
|
+
|
|
376
|
+
1. **Carbon is the system.** *UI implication:* every component has a Carbon spec — read carbondesignsystem.com before deviating.
|
|
377
|
+
2. **0px radius is intentional.** Carbon's defining aesthetic choice. *UI implication:* never round corners on Carbon-spec elements.
|
|
378
|
+
3. **IBM Plex is the type voice.** Sans / Mono / Serif variants. *UI implication:* don't substitute system fonts; Plex is the brand register.
|
|
379
|
+
4. **48px universal interactive height.** *UI implication:* all clickable elements meet 48px tap target.
|
|
380
|
+
5. **`#0f62fe` IBM Blue is THE accent.** *UI implication:* other Carbon tokens carry semantic meaning; IBM Blue is for "primary action" only.
|
|
381
|
+
|
|
382
|
+
## 13. Personas
|
|
383
|
+
|
|
384
|
+
*Personas are fictional archetypes informed by IBM user segments (enterprise IT architects, watsonx AI/ML platform users, regulated-industry compliance), not individual people.*
|
|
385
|
+
|
|
386
|
+
**Catherine Liu, 47, Toronto.** Principal architect at a global insurance company. IBM Cloud + watsonx the chosen path for compliant AI deployment.
|
|
387
|
+
|
|
388
|
+
**Hiroshi Tanaka, 52, Tokyo.** CIO at multinational logistics. IBM partnership for hybrid cloud modernization.
|
|
389
|
+
|
|
390
|
+
**Aisha Khan, 35, Dubai.** Senior consultant at IBM Consulting. Translates client needs into Carbon-compliant deliverables.
|
|
391
|
+
|
|
392
|
+
## 14. States
|
|
393
|
+
|
|
394
|
+
| State | Treatment |
|
|
395
|
+
|---|---|
|
|
396
|
+
| **Empty (no resources)** | "Create your first resource" Carbon Button.Primary |
|
|
397
|
+
| **Empty (no data)** | Carbon EmptyState component pattern + CTA |
|
|
398
|
+
| **Loading** | Carbon InlineLoading or Loading component, never custom |
|
|
399
|
+
| **Error** | Carbon Notification.error variant; persistent until dismissed |
|
|
400
|
+
| **Success** | Carbon Notification.success; auto-dismiss 4s |
|
|
401
|
+
| **Skeleton** | Carbon SkeletonText / SkeletonPlaceholder components |
|
|
402
|
+
| **Disabled** | Carbon disabled state — explicit visual contrast (not just opacity) |
|
|
403
|
+
| **Loading (long)** | Carbon ProgressBar with explicit ETA |
|
|
404
|
+
|
|
405
|
+
## 15. Motion & Easing
|
|
406
|
+
|
|
407
|
+
Carbon Motion tokens: `productive` (110ms / 240ms / 400ms), `expressive` (175ms / 240ms / 400ms / 700ms). Curves: `standard / entrance / exit / expressive`.
|
|
408
|
+
|
|
409
|
+
**Motion rules.**
|
|
410
|
+
1. Carbon productive curves for utility motions
|
|
411
|
+
2. Carbon expressive curves for marketing
|
|
412
|
+
3. `prefers-reduced-motion: reduce` collapses to instant
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
**Verified:** 2026-05-08 (omd:migrate run 28 — Apple-tier)
|
|
417
|
+
**Tier 1 sources:** ibm.com/us-en home + /products (live DOM via playwright — Primary `#0f62fe` IBM Blue 0px / asymmetric 14-15×15-16 / 48px / 14px·400; triple-confirmed against Carbon DS `$blue-60` token ✓).
|
|
418
|
+
**Tier 1 (DS-official):** carbondesignsystem.com — Carbon Design System open-source spec, the rare case where a brand publishes its own DS as authoritative.
|
|
419
|
+
**Tier 2 (Philosophy/history):** Wikipedia (Charles Flint, IBM, CTR, History of IBM), IBM corporate history (`ibm.com/history/ctr-and-ibm`), Hatchwise IBM logo timeline.
|
|
420
|
+
**Style ref:** `stripe`. **Conflicts unresolved:** none.
|