bg-primary
Light: #faf9f5
Dark: #131314
기본 배경 색상
Exceptions allowed for marketing campaigns with explicit design review approval.
{"to":"semantic","from":"primitive","rule":"One-to-many: a primitive value can feed multiple semantic tokens"}{"to":"component","from":"semantic","rule":"One-to-one: a component token references exactly one semantic token"}Warm, restrained palette centered on cream, terracotta, and neutral slates. Dark mode inverts semantic mappings while preserving tone.
bg-primary
Light: #faf9f5
Dark: #131314
기본 배경 색상
bg-secondary
Light: #e8e6dc
Dark: #2a2a2b
보조 배경 색상
text-primary
Light: #3d3929
Dark: #faf9f5
기본 본문 텍스트
text-secondary
Light: #6b6459
Dark: #b0aea5
보조 텍스트
text-muted
Light: #b0aea5
Dark: #6b6459
약한 강조 텍스트
accent-primary
Light: #d97757
Dark: #d97757
주요 액션 강조
accent-hover
Light: #c4684a
Dark: #e8967e
호버 상태 강조
accent-blue
Light: #6a9bcc
Dark: #6a9bcc
정보성 강조
accent-green
Light: #788c5d
Dark: #788c5d
성공 상태 강조
border-default
Light: #e8e6dc
Dark: #2a2a2b
기본 테두리 색상
border-hover
Light: #b0aea5
Dark: #6b6459
호버 시 테두리 색상
surface-card
Light: #ffffff
Dark: #1a1a1b
카드 표면 색상
surface-overlay
Light: #ffffff
Dark: #232324
오버레이 표면 색상
Serif display + sans-serif UI + serif body stack. Hierarchy expressed through weight and size, not color.
Libre Baskerville
Locale: en
Fallbacks: Georgia, Times New Roman, serif
Weights: 400, 700
Usage: Display headings, Section titles, Blockquotes
DM Sans
Locale: en
Fallbacks: Helvetica Neue, Arial, sans-serif
Weights: 400, 500, 700
Usage: UI labels, Navigation, Buttons, Form fields
Source Serif 4
Locale: en
Fallbacks: Georgia, serif
Weights: 400, 600
Usage: Body text, Long-form content, Documentation
Noto Serif KR
Locale: ko
Fallbacks: Batang, serif
Weights: 400, 700
Usage: Korean headings, Korean body text, Korean blockquotes
Pretendard
Locale: ko
Fallbacks: Apple SD Gothic Neo, Malgun Gothic, sans-serif
Weights: 400, 500, 600, 700
Usage: Korean UI labels, Korean navigation, Korean form fields
| Platform | Display | Body | UI |
|---|---|---|---|
| ios | New York, Noto Serif KR, Georgia, serif | New York, Noto Serif KR, Georgia, serif | SF Pro, Apple SD Gothic Neo, system-ui, sans-serif |
| web | Libre Baskerville, Noto Serif KR, Georgia, serif | Source Serif 4, Noto Serif KR, Georgia, serif | DM Sans, Pretendard, system-ui, sans-serif |
| android | Noto Serif, Noto Serif KR, serif | Noto Serif, Noto Serif KR, serif | Roboto, Noto Sans KR, system-ui, sans-serif |
| Name | Size | Line Height | Weight | Letter Spacing |
|---|---|---|---|---|
| Display XL | 48px | 1.1 | 700 | -0.02em |
| Display L | 36px | 1.2 | 700 | -0.01em |
| Heading 1 | 30px | 1.3 | 700 | - |
| Heading 2 | 24px | 1.4 | 700 | - |
| Heading 3 | 20px | 1.4 | 600 | - |
| Body L | 18px | 1.6 | 400 | - |
| Body M | 16px | 1.5 | 400 | - |
| Caption | 13px | 1.4 | 400 | - |
{"dashed":"dashed","default":"solid"}{"thin":"1px","thick":"3px","medium":"2px"}{"border":"1px solid var(--border-default)","shadow":"var(--shadow-low)","borderRadius":"8px"}{"paddingX":"8px","paddingY":"2px","borderRadius":"9999px"}{"border":"1px solid var(--border-default)","height":"40px","borderRadius":"8px"}{"border":"none","shadow":"var(--shadow-high)","borderRadius":"12px"}{"paddingX":"16px","minHeight":"36px","borderRadius":"8px"}{"lg":"24px","md":"20px","sm":"16px","xl":"32px"}{"ios":"44px (Apple HIG)","web":"32px minimum, 40px recommended","android":"48dp (Material Design)"}{"gap":"8px","usage":"Data tables, toolbars","verticalPadding":"4px","horizontalPadding":"8px"}{"gap":"16px","usage":"Forms, cards, general UI","verticalPadding":"8px","horizontalPadding":"16px"}{"gap":"24px","usage":"Marketing, landing pages","verticalPadding":"12px","horizontalPadding":"24px"}클릭 액션을 수행하는 기본 버튼 컴포넌트
Usage: 주요/보조 액션 트리거
텍스트 입력 계열 컴포넌트
Usage: 폼 데이터 입력
상태/카테고리를 표시하는 라벨
Usage: 짧은 상태 정보 표시
보조 설명을 표시하는 떠있는 힌트
Usage: 보조 설명 제공
텍스트 복사 동작을 수행하는 버튼
Usage: 코드/식별자 복사
콘텐츠 영역을 전환하는 탭 내비게이션
Usage: 관련 콘텐츠 간 전환 (Preview/Code, Settings 탭 등)
온/오프 상태를 전환하는 스위치 컴포넌트
Usage: 설정 켜기/끄기, 기능 활성화/비활성화
라이트/다크 모드를 전환하는 테마 토글 버튼
Usage: 헤더에 배치하여 사용자가 테마를 수동 전환
입력창과 액션 버튼을 조합한 검색 필드
Usage: 검색 조건 입력 및 실행
라벨, 입력, 검증 메시지를 묶은 필드
Usage: 폼 입력 단위 구성
콘텐츠 그룹을 담는 카드
Usage: 정보 묶음 표현
상단 전역 내비게이션
Usage: 전역 이동 및 검색 접근
문서/페이지 탐색 사이드바
Usage: 섹션/페이지 이동
행/열 데이터 표시 테이블
Usage: 정형 데이터 조회
{"padding":"32px","maxWidth":"1280px"}{"padding":"48px 32px","borderTop":"1px solid var(--border-default)"}{"height":"64px","zIndex":200,"position":"sticky top-0"}{"width":"280px","position":"fixed left-0","breakpoint":"hidden below lg"}{"css":"grid grid-cols-[280px_1fr] min-h-screen","name":"sidebar-main","usage":"Documentation, design system viewer, settings","structure":{"main":"fluid","footer":false,"header":true,"sidebar":true}}{"css":"flex min-h-screen items-center justify-center","name":"centered-card","usage":"Login, auth callback, error pages","maxWidth":"480px","structure":{"main":"centered","footer":false,"header":false,"sidebar":false}}{"css":"mx-auto max-w-3xl px-6","name":"centered-narrow","usage":"Marketing, blog posts, legal pages","maxWidth":"720px","structure":{"main":"centered","footer":true,"header":true,"sidebar":false}}{"css":"w-full + mx-auto max-w-7xl px-6","name":"full-bleed-hero","usage":"Landing pages, product announcements","structure":{"main":"full-width-hero + contained-body","footer":true,"header":true,"sidebar":false}}{"css":"grid grid-cols-[240px_1fr] min-h-screen","name":"dashboard","usage":"Admin panels, analytics, monitoring","structure":{"main":"grid","footer":false,"header":true,"sidebar":true}}{"behavior":"Collapsible drawer below lg. Full sidebar at lg+.","component":"SidebarMenu"}{"behavior":"Hamburger menu below md. Inline links at md+.","component":"NavigationBar"}{"behavior":"Horizontal scroll below md. Full width at md+.","component":"DataTable"}{"behavior":"1-col at sm, 2-col at md, 3-col at lg.","component":"Card grid"}{"state":"default","visual":"Base appearance. No special treatment."}{"state":"hover","visual":"Border shifts to --border-hover. Subtle background tint on interactive elements."}{"state":"active","visual":"Background darkens 5%. Transform scale(0.98) for buttons."}{"state":"focus","visual":"2px ring in --accent-primary with 2px offset. Visible on keyboard focus only (:focus-visible)."}{"state":"disabled","visual":"opacity: 0.4. cursor: not-allowed. No hover/active effects."}{"state":"error","visual":"Border color --accent-primary (terracotta). Error message text below input."}{"state":"success","visual":"Border color --accent-green. Check icon. Brief green tint fade."}{"state":"loading","visual":"Skeleton shimmer or spinner. Disabled interaction during load."}{"y":8,"opacity":0}