oh-my-design-cli 1.8.7 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1995 -38
- 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/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/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- 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/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 +217 -330
- 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/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/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- 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/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/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/lamborghini/DESIGN.md +198 -360
- 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 +149 -349
- 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/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/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- 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/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/quotabook/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/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/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -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/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/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/wanted/DESIGN.md +215 -487
- 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,11 +4,11 @@ name: Banksalad
|
|
|
4
4
|
country: KR
|
|
5
5
|
category: fintech
|
|
6
6
|
homepage: "https://www.banksalad.com"
|
|
7
|
-
primary_color: "#
|
|
7
|
+
primary_color: "#13bd7e"
|
|
8
8
|
logo:
|
|
9
9
|
type: favicon
|
|
10
10
|
slug: "https://www.google.com/s2/favicons?domain=banksalad.com&sz=256"
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-12"
|
|
12
12
|
omd: "0.1"
|
|
13
13
|
ds:
|
|
14
14
|
name: Banksalad GitHub
|
|
@@ -16,179 +16,241 @@ ds:
|
|
|
16
16
|
type: brand
|
|
17
17
|
description: Banksalad's public GitHub org including styleguide repos and BPL (Banksalad Product Library) reference material.
|
|
18
18
|
og_image: "https://avatars.githubusercontent.com/u/71009899?s=280&v=4"
|
|
19
|
+
verification_v2:
|
|
20
|
+
schema: 2
|
|
21
|
+
checked: "2026-07-12"
|
|
22
|
+
surfaces:
|
|
23
|
+
- { id: home, kind: marketing-product, url: "https://www.banksalad.com/", inspected: "2026-07-12" }
|
|
24
|
+
- { id: contents, kind: product-directory, url: "https://www.banksalad.com/contents", inspected: "2026-07-12" }
|
|
25
|
+
- { id: loan, kind: product-flow, url: "https://www.banksalad.com/loan/interest-rate-cut", inspected: "2026-07-12" }
|
|
26
|
+
- { id: safety, kind: support-product, url: "https://www.banksalad.com/customer-safety", inspected: "2026-07-12" }
|
|
27
|
+
- { id: card, kind: product-detail, url: "https://www.banksalad.com/product/cards/CARD002319", inspected: "2026-07-12" }
|
|
28
|
+
sources:
|
|
29
|
+
- { id: home-live, kind: product-surface, url: "https://www.banksalad.com/", captured: "2026-07-12" }
|
|
30
|
+
- { id: contents-live, kind: product-surface, url: "https://www.banksalad.com/contents", captured: "2026-07-12" }
|
|
31
|
+
- { id: loan-live, kind: product-surface, url: "https://www.banksalad.com/loan/interest-rate-cut", captured: "2026-07-12" }
|
|
32
|
+
- { id: safety-live, kind: product-surface, url: "https://www.banksalad.com/customer-safety", captured: "2026-07-12" }
|
|
33
|
+
- { id: card-live, kind: product-surface, url: "https://www.banksalad.com/product/cards/CARD002319", captured: "2026-07-12" }
|
|
34
|
+
- { id: bpl-design, kind: official-doc, url: "https://blog.banksalad.com/tech/banksalad-product-language-design/", captured: "2026-07-12" }
|
|
35
|
+
- { id: bpl-engineering, kind: official-doc, url: "https://blog.banksalad.com/tech/banksalad-product-language-ios/", captured: "2026-07-12" }
|
|
36
|
+
conflicts: []
|
|
37
|
+
claims:
|
|
38
|
+
"tokens.colors.primary": &home_evidence { surface_id: home, source_id: home-live, method: live-inspect, captured: "2026-07-12" }
|
|
39
|
+
"tokens.colors.action": &loan_evidence { surface_id: loan, source_id: loan-live, method: live-inspect, captured: "2026-07-12" }
|
|
40
|
+
"tokens.colors.canvas": *home_evidence
|
|
41
|
+
"tokens.colors.foreground": *home_evidence
|
|
42
|
+
"tokens.colors.secondary": *home_evidence
|
|
43
|
+
"tokens.colors.muted": &card_evidence { surface_id: card, source_id: card-live, method: live-inspect, captured: "2026-07-12" }
|
|
44
|
+
"tokens.colors.line": &safety_evidence { surface_id: safety, source_id: safety-live, method: live-inspect, captured: "2026-07-12" }
|
|
45
|
+
"tokens.typography.family.sans": *home_evidence
|
|
46
|
+
"tokens.typography.heading.size": *loan_evidence
|
|
47
|
+
"tokens.typography.heading.weight": *loan_evidence
|
|
48
|
+
"tokens.typography.heading.lineHeight": *loan_evidence
|
|
49
|
+
"tokens.typography.heading.tracking": *loan_evidence
|
|
50
|
+
"tokens.typography.heading.use": *loan_evidence
|
|
51
|
+
"tokens.typography.body.size": *home_evidence
|
|
52
|
+
"tokens.typography.body.weight": *home_evidence
|
|
53
|
+
"tokens.typography.body.lineHeight": *home_evidence
|
|
54
|
+
"tokens.typography.body.use": *home_evidence
|
|
55
|
+
"tokens.typography.label.size": *home_evidence
|
|
56
|
+
"tokens.typography.label.weight": *home_evidence
|
|
57
|
+
"tokens.typography.label.lineHeight": *home_evidence
|
|
58
|
+
"tokens.typography.label.tracking": *home_evidence
|
|
59
|
+
"tokens.typography.label.use": *home_evidence
|
|
60
|
+
"tokens.typography.caption.size": *card_evidence
|
|
61
|
+
"tokens.typography.caption.weight": *card_evidence
|
|
62
|
+
"tokens.typography.caption.lineHeight": *card_evidence
|
|
63
|
+
"tokens.typography.caption.tracking": *card_evidence
|
|
64
|
+
"tokens.typography.caption.use": *card_evidence
|
|
65
|
+
"tokens.spacing.sm": *home_evidence
|
|
66
|
+
"tokens.spacing.md": *home_evidence
|
|
67
|
+
"tokens.spacing.base": *home_evidence
|
|
68
|
+
"tokens.spacing.lg": *safety_evidence
|
|
69
|
+
"tokens.rounded.chip": &contents_evidence { surface_id: contents, source_id: contents-live, method: live-inspect, captured: "2026-07-12" }
|
|
70
|
+
"tokens.rounded.action": *loan_evidence
|
|
71
|
+
"tokens.rounded.card": *safety_evidence
|
|
72
|
+
"tokens.rounded.full": *home_evidence
|
|
73
|
+
"tokens.shadow.flat": *home_evidence
|
|
74
|
+
"tokens.components.primary-action.type": *loan_evidence
|
|
75
|
+
"tokens.components.primary-action.bg": *loan_evidence
|
|
76
|
+
"tokens.components.primary-action.fg": *loan_evidence
|
|
77
|
+
"tokens.components.primary-action.radius": *loan_evidence
|
|
78
|
+
"tokens.components.primary-action.padding": *loan_evidence
|
|
79
|
+
"tokens.components.primary-action.height": *loan_evidence
|
|
80
|
+
"tokens.components.primary-action.font": *loan_evidence
|
|
81
|
+
"tokens.components.primary-action.states": *loan_evidence
|
|
82
|
+
"tokens.components.primary-action.use": *loan_evidence
|
|
83
|
+
"tokens.components.filter-chip.type": *contents_evidence
|
|
84
|
+
"tokens.components.filter-chip.bg": *contents_evidence
|
|
85
|
+
"tokens.components.filter-chip.fg": *contents_evidence
|
|
86
|
+
"tokens.components.filter-chip.radius": *contents_evidence
|
|
87
|
+
"tokens.components.filter-chip.padding": *contents_evidence
|
|
88
|
+
"tokens.components.filter-chip.font": *contents_evidence
|
|
89
|
+
"tokens.components.filter-chip.states": *contents_evidence
|
|
90
|
+
"tokens.components.filter-chip.use": *contents_evidence
|
|
91
|
+
"tokens.components.safety-card.type": *safety_evidence
|
|
92
|
+
"tokens.components.safety-card.bg": *safety_evidence
|
|
93
|
+
"tokens.components.safety-card.border": *safety_evidence
|
|
94
|
+
"tokens.components.safety-card.radius": *safety_evidence
|
|
95
|
+
"tokens.components.safety-card.padding": *safety_evidence
|
|
96
|
+
"tokens.components.safety-card.use": *safety_evidence
|
|
97
|
+
"tokens.components.disclosure-row.type": *card_evidence
|
|
98
|
+
"tokens.components.disclosure-row.bg": *card_evidence
|
|
99
|
+
"tokens.components.disclosure-row.fg": *card_evidence
|
|
100
|
+
"tokens.components.disclosure-row.radius": *card_evidence
|
|
101
|
+
"tokens.components.disclosure-row.padding": *card_evidence
|
|
102
|
+
"tokens.components.disclosure-row.font": *card_evidence
|
|
103
|
+
"tokens.components.disclosure-row.use": *card_evidence
|
|
19
104
|
tokens:
|
|
20
|
-
source:
|
|
21
|
-
extracted: "2026-
|
|
105
|
+
source: reconciled
|
|
106
|
+
extracted: "2026-07-12"
|
|
107
|
+
note: "Five current first-party web surfaces. Pretendard is loaded and used; swiper-icons is declared-only. Legacy #04c584, BM JUA, 2px-default components, inputs, charts, and modal claims were not promoted."
|
|
22
108
|
colors:
|
|
23
|
-
primary: "#
|
|
24
|
-
|
|
25
|
-
brand: "#04c584"
|
|
109
|
+
primary: "#13bd7e"
|
|
110
|
+
action: "#06a96c"
|
|
26
111
|
canvas: "#ffffff"
|
|
27
|
-
foreground: "#
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
surface-neutral: "#f5f5f5"
|
|
32
|
-
body: "#434444"
|
|
33
|
-
placeholder: "#999999"
|
|
34
|
-
disabled: "#acacac"
|
|
35
|
-
hairline: "#e1e1e1"
|
|
36
|
-
mint-tint: "#f3fdfa"
|
|
37
|
-
error: "#fe493d"
|
|
38
|
-
error-soft: "#ff8a84"
|
|
39
|
-
warning: "#fd8700"
|
|
40
|
-
warning-deep: "#f56200"
|
|
41
|
-
info: "#0099ff"
|
|
42
|
-
success: "#04c584"
|
|
43
|
-
chart-1: "#34464b"
|
|
44
|
-
chart-2: "#5c818a"
|
|
45
|
-
chart-3: "#1c6c73"
|
|
46
|
-
chart-4: "#a7c7cf"
|
|
112
|
+
foreground: "#111111"
|
|
113
|
+
secondary: "#555c68"
|
|
114
|
+
muted: "#9fa4b0"
|
|
115
|
+
line: "#f0f2f5"
|
|
47
116
|
typography:
|
|
48
|
-
family: { sans: "Pretendard"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
h3: { size: 20, weight: 700, lineHeight: 1.2, use: "Sub-card headings" }
|
|
56
|
-
subhead: { size: 18, weight: 700, lineHeight: 1.3, use: "Featured-button text, key callouts" }
|
|
57
|
-
body-lg: { size: 16, weight: 500, lineHeight: 1.5, use: "Standard reading text on data screens" }
|
|
58
|
-
body: { size: 14, weight: 500, lineHeight: 1.34, use: "Default body text; 500 not 400" }
|
|
59
|
-
body-tight: { size: 13, weight: 500, lineHeight: 1.34, use: "Compact labels" }
|
|
60
|
-
caption: { size: 12, weight: 500, lineHeight: 1.34, use: "Metadata, helper text" }
|
|
61
|
-
caption-sm: { size: 10, weight: 500, lineHeight: 1, use: "Disclosures, smallest labels" }
|
|
62
|
-
button: { size: 16, weight: 700, lineHeight: 1, tracking: -1, use: "All CTAs are 700" }
|
|
63
|
-
financial-amount: { size: 24, weight: 700, lineHeight: 1, use: "Comma-grouped, won unit follows in 500" }
|
|
64
|
-
spacing: { xs: 4, sm: 8, md: 16, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
|
|
65
|
-
rounded: { sm: 2, md: 4, lg: 8, full: 9999 }
|
|
117
|
+
family: { sans: "Pretendard" }
|
|
118
|
+
heading: { size: 20, weight: 700, lineHeight: 1.4, tracking: 0, use: "Product and safety section headings" }
|
|
119
|
+
body: { size: 16, weight: 400, lineHeight: 1.5, use: "Shared product body and list content" }
|
|
120
|
+
label: { size: 16, weight: 700, lineHeight: 1.625, tracking: -0.08, use: "Prominent product labels and actions" }
|
|
121
|
+
caption: { size: 14, weight: 500, lineHeight: 1.43, tracking: -0.07, use: "Product metadata and helper text" }
|
|
122
|
+
spacing: { sm: 8, md: 12, base: 16, lg: 24 }
|
|
123
|
+
rounded: { chip: 6, action: 16, card: 24, full: 9999 }
|
|
66
124
|
shadow:
|
|
67
|
-
|
|
68
|
-
standard: "rgba(0,0,0,0.12) 0px 2px 5px 0px"
|
|
69
|
-
elevated: "rgba(0,0,0,0.15) 0px 4px 9px 0px"
|
|
70
|
-
modal: "rgba(0,0,0,0.19) 0px 17px 50px 0px"
|
|
125
|
+
flat: "none"
|
|
71
126
|
components_harvested: true
|
|
72
127
|
components:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
button-disabled: { type: button, bg: "#e1e1e1", fg: "#acacac", radius: "2px", font: "16px / 700", use: "Disabled state" }
|
|
78
|
-
input-text: { type: input, bg: "#ffffff", fg: "#434444", border: "1px solid #e1e1e1", radius: "2px", height: "48px", padding: "0 16px", font: "16px / 500", focus: "border #10df99 + bg #f3fdfa", use: "Default text input" }
|
|
79
|
-
input-amount: { type: input, bg: "#ffffff", fg: "#2b2b2b", border: "2px solid #f5f5f5", radius: "2px", height: "56px", padding: "0 16px", font: "22px / 700", focus: "border #10df99 + bg #f3fdfa", use: "Won-amount input, right-aligned, money as heading" }
|
|
80
|
-
card-data: { type: card, bg: "#ffffff", border: "1px solid #e1e1e1", radius: "2px", padding: "20px 24px", shadow: "rgba(0,0,0,0.12) 0px 2px 5px 0px", use: "Recommendation/transaction/summary cards" }
|
|
81
|
-
card-highlight: { type: card, bg: "#f3fdfa", border: "1px solid #10df99", radius: "2px", padding: "20px 24px", use: "Selected/recommended-pick in comparison lists" }
|
|
82
|
-
status-pill: { type: badge, bg: "#f3fdfa", fg: "#04c584", radius: "41px", padding: "4px 10px", font: "12px / 500", use: "Filter chips on recommendation pages" }
|
|
83
|
-
badge-warning: { type: badge, bg: "#ffffff", fg: "#f56200", border: "1px solid #fd8700", radius: "2px", padding: "2px 8px", font: "12px / 700", use: "Rate-warning, expiry indicators" }
|
|
84
|
-
badge-negative: { type: badge, bg: "#ffffff", fg: "#fe493d", border: "1px solid #fe493d", radius: "2px", padding: "2px 8px", font: "12px / 700", use: "Overdue, declined indicators" }
|
|
85
|
-
table-row: { type: listItem, bg: "#ffffff", fg: "#434444", border: "1px solid #e1e1e1 bottom", padding: "12px 16px", font: "14px / 500", use: "Transaction rows; alternates #fbfbfb, amounts right-aligned 14px/700 #2b2b2b positive #fe493d negative" }
|
|
128
|
+
primary-action: { type: button, bg: "#06a96c", fg: "#ffffff", radius: "16px", padding: "16px 20px", height: "56px", font: "16px / 700", states: "default captured; no safe active interaction expansion", use: "Full-width primary action in the public interest-rate flow" }
|
|
129
|
+
filter-chip: { type: button, bg: "rgba(19,189,126,0.15)", fg: "#13bd7e", radius: "6px", padding: "10px 12px", font: "16px / 500", states: "default captured; no safe active interaction expansion", use: "Content-directory category or filter action" }
|
|
130
|
+
safety-card: { type: card, bg: "#ffffff", border: "1px solid #f0f2f5", radius: "24px", padding: "24px", use: "Customer-safety action and guidance card" }
|
|
131
|
+
disclosure-row: { type: listItem, bg: "transparent", fg: "#111111", radius: "0px", padding: "24px 20px", font: "16px / 400", use: "Expandable disclosure row on a public card product detail" }
|
|
86
132
|
---
|
|
87
133
|
|
|
88
134
|
# Design System Inspiration of Banksalad
|
|
89
135
|
|
|
90
136
|
## 1. Visual Theme & Atmosphere
|
|
91
137
|
|
|
92
|
-
Banksalad
|
|
138
|
+
Banksalad is a Korean data-driven financial platform that helps people compare products, understand credit and spending, and connect finance with a broader health-asset proposition. Its current public web surfaces feel informational rather than decorative: a white `#ffffff` canvas, dense but readable Pretendard typography, near-black `#111111` content, and green actions that keep comparison and next steps visible. The most repeated current accent is `#13bd7e`, while a consequential full-width loan action uses the deeper `#06a96c`. This reference follows the live product surfaces and the official Banksalad Product Language publications separately, preserving BPL's collaboration philosophy without pretending its 2020 component values are necessarily identical to today's public web implementation.
|
|
93
139
|
|
|
94
|
-
|
|
140
|
+
Current geometry is role-specific rather than governed by one sharp-corner default. The content directory uses a compact 6px green chip, the public loan action uses a 16px radius, customer-safety cards use 24px corners with a `#f0f2f5` border, and a carousel indicator uses a full pill. Plain lists and disclosure rows remain square. The earlier claim that 2px was the dominant current system came from a legacy CSS bundle and is not promoted in this pass.
|
|
95
141
|
|
|
96
|
-
Typography
|
|
142
|
+
Typography is consistently Pretendard across the five inspected surfaces. The collector matched loaded Pretendard font faces to 603 visible elements spanning body, headings, buttons, cards, and list items. `swiper-icons` was declared but not used for visible text. BM JUA was not declared or visibly used in this fresh capture, so it is not a current UI or marketing token; its earlier promotion has been removed. The observed hierarchy relies mainly on 16px body and labels, 14px supporting copy, and 18–20px headings with 400/500/700 weights.
|
|
97
143
|
|
|
98
144
|
**Key Characteristics:**
|
|
99
|
-
- Pretendard
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
- Mint focus tint `#f3fdfa` on input backgrounds — the only branded background tint in the system
|
|
106
|
-
- 700 weight as default for headings and financial figures; 500 for body emphasis
|
|
107
|
-
- Subtle single-layer shadows `0 2px 5px rgba(0,0,0,.12)` — never colored, never theatrical
|
|
108
|
-
- Teal-gray data palette (`#34464b`/`#5c818a`/`#1c6c73`/`#a7c7cf`) for chart series — cool, advisor-grade
|
|
145
|
+
- Loaded Pretendard across all five current public web surfaces
|
|
146
|
+
- Current accent `#13bd7e`; deeper action green `#06a96c`
|
|
147
|
+
- White `#ffffff` canvas with `#111111` foreground, `#555c68` secondary text, and `#9fa4b0` muted metadata
|
|
148
|
+
- Role-specific 6px / 16px / 24px / full-pill geometry
|
|
149
|
+
- 8px, 12px, 16px, and 24px as recurring useful spacing values
|
|
150
|
+
- Public product evidence covers buttons, cards, and list/disclosure rows; inputs, charts, dialogs, and authenticated app states remain unpromoted
|
|
109
151
|
|
|
110
152
|
## 2. Color Palette & Roles
|
|
111
153
|
|
|
112
154
|
### Primary
|
|
113
|
-
- **
|
|
114
|
-
- **
|
|
115
|
-
-
|
|
155
|
+
- **Current accent** (`#13bd7e`): repeated green text and border color across home, contents, loan, and card-detail surfaces.
|
|
156
|
+
- **Primary action** (`#06a96c`): full-width loan-flow action background, paired with `#ffffff` text.
|
|
157
|
+
- The previous `#04c584` and `#10df99` values were not observed in the five-surface capture and are not current canonical tokens.
|
|
116
158
|
|
|
117
159
|
### Heading & Body
|
|
118
|
-
- **
|
|
119
|
-
- **
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
- **Disabled** (`#acacac` / `#c0c0c0`): Disabled text and icons.
|
|
160
|
+
- **Foreground** (`#111111`): dominant heading, body, and list text across all five surfaces.
|
|
161
|
+
- **Secondary** (`#555c68`): supporting copy on home, contents, and card detail.
|
|
162
|
+
- **Neutral** (`#606874`): explanatory copy in loan and customer-safety contexts.
|
|
163
|
+
- **Muted** (`#9fa4b0`): product metadata and subdued actions on contents and card detail.
|
|
123
164
|
|
|
124
165
|
### Surface & Border
|
|
125
|
-
- **
|
|
126
|
-
- **
|
|
127
|
-
- **
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
- **Deep Slate** (`#0b0c0c`): Maximum-depth axis labels.
|
|
133
|
-
- **Teal-Slate 900** (`#333a44`): Primary chart series.
|
|
134
|
-
- **Teal-Slate 800** (`#34464b`): Secondary chart series, table headers.
|
|
135
|
-
- **Teal-Slate 700** (`#436068`): Tertiary chart.
|
|
136
|
-
- **Teal 600** (`#1c6c73`): Highlighted data point.
|
|
137
|
-
- **Teal-Gray 500** (`#5c818a`): Subdued data, legend.
|
|
138
|
-
- **Teal 400** (`#318b93`): Mid-range fills.
|
|
139
|
-
- **Pale Teal** (`#a7c7cf`): Background fills for chart bands.
|
|
140
|
-
|
|
141
|
-
The teal-slate family is intentionally **cooler than the brand green**, so that chart series read as neutral data rather than as branded surfaces. Banksalad's green is for interaction; teal-slate is for information.
|
|
142
|
-
|
|
143
|
-
### Semantic
|
|
144
|
-
- **Error Red** (`#fe493d`): Strong error states, blocking validation.
|
|
145
|
-
- **Error Soft** (`#ff8a84`): Light error tint, secondary error indicators.
|
|
146
|
-
- **Warning Orange** (`#fd8700`): Warning emphasis (rate spikes, expiry).
|
|
147
|
-
- **Warning Deep** (`#f56200`): Highest-severity warning.
|
|
148
|
-
- **Warning Light** (`#ff9900`): Soft warning highlights.
|
|
149
|
-
- **Info Blue** (`#0099ff`): External links, info notices (used sparingly — green is the default link color).
|
|
150
|
-
- **Success Green** (`#04c584` / `#10df99` / `#13bd7e`): Success uses brand green; there is no separate success hue.
|
|
166
|
+
- **Canvas** (`#ffffff`): default current page and card surface.
|
|
167
|
+
- **Line** (`#f0f2f5`): observed 1px customer-safety card border.
|
|
168
|
+
- **Transparent**: most navigation, list, disclosure, and utility controls stay unfilled.
|
|
169
|
+
|
|
170
|
+
### Unresolved color groups
|
|
171
|
+
|
|
172
|
+
No current public chart, authenticated dashboard, input validation, warning, error, or success-state palette was safely captured. Those legacy groups are omitted rather than mapped to plausible greens, reds, or teals.
|
|
151
173
|
|
|
152
174
|
## 3. Typography Rules
|
|
153
175
|
|
|
176
|
+
### Font evidence boundary
|
|
177
|
+
|
|
178
|
+
| Evidence class | Resolution |
|
|
179
|
+
|---|---|
|
|
180
|
+
| Official product-use | BPL publications establish an official product-language system, but do not publish a current universal font token in the inspected text. |
|
|
181
|
+
| Live surface-use | Five public web surfaces loaded and visibly used Pretendard on 603 elements. |
|
|
182
|
+
| Official distributed asset | No Banksalad-exclusive UI font asset is promoted in this reference. |
|
|
183
|
+
| Declared-only | `swiper-icons` was declared with zero visible text usage. |
|
|
184
|
+
| Unresolved | Native-app-only typography remains unresolved without an inspectable current surface. |
|
|
185
|
+
|
|
186
|
+
Specimen availability requires a loadable font source and is separate from family truth.
|
|
187
|
+
|
|
154
188
|
### Font Family
|
|
155
189
|
- **Primary**: `Pretendard, -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif`
|
|
156
|
-
-
|
|
157
|
-
-
|
|
190
|
+
- Loaded sources were observed for Pretendard Regular, Medium, SemiBold, Bold, and ExtraBold subsets.
|
|
191
|
+
- BM JUA was not declared, loaded, or visibly used in this fresh capture and is omitted.
|
|
158
192
|
|
|
159
193
|
### Hierarchy
|
|
160
194
|
|
|
161
195
|
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
162
196
|
|---|---|---|---|---|---|---|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
| Heading 3 | Pretendard | 20px | 700 | 24px | normal | Sub-card headings |
|
|
170
|
-
| Subhead | Pretendard | 18px | 700 | 1.3 | normal | Featured-button text, key callouts |
|
|
171
|
-
| Body Large | Pretendard | 16px | 500 | 1.5 | normal | Standard reading text on data screens (700 for emphasis) |
|
|
172
|
-
| Body | Pretendard | 14px | 500 | 1.34 | normal | Default body text; 500 weight, not 400 |
|
|
173
|
-
| Body Tight | Pretendard | 13px | 500 | 1.34 | normal | Compact labels |
|
|
174
|
-
| Caption | Pretendard | 12px | 500 | 1.34 | normal | Metadata, helper text |
|
|
175
|
-
| Caption Small | Pretendard | 10px | 500 | 1 | normal | Disclosures, smallest labels |
|
|
176
|
-
| Button | Pretendard | 16–18px | 700 | tight | -1px on display CTAs | All CTAs are 700 |
|
|
177
|
-
| Financial Amount | Pretendard | 20–36px | 700 | 1 | normal | Always 700, comma-grouped, won unit follows in 500 |
|
|
197
|
+
| Product Heading | Pretendard | 20px | 700 | 28px | normal | Repeated section and card heading |
|
|
198
|
+
| Supporting Heading | Pretendard | 18px | 700 | 26px | -0.09px | Compact product heading |
|
|
199
|
+
| Body | Pretendard | 16px | 400 | 24px | normal | Shared product body and list copy |
|
|
200
|
+
| Prominent Label | Pretendard | 16px | 700 | 26px | -0.08px | Action and emphasized product label |
|
|
201
|
+
| Metadata | Pretendard | 14px | 500 | 20px | -0.07px | Supporting product information |
|
|
202
|
+
| Caption | Pretendard | 12px | 500–700 | 18px | -0.06px | Dense metadata where observed |
|
|
178
203
|
|
|
179
204
|
### Principles
|
|
180
|
-
- **
|
|
181
|
-
- **
|
|
182
|
-
- **
|
|
183
|
-
- **
|
|
184
|
-
- **Numerals as headings.** Financial amounts at 20–36px / 700 are treated as headings, not body — they get the same hierarchical weight as page titles.
|
|
185
|
-
- **Lightweight body is forbidden.** 300 only appears on display sizes where the size itself carries hierarchy (52px hero numerals); never on body text.
|
|
205
|
+
- **Pretendard is the only current visible text family.** Do not substitute an unobserved accent face.
|
|
206
|
+
- **400 carries reading; 700 carries decisions.** Current body/list copy is commonly 400, while headings and the primary loan action are 700.
|
|
207
|
+
- **Tracking is subtle at product sizes.** Current 14–18px roles use approximately -0.06px to -0.09px; no -1px display token is promoted.
|
|
208
|
+
- **Surface evidence stays local.** Authenticated app typography and native-only financial amount roles remain unresolved.
|
|
186
209
|
|
|
187
210
|
## 4. Component Stylings
|
|
188
211
|
|
|
189
|
-
###
|
|
212
|
+
### Current verified components
|
|
213
|
+
|
|
214
|
+
**Primary Loan Action**
|
|
215
|
+
- Background: `#06a96c`
|
|
216
|
+
- Text: `#ffffff`
|
|
217
|
+
- Radius: 16px
|
|
218
|
+
- Padding: 16px 20px
|
|
219
|
+
- Height: 56px
|
|
220
|
+
- Font: 16px / 700 / Pretendard
|
|
221
|
+
- States: default captured; no safe active interaction expansion
|
|
222
|
+
- Use: Full-width primary action in the public interest-rate flow
|
|
223
|
+
|
|
224
|
+
**Content Filter Chip**
|
|
225
|
+
- Background: `rgba(19, 189, 126, 0.15)`
|
|
226
|
+
- Text: `#13bd7e`
|
|
227
|
+
- Radius: 6px
|
|
228
|
+
- Padding: 10px 12px
|
|
229
|
+
- Font: 16px / 500 / Pretendard
|
|
230
|
+
- States: default captured; no safe active interaction expansion
|
|
231
|
+
- Use: Category and filter action on the public contents directory
|
|
232
|
+
|
|
233
|
+
**Customer Safety Card**
|
|
234
|
+
- Background: `#ffffff`
|
|
235
|
+
- Border: 1px solid `#f0f2f5`
|
|
236
|
+
- Radius: 24px
|
|
237
|
+
- Padding: 24px
|
|
238
|
+
- Use: Customer-safety action and guidance card
|
|
239
|
+
|
|
240
|
+
**Product Disclosure Row**
|
|
241
|
+
- Background: transparent
|
|
242
|
+
- Text: `#111111`
|
|
243
|
+
- Radius: 0px
|
|
244
|
+
- Padding: 24px 20px
|
|
245
|
+
- Font: 16px / 400 / Pretendard
|
|
246
|
+
- Use: Expandable disclosure row on the public card-product detail
|
|
190
247
|
|
|
191
|
-
|
|
248
|
+
<details>
|
|
249
|
+
<summary>Superseded 2026-05 legacy snapshot — retained for audit history, not canonical</summary>
|
|
250
|
+
|
|
251
|
+
### Legacy Buttons
|
|
252
|
+
|
|
253
|
+
#### Primary CTA (Salad Green)
|
|
192
254
|
- Background: `#04c584`
|
|
193
255
|
- Text: `#ffffff`
|
|
194
256
|
- Border: none
|
|
@@ -199,7 +261,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
199
261
|
- Hover: background `#10df99` (lightens — opposite of convention)
|
|
200
262
|
- Use: Primary CTA on data tables, recommendation rows, transactional flows ("내 카드 추천 받기", "신청하기")
|
|
201
263
|
|
|
202
|
-
|
|
264
|
+
#### Primary CTA — Large Display
|
|
203
265
|
- Background: `#04c584`
|
|
204
266
|
- Text: `#ffffff`
|
|
205
267
|
- Border: none
|
|
@@ -211,7 +273,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
211
273
|
- Hover: `#10df99`
|
|
212
274
|
- Use: Hero CTA on landing surfaces ("앱 다운로드", "지금 시작하기")
|
|
213
275
|
|
|
214
|
-
|
|
276
|
+
#### Primary CTA — Hover-Inverted (Retry)
|
|
215
277
|
- Background: `#10df99` (default lighter)
|
|
216
278
|
- Text: `#ffffff`
|
|
217
279
|
- Border: none
|
|
@@ -221,7 +283,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
221
283
|
- Hover: background `#04c584` (darkens — the one place Banksalad uses the darken pattern)
|
|
222
284
|
- Use: Secondary retry / "다시 시도" actions where the resting state is a softer mint
|
|
223
285
|
|
|
224
|
-
|
|
286
|
+
#### Ghost / Outlined
|
|
225
287
|
- Background: `#ffffff`
|
|
226
288
|
- Text: `#04c584`
|
|
227
289
|
- Border: 1px solid `#04c584`
|
|
@@ -231,7 +293,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
231
293
|
- Hover: background `#f3fdfa` (mint tint)
|
|
232
294
|
- Use: Secondary actions paired with a Primary CTA
|
|
233
295
|
|
|
234
|
-
|
|
296
|
+
#### Neutral / Cancel
|
|
235
297
|
- Background: `#f5f5f5`
|
|
236
298
|
- Text: `#434444`
|
|
237
299
|
- Border: none
|
|
@@ -241,7 +303,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
241
303
|
- Hover: background `#e1e1e1`
|
|
242
304
|
- Use: Cancel / "취소" / dismiss actions
|
|
243
305
|
|
|
244
|
-
|
|
306
|
+
#### Disabled
|
|
245
307
|
- Background: `#e1e1e1`
|
|
246
308
|
- Text: `#acacac`
|
|
247
309
|
- Border: none
|
|
@@ -249,7 +311,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
249
311
|
- Font: 16px / 700 / Pretendard
|
|
250
312
|
- Use: Disabled state (form incomplete, retry cooling down)
|
|
251
313
|
|
|
252
|
-
|
|
314
|
+
#### Link Button (Inline Text Link)
|
|
253
315
|
- Background: transparent
|
|
254
316
|
- Text: `#04c584`
|
|
255
317
|
- Border: none
|
|
@@ -260,7 +322,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
260
322
|
|
|
261
323
|
### Cards & Containers
|
|
262
324
|
|
|
263
|
-
|
|
325
|
+
#### Data Card (Default)
|
|
264
326
|
- Background: `#ffffff`
|
|
265
327
|
- Border: 1px solid `#e1e1e1` (some surfaces use no border + shadow only)
|
|
266
328
|
- Radius: 2px
|
|
@@ -268,7 +330,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
268
330
|
- Shadow: `0 2px 5px rgba(0, 0, 0, 0.12)`
|
|
269
331
|
- Use: Recommendation rows, transaction cards, account summary blocks
|
|
270
332
|
|
|
271
|
-
|
|
333
|
+
#### Card — Soft Variant
|
|
272
334
|
- Background: `#fbfbfb`
|
|
273
335
|
- Border: none
|
|
274
336
|
- Radius: 8px
|
|
@@ -276,7 +338,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
276
338
|
- Shadow: `0 2px 8px rgba(0, 0, 0, 0.1)`
|
|
277
339
|
- Use: Marketing/landing feature cards (the rare 8px-radius case)
|
|
278
340
|
|
|
279
|
-
|
|
341
|
+
#### Card — Highlight (Selected)
|
|
280
342
|
- Background: `#f3fdfa`
|
|
281
343
|
- Border: 1px solid `#10df99`
|
|
282
344
|
- Radius: 2px
|
|
@@ -285,7 +347,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
285
347
|
|
|
286
348
|
### Inputs & Forms
|
|
287
349
|
|
|
288
|
-
|
|
350
|
+
#### Text Input (Default)
|
|
289
351
|
- Background: `#ffffff`
|
|
290
352
|
- Text: `#999999` (placeholder) / `#434444` (filled)
|
|
291
353
|
- Border: 1px solid `#e1e1e1`
|
|
@@ -294,14 +356,14 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
294
356
|
- Height: 48px
|
|
295
357
|
- Font: 16px / 500 / Pretendard
|
|
296
358
|
|
|
297
|
-
|
|
359
|
+
#### Text Input — Focus
|
|
298
360
|
- Background: `#f3fdfa`
|
|
299
361
|
- Text: `#434444`
|
|
300
362
|
- Border: 1px solid `#10df99`
|
|
301
363
|
- Radius: 2px
|
|
302
364
|
- Use: Active typing state — the mint tint is the only branded background fill in the system
|
|
303
365
|
|
|
304
|
-
|
|
366
|
+
#### Text Input — Error
|
|
305
367
|
- Background: `#ffffff`
|
|
306
368
|
- Text: `#434444`
|
|
307
369
|
- Border: 1px solid `#fe493d`
|
|
@@ -309,7 +371,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
309
371
|
- Error message below: 12px / 500 / `#fe493d`
|
|
310
372
|
- Use: Validation failure state
|
|
311
373
|
|
|
312
|
-
|
|
374
|
+
#### Amount Input (Financial)
|
|
313
375
|
- Background: `#ffffff`
|
|
314
376
|
- Text: `#2b2b2b`
|
|
315
377
|
- Border: 2px solid `#f5f5f5`
|
|
@@ -321,7 +383,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
321
383
|
|
|
322
384
|
### Badges & Tags
|
|
323
385
|
|
|
324
|
-
|
|
386
|
+
#### Status Pill (Brand)
|
|
325
387
|
- Background: `#f3fdfa`
|
|
326
388
|
- Text: `#04c584`
|
|
327
389
|
- Border: none
|
|
@@ -330,7 +392,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
330
392
|
- Font: 12px / 500 / Pretendard
|
|
331
393
|
- Use: Filter chips ("연회비 없음", "주유 할인") on card-recommendation pages
|
|
332
394
|
|
|
333
|
-
|
|
395
|
+
#### Status Badge (Warning)
|
|
334
396
|
- Background: `#ffffff`
|
|
335
397
|
- Text: `#f56200`
|
|
336
398
|
- Border: 1px solid `#fd8700`
|
|
@@ -339,7 +401,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
339
401
|
- Font: 12px / 700 / Pretendard
|
|
340
402
|
- Use: Rate-warning, expiry, attention-needed indicators
|
|
341
403
|
|
|
342
|
-
|
|
404
|
+
#### Status Badge (Negative)
|
|
343
405
|
- Background: `#ffffff`
|
|
344
406
|
- Text: `#fe493d`
|
|
345
407
|
- Border: 1px solid `#fe493d`
|
|
@@ -350,7 +412,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
350
412
|
|
|
351
413
|
### Tables (Financial Data)
|
|
352
414
|
|
|
353
|
-
|
|
415
|
+
#### Table Header Row
|
|
354
416
|
- Background: `#f5f5f5`
|
|
355
417
|
- Text: `#7b7b7b`
|
|
356
418
|
- Border-bottom: 1px solid `#e1e1e1`
|
|
@@ -358,7 +420,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
358
420
|
- Font: 13px / 700 / Pretendard / uppercase letter-spacing 0.05em
|
|
359
421
|
- Use: Column headers on transaction lists, fee schedules
|
|
360
422
|
|
|
361
|
-
|
|
423
|
+
#### Table Body Row
|
|
362
424
|
- Background: `#ffffff` (alternates with `#fbfbfb` on dense tables)
|
|
363
425
|
- Text: `#434444`
|
|
364
426
|
- Border-bottom: 1px solid `#e1e1e1`
|
|
@@ -369,7 +431,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
369
431
|
|
|
370
432
|
### Charts & Data Viz
|
|
371
433
|
|
|
372
|
-
|
|
434
|
+
#### Chart Series Tokens
|
|
373
435
|
- Series 1: `#34464b` (primary)
|
|
374
436
|
- Series 2: `#5c818a` (secondary)
|
|
375
437
|
- Series 3: `#1c6c73` (tertiary)
|
|
@@ -378,7 +440,7 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
378
440
|
- Negative: `#fe493d`
|
|
379
441
|
- Positive trend: `#04c584`
|
|
380
442
|
|
|
381
|
-
|
|
443
|
+
#### Axis & Gridlines
|
|
382
444
|
- Axis label: 10–12px / 500 / `#7b7b7b`
|
|
383
445
|
- Gridline: 1px dashed `#e1e1e1`
|
|
384
446
|
- Background: `#ffffff` or `#fbfbfb`
|
|
@@ -404,11 +466,16 @@ The teal-slate family is intentionally **cooler than the brand green**, so that
|
|
|
404
466
|
|
|
405
467
|
---
|
|
406
468
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
**
|
|
469
|
+
</details>
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
**Verified:** 2026-07-12 (omd:migrate)
|
|
474
|
+
**Tier 1 sources:** https://www.banksalad.com/ ; https://www.banksalad.com/contents ; https://www.banksalad.com/loan/interest-rate-cut ; https://www.banksalad.com/customer-safety ; https://www.banksalad.com/product/cards/CARD002319 ; https://blog.banksalad.com/tech/banksalad-product-language-design/ ; https://blog.banksalad.com/tech/banksalad-product-language-ios/
|
|
475
|
+
**Tier 2 sources:** https://getdesign.md/banksalad (no brand record found in exact search); https://styles.refero.design/?q=banksalad (attempted; browser-harness unavailable and indexed search returned no brand result)
|
|
476
|
+
**Tier 2 status:** unavailable
|
|
477
|
+
**Conflicts unresolved:** none
|
|
478
|
+
**Earlier mistakes reverted:** `#04c584` canonical primary, `#10df99` hover, BM JUA current usage, 2px default radius, and uncaptured input/chart/modal/state claims
|
|
412
479
|
|
|
413
480
|
## 5. Layout Principles
|
|
414
481
|
|
|
@@ -546,7 +613,10 @@ Banksalad's 2px is a typographic-engineering commitment: pixel rounding sharp en
|
|
|
546
613
|
|
|
547
614
|
## 10. Voice & Tone
|
|
548
615
|
|
|
549
|
-
|
|
616
|
+
Current public copy is direct, explanatory, and comparison-oriented. The home page connects financial and health assets; the contents directory names products, benefits, and comparison tasks explicitly; customer-safety copy gives the risk and the next action. This supports a factual Korean product voice, but it does not establish the invented notification, validation, or authenticated-app copy previously included here.
|
|
617
|
+
|
|
618
|
+
<details>
|
|
619
|
+
<summary>Superseded voice hypotheses — not current official guidance</summary>
|
|
550
620
|
|
|
551
621
|
| Context | Tone |
|
|
552
622
|
|---|---|
|
|
@@ -560,43 +630,53 @@ Banksalad speaks like a **trustworthy financial advisor who happens to read the
|
|
|
560
630
|
| Legal / disclosure | Formal `~합니다` endings. Pinned at the bottom of recommendation cards. Treated as part of the product, not a footer afterthought. |
|
|
561
631
|
| Health-asset (DNA, screening) | Same calm advisor voice as finance. No marketing exuberance about "discovering your DNA". Just `이번 검사로 18가지 항목을 확인할 수 있어요`. |
|
|
562
632
|
|
|
563
|
-
|
|
633
|
+
</details>
|
|
634
|
+
|
|
635
|
+
The table above is a historical hypothesis and is not promoted as an official writing standard. Current verified samples are:
|
|
636
|
+
|
|
637
|
+
- “금융을 넘어 건강 자산까지” — current home positioning. <!-- verified: https://www.banksalad.com/ -->
|
|
638
|
+
- “신용대출, 햇살론, 직장인 대출까지 한 번에 비교하세요” — comparison copy. <!-- verified: https://www.banksalad.com/contents -->
|
|
639
|
+
- “내 대출금리 조회” — concrete product action. <!-- verified: https://www.banksalad.com/contents -->
|
|
640
|
+
- “명의 도용 의심 도용사고·보이스피싱 신고 및 행동 요령을 확인하세요” — risk plus next action. <!-- verified: https://www.banksalad.com/customer-safety -->
|
|
641
|
+
|
|
642
|
+
No complete official voice-and-tone manual was found. Push notifications, authenticated errors, sentence-ending rules, and prohibited phrase lists remain unresolved.
|
|
564
643
|
|
|
565
644
|
## 11. Brand Narrative
|
|
566
645
|
|
|
567
|
-
Banksalad
|
|
646
|
+
Banksalad's current first-party web presence presents a data-based financial platform spanning product comparison, credit and loan guidance, financial content, customer safety, and a wider health-asset direction. The current home page describes a large comparison inventory and a recommendation engine designed to help people choose favorable products. This reference uses those live statements as the present product narrative and does not rely on third-party founder mythology, funding figures, or fabricated competitive comparisons.
|
|
568
647
|
|
|
569
|
-
|
|
648
|
+
The official BPL publications explain how this product is made. Banksalad describes Product Language as broader than a visual design system: designers and platform engineers share names, abstraction boundaries, component structures, implementation guidance, and examples. BPL emerged alongside a major service redesign, moved collaborative design work to Figma, established ground rules, and maintained versioned libraries and sample applications so platform differences could be reviewed rather than hidden.
|
|
570
649
|
|
|
571
|
-
|
|
650
|
+
BPL's implementation article states “Communication cost is most expensive. Code and Show first, argue after that.” It describes working prototypes, component examples, snapshot testing, and an integral sample app as ways to align design and implementation. These are verified process principles. They do not prove that the colors, radius, or typography observed in 2020 remain current tokens, which is why the current five-surface measurements are reconciled independently.
|
|
572
651
|
|
|
573
|
-
|
|
652
|
+
The current design identity therefore has two evidence layers: an official history of cross-functional product-language practice, and a present web implementation built from white surfaces, Pretendard, green actions, explicit comparison copy, and role-specific geometry. Neither layer is used as a substitute for inaccessible native-app evidence.
|
|
574
653
|
|
|
575
654
|
## 12. Principles
|
|
576
655
|
|
|
577
|
-
1. **
|
|
578
|
-
2. **
|
|
579
|
-
3. **
|
|
580
|
-
4. **
|
|
581
|
-
5. **
|
|
582
|
-
6. **The reason for the recommendation is part of the product.** Disclaimers, comparison criteria, and rate sources are not legal footers — they are pinned inside the recommendation card, in the same visual frame as the recommendation itself. UI implication: every recommendation component reserves a `disclosure` slot that is always rendered, not collapsed-by-default.
|
|
583
|
-
7. **Korean and Latin numerals must align.** Pretendard's optical alignment between 한글 and Latin numerals is non-negotiable — a column of `1,240,000원` and `$1,240` should read as one column, not two scripts arguing. UI implication: never substitute a Latin-only font for numeric display; Pretendard handles both.
|
|
584
|
-
8. **Charts use teal-slate, not brand green, for the field.** Reserving green for the user's own value makes the user's position immediately legible against neutral series. UI implication: chart `seriesColors` defaults to `[#34464b, #5c818a, #1c6c73, #a7c7cf]`; user's series defaults to `#04c584`.
|
|
585
|
-
9. **Approximations are a betrayal.** `약 ~원` on a primary money surface tells the user the product does not actually know the number. Banksalad's brand promise is information clarity; rounded figures are forbidden where the precise figure exists. UI implication: financial-amount components do not accept a `round: true` flag.
|
|
656
|
+
1. **Share one product language.** BPL exists so design and platform teams name and structure the same UI concepts consistently. *UI implication:* component names and anatomy should map across design and implementation rather than being reinvented per platform.
|
|
657
|
+
2. **Code and show before abstract debate.** The official BPL article uses working prototypes to expose where teams agree or disagree. *UI implication:* validate a component in a representative screen before promoting a generalized rule.
|
|
658
|
+
3. **Keep design and implementation structures aligned.** BPL describes matching Figma layout structure closely enough that a design change produces a corresponding implementation change. *UI implication:* avoid premature abstraction that obscures the authored component anatomy.
|
|
659
|
+
4. **Version the shared language.** The official design article describes fixed platform versions, update tracking, and component-list tooling. *UI implication:* reference claims need dates and surface provenance; old BPL values cannot silently become current web tokens.
|
|
660
|
+
5. **Test components alone and in realistic composition.** BPL used component examples, snapshot tests, and an integral sample app. *UI implication:* validate both the isolated spec and the assembled product flow.
|
|
586
661
|
|
|
587
662
|
## 13. Personas
|
|
588
663
|
|
|
589
|
-
|
|
664
|
+
Banksalad does not publish validated demographic personas in the sources used for this pass. The current public surfaces support task contexts instead:
|
|
590
665
|
|
|
591
|
-
|
|
666
|
+
- A person comparing cards, loans, deposits, or insurance and reading product conditions.
|
|
667
|
+
- A person checking whether an interest-rate reduction request may be available.
|
|
668
|
+
- A card-detail visitor reading benefits, disclosures, and product metadata.
|
|
669
|
+
- A customer looking for fraud, identity-theft, voice-phishing, or mistaken-transfer guidance.
|
|
670
|
+
- A reader using the financial contents directory to understand a decision before entering a product flow.
|
|
592
671
|
|
|
593
|
-
|
|
672
|
+
These are observable jobs, not invented people. Names, ages, quotes, income, behavior frequency, and authenticated-app habits require separate user research.
|
|
594
673
|
|
|
595
|
-
|
|
674
|
+
## 14. States
|
|
596
675
|
|
|
597
|
-
|
|
676
|
+
The collector recorded default render states only and performed zero safe interaction expansions. No canonical empty, loading, error, success, disabled, hover, focus, or pressed treatment is promoted. The loan accordion was captured in its rendered state, but this does not establish a complete product-state system.
|
|
598
677
|
|
|
599
|
-
|
|
678
|
+
<details>
|
|
679
|
+
<summary>Superseded synthetic state proposals — not verified product facts</summary>
|
|
600
680
|
|
|
601
681
|
| State | Treatment |
|
|
602
682
|
|---|---|
|
|
@@ -614,8 +694,15 @@ What Banksalad refuses: the cheerful consumer-app voice of Toss and KakaoPay (ba
|
|
|
614
694
|
| **Disabled** | Background `#e1e1e1`, text `#acacac`, 2px radius preserved. Cursor `not-allowed`. The geometry stays identical to the enabled state so re-enabling does not shift layout. |
|
|
615
695
|
| **Pressed (button)** | Inset shadow `inset 0 1px 1px rgba(0,0,0,.12)` + background shifts by ~5% darker for the press duration. Returns instantly on release (no spring). |
|
|
616
696
|
|
|
697
|
+
</details>
|
|
698
|
+
|
|
617
699
|
## 15. Motion & Easing
|
|
618
700
|
|
|
701
|
+
One current public accordion panel exposed a `350ms` height/opacity transition using `cubic-bezier(0.25, 0.1, 0.25, 1)`. No broader duration scale, spring policy, chart animation, score count-up, or reduced-motion implementation was verified in this capture.
|
|
702
|
+
|
|
703
|
+
<details>
|
|
704
|
+
<summary>Superseded synthetic motion proposals — not verified product facts</summary>
|
|
705
|
+
|
|
619
706
|
**Durations:**
|
|
620
707
|
|
|
621
708
|
| Token | Value | Use |
|
|
@@ -644,6 +731,8 @@ What Banksalad refuses: the cheerful consumer-app voice of Toss and KakaoPay (ba
|
|
|
644
731
|
3. **Recommendation card reveal.** When a fresh recommendation set loads, cards fade in with `motion-standard / ease-enter` from `opacity: 0; translateY(4px)`. Translate is intentionally small (4px, not 20px) — the cards arrive, they do not fly in.
|
|
645
732
|
4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Score count-ups become instant value swaps. Chart draw-ins render their final state immediately. Banksalad remains fully usable; nothing in the product is information-dependent on motion.
|
|
646
733
|
|
|
734
|
+
</details>
|
|
735
|
+
|
|
647
736
|
<!--
|
|
648
737
|
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
649
738
|
|