Kurly
Kurly
kurly
Design System
Kurly logo

Kurly

Kurly's interface is the digital equivalent of a curator's grocer -- a quiet white-and-cream gallery wall where the only saturated thing in the room is one deep, editorial purple. The page opens on a near-pure white canvas (#ffffff) with a soft cool-gray utility fill (#f2f5f8) and ink-black headings (#222), and the unmistakable **Kurly Purple #5f0080

01

Color Palette

Brand

Accent

Neutrals

Semantic

02

Typography

Type Scale

Rendered in system-ui to clearly show scale & weight.

display48px · 700 · 1.25
Design at scale
32px32px · 700 · 1.25
Section heading
heading-lg24px · 700 · 1.4
Subheading
body16px · 400 · 1.5
Body text. The quick brown fox jumps over the lazy dog. Designed for readable line-height in long-form content.
small12px · 400 · 1.5
Supporting text
caption12px · 400 · 1.5
Caption · timestamp · 2026
label10px · 500 · 1.5
BADGE / LABEL

Fonts

Primary
Pretendard Variable
Open · OFL
Modern Korean variable font with full Latin coverage.
Install via GitHub · orioncactus/pretendard
Primary
Apple System
Systemno install needed
macOS/iOS default — uses SF Pro automatically.
Not publicly distributed.
Primary
Apple System (Blink)
Systemno install needed
Chrome alias for Apple system font on macOS.
Not publicly distributed.
Primary
System UI
Systemno install needed
Generic OS-default font keyword.
Not publicly distributed.
Primary
Roboto
Open · Apache 2.0
Install via Google Fonts
Primary
Helvetica Neue
Commercial
Pre-installed on macOS/iOS. Commercial license required for redistribution.
Source · Linotype
Primary
Segoe UI
Brand-only
Not in the OMD font registry. Likely a brand-proprietary typeface — check the brand's own design site for source/availability.
Not publicly distributed.
Primary
Apple SD Gothic Neo
Systemno install needed
Apple system font for Korean.
Not publicly distributed.
Primary
Noto Sans KR
Open · OFL
Install via Google Fonts
Primary
Malgun Gothic
Brand-only
Not in the OMD font registry. Likely a brand-proprietary typeface — check the brand's own design site for source/availability.
Not publicly distributed.
Primary
Apple Color Emoji
Brand-only
Not in the OMD font registry. Likely a brand-proprietary typeface — check the brand's own design site for source/availability.
Not publicly distributed.
03

Spacing & Shape

Spacing

PurposeValuePreview
Densitycompact
Base unit4px
Section gap16px
Card padding12px
Element gap8px

Border Radius

ElementValuePreview
productSmall4px
badgesSmall4px
filterSmall4px
searchSmall4px
buttonsMedium6px
inputsMedium6px
quantityMedium6px
editorialLarge8px
contentLarge8px
dialogsXL12px
sheetsXL12px
largeXL12px

Elevation

Shadow 1
Shadow 2
Shadow 3
Shadow 4
Shadow 5
04

Guidelines

Do and Don't guidelines parsed from DESIGN.md.

Do

  • Use Kurly Purple (#5f0080) as the singular brand mark — wordmark, primary CTA, dawn-delivery badge
  • Pair purple with cream #f2f5f8 and white #ffffff only — let photography supply the warmth
  • Lead with photography on every product card — image takes the top 60% of the tile
  • Stack the price triple consistently: discount % (red), final price (ink), original price (strikethrough gray)
  • Use Pretendard at weights 400 / 600 / 700 only
  • Rest the page on cream sections between commerce-dense white grids
  • Reserve the bright purple #bd76ff for promotional sub-brand moments only (Beauty Kurly)

Don't

  • n't tint shadows purple — Kurly shadows are neutral so the purple stays singular
  • n't use Kurly Purple for backgrounds at scale — it is for marks and CTAs, not hero fills
  • n't introduce a second deep brand color (no "Kurly Green," no "Kurly Navy")
  • n't crowd product cards with badges — at most 2 badges visible per card (샛별배송 + one)
  • n't use italics in commerce chrome — italics belong only to long-form editorial copy
  • n't borrow Coupang/SSG visual cues (heavy red, dense ribbons) — Kurly is editorial, not arcade
  • n't use pure black #000 for text — #222 (ink-800) keeps the page from going clinical
05

Components

Buttons

Primary (Kurly Purple)
Background`#5f0080`
Text`#ffffff`
Radius6px
Padding16px 24px (lg), 12px 20px (md), 8px 16px (sm)
Font16px / 600 / Pretendard
Active`#672091`
Disabled`#dfe4eb` background, `#848f9a` text
Use: Primary commerce CTAs (`구매하기`, `장바구니 담기`, `주문하기`)
Secondary (Outline Purple)
Background`#ffffff`
Text`#5f0080`
Border1px solid `#5f0080`
Radius6px
Padding12px 20px
Font14px / 600 / Pretendard
Active`#f5effa` background
Use: Secondary actions (`바로 구매`, `옵션 변경`)
Neutral (Cream Fill)
Background`#f2f5f8`
Text`#222`
Border1px solid `#dfe4eb`
Radius6px
Padding12px 20px
Font14px / 600 / Pretendard
Active`#eceff3` background
Use: Tertiary actions (`취소`, `더보기`, filter open)
Ghost / Text Link
Backgroundtransparent
Text`#5f0080`
Radius0
Padding4px 8px
Font14px / 600 / Pretendard with right-chevron glyph
Use: Inline navigation (`전체보기 >`, `더 알아보기 >`)
Critical (Sale / Destructive)
Background`#e22d2e`
Text`#ffffff`
Radius6px
Padding12px 20px
Font14px / 600 / Pretendard
Active`#d81b1c`
Use: Last-chance sale CTAs, destructive confirms (`삭제`)

Inputs

Default
Background`#ffffff`
Border1px solid `#dfe4eb`
Radius6px
Padding12px 16px
Font16px / 400 / Pretendard, text `#222`
Focus1px solid `#5f0080` (no glow ring -- editorial restraint)
Disabled`#f2f5f8` background, `#a7b2bc` text
Placeholder`#848f9a`
Use: Standard text fields (login, address, search-modal)
Search Bar (Header)
Background`#f2f5f8`
Bordernone
Radius6px
Padding10px 16px (left), 10px 44px (right -- search icon slot)
Font14px / 400 / Pretendard
Activefocus underline `#5f0080` 1px on bottom edge
Placeholder`검색어를 입력해주세요` in `#848f9a`
Use: Persistent top-of-page search
Quantity Stepper
Background`#ffffff`
Border1px solid `#dfe4eb`
Radius4px
Font14px / 600 center segment
Height36px, width 96px (3 segments: − / count / +)
Use: Cart and product page quantity selection

Cards

Product Card (Grid)
Product Card (Grid)
Background`#ffffff`
Bordernone (separated by 16px gap on cream `#f2f5f8` page or 16px gap on white)
Radius4px on image (top), 0 on text block
Padding0 (image bleeds), 12px 4px (text block)
Shadownone in default state, `0px 0px 4px rgba(0,0,0,0.15)` on hover (KPDS shadow-2)
Image1:1 aspect ratio, lazy-loaded WebP
Title14px / 400 / `#222`, max 2 lines with ellipsis
Brand line12px / 400 / `#848f9a`, max 1 line
Price stackdiscount % `#e22d2e` 16px / 700 + final price `#222` 16px / 700 + original price `#a7b2bc` 13px / 400 strikethrough
Badges`샛별배송` purple chip top-left of image area
Use: Category list, search results, recommendation rails
Editorial Banner Card
Editorial Banner Card
Background`#ffffff` or photographic full-bleed
Radius8px
Padding24px when copy is overlaid on white panel; 0 when full-bleed photo with caption below
Shadownone (banners earn weight from photography, not chrome)
Use: Magazine-style storytelling tiles (`Kurly's Pick`, `오늘의 레시피`)
Modal / Dialog
Modal / Dialog
Background`#ffffff`
Radius12px
Padding24px
Shadow`0px 0px 30px rgba(0,0,0,0.25)` (KPDS shadow-elevated)
Max-width480px
Title20px / 700 / `#222`, body: 14px / 400 / `#393d41`
Use: Confirmation dialogs, address-edit, coupon-apply

Badges

샛별배송
샛별배송 (Dawn Delivery)
Background`#5f0080`
Text`#ffffff`
Radius4px
Padding4px 8px
Font11px / 700 / Pretendard
Use: Top-left overlay on product card image; signals dawn-delivery eligibility
Kurly
Kurly Only
Background`#ffffff`
Text`#5f0080`
Border1px solid `#5f0080`
Radius4px
Padding4px 8px
Font11px / 700
Use: Exclusive-to-Kurly product indicator
Sale
Sale (Discount)
Background`#e22d2e`
Text`#ffffff`
Radius4px
Padding4px 6px
Font11px / 700
Use: Time-bound discount overlays on hero rails
Soldout
Soldout
Backgroundrgba(0,0,0,0.5) full-image overlay
Text`#ffffff` 14px / 700 centered (`일시품절`)
Radiusmatches parent card image radius
Use: Out-of-stock product card state
Neutral
Neutral Tag
Background`#f2f5f8`
Text`#393d41`
Radius4px
Padding4px 8px
Font12px / 400
Use: Category chips, filter chips (inactive)
Filter
Filter Chip — Selected
Background`#5f0080`
Text`#ffffff`
Radius4px
Padding4px 8px
Font12px / 600
Use: Active filter selection in category browse