cdragon 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +110 -0
  2. package/bin/cdragon.js +170 -0
  3. package/package.json +31 -0
  4. package/skills/agent-browser/SKILL.md +50 -0
  5. package/skills/grill-me/SKILL.md +7 -0
  6. package/skills/herdr-agent/SKILL.md +142 -0
  7. package/skills/herdr-cli/SKILL.md +388 -0
  8. package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
  9. package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
  10. package/skills/notion-presentation/SKILL.md +170 -0
  11. package/skills/notion-presentation/references/example-redis-deck.md +97 -0
  12. package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
  13. package/skills/setup-matt-pocock-skills/domain.md +51 -0
  14. package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
  15. package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
  16. package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  17. package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  18. package/skills/tdd/SKILL.md +108 -0
  19. package/skills/tdd/mocking.md +59 -0
  20. package/skills/tdd/refactoring.md +10 -0
  21. package/skills/tdd/tests.md +61 -0
  22. package/skills/to-html/SKILL.md +83 -0
  23. package/skills/to-html/designs/INDEX.md +74 -0
  24. package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
  25. package/skills/to-html/designs/airtable.DESIGN.md +275 -0
  26. package/skills/to-html/designs/alipay.DESIGN.md +456 -0
  27. package/skills/to-html/designs/apple.DESIGN.md +566 -0
  28. package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
  29. package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
  30. package/skills/to-html/designs/clay.DESIGN.md +398 -0
  31. package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
  32. package/skills/to-html/designs/cohere.DESIGN.md +361 -0
  33. package/skills/to-html/designs/coinone.DESIGN.md +218 -0
  34. package/skills/to-html/designs/coupang.DESIGN.md +502 -0
  35. package/skills/to-html/designs/cursor.DESIGN.md +416 -0
  36. package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
  37. package/skills/to-html/designs/expo.DESIGN.md +373 -0
  38. package/skills/to-html/designs/figma.DESIGN.md +490 -0
  39. package/skills/to-html/designs/framer.DESIGN.md +393 -0
  40. package/skills/to-html/designs/freee.DESIGN.md +572 -0
  41. package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
  42. package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
  43. package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
  44. package/skills/to-html/designs/hahow.DESIGN.md +158 -0
  45. package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
  46. package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
  47. package/skills/to-html/designs/ibm.DESIGN.md +420 -0
  48. package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
  49. package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
  50. package/skills/to-html/designs/karrot.DESIGN.md +445 -0
  51. package/skills/to-html/designs/kdan.DESIGN.md +160 -0
  52. package/skills/to-html/designs/krds.DESIGN.md +997 -0
  53. package/skills/to-html/designs/line.DESIGN.md +431 -0
  54. package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
  55. package/skills/to-html/designs/miro.DESIGN.md +272 -0
  56. package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
  57. package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
  58. package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
  59. package/skills/to-html/designs/naver.DESIGN.md +533 -0
  60. package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
  61. package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
  62. package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
  63. package/skills/to-html/designs/posthog.DESIGN.md +430 -0
  64. package/skills/to-html/designs/raycast.DESIGN.md +422 -0
  65. package/skills/to-html/designs/remember.DESIGN.md +460 -0
  66. package/skills/to-html/designs/resend.DESIGN.md +396 -0
  67. package/skills/to-html/designs/sanity.DESIGN.md +449 -0
  68. package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
  69. package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
  70. package/skills/to-html/designs/socar.DESIGN.md +403 -0
  71. package/skills/to-html/designs/spotify.DESIGN.md +265 -0
  72. package/skills/to-html/designs/supabase.DESIGN.md +348 -0
  73. package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
  74. package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
  75. package/skills/to-html/designs/toss.DESIGN.md +655 -0
  76. package/skills/to-html/designs/uber.DESIGN.md +387 -0
  77. package/skills/to-html/designs/upstage.DESIGN.md +232 -0
  78. package/skills/to-html/designs/velog.DESIGN.md +168 -0
  79. package/skills/to-html/designs/vercel.DESIGN.md +479 -0
  80. package/skills/to-html/designs/wanted.DESIGN.md +529 -0
  81. package/skills/to-html/designs/wise.DESIGN.md +276 -0
  82. package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
  83. package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
  84. package/skills/to-html/designs/zapier.DESIGN.md +433 -0
  85. package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
  86. package/skills/to-issues/SKILL.md +84 -0
  87. package/skills/to-prd/SKILL.md +75 -0
  88. package/src/colors.js +15 -0
  89. package/src/link.js +47 -0
  90. package/src/prompt.js +137 -0
  91. package/src/skills.js +75 -0
@@ -0,0 +1,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.