oh-my-design-cli 1.8.7 → 1.9.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 (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -0,0 +1,390 @@
1
+ ---
2
+ id: 42dot
3
+ name: 42dot
4
+ display_name_kr: 포티투닷
5
+ country: KR
6
+ category: automotive
7
+ homepage: "https://42dot.ai/"
8
+ primary_color: "#786efa"
9
+ logo:
10
+ type: favicon
11
+ slug: "https://42dot.ai/icon.png"
12
+ verified: "2026-07-02"
13
+ added: "2026-07-02"
14
+ omd: "0.1"
15
+ tokens:
16
+ source: live-extract
17
+ extracted: "2026-07-02"
18
+ note: "Monochrome black/white system with a single periwinkle-violet accent (#786efa) reserved for active topic tags. Dark chrome uses graphite #32353f (nav dropdown) and charcoal #282b32 (blog hero); secondary text/borders sit in slate #737d8c. Type is AstaSans with Noto Sans KR fallback."
19
+ colors:
20
+ primary: "#786efa"
21
+ ink: "#000000"
22
+ muted: "#737d8c"
23
+ nav-dark: "#32353f"
24
+ hero-dark: "#282b32"
25
+ canvas: "#ffffff"
26
+ surface: "#fbfbfb"
27
+ card: "#f6f6f9"
28
+ on-dark: "#ffffff"
29
+ typography:
30
+ family: { sans: "AstaSans", kr: "Noto Sans KR" }
31
+ display-hero: { size: 38, weight: 600, lineHeight: 1.45, use: "Hero headline on dark, AstaSans SemiBold" }
32
+ section: { size: 36, weight: 600, lineHeight: 1.60, use: "Section titles on light" }
33
+ section-label: { size: 29, weight: 500, lineHeight: 1.45, use: "Blog index labels (Tags / Posts)" }
34
+ card-title: { size: 26, weight: 600, lineHeight: 1.50, use: "Blog / research card title" }
35
+ nav: { size: 14, weight: 500, lineHeight: 1.40, use: "Top nav item" }
36
+ body: { size: 14, weight: 400, lineHeight: 1.50, use: "Standard reading text" }
37
+ tag: { size: 11, weight: 400, lineHeight: 1.40, use: "Topic tag pill label" }
38
+ spacing: { xs: 6, sm: 12, base: 16, md: 24, lg: 48, section: 64 }
39
+ rounded: { none: 0, pill: 22, full: 9999 }
40
+ shadow:
41
+ dropdown: "rgba(0,0,0,0.2) 0px 4px 10px"
42
+ components:
43
+ tag-active: { type: badge, bg: "#786efa", fg: "#ffffff", radius: "22px", padding: "6px 12px", font: "11px / 400 AstaSans", use: "Active / featured topic tag pill on homepage cards" }
44
+ tag-filter: { type: badge, fg: "#737d8c", border: "1px solid #737d8c", radius: "22px", padding: "6px 12px", font: "11px / 400 AstaSans", use: "Inactive tag filter chip on blog index" }
45
+ blog-card: { type: card, bg: "#f6f6f9", fg: "#000000", radius: "0px", padding: "48px", use: "Blog / research entry card on homepage" }
46
+ nav-dropdown: { type: card, bg: "#32353f", fg: "#ffffff", shadow: "rgba(0,0,0,0.2) 0px 4px 10px", use: "Mega-dropdown panel under top nav" }
47
+ nav-item: { type: tab, fg: "#ffffff", font: "14px / 500 AstaSans", active: "text #ffffff on active item; sub-items dimmed to 50% white", use: "Top navigation item on dark hero" }
48
+ carousel-button: { type: button, bg: "#ffffff", fg: "#000000", radius: "9999px", use: "Circular prev / next carousel control" }
49
+ components_harvested: true
50
+ ---
51
+
52
+ # Design System Inspiration of 42dot
53
+
54
+ ## 1. Visual Theme & Atmosphere
55
+
56
+ 42dot (포티투닷) is Hyundai Motor Group's mobility-AI company, and its site reads exactly like an engineering-led autonomy lab that happens to have taste: a near-monochrome black-and-white system, cinematic dark hero footage, and a single restrained accent. The homepage opens on a full-bleed charcoal hero (`#282b32`) with white AstaSans headlines — "We Are A Mobility AI Company", "The Answer to Mobility and Everything" — layered over vehicle/road video, then resolves into airy off-white content bands (`#fbfbfb`, `#ffffff`) once you scroll past the fold. The impression is confident and technical rather than consumer-cute: this is a company that builds the software brain of a car, and the design signals precision over decoration.
57
+
58
+ The one deliberate spark of color is a periwinkle-violet (`#786efa`) reserved almost exclusively for active topic-tag pills ("#LLM", "#SDV", "#Active Learning"). Everything else — nav, body, headings, cards — is built from black (`#000000`) ink, a cool slate (`#737d8c`) for secondary text and hairline tag borders, and two grades of dark chrome: graphite (`#32353f`) for the mega-dropdown nav panels and charcoal (`#282b32`) for the blog hero. Because the palette is otherwise achromatic, that lone violet does a lot of work: it is the system's "this is live / this is selected" signal.
59
+
60
+ Typographically the system is unmistakably AstaSans (with a Noto Sans KR fallback for hangul), run at SemiBold 600 for the big statements — 38px on the hero, 36px on section titles — and stepped down to a quiet 14px / 400 for body. Geometry is deliberately flat and mostly square: cards carry a 0px radius and separate by tint (`#f6f6f9`) rather than shadow, the only real elevation being a soft `rgba(0,0,0,0.2)` drop on the nav dropdown. The two rounded exceptions are intentional — the 22px tag pills and the fully-circular carousel controls — so roundness itself reads as an interactive affordance.
61
+
62
+ **Key Characteristics:**
63
+ - Near-monochrome system: black `#000000` ink on white `#ffffff` / off-white `#fbfbfb`, with two dark chrome grades (`#32353f` nav, `#282b32` hero)
64
+ - Single periwinkle-violet accent (`#786efa`) reserved for active topic tags — the lone "selected/live" signal
65
+ - AstaSans (Noto Sans KR fallback) at SemiBold 600 for hero and section headlines
66
+ - Slate (`#737d8c`) for secondary text and 1px tag-filter hairline borders
67
+ - Flat depth: 0px-radius cards separated by tint (`#f6f6f9`), not elevation
68
+ - Cinematic dark hero footage under white headlines — engineering-lab confidence
69
+ - Pill (22px) tags and circular (9999px) carousel controls as the only rounded shapes
70
+
71
+ ## 2. Color Palette & Roles
72
+
73
+ ### Primary / Accent
74
+ - **Periwinkle Violet** (`#786efa`): The single saturated accent. Live inspection found it as the background of active/featured topic-tag pills on the homepage (16 instances) and as an occasional text highlight. In an otherwise achromatic system it is the "selected / live" signal.
75
+
76
+ ### Ink & Text
77
+ - **Pure Black** (`#000000`): Primary text and heading color across light surfaces — the dominant foreground (300+ occurrences). 42dot uses true black, not a softened navy.
78
+ - **Muted Slate** (`#737d8c`): Secondary text, metadata, and the 1px hairline border on inactive tag-filter chips. The most common secondary foreground on the blog index.
79
+
80
+ ### Dark Chrome
81
+ - **Nav Graphite** (`#32353f`): Background of the mega-dropdown navigation panels that open under the top nav.
82
+ - **Hero Charcoal** (`#282b32`): Background of the blog hero band and dark editorial sections; white headlines sit on top.
83
+
84
+ ### Surface & Neutral
85
+ - **Pure White** (`#ffffff`): Page canvas, card surfaces on white bands, and all text/labels placed on dark chrome (nav, hero).
86
+ - **Off-White** (`#fbfbfb`): The primary light content band beneath the hero — a barely-there grey that keeps large sections from feeling stark.
87
+ - **Card Mist** (`#f6f6f9`): Fill for the blog / research entry cards on the homepage — a cool near-white that separates cards by tint rather than shadow.
88
+ - **On-Dark White** (`#ffffff`): Nav items, hero headlines, and tag-pill labels rendered on the dark chrome and on the violet accent.
89
+
90
+ ## 3. Typography Rules
91
+
92
+ ### Font Family
93
+ - **Sans**: `AstaSans` — the brand's Latin typeface, used for every headline, nav item, label, and body run.
94
+ - **Korean**: `Noto Sans KR` — the declared fallback for hangul, keeping bilingual (EN/KR) copy visually consistent.
95
+
96
+ ### Hierarchy
97
+
98
+ | Role | Font | Size | Weight | Line Height | Notes |
99
+ |------|------|------|--------|-------------|-------|
100
+ | Hero Display | AstaSans | 38px (2.40rem) | 600 | 1.45 (55.68px) | White on dark hero — "We Are A Mobility AI Company" |
101
+ | Section Title | AstaSans | 36px (2.22rem) | 600 | 1.60 (56.83px) | Black on light — "We Make Everything Autonomous and Frictionless" |
102
+ | Section Label | AstaSans | 29px (1.80rem) | 500 | 1.45 (41.76px) | Blog index labels — "Tags", "Posts" |
103
+ | Card Title | AstaSans | 26px (1.60rem) | 600 | 1.50 (38.40px) | Blog / research card headline |
104
+ | Nav Item | AstaSans | 14px (0.89rem) | 500 | 1.40 | Top-level nav; sub-items drop to weight 400 |
105
+ | Body | AstaSans | 14px (0.88rem) | 400 | 1.50 | Standard reading text |
106
+ | Tag Pill | AstaSans | 11px (0.70rem) | 400 | 1.40 | Topic tag label |
107
+
108
+ ### Principles
109
+ - **SemiBold for statements, regular for reading**: Weight 600 carries every hero and section headline; weight 400/500 carries nav and body. The weight jump is the primary hierarchy signal in an otherwise low-contrast palette.
110
+ - **One family, two scripts**: AstaSans owns Latin; Noto Sans KR is the hangul fallback. They never swap — bilingual copy stays visually unified.
111
+ - **Generous line-height on display**: Section titles run at 1.6 line-height, giving large multi-line statements air rather than density.
112
+ - **Small, quiet body**: Body sits at 14px / 400 — 42dot lets the imagery and headlines lead; running text is deliberately understated.
113
+
114
+ ## 4. Component Stylings
115
+
116
+ ### Tags
117
+
118
+ **Active Tag Pill**
119
+ - Background: `#786efa`
120
+ - Text: `#ffffff`
121
+ - Radius: 22px
122
+ - Padding: 6px 12px
123
+ - Font: 11px / 400 / AstaSans
124
+ - Use: Active / featured topic tag on homepage cards ("#LLM", "#CES #SDV", "#Active Learning")
125
+
126
+ **Inactive Tag Filter**
127
+ - Text: `#737d8c`
128
+ - Border: 1px solid `#737d8c`
129
+ - Radius: 22px
130
+ - Padding: 6px 12px
131
+ - Font: 11px / 400 / AstaSans
132
+ - Use: Tag-filter chips on the blog index ("#AI", "#Software", "#Transformer")
133
+
134
+ ### Cards & Containers
135
+
136
+ **Blog / Research Card**
137
+ - Background: `#f6f6f9`
138
+ - Text: `#000000`
139
+ - Radius: 0px
140
+ - Padding: 48px
141
+ - Use: Blog / research entry card on the homepage — separated by tint, no shadow
142
+
143
+ ### Navigation
144
+
145
+ **Nav Dropdown Panel**
146
+ - Background: `#32353f`
147
+ - Text: `#ffffff`
148
+ - Shadow: `rgba(0,0,0,0.2) 0px 4px 10px`
149
+ - Use: Mega-dropdown panel that opens under a top-nav item
150
+
151
+ **Nav Item**
152
+ - Text: `#ffffff`
153
+ - Font: 14px / 500 / AstaSans
154
+ - Active: white `#ffffff` label; sub-items dimmed to 50% white
155
+ - Use: Top navigation item on the dark hero
156
+
157
+ ### Buttons
158
+
159
+ **Carousel Control**
160
+ - Background: `#ffffff`
161
+ - Text: `#000000`
162
+ - Radius: 9999px
163
+ - Use: Circular prev / next control on homepage carousels
164
+
165
+ ---
166
+
167
+ **Verified:** 2026-07-02 (omd:add-reference CREATE — Tier 1 live inspect, 2 surfaces)
168
+ **Tier 1 sources:** https://42dot.ai/ | https://42dot.ai/blog
169
+ **Tier 2 sources:** getdesign.md/42dot (listed but 0 DESIGN.md files — no data); styles.refero.design/?q=42dot (no 42dot match — KR under-coverage)
170
+ **Conflicts unresolved:** none
171
+
172
+ ## 5. Layout Principles
173
+
174
+ ### Spacing System
175
+ - Base unit: ~8px, with a dense small end for chips
176
+ - Scale: 6px, 12px, 16px, 24px, 48px, 64px
177
+ - Notable: tag pills use a tight 6px × 12px pad; blog cards use a generous 48px interior pad, giving the editorial grid a spacious, magazine feel
178
+
179
+ ### Grid & Container
180
+ - Full-bleed cinematic hero band (dark), then centered content bands on white / off-white
181
+ - Homepage blog/research row is a horizontal card grid; each card is a 0px-radius `#f6f6f9` block
182
+ - Blog index splits into a "Tags" filter cloud and a "Posts" card grid
183
+ - Mega-dropdown nav panels (`#32353f`) expand the header into a dark full-width menu
184
+
185
+ ### Whitespace Philosophy
186
+ - **Cinematic then calm**: a dense, imagery-heavy dark hero gives way to airy, generously-padded light content — the page breathes after the statement.
187
+ - **Tint over elevation**: sections and cards separate by background tint (`#fbfbfb`, `#f6f6f9`) and dark chrome, almost never by shadow.
188
+ - **Restraint as brand**: whitespace and monochrome do the heavy lifting so the lone violet accent stays loud.
189
+
190
+ ### Border Radius Scale
191
+ - None (0px): cards, content containers — the default is square
192
+ - Pill (22px): topic tags
193
+ - Full (9999px): circular carousel controls
194
+
195
+ ## 6. Depth & Elevation
196
+
197
+ | Level | Treatment | Use |
198
+ |-------|-----------|-----|
199
+ | Flat (Level 0) | No shadow | Page bands, cards, headings — the default |
200
+ | Tint (Level 1) | `#f6f6f9` / `#fbfbfb` background shift | Card and section separation without elevation |
201
+ | Dark chrome (Level 2) | `#32353f` / `#282b32` fill | Nav dropdown panels, hero band |
202
+ | Drop (Level 3) | `rgba(0,0,0,0.2) 0px 4px 10px` | The one real shadow — nav mega-dropdown panel |
203
+
204
+ **Shadow Philosophy**: 42dot is a near-flat system. Live inspection found `box-shadow: none` across the hero, headings, blog cards, and tags; the only measured elevation is a soft `rgba(0,0,0,0.2) 0px 4px 10px` under the nav mega-dropdown. Depth is otherwise communicated by tint (`#f6f6f9` cards on `#fbfbfb` bands) and by the dark chrome (`#32353f`, `#282b32`) rather than by layered shadows — a modern, engineered flatness that suits an autonomy company more than a decorative card-stack aesthetic.
205
+
206
+ ## 7. Do's and Don'ts
207
+
208
+ ### Do
209
+ - Use AstaSans (Noto Sans KR fallback) at SemiBold 600 for hero and section headlines
210
+ - Reserve periwinkle-violet (`#786efa`) for the active/selected state — keep it the single accent
211
+ - Use pure black (`#000000`) for body and headings on light surfaces
212
+ - Separate cards and sections by tint (`#f6f6f9`, `#fbfbfb`), not shadow
213
+ - Keep cards square (0px radius); reserve rounding for tags (22px) and circular controls
214
+ - Use slate (`#737d8c`) for secondary text and 1px tag hairline borders
215
+ - Set white (`#ffffff`) headlines over the dark chrome (`#282b32` / `#32353f`) hero and nav
216
+
217
+ ### Don't
218
+ - Spread the violet accent across many elements — it dilutes the single "selected" signal
219
+ - Use softened navy for text — 42dot uses true black `#000000`
220
+ - Reach for drop shadows to separate content — tint and dark chrome do that job
221
+ - Round the cards — the square 0px card is the system default
222
+ - Set headlines in a light weight — display is always SemiBold (600)
223
+ - Introduce a second saturated hue — the system is monochrome plus one violet
224
+ - Use AstaSans body at a heavy weight — running text stays quiet at 14px / 400
225
+
226
+ ## 8. Responsive Behavior
227
+
228
+ ### Breakpoints
229
+ | Name | Width | Key Changes |
230
+ |------|-------|-------------|
231
+ | Mobile | <640px | Single column, hero headline compresses, dropdown becomes a full-screen menu |
232
+ | Tablet | 640-1024px | 2-up card grids, moderate padding |
233
+ | Desktop | 1024-1440px | Full layout, cinematic hero, multi-column card rows, mega-dropdown nav |
234
+
235
+ ### Touch Targets
236
+ - Nav items sit in a 44-48px-tall header row for comfortable tapping
237
+ - Tag pills at ~24px height with 6px × 12px padding — compact but tappable
238
+ - Circular carousel controls at ~45px diameter
239
+
240
+ ### Collapsing Strategy
241
+ - Hero: 38px AstaSans headline scales down on mobile, weight 600 maintained
242
+ - Mega-dropdown (`#32353f`) collapses into a stacked full-screen mobile menu
243
+ - Blog/research card row: multi-column → stacked single column
244
+ - Tag cloud on the blog index wraps to multiple rows
245
+
246
+ ### Image Behavior
247
+ - Cinematic hero footage crops to fill on all sizes; white headlines stay legible over the dark charcoal
248
+ - Blog card thumbnails maintain their square (0px) framing across breakpoints
249
+
250
+ ## 9. Agent Prompt Guide
251
+
252
+ ### Quick Color Reference
253
+ - Accent / active state: Periwinkle Violet (`#786efa`)
254
+ - Ink / body / heading: Pure Black (`#000000`)
255
+ - Secondary text / tag border: Muted Slate (`#737d8c`)
256
+ - Nav dropdown background: Nav Graphite (`#32353f`)
257
+ - Hero background: Hero Charcoal (`#282b32`)
258
+ - Canvas / on-dark text: Pure White (`#ffffff`)
259
+ - Light content band: Off-White (`#fbfbfb`)
260
+ - Card fill: Card Mist (`#f6f6f9`)
261
+
262
+ ### Example Component Prompts
263
+ - "Create a cinematic hero: full-bleed `#282b32` charcoal background with a video, white AstaSans headline at 38px weight 600, line-height 1.45 — 'We Are A Mobility AI Company'. No shadow."
264
+ - "Design a blog card: `#f6f6f9` background, 0px radius, 48px padding, no shadow. Title 26px AstaSans weight 600 `#000000`. A periwinkle tag pill: `#786efa` background, white text, 22px radius, 6px 12px padding, 11px AstaSans."
265
+ - "Build a tag-filter row: pills with transparent background, `#737d8c` text, 1px solid `#737d8c` border, 22px radius, 6px 12px padding, 11px AstaSans."
266
+ - "Create a top nav on a `#282b32` hero: AstaSans 14px weight 500 white items; a mega-dropdown panel with `#32353f` background and a `rgba(0,0,0,0.2) 0px 4px 10px` shadow."
267
+
268
+ ### Iteration Guide
269
+ 1. AstaSans SemiBold (600) for every headline; 14px / 400 for body
270
+ 2. `#786efa` is the single accent — reserve it for the active/selected state
271
+ 3. No shadows except the nav dropdown — separate with `#f6f6f9` / `#fbfbfb` tint
272
+ 4. Cards are square (0px); only tags (22px) and carousel controls (9999px) round
273
+ 5. Text is true black `#000000`, secondary is slate `#737d8c`
274
+ 6. Dark chrome is `#32353f` (nav) and `#282b32` (hero); white text on both
275
+
276
+ ---
277
+
278
+ ## 10. Voice & Tone
279
+
280
+ 42dot's voice is **declarative, technical, and quietly ambitious** — an engineering company stating a mission rather than selling a product. The homepage statements ("We Are A Mobility AI Company", "The Answer to Mobility and Everything", "We Make Everything Autonomous and Frictionless") are short, present-tense, and confident, with no exclamation urgency and no consumer hype. Bilingual (EN/KR) copy carries the same register in both scripts: plain, capable, forward-looking.
281
+
282
+ | Context | Tone |
283
+ |---|---|
284
+ | Hero statements | Declarative, mission-framed. "We Make Everything Autonomous and Frictionless." Confident, never salesy. |
285
+ | Section titles | Capability-first. "Technology", "Mobility", "AEV", "Come Ride With Us!". |
286
+ | Blog / research titles | Precise and specific. "42dot LLM 1.3B", "Active Learning을 통한 지속적인 모델 성능 개선". |
287
+ | Tags | Terse technical labels. "#LLM", "#SDV", "#3DObjectDetection", "#Transformer". |
288
+ | Careers | Inviting but grounded. "Open Roles", "42dot Way". |
289
+
290
+ **Voice samples (verbatim from live site, 2026-07-02):**
291
+ - "We Are A Mobility AI Company" — hero headline (mission statement). *(verified live)*
292
+ - "We Make Everything Autonomous and Frictionless" — section title (product thesis). *(verified live)*
293
+ - "The Answer to Mobility and Everything" — hero sub-statement. *(verified live)*
294
+
295
+ **Forbidden register**: consumer-app hype, exclamation-heavy marketing, undefined buzzwords without a technical anchor, decorative superlatives ("revolutionary", "game-changing").
296
+
297
+ ## 11. Brand Narrative
298
+
299
+ 42dot (포티투닷) was founded in **2019** by **송창현 (Song Chang-hyun)**, the former CTO of Naver and head of Naver Labs, with the ambition of building the full software stack for autonomous mobility — from perception and driving intelligence to the vehicle's operating system. The name nods to Douglas Adams' "42" (the answer to life, the universe, and everything), reframed on the site as "The Answer to Mobility and Everything." The company positions itself not as a car maker but as a **mobility AI company**: the software brain that makes vehicles and fleets autonomous.
300
+
301
+ In **2022**, 42dot was acquired by **Hyundai Motor Group** (Hyundai Motor and Kia taking a majority stake), becoming the group's core software and autonomy arm and anchoring its Software-Defined Vehicle (SDV) strategy. Its work spans autonomous driving (the AKit full-stack), Software-Defined Vehicle and Software-Defined Fleet platforms, an in-house 42dot LLM, and TAP! — an integrated autonomous-mobility service piloted on Korean roads.
302
+
303
+ What the design refuses, visible in the system: the decorative, consumer-cute chrome of a lifestyle app, and the heavy card-stack skeuomorphism of legacy dashboards. What it embraces: a near-monochrome, engineered flatness; cinematic dark hero footage; a single disciplined violet accent; and bilingual copy that states capability plainly. The aesthetic says "we build the serious software inside the car" more than "we want to delight you."
304
+
305
+ ## 12. Principles
306
+
307
+ 1. **Autonomy is the product; software is the medium.** 42dot sells intelligence, not chrome. *UI implication:* let imagery and precise headlines lead; keep the interface quiet and monochrome so the technology is the subject.
308
+ 2. **One accent, one meaning.** The lone violet (`#786efa`) marks what is active or selected. *UI implication:* never spend the accent on decoration — reserve it for the live/selected state so intent is unambiguous.
309
+ 3. **Flat and engineered.** Depth comes from tint and dark chrome, not shadow stacks. *UI implication:* separate content with `#f6f6f9`/`#fbfbfb` tint and `#32353f`/`#282b32` bands; keep cards square.
310
+ 4. **State it, don't sell it.** Copy is declarative and present-tense. *UI implication:* short mission-framed headlines in SemiBold; no exclamation urgency, no undefined buzzwords.
311
+ 5. **Bilingual by default.** EN and KR carry equal weight. *UI implication:* AstaSans for Latin, Noto Sans KR for hangul, one visual system across both scripts.
312
+
313
+ ## 13. Personas
314
+
315
+ *Personas below are fictional archetypes informed by publicly observable 42dot audiences (automotive OEM engineers, autonomy researchers, mobility-service riders, and prospective hires), not individual people.*
316
+
317
+ **정민호, 38, 서울.** A software architect at an automotive OEM evaluating SDV platforms. Reads 42dot's technology and blog pages for architectural depth, not marketing. Trusts the brand precisely because the site is engineered and understated rather than flashy.
318
+
319
+ **Sarah Kim, 29, Seoul.** An autonomy/ML researcher who follows the 42dot blog and research feed for posts like "42dot LLM 1.3B" and active-learning work. Filters by tags ("#LLM", "#Transformer") and values that the writing is specific and technical.
320
+
321
+ **이수현, 44, 판교.** A mobility-service operations lead assessing TAP! and fleet software for a pilot. Wants clarity on capability and reliability; responds to the calm, capability-first tone over consumer hype.
322
+
323
+ **David Park, 26, remote.** A new-grad engineer browsing "Open Roles" and "42dot Way". Reads the careers pages to gauge whether the culture is genuinely engineering-led. The restrained, confident design reinforces that impression.
324
+
325
+ ## 14. States
326
+
327
+ | State | Treatment |
328
+ |---|---|
329
+ | **Empty (blog filter, no matches)** | White canvas. Single Pure Black (`#000000`) line explaining no posts match the selected tags, with a path to clear filters. No illustration clutter. |
330
+ | **Empty (saved / list, none yet)** | Muted Slate (`#737d8c`) single line stating nothing is here yet, plus a route back. Calm and honest. |
331
+ | **Loading (blog / card grid)** | Skeleton blocks at final card dimensions on `#f6f6f9`, 0px radius. Flat pulse — no shadow shimmer, consistent with the near-flat system. |
332
+ | **Loading (in-place fetch)** | Subtle progress within the section; previous content stays visible rather than blanking. |
333
+ | **Error (fetch failed)** | Inline message in Pure Black with a plain-language explanation and a retry. No bare "오류가 발생했습니다" alone. |
334
+ | **Error (form validation)** | Field-level message below the input in a warm error tone; states what is valid, not just "필수". |
335
+ | **Success (submitted / applied)** | Brief inline confirmation in a calm tone; next-step detail linked immediately below. No celebratory emoji. |
336
+ | **Skeleton** | `#f6f6f9` blocks at final dimensions, 0px radius, flat pulse. |
337
+ | **Disabled** | Muted Slate (`#737d8c`) text on reduced-opacity surface; the violet accent fades rather than switching to grey, to preserve the brand read. |
338
+
339
+ ## 15. Motion & Easing
340
+
341
+ **Durations**:
342
+
343
+ | Token | Value | Use |
344
+ |---|---|---|
345
+ | `motion-fast` | 120ms | Hover, tag press, focus |
346
+ | `motion-standard` | 240ms | Dropdown open, card/section reveal, carousel slide |
347
+ | `motion-slow` | 400ms | Hero footage fades, page-level transitions |
348
+
349
+ **Easings**:
350
+
351
+ | Token | Curve | Use |
352
+ |---|---|---|
353
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Arriving — dropdown panels, cards |
354
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
355
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions, carousel |
356
+
357
+ **Motion rules**: Motion is functional and composed — matching the engineered, near-flat aesthetic. The nav mega-dropdown (`#32353f`) expands with `motion-standard / ease-enter`; carousels slide horizontally; hero footage cross-fades slowly as ambient atmosphere, not interactive delight. No bounce or spring — an autonomy company signals steadiness and control. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant and hero footage holds a still frame; the site stays fully functional.
358
+
359
+ <!--
360
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
361
+
362
+ Tier 1 live inspect (2026-07-02) via playwright getComputedStyle on 2 surfaces:
363
+ - https://42dot.ai/ — dark hero #282b32, white AstaSans headline 38px/600; section titles
364
+ 35.52px/600 black; blog/research cards #f6f6f9 0px radius 48px padding; active tag pills
365
+ bg rgb(120,110,250) #786efa white text, 22.4px radius, 5.6px 12px padding, 11.2px;
366
+ nav dropdown bg rgb(50,53,63) #32353f with rgba(0,0,0,0.2) 0px 4px 10px shadow;
367
+ circular carousel buttons #ffffff 50% radius.
368
+ - https://42dot.ai/blog — active tag pills #786efa ×16; inactive tag filters transparent,
369
+ rgb(115,125,140) #737d8c text + 1px solid rgba(115,125,140,0.3) border; blog hero
370
+ rgb(40,43,50) #282b32; card titles AstaSans 25.6px/600; section labels 28.8px/500.
371
+
372
+ Token-level claims (§1-9) are sourced from this live inspection (see .verification.md Proof block).
373
+
374
+ Voice samples (§10) are verbatim from the live homepage (hero + section statements).
375
+
376
+ Brand narrative (§11): 42dot (포티투닷) founded 2019 by Song Chang-hyun (former Naver CTO /
377
+ Naver Labs head); acquired by Hyundai Motor Group in 2022 (Hyundai + Kia majority stake),
378
+ anchoring the group's SDV strategy; products span AKit autonomous driving, SDV/SDF platforms,
379
+ 42dot LLM, and TAP! mobility service. The company's mobility-AI positioning and the taglines
380
+ are verbatim from the live site; founding/acquisition details are widely documented public
381
+ facts, not directly quoted from a verified 42dot statement in this turn.
382
+
383
+ Personas (§13) are fictional archetypes informed by publicly observable 42dot audiences
384
+ (OEM engineers, autonomy researchers, mobility riders, prospective hires). Names are
385
+ illustrative; they do not refer to real people.
386
+
387
+ Interpretive claims (e.g., "one accent, one meaning", "flat and engineered as a rejection of
388
+ consumer-cute chrome") are editorial readings connecting 42dot's observed design to its
389
+ positioning, not directly sourced 42dot statements.
390
+ -->