Design System
29cm logo

29cm

29CM is the editorial select-shop of Korean e-commerce — a curated department store that happens to live online, whose homepage reads more like the cover of a printed lookbook than the landing page of a retailer. The signature surface is pure white (#ffffff) carrying pure black (#000000) display type and quietly minimal chrome: no shadows, no gradients,

01

Color Palette

Brand

Accent

Neutrals

Semantic

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 Variable
Open · OFL
Modern Korean variable font with full Latin coverage.
Install via GitHub · orioncactus/pretendard
Primary
NOTICE
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
ABOUT US
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
MY ORDER
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
HELP
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
Special-Order
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
Showcase
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 gap32px
Card padding12px
Element gap12px

Border Radius

ElementValuePreview
buttons2px
inputs2px
cards2px
dialogs2px
badges2px
pillPill9999px

Borders

ElementValuePreview
Border1px solid #c4c4c4

Elevation

Shadow 1
04

Guidelines

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

Do

  • Use Pretendard Variable on every text element — there is no second face.
  • Pair every editorial tile with one photograph and one short Korean caption at 22px/700.
  • Use #000000 and #ffffff as the only structural colours; rgba(93,93,93,0.64) for muted captions.
  • Keep border-radius at 0px, 2px, or 4px — nothing above 4px on marketing surfaces.
  • Subordinate price (12px/700) to title and image; never invert this order.
  • Lean on whitespace for separation — 24-48px between sections, not borders or dividers.
  • Use the inverted black CTA (#000000 bg / #ffffff text / 2px radius) sparingly for high-priority, persistent affordances only.
  • Mix Latin labels (Special-Order, Showcase, 29Magazine) at display sizes with Korean body copy at smaller sizes.

Don't

  • n't add box-shadows to editorial tiles or product cards — the homepage is flat.
  • n't introduce a brand blue, brand red, or brand purple for CTAs. The brand "colour" is monochrome.
  • n't use pill-shaped buttons or radii above 8px anywhere on marketing surfaces.
  • n't promote price to the top of a card or to the largest size — image first, price last.
  • n't use italic for emphasis; emphasis is by weight (400 → 700).
  • n't tint backgrounds (#fafafa, #f5f5f5) — 29CM is pure white.
  • n't compose hero text overlaid on photography; 29CM almost always sets caption below the image, not on top.
  • n't use decorative iconography on hero — the image is the decoration.
05

Components

Buttons

Ghost Outline (the workhorse — "더보기")
Background`#ffffff`
Text`#000000`
Border`1px solid #c4c4c4`
Radius4px
Padding16px 16px 16px 20px (asymmetric — slightly larger left for trailing-arrow icon)
Font14px Pretendard Variable weight 700
Height52px
Use: "더보기 / View more" on every editorial section ending, primary "load more" affordance
Inverted Solid (floating help — "FAQ", "1:1 문의")
Background`#000000`
Text`#ffffff`
Bordernone
Radius2px
Padding4px 8px 4px 14px (asymmetric — leading icon space)
Font15px Pretendard Variable weight 400
Height31px
Use: Fixed-position floating help controls on the bottom-right; the only persistent solid-fill control on the site
Category Pill (navigation count badges — "63", "175", "6K")
Background`#ffffff` or transparent
Text`#ff0066` (sale red)
Bordernone
Radius0px
Padding0
Font12px weight 700
Height52px (tap target, not visual height)
Use: Percent-off badge on product cards, often paired with the price

Cards & Containers

Product Card
Product Card
Background`#ffffff`
Bordernone
Radius0px
Imagesquare or 4:5 portrait, 0px radius
Title12px / 400 / `#000000` directly under the image
Price12px / 700 / `#000000` (or red `#ff0066` if on sale)
Spacing8-12px between rows of the card meta block
Use: Standard catalog item — image-first, text small, no chrome