oh-my-design-cli 1.8.6 → 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 (275) 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 +2761 -85
  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/airbridge/DESIGN.md +451 -0
  71. package/web/references/alipay/DESIGN.md +179 -420
  72. package/web/references/apple/DESIGN.md +224 -498
  73. package/web/references/asleep/DESIGN.md +402 -0
  74. package/web/references/au/DESIGN.md +334 -0
  75. package/web/references/autopedia/DESIGN.md +382 -0
  76. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  77. package/web/references/baemin/DESIGN.md +332 -491
  78. package/web/references/banksalad/DESIGN.md +269 -180
  79. package/web/references/barogo/DESIGN.md +416 -0
  80. package/web/references/beusable/DESIGN.md +464 -0
  81. package/web/references/bigin/DESIGN.md +454 -0
  82. package/web/references/bilibili/DESIGN.md +206 -374
  83. package/web/references/bmw/DESIGN.md +162 -276
  84. package/web/references/brandi/DESIGN.md +184 -325
  85. package/web/references/buzzvil/DESIGN.md +457 -0
  86. package/web/references/cafe24/DESIGN.md +472 -0
  87. package/web/references/catchtable/DESIGN.md +219 -264
  88. package/web/references/cgv/DESIGN.md +317 -0
  89. package/web/references/channeltalk/DESIGN.md +210 -336
  90. package/web/references/china-airlines/DESIGN.md +291 -0
  91. package/web/references/cjonstyle/DESIGN.md +453 -0
  92. package/web/references/class101/DESIGN.md +168 -387
  93. package/web/references/classum/DESIGN.md +228 -203
  94. package/web/references/claude/DESIGN.md +242 -479
  95. package/web/references/clay/DESIGN.md +179 -377
  96. package/web/references/clickhouse/DESIGN.md +254 -343
  97. package/web/references/codeit/DESIGN.md +470 -0
  98. package/web/references/cohere/DESIGN.md +214 -324
  99. package/web/references/coinone/DESIGN.md +199 -179
  100. package/web/references/corca/DESIGN.md +414 -0
  101. package/web/references/coupang/DESIGN.md +205 -475
  102. package/web/references/cursor/DESIGN.md +240 -381
  103. package/web/references/dabang/DESIGN.md +248 -213
  104. package/web/references/dable/DESIGN.md +431 -0
  105. package/web/references/datarize/DESIGN.md +338 -0
  106. package/web/references/dealicious/DESIGN.md +402 -0
  107. package/web/references/drdiary/DESIGN.md +404 -0
  108. package/web/references/elastic/DESIGN.md +238 -0
  109. package/web/references/elevenlabs/DESIGN.md +183 -321
  110. package/web/references/elice/DESIGN.md +445 -0
  111. package/web/references/eslite/DESIGN.md +257 -0
  112. package/web/references/evaair/DESIGN.md +338 -0
  113. package/web/references/expo/DESIGN.md +238 -331
  114. package/web/references/familymart-tw/DESIGN.md +254 -0
  115. package/web/references/ferrari/DESIGN.md +160 -377
  116. package/web/references/figma/DESIGN.md +197 -451
  117. package/web/references/fitpet/DESIGN.md +445 -0
  118. package/web/references/flex/DESIGN.md +170 -253
  119. package/web/references/framer/DESIGN.md +197 -340
  120. package/web/references/freee/DESIGN.md +211 -533
  121. package/web/references/friendliai/DESIGN.md +431 -0
  122. package/web/references/frip/DESIGN.md +440 -0
  123. package/web/references/furiosaai/DESIGN.md +450 -0
  124. package/web/references/gangnamunni/DESIGN.md +154 -591
  125. package/web/references/gaudiolab/DESIGN.md +414 -0
  126. package/web/references/google/DESIGN.md +290 -398
  127. package/web/references/goorm/DESIGN.md +470 -0
  128. package/web/references/greencar/DESIGN.md +420 -0
  129. package/web/references/hackle/DESIGN.md +472 -0
  130. package/web/references/hashicorp/DESIGN.md +273 -318
  131. package/web/references/heydealer/DESIGN.md +429 -0
  132. package/web/references/humanscape/DESIGN.md +433 -0
  133. package/web/references/hwahae/DESIGN.md +453 -0
  134. package/web/references/hyundai/DESIGN.md +158 -368
  135. package/web/references/hyundaicard/DESIGN.md +171 -121
  136. package/web/references/ibm/DESIGN.md +227 -378
  137. package/web/references/idus/DESIGN.md +450 -0
  138. package/web/references/igaworks/DESIGN.md +437 -0
  139. package/web/references/inflearn/DESIGN.md +221 -366
  140. package/web/references/intuit/DESIGN.md +244 -0
  141. package/web/references/jandi/DESIGN.md +191 -291
  142. package/web/references/jobplanet/DESIGN.md +415 -0
  143. package/web/references/kakao/DESIGN.md +287 -475
  144. package/web/references/kakaobank/DESIGN.md +220 -521
  145. package/web/references/kakaogames/DESIGN.md +220 -0
  146. package/web/references/kakaopay/DESIGN.md +207 -526
  147. package/web/references/karrot/DESIGN.md +227 -251
  148. package/web/references/kb-kookmin/DESIGN.md +308 -0
  149. package/web/references/kbank/DESIGN.md +220 -175
  150. package/web/references/kcd/DESIGN.md +432 -0
  151. package/web/references/kmong/DESIGN.md +281 -356
  152. package/web/references/krds/DESIGN.md +245 -19
  153. package/web/references/kream/DESIGN.md +224 -359
  154. package/web/references/kurly/DESIGN.md +211 -533
  155. package/web/references/kyobobook/DESIGN.md +445 -0
  156. package/web/references/lablup/DESIGN.md +474 -0
  157. package/web/references/lamborghini/DESIGN.md +198 -360
  158. package/web/references/lemonbase/DESIGN.md +452 -0
  159. package/web/references/lguplus/DESIGN.md +259 -0
  160. package/web/references/likelion/DESIGN.md +283 -0
  161. package/web/references/line/DESIGN.md +396 -355
  162. package/web/references/linear.app/DESIGN.md +209 -562
  163. package/web/references/lotteon/DESIGN.md +386 -0
  164. package/web/references/lovable/DESIGN.md +255 -349
  165. package/web/references/makinarocks/DESIGN.md +242 -0
  166. package/web/references/maum-ai/DESIGN.md +423 -0
  167. package/web/references/medibloc/DESIGN.md +425 -0
  168. package/web/references/megabox/DESIGN.md +232 -0
  169. package/web/references/mercari/DESIGN.md +217 -434
  170. package/web/references/microsoft/DESIGN.md +234 -388
  171. package/web/references/mildang/DESIGN.md +411 -0
  172. package/web/references/millie/DESIGN.md +183 -504
  173. package/web/references/minimax/DESIGN.md +264 -322
  174. package/web/references/miricanvas/DESIGN.md +182 -355
  175. package/web/references/miro/DESIGN.md +234 -232
  176. package/web/references/mistral.ai/DESIGN.md +231 -314
  177. package/web/references/mixi/DESIGN.md +234 -0
  178. package/web/references/moin/DESIGN.md +445 -0
  179. package/web/references/mongodb/DESIGN.md +219 -316
  180. package/web/references/moreh/DESIGN.md +437 -0
  181. package/web/references/musinsa/DESIGN.md +184 -510
  182. package/web/references/mynavi/DESIGN.md +242 -0
  183. package/web/references/myrealtrip/DESIGN.md +169 -406
  184. package/web/references/naver/DESIGN.md +328 -499
  185. package/web/references/naverwebtoon/DESIGN.md +172 -395
  186. package/web/references/neosapience/DESIGN.md +441 -0
  187. package/web/references/nhn/DESIGN.md +169 -346
  188. package/web/references/nhncloud/DESIGN.md +185 -123
  189. package/web/references/nota/DESIGN.md +451 -0
  190. package/web/references/notion/DESIGN.md +271 -475
  191. package/web/references/nrise/DESIGN.md +417 -0
  192. package/web/references/ohouse/DESIGN.md +210 -549
  193. package/web/references/oliveyoung/DESIGN.md +217 -326
  194. package/web/references/ollama/DESIGN.md +241 -308
  195. package/web/references/onestore/DESIGN.md +248 -0
  196. package/web/references/palantir/DESIGN.md +256 -0
  197. package/web/references/panasonic/DESIGN.md +276 -0
  198. package/web/references/patternfly/DESIGN.md +259 -0
  199. package/web/references/payhere/DESIGN.md +438 -0
  200. package/web/references/pega/DESIGN.md +262 -0
  201. package/web/references/peoplefund/DESIGN.md +431 -0
  202. package/web/references/petfriends/DESIGN.md +428 -0
  203. package/web/references/pinkfong/DESIGN.md +199 -367
  204. package/web/references/pinterest/DESIGN.md +258 -308
  205. package/web/references/portone/DESIGN.md +446 -0
  206. package/web/references/poya/DESIGN.md +286 -0
  207. package/web/references/pozalabs/DESIGN.md +438 -0
  208. package/web/references/protopie/DESIGN.md +419 -0
  209. package/web/references/qraft/DESIGN.md +448 -0
  210. package/web/references/queenit/DESIGN.md +432 -0
  211. package/web/references/quotabook/DESIGN.md +449 -0
  212. package/web/references/rebellions/DESIGN.md +449 -0
  213. package/web/references/recruit/DESIGN.md +247 -0
  214. package/web/references/remember/DESIGN.md +202 -396
  215. package/web/references/resend/DESIGN.md +274 -348
  216. package/web/references/returnzero/DESIGN.md +460 -0
  217. package/web/references/sakura-internet/DESIGN.md +269 -0
  218. package/web/references/samsung/DESIGN.md +157 -359
  219. package/web/references/sandoll/DESIGN.md +445 -0
  220. package/web/references/sanity/DESIGN.md +241 -375
  221. package/web/references/saramin/DESIGN.md +465 -0
  222. package/web/references/scatterlab/DESIGN.md +412 -0
  223. package/web/references/selectstar/DESIGN.md +439 -0
  224. package/web/references/servicenow/DESIGN.md +289 -0
  225. package/web/references/shiftee/DESIGN.md +468 -0
  226. package/web/references/shinhanbank/DESIGN.md +161 -341
  227. package/web/references/shinhancard/DESIGN.md +208 -319
  228. package/web/references/sionic/DESIGN.md +454 -0
  229. package/web/references/sktelecom/DESIGN.md +310 -0
  230. package/web/references/socar/DESIGN.md +125 -32
  231. package/web/references/softbank/DESIGN.md +231 -0
  232. package/web/references/solapi/DESIGN.md +483 -0
  233. package/web/references/sony/DESIGN.md +234 -0
  234. package/web/references/soop/DESIGN.md +261 -0
  235. package/web/references/spacex/DESIGN.md +184 -323
  236. package/web/references/spotify/DESIGN.md +253 -394
  237. package/web/references/squeezebits/DESIGN.md +441 -0
  238. package/web/references/stayfolio/DESIGN.md +422 -0
  239. package/web/references/stripe/DESIGN.md +212 -491
  240. package/web/references/supabase/DESIGN.md +244 -316
  241. package/web/references/supertone/DESIGN.md +413 -0
  242. package/web/references/tabling/DESIGN.md +415 -0
  243. package/web/references/taishinbank/DESIGN.md +243 -0
  244. package/web/references/teamlab/DESIGN.md +240 -0
  245. package/web/references/teamsparta/DESIGN.md +472 -0
  246. package/web/references/tellingme/DESIGN.md +392 -0
  247. package/web/references/tesla/DESIGN.md +244 -427
  248. package/web/references/thsr/DESIGN.md +284 -0
  249. package/web/references/thumbtack/DESIGN.md +302 -0
  250. package/web/references/together.ai/DESIGN.md +257 -304
  251. package/web/references/toss/DESIGN.md +251 -593
  252. package/web/references/toss-securities/DESIGN.md +255 -178
  253. package/web/references/tossbank/DESIGN.md +195 -491
  254. package/web/references/toyota/DESIGN.md +238 -0
  255. package/web/references/tving/DESIGN.md +197 -245
  256. package/web/references/typed/DESIGN.md +413 -0
  257. package/web/references/uber/DESIGN.md +256 -333
  258. package/web/references/udn/DESIGN.md +250 -0
  259. package/web/references/upbit/DESIGN.md +145 -256
  260. package/web/references/upstage/DESIGN.md +211 -204
  261. package/web/references/uswds/DESIGN.md +287 -0
  262. package/web/references/vercel/DESIGN.md +236 -440
  263. package/web/references/vuno/DESIGN.md +413 -0
  264. package/web/references/wanted/DESIGN.md +215 -487
  265. package/web/references/weverse/DESIGN.md +437 -0
  266. package/web/references/wise/DESIGN.md +223 -231
  267. package/web/references/wisetracker/DESIGN.md +462 -0
  268. package/web/references/wooribank/DESIGN.md +245 -0
  269. package/web/references/yanolja/DESIGN.md +250 -419
  270. package/web/references/yeogiotte/DESIGN.md +235 -418
  271. package/web/references/zapier/DESIGN.md +256 -377
  272. package/web/references/zendesk/DESIGN.md +288 -0
  273. package/web/references/zigzag/DESIGN.md +200 -621
  274. package/dist/install-skills-7UUDOLG2.js +0 -734
  275. package/dist/install-skills-7UUDOLG2.js.map +0 -1
@@ -4,420 +4,326 @@ name: Lovable
4
4
  country: US
5
5
  category: developer-tools
6
6
  homepage: "https://lovable.dev"
7
- primary_color: "#ff6f61"
7
+ primary_color: "#030303"
8
8
  logo:
9
9
  type: favicon
10
10
  slug: "https://lovable.dev/favicon-192x192.png"
11
- verified: "2026-05-15"
11
+ verified: "2026-07-13"
12
12
  omd: "0.1"
13
+ verification_v2:
14
+ schema: 2
15
+ checked: "2026-07-13"
16
+ surfaces:
17
+ - { id: home, kind: marketing-product, url: "https://lovable.dev/ko", inspected: "2026-07-12" }
18
+ - { id: pricing, kind: marketing-pricing, url: "https://lovable.dev/ko/pricing", inspected: "2026-07-12" }
19
+ - { id: product-managers, kind: marketing-product, url: "https://lovable.dev/ko/product-managers", inspected: "2026-07-12" }
20
+ - { id: docs-welcome, kind: documentation-chrome, url: "https://docs.lovable.dev/introduction/welcome", inspected: "2026-07-13" }
21
+ - { id: docs-quick-start, kind: documentation-chrome, url: "https://docs.lovable.dev/introduction/getting-started", inspected: "2026-07-13" }
22
+ sources:
23
+ - { id: home-live, kind: product-surface, url: "https://lovable.dev/ko", captured: "2026-07-12" }
24
+ - { id: pricing-live, kind: product-surface, url: "https://lovable.dev/ko/pricing", captured: "2026-07-12" }
25
+ - { id: product-managers-live, kind: product-surface, url: "https://lovable.dev/ko/product-managers", captured: "2026-07-12" }
26
+ - { id: docs-welcome-official, kind: official-doc, url: "https://docs.lovable.dev/introduction/welcome", captured: "2026-07-13" }
27
+ - { id: docs-quick-start-official, kind: official-doc, url: "https://docs.lovable.dev/introduction/getting-started", captured: "2026-07-13" }
28
+ - { id: camera-font-asset, kind: brand-asset, url: "https://lovable.dev/fonts/CameraPlainVariable-c48bd243.woff2", captured: "2026-07-12" }
29
+ conflicts: []
30
+ claims:
31
+ "tokens.colors.ink": &home { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-12" }
32
+ "tokens.colors.canvas": *home
33
+ "tokens.colors.border": *home
34
+ "tokens.colors.overlay-border": &pricing { surface_id: pricing, source_id: pricing-live, method: computed-style, captured: "2026-07-12" }
35
+ "tokens.typography.family.ui": &font { surface_id: home, source_id: camera-font-asset, method: computed-style+FontFaceSet, captured: "2026-07-12" }
36
+ "tokens.typography.display.size": *home
37
+ "tokens.typography.display.weight": *home
38
+ "tokens.typography.display.lineHeight": *home
39
+ "tokens.typography.display.tracking": *home
40
+ "tokens.typography.display.use": *home
41
+ "tokens.typography.section.size": *home
42
+ "tokens.typography.section.weight": *home
43
+ "tokens.typography.section.lineHeight": *home
44
+ "tokens.typography.section.tracking": *home
45
+ "tokens.typography.section.use": *home
46
+ "tokens.typography.heading.size": *pricing
47
+ "tokens.typography.heading.weight": *pricing
48
+ "tokens.typography.heading.lineHeight": *pricing
49
+ "tokens.typography.heading.tracking": *pricing
50
+ "tokens.typography.heading.use": *pricing
51
+ "tokens.typography.body.size": *home
52
+ "tokens.typography.body.weight": *home
53
+ "tokens.typography.body.lineHeight": *home
54
+ "tokens.typography.body.use": *home
55
+ "tokens.typography.navigation.size": *home
56
+ "tokens.typography.navigation.weight": *home
57
+ "tokens.typography.navigation.lineHeight": *home
58
+ "tokens.typography.navigation.use": *home
59
+ "tokens.typography.action.size": *home
60
+ "tokens.typography.action.weight": *home
61
+ "tokens.typography.action.lineHeight": *home
62
+ "tokens.typography.action.use": *home
63
+ "tokens.spacing.xxs": *home
64
+ "tokens.spacing.xs": *home
65
+ "tokens.spacing.sm": *home
66
+ "tokens.spacing.md": *home
67
+ "tokens.spacing.lg": *home
68
+ "tokens.spacing.xl": *home
69
+ "tokens.spacing.xxl": *home
70
+ "tokens.spacing.3xl": *home
71
+ "tokens.rounded.nav-trigger": *home
72
+ "tokens.rounded.control": *home
73
+ "tokens.rounded.option": *pricing
74
+ "tokens.rounded.overlay": *pricing
75
+ "tokens.rounded.full": *home
76
+ "tokens.components.header-nav-trigger.type": *home
77
+ "tokens.components.header-nav-trigger.bg": *home
78
+ "tokens.components.header-nav-trigger.fg": *home
79
+ "tokens.components.header-nav-trigger.radius": *home
80
+ "tokens.components.header-nav-trigger.padding": *home
81
+ "tokens.components.header-nav-trigger.height": *home
82
+ "tokens.components.header-nav-trigger.font": *home
83
+ "tokens.components.header-nav-trigger.states": *home
84
+ "tokens.components.header-nav-trigger.use": *home
85
+ "tokens.components.header-primary-action.type": *home
86
+ "tokens.components.header-primary-action.bg": *home
87
+ "tokens.components.header-primary-action.fg": *home
88
+ "tokens.components.header-primary-action.radius": *home
89
+ "tokens.components.header-primary-action.padding": *home
90
+ "tokens.components.header-primary-action.height": *home
91
+ "tokens.components.header-primary-action.font": *home
92
+ "tokens.components.header-primary-action.states": *home
93
+ "tokens.components.header-primary-action.use": *home
94
+ "tokens.components.pricing-cycle-tab.type": *pricing
95
+ "tokens.components.pricing-cycle-tab.bg": *pricing
96
+ "tokens.components.pricing-cycle-tab.fg": *pricing
97
+ "tokens.components.pricing-cycle-tab.radius": *pricing
98
+ "tokens.components.pricing-cycle-tab.padding": *pricing
99
+ "tokens.components.pricing-cycle-tab.height": *pricing
100
+ "tokens.components.pricing-cycle-tab.font": *pricing
101
+ "tokens.components.pricing-cycle-tab.states": *pricing
102
+ "tokens.components.pricing-cycle-tab.use": *pricing
103
+ "tokens.components.pricing-selector.type": *pricing
104
+ "tokens.components.pricing-selector.bg": *pricing
105
+ "tokens.components.pricing-selector.fg": *pricing
106
+ "tokens.components.pricing-selector.border": *pricing
107
+ "tokens.components.pricing-selector.radius": *pricing
108
+ "tokens.components.pricing-selector.height": *pricing
109
+ "tokens.components.pricing-selector.font": *pricing
110
+ "tokens.components.pricing-selector.states": *pricing
111
+ "tokens.components.pricing-selector.use": *pricing
112
+ "tokens.components.pricing-info-dialog.type": *pricing
113
+ "tokens.components.pricing-info-dialog.bg": *pricing
114
+ "tokens.components.pricing-info-dialog.fg": *pricing
115
+ "tokens.components.pricing-info-dialog.radius": *pricing
116
+ "tokens.components.pricing-info-dialog.padding": *pricing
117
+ "tokens.components.pricing-info-dialog.font": *pricing
118
+ "tokens.components.pricing-info-dialog.shadow": *pricing
119
+ "tokens.components.pricing-info-dialog.states": *pricing
120
+ "tokens.components.pricing-info-dialog.use": *pricing
13
121
  tokens:
14
- source: prose-derived
15
- extracted: "2026-06-09"
16
- components_harvested: true
122
+ source: reconciled
123
+ extracted: "2026-07-12"
124
+ note: "Three current public marketing/product routes were captured. Authenticated builder UI, documentation chrome, and declared-only font assets are separate evidence domains; only current live public claims are machine tokens."
17
125
  colors:
18
- primary: "#ff6f61"
19
- cream: "#f7f4ed"
20
- charcoal: "#1c1c1c"
21
- off-white: "#fcfbf8"
22
- muted: "#5f5f5d"
126
+ ink: "#030303"
127
+ canvas: "#fafafa"
23
128
  border: "#eceae4"
24
- ring: "#3b82f6"
25
- on-primary: "#fcfbf8"
129
+ overlay-border: "#e7e7e6"
26
130
  typography:
27
- family: { sans: "Camera Plain Variable", mono: "ui-monospace" }
28
- display-hero: { size: 60, weight: 600, lineHeight: 1.10, tracking: -1.5, use: "Maximum impact, editorial" }
29
- display-alt: { size: 60, weight: 480, lineHeight: 1.00, use: "Lighter hero variant" }
30
- section: { size: 48, weight: 600, lineHeight: 1.00, tracking: -1.2, use: "Feature section titles" }
31
- subheading: { size: 36, weight: 600, lineHeight: 1.10, tracking: -0.9, use: "Sub-sections" }
32
- card-title: { size: 20, weight: 400, lineHeight: 1.25, use: "Card headings" }
33
- body-large: { size: 18, weight: 400, lineHeight: 1.38, use: "Introductions" }
34
- body: { size: 16, weight: 400, lineHeight: 1.50, use: "Standard reading text" }
35
- button: { size: 16, weight: 400, lineHeight: 1.50, use: "Button labels" }
36
- button-small: { size: 14, weight: 400, lineHeight: 1.50, use: "Compact buttons" }
37
- caption: { size: 14, weight: 400, lineHeight: 1.50, use: "Metadata, small text" }
38
- spacing: { xs: 8, sm: 10, md: 12, base: 16, lg: 24, xl: 32, xxl: 56, section: 80 }
39
- rounded: { sm: 4, md: 6, lg: 16, full: 9999 }
40
- shadow:
41
- inset: "rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px 0px"
42
- focus: "rgba(0,0,0,0.1) 0px 4px 12px"
131
+ family: { ui: "Camera Plain Variable" }
132
+ display: { size: 60, weight: 600, lineHeight: 1.1, tracking: -1.5, use: "Current public display heading" }
133
+ section: { size: 48, weight: 600, lineHeight: 1.1, tracking: -1.2, use: "Repeated public section heading" }
134
+ heading: { size: 36, weight: 600, lineHeight: 1.1, tracking: -0.9, use: "Current public feature heading" }
135
+ body: { size: 16, weight: 400, lineHeight: 1.5, use: "Public body and list copy" }
136
+ navigation: { size: 15, weight: 400, lineHeight: 1.6, use: "Top-level public navigation trigger" }
137
+ action: { size: 14, weight: 400, lineHeight: 1.5, use: "Current compact public action" }
138
+ spacing: { xxs: 4, xs: 6, sm: 8, md: 10, lg: 12, xl: 16, xxl: 24, 3xl: 32 }
139
+ rounded: { nav-trigger: 0, control: 8, option: 6, overlay: 12, full: 9999 }
140
+ components_harvested: true
43
141
  components:
44
- button-primary: { type: button, bg: "#1c1c1c", fg: "#fcfbf8", radius: 6, padding: "8px 16px", use: "Primary CTA with inset shadow" }
45
- button-ghost: { type: button, bg: "transparent", fg: "#1c1c1c", radius: 6, padding: "8px 16px", use: "Secondary actions, 1px interactive border" }
46
- button-cream: { type: button, bg: "#f7f4ed", fg: "#1c1c1c", radius: 6, padding: "8px 16px", use: "Tertiary/toolbar actions" }
47
- button-pill: { type: button, bg: "#f7f4ed", fg: "#1c1c1c", radius: 9999, use: "Icon button, plan mode toggle, voice record" }
48
- card-standard: { type: card, bg: "#f7f4ed", radius: 12, use: "Standard card, 1px border, no shadow" }
49
- input-default: { type: input, bg: "#f7f4ed", fg: "#1c1c1c", radius: 6, use: "Form field, 1px border, ring-blue focus" }
50
- badge-pill: { type: badge, bg: "#f7f4ed", fg: "#1c1c1c", radius: 9999, use: "Suggestion pill with eceae4 border" }
142
+ header-nav-trigger: { type: button, bg: "transparent", fg: "#030303", radius: "0px", padding: "4px 0px 4px 6px", height: "32px", font: "15px / 400 / 24px", states: "hover, pressed, and focus captured on home::[data-omd-capture=\"1\"]", use: "Top-level public navigation menu trigger" }
143
+ header-primary-action: { type: button, bg: "lab(0 0 0 / 0.88)", fg: "lab(98.2716 0 0)", radius: "8px", padding: "6px 10px", height: "32px", font: "14px / 400 / 21px", states: "default captured on all three public routes; no role-specific hover, pressed, or focus variant promoted", use: "Current header primary action" }
144
+ pricing-cycle-tab: { type: tab, bg: "transparent", fg: "lab(42.0087 -0.102207 0.363302)", radius: "9999px", padding: "0px 12px", height: "32px", font: "14px / 400 / 21px", states: "hover, pressed, and selected captured on pricing::[data-omd-capture=\"9\"]", use: "Pricing-cycle tab on the public pricing route" }
145
+ pricing-selector: { type: button, bg: "lab(100 0 0 / 0.8)", fg: "lab(0.903296 0 0)", border: "lab(0.903296 0 0)", radius: "8px", height: "32px", font: "14px / 400 / 21px", states: "pressed, focus, and menu-open captured on pricing::[data-omd-capture=\"12\"]", use: "Public pricing combobox trigger" }
146
+ pricing-info-dialog: { type: dialog, bg: "lab(99.9884 -0.0000298023 0)", fg: "lab(0.903296 0 0)", radius: "12px", padding: "16px", font: "16px / 400 / 24px", shadow: "rgb(255, 255, 255) 0px 0px 0px 1px, lab(98.2716 0 0) 0px 0px 0px 1px, rgba(119, 119, 113, 0.16) 0px 0px 0px 2px, rgba(0, 0, 0, 0.04) 0px 2px 1px 0px, rgba(0, 0, 0, 0.04) 0px 2px 1px -0.5px, rgba(0, 0, 0, 0.04) 0px 4px 3px -1.5px, rgba(0, 0, 0, 0.04) 0px 7px 6px -3px, rgba(0, 0, 0, 0.04) 0px 13px 12px -6px, rgba(0, 0, 0, 0.04) 0px 25px 24px -12px", states: "dialog-open captured on pricing::[data-omd-interaction-capture=\"dialog-3-0\"]", use: "Public pricing information dialog" }
51
147
  ---
52
148
 
53
149
  # Design System Inspiration of Lovable
54
150
 
55
151
  ## 1. Visual Theme & Atmosphere
56
152
 
57
- Lovable's website radiates warmth through restraint. The entire page sits on a creamy, parchment-toned background (`#f7f4ed`) that immediately separates it from the cold-white conventions of most developer tool sites. This isn't minimalism for minimalism's sake it's a deliberate choice to feel approachable, almost analog, like a well-crafted notebook. The near-black text (`#1c1c1c`) against this warm cream creates a contrast ratio that's easy on the eyes while maintaining sharp readability.
58
-
59
- The custom Camera Plain Variable typeface is the system's secret weapon. Unlike geometric sans-serifs that signal "tech company," Camera Plain has a humanist warmth — slightly rounded terminals, organic curves, and a comfortable reading rhythm. At display sizes (48px–60px), weight 600 with aggressive negative letter-spacing (-0.9px to -1.5px) compresses headlines into confident, editorial statements. The font uses `ui-sans-serif, system-ui` as fallbacks, acknowledging that the custom typeface carries the brand personality.
153
+ Lovable is a full-stack AI development platform for turning natural-language requests into editable web applications, from early prototypes through deployment. Its current public experience gives that technical promise a deliberately quiet interface: a `#fafafa` canvas, `#030303` ink, warm hairlines, Camera Plain Variable, and a near-black action rather than a saturated universal brand fill. The contrast is purposeful: a chat-driven way to create software is presented with a compact, legible public shell instead of a visually noisy “AI” motif.
60
154
 
61
- What makes Lovable's visual system distinctive is its opacity-driven depth model. Rather than using a traditional gray scale, the system modulates `#1c1c1c` at varying opacities (0.03, 0.04, 0.4, 0.82–0.83) to create a unified tonal range. Every shade of gray on the page is technically the same hue just more or less transparent. This creates a visual coherence that's nearly impossible to achieve with arbitrary hex values. The border system follows suit: `1px solid #eceae4` for light divisions and `1px solid rgba(28, 28, 28, 0.4)` for stronger interactive boundaries.
155
+ The July 12 capture covers three Korean-localized public marketing/product routes: home, pricing, and the product-managers page. Those routes share a loaded Camera Plain Variable family and the same header action geometry, while the pricing route adds local tabs, comboboxes, menus, and dialogs. The capture does not authorize claims about the authenticated builder, native clients, or any generated app. Lovable’s documentation supplies product context and workflow language, but its documentation chrome is a separate source domain and does not populate the tokens below.
62
156
 
63
- **Key Characteristics:**
64
- - Warm parchment background (`#f7f4ed`) not white, not beige, a deliberate cream that feels hand-selected
65
- - Camera Plain Variable typeface with humanist warmth and editorial letter-spacing at display sizes
66
- - Opacity-driven color system: all grays derived from `#1c1c1c` at varying transparency levels
67
- - Inset shadow technique on buttons: `rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset`
68
- - Warm neutral border palette: `#eceae4` for subtle, `rgba(28,28,28,0.4)` for interactive elements
69
- - Full-pill radius (`9999px`) used extensively for action buttons and icon containers
70
- - Focus state uses `rgba(0,0,0,0.1) 0px 4px 12px` shadow for soft, warm emphasis
71
- - shadcn/ui + Radix UI component primitives with Tailwind CSS utility styling
157
+ **Key characteristics:**
158
+ - Quiet public canvas: `#fafafa` with `#030303` text and `#eceae4` hairlines
159
+ - Camera Plain Variable is visibly loaded across all three captured routes
160
+ - Header primary action is `lab(0 0 0 / 0.88)`, 8px-rounded, and compact
161
+ - Public header menu triggers remain square; full-pill geometry is local to pricing tabs and small actions
162
+ - Pricing menus and dialogs are 12px rounded overlays with a measured layered shadow
72
163
 
73
164
  ## 2. Color Palette & Roles
74
165
 
75
- ### Primary
76
- - **Cream** (`#f7f4ed`): Page background, card surfaces, button surfaces. The foundation — warm, paper-like, human.
77
- - **Charcoal** (`#1c1c1c`): Primary text, headings, dark button backgrounds. Not pure black organic warmth.
78
- - **Off-White** (`#fcfbf8`): Button text on dark backgrounds, subtle highlight. Barely distinguishable from pure white.
79
-
80
- ### Neutral Scale (Opacity-Based)
81
- - **Charcoal 100%** (`#1c1c1c`): Primary text, headings, dark surfaces.
82
- - **Charcoal 83%** (`rgba(28,28,28,0.83)`): Strong secondary text.
83
- - **Charcoal 82%** (`rgba(28,28,28,0.82)`): Body copy.
84
- - **Muted Gray** (`#5f5f5d`): Secondary text, descriptions, captions.
85
- - **Charcoal 40%** (`rgba(28,28,28,0.4)`): Interactive borders, button outlines.
86
- - **Charcoal 4%** (`rgba(28,28,28,0.04)`): Subtle hover backgrounds, micro-tints.
87
- - **Charcoal 3%** (`rgba(28,28,28,0.03)`): Barely-visible overlays, background depth.
88
-
89
- ### Surface & Border
90
- - **Light Cream** (`#eceae4`): Card borders, dividers, image outlines. The warm divider line.
91
- - **Cream Surface** (`#f7f4ed`): Card backgrounds, section fills — same as page background for seamless integration.
92
-
93
- ### Interactive
94
- - **Ring Blue** (`#3b82f6` at 50% opacity): `--tw-ring-color`, Tailwind focus ring.
95
- - **Focus Shadow** (`rgba(0,0,0,0.1) 0px 4px 12px`): Focus and active state shadow — soft, warm, diffused.
166
+ - **Ink** (`#030303`): repeated public headings, body copy, and navigation labels.
167
+ - **Canvas** (`#fafafa`): repeated page background across the captured routes.
168
+ - **Primary action** (`lab(0 0 0 / 0.88)`) with **on-action** (`lab(98.2716 0 0)`): current compact header action.
169
+ - **Hairline** (`#eceae4`): repeated public boundary color.
170
+ - **Overlay border** (`#e7e7e6`): observed on pricing overlays and options.
96
171
 
97
- ### Inset Shadows
98
- - **Button Inset** (`rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px 0px`): The signature multi-layer inset shadow on dark buttons.
172
+ The capture also contains local warm surfaces and a selected-option violet wash in pricing. They remain component-local observations rather than a universal primary palette. The prior coral `#ff6f61`, generic focus blue, and a universal cream card surface are removed because this capture does not establish those roles.
99
173
 
100
174
  ## 3. Typography Rules
101
175
 
102
- ### Font Family
103
- - **Primary**: `Camera Plain Variable`, with fallbacks: `ui-sans-serif, system-ui`
104
- - **Weight range**: 400 (body/reading), 480 (special display), 600 (headings/emphasis)
105
- - **Feature**: Variable font with continuous weight axis — allows fine-tuned intermediary weights like 480.
106
-
107
- ### Hierarchy
108
-
109
- | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
110
- |------|------|------|--------|-------------|----------------|-------|
111
- | Display Hero | Camera Plain Variable | 60px (3.75rem) | 600 | 1.00–1.10 (tight) | -1.5px | Maximum impact, editorial |
112
- | Display Alt | Camera Plain Variable | 60px (3.75rem) | 480 | 1.00 (tight) | normal | Lighter hero variant |
113
- | Section Heading | Camera Plain Variable | 48px (3.00rem) | 600 | 1.00 (tight) | -1.2px | Feature section titles |
114
- | Sub-heading | Camera Plain Variable | 36px (2.25rem) | 600 | 1.10 (tight) | -0.9px | Sub-sections |
115
- | Card Title | Camera Plain Variable | 20px (1.25rem) | 400 | 1.25 (tight) | normal | Card headings |
116
- | Body Large | Camera Plain Variable | 18px (1.13rem) | 400 | 1.38 | normal | Introductions |
117
- | Body | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
118
- | Button | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Button labels |
119
- | Button Small | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Compact buttons |
120
- | Link | Camera Plain Variable | 16px (1.00rem) | 400 | 1.50 | normal | Underline decoration |
121
- | Link Small | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Footer links |
122
- | Caption | Camera Plain Variable | 14px (0.88rem) | 400 | 1.50 | normal | Metadata, small text |
123
-
124
- ### Principles
125
- - **Warm humanist voice**: Camera Plain Variable gives Lovable its approachable personality. The slightly rounded terminals and organic curves contrast with the sharp geometric sans-serifs used by most developer tools.
126
- - **Variable weight as design tool**: The font supports continuous weight values (e.g., 480), enabling nuanced hierarchy beyond standard weight stops. Weight 480 at 60px creates a display style that feels lighter than semibold but stronger than regular.
127
- - **Compression at scale**: Headlines use negative letter-spacing (-0.9px to -1.5px) for editorial impact. Body text stays at normal tracking for comfortable reading.
128
- - **Two weights, clear roles**: 400 (body/UI/links/buttons) and 600 (headings/emphasis). The narrow weight range creates hierarchy through size and spacing, not weight variation.
176
+ ### Font evidence boundary
129
177
 
130
- ## 4. Component Stylings
178
+ | Evidence class | Resolution |
179
+ |---|---|
180
+ | Official product-use | Lovable’s public pages and documentation position the platform as a natural-language app-building workflow; they do not publish a separate typography system. |
181
+ | Live surface-use | Camera Plain Variable is computed on 758 visible captured elements and backed by loaded `document.fonts` entries plus first-party WOFF2 source URLs. |
182
+ | Official distributed asset | The first-party WOFF2 files establish live delivery only; redistribution or license terms were not established by this packet. |
183
+ | Declared-only | Roboto Mono Variable has six declared first-party source URLs but zero visible computed uses in the capture. |
184
+ | Unresolved | Authenticated builder, native/desktop, and generated-app typography remain outside the public capture. |
185
+
186
+ | Role | Family | Size | Weight | Line height | Tracking |
187
+ |---|---|---:|---:|---:|---:|
188
+ | Display | Camera Plain Variable | 60px | 600 | 66px | -1.5px |
189
+ | Section | Camera Plain Variable | 48px | 600 | 52.8px | -1.2px |
190
+ | Feature heading | Camera Plain Variable | 36px | 600 | 39.6px | -0.9px |
191
+ | Body | Camera Plain Variable | 16px | 400 | 24px | normal |
192
+ | Navigation | Camera Plain Variable | 15px | 400 | 24px | normal |
193
+ | Compact action | Camera Plain Variable | 14px | 400 | 21px | normal |
131
194
 
132
- ### Buttons
195
+ ## 4. Component Stylings
133
196
 
134
- **Primary Dark (Inset Shadow)**
135
- - Background: `#1c1c1c`
136
- - Text: `#fcfbf8`
137
- - Padding: 8px 16px
138
- - Radius: 6px
139
- - Shadow: `rgba(0,0,0,0) 0px 0px 0px 0px, rgba(0,0,0,0) 0px 0px 0px 0px, rgba(255,255,255,0.2) 0px 0.5px 0px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px 0px`
140
- - Active: opacity 0.8
141
- - Focus: `rgba(0,0,0,0.1) 0px 4px 12px` shadow
142
- - Use: Primary CTA ("Start Building", "Get Started")
197
+ ### Header navigation trigger
143
198
 
144
- **Ghost / Outline**
199
+ **Current public menu trigger**
145
200
  - Background: transparent
146
- - Text: `#1c1c1c`
147
- - Padding: 8px 16px
148
- - Radius: 6px
149
- - Border: `1px solid rgba(28,28,28,0.4)`
150
- - Active: opacity 0.8
151
- - Focus: `rgba(0,0,0,0.1) 0px 4px 12px` shadow
152
- - Use: Secondary actions ("Log In", "Documentation")
153
-
154
- **Cream Surface**
155
- - Background: `#f7f4ed`
156
- - Text: `#1c1c1c`
157
- - Padding: 8px 16px
158
- - Radius: 6px
159
- - No border
160
- - Active: opacity 0.8
161
- - Use: Tertiary actions, toolbar buttons
162
-
163
- **Pill / Icon Button**
164
- - Background: `#f7f4ed`
165
- - Text: `#1c1c1c`
166
- - Radius: 9999px (full pill)
167
- - Shadow: same inset pattern as primary dark
168
- - Opacity: 0.5 (default), 0.8 (active)
169
- - Use: Additional actions, plan mode toggle, voice recording
170
-
171
- ### Cards & Containers
172
- - Background: `#f7f4ed` (matches page)
173
- - Border: `1px solid #eceae4`
174
- - Radius: 12px (standard), 16px (featured), 8px (compact)
175
- - No box-shadow by default borders define boundaries
176
- - Image cards: `1px solid #eceae4` with 12px radius
177
-
178
- ### Inputs & Forms
179
- - Background: `#f7f4ed`
180
- - Text: `#1c1c1c`
181
- - Border: `1px solid #eceae4`
182
- - Radius: 6px
183
- - Focus: ring blue (`rgba(59,130,246,0.5)`) outline
184
- - Placeholder: `#5f5f5d`
185
-
186
- ### Navigation
187
- - Clean horizontal nav on cream background, fixed
188
- - Logo/wordmark left-aligned (128.75 x 22px)
189
- - Links: Camera Plain 14–16px weight 400, `#1c1c1c` text
190
- - CTA: dark button with inset shadow, 6px radius
191
- - Mobile: hamburger menu with 6px radius button
192
- - Subtle border or no border on scroll
193
-
194
- ### Links
195
- - Color: `#1c1c1c`
196
- - Decoration: underline (default)
197
- - Hover: primary accent (via CSS variable `hsl(var(--primary))`)
198
- - No color change on hover — decoration carries the interactive signal
199
-
200
- ### Image Treatment
201
- - Showcase/portfolio images with `1px solid #eceae4` border
202
- - Consistent 12px border radius on all image containers
203
- - Soft gradient backgrounds behind hero content (warm multi-color wash)
204
- - Gallery-style presentation for template/project showcases
205
-
206
- ### Distinctive Components
207
-
208
- **AI Chat Input**
209
- - Large prompt input area with soft borders
210
- - Suggestion pills with `#eceae4` borders
211
- - Voice recording / plan mode toggle buttons as pill shapes (9999px)
212
- - Warm, inviting input area — not clinical
213
-
214
- **Template Gallery**
215
- - Card grid showing project templates
216
- - Each card: image + title, `1px solid #eceae4` border, 12px radius
217
- - Hover: subtle shadow or border darkening
218
- - Category labels as text links
219
-
220
- **Stats Bar**
221
- - Large metrics: "0M+" pattern in 48px+ weight 600
222
- - Descriptive text below in muted gray
223
- - Horizontal layout with generous spacing
201
+ - Text: `#030303`
202
+ - Radius: 0px
203
+ - Padding: 4px 0px 4px 6px
204
+ - Height: 32px
205
+ - Font: Camera Plain Variable 15px / 400 / 24px
206
+ - Hover: `oklab(0.0983389 0.00000446842 0.00000196737 / 0.998508)` text observed
207
+ - Pressed: `oklab(0.100978 0.00000458921 0.00000201977 / 0.993438)` text observed
208
+ - Focus: `oklab(0.0980805 0.00000445659 0.00000196224 / 0.999007)` text observed
209
+ - Use: top-level menu trigger on `home::[data-omd-capture="1"]`
210
+
211
+ ### Header primary action
212
+
213
+ **Current compact primary action**
214
+ - Background: `lab(0 0 0 / 0.88)`
215
+ - Text: `lab(98.2716 0 0)`
216
+ - Radius: 8px
217
+ - Padding: 6px 10px
218
+ - Height: 32px
219
+ - Font: Camera Plain Variable 14px / 400 / 21px
220
+ - Use: repeated header action on home, pricing, and product-managers; selector `*[data-omd-capture="7"]`
221
+
222
+ ### Pricing-cycle tab
223
+
224
+ **Current unselected tab**
225
+ - Background: transparent
226
+ - Text: `lab(42.0087 -0.102207 0.363302)`
227
+ - Radius: 9999px
228
+ - Padding: 0px 12px
229
+ - Height: 32px
230
+ - Font: Camera Plain Variable 14px / 400 / 21px
231
+ - Hover: `oklab(0.499999 -0.000297248 0.000967979)` text observed
232
+ - Pressed: `oklab(0.496991 -0.000295021 0.000960718)` text observed
233
+ - Use: pricing-cycle tab at `pricing::[data-omd-capture="9"]`; selected state was also captured and remains local to this control
234
+
235
+ ### Pricing selector
236
+
237
+ **Current public combobox trigger**
238
+ - Background: `lab(100 0 0 / 0.8)`
239
+ - Text: `lab(0.903296 0 0)`
240
+ - Border: `lab(0.903296 0 0)`
241
+ - Radius: 8px
242
+ - Height: 32px
243
+ - Font: Camera Plain Variable 14px / 400 / 21px
244
+ - Pressed: `rgba(119, 119, 113, 0.4) 0px 0px 0px 1px inset` observed
245
+ - Focus: inset boundary and focus state observed
246
+ - Use: public pricing combobox at `pricing::[data-omd-capture="12"]`
247
+
248
+ ### Pricing information dialog
249
+
250
+ **Current open dialog**
251
+ - Background: `lab(99.9884 -0.0000298023 0)`
252
+ - Text: `lab(0.903296 0 0)`
253
+ - Radius: 12px
254
+ - Padding: 16px
255
+ - Shadow: `rgb(255, 255, 255) 0px 0px 0px 1px, lab(98.2716 0 0) 0px 0px 0px 1px, rgba(119, 119, 113, 0.16) 0px 0px 0px 2px, rgba(0, 0, 0, 0.04) 0px 2px 1px 0px, rgba(0, 0, 0, 0.04) 0px 2px 1px -0.5px, rgba(0, 0, 0, 0.04) 0px 4px 3px -1.5px, rgba(0, 0, 0, 0.04) 0px 7px 6px -3px, rgba(0, 0, 0, 0.04) 0px 13px 12px -6px, rgba(0, 0, 0, 0.04) 0px 25px 24px -12px`
256
+ - Font: Camera Plain Variable 16px / 400 / 24px
257
+ - Use: dialog-open capture at `pricing::[data-omd-interaction-capture="dialog-3-0"]`
258
+
259
+ The captured menu list, option row, selected option, and dialog are pricing-route overlays. Card systems, app prompt inputs, toasts, status treatments, and generated-app controls are omitted because this packet did not establish matching public variants.
224
260
 
225
261
  ## 5. Layout Principles
226
262
 
227
- ### Spacing System
228
- - Base unit: 8px
229
- - Scale: 8px, 10px, 12px, 16px, 24px, 32px, 40px, 56px, 80px, 96px, 128px, 176px, 192px, 208px
230
- - The scale expands generously at the top end — sections use 80px–208px vertical spacing for editorial breathing room
231
-
232
- ### Grid & Container
233
- - Max content width: approximately 1200px (centered)
234
- - Hero: centered single-column with massive vertical padding (96px+)
235
- - Feature sections: 2–3 column grids
236
- - Full-width footer with multi-column link layout
237
- - Showcase sections with centered card grids
238
-
239
- ### Whitespace Philosophy
240
- - **Editorial generosity**: Lovable's spacing is lavish at section boundaries (80px–208px). The warm cream background makes these expanses feel cozy rather than empty.
241
- - **Content-driven rhythm**: Tight internal spacing within cards (12–24px) contrasts with wide section gaps, creating a reading rhythm that alternates between focused content and visual rest.
242
- - **Section separation**: Footer uses `1px solid #eceae4` border and 16px radius container. Sections defined by generous spacing rather than border lines.
243
-
244
- ### Border Radius Scale
245
- - Micro (4px): Small buttons, interactive elements
246
- - Standard (6px): Buttons, inputs, navigation menu
247
- - Comfortable (8px): Compact cards, divs
248
- - Card (12px): Standard cards, image containers, templates
249
- - Container (16px): Large containers, footer sections
250
- - Full Pill (9999px): Action pills, icon buttons, toggles
263
+ The packet establishes a compact public control rhythm: 4, 6, 8, 10, 12, 16, 24, and 32px occur repeatedly in the capture. It does not establish a reusable authenticated-app grid, dashboard layout, or breakpoint system. Keep public page composition and pricing overlays separate from any generated product UI.
251
264
 
252
265
  ## 6. Depth & Elevation
253
266
 
254
- | Level | Treatment | Use |
255
- |-------|-----------|-----|
256
- | Flat (Level 0) | No shadow, cream background | Page surface, most content |
257
- | Bordered (Level 1) | `1px solid #eceae4` | Cards, images, dividers |
258
- | Inset (Level 2) | `rgba(255,255,255,0.2) 0px 0.5px 0px inset, rgba(0,0,0,0.2) 0px 0px 0px 0.5px inset, rgba(0,0,0,0.05) 0px 1px 2px` | Dark buttons, primary actions |
259
- | Focus (Level 3) | `rgba(0,0,0,0.1) 0px 4px 12px` | Active/focus states |
260
- | Ring (Accessibility) | `rgba(59,130,246,0.5)` 2px ring | Keyboard focus on inputs |
261
-
262
- **Shadow Philosophy**: Lovable's depth system is intentionally shallow. Instead of floating cards with dramatic drop-shadows, the system relies on warm borders (`#eceae4`) against the cream surface to create gentle containment. The only notable shadow pattern is the inset shadow on dark buttons — a subtle multi-layer technique where a white highlight line sits at the top edge while a dark ring and soft drop handle the bottom. This creates a tactile, pressed-into-surface feeling rather than a hovering-above-surface feeling. The warm focus shadow (`rgba(0,0,0,0.1) 0px 4px 12px`) is deliberately diffused and large, creating a soft glow rather than a sharp outline.
263
-
264
- ### Decorative Depth
265
- - Hero: soft, warm multi-color gradient wash (pinks, oranges, blues) behind hero — atmospheric, barely visible
266
- - Footer: gradient background with warm tones transitioning to the bottom
267
- - No harsh section dividers — spacing and background warmth handle transitions
267
+ Public base controls are flat. The measured exception is the pricing menu/dialog overlay: a 12px rounded surface with white and near-white rings, a `rgba(119,119,113,0.16)` inset layer, and progressively larger low-opacity black shadows. That is overlay-local depth, not a default card shadow.
268
268
 
269
269
  ## 7. Do's and Don'ts
270
270
 
271
271
  ### Do
272
- - Use the warm cream background (`#f7f4ed`) as the page foundation it's the brand's signature warmth
273
- - Use Camera Plain Variable at display sizes with negative letter-spacing (-0.9px to -1.5px)
274
- - Derive all grays from `#1c1c1c` at varying opacity levels for tonal unity
275
- - Use the inset shadow technique on dark buttons for tactile depth
276
- - Use `#eceae4` borders instead of shadows for card containment
277
- - Keep the weight system narrow: 400 for body/UI, 600 for headings
278
- - Use full-pill radius (9999px) only for action pills and icon buttons
279
- - Apply opacity 0.8 on active states for responsive tactile feedback
272
+ - Use `#fafafa`, `#030303`, and `#eceae4` for the verified public neutral structure.
273
+ - Use Camera Plain Variable only where the loaded public family is appropriate.
274
+ - Keep the current 8px compact action distinct from the 0px header trigger and 9999px pricing tab.
275
+ - Treat pricing menu, option, and dialog states as pricing-route evidence with their recorded selectors.
280
276
 
281
277
  ### Don't
282
- - Don't use pure white (`#ffffff`) as a page background — the cream is intentional
283
- - Don't use heavy box-shadows for cards borders are the containment mechanism
284
- - Don't introduce saturated accent colors the palette is intentionally warm-neutral
285
- - Don't use weight 700 (bold) 600 is the maximum weight in the system
286
- - Don't apply 9999px radius on rectangular buttons — pills are for icon/action toggles
287
- - Don't use sharp focus outlines — the system uses soft shadow-based focus indicators
288
- - Don't mix border styles — `#eceae4` for passive, `rgba(28,28,28,0.4)` for interactive
289
- - Don't increase letter-spacing on headings — Camera Plain is designed to run tight at scale
278
+ - Do not use the retired coral token as a current primary color.
279
+ - Do not turn the selected pricing-option violet wash into a universal CTA color.
280
+ - Do not infer authenticated builder inputs, cards, toasts, errors, or status components from marketing routes.
281
+ - Do not render Roboto Mono Variable as a UI family: it was declared but had no visible computed use.
290
282
 
291
283
  ## 8. Responsive Behavior
292
284
 
293
- ### Breakpoints
294
- | Name | Width | Key Changes |
295
- |------|-------|-------------|
296
- | Mobile Small | <600px | Tight single column, reduced padding |
297
- | Mobile | 600–640px | Standard mobile layout |
298
- | Tablet Small | 640–700px | 2-column grids begin |
299
- | Tablet | 700–768px | Card grids expand |
300
- | Desktop Small | 768–1024px | Multi-column layouts |
301
- | Desktop | 1024–1280px | Full feature layout |
302
- | Large Desktop | 1280–1536px | Maximum content width, generous margins |
303
-
304
- ### Touch Targets
305
- - Buttons: 8px 16px padding (comfortable touch)
306
- - Navigation: adequate spacing between items
307
- - Pill buttons: 9999px radius creates large tap-friendly targets
308
- - Menu toggle: 6px radius button with adequate sizing
309
-
310
- ### Collapsing Strategy
311
- - Hero: 60px → 48px → 36px headline scaling with proportional letter-spacing
312
- - Navigation: horizontal links → hamburger menu at 768px
313
- - Feature cards: 3-column → 2-column → single column stacked
314
- - Template gallery: grid → stacked vertical cards
315
- - Stats bar: horizontal → stacked vertical
316
- - Footer: multi-column → stacked single column
317
- - Section spacing: 128px+ → 64px on mobile
318
-
319
- ### Image Behavior
320
- - Template screenshots maintain `1px solid #eceae4` border at all sizes
321
- - 12px border radius preserved across breakpoints
322
- - Gallery images responsive with consistent aspect ratios
323
- - Hero gradient softens/simplifies on mobile
285
+ The supplied collector evidence is desktop `1440×900`. Documentation says the project preview can be switched between web and mobile views, but the packet contains no public responsive measurements or breakpoint values. Those values remain unresolved.
324
286
 
325
287
  ## 9. Agent Prompt Guide
326
288
 
327
- ### Quick Color Reference
328
- - Primary CTA: Charcoal (`#1c1c1c`)
329
- - Background: Cream (`#f7f4ed`)
330
- - Heading text: Charcoal (`#1c1c1c`)
331
- - Body text: Muted Gray (`#5f5f5d`)
332
- - Border: `#eceae4` (passive), `rgba(28,28,28,0.4)` (interactive)
333
- - Focus: `rgba(0,0,0,0.1) 0px 4px 12px`
334
- - Button text on dark: `#fcfbf8`
335
-
336
- ### Example Component Prompts
337
- - "Create a hero section on cream background (#f7f4ed). Headline at 60px Camera Plain Variable weight 600, line-height 1.10, letter-spacing -1.5px, color #1c1c1c. Subtitle at 18px weight 400, line-height 1.38, color #5f5f5d. Dark CTA button (#1c1c1c bg, #fcfbf8 text, 6px radius, 8px 16px padding, inset shadow) and ghost button (transparent bg, 1px solid rgba(28,28,28,0.4) border, 6px radius)."
338
- - "Design a card on cream (#f7f4ed) background. Border: 1px solid #eceae4. Radius 12px. No box-shadow. Title at 20px Camera Plain Variable weight 400, line-height 1.25, color #1c1c1c. Body at 14px weight 400, color #5f5f5d."
339
- - "Build a template gallery: grid of cards with 12px radius, 1px solid #eceae4 border, cream backgrounds. Each card: image with 12px top radius, title below. Hover: subtle border darkening."
340
- - "Create navigation: sticky on cream (#f7f4ed). Camera Plain 16px weight 400 for links, #1c1c1c text. Dark CTA button right-aligned with inset shadow. Mobile: hamburger menu with 6px radius."
341
- - "Design a stats section: large numbers at 48px Camera Plain weight 600, letter-spacing -1.2px, #1c1c1c. Labels below at 16px weight 400, #5f5f5d. Horizontal layout with 32px gap."
342
-
343
- ### Iteration Guide
344
- 1. Always use cream (`#f7f4ed`) as the base — never pure white
345
- 2. Derive grays from `#1c1c1c` at opacity levels rather than using distinct hex values
346
- 3. Use `#eceae4` borders for containment, not shadows
347
- 4. Letter-spacing scales with size: -1.5px at 60px, -1.2px at 48px, -0.9px at 36px, normal at 16px
348
- 5. Two weights: 400 (everything except headings) and 600 (headings)
349
- 6. The inset shadow on dark buttons is the signature detail — don't skip it
350
- 7. Camera Plain Variable at weight 480 is for special display moments only
289
+ > Build only a public Lovable-inspired shell: `#fafafa` canvas, `#030303` type, `#eceae4` hairlines, Camera Plain Variable, a compact 8px near-black header action, and square header menu triggers. Keep pricing tabs and overlays component-local. Do not synthesize the authenticated builder or generic AI-app controls.
351
290
 
352
291
  ## 10. Voice & Tone
353
292
 
354
- Lovable's voice is **warmly enthusiastic and craft-confident** speaks like a tool that loves being a tool for builders. "Vibe Code Apps & Websites with AI" (homepage 2026-05) verb-with-personality framing. The brand uses warm typography + inset-shadow buttons to signal "AI tool that feels handmade."
355
-
356
- | Context | Tone |
357
- |---|---|
358
- | CTA | Verb. "Get started", "Try it now", "Sign in" |
359
- | Marketing | Personality-forward. "Vibe code" coined as the brand verb |
360
- | Documentation | Practical, screenshot-heavy |
361
- | Error | Specific. "Build failed at line 42. View logs to debug." |
362
-
363
- **Voice samples**
364
- - Tagline: *"Vibe Code Apps & Websites with AI, Fast"* <!-- verified: lovable.dev homepage 2026-05 -->
365
-
366
- **Forbidden phrases.** "Revolutionary AI app builder", "10× developer".
293
+ Lovables public language is direct, constructive, and sequence-oriented. The homepage asks people to “Build something Lovable,” then moves through “Start with an idea,” “Watch it come to life,” and “Refine and ship.” Documentation turns the same cadence into practical instructions: describe what to build, review and iterate, sync code to GitHub, then deploy and operate. Use clear action verbs and name the next outcome; avoid unsupported speed, funding, or technical-performance claims.
367
294
 
368
295
  ## 11. Brand Narrative
369
296
 
370
- Lovable was founded **2023** in **Stockholm** by **Anton Osika** and **Fabian Hedin** ([Lovable — Wikipedia](https://en.wikipedia.org/wiki/Lovable_(company)), [Anton Osika — LinkedIn](https://se.linkedin.com/in/antonosika)). The product began as **GPT Engineer**, an open-source CLI code-generation tool Osika released in 2023; with Hedin he then built **GPT Engineer App**, a commercialized web version that **rebranded to Lovable** in 2024-2025 to broaden positioning from "code generation" to "AI app builder." Funding ladder: **€6.8M seed (2024)** ([Silicon Canals — Lovable €6.8M + GPT Engineer launch](https://siliconcanals.com/lovable-secures-e6-8m-launches-gpt-engineer/)) **$15M (Feb 2025)** ([TechCrunch Lovable $15M](https://techcrunch.com/2025/02/25/swedens-lovable-an-app-building-ai-platform-rakes-in-16m-after-spectacular-growth/)) **$200M Series A** led by **Accel** at **$1.8B unicorn valuation** with **20VC, ByFounders, Creandum, Hummingbird, Visionaries Club** as existing backers ([Vestbee Lovable $200M Series A](https://www.vestbee.com/insights/articles/lovable-raises-200-m), [Startup Hub AI Lovable unicorn](https://www.startuphub.ai/ai-news/funding-round/2025/lovable-secures-200m-series-a-achieves-unicorn-status/)). **$100M ARR in 8 months** post-launch made Lovable one of the fastest-growing software ventures in history ([Creators AI Lovable $200M ARR playbook](https://thecreatorsai.com/p/lovable-growth-secrets-and-costs)). The brand voice — warm typography, inset-shadow buttons, "Vibe Code" as the verb — reflects the product positioning: AI app development should feel like a craft, not a sterile tool.
297
+ Lovable frames itself as a full-stack AI development platform rather than a static website generator. Its official documentation says an individual or team can describe an application in natural language and receive editable code spanning frontend, backend, database, authentication, and integrations. The current homepage compresses that lifecycle into a public story: begin with an idea, see a working prototype emerge, then refine and ship it. The public visual system supports that narrative through a quiet shell that lets the creation workflow, examples, and templates carry the product story.
298
+
299
+ The documentation also draws a boundary that matters for this reference: projects live in shared workspaces, can be synced to GitHub, and can be governed and deployed within existing workflows. That product context is not evidence for private workspace controls, so this reference keeps the public marketing/product capture distinct from authenticated product claims.
371
300
 
372
301
  ## 12. Principles
373
302
 
374
- 1. **Vibe Code is the verb.** *UI implication:* the brand promises a feeling, not a feature list.
375
- 2. **Warm typography signals craft.** Camera Plain Variable. *UI implication:* don't substitute system fonts.
376
- 3. **Inset shadow is the depth.** Dark buttons have inset highlight. *UI implication:* preserve the inset detail.
377
- 4. **Real preview, fast iteration.** *UI implication:* surfaces emphasize live preview alongside chat.
378
- 5. **Pill chrome over rectangular.** *UI implication:* nav, badges, modals all pill (9999px) on white surfaces.
303
+ 1. **Start from an idea.** Natural-language requests, screenshots, and other inputs are presented as valid starting points for a project.
304
+ 2. **Make iteration visible.** Public and documentation language emphasize reviewing, editing, versioning, and refining instead of treating generation as a final state.
305
+ 3. **Keep code usable beyond the tool.** Official documentation describes editable code and GitHub synchronization; do not represent this as a claim about every integration or private control.
306
+ 4. **Separate public evidence domains.** Marketing/product routes, documentation chrome, webfont delivery, and authenticated builder UI answer different questions and must not be merged into a fictional universal system.
379
307
 
380
308
  ## 13. Personas
381
309
 
382
- *Personas are fictional archetypes informed by Lovable user segments (designers building MVPs, indie founders, creative coders), not individual people.*
310
+ Official documentation establishes task contexts rather than named personas:
311
+ - Individual builders, founders, students, and independent makers starting apps or prototypes.
312
+ - Product managers, designers, and marketers creating realistic prototypes, interfaces, and campaign surfaces.
313
+ - Developers, engineering teams, agencies, and enterprises extending generated code through existing workflows.
383
314
 
384
- **Sofia Russo, 28, Milan.** Designer with light JS knowledge. Ships micro-SaaS via Lovable. Loves the chat-to-app workflow.
385
-
386
- **Ravi Krishnan, 35, Bengaluru.** Full-stack developer prototyping ideas. Lovable for client-presentation MVPs.
387
-
388
- **Emma Park, 23, Seoul.** Indie hacker shipping 12 micro-products. Subscribes to Lovable Pro for unlimited generations.
315
+ Specific job titles, company sizes, technical fluency, goals, or success metrics should come from a product brief rather than be invented for Lovable.
389
316
 
390
317
  ## 14. States
391
318
 
392
- | State | Treatment |
393
- |---|---|
394
- | **Empty (no projects)** | "Start vibe coding" CTA + template grid |
395
- | **Empty (no chat)** | Welcoming prompt with example asks |
396
- | **Loading (generating)** | Per-step trace with file changes visible |
397
- | **Loading (preview building)** | Inline preview spinner with elapsed time |
398
- | **Error (build)** | Inline log + retry / fix button |
399
- | **Error (rate limit)** | "Upgrade for unlimited" inline link |
400
- | **Success (deployed)** | URL copy + share preview link |
401
- | **Success (committed)** | Soft pulse on changed files |
402
- | **Skeleton (project list)** | Inset-shadow placeholders |
403
- | **Disabled (no credits)** | 0.5 opacity + upgrade link |
404
- | **Loading (long agent task)** | Cancellable, persistent step list |
319
+ The collector observed public header hover, pressed, and focus states; pricing tab hover, pressed, and selected states; pricing selector pressed, focus, and menu-open states; plus menu-open and dialog-open overlays. Loading, empty, error, success, toast, validation, and authenticated builder states were not established and are omitted.
405
320
 
406
321
  ## 15. Motion & Easing
407
322
 
408
- | Token | Value | Use |
409
- |---|---|---|
410
- | `motion-instant` | 0ms | Selection |
411
- | `motion-fast` | 150ms | Hover |
412
- | `motion-standard` | 250ms | Modal, panel |
413
-
414
- Standard cubic-bezier; no bounce. Inset shadow is static (never animates). `prefers-reduced-motion: reduce` removes hover transitions.
323
+ Current public controls include transition classes, but this packet did not record a reliable duration or easing value. No motion token is promoted. Preserve the observed interaction-state boundaries without fabricating animation behavior.
415
324
 
416
325
  ---
417
-
418
- **Verified:** 2026-05-08 (omd:migrate run 34 Apple-tier)
419
- **Tier 1 sources:** lovable.dev home + /pricing (live DOM via playwright — Primary **`lab(0 0 0 / 0.88)`** Near-Black 8px / 32-36px / 6×10 / 14px·400; **Featured Primary** `lab(47.92 57.95 -81.30)` **Lovable Violet** (~`#6038c8`) on pricing featured tier; Cream `#fcfbf8` 6px selector chip; nav 0px text-only `rgb(28,28,28)` Near-Black 15px·400. **`lab()` color space** is canonical token convention).
420
- **Tier 2 sources:** styles.refero.design / getdesign.md — no record.
421
- **Tier 2 (Philosophy/founders):** Wikipedia (Lovable), LinkedIn (Osika), Silicon Canals, TechCrunch (Feb 2025 $15M), Vestbee + Startup Hub AI ($200M Accel Series A → $1.8B unicorn), Creators AI ($100M ARR / 8 months), Catalaize.
422
- **Style ref:** `notion`.
423
- **Conflicts unresolved:** none. **Earlier mistake reverted:** prior footer claimed "pill nav 1.67e+07 ≈ 9999px" — live measurement is 0px text-only ghost nav. Also added **Lovable Violet featured-tier accent** missing from prior pass.
326
+ **Verified:** 2026-07-13
327
+ **Tier 1 sources:** https://lovable.dev/ko, https://lovable.dev/ko/pricing, https://lovable.dev/ko/product-managers, https://docs.lovable.dev/introduction/welcome, https://docs.lovable.dev/introduction/getting-started, https://lovable.dev/fonts/CameraPlainVariable-c48bd243.woff2
328
+ **Tier 2 sources:** https://getdesign.md/lovable/design-md (independent directory analysis) and https://styles.refero.design/style/9ff62d34-e48d-4fcb-9fd9-c018e2747542 (independent style analysis).
329
+ **Conflicts unresolved:** none