---
name: class101-design-reference
provider: DesignSkill (https://designskill.dev)
reference: class101.net
source_url: https://class101.net/en
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T08:10:31.924Z
mode: full-render
classification: reference_only
---

# Class101 — Design Reference (measured)

Measured design tokens extracted from `https://class101.net/en` 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), 365 observation records.
- Primary action color observed as `#ff5d00` (basis: declared, confidence 0.98).
- Dominant font family: **Pretendard Variable** (×642; secondary Georgia ×2).
- Type scale observed at 8 sizes from 10px to 32px.
- Corner radius values in use: 4px, 8px, 12px, 5px.
- Not observed in this extraction: nav, forms, cards, 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}` | `#ff5d00` | declared | 0.98 | ×11 — --color-primary |
| `{color.background}` | `#ffffff` | declared | 0.92 | ×147 — --color-background |
| `{color.ink}` | `#0c0c0c` | cross-validated | 0.93 | ×275 |
| `{color.muted}` | `#747474` | inferred | 0.7 | ×46 |
| `{color.surface}` | `#000000` | declared | 0.9 | ×199 — --color-surface-1 |
| `{color.accent}` | `#0066cc` | inferred | 0.58 | ×5 |

### Observed Palette

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

| Hex | Share | Used in | Observed |
|---|---|---|---|
| `#0c0c0c` | 21.3% | border-color, color, transition-timing-function, custom-property, background-color | ×275 (cross-validated, 0.93) |
| `#000000` | 15.4% | background-color | ×199 (observed, 0.78) |
| `#f3f3f3` | 14.8% | color, --color-on-inverse-surface, background-color, --color-primary-container, custom-property | ×190 (cross-validated, 0.93) |
| `#ffffff` | 11.4% | background-color, border-color | ×147 (observed, 0.77) |
| `#ffffff` | 10.3% | background-color, color, border-color, --color-white | ×132 (cross-validated, 0.92) |
| `#f3f3f3` | 8.0% | color | ×103 (observed, 0.77) |
| `#373737` | 5.2% | color | ×67 (observed, 0.76) |
| `#747474` | 3.6% | --color-surface-on-media, color | ×46 (cross-validated, 0.91) |
| `#949494` | 2.5% | color, background-color, -webkit-text-fill-color, custom-property | ×32 (cross-validated, 0.9) |
| `#ff5d00` | 0.9% | background-color, --color-primary, custom-property | ×11 (cross-validated, 0.89) |
| `#cccccc` | 0.8% | border-color, color, fill, custom-property | ×10 (inferred, 0.58) |
| `#202020` | 0.7% | background-color, --color-inverse-surface, custom-property | ×9 (cross-validated, 0.88) |
| `#444444` | 0.5% | color, stroke | ×6 (inferred, 0.58) |
| `#0066cc` | 0.4% | color, background-color, fill | ×5 (inferred, 0.58) |
| `#e30f32` | 0.3% | --color-error, custom-property | ×4 (inferred, 0.57) |
| `#171717` | 0.3% | --color-neutral-inverse, background-color | ×4 (cross-validated, 0.87) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `Pretendard Variable` | ×642 |
| `Georgia` | ×2 |
| `Monaco` | ×2 |
| `Helvetica` | ×1 |
| `monospace` | ×1 |
| `Helvetica Neue` | ×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}` | 32px | ×2 |
| `{type.h1}` | 18px | ×7 |
| `{type.h2}` | 16px | ×25 |
| `{type.h3}` | 14px | ×76 |
| `{type.body-lg}` | 13px | ×275 |
| `{type.body}` | 12px | ×12 |
| `{type.body-sm}` | 11px | ×139 |
| `{type.caption}` | 10px | ×26 |

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

## Spacing

| Value | Observed |
|---|---|
| `8px` | ×296 |
| `4px` | ×264 |
| `2px` | ×121 |
| `3px` | ×105 |
| `6px` | ×83 |
| `12px` | ×72 |
| `26px` | ×54 |
| `20px` | ×28 |
| `16px` | ×21 |
| `5px` | ×11 |
| `10px` | ×8 |
| `15px` | ×8 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `4px` | ×517 |
| `8px` | ×25 |
| `12px` | ×5 |
| `5px` | ×2 |

## Elevation

| Shadow | Observed |
|---|---|
| `0 2px 8px rgba(0,0,0,.2)` | ×1 |
| `0 0 5px #ddd` | ×1 |
| `0 2px 8px rgba(0,0,0,.15)` | ×1 |

## Motion

| Duration | Observed |
|---|---|
| `0.2s` | ×174 |
| `0.3s` | ×6 |
| `.15s` | ×1 |
| `.2s` | ×1 |
| `.3s` | ×1 |

## Components

Measured computed styles of representative components (desktop viewport).

| Component | Measured spec | Samples |
|---|---|---|
| button.primary | bg `#202020` · text `#000000` · radius `8px` · padding `6px 8px` · font `16px/400` | ×1 |

### Interaction States (observed)

| State | Property | From | To |
|---|---|---|---|
| focus | outline-width | `3px` | `0px` |
| focus | outline-width | `3px` | `0px` |
| focus | outline-width | `3px` | `0px` |

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#0c0c0c` | `#ffffff` | 19.56 | pass | observed ×116 |
| `#373737` | `#ffffff` | 11.9 | pass | observed ×67 |
| `#949494` | `#ffffff` | 3.03 | fail | observed ×27 |
| `#f3f3f3` | `#202020` | 14.68 | pass | observed ×6 |
| `#0c0c0c` | `#ff5d00` | 6.35 | pass | observed ×6 |
| `#0c0c0c` | `#ffffff` | 19.56 | pass | ink_on_background |
| `#ffffff` | `#ff5d00` | 3.08 | fail | white_on_primary |
| `#747474` | `#ffffff` | 4.67 | pass | muted_on_background |

2 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}` (`#ff5d00`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#0c0c0c`) on `{color.background}` (`#ffffff`).
- Set all text in `Pretendard Variable` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (4px, 8px, 12px, 5px) — 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 (nav, forms, cards, 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://class101.net/en (1 page(s))
- Tool: designskill-extract/3.2.0 · extracted 2026-07-27T08:10:31.924Z
- Mode: full-render — 풀렌더 모드 — 3뷰포트 × 라이트/다크 computed style + 상태 관측.
- Blocks observed: 01, 02, 03, 04, 05, 09, 10, 11, 12 · missing: nav, forms, cards, badges

---

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