- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
632 lines
35 KiB
Markdown
632 lines
35 KiB
Markdown
# Prism Design System — Brand (Layer 0)
|
||
|
||
| 버전 | 수정일 | 수정자 | 주요 변경 내용 | 비고 |
|
||
| :--- | :--- | :--- | :--- | :--- |
|
||
| v0.1.0 | 2026-07-28 | 조선두 | 신규 작성 — 브랜드 슬롯 스키마, 가치축, 팔레트·서체 슬롯, 보이스·문안 규정, 아이코노그래피, SAMAN 인스턴스 실체화 | 최초 버전 |
|
||
| v0.1.1 | 2026-07-29 | HMCM | BV-2 판정 표기 명확화(조건부 PASS), §8.5 orange/white 페어 등록(LARGE_ONLY 4.01) | 진단 G5·G7 보정 |
|
||
|
||
| 메타 | 값 |
|
||
| :--- | :--- |
|
||
| 파일 | `design.brand.md` |
|
||
| 계층 | **Layer 0 — Brand DNA** |
|
||
| 역할 | 브랜드 교체 슬롯 정의 · 브랜드 인스턴스 등록부 |
|
||
| 상위 | `Design.md` (진입점) |
|
||
| 하위 참조 | `design.foundations.md` (Layer 1) — 본 파일이 공급한 슬롯 값을 소비 |
|
||
| 로드 정책 | **항상 로드** (코어 + tokens.json과 함께) |
|
||
|
||
> **시스템명**: `Prism` — 아키텍처 은유(단일 광원 → 프리즘 → 분광 → 스펙트럼)에서 도출. 토큰 접두사는 `prism`이다. **2026-07-28 확정.**
|
||
|
||
---
|
||
|
||
## 목차
|
||
|
||
- [1. 브랜드 슬롯 스키마](#1-브랜드-슬롯-스키마)
|
||
- [2. 가치축 (Value Axis)](#2-가치축-value-axis)
|
||
- [3. 팔레트 원색 슬롯](#3-팔레트-원색-슬롯)
|
||
- [4. 타이포그래피 슬롯](#4-타이포그래피-슬롯)
|
||
- [5. 보이스 & 문안 규정](#5-보이스--문안-규정)
|
||
- [6. 아이코노그래피](#6-아이코노그래피)
|
||
- [7. 로고·마크 규약](#7-로고마크-규약)
|
||
- [8. 브랜드 인스턴스 #1 — SAMAN](#8-브랜드-인스턴스-1--saman)
|
||
- [9. 인스턴스 추가 절차](#9-인스턴스-추가-절차)
|
||
|
||
---
|
||
|
||
# 1. 브랜드 슬롯 스키마
|
||
|
||
## 1.1 Layer 0의 경계
|
||
|
||
Layer 0은 **매체가 바뀌어도 변하지 않고, 브랜드가 바뀌면 전부 바뀌는 것**만 담는다.
|
||
|
||
| Layer 0에 속한다 | Layer 0에 속하지 않는다 |
|
||
| :--- | :--- |
|
||
| 철학·미션 문장 | 캔버스 치수 (→ Layer 2) |
|
||
| 가치축과 그 디자인 역할 | 그리드 컬럼 수 (→ Layer 2) |
|
||
| 팔레트 원색 HEX | 색의 의미역할 매핑 (→ Layer 1) |
|
||
| 서체 패밀리·웨이트 | 타입 스케일 수치 (→ Layer 1·2) |
|
||
| 보이스·문안 규칙 | 컴포넌트 기하 (→ Layer 1·2) |
|
||
| 아이콘 조형 원칙 | 아이콘 픽셀 크기 (→ Layer 2) |
|
||
| 로고 파일·변형 규칙 | 로고 배치 좌표 (→ Layer 3) |
|
||
|
||
**판별 질문**: *"이 값을 바꾸면 브랜드가 달라 보이는가, 아니면 출력 매체만 달라 보이는가?"* — 전자면 Layer 0이다.
|
||
|
||
## 1.2 슬롯 정의
|
||
|
||
브랜드 인스턴스는 아래 슬롯을 **전부** 채워야 한다. 미충족 슬롯이 있으면 인스턴스로 등록할 수 없다.
|
||
|
||
| # | 슬롯 ID | 필수 | 자료형 | 설명 |
|
||
| :-: | :--- | :-: | :--- | :--- |
|
||
| B1 | `brand.id` | ★ | slug | 기계 식별자. 토큰 네임스페이스에 사용 |
|
||
| B2 | `brand.name` | ★ | string | 표기명 (국문/영문 병기 가능) |
|
||
| B3 | `brand.philosophy` | ★ | string | 철학 슬로건 1문장 |
|
||
| B4 | `brand.philosophy.operational` | ★ | object | 슬로건의 **조작적 정의** — 최소 2개 축, 각 축은 검증 가능해야 함 |
|
||
| B5 | `brand.mission` | ○ | string | 미션 1문장 |
|
||
| B6 | `brand.axes[]` | ★ | array | **가치축** 2~4개. §2 스키마 준수 |
|
||
| B7 | `brand.palette.primary[]` | ★ | array | 원색. 축 수와 1:1 대응 |
|
||
| B8 | `brand.palette.neutral[]` | ★ | array | 중립색. 최소 3개 (light bg / dark bg / subtle) |
|
||
| B9 | `brand.type.family` | ★ | object | 서체 패밀리 + 폴백 스택 |
|
||
| B10 | `brand.type.weights` | ★ | object | 웨이트 3단 (regular/medium/bold) |
|
||
| B11 | `brand.voice` | ★ | object | 보이스 4속성. §5.1 스키마 준수 |
|
||
| B12 | `brand.copy.rules` | ★ | object | 문안 규칙. §5.2~5.7 |
|
||
| B13 | `brand.icon` | ★ | object | 아이콘 조형 원칙. §6 |
|
||
| B14 | `brand.logo` | ○ | object | 로고 자산·변형 규칙. §7 |
|
||
| B15 | `brand.forbidden[]` | ★ | array | 브랜드 차원 절대 금지 목록 |
|
||
|
||
## 1.3 슬롯 값 검증 규칙
|
||
|
||
| ID | 규칙 | 판정 방법 |
|
||
| :--- | :--- | :--- |
|
||
| **BV-1** | 모든 원색은 **GRADE 값이 산출 가능**해야 한다 (유효 sRGB HEX) | `design.foundations.md §2.1` 산출식 적용 |
|
||
| **BV-2** | `palette.primary` 중 **최소 1개**는 light 중립 배경 대비 **ΔG ≥ 70**을 만족해야 한다 (본문색 후보 확보) | GRADE 차 계산 |
|
||
| **BV-3** | `palette.primary` 중 **최소 1개**는 light 중립 배경 대비 **ΔG ≥ 55**를 만족해야 한다 (제목색 후보 확보) | 동일 |
|
||
| **BV-4** | light 중립 배경과 dark 중립 배경의 **ΔG ≥ 80** | 동일 |
|
||
| **BV-5** | 악센트 원색이 ΔG < 55인 경우, **본문 사용 금지 규칙이 `brand.forbidden[]`에 명시**되어야 한다 | 목록 검사 |
|
||
| **BV-6** | 서체는 **한글 웨이트 3단 이상 + 등폭 숫자(tabular figures)** 를 제공해야 한다 | 폰트 메타 확인 |
|
||
| **BV-7** | 가치축 수 = 원색 수 (1:1 대응) | 개수 대조 |
|
||
| **BV-8** | 철학 슬로건은 **조작적 정의(B4)** 없이 등록할 수 없다 | 필드 존재 검사 |
|
||
|
||
> **BV-8의 취지**: "좋은 디자인"류의 검증 불가능한 슬로건이 시스템에 들어오는 것을 구조적으로 차단한다. 슬로건은 반드시 *"무엇을 하면 이 슬로건을 지킨 것인가"* 로 환원되어야 하며, 그 환원 결과가 `Design.md §2`의 PF/PD 규칙이 된다.
|
||
|
||
---
|
||
|
||
# 2. 가치축 (Value Axis)
|
||
|
||
## 2.1 개념
|
||
|
||
가치축은 브랜드가 표방하는 가치를 **디자인 역할로 번역한 단위**다. 각 축은 원색 1개와 결합하며, 그 색이 화면에서 수행할 역할을 규정한다.
|
||
|
||
축을 두는 이유는 색에 **의미를 고정**하기 위해서다. 의미가 고정되면 "이 강조는 왜 주황인가"라는 질문에 매번 답할 필요가 없어지고, 에이전트도 결정론적으로 색을 선택할 수 있다.
|
||
|
||
## 2.2 축 스키마
|
||
|
||
```yaml
|
||
axis:
|
||
id: <slug> # 필수 — 예: nature, technology, people
|
||
label_ko: <string> # 필수 — 예: 자연
|
||
label_en: <string> # 필수 — 예: Nature
|
||
design_role: base|accent|ground|support # 필수 — 아래 §2.3
|
||
color_ref: <palette.primary[i]> # 필수 — 1:1 대응
|
||
usage: <string> # 필수 — 이 색이 실제로 칠해지는 대상
|
||
economy: <string|null> # 선택 — 사용량 상한 (accent는 필수)
|
||
```
|
||
|
||
## 2.3 `design_role` 정의 (고정 어휘)
|
||
|
||
| 역할 | 의미 | 지면 점유 | 전형적 적용 대상 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **base** | 구조·기반. 안정감을 만든다 | 중 | 제목, 구조선, 헤더 면, 아이콘 |
|
||
| **ground** | 본문·바탕. 읽히는 것 전부 | 대 | 본문 텍스트, 테두리, 라벨, 헤어라인 |
|
||
| **accent** | 강조·전환. 시선을 1회 붙잡는다 | **극소** | 포인트 마커, 귀결 커넥터, 단일 강조어 |
|
||
| **support** | 보조. 위 3역할을 보완 | 소 | 보조 텍스트, 비활성 표기, 배경 틴트 |
|
||
|
||
- `base`와 `ground`는 **각각 정확히 1개** 축에만 배정한다.
|
||
- `accent`는 **1개 이하**. 악센트가 2개면 악센트가 아니다.
|
||
- `support`는 0개 이상 가능.
|
||
|
||
## 2.4 악센트 경제 (Accent Economy)
|
||
|
||
`design_role: accent` 축에는 `economy` 필드가 **필수**이며, 다음 형식을 따른다.
|
||
|
||
```
|
||
"<단위 화면·지면>당 최대 <N>개 국소 강조"
|
||
```
|
||
|
||
이 값은 Layer 1의 `PD-4` 규칙과 검증기가 직접 소비한다. 매체별 "단위 화면"의 정의는 Layer 2가 공급한다.
|
||
|
||
| 매체 | "단위 화면"의 정의 |
|
||
| :--- | :--- |
|
||
| print | A3 1면 (양면 스프레드는 2단위) |
|
||
| presentation | 슬라이드 1장 |
|
||
| screen | 1 viewport 내 동시 가시 영역 |
|
||
|
||
---
|
||
|
||
# 3. 팔레트 원색 슬롯
|
||
|
||
## 3.1 색 슬롯 스키마
|
||
|
||
```yaml
|
||
color:
|
||
id: <slug>
|
||
name: <string> # 색명 (브랜드 고유명 허용)
|
||
hex: "#RRGGBB" # sRGB. 소문자 금지, 6자리 고정
|
||
rgb: [r, g, b] # hex와 반드시 일치 — 검증 대상
|
||
grade: <int 0-100> # 자동 산출 (design.foundations §2.1)
|
||
axis_ref: <axis.id|null> # primary는 필수, neutral은 null
|
||
role: base|ground|accent|support|bg_light|bg_dark|subtle|on_dark
|
||
usage: <string>
|
||
```
|
||
|
||
> **[정합 검증 필수]** `hex`와 `rgb`는 반드시 동일 색을 가리켜야 한다. SAMAN 선행 시스템에서 `color.subtle`의 `hex: "#474235"` ↔ `rgb: [211,211,211]` 불일치로 **대비 1.13:1의 판독 불가 텍스트**가 산출될 수 있었다. 본 스키마는 이를 자동 검증 항목으로 승격한다. [출처: 자체 산출 / SAMAN `design.tokens.json`]
|
||
|
||
## 3.2 GRADE 척도 (요약)
|
||
|
||
GRADE는 **CIE L\* 기반 명도 등급**으로, `GRADE = round(100 − L*)` 이다. 0 = 순백, 100 = 순흑.
|
||
|
||
두 색의 **GRADE 차(ΔG)** 만으로 대비 충족 여부를 계산기 없이 판정한다. [출처: design.benchmark, T4 (USWDS 매직 넘버) · T5 (Carbon 스텝 매트릭스)]
|
||
|
||
| ΔG | 보장 최소 대비 | 판정 |
|
||
| :-: | :--- | :--- |
|
||
| **≥ 40** | ≥ 3.17 : 1 | **대형 텍스트 가능** (18pt+ / 14pt+ Bold) |
|
||
| **≥ 55** | ≥ 5.37 : 1 | **본문 가능** (AA 4.5:1 여유 충족) |
|
||
| **≥ 70** | ≥ 9.15 : 1 | **AAA 충족** (7:1 여유 충족) |
|
||
| < 40 | — | **텍스트 사용 금지** (면·도형으로만) |
|
||
|
||
- 위 값은 **모든 base 등급에 대한 최솟값**이다(worst case = 흰 배경 위). 실측 대비는 항상 이 이상이다.
|
||
- 산출식·검증표 전문은 `design.foundations.md §2.1~2.2`에 있다.
|
||
- **ΔG는 보수적 하한**이므로, ΔG 미달이어도 실측이 통과하는 경우가 있다. 그 경우 실측값을 `contrast.pairs`에 명시적으로 등록해야 사용할 수 있다(암묵 허용 금지).
|
||
|
||
## 3.3 중립색 슬롯 요건
|
||
|
||
| 슬롯 | 필수 | 요건 |
|
||
| :--- | :-: | :--- |
|
||
| `bg_light` | ★ | 라이트 배경. **순백(#FFFFFF) 전면 사용 금지** — 대형 화면 눈부심·인쇄 반사 방지. GRADE 0~10 권장 |
|
||
| `bg_dark` | ★ | 다크 배경. GRADE 90 이상 권장 |
|
||
| `subtle` | ★ | 보조 텍스트용. 라이트/다크 각각에 대해 ΔG ≥ 40 이상 확보 |
|
||
| `on_dark` | ○ | 다크 면 위 텍스트·카드. 미지정 시 `bg_light`를 재사용 |
|
||
|
||
---
|
||
|
||
# 4. 타이포그래피 슬롯
|
||
|
||
## 4.1 서체 슬롯
|
||
|
||
```yaml
|
||
type:
|
||
family:
|
||
primary: <string> # 예: Pretendard
|
||
stack: <string> # CSS font-family 전체 폴백 체인
|
||
embed: <path|null> # 로컬 임베드 파일 (PPTX·PDF 임베딩용)
|
||
weights:
|
||
regular: 400
|
||
medium: 500
|
||
bold: 700
|
||
features:
|
||
tabular_figures: true # 필수 (BV-6)
|
||
variable: <bool>
|
||
```
|
||
|
||
## 4.2 서체 선정 요건
|
||
|
||
| ID | 요건 | 근거 |
|
||
| :--- | :--- | :--- |
|
||
| **TF-1** | 한글 웨이트 **3단 이상** | 위계를 크기·웨이트 2축으로 만들기 위한 최소 조건 |
|
||
| **TF-2** | **등폭 숫자(tabular figures)** 제공 | 수량표·치수표 정렬. [출처: design.benchmark, T41] |
|
||
| **TF-3** | 라틴·숫자 혼용 시 **시각 크기 편차가 과도하지 않을 것** | 한글은 라틴의 cap-height 개념이 없어 동일 pt에서 시각 크기가 다름. 보정 계수는 `design.foundations.md §3.10`에서 정의 [출처: design.benchmark, T44 / 자체 정의] |
|
||
| **TF-4** | **로컬 임베드 가능** (라이선스·파일 확보) | 오프라인 렌더링, PPTX 폰트 임베드, PDF 아웃라인 |
|
||
| **TF-5** | 인쇄 시 sans-serif 채택 | GOV.UK의 sans 권고 근거("프린터 드라이버 호환")는 PDF 임베딩 방식에 미적용되나, **한글 본문 조판에서 sans가 소자 크기 대비 판독성이 안정적**이라는 별도 근거로 채택 `[자체 판단]` [출처: design.benchmark, §16 상충-4] |
|
||
|
||
> Layer 0은 **어떤 서체인가**만 정한다. **몇 pt인가**는 Layer 1(비율)과 Layer 2(base 값)가 정한다.
|
||
|
||
---
|
||
|
||
# 5. 보이스 & 문안 규정
|
||
|
||
> 본 장은 **브랜드가 자기 이름으로 내보내는 모든 문장**에 적용된다. 시스템 내부 주석·에이전트 로그에는 적용하지 않는다.
|
||
|
||
## 5.1 보이스 4속성 (스키마)
|
||
|
||
```yaml
|
||
voice:
|
||
stance: <string> # 화자의 자세 — 예: 단정적·원칙적·3인칭
|
||
distance: <string> # 독자와의 거리 — 예: 전문가 대 전문가
|
||
register: <string> # 문체 격 — 예: 규정문체(평서 종결)
|
||
restraint: <string> # 절제 규칙 — 예: 과장·감탄·마케팅 어휘 금지
|
||
```
|
||
|
||
각 속성은 **금지 예시를 1개 이상 동반**해야 한다. 금지 예시 없는 보이스 규정은 실행 불가능하다.
|
||
|
||
## 5.2 헤딩 어미 규칙
|
||
|
||
같은 레벨의 헤딩은 **어미를 통일**한다. 목차를 훑을 때의 스캔성이 이 규칙 하나에 크게 좌우된다. [출처: design.benchmark, T28 (Polaris help-documentation 아카이브)]
|
||
|
||
| 레벨 | 어미 | 예시 | 금지 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| **장(章)** | 명사형 | "작성 절차", "책임 소재" | "작성 절차는?" |
|
||
| **절(節)** | 명사형 또는 `~하기` | "시공상세도 검토하기" | 레벨 내 혼용 |
|
||
| **작업 단계** | `~한다` (평서 종결) | "승인 도서를 현장에 비치한다" | "~합시다", "~하세요" |
|
||
| **금지 조항** | `~하지 않는다` / `~를 금지한다` | "미승인 도면으로 시공하지 않는다" | "~하면 안 됩니다" |
|
||
| **권고 조항** | `~를 권장한다` | "BIM 모델과 병행 검토를 권장한다" | "~하는 게 좋습니다" |
|
||
|
||
**"How to" 상당 표현 금지**: "~하는 방법", "~하는 법"은 헤딩에 쓰지 않는다. 헤딩은 대상을 지시하고, 방법은 본문이 담는다.
|
||
|
||
**제목 제거 검사 (removable test)**: 헤딩을 지워도 본문이 문장으로 성립해야 한다. 본문이 헤딩에 의존해 주어를 생략했다면 잘못된 헤딩이다. [출처: design.benchmark, T36]
|
||
|
||
## 5.3 문장 구성 규칙
|
||
|
||
| ID | 규칙 | 근거 |
|
||
| :--- | :--- | :--- |
|
||
| **CW-1** | 한 문단은 **5문장 이하** | T35 (GOV.UK) |
|
||
| **CW-2** | 한 문장은 **40어절 초과 시 분할** — 원 규칙 "25단어"를 한국어 어절 기준으로 재정의 `[자체 정의]` | T35 / M20 |
|
||
| **CW-3** | **역피라미드** — 결론·판정을 먼저, 근거·경위를 뒤에 | T35 |
|
||
| **CW-4** | **구정보 → 신정보** 순서. 문장 앞머리에는 독자가 이미 아는 것을 둔다 | T51 (Polaris Readability) |
|
||
| **CW-5** | **끊긴 서술(choppy writing) 회피** — 짧은 단문 나열로 논리 연결을 독자에게 떠넘기지 않는다 | T51 |
|
||
| **CW-6** | **각주는 인쇄물에서만** 사용한다. 화면 매체에서는 본문 편입 또는 상호참조로 처리 | T35 (GOV.UK "designed for reference in print") |
|
||
|
||
## 5.4 조건문 서술 규칙
|
||
|
||
조건 분기는 **조건을 먼저, 처분을 나중에** 쓴다. 독자가 자기에게 해당하지 않는 조건을 즉시 건너뛸 수 있어야 한다. [출처: design.benchmark, T30]
|
||
|
||
```
|
||
[O] 가설구조물에 해당하는 경우에는, 관계전문가의 확인을 받는다.
|
||
[X] 관계전문가의 확인을 받는다. 단, 가설구조물에 해당하는 경우에 한한다.
|
||
```
|
||
|
||
- 어순 고정: **`~인 경우에는, ~한다`**
|
||
- 조건절과 처분절은 **쉼표로 분리**한다. 조건만 있고 처분이 없는 문장을 두지 않는다.
|
||
|
||
## 5.5 적용 조건 선행 배치
|
||
|
||
각 항목의 **최상단에 "적용 조건 / 제외 조건" 블록**을 둔다. 독자가 해당 없음을 **빨리 확인하고 이탈**할 수 있어야 한다. [출처: design.benchmark, T31 ("Let readers fail fast")]
|
||
|
||
제약·전제는 절차 목록 **앞**에 온다. 3단계까지 읽고 나서 "단, 이 경우는 제외"를 만나게 하지 않는다.
|
||
|
||
## 5.6 동사 판별표
|
||
|
||
같은 동작에 여러 동사를 섞어 쓰면 독자가 **의미 차이를 추론**하게 된다. 아래 표의 좌열을 기본으로 하고, 우열은 명시된 조건에서만 쓴다. [출처: design.benchmark, T52 (Polaris actionable-language 아카이브의 대조표 형식을 한국어로 이식) / 어휘 선정은 `[자체 정의]`]
|
||
|
||
| 기본 동사 | 대체 동사 | 구분 기준 |
|
||
| :--- | :--- | :--- |
|
||
| **설치한다** | 시공한다 | 개별 부재·기기 = 설치 / 공정 전체 = 시공 |
|
||
| **고정한다** | 부착한다 / 거치한다 | 하중을 전달하면 고정 / 표면 접합만이면 부착 / 임시 얹음이면 거치 |
|
||
| **확인한다** | 검측한다 / 입회한다 | 육안·서류 대조 = 확인 / 계측 수반 = 검측 / 타 주체 현장 참관 = 입회 |
|
||
| **검토한다** | 승인한다 | 의견 제시까지 = 검토 / 효력 발생 = 승인 |
|
||
| **작성한다** | 제작한다 / 작성·제출한다 | 도서·문서 = 작성 / 물리적 산출 = 제작 / 제출 의무 수반 시 병기 |
|
||
| **반영한다** | 적용한다 / 갱신한다 | 기존 문서에 편입 = 반영 / 신규 대상에 시행 = 적용 / 버전 올림 = 갱신 |
|
||
| **변경한다** | 수정한다 | 승인 효력에 영향 = 변경 / 오기·표기 정정 = 수정 |
|
||
| **~한다** (의무) | ~할 수 있다 (재량) | **의무와 재량을 어미로만 구분한다.** "~하여야 한다"는 "~한다"로 통일 |
|
||
|
||
> **어미로 규범력을 표현한다**: `~한다`(의무) / `~할 수 있다`(재량) / `~를 권장한다`(권고) / `~하지 않는다`(금지). 이 4종 외의 어미를 규범 조항에 쓰지 않는다.
|
||
|
||
## 5.7 방향어 금지
|
||
|
||
`위의 / 아래의 / 오른쪽 / 왼쪽 / 앞서 / 다음의` 같은 **물리적 위치 지시어**를 참조에 쓰지 않는다.
|
||
|
||
**금지 근거**: 방향어는 ① 레이아웃이 매체마다 달라지면 무효가 되고(A3 2단 → 모바일 1단), ② 화면 낭독 시 무의미하며, ③ **참조 대상에 이름이나 번호가 없다는 신호**다. [출처: design.benchmark, T52]
|
||
|
||
```
|
||
[O] 검토 기한은 3.2절에 따른다.
|
||
[O] [표 4-1]의 구분에 따른다.
|
||
[X] 아래 표의 구분에 따른다.
|
||
[X] 앞서 설명한 절차에 따른다.
|
||
```
|
||
|
||
- 대체 수단: **절 번호 / 표·그림 번호 / 항목명**. 참조할 것에 번호가 없으면 번호를 부여한다.
|
||
- 인쇄 매체에서는 상호참조에 **면수를 병기**한다: `(→ 3.4절, p.27)` [출처: design.benchmark, M12]
|
||
|
||
## 5.8 한국어 가독성 지표 `[자체 정의]`
|
||
|
||
영어권 시스템의 지표(Polaris "7th grade reading level", GOV.UK "reading age 9")는 한국어에 대응 개념이 없다. [출처: design.benchmark, M20 / §18-24] 아래를 대체 지표로 사용한다.
|
||
|
||
| 지표 | 목표 | 산출 |
|
||
| :--- | :--- | :--- |
|
||
| 평균 문장 길이 | **25어절 이하** (상한 40) | 어절 수 ÷ 문장 수 |
|
||
| 문단 길이 | **5문장 이하** | 그대로 |
|
||
| 피동 표현 비율 | **10% 이하** | `~되다/~어지다` 종결 ÷ 전체 문장 |
|
||
| 한자어 명사구 연쇄 | **3연속 이하** | "시공상세도면작성기준검토" 류 분해 |
|
||
| 전문용어 초출 정의율 | **100%** | 용어집 등재 또는 초출 시 괄호 정의 |
|
||
|
||
> 이 지표는 **참고 기준**이며 자동 판정 대상이 아니다. 검수 단계의 육안 점검 항목으로 사용한다.
|
||
|
||
---
|
||
|
||
# 6. 아이코노그래피
|
||
|
||
## 6.1 조형 원칙 슬롯
|
||
|
||
```yaml
|
||
icon:
|
||
grid: <int> # 아이콘 작도 그리드 (정사각 단위)
|
||
stroke: <int> # 획 두께 (그리드 단위 기준)
|
||
linecap: round|butt|square
|
||
linejoin: round|miter|bevel
|
||
fill: none|solid
|
||
color_on_light: <color.id>
|
||
color_on_dark: <color.id>
|
||
set_policy: bespoke|library # 자체 제작 / 외부 라이브러리
|
||
```
|
||
|
||
## 6.2 공통 규칙 (매체 불변)
|
||
|
||
| ID | 규칙 |
|
||
| :--- | :--- |
|
||
| **IC-1** | **1개 의미 = 1개 아이콘.** 같은 의미에 두 아이콘을 두지 않는다 |
|
||
| **IC-2** | **장식용 아이콘 금지.** 의미를 담지 않은 아이콘은 배치하지 않는다 |
|
||
| **IC-3** | **이모지 금지.** 이모지·아이콘 폰트·서드파티 아이콘 라이브러리를 사용하지 않는다 (`set_policy: bespoke`인 경우) |
|
||
| **IC-4** | 아이콘은 **인라인 SVG**로 삽입해 토큰 색에 바인딩한다. 래스터는 사진·복잡 일러스트에 한한다 |
|
||
| **IC-5** | 아이콘은 **색 단독으로 의미를 전달하지 않는다.** 형태가 색과 독립적으로 구분되어야 한다 [출처: design.benchmark, T21·T38] |
|
||
| **IC-6** | 획 두께는 **판형 확대 시 비례 확대하지 않는다** [출처: design.benchmark, T10 (Spectrum "border width는 스케일되지 않는다")] |
|
||
|
||
## 6.3 아이콘 거버넌스 (승인 절차)
|
||
|
||
카탈로그에 없는 아이콘이 필요할 때, **임의로 만들지 않는다.**
|
||
|
||
1. 필요 아이콘을 **제안**한다 — `이름 + 의미 + 조형 사양(그리드·획·구성 요소)`
|
||
2. **승인 대기**. 승인 없이 산출물에 포함하지 않는다
|
||
3. 승인 후 카탈로그에 등재하고 `design.components.md §3` 아이콘 절에 반영한다
|
||
4. 등재 시 **의미 중복 검사**(IC-1)를 수행한다
|
||
|
||
> 이 절차는 아이콘 세트가 무통제로 팽창해 의미 체계가 무너지는 것을 막는다. SAMAN 선행 시스템에서 이미 운용 중인 규칙을 승계한다.
|
||
|
||
## 6.4 허용 글리프
|
||
|
||
아이콘 세트 외에, 아래 유니코드 글리프만 "기호"로 사용할 수 있다.
|
||
|
||
| 글리프 | 용도 | 조건 |
|
||
| :--- | :--- | :--- |
|
||
| `▲` `▼` | 증감 추세 | **반드시 색 + 라벨과 병기** (색맹 대응) |
|
||
| `●` | 범례 마커 | 차트 범례에 한함 |
|
||
| `→` | 상호참조 | `(→ 3.4절)` 형식에 한함 |
|
||
| `★` | 필수 표시 | 검증 체크리스트에 한함 |
|
||
|
||
---
|
||
|
||
# 7. 로고·마크 규약
|
||
|
||
```yaml
|
||
logo:
|
||
master: <path> # 원본 (투명 배경, 최대 해상도)
|
||
on_light: <path>
|
||
on_dark: <path> # 다크 면용 리컬러 변형
|
||
mark_only: <path|null> # 심볼 단독
|
||
min_width: <object> # 매체별 최소 폭 (Layer 2가 실체화)
|
||
clear_space: <string> # 여백 규칙 (마크 높이 배수로 표기)
|
||
```
|
||
|
||
| ID | 규칙 |
|
||
| :--- | :--- |
|
||
| **LG-1** | 로고는 **재작도하지 않는다.** 제공된 자산 파일만 사용한다 |
|
||
| **LG-2** | 로고 색상을 임의 변경하지 않는다. 다크 면에는 `on_dark` 변형을 사용한다 |
|
||
| **LG-3** | 로고를 **생성 이미지에 굽지 않는다**(bake). 항상 별도 레이어·컴포넌트로 배치한다 |
|
||
| **LG-4** | 여백(clear space)은 **마크 높이의 배수**로 규정한다. 절대 치수로 규정하면 판형 변경 시 무효가 된다 |
|
||
| **LG-5** | 최소 폭 미만으로 축소하지 않는다. 미달 시 `mark_only` 변형으로 대체한다 |
|
||
|
||
---
|
||
|
||
# 8. 브랜드 인스턴스 #1 — SAMAN
|
||
|
||
> 본 장은 **스키마의 완전 실체화 예시**이자 실제 운용 인스턴스다. 새 브랜드를 추가할 때 이 장을 형식 참조로 삼는다.
|
||
|
||
## 8.1 식별·철학
|
||
|
||
| 슬롯 | 값 |
|
||
| :--- | :--- |
|
||
| `brand.id` | `saman` |
|
||
| `brand.name` | SAMAN (삼안) |
|
||
| `brand.philosophy` | **"처음 보지만 익숙하고, 계속 봐도 새로운 디자인"** — *Familiar at first sight, new every time you look.* |
|
||
| `brand.mission` | **"기술로 사람과 자연이 함께하는 세상"** — *A world where technology brings people and nature together.* |
|
||
|
||
### 조작적 정의 (`brand.philosophy.operational`)
|
||
|
||
| 축 | 정의 | 검증 가능 형태 |
|
||
| :--- | :--- | :--- |
|
||
| **처음 보지만 익숙한**<br>(Cognitive Fluency) | 낯선 정보의 인지 저항을 최소화한다. 안정적 비례·정렬선·반복 구조로 **예측 가능성**을 만든다 | → `Design.md §2` **PF 규칙군** (그리드 스냅, 허용 분할, 고정선, 여백률, 토큰 전용) |
|
||
| **계속 봐도 새로운**<br>(Aesthetic Durability) | 익숙함이 지루함이 되지 않도록 제어한다. 한 화면에 전부 싣지 않고 **레이어드 디테일**을 남긴다 | → `Design.md §2` **PD 규칙군** (단일 결론 존, 대비 위계, 원/근거리 2층, 악센트 희소) |
|
||
|
||
> 이 조작적 정의가 곧 PF/PD 규칙의 근거다. 슬로건 → 규칙 → 검증의 3단 연결이 끊기지 않아야 한다 (BV-8).
|
||
|
||
## 8.2 가치축 (3축)
|
||
|
||
| 축 ID | 국문 | 영문 | design_role | 원색 | usage | economy |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| `nature` | 자연 | Nature | **base** | `green` | 제목·구조선·헤더 면·아이콘·강조 면 | — |
|
||
| `technology` | 기술 | Technology | **accent** | `orange` | 아이브로 틱·귀결 커넥터·원칙 마커·단일 강조어 | **단위 화면당 최대 2개 국소 강조** |
|
||
| `people` | 사람 | People | **ground** | `brown` | 본문·부제·헤어라인·라벨·테두리 | — |
|
||
|
||
## 8.3 팔레트
|
||
|
||
### 원색 (primary)
|
||
|
||
| id | name | hex | rgb | **GRADE** | axis | role |
|
||
| :--- | :--- | :--- | :--- | :-: | :--- | :--- |
|
||
| `green` | Deep Forest Green | `#1F524B` | 31, 82, 75 | **69** | nature | base |
|
||
| `orange` | Tech Rust Orange | `#D05C26` | 208, 92, 38 | **47** | technology | accent |
|
||
| `brown` | Human Earth Brown | `#474235` | 71, 66, 53 | **72** | people | ground |
|
||
|
||
### 중립색 (neutral)
|
||
|
||
| id | name | hex | rgb | **GRADE** | role |
|
||
| :--- | :--- | :--- | :--- | :-: | :--- |
|
||
| `sand` | Sand White | `#F4F3F0` | 244, 243, 240 | **4** | bg_light |
|
||
| `obsidian` | Obsidian Black | `#111111` | 17, 17, 17 | **95** | bg_dark |
|
||
| `subtle` | Light Gray | `#D3D3D3` | 211, 211, 211 | **15** | subtle |
|
||
| `white` | Pure White | `#FFFFFF` | 255, 255, 255 | **0** | on_dark |
|
||
|
||
> **[정정 이력]** SAMAN 선행 시스템 `design.tokens.json`의 `color.subtle`은 `hex: "#474235"` / `rgb: [211,211,211]`로 **불일치** 상태였다(hex 기준 렌더 시 green 면 위 대비 **1.13:1**). 본 인스턴스는 `design.md §6.1` 표기인 **`#D3D3D3`을 정본**으로 확정한다. [출처: 자체 산출 / SAMAN `design.tokens.json` `color.subtle`]
|
||
|
||
## 8.4 슬롯 검증 결과 (BV-1 ~ BV-8)
|
||
|
||
| ID | 판정 | 근거 |
|
||
| :--- | :-: | :--- |
|
||
| BV-1 모든 원색 GRADE 산출 가능 | **PASS** | 7색 전부 산출 완료 (§8.3) |
|
||
| BV-2 본문색 후보 (ΔG ≥ 70 vs bg_light) | **조건부 PASS** | `brown`(72) − `sand`(4) = **ΔG 68** < 70 → CG-2 실측 등록(9.02:1 AAA)으로 사용 |
|
||
| BV-3 제목색 후보 (ΔG ≥ 55 vs bg_light) | **PASS** | `green`(69) − `sand`(4) = **ΔG 65** ✓ |
|
||
| BV-4 bg 명도 격차 (ΔG ≥ 80) | **PASS** | `obsidian`(95) − `sand`(4) = **ΔG 91** ✓ |
|
||
| BV-5 악센트 ΔG < 55 시 금지 명시 | **PASS** | `orange`(47) − `sand`(4) = ΔG 43 → 본문 금지 규칙 §8.7에 명시 ✓ |
|
||
| BV-6 서체 요건 | **PASS** | Pretendard — 웨이트 3단 + tabular figures ✓ |
|
||
| BV-7 축 수 = 원색 수 | **PASS** | 3 = 3 ✓ |
|
||
| BV-8 조작적 정의 존재 | **PASS** | §8.1 ✓ |
|
||
|
||
> **[CONFLICT DETECTED] BV-2 경계 사례**
|
||
> `brown` on `sand`는 ΔG 68로 규칙상 임계(70) 미달이나, **실측 대비는 9.02:1로 AAA를 충족**한다(자체 재계산 검증 완료). GRADE는 보수적 하한이므로 §3.2 단서에 따라 **실측값을 `contrast.pairs`에 명시 등록하여 사용**한다. 규칙 자체는 완화하지 않는다.
|
||
|
||
## 8.5 대비 실측 등록부 (`contrast.pairs`)
|
||
|
||
전 쌍 프로그램 재계산 검증 완료 (2026-07-28).
|
||
|
||
| 전경 | 배경 | ΔG | **실측** | 판정 | 용도 |
|
||
| :--- | :--- | :-: | :---: | :--- | :--- |
|
||
| brown | sand | 68 | **9.02** | AAA | **본문 기본** |
|
||
| green | sand | 65 | **8.00** | AAA | **제목·구조** |
|
||
| brown | white | 72 | **10.01** | AAA | 카드 위 본문 |
|
||
| green | white | 69 | **8.87** | AAA | 카드 위 제목 |
|
||
| white | green | 69 | **8.87** | AAA | 그린 면 위 텍스트 |
|
||
| sand | green | 65 | **8.00** | AAA | 그린 면 위 텍스트 |
|
||
| subtle | green | 54 | **5.93** | AA | 그린 면 위 보조 텍스트 |
|
||
| white | brown | 72 | **10.01** | AAA | 브라운 면 위 텍스트 |
|
||
| sand | obsidian | 91 | **17.02** | AAA | 다크 면 위 텍스트 |
|
||
| orange | obsidian | 48 | **4.71** | AA | 다크 면 위 악센트 |
|
||
| orange | sand | 43 | **3.61** | **Large only** | 대형 악센트 전용 |
|
||
| white | orange | 47 | **4.01** | **Large only** | 오렌지 면 위 텍스트 |
|
||
| orange | white | 47 | **4.01** | **Large only** | 흰 카드 위 대형 악센트 전용 (v0.1.1 등록) |
|
||
| **green** | **obsidian** | **26** | **2.13** | **✗ FAIL** | **금지** |
|
||
|
||
> **[정정 이력]** SAMAN 선행 시스템은 `green on white`를 **8.93**으로 표기했으나 실측은 **8.87**이다. 본 인스턴스는 8.87로 정정한다.
|
||
|
||
**GRADE 규칙의 독립 검증**: ΔG 규칙(§3.2)만으로 판정하면 `orange on sand`(ΔG 43 → 대형 전용), `white on orange`(ΔG 47 → 대형 전용), `green on obsidian`(ΔG 26 → 텍스트 금지)이 도출된다. 이는 SAMAN이 **수작업 실측으로 세운 가드레일과 완전히 일치**한다. GRADE 척도가 기존 규칙을 손실 없이 재생산함이 확인되었다.
|
||
|
||
## 8.6 타이포그래피 슬롯
|
||
|
||
| 슬롯 | 값 |
|
||
| :--- | :--- |
|
||
| `family.primary` | **Pretendard** |
|
||
| `family.stack` | `Pretendard, -apple-system, BlinkMacSystemFont, "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif` |
|
||
| `family.embed` | `assets/fonts/PretendardVariable.ttf` (가변 폰트, 로컬 임베드) |
|
||
| `weights` | regular 400 / medium 500 / bold 700 |
|
||
| `features` | tabular figures ✓ / variable ✓ |
|
||
|
||
**표현 규칙**: 한글에는 대소문자가 없으므로, **캡스 톤은 자간(letter-spacing)으로 만든다.** 헤드라인은 좁히고(음수 자간), 라벨·아이브로는 넓힌다(양수 자간). 구체 수치는 `design.foundations.md §3.6`이 정의한다.
|
||
|
||
## 8.7 보이스 & 금지 목록
|
||
|
||
```yaml
|
||
voice:
|
||
stance: 단정적·원칙적·3인칭. 원칙은 원칙으로 못 박는다
|
||
distance: 전문가 대 전문가. "여러분"·"우리"로 거리를 좁히지 않는다
|
||
register: 규정문체(평서 종결). §5.2 어미 4종만 사용
|
||
restraint: 과장·감탄·마케팅 어휘 금지. 확신하되 자랑하지 않는다
|
||
```
|
||
|
||
**보이스 금지 예시**
|
||
|
||
| 속성 | 금지 예 | 대체 |
|
||
| :--- | :--- | :--- |
|
||
| stance | "~인 것 같습니다" | "~이다" / 근거 불충분 시 `[추론]` 표기 |
|
||
| distance | "우리 모두가 아는 것처럼" | 삭제 |
|
||
| register | "꼭 확인해 주세요!" | "확인한다" |
|
||
| restraint | "혁신적인 솔루션" | 기능을 사실로 서술 |
|
||
|
||
### `brand.forbidden[]` (브랜드 차원 절대 금지)
|
||
|
||
| # | 금지 항목 | 근거 |
|
||
| :-: | :--- | :--- |
|
||
| 1 | **오렌지 본문 텍스트** (라이트 배경) | ΔG 43 < 55. 대형 텍스트·면에만 |
|
||
| 2 | **다크 배경 위 그린 텍스트** | ΔG 26, 실측 2.13:1. 그린은 다크 위에서 면·도형으로만 |
|
||
| 3 | **순백(#FFFFFF) 전면 배경** | 대형 화면 눈부심·인쇄 반사. 라이트 배경은 항상 `sand` |
|
||
| 4 | **악센트 3개 이상** (단위 화면당) | 악센트 경제 (§2.4) |
|
||
| 5 | **이모지** | IC-3 |
|
||
| 6 | **생성 이미지에 텍스트·로고 굽기** | LG-3 |
|
||
| 7 | **토큰 외 임의 색·치수 하드코딩** | Layer 1 PF 규칙 |
|
||
| 8 | **그라디언트 배경** | 플랫 토큰 필만 사용 |
|
||
| 9 | **방향어 참조** ("아래 표", "앞서") | §5.7 |
|
||
|
||
## 8.8 아이코노그래피
|
||
|
||
| 슬롯 | 값 |
|
||
| :--- | :--- |
|
||
| `grid` | 64 (정사각) |
|
||
| `stroke` | 4 |
|
||
| `linecap` / `linejoin` | round / round |
|
||
| `fill` | none |
|
||
| `color_on_light` | `green` |
|
||
| `color_on_dark` | `white` |
|
||
| `set_policy` | **bespoke** (자체 제작) |
|
||
|
||
**카탈로그 (현행)**
|
||
|
||
| 분류 | 항목 |
|
||
| :--- | :--- |
|
||
| SVG 라인 아이콘 4종 | `view`(보기) · `verify`(검증) · `barrier`(장벽) · `network`(허브) |
|
||
| BIM 래스터 세트 9종 | `plan` · `design` · `construct` · `complete` · `operate` · `section` · `analysis` · `ground` · `cde` |
|
||
|
||
신규 아이콘은 §6.3 승인 절차를 따른다.
|
||
|
||
## 8.9 로고
|
||
|
||
| 슬롯 | 값 |
|
||
| :--- | :--- |
|
||
| `master` | `assets/saman-logo.png` (투명, 1048×340) |
|
||
| `on_light` | `assets/saman-logo.png` |
|
||
| `on_dark` | `assets/saman-logo-on-dark.png` (워드마크 sand 리컬러, 다이아몬드 orange 유지) |
|
||
| `mark_only` | `assets/saman-mark.png` / `saman-mark-on-dark.png` |
|
||
| `clear_space` | 마크 높이의 **1.0배** 이상 |
|
||
| `min_width` | Layer 2 매체 프로파일이 실체화 |
|
||
|
||
---
|
||
|
||
# 9. 인스턴스 추가 절차
|
||
|
||
## 9.1 절차
|
||
|
||
| 단계 | 작업 | 산출 |
|
||
| :-: | :--- | :--- |
|
||
| 1 | 철학 슬로건 확보 및 **조작적 정의 도출** (2축 이상) | B3·B4 |
|
||
| 2 | 가치축 정의 — `design_role` 배정 (base 1 / ground 1 / accent ≤1) | B6 |
|
||
| 3 | 원색·중립색 지정, **GRADE 자동 산출** | B7·B8 |
|
||
| 4 | **BV-1 ~ BV-8 검증 실행** — 1건이라도 FAIL이면 3단계로 회귀 | 검증표 |
|
||
| 5 | 대비 실측 전 쌍 계산 → `contrast.pairs` 등록 | 등록부 |
|
||
| 6 | ΔG 미달이나 실측 통과 쌍은 **명시 등록** (암묵 허용 금지) | 등록부 |
|
||
| 7 | 서체 슬롯 지정 (TF-1 ~ TF-5 확인) | B9·B10 |
|
||
| 8 | 보이스 4속성 + **금지 예시** 작성 | B11 |
|
||
| 9 | 문안 규칙 — §5.6 동사 판별표를 **해당 도메인 어휘로 재작성** | B12 |
|
||
| 10 | 아이콘 조형 원칙·초기 카탈로그 확정 | B13 |
|
||
| 11 | 로고 자산 확보 및 변형 생성 | B14 |
|
||
| 12 | `brand.forbidden[]` 확정 — **BV-5 유래 항목 필수 포함** | B15 |
|
||
| 13 | `design.tokens.json`의 `brand` 블록에 반영, **md ↔ json 정합 검증** | 토큰 갱신 |
|
||
| 14 | 본 파일에 인스턴스 장(章) 추가 → MINOR 버전 증가 | 문서 갱신 |
|
||
|
||
## 9.2 인스턴스 등록 체크리스트
|
||
|
||
| # | 항목 | 필수 |
|
||
| :-: | :--- | :-: |
|
||
| 1 | 슬롯 B1~B15 전부 충족 | ★ |
|
||
| 2 | BV-1 ~ BV-8 전부 PASS (경계 사례는 사유 기재) | ★ |
|
||
| 3 | `hex` ↔ `rgb` 전 색 일치 검증 | ★ |
|
||
| 4 | 대비 실측 전 쌍 프로그램 계산 (수기 계산 금지) | ★ |
|
||
| 5 | FAIL 쌍은 `brand.forbidden[]`에 반영 | ★ |
|
||
| 6 | 보이스 각 속성에 금지 예시 1개 이상 | ★ |
|
||
| 7 | 동사 판별표가 해당 도메인 어휘로 작성됨 | ★ |
|
||
| 8 | 아이콘 카탈로그에 의미 중복 없음 (IC-1) | ★ |
|
||
| 9 | `Design.md §2` PF/PD 규칙과 조작적 정의가 연결됨 | ★ |
|
||
| 10 | `design.tokens.json` 동기화 완료 | ★ |
|
||
|
||
## 9.3 브랜드 교체 시 영향 범위
|
||
|
||
| 계층 | 영향 | 재작업 |
|
||
| :--- | :--- | :--- |
|
||
| **Layer 0** | 전면 교체 | 본 파일 인스턴스 장 신규 작성 |
|
||
| **Layer 1** | **영향 없음** | 없음 — 파운데이션은 색의 *의미역할*만 참조하며 HEX를 직접 참조하지 않는다 |
|
||
| **Layer 2** | **영향 없음** | 없음 |
|
||
| **Layer 3** | **영향 없음** | 없음 — 모듈은 토큰명으로만 지시한다 |
|
||
|
||
> 이것이 Layer 분리의 실익이다. 브랜드 교체가 **Layer 0 한 파일로 격리**되려면, 하위 계층에서 `#1F524B` 같은 리터럴이 단 한 번도 등장하지 않아야 한다. [출처: design.benchmark, T33 (GOV.UK "hex 값 직접 복사 금지, 함수로만 참조")]
|
||
|
||
---
|
||
|
||
## 근거 출처 요약
|
||
|
||
본 파일이 인용한 벤치마킹 항목: **T4 · T5 · T10 · T21 · T28 · T30 · T31 · T33 · T35 · T36 · T38 · T41 · T44 · T51 · T52 · M12 · M20 · §16-4 · §18-24**
|
||
전문: `RAG/design.benchmark_2026-07-28_v0.1.0.md`
|
||
|
||
`[자체 정의]` 표기 항목: CW-2 어절 기준 · §5.6 동사 판별표 어휘 · §5.8 한국어 가독성 지표 · TF-5 한글 sans 채택 근거
|