---
name: woowahan-design-reference
provider: DesignSkill (https://designskill.dev)
reference: woowahan.com
source_url: https://www.woowahan.com/
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T09:28:30.061Z
mode: full-render
classification: reference_only
---

# Woowahan — Design Reference (measured)

Measured design tokens extracted from `https://www.woowahan.com/` by designskill-extract/3.2.0.
Every value below was observed in the live page (×N = observation count). Values not listed were **not observed** — do not invent them.
This document is `reference_only`: an analysis of a third-party site, not a license to its brand assets.

## Overview

- Extraction mode: **full-render** (viewports 390/768/1440px × light/dark), 1 page(s), 464 observation records.
- Primary action color observed as `#e6fff8` (basis: declared, confidence 0.92).
- Dominant font family: **Pretendard Variable** (×745; secondary BM HANNA\ 11yrs old ×5).
- Type scale observed at 8 sizes from 12px to 44px.
- Corner radius values in use: 8px, 4px, 16px, 10px….
- Not observed in this extraction: forms, badges.

## Colors

### Role Tokens

Semantic roles inferred from observed usage. `basis` tells how the role was established (declared CSS var > cross-validated > inferred).

| Token | Value | Basis | Confidence | Observed |
|---|---|---|---|---|
| `{color.primary}` | `#e6fff8` | declared | 0.92 | ×2 — --primary-10 |
| `{color.background}` | `#ffffff` | declared | 0.92 | ×1 — --header-background-color |
| `{color.ink}` | `#000000` | cross-validated | 0.93 | ×257 |
| `{color.muted}` | `#6c6d6f` | inferred | 0.7 | ×221 |
| `{color.surface}` | `#f5f5f5` | inferred | 0.7 | ×272 |
| `{color.accent}` | `#ff0000` | inferred | 0.56 | ×1 |

### Observed Palette

Full measured palette ordered by usage share. `Used in` lists the CSS properties the color appeared on.

| Hex | Share | Used in | Observed |
|---|---|---|---|
| `#232324` | 23.2% | color, background-color, border-color, stroke | ×363 (cross-validated, 0.94) |
| `#000000` | 16.4% | background-color, border-color, color, -webkit-box-shadow | ×257 (cross-validated, 0.93) |
| `#6c6d6f` | 14.1% | color, border-color, fill | ×221 (cross-validated, 0.93) |
| `#37373a` | 9.9% | background-color, color | ×155 (cross-validated, 0.92) |
| `#f5f5f5` | 17.4% | background-color, color, border-color, stroke | ×272 (cross-validated, 0.93) |
| `#0cefd3` | 4.4% | background-color, border-color, custom-property | ×69 (cross-validated, 0.91) |
| `#a6a7a9` | 4.2% | color, border-color, background-color | ×66 (cross-validated, 0.91) |
| `#d6d7da` | 3.8% | border-color, color, background-color | ×60 (inferred, 0.61) |
| `#000000` | 1.1% | border-color, background-color | ×17 (observed, 0.74) |
| `#cccccc` | 1.0% | border-color, background-color, color, -webkit-box-shadow | ×16 (cross-validated, 0.89) |
| `#e0e0e0` | 0.8% | border-color, background-color | ×12 (inferred, 0.59) |
| `#00c9b9` | 0.4% | custom-property, color, border-color | ×6 (cross-validated, 0.88) |
| `#000000` | 0.4% | background-color | ×6 (observed, 0.73) |
| `#eb5757` | 0.3% | border-color, color, -webkit-box-shadow | ×5 (inferred, 0.58) |
| `#9ca3af` | 0.3% | color | ×5 (inferred, 0.58) |
| `#999999` | 0.1% | color, stroke | ×2 (inferred, 0.57) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `Pretendard Variable` | ×745 |
| `BM HANNA\ 11yrs old` | ×5 |
| `Noto Sans` | ×2 |
| `Noto Sans KR` | ×2 |
| `swiper-icons` | ×2 |
| `BM HANNA Pro` | ×1 |

Use **Pretendard Variable** as the default family — it accounts for the overwhelming majority of observed text nodes.

### Type Scale

| Token | Size | Observed |
|---|---|---|
| `{type.display}` | 44px | ×40 |
| `{type.h1}` | 24px | ×107 |
| `{type.h2}` | 22px | ×21 |
| `{type.h3}` | 20px | ×115 |
| `{type.body-lg}` | 18px | ×37 |
| `{type.body}` | 16px | ×275 |
| `{type.body-sm}` | 14px | ×129 |
| `{type.caption}` | 12px | ×145 |

The most frequently observed size is **16px** (×275) — treat it as the default body size.

## Spacing

| Value | Observed |
|---|---|
| `16px` | ×327 |
| `32px` | ×248 |
| `20px` | ×108 |
| `80px` | ×100 |
| `12px` | ×84 |
| `40px` | ×69 |
| `60px` | ×65 |
| `10px` | ×63 |
| `120px` | ×43 |
| `18px` | ×40 |
| `4px` | ×38 |
| `8px` | ×28 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `8px` | ×30 |
| `4px` | ×8 |
| `16px` | ×8 |
| `10px` | ×5 |
| `1px` | ×3 |
| `20px` | ×2 |

## Elevation

| Shadow | Observed |
|---|---|
| `0 0 0 4px rgba(235,87,87,.25)` | ×2 |
| `10px 10px 5px 0 #ccc` | ×2 |
| `0 2px 10px 0 rgba(0,0,0,.18)` | ×2 |
| `0 2px 8px 0 rgba(0,0,0,.12)` | ×2 |
| `2px 4px 10px rgba(0,0,0,.08)` | ×2 |

## Motion

| Duration | Observed |
|---|---|
| `0.3s` | ×125 |
| `0.2s` | ×20 |
| `.3s` | ×16 |
| `.1s` | ×10 |
| `3s` | ×6 |

## Components

Measured computed styles of representative components (desktop viewport).

| Component | Measured spec | Samples |
|---|---|---|
| button.primary | bg `#f3f4f5` · text `#232324` · radius `8px` · padding `0px 22px` · font `16px/700` | ×1 |
| button.outline | text `#ffffff` · border `1px solid rgb(255, 255, 255)` · radius `8px` · padding `0px 22px` · font `16px` | ×1 |
| card | bg `#ffffff` · radius `8px` · border `1px solid rgb(166, 167, 169)` · padding `13px 16px` | ×1 |
| nav | height `72px` · position `fixed` · link `#000000` | — |

### Interaction States (observed)

| State | Property | From | To |
|---|---|---|---|
| focus | outline-color | `rgb(0, 0, 0)` | `rgb(0, 95, 204)` |
| focus | outline-width | `3px` | `1px` |
| focus | color | `rgb(0, 0, 0)` | `rgb(0, 201, 185)` |
| hover | color | `rgb(0, 0, 0)` | `rgb(0, 201, 185)` |
| hover | border-color | `rgb(0, 0, 0)` | `rgb(0, 201, 185)` |
| hover | outline-color | `rgb(0, 0, 0)` | `rgb(0, 201, 185)` |

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#232324` | `#f5f5f5` | 14.4 | pass | observed ×108 |
| `#6c6d6f` | `#37373a` | 2.29 | fail | observed ×72 |
| `#000000` | `#000000` | 1 | fail | observed ×61 |
| `#000000` | `#ffffff` | 21 | pass | observed ×41 |
| `#232324` | `#000000` | 1.34 | fail | observed ×39 |
| `#6c6d6f` | `#f3f4f5` | 4.7 | pass | observed ×24 |
| `#a6a7a9` | `#000000` | 8.72 | pass | observed ×18 |
| `#ffffff` | `#000000` | 21 | pass | observed ×9 |
| `#cccccc` | `#ffffff` | 1.61 | fail | observed ×3 |
| `#232324` | `#f3f4f5` | 14.26 | pass | observed ×3 |
| `#6c6d6f` | `#ffffff` | 5.18 | pass | observed ×3 |
| `#000000` | `#ffffff` | 21 | pass | ink_on_background |
| `#ffffff` | `#e6fff8` | 1.05 | fail | white_on_primary |
| `#6c6d6f` | `#ffffff` | 5.18 | pass | muted_on_background |

5 measured pair(s) fail AA — if you reuse those pairs, adjust lightness until the ratio reaches 4.5:1.

## Usage Rules

### Do
- Use `{color.primary}` (`#e6fff8`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#000000`) on `{color.background}` (`#ffffff`).
- Set all text in `Pretendard Variable` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (8px, 4px, 16px, 10px) — no intermediate values were observed.
- Cite this file's token names (`{color.*}`, `{type.*}`) when generating UI so output stays traceable to observations.

### Don't
- Don't invent colors, sizes, shadows, or spacing not listed above — absence means *not observed*, and this document records observations only.
- Don't assume the missing blocks (forms, badges) don't exist on the site — they were simply not captured in this run.
- Don't copy brand assets (logo, wordmark, imagery, copy) — `reference_only` covers measured style values, not brand identity.
- Treat `{color.accent}` with caution — confidence below 0.6.

## Provenance

- Source: https://www.woowahan.com/ (1 page(s))
- Tool: designskill-extract/3.2.0 · extracted 2026-07-27T09:28:30.061Z
- Mode: full-render — 풀렌더 모드 — 3뷰포트 × 라이트/다크 computed style + 상태 관측.
- Blocks observed: 00, 01, 02, 03, 04, 05, 07, 09, 10, 11, 12 · missing: forms, badges
- Warning: primary 불일치: static=#eb5757 vs render=#e6fff8 — render 채택

---

<sub>Generated & served by [DesignSkill](https://designskill.dev)</sub>
