ZIGZAG Tech / Brunch
ZIGZAG Tech / Brunch
zigzag
Design System
Zigzag logo

Zigzag

ZIGZAG is the gold standard of Korean fashion-commerce design — a mobile-first shop-aggregator UI that treats a 600px-wide phone canvas as a curated magazine spread rather than a transactional grid. The page opens on a near-white surface (#f5f6f6 / #f9fafa — gray-20/10, never pure #ffffff) with charcoal headings (#121212 / #181818 — gray-970/950) a

01

Color Palette

Brand

Accent

Neutrals

02

Typography

Type Scale

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

display48px · 600 · 1.25
Design at scale
32px32px · 600 · 1.25
Section heading
heading-lg24px · 600 · 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 JP
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.
Monospace
Menlo
Systemno install needed
macOS pre-installed monospace.
Not publicly distributed.
Monospace
Monaco
Systemno install needed
macOS pre-installed monospace.
Not publicly distributed.
Monospace
Lucida Console
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.
Monospace
Liberation Mono
Open · OFL
Open-source metric-compatible alternative to Courier New.
Install via GitHub · liberationfonts
Monospace
DejaVu Sans Mono
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.
Monospace
Bitstream Vera Sans Mono
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.
Monospace
Courier New
Commercial
Pre-installed on macOS/Windows.
Not publicly distributed.
Primary
HEAD_28
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
HEAD_24
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
HEAD_22
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 gap8px
Card padding12px
Element gap8px

Border Radius

ElementValuePreview
badgesfull9999px
switchfull9999px
dragfull9999px
circularfull9999px

Borders

ElementValuePreview
Border1px solid #fccef2
Border1px solid #ecedee
Border1px solid #121212
Border-Bottom1px solid #ecedee
Border-Top1px solid #ecedee

Elevation

Shadow 1
Shadow 2
Shadow 3
Shadow 4
04

Guidelines

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

Do

  • Use #fa6ee3 (brand-zigzag) only for the wordmark + brand-event chrome; reserve #f55dd6 (pink-400) for interactive primary buttons
  • Use Pretendard with the full Korean fallback stack — Hangul rendering parity is the point
  • Use literal HEAD_22 SEMIBOLD style classes — they map 1:1 to ZDS tokens
  • Use #fb4333 (coral-red-400) for sale prices, discount rates, urgency markers — never the pink
  • Use the 600px max-width container even on desktop — it's the brand's mobile-as-canvas commitment
  • Use #f5f6f6 (gray-20) as page background instead of pure white — softer against product photography
  • Use 12px radius for buttons, 8px for product thumbnails, 16px for bottom-sheet top corners
  • Display price in BOLD and product name in MEDIUM — the number is the visual anchor
  • Surface #fee500 (kakao yellow) only for the Kakao login button — never decoratively

Don't

  • n't confuse #fa6ee3 (brand pink, wordmark) with #f55dd6 (interactive pink, buttons) — they have different roles
  • n't use pink and coral-red together as accents on the same surface — they read as similar saturation and create visual noise
  • n't use pure #ffffff as the page background — gray-20 (#f5f6f6) is the canonical surface
  • n't use blue (#216bff) as a primary CTA — pink is the interactive anchor
  • n't responsively reflow desktop layouts — center the mobile layout at 600px max-width
  • n't overlay text on product photography — ZIGZAG's editorial respects photo as photo
  • n't use the kakao yellow (#fee500) for decoration or non-Kakao surfaces
05

Components

Buttons

Primary Pink (filled)
Background`#f55dd6`
Text`#ffffff`
Radius12px (`--zds-corner-radius-12`)
Padding14px 20px
Font16px Pretendard / weight 600 (SemiBold)
Hover`#e356c6` background (`--zds-color-component-button-pink-hovered`)
Active`#d14fb7` background (`--zds-color-component-button-pink-pressed`)
Disabled`rgba(245,93,214,0.3)` background, white text
Use: Primary commerce CTA — "구매하기", "장바구니 담기", "쿠폰 받기"
Primary Black (filled, default surface CTA)
Background`#121212` (gray-970)
Text`#ffffff`
Radius12px
Padding14px 20px
Font16px Pretendard / weight 600
Hover`#292b2b` background (gray-800)
Active`#393b3d` background (gray-700)
Use: Default primary CTA on non-brand surfaces — "다음", "확인", "주문하기"
Pink Ghost (white surface)
Background`#ffffff`
Text`#f55dd6` (pink-400)
Border`1px solid #fccef2` (pink-150)
Radius12px
Padding13px 19px
Font16px Pretendard / weight 600
Hover`rgba(245,93,214,0.08)` background (`--zds-color-component-button-pink-white-hovered`)
Active`rgba(245,93,214,0.12)` background (`--zds-color-component-button-pink-white-pressed`)
Use: Secondary brand action — "찜한 상품 보기", "쿠폰함"
Outlined Neutral
Background`#ffffff`
Text`#292b2b` (gray-800)
Border`1px solid #ecedee` (gray-30)
Radius12px
Padding13px 19px
Font16px Pretendard / weight 500
Hover`rgba(0,0,0,0.03)` background
Active`rgba(0,0,0,0.05)` background
Use: Tertiary action — "취소", "더보기"
Kakao Login (partner-mandated chrome)
Background`#fee500` (brand-kakao)
Text`#000000` (black) at 85% opacity per Kakao guideline
Radius12px
Padding14px 20px
Font16px Pretendard / weight 600
Use: Kakao OAuth entry point only — never reused as a decorative yellow surface

Pink Switch / Toggle

Default
Radius`9999px` (full pill)
Track on`#f55dd6` (pink-400)
Track off`#d0d4d6` (gray-80)
Thumb`#ffffff` 24px circle, `0px 2px 4px rgba(0,0,0,0.12)` shadow
Disabled on`rgba(245,93,214,0.3)` (`--zds-color-component-switch-on-disabled`)
Use: Notification preferences, "찜한 알림 받기", filter inclusions

Product Card (the workhorse component)

Grid Cell (mobile, 2-up)
Grid Cell (mobile, 2-up)
Background`#ffffff`
Bordernone (separation is via spacing)
Radius8px (thumbnail), 0 (card itself)
Thumbnail aspect1:1 with rounded 8px corners
Like button28–32px hit area, top-right `4–6px` inset
Emblem/nudge max-width`calc(100% - 36px)` (mobile) / `calc(100% - 42px)` (tablet) — preserves a no-overlap zone with the like button
Pressed state`rgba(0,0,0,0.03)` overlay (`--zds-color-component-product-card-pressed`)
Title15px `BODY_15 MEDIUM` `#292b2b`, max 2 lines
Brand13px `BODY_13 REGULAR` `#878f91`
Discount rate14px `BODY_14 BOLD` `#fb4333` — always before the sale price
Rating12px `CAPTION_12 SEMIBOLD` `#292b2b` + star glyph + review count in parens

Chip / Filter Pill

Selected
Selected (Pink)
Background`rgba(245,93,214,0.08)` (`--zds-color-palette-pink-400-opacity-8`)
Text`#f55dd6` (pink-400)
Border`1px solid #fccef2` (pink-150)
Radius9999px (full pill)
Padding6px 12px
Font13px `BODY_13 MEDIUM`
Use: Filter pill active state — "지금 핫한 상품", "신상품만"
Default
Default
Background`#ffffff`
Text`#393b3d` (gray-700)
Border`1px solid #ecedee` (gray-30)
Radius9999px
Padding6px 12px
Font13px `BODY_13 MEDIUM`
AI
AI Recommendation
Background`rgba(116,99,242,0.08)` (`--zds-color-palette-purple-400-opacity-8`)
Text`#7463f2` (purple-400)
Border`1px solid` purple-tint
Radius9999px
Padding6px 12px
Font13px `BODY_13 SEMIBOLD`
Use: AI-driven recommendation surfaces only — never decorative

Search Input

Header Search Bar
Background`#f5f6f6` (gray-20)
Bordernone
Radius12px
Padding12px 14px
Font15px `BODY_15 REGULAR` `#292b2b`
Focusborder `1px solid #292b2b` (gray-800) — no pink focus ring (would compete with brand)
Placeholder`#878f91` (gray-400)
Iconleading 16px magnifier in `#707679` (gray-500)

Sale / Urgency Badge

Discount
Discount %
Background`#fb4333` (coral-red-400)
Text`#ffffff`
Radius4px
Padding2px 6px
Font11px `CAPTION_11 BOLD`
Use: "-43%" on product thumbnails
Time
Time-limited
Background`#121212`
Text`#ffffff`
Radius4px
Padding4px 8px
Font11px `CAPTION_11 BOLD` with optional emoji glyph
Use: "⏰ 24시간 한정", "오늘만"
MD's
MD's PICK / Brand Curation
Background`#ffffff`
Text`#121212`
Border`1px solid #121212`
Radius4px
Padding2px 6px
Font10px `CAPTION_10 BOLD` uppercase
Use: Editorial pick markers

Bottom Sheet

Default
Dialog content placeholder
Default
Background`#ffffff`
Radius`16px 16px 0 0` (top corners only)
Drag handle36px wide, 4px tall, `#d0d4d6` (gray-80), 9999px radius, top-centered with 8px top padding
Backdrop`rgba(0,0,0,0.5)` (`--zds-color-semantic-background-dimmed`)
Use: Filter sheet, size/option selector, login prompt, share sheet

Container

Mobile-web Outer Frame (the signature 600px lock)
Mobile-web Outer Frame (the signature 600px lock)
Background`#ffffff`
max-width`600px`
margin`0 auto`
min-height`100vh`