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.
- package/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +2761 -85
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/airbridge/DESIGN.md +451 -0
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bigin/DESIGN.md +454 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/buzzvil/DESIGN.md +457 -0
- package/web/references/cafe24/DESIGN.md +472 -0
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/codeit/DESIGN.md +470 -0
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +338 -0
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/elice/DESIGN.md +445 -0
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/furiosaai/DESIGN.md +450 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/goorm/DESIGN.md +470 -0
- package/web/references/greencar/DESIGN.md +420 -0
- package/web/references/hackle/DESIGN.md +472 -0
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hwahae/DESIGN.md +453 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kcd/DESIGN.md +432 -0
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/kyobobook/DESIGN.md +445 -0
- package/web/references/lablup/DESIGN.md +474 -0
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lemonbase/DESIGN.md +452 -0
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +242 -0
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/moreh/DESIGN.md +437 -0
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/neosapience/DESIGN.md +441 -0
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/nota/DESIGN.md +451 -0
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/portone/DESIGN.md +446 -0
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/queenit/DESIGN.md +432 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/rebellions/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/returnzero/DESIGN.md +460 -0
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/saramin/DESIGN.md +465 -0
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shiftee/DESIGN.md +468 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/solapi/DESIGN.md +483 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/supertone/DESIGN.md +413 -0
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/vuno/DESIGN.md +413 -0
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/weverse/DESIGN.md +437 -0
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- 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: "#
|
|
7
|
+
primary_color: "#030303"
|
|
8
8
|
logo:
|
|
9
9
|
type: favicon
|
|
10
10
|
slug: "https://lovable.dev/favicon-192x192.png"
|
|
11
|
-
verified: "2026-
|
|
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:
|
|
15
|
-
extracted: "2026-
|
|
16
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
charcoal: "#1c1c1c"
|
|
21
|
-
off-white: "#fcfbf8"
|
|
22
|
-
muted: "#5f5f5d"
|
|
126
|
+
ink: "#030303"
|
|
127
|
+
canvas: "#fafafa"
|
|
23
128
|
border: "#eceae4"
|
|
24
|
-
|
|
25
|
-
on-primary: "#fcfbf8"
|
|
129
|
+
overlay-border: "#e7e7e6"
|
|
26
130
|
typography:
|
|
27
|
-
family: {
|
|
28
|
-
display
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
64
|
-
-
|
|
65
|
-
- Camera Plain Variable
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
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
|
-
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
78
|
-
- **
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
195
|
+
## 4. Component Stylings
|
|
133
196
|
|
|
134
|
-
|
|
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
|
-
**
|
|
199
|
+
**Current public menu trigger**
|
|
145
200
|
- Background: transparent
|
|
146
|
-
- Text: `#
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
-
|
|
197
|
-
-
|
|
198
|
-
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
|
|
204
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
273
|
-
- Use Camera Plain Variable
|
|
274
|
-
-
|
|
275
|
-
-
|
|
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
|
-
-
|
|
283
|
-
-
|
|
284
|
-
-
|
|
285
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
+
Lovable’s 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
|
|
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. **
|
|
375
|
-
2. **
|
|
376
|
-
3. **
|
|
377
|
-
4. **
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
**
|
|
419
|
-
**Tier
|
|
420
|
-
**
|
|
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
|