---
task_id: task-2432
type: design-spec
section: target-audience
created: 2026-05-03
status: draft
---

# IDS Phase 4 — Phase 0-D: Target Audience 설계

> 회장 핵심 원칙: **"디자인 자산을 코드로 옮기는 것이 아니라, 타겟 사용자에게 먹히는 디자인을 토큰+구조+룰로 번역"**
>
> 회장 명시: **"모든 매핑은 이 타겟 기준과 연결되어야 한다."**

본 문서는 IDS Phase 4 Phase 0의 핵심 산출물 4종 중 1종으로, **mapping-tables.md / html-skeleton.md / brainstorming.md의 모든 디자인 결정이 연결되어야 하는 타겟 기준선**을 제공한다. 단순한 페르소나 카드가 아니라, 토큰 분기 / 컴포넌트 변형 / 임계값 정당화의 근거 문서로 작동한다.

---

## 1. Primary 페르소나: 보험 FA (Financial Advisor)

### 1.1 페르소나 프로필

| 항목 | 내용 |
|---|---|
| 호칭 | 지점장 / 설계사 / FC / FA (회사별 호칭 차이, 본질은 동일) |
| 나이대 | 30대 후반 ~ 50대 (2030대도 일부, 핵심층은 40대) |
| 직무 환경 | 지점/사무소 출퇴근 + 외근 미팅 병행, 카톡·SNS·전화로 상시 고객 접촉 |
| 사용 디바이스 | **모바일 70% (카톡 공유), 태블릿 20% (대면 미팅), 노트북 10%** |
| 사용 맥락 | (a) 영업 미팅에서 태블릿으로 보여주기 (b) 카톡으로 잠재 가입자에게 전달 (c) 본인 SNS/블로그에 게시해 "전문가 이미지" 구축 |
| 최우선 가치 | **전문성**, **빠른 이해**, **즉각적 신뢰**, "이 사람한테 가입해도 되겠다"는 인상 |
| 장애 요소 | 시간 부족(하루 5~10건 상담), 다양한 고객층(20대~70대) 응대, 본인 손으로 다시 편집할 시간 없음 |

### 1.2 신뢰를 주는 스타일

| 디자인 요소 | 사양 | 페르소나 연결 근거 |
|---|---|---|
| 색상 | **Navy/Dark 톤 베이스 + Accent gold/blue** (예: #0B1E3F + #C9A961) | 금융권 표준 톤, "은행/증권" 연상 → 금융 전문가 신뢰감 |
| 색상 회피 | 형광 핑크, 무지개 그라데이션, 파스텔 다채색 | "장난감 같음" → 영업 도구로 부적합 |
| 폰트 weight | **600+ (SemiBold/Bold)**, weight 300 이하 금지 | 가벼운 weight = "확신 없음" 인상, 영업 권위 손실 |
| 폰트 패밀리 | Pretendard SemiBold/Bold, Inter Tight Bold | 한글 가독성 + 모던한 금융 느낌 |
| 레이아웃 | 충분한 여백, **정렬 강박** (좌측 정렬 또는 중앙 정렬 일관), **하나의 메시지에 집중** | 미팅에서 1초 안에 핵심 파악, 시선 분산 시 영업 흐름 끊김 |
| 정보 밀도 | **높음** — 핵심 수치/팩트 강조 (보장금액, 보험료, 가입률 등) | FA는 숫자로 설득, 추상 메시지보다 구체 수치 선호 |
| 시각 요소 | 아이콘은 line/duotone, 일러스트는 절제, 사진은 실제 인물(스톡 회피) | 만화체 일러스트 = "비전문" 인상 |

### 1.3 효과적인 메시지 톤

- **정확한 숫자/팩트 우선**: "월 3만원" > "저렴한", "20년 보장" > "오래 보장"
- **감정 자극보다 전문성**: 두려움 마케팅 대신 "팩트 비교 → 합리적 결론"
- **권위 어휘**: "보장", "검증", "공식", "표준", "공시", "비교"
- **1초 안에 핵심 파악**: 첫 줄에 핵심 수치 또는 결론, 헤드라인 ≤ 16자 권장
- **회피**: "대박", "꿀팁", "ㅋㅋ" 등 가벼운 표현 — FA가 카톡으로 보내기 부담스러운 톤

### 1.4 반응을 유도하는 CTA

| CTA 유형 | 예시 문구 | 페르소나 연결 |
|---|---|---|
| 즉각 행동 | "지금 상담 신청", "1:1 상담 예약" | FA는 즉각 리드를 받아야 함, 탐색형 CTA는 영업 효율 떨어짐 |
| 구체적 행동 동사 | "진단받기", "비교하기", "보장 확인" | 모호한 "더 알아보기" 회피 — FA는 명확한 다음 단계 필요 |
| 공식적 어조 | 명령형 + 공식 어휘, "지금 바로" 같은 마케팅 표현 절제 | 카톡 전달 시 본인 신뢰도와 직결 |
| 전달 가능 형태 | 카톡으로 한 장 이미지 + URL 공유 시 의미 완결 | FA는 본인이 다시 편집할 시간 없음 |

### 1.5 분석 근거 (사실 기반)

- 회장 명시: "보험 FA = 지점장 호칭, 영업 도구 활용, 잠재 가입자 응대"
- 영업 도구로 사용 → 본인 신뢰도 = 콘텐츠 신뢰도 → 가벼운 톤 회피
- 잠재 가입자 응대 → 다양한 연령층 → 보편적으로 "정중한" 톤이 안전
- 지점장 호칭 → 조직 문화상 공식성 / 권위 우선

---

## 2. Secondary 페르소나: 일반 소비자

### 2.1 페르소나 프로필

| 항목 | 내용 |
|---|---|
| 나이대 | **30~50대** (보험 가입 결정 핵심 연령) |
| 전문성 | 보험 비전문가, 약관 용어 거부감, "어렵다"는 첫 인상이면 이탈 |
| 사용 디바이스 | **모바일 우선 (90%+)**, 인스타그램 피드 / 카톡 광고 / 네이버 블로그 노출 |
| 노출 경로 | SNS 광고 스크롤 중 우연 노출, 카톡 단톡방 공유, 검색 후 랜딩 |
| 가입 단계 | 가입 결정 전 정보 탐색, "필요한가?" → "어떤 게 좋은가?" → "내게 맞나?" |
| 장애 요소 | **보험료 부담 인지** (월 고정비), 어려운 용어 거부, 이전 가입 후회 경험 |
| 의사결정 동기 | 가족 보호, 경제적 안전망, 또래 가입 사회 압력 |

### 2.2 신뢰를 주는 스타일

| 디자인 요소 | 사양 | 페르소나 연결 근거 |
|---|---|---|
| 색상 | **화이트 베이스 + Accent 컬러 1개** (예: 화이트 + #FF6E2B 또는 #4A90E2) | "다채로운 산만함" 회피, 친근감 + 신뢰 동시 확보 |
| 색상 회피 | 너무 어두운 navy 단독, 빨강 단독 | 어두움 = 거리감, 빨강 단독 = 위험/경고 → 보험 거부감 강화 |
| 폰트 weight | 400~700 혼합, **가독성 우선** | 너무 두꺼우면 광고 인상, 너무 얇으면 안 읽힘 |
| 폰트 패밀리 | **Pretendard** (한글 친화), Noto Sans KR | 모바일 한글 가독성 + 친근감 |
| 레이아웃 | **이미지 + 짧은 텍스트**, **한 화면 메시지 1개** | 모바일 스크롤 환경, 0.5초 안에 흥미 못 끌면 이탈 |
| 정보 밀도 | **낮음** — 이미지 우선, 수치는 1~2개로 단순화 | 수치 폭격 시 "또 광고냐" 이탈 |
| 여백 | 더 넓게 (FA용보다 1.5x 권장) | 모바일에서 답답함 회피, 호흡 확보 |

### 2.3 효과적인 메시지 톤

- **일상 어휘**: "보장" → "지켜준다", "납입" → "내는 돈", "갱신" → "다시 시작"
- **공감 기반**: "혹시 이런 고민 있으세요?" 식 진입
- **두려움보다 안심**: "이거 없으면 큰일 난다" 회피, "이거 있으면 마음 놓인다" 채택
- **숫자 단순화**: "월 32,400원 (커피 8잔)" 같이 일상 환산
- **개인화**: "당신의 ~", "내게 맞는 ~" — 평균/일반론 회피

### 2.4 반응을 유도하는 CTA

| CTA 유형 | 예시 문구 | 페르소나 연결 |
|---|---|---|
| 탐색형 | "내게 맞는지 확인", "1분 진단 받기", "내 보험료 계산" | 가입 결정 전 단계 → 즉각 가입 부담, 작은 1단계 |
| 부담 없는 어조 | "무료", "익명", "1분", "체크만 하기" | 보험료 부담 인지 상태 → 비용/시간 부담 차단이 1순위 |
| 1단계 진입 | 체크리스트, 진단 퀴즈, 비교표 보기 | 완성된 상품 가입 CTA보다 진입 장벽 낮은 도구형 |

### 2.5 분석 근거 (사실 기반)

- 회장 명시: "일반 소비자 = 보험 비전문가, 가입 결정 단계, 보험료 부담"
- 비전문가 → 어려운 용어/숫자 폭격 = 이탈 트리거
- 가입 결정 단계 → 즉각 가입 CTA보다 탐색형이 전환에 유리
- 보험료 부담 인지 → 가격 강조보다 "가치/안심" 프레이밍 우선

---

## 3. 매핑 연결 룰 (회장 명시 — 핵심 섹션)

> **"모든 매핑은 이 타겟 기준과 연결되어야 한다."**

mapping-tables.md / html-skeleton.md / brainstorming.md의 **모든 디자인 결정 항목**은 본 섹션의 룰을 따라야 한다.

### 3.1 연결 형식 표준

각 매핑 항목은 반드시 **"타겟 연결 근거"** 컬럼/필드를 가져야 한다. 형식:

```
[디자인 결정] = [타겟 페르소나의 어떤 사용 맥락/가치/장애 요소]를 [어떻게] 해결/지원
```

#### 예시 (필수 형식)

| 디자인 결정 | 타겟 연결 근거 |
|---|---|
| `--font-headline-min: 84px` | 보험 FA가 태블릿(약 1m 거리)으로 미팅에서 보여줄 때, 1초 가독성 확보 |
| Brex orange `#FF6E2B` 적용 | 일반 소비자에게 핀테크 신뢰감 + 따뜻한 색상으로 보험 거리감 완화 |
| Headline weight 700 강제 | FA 페르소나의 "전문성/확신" 가치 — weight 300대는 "확신 없음" 인상 |
| Safe area 8% padding | 모바일 카톡 썸네일 크롭 시 핵심 메시지 누락 방지 (FA의 카톡 전달 맥락) |
| CTA 동사 ["상담 신청", "진단받기"] | FA = 명령형/공식, 일반소비자 = 탐색형/부담없음 — 페르소나별 토큰 분기 |
| Layout grid 8pt | FA의 "정렬 강박" 가치 충족, 시선 분산 차단 |
| Body line-height 1.6 | 일반 소비자 모바일 가독성 — 좁은 화면에서 읽기 부담 완화 |

**금지 형식**: "Apple 스타일이라서 적용", "미니멀해서 좋음" 같은 페르소나와 무관한 미학 근거.

### 3.2 타겟별 매핑 우선순위 표

| 디자인 요소 | 보험 FA 우선순위 | 일반 소비자 우선순위 | 결정 룰 |
|---|---|---|---|
| **헤드라인 폰트 크기** | 매우 큼 (영업 거리 1m, 태블릿 시안성) | 큼 (모바일 좁은 화면) | **FA 우선 시 84px+, 소비자 우선 시 56~72px** → preset별 분리 |
| **색상 톤** | Dark/Navy (전문성) | White/밝음 (친근) | **theme preset으로 분리** (`fa-pro`, `consumer-friendly`) |
| **CTA 톤** | 명령형/공식 ("상담 신청") | 탐색형/친근 ("내게 맞는지 확인") | **CTA 토큰 페르소나 감지 분기** |
| **정보 밀도** | 높음 (수치 강조, 1슬라이드 다중 정보) | 낮음 (이미지 우선, 메시지 1개) | **컴포넌트 변형 분리** (`MetricCard.dense` vs `MetricCard.simple`) |
| **여백 (gutter)** | 표준 8pt 그리드 | 더 넓게 (12pt 또는 16pt 그리드) | **grid scale 토큰 분리** (`--grid-fa: 8px`, `--grid-consumer: 12px`) |
| **폰트 weight** | 600+ 강제 | 400~700 혼합 | **font-weight 토큰 페르소나별 min 정의** |
| **이미지 비율** | 절제 (텍스트:이미지 = 7:3) | 이미지 우선 (3:7 또는 4:6) | **컴포넌트 layout variant** |
| **숫자 표현** | 정확값 ("월 32,400원") | 일상 환산 ("커피 8잔") | **메시지 톤 토큰 페르소나 분기** |
| **컬러 다채로움** | 모노톤 + 1 accent | 화이트 + 1 accent (다른 hue) | preset별 palette 정의 |
| **아이콘 스타일** | line/duotone 절제 | filled/일러스트 친근 | **아이콘 라이브러리 분기** |

### 3.3 충돌 해결 룰

두 페르소나 요구가 상충할 때 결정 방식:

#### 룰 A: 1차 — Theme Preset으로 분리
- 가장 큰 충돌(색상 톤, 폰트 weight 범위, 정보 밀도)은 **`theme: fa-pro` vs `theme: consumer-friendly`** preset으로 완전 분리
- 매핑표 5종에서 **preset별 매핑 별도 정의** 의무

#### 룰 B: 2차 — 컴포넌트 Variant로 분리
- 같은 컴포넌트(예: MetricCard, CTAButton)가 페르소나별로 다르게 동작해야 할 때
- `<MetricCard variant="dense" />` vs `<MetricCard variant="simple" />` 형태
- variant prop은 theme preset에 종속되어 자동 결정 (개발자가 매번 선택 X)

#### 룰 C: 3차 — Layout Density 토큰
- 여백/grid처럼 미세 조정이 필요한 부분
- `--density: compact | comfortable | spacious` 토큰
- FA preset = `comfortable`, 소비자 preset = `spacious` 기본값

#### 룰 D: 최후 — 보수적 우선 (둘 다 만족)
- 결정 어려울 때: **두 페르소나 모두에게 유효한 보수적 선택**
- 예: contrast ratio는 더 엄격한 기준(7:1) 사용 → 두 페르소나 모두 만족
- 예: safe area는 더 넓은 값 사용 → 양쪽 안전

#### 룰 E: 절대 우선 — 가독성/접근성
- 페르소나와 무관하게 **WCAG AAA contrast (7:1) 미달은 어느 preset에서도 금지**
- task-2428 회장 평가 "ΔE=0.00 정확해도 색 대비 안 맞음 = 아마추어 수준" — 미학보다 가독성/대비 절대 우선
- dq-rules의 임계값(font_min 40px 등)은 **페르소나 정당화가 있어도 양보 X** (절대 하한)

---

## 4. 검증 체크리스트

매핑표/HTML skeleton/brainstorming 산출물이 본 문서와 정합성을 갖추는지 검증:

- [ ] **모든 디자인 결정에 페르소나 근거 존재** — mapping-tables.md의 각 행에 "타겟 연결 근거" 컬럼 채워짐, "Apple 스타일이라" 같은 미학 근거 0건
- [ ] **FA / 소비자 별 토큰 분기 가능** — `theme: fa-pro` / `theme: consumer-friendly` preset이 매핑표에 정의됨
- [ ] **dq-rules 임계값이 페르소나로 정당화됨** — `font_min 40px`, `headline_min 84px` 같은 임계값 옆에 페르소나 근거 명시
- [ ] **task-2428 "아마추어 수준" 재발 차단 메커니즘 존재** — 룰 E (가독성/대비 절대 우선) 적용 검증, contrast 검증이 미학 검증보다 선행
- [ ] **CTA 톤 토큰 페르소나 분기 명시** — `cta.fa.primary` / `cta.consumer.primary` 분리 정의
- [ ] **충돌 해결 룰 적용 사례 1건 이상** — html-skeleton에서 룰 A~E 중 하나 명시적으로 적용된 사례 기재
- [ ] **컨텍스트 디바이스 매칭** — FA = 태블릿(1m 거리) 가정 사이즈, 소비자 = 모바일(30cm) 가정 사이즈가 grid/font scale에 반영
- [ ] **메시지 톤 분기 명시** — Headline/Body/CTA 카피 가이드가 페르소나별로 분리됨 (정확수치 vs 일상환산 등)

---

## 5. 사용 가이드 (다른 산출물 작성자에게)

### mapping-tables.md 작성 시
- 5종 매핑 모두 **"타겟 연결 근거" 컬럼 추가** (필수)
- 132 design-md 브랜드 preset 매핑 시 **어느 페르소나에 매칭되는지** 1차 분류 (예: Brex → consumer 친근, IBM → FA 전문)
- dq-rules 임계값 매핑 시 **임계값 = 페르소나 가치** 연결 명시

### html-skeleton.md 작성 시
- container/safe area 수치에 **페르소나 디바이스 거리/크기 가정** 명시
- 컴포넌트 배치 비율(headline 30% 등)에 **페르소나 시선 흐름 가설** 명시
- preset별 skeleton 차이가 있다면 그것을 **명시적으로 분리**

### brainstorming.md 작성 시
- 2~3개 alternative 제시할 때 **각 alternative가 어느 페르소나에 가까운지** tradeoff에 포함
- "FA 친화 vs 소비자 친화 vs 절충" 같은 페르소나 축을 alternative 선택 기준으로 활용

---

## 6. 참조

- 회장 명시 (2026-05-03): "Phase 0에 Target Audience 추가, primary 보험 FA, secondary 일반 소비자"
- 회장 명시 (2026-05-03): "모든 매핑은 이 타겟 기준과 연결되어야 한다"
- task-2428 회장 평가 (2026-05-03): "ΔE=0.00 정확해도 색 대비 안 맞음 = 아마추어 수준" → 룰 E의 출발점
- 회장 메모리 ★ feedback_design_philosophy.md, feedback_creative_work_principle.md
- 본 task 자매 산출물: brainstorming.md / mapping-tables.md / html-skeleton.md (Phase 0-A/B/C)

---

## 7. SSOT (Single Source of Truth) — 산출물 간 일관성 잠금

> Codex 재검증(2026-05-03)에서 발견한 산출물 간 명명/임계값 불일치를 본 섹션에서 단일 진실원본으로 고정한다. mapping-tables / html-skeleton / brainstorming 모든 산출물은 본 섹션 값을 SSOT로 따른다.

### 7.1 Preset 명명 SSOT

| 일반화 명명 (초안) | **정식 명명 (SSOT)** | 페르소나 매칭 | design-md 출처 | Phase 1 MVP 포함 여부 |
|---|---|---|---|---|
| fa-pro | **`theme-fa-fintech`** | Primary: 보험 FA | Brex (#FF6E2B 오렌지, F8F4EE) | ✅ 포함 |
| consumer-friendly | **`theme-consumer-warm`** | Secondary: 일반 소비자 | Apple (#0071e3, SF Pro Display) | ✅ 포함 |
| (옵션 — 본 IDS Phase 4 범위 외) | `theme-product-modern` | (3번째 페르소나 신규 — 보험사 백오피스 SaaS) | Supabase (#3ECF8E, 다크) | ❌ Phase 1 MVP 제외 (Phase 2 이후 회장 confirm 시 도입) |

**적용 룰**: 모든 산출물은 정식 명명(`theme-fa-fintech` / `theme-consumer-warm`)만 사용. `fa-pro` / `consumer-friendly` 같은 초안 명칭은 본 표에서만 호환 참조용으로 유지.

**브랜드→페르소나 매칭 단일 정답**:
- **Brex 디자인 시스템** = `theme-fa-fintech` (FA 전용) — 따뜻한 오렌지 + 정돈된 타이포 + 핀테크 전문성
- **Apple 디자인 시스템** = `theme-consumer-warm` (소비자 전용) — 미니멀 + 프리미엄 감각 + 모바일 친화
- Supabase는 product-modern (Phase 1 제외)

(이로써 brainstorming.md의 "Apple→FA / Brex→consumer" 표기는 본 SSOT 기준으로 무효 — mapping-tables / html-skeleton 표기가 정답)

### 7.2 Contrast SSOT

WCAG 적용 기준이 산출물마다 흩어진 문제(Codex HIGH 3) 해결.

| 적용 위치 | 절대 하한 (FAIL 즉시) | 권장 (PASS 정상) | 측정 방법 (Lite L1) |
|---|---|---|---|
| Body 텍스트 (16~24px regular) | **WCAG AA 4.5:1** | WCAG AAA 7:1 | 글리프 픽셀 5th percentile ≥ 4.5 |
| Headline (24px+ bold 또는 18.5px+ 모든 weight) | **WCAG AA 3:1** | WCAG AAA 4.5:1, **본 IDS 권장 7:1** | 글리프 픽셀 5th percentile ≥ 3 (대형) / 권장 7 |
| **CTA 버튼 텍스트** | **WCAG AA 4.5:1** (대형도 AA 4.5 적용 — task-2428 재발 차단) | **WCAG AAA 7:1 (본 IDS 강제)** | 글리프 픽셀 5th percentile ≥ 4.5, 95th percentile ≥ 7 |
| 아이콘/UI 그래픽 | WCAG AA 3:1 | 4.5:1 | bbox 평균 contrast ≥ 3 |
| 그라데이션/photo bg 위 텍스트 | 모든 글리프 픽셀 위치별 contrast 분포 5th percentile ≥ 4.5 | 95th percentile ≥ 7 | mapping-tables.md #5-A L1 알고리즘 (글리프 픽셀 + alpha-composite) |

**핵심 규칙**:
1. **본 IDS Phase 4 시스템 권장 = AAA 7:1** (헤드라인/CTA) — task-2428 재발 차단
2. **절대 하한 = AA 4.5:1** (body/CTA) — 5th percentile 미달 시 즉시 FAIL
3. **dq-rules.json 임계값과 충돌 시**: dq-rules가 더 엄격하면 dq-rules 우선, 본 SSOT가 더 엄격하면 SSOT 우선 (즉, **둘 중 더 엄격한 값 채택**)
4. **변경 권한**: 본 SSOT 변경은 회장 confirm 필수. preset 정의에서 silent 양보 금지.

### 7.3 Safe-area / Grid SSOT

| 항목 | **SSOT 값** | 적용 영역 | 측정 방법 |
|---|---|---|---|
| 외측 safe-area | **6.7% (1080px → 72px)** | 모든 aspect ratio (1:1, 4:5, 9:16, 1.91:1) | bbox top ≥ 72 AND left ≥ 72 AND right ≤ canvas-72 AND bottom ≤ canvas-72 |
| BrandBar 영역 | top 0~12px (브랜드 띠 전용) | 모든 변형 | safe-area 외부, 시각 요소 한정 |
| BrandFooter 영역 | bottom 100px 이하 (브랜드명 + 로고 변형 한정) | 모든 변형 | safe-area 외부, **콘텐츠 텍스트 침범 금지** |
| Baseline grid | **8px** | spacing / margin / padding / gap / bbox top|left|width|height | bbox % 8 == 0 |
| 그리드 적용 외 (예외) | font-size, line-height, border-radius | font-size 자유 / line-height 비율 / radius 디자인 | L4 Grid 검증 대상 제외 |
| 4px sub-grid 화이트리스트 | icon optical alignment, line-height 미세 조정 | 명시 예외만 | 별도 룰 |
| 컬럼 그리드 | **12-column × 76px col + 24px gutter** (1080 baseline) | Layout 변형 | Layout-A/B/C/D 모두 |
| Density 토큰 | `compact` (8pt 표준) / `comfortable` (12pt) / `spacious` (16pt) | preset에 따라 | gap/padding scale |

**핵심 규칙**:
1. **safe-area 6.7%는 모든 산출물의 단일 정답** — brainstorming "8%" 표기, mapping "5~8% 범위" 표기는 본 SSOT 6.7%로 통일
2. **baseline = 8px** 모든 preset 공통, density 토큰은 컴포넌트 간 spacing scale (16/24)로 적용. **base layer는 8px 고정**.
3. **변경 권한**: 본 SSOT 변경 회장 confirm 필수.

### 7.4 Phase 0.5 Lite Evaluator 입력 계약 (Codex HIGH 4 해결)

**현재 문제**: `quality_evaluator.evaluate_image()`는 PNG + design_md + hybrid_pattern + target_size만 받음 → bbox/grid/font-size/themePreset 메타데이터 부재.

**Phase 0.5 작업 시 필수 변경 사항** (본 Phase 0의 책임은 명시까지):

```
# Phase 0.5 진입 시 quality_evaluator.evaluate_image() 시그니처 확장 필요:

evaluate_image(
    image_path: str,                # 기존
    design_md: str,                 # 기존
    hybrid_pattern: str,            # 기존
    target_size: tuple,             # 기존
    layout_meta: LayoutMeta,        # 신규 (Phase 0.5)
)

# LayoutMeta (JSON Schema, Phase 0.5 작성):
{
  "themePreset": "theme-fa-fintech" | "theme-consumer-warm",
  "components": [
    { "name": "Headline", "bbox": [x,y,w,h], "fontSize": 84, "fill": "#0B1E3F" },
    { "name": "CTA", "bbox": [...], "fontSize": 44, "fill": "..." },
    ...
  ],
  "safeArea": { "top": 72, "left": 72, "right": 72, "bottom": 72 },
  "grid": { "baseline": 8, "columns": 12, "gutter": 24 },
  "background": { "type": "gradient" | "photo" | "solid", "data": ... }
}
```

**Phase 0.5 첫 task 의무**: JSON Schema 작성 (`skills/satori-cardnews/schemas/canvas-props.schema.json`) + evaluator 시그니처 확장.

**Phase 0의 책임 종료**: 본 SSOT가 Phase 0.5 진입 게이트 통과 조건. Phase 0.5 진입 시 추가 회장 confirm 0건 (계약 결정됨).

### 7.5 SSOT 적용 일관성 검증 (보고서 단계)

산출물 간 일관성을 검증하는 자동 점검표:
- [ ] preset 이름이 모든 산출물에서 `theme-fa-fintech` / `theme-consumer-warm`만 사용 (initial 명칭 제외)
- [ ] contrast 기준이 모든 산출물에서 본 §7.2 표와 일치
- [ ] safe-area = 72px (6.7%) 모든 산출물에서 단일 값
- [ ] baseline 8px 모든 preset 공통
- [ ] Phase 0.5 evaluator 계약(LayoutMeta) Phase 0.5 첫 task로 명시
