Banksalad's reference documents #13bd7e as a documented primary color, Pretendard for typography, 24px corner radius. 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.
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.
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.
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.
Key Characteristics:
#13bd7e; deeper action green #06a96c#ffffff canvas with #111111 foreground, #555c68 secondary text, and #9fa4b0 muted metadata#13bd7e): repeated green text and border color across home, contents, loan, and card-detail surfaces.#06a96c): full-width loan-flow action background, paired with #ffffff text.#04c584 and #10df99 values were not observed in the five-surface capture and are not current canonical tokens.#111111): dominant heading, body, and list text across all five surfaces.#555c68): supporting copy on home, contents, and card detail.#606874): explanatory copy in loan and customer-safety contexts.#9fa4b0): product metadata and subdued actions on contents and card detail.#ffffff): default current page and card surface.#f0f2f5): observed 1px customer-safety card border.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.
| Evidence class | Resolution |
|---|---|
| Official product-use | BPL publications establish an official product-language system, but do not publish a current universal font token in the inspected text. |
| Live surface-use | Five public web surfaces loaded and visibly used Pretendard on 603 elements. |
| Official distributed asset | No Banksalad-exclusive UI font asset is promoted in this reference. |
| Declared-only | swiper-icons was declared with zero visible text usage. |
| Unresolved | Native-app-only typography remains unresolved without an inspectable current surface. |
Specimen availability requires a loadable font source and is separate from family truth.
Pretendard, -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Product Heading | Pretendard | 20px | 700 | 28px | normal | Repeated section and card heading |
| Supporting Heading | Pretendard | 18px | 700 | 26px | -0.09px | Compact product heading |
| Body | Pretendard | 16px | 400 | 24px | normal | Shared product body and list copy |
| Prominent Label | Pretendard | 16px | 700 | 26px | -0.08px | Action and emphasized product label |
| Metadata | Pretendard | 14px | 500 | 20px | -0.07px | Supporting product information |
| Caption | Pretendard | 12px | 500–700 | 18px | -0.06px | Dense metadata where observed |
Primary Loan Action
#06a96c#ffffffContent Filter Chip
rgba(19, 189, 126, 0.15)#13bd7eCustomer Safety Card
#ffffff#f0f2f5Product Disclosure Row
#111111#04c584#ffffff#10df99 (lightens — opposite of convention)#04c584#ffffff#10df99#10df99 (default lighter)#ffffff#04c584 (darkens — the one place Banksalad uses the darken pattern)#ffffff#04c584#04c584#f3fdfa (mint tint)#f5f5f5#434444#e1e1e1#e1e1e1#acacac#04c584#ffffff#e1e1e1 (some surfaces use no border + shadow only)0 2px 5px rgba(0, 0, 0, 0.12)#fbfbfb0 2px 8px rgba(0, 0, 0, 0.1)#f3fdfa#10df99#ffffff#999999 (placeholder) / #434444 (filled)#e1e1e1#f3fdfa#434444#10df99#ffffff#434444#fe493d#fe493d#ffffff#2b2b2b#f5f5f5#f3fdfa#04c584#ffffff#f56200#fd8700#ffffff#fe493d#fe493d#f5f5f5#7b7b7b#e1e1e1#ffffff (alternates with #fbfbfb on dense tables)#434444#e1e1e1#2b2b2b (positive) or #fe493d (negative)#34464b (primary)#5c818a (secondary)#1c6c73 (tertiary)#a7c7cf (quaternary / pale)#04c584 (always reserved for "your value" / user's own data point)#fe493d#04c584#7b7b7b#e1e1e1#ffffff or #fbfbfb#ffffff), no shadow at rest, 1px bottom border #f5f5f5#04c584 (or #2b2b2b mono variant)#434444, hover #04c584#2b2b2b text, 1px solid #d8dfe6 border, 16px radius, 6px 14px padding, 14px / 400 (the home-page header uses a softer 16px radius for the auth pill — exception to the 2px default; this is the only 16px-radius live observation in the captured DOM)| Level | Treatment | Use |
|---|---|---|
| Flat | none | Page background, inline elements |
| Soft (L1) | 0 1px 1px rgba(0,0,0,.08) | Subtle row separators |
| Standard (L2) | 0 2px 5px rgba(0,0,0,.12) | Default cards — most common (~38 occurrences) |
| Elevated (L3) | 0 4px 9px rgba(0,0,0,.15) | Dropdowns, popovers |
| Deep (L4) | 0px 2px 8px rgba(0,0,0,.1) | Floating panels |
| Modal (L5) | 0 17px 50px rgba(0,0,0,.19) | Modal dialogs |
| Inset | inset 0 1px 1px rgba(0,0,0,.12) | Pressed-button / depressed input feel |
Verified: 2026-07-12 (omd:migrate)
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/
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)
Tier 2 status: unavailable
Conflicts unresolved: none
Earlier mistakes reverted: #04c584 canonical primary, #10df99 hover, BM JUA current usage, 2px default radius, and uncaptured input/chart/modal/state claims
#ffffff) and off-white (#fbfbfb) sections alternate quietly — not for drama, but to chunk dense data into scannable bands.Banksalad's 2px is a typographic-engineering commitment: pixel rounding sharp enough to look engineered, soft enough to not draw blood. Any radius ≥ 12px feels Toss-ish and is reserved for explicitly marketing-warmth contexts.
| Level | Treatment | Use |
|---|---|---|
| Flat (L0) | No shadow | Page background, inline elements |
| Soft (L1) | 0 1px 1px rgba(0,0,0,.08) | Subtle row lift, list-item separators |
| Standard (L2) | 0 2px 5px rgba(0,0,0,.12) | Default cards — by far the most common (~38 occurrences) |
| Elevated (L3) | 0 4px 9px rgba(0,0,0,.15) | Dropdowns, hover-elevated cards |
| Deep (L4) | 0px 2px 8px rgba(0,0,0,.1) | Floating action panels |
| Modal (L5) | 0 17px 50px rgba(0,0,0,.19) | Dialog modals, account-switch overlays |
| Inset (L-1) | inset 0 1px 1px rgba(0,0,0,.12) | Pressed button state, depressed input visual |
| Halo | 0 0 2px rgba(0,0,0,.26) | Thin outline on overlay menus and popovers |
Shadow Philosophy. Shadows are always neutral and single-layer. No colored shadows, no parallax stacks. Where Stripe brands its shadows in navy and Toss uses near-zero shadows for clinical clarity, Banksalad sits between — visible enough that cards lift off the surface, restrained enough that the data inside is what the eye lands on. The signature 0 2px 5px rgba(0,0,0,.12) is a small, low-cost lift used 38× in the bundle.
#04c584 for every interactive moment — CTAs, links, focus accents, "your data point" on charts#10df99 for hover (it's brighter than #04c584 — Banksalad lightens on interaction)#f3fdfa mint tint on input focus background — the only branded surface tint in the system#2b2b2b/#434444 warm near-blacks for type instead of #000000#34464b/#5c818a/#1c6c73/#a7c7cf) for chart series — cooler than brand green by design#04c584 only for "your value" on a chart — never as a generic data fill12,400,000원)약 120만원) on primary financial surfaces — bare numerals with commas only#0099ff info-blue for default links — green is the default link color; blue is reserved for external references| Name | Width | Key Changes |
|---|---|---|
| Mobile | <600px | Single column, full-width tables (horizontal scroll if needed), 16px gutters |
| Tablet | 600–1024px | 2-column card grids, 20px gutters |
| Desktop | 1024–1280px | Full marketing layout, 3-column feature grids |
| Large | >1280px | Centered content max-width ~1200px |
#04c584)#10df99)#ffffff)#fbfbfb)#f5f5f5)#2b2b2b)#434444)#7b7b7b)#999999)#e1e1e1)#f3fdfa)#34464b / #5c818a / #1c6c73 / #a7c7cf#fe493d#fd8700 / #f56200#04c584 background, white text, 2px border-radius (not 12px), 700-weight Pretendard at 16px, 12px 24px padding, 42px height. Hover lightens to #10df99."#e1e1e1 border, 2px radius, 20px 24px padding, shadow 0 2px 5px rgba(0,0,0,.12). Card logo 32px left, title 16px/700 #2b2b2b, three filter chips below (#f3fdfa bg, #04c584 text, 41px radius, 12px/500), annual-fee figure right-aligned 18px/700 with '원' suffix in 500."#f5f5f5, on focus border #10df99 and background #f3fdfa. Text 22px/700 right-aligned, #2b2b2b, won unit in 500 weight following the digits."#7b7b7b, gridlines 1px dashed #e1e1e1. Series 1 #34464b, series 2 #5c818a, series 3 #1c6c73. User's own data point in #04c584 to make 'your value' pop against neutral teal-slate."#ffffff / #fbfbfb background, 12px 16px padding, 1px solid #e1e1e1 bottom border. Date column 14px/500 #7b7b7b, merchant 14px/500 #434444, amount right-aligned 14px/700 — #2b2b2b for positive, #fe493d for negative."#04c584 as a generic background fill or decorative element. It always means: the user can tap this, or this is the user's own data.#04c584 → #10df99 on hover (the opposite of conventional darken-on-hover). This is a signature.0 2px 5px rgba(0,0,0,.12) is the workhorse. No colored shadows.#34464b / #5c818a / #1c6c73 / #a7c7cf. Reserve green for the user's own data point.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.
| Context | Tone |
|---|---|
| CTAs | Imperative, concrete outcome. 내 카드 찾기, 대출 한도 확인하기, 신청하기. Never 시작하기 → with an arrow flourish. |
| Section headlines | Statement of fact, not a hook. 이번 달 지출 분석 not 이번 달, 얼마나 썼는지 보러 갈까요?. |
| Recommendations | Justified. Every recommended card or loan has a one-sentence reason next to it (연 30만원 이상 절약될 수 있어요). Never a bare ranked list. |
| Financial figures | Bare numerals with commas. 1,240,000원. Approximations (약 124만원) are forbidden on primary surfaces. |
| Success messages | One-line confirmation + the relevant figure. 신용점수가 855점으로 올랐어요. No emoji, no exclamation. |
| Error / validation | Specific cause + one-line action. 주민등록번호가 일치하지 않아요. 다시 확인해주세요. Never 오류가 발생했습니다. |
| Empty states | Explain the why, then suggest one next step. 아직 연동된 카드가 없어요. 카드를 연동하면 자동으로 지출 분석이 시작돼요. |
| Legal / disclosure | Formal ~합니다 endings. Pinned at the bottom of recommendation cards. Treated as part of the product, not a footer afterthought. |
| Health-asset (DNA, screening) | Same calm advisor voice as finance. No marketing exuberance about "discovering your DNA". Just 이번 검사로 18가지 항목을 확인할 수 있어요. |
The table above is a historical hypothesis and is not promoted as an official writing standard. Current verified samples are:
No complete official voice-and-tone manual was found. Push notifications, authenticated errors, sentence-ending rules, and prohibited phrase lists remain unresolved.
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.
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.
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.
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.
Banksalad does not publish validated demographic personas in the sources used for this pass. The current public surfaces support task contexts instead:
These are observable jobs, not invented people. Names, ages, quotes, income, behavior frequency, and authenticated-app habits require separate user research.
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.
| State | Treatment |
|---|---|
| Empty (no linked accounts) | White canvas. Single short paragraph in #434444 body text explaining why the screen is empty (아직 연동된 카드가 없어요. 카드를 연동하면 자동으로 지출 분석이 시작돼요.). One primary CTA in Salad Green (#04c584, 2px radius). No illustration. |
| Empty (filter cleared) | Single line of #7b7b7b caption (조건에 맞는 결과가 없어요. 필터를 조정해주세요.). No CTA — user adjusts filters themselves. |
| Empty (no transactions this period) | Two-line message in #434444 explaining the filter scope (선택한 기간에 거래 내역이 없어요. 다른 기간을 선택하거나 카드 연동을 확인해보세요.). |
| Loading (first paint) | Skeleton blocks at #f5f5f5 matching the final layout exactly. Financial amounts render as --원 placeholders rather than skeleton bars — a skeleton bar that resolves to a number is disorienting; -- is honest. 1s shimmer with 8% white highlight using a linear-gradient sweep. |
| Loading (refresh / in-place) | Subtle #04c584 2px progress bar at top of the section. Previous values stay visible. Never block the table during refresh. |
| Error (inline field) | #fe493d 1px border on the input, 12px error text below in #fe493d weight 500. One actionable sentence (주민등록번호가 일치하지 않아요. 다시 확인해주세요.). |
| Error (recommendation fetch failed) | Inline banner inside the recommendation card area. #fe493d left border, white background, 14px #434444 text explaining what failed + a 다시 시도하기 button in the retry-button style (#10df99 resting → #04c584 on hover). Never a generic toast. |
| Error (data freshness warning) | Soft warning banner with #fd8700 left accent bar, white background, 13px #7b7b7b text noting the data is N hours stale. Non-blocking — the user can still see the (possibly stale) figures. |
| Success (action confirmed) | Inline confirmation row in #f3fdfa mint-tint background, #04c584 16px / 700 confirmation text, the relevant figure in 22px / 700 #2b2b2b below. No toast for important actions — they get their own confirmation surface. |
| Success (passive update) | 3s auto-dismiss toast at top-right. #2b2b2b background (NOT brand green — green is reserved for interactive surfaces), white 14px / 500 text, 2px radius, shadow 0 2px 5px rgba(0,0,0,.12). No emoji. |
| Skeleton | #f5f5f5 blocks at exact final dimensions, 2px radius matching the component being loaded. 1s shimmer. Financial-amount slots show --원, not a bar. |
| 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. |
| 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). |
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.
Durations:
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | State commits, checkbox flips, focus ring appearance |
motion-fast | 150ms | Hover, focus, button press overlays, inline value updates |
motion-standard | 250ms | Card expand, dropdown open, tab content switch, modal open |
motion-slow | 400ms | Page-level transitions, recommendation-card reveal animation |
motion-data | 600ms | Chart series draw-in, score-bar count-up — slower because the user needs time to read the number |
Easings:
| Token | Curve | Use |
|---|---|---|
ease-enter | cubic-bezier(0.0, 0.0, 0.2, 1) | Arriving — modals, dropdowns, sheets |
ease-exit | cubic-bezier(0.4, 0.0, 1, 1) | Dismissals |
ease-standard | cubic-bezier(0.4, 0.0, 0.2, 1) | Two-way transitions, chart draw-in |
ease-data | cubic-bezier(0.25, 0.46, 0.45, 0.94) | Score count-up, chart series — eases out gradually so the final value is the calm resting state |
Explicitly forbidden. No spring overshoot anywhere. No bounce. No cubic-bezier with a middle control above 1.0. Banksalad's voice is advisor, not delighter — spring-easing reads as a consumer app celebrating a transaction, which is the opposite of the brand promise. Where Toss licenses spring easing only for the money-moved checkmark, Banksalad does not license it at all.
Signature motions.
motion-data (600ms) with ease-data. The duration is deliberately slow — the user is supposed to read the change, not see it flash. The Korean numeric separators (,) re-flow correctly during the count.motion-data with ease-standard. The user's own series (#04c584) is drawn last, so the eye lands on the user's own data after the surrounding distribution has been established.motion-standard / ease-enter from opacity: 0; translateY(4px). Translate is intentionally small (4px, not 20px) — the cards arrive, they do not fly in.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.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.
Brand
Accent
Neutrals
Type Scale
Verified size, weight, line-height, and tracking. Family is omitted when unresolved.
Fonts
Spacing
| Purpose | Value | Preview |
|---|---|---|
| sm | 8px | |
| md | 12px | |
| base | 16px | |
| lg | 24px |
Border Radius
| Element | Value | Preview |
|---|---|---|
| actionStructured token | 16px | |
| cardStructured token | 24px | |
| chipStructured token | 6px | |
| fullStructured token | 9999px |
Elevation
Do and Don't guidelines parsed from DESIGN.md.
Do
Don't
List items
Buttons
Cards