# 회의록 작성 및 공유 개선 서비스 - 스타일 가이드

**버전**: 1.0
**작성일**: 2025-10-15
**작성자**: 유진 (Frontend Developer)
**레퍼런스**: 클로바노트 (Naver)
  
---

## 목차

1. [브랜드 아이덴티티](#1-브랜드-아이덴티티)
2. [디자인 원칙](#2-디자인-원칙)
3. [컬러 시스템](#3-컬러-시스템)
4. [타이포그래피](#4-타이포그래피)
5. [간격 시스템](#5-간격-시스템)
6. [컴포넌트 스타일](#6-컴포넌트-스타일)
7. [반응형 브레이크포인트](#7-반응형-브레이크포인트)
8. [회의록 서비스 특화 컴포넌트](#8-회의록-서비스-특화-컴포넌트)
9. [인터랙션 패턴](#9-인터랙션-패턴)
10. [변경 이력](#10-변경-이력)

---

## 1. 브랜드 아이덴티티

### 1.1 디자인 컨셉

**"Smart Collaboration"** - 스마트한 협업 도구

회의록 작성 및 공유 서비스는 AI 기반의 자동화와 실시간 협업을 통해 업무 효율을 극대화하는 스마트한 협업 플랫폼입니다.

### 1.2 핵심 가치

| 가치 | 설명 | 디자인 반영 |
|------|------|------------|
| **정확성** | 누락 없이 정확하게 기록 | 명확한 시각적 위계, 검증 상태 표시 |
| **효율성** | AI 자동화로 작성 부담 감소 | AI 제안 영역, 자동 완성 패턴 |
| **협업** | 실시간 동기화 및 공유 | 협업 인디케이터, 커서 표시 |
| **접근성** | 업무 지식 없이도 사용 가능 | 전문용어 설명, 친근한 일러스트레이션 |

### 1.3 브랜드 성격

- **전문적이면서도 친근한**: 업무용 도구이지만 사용하기 쉬운
- **신뢰감 + 혁신성**: AI 기능의 정확성과 미래지향적 이미지
- **협업 중심**: 개인이 아닌 팀의 성공을 지원

### 1.4 비주얼 무드

- **색상**: 밝고 활기찬 청록색 (혁신, 성장, 활력)
- **형태**: 둥근 모서리, 부드러운 곡선 (친근함, 접근성)
- **일러스트레이션**: 캐릭터 기반, 간결하고 현대적 (클로바노트 스타일 참조)

---

## 2. 디자인 원칙

### 2.1 명확성 (Clarity)

**사용자가 무엇을 해야 하는지 즉시 이해 가능해야 합니다.**

- 명확한 시각적 위계 유지
- 혼란스러운 요소 최소화
- 액션 버튼의 목적을 분명히 표현
- 에러 메시지는 문제와 해결 방법을 함께 제시

**예시**:
- ✅ "회의록을 저장하지 못했습니다. 네트워크 연결을 확인하고 다시 시도해주세요."
- ❌ "오류가 발생했습니다."

### 2.2 효율성 (Efficiency)

**최소한의 클릭으로 목표를 달성할 수 있어야 합니다.**

- 자주 사용하는 기능은 빠른 접근 제공 (FAB, 단축키)
- 불필요한 단계 제거
- 자동 완성 및 제안 기능 활용
- 키보드 단축키 지원

**예시**:
- Ctrl+N: 새 회의 예약
- Ctrl+S: 회의록 저장
- Ctrl+F: 검색

### 2.3 일관성 (Consistency)

**동일한 패턴과 예측 가능한 동작을 유지해야 합니다.**

- 동일한 기능은 동일한 아이콘과 레이블 사용
- 색상, 타이포그래피, 간격의 일관된 적용
- 네비게이션 구조 일관성 유지
- 브랜드 아이덴티티 유지

### 2.4 피드백 (Feedback)

**모든 액션에 즉각적이고 명확한 피드백을 제공해야 합니다.**

- 버튼 클릭 시 시각적 피드백 (호버, 액티브 상태)
- 로딩 상태 명확히 표시 (스켈레톤 UI, 스피너)
- 성공/실패 토스트 알림
- 실시간 저장 상태 표시 ("저장됨", "저장 중...")

### 2.5 접근성 (Accessibility)

**모든 사용자가 서비스를 쉽게 이용할 수 있어야 합니다.**

- WCAG 2.1 Level AA 준수
- 키보드 네비게이션 지원
- 스크린 리더 호환
- 충분한 색상 대비 (4.5:1 이상)
- 터치 영역 최소 44x44px

### 2.6 협업 중심 (Collaboration-First)

**실시간 협업이 핵심 경험이 되어야 합니다.**

- 다른 사용자의 활동을 명확히 표시 (커서, 아바타)
- 실시간 변경 사항 즉시 반영
- 충돌 방지 및 해결 메커니즘
- 버전 관리 및 변경 이력 추적

---

## 3. 컬러 시스템

### 3.1 Primary Color (주요 액션, 브랜드)

**Teal/Emerald** - 혁신, 성장, 활력을 상징

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Primary-Light | `#4DFFDB` | rgb(77, 255, 219) | 호버, 비활성화 상태 |
| **Primary-Main** | **`#00D9B1`** | **rgb(0, 217, 177)** | **주요 버튼, 링크, 강조** |
| Primary-Dark | `#00A88A` | rgb(0, 168, 138) | 눌림 상태, 강조 |

**사용 예시**:
- Primary 버튼 배경
- 링크 텍스트
- 체크박스, 라디오 버튼 선택 상태
- 진행률 바
- FAB (Floating Action Button)

### 3.2 Secondary Color (보조, 협업 강조)

**Indigo** - 협업, 신뢰, 전문성을 상징

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Secondary-Light | `#A5B4FC` | rgb(165, 180, 252) | 배경, 비활성화 |
| **Secondary-Main** | **`#6366F1`** | **rgb(99, 102, 241)** | **보조 버튼, 협업 요소** |
| Secondary-Dark | `#4F46E5` | rgb(79, 70, 229) | 강조 |

**사용 예시**:
- 협업 인디케이터 (다른 사용자 커서)
- 보조 버튼
- 배지 (검증 중 상태)
- 알림 아이콘

### 3.3 Semantic Colors (상태 표현)

#### Success (성공, 완료)

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Success-Light | `#6EE7B7` | rgb(110, 231, 183) | 배경 |
| **Success-Main** | **`#10B981`** | **rgb(16, 185, 129)** | **완료, 검증 완료** |
| Success-Dark | `#059669` | rgb(5, 150, 105) | 강조 |

#### Warning (경고, 주의)

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Warning-Light | `#FCD34D` | rgb(252, 211, 77) | 배경 |
| **Warning-Main** | **`#F59E0B`** | **rgb(245, 158, 11)** | **경고, 작성 중** |
| Warning-Dark | `#D97706` | rgb(217, 119, 6) | 강조 |

#### Error (오류, 실패)

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Error-Light | `#FCA5A5` | rgb(252, 165, 165) | 배경 |
| **Error-Main** | **`#EF4444`** | **rgb(239, 68, 68)** | **오류, 긴급** |
| Error-Dark | `#DC2626` | rgb(220, 38, 38) | 강조 |

#### Info (정보, 알림)

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Info-Light | `#93C5FD` | rgb(147, 197, 253) | 배경 |
| **Info-Main** | **`#3B82F6`** | **rgb(59, 130, 246)** | **정보, 알림** |
| Info-Dark | `#2563EB` | rgb(37, 99, 235) | 강조 |

### 3.4 Neutral Colors (배경, 텍스트, 테두리)

| 이름 | HEX | RGB | 사용처 |
|------|-----|-----|--------|
| Gray-50 | `#F9FAFB` | rgb(249, 250, 251) | 페이지 배경 |
| Gray-100 | `#F3F4F6` | rgb(243, 244, 246) | 카드 배경, 호버 |
| Gray-200 | `#E5E7EB` | rgb(229, 231, 235) | 테두리 |
| Gray-300 | `#D1D5DB` | rgb(209, 213, 219) | 비활성화 테두리 |
| Gray-400 | `#9CA3AF` | rgb(156, 163, 175) | 플레이스홀더 |
| Gray-500 | `#6B7280` | rgb(107, 114, 128) | 보조 텍스트 |
| Gray-600 | `#4B5563` | rgb(75, 85, 99) | 본문 텍스트 |
| Gray-700 | `#374151` | rgb(55, 65, 81) | 제목 |
| Gray-800 | `#1F2937` | rgb(31, 41, 55) | 강조 제목 |
| Gray-900 | `#111827` | rgb(17, 24, 39) | 최고 강조 |
| White | `#FFFFFF` | rgb(255, 255, 255) | 카드, 모달 배경 |
| Black | `#000000` | rgb(0, 0, 0) | 절대 검정 (거의 사용 안 함) |

### 3.5 다크모드 (선택적)

다크모드를 지원하는 경우 다음 색상을 사용합니다.

| 요소 | 라이트모드 | 다크모드 |
|------|-----------|---------|
| 페이지 배경 | Gray-50 | Gray-900 |
| 카드 배경 | White | Gray-800 |
| 본문 텍스트 | Gray-600 | Gray-100 |
| 제목 | Gray-900 | Gray-50 |
| 테두리 | Gray-200 | Gray-700 |
| Primary | #00D9B1 | #22D3B0 (밝기 조정) |

### 3.6 색상 사용 가이드

#### 텍스트 색상

- **제목**: Gray-900 (라이트), Gray-50 (다크)
- **본문**: Gray-600 (라이트), Gray-100 (다크)
- **보조 텍스트**: Gray-500
- **플레이스홀더**: Gray-400
- **링크**: Primary-Main (호버 시 Primary-Dark)
- **에러 텍스트**: Error-Main

#### 배경 색상

- **페이지**: Gray-50 (라이트), Gray-900 (다크)
- **카드**: White (라이트), Gray-800 (다크)
- **호버**: Gray-100
- **선택**: Primary-Light (투명도 20%)

#### 테두리 색상

- **기본**: Gray-200
- **호버**: Gray-300
- **포커스**: Primary-Main (2px)
- **에러**: Error-Main

---

## 4. 타이포그래피

### 4.1 폰트 패밀리

#### Primary Font (본문 및 UI)

**한글**: Pretendard
- 깔끔한 고딕 계열
- 뛰어난 가독성
- 다양한 굵기 지원 (100~900)
- 시스템 폰트와 유사한 렌더링

**영문/숫자**: Inter
- 웹 환경 최적화
- 명확한 문자 구분 (l, I, 1 등)
- Pretendard와 조화로운 조합

**폰트 스택**:
```css
font-family: 'Pretendard', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Apple SD Gothic Neo', sans-serif;
```

#### Monospace Font (코드, 데이터)

**Fira Code, Consolas**
- 코드 스니펫
- API 응답
- 로그, 에러 메시지

**폰트 스택**:
```css
font-family: 'Fira Code', 'Consolas', 'Monaco', 'Courier New', monospace;
```

### 4.2 폰트 크기 스케일

**1.25 배율 기반**

| 레벨 | 이름 | 크기 (px / rem) | 사용처 |
|------|------|----------------|--------|
| 1 | Display | 48px / 3rem | 랜딩 페이지 메인 제목 |
| 2 | H1 | 36px / 2.25rem | 페이지 제목 |
| 3 | H2 | 30px / 1.875rem | 주요 섹션 제목 |
| 4 | H3 | 24px / 1.5rem | 서브 섹션 제목 |
| 5 | H4 | 20px / 1.25rem | 카드 제목, 작은 섹션 |
| 6 | Body-Large | 18px / 1.125rem | 강조 본문, 리드 텍스트 |
| 7 | **Body** | **16px / 1rem** | **기본 본문 (기준점)** |
| 8 | Body-Small | 14px / 0.875rem | 보조 정보, 캡션 |
| 9 | Caption | 12px / 0.75rem | 작은 라벨, 타임스탬프 |

### 4.3 폰트 굵기 (Font Weight)

| 레벨 | 값 | 사용처 |
|------|---|--------|
| Light | 300 | 보조 정보, 긴 본문 (선택적) |
| **Regular** | **400** | **기본 본문** |
| Medium | 500 | 강조 본문, 버튼 텍스트 |
| SemiBold | 600 | 제목 (H3, H4), 중요 정보 |
| Bold | 700 | 큰 제목 (H1, H2), 최고 강조 |

### 4.4 행간 (Line Height)

| 이름 | 값 | 사용처 |
|------|---|--------|
| Tight | 1.25 | 큰 제목 (Display, H1, H2) |
| **Normal** | **1.5** | **본문 텍스트 (기본)** |
| Relaxed | 1.75 | 긴 본문, 읽기 편안함 필요 시 |

### 4.5 자간 (Letter Spacing)

| 이름 | 값 | 사용처 |
|------|---|--------|
| Tight | -0.02em | 큰 제목 (Display, H1) |
| **Normal** | **0** | **본문 (기본)** |
| Wide | 0.02em | 작은 캡션, 레이블 (대문자) |

### 4.6 텍스트 스타일 예시

#### Display
```css
font-size: 48px;
font-weight: 700;
line-height: 1.25;
letter-spacing: -0.02em;
```

#### H1
```css
font-size: 36px;
font-weight: 700;
line-height: 1.25;
letter-spacing: -0.02em;
```

#### H2
```css
font-size: 30px;
font-weight: 600;
line-height: 1.25;
letter-spacing: 0;
```

#### H3
```css
font-size: 24px;
font-weight: 600;
line-height: 1.5;
letter-spacing: 0;
```

#### Body (기본)
```css
font-size: 16px;
font-weight: 400;
line-height: 1.5;
letter-spacing: 0;
```

#### Caption
```css
font-size: 12px;
font-weight: 400;
line-height: 1.5;
letter-spacing: 0.02em;
```

---

## 5. 간격 시스템

### 5.1 기본 단위

**8px 기반 시스템**

모든 간격은 8의 배수를 사용하여 일관성과 시각적 리듬을 유지합니다.

### 5.2 스케일

| 레벨 | 값 (px / rem) | 사용처 |
|------|--------------|--------|
| 0 | 0px / 0 | 간격 없음 |
| 1 | 4px / 0.25rem | 최소 간격 (아이콘-텍스트) |
| 2 | 8px / 0.5rem | 작은 간격 (인라인 요소) |
| 3 | 12px / 0.75rem | 밀접한 요소 (버튼 내부) |
| **4** | **16px / 1rem** | **기본 간격** |
| 5 | 20px / 1.25rem | 적당한 간격 |
| 6 | 24px / 1.5rem | 컴포넌트 간 |
| 8 | 32px / 2rem | 섹션 내부 |
| 10 | 40px / 2.5rem | 섹션 간 |
| 12 | 48px / 3rem | 큰 섹션 간 |
| 16 | 64px / 4rem | 페이지 여백 |
| 20 | 80px / 5rem | 대형 섹션 |

### 5.3 컴포넌트별 간격

#### 버튼
- **패딩**: 12px (상하) × 24px (좌우) - 중형
- **패딩 (소형)**: 8px (상하) × 16px (좌우)
- **패딩 (대형)**: 16px (상하) × 32px (좌우)
- **아이콘-텍스트 간격**: 8px

#### 입력 필드
- **패딩**: 12px (상하) × 16px (좌우)
- **레이블-필드 간격**: 8px

#### 카드
- **패딩**: 24px
- **카드 간 간격**: 16px (그리드), 24px (리스트)

#### 모달
- **패딩**: 32px
- **헤더-본문 간격**: 24px
- **본문-푸터 간격**: 32px

#### 페이지 여백
- **데스크탑**: 64px (좌우)
- **태블릿**: 32px (좌우)
- **모바일**: 24px (좌우)

### 5.4 컨테이너 최대 너비

| 크기 | 최대 너비 | 사용처 |
|------|---------|--------|
| Small | 640px | 폼, 로그인 화면 |
| Medium | 768px | 템플릿 선택 |
| Large | 1024px | 회의 예약 |
| XLarge | 1280px | 대시보드 |
| 2XLarge | 1536px | 회의 진행 (에디터) |
| Full | 100% | 풀 레이아웃 |

---

## 6. 컴포넌트 스타일

### 6.1 버튼 (Button)

#### Primary Button (주요 액션)

**스타일**:
- 배경: Primary-Main (#00D9B1)
- 텍스트: White
- 패딩: 12px (상하) × 24px (좌우)
- 테두리 반경: 8px
- 폰트: Medium (500), 16px
- 그림자: 없음 (기본), 0 2px 4px rgba(0, 0, 0, 0.1) (호버)

**상태**:
- **Hover**: 배경 Primary-Light + transform: translateY(-1px) + 그림자 증가
- **Active**: 배경 Primary-Dark + transform: scale(0.98)
- **Disabled**: 배경 Gray-300 + 텍스트 Gray-500 + 커서 not-allowed

**코드 예시**:
```css
.btn-primary {
  background-color: #00D9B1;
  color: white;
  padding: 12px 24px;
  border-radius: 8px;
  font-weight: 500;
  font-size: 16px;
  transition: all 150ms ease-out;
}

.btn-primary:hover {
  background-color: #4DFFDB;
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.btn-primary:active {
  background-color: #00A88A;
  transform: scale(0.98);
}

.btn-primary:disabled {
  background-color: #D1D5DB;
  color: #6B7280;
  cursor: not-allowed;
}
```

#### Secondary Button (보조 액션)

**스타일**:
- 배경: Transparent
- 텍스트: Primary-Main
- 테두리: 1px solid Primary-Main
- 패딩: 12px × 24px
- 테두리 반경: 8px

**상태**:
- **Hover**: 배경 Primary-Main (투명도 10%)
- **Active**: 배경 Primary-Main (투명도 20%)
- **Disabled**: 테두리 Gray-300 + 텍스트 Gray-400

#### Text Button (덜 중요한 액션)

**스타일**:
- 배경: Transparent
- 텍스트: Gray-700
- 패딩: 8px × 16px
- 테두리 반경: 8px

**상태**:
- **Hover**: 배경 Gray-100
- **Active**: 배경 Gray-200

#### Icon Button

**스타일**:
- 크기: 40×40px (중형), 32×32px (소형), 48×48px (대형)
- 테두리 반경: 50% (원형) 또는 8px (사각형)
- 아이콘 크기: 20px (중형), 16px (소형), 24px (대형)
- 배경: Transparent

**상태**:
- **Hover**: 배경 Gray-100
- **Active**: 배경 Gray-200

#### Floating Action Button (FAB)

**스타일**:
- 크기: 56×56px
- 테두리 반경: 50% (완전 원형)
- 배경: Primary-Main
- 아이콘: White, 24px
- 그림자: 0 4px 12px rgba(0, 0, 0, 0.15)
- 위치: 우측 하단 고정 (16px 여백)

**상태**:
- **Hover**: 그림자 0 6px 16px rgba(0, 0, 0, 0.2) + transform: translateY(-2px)
- **Active**: transform: scale(0.95)

### 6.2 입력 필드 (Input Field)

#### Text Input

**스타일**:
- 높이: 48px
- 패딩: 12px (상하) × 16px (좌우)
- 테두리: 1px solid Gray-300
- 테두리 반경: 8px
- 배경: White
- 폰트: Regular, 16px
- 플레이스홀더: Gray-400

**상태**:
- **Focus**: 테두리 Primary-Main 2px + outline 4px Primary-Main (투명도 20%)
- **Error**: 테두리 Error-Main + 하단 에러 메시지 (Error-Main, 14px)
- **Disabled**: 배경 Gray-100 + 텍스트 Gray-400 + 커서 not-allowed
- **Success**: 테두리 Success-Main (선택적)

**코드 예시**:
```css
.input {
  height: 48px;
  padding: 12px 16px;
  border: 1px solid #D1D5DB;
  border-radius: 8px;
  font-size: 16px;
  transition: all 150ms ease-out;
}

.input:focus {
  border-color: #00D9B1;
  border-width: 2px;
  outline: 4px solid rgba(0, 217, 177, 0.2);
}

.input.error {
  border-color: #EF4444;
}

.input:disabled {
  background-color: #F3F4F6;
  color: #9CA3AF;
  cursor: not-allowed;
}
```

#### Textarea

**스타일**:
- 최소 높이: 120px
- 패딩: 12px × 16px
- 나머지는 Text Input과 동일
- resize: vertical (세로 크기 조절 가능)

#### Select / Dropdown

**스타일**:
- Input과 동일
- 우측 아이콘: Chevron Down, 16px, Gray-500

### 6.3 카드 (Card)

**스타일**:
- 배경: White
- 테두리: 1px solid Gray-200 (선택적, 없을 수도 있음)
- 테두리 반경: 12px
- 패딩: 24px
- 그림자: 0 1px 3px rgba(0, 0, 0, 0.1) (기본)

**상태 (인터랙티브 카드)**:
- **Hover**: 그림자 0 4px 12px rgba(0, 0, 0, 0.15) + transform: translateY(-2px)
- **Active**: 그림자 0 1px 2px rgba(0, 0, 0, 0.1) + transform: scale(0.99)

**코드 예시**:
```css
.card {
  background-color: white;
  border: 1px solid #E5E7EB;
  border-radius: 12px;
  padding: 24px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  transition: all 200ms ease-out;
}

.card.interactive:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  transform: translateY(-2px);
}
```

### 6.4 모달 (Modal)

**스타일**:
- 배경: White
- 테두리 반경: 16px
- 패딩: 32px
- 최대 너비: 600px (중형), 800px (대형), 480px (소형)
- 그림자: 0 20px 25px rgba(0, 0, 0, 0.15)

**백드롭 (Backdrop)**:
- 배경: rgba(0, 0, 0, 0.5)
- 클릭 시 모달 닫기 (선택적)

**애니메이션**:
- 등장: Fade In (200ms) + Scale (0.95 → 1.0)
- 사라짐: Fade Out (150ms) + Scale (1.0 → 0.95)

### 6.5 토스트 알림 (Toast)

**스타일**:
- 배경: White
- 테두리 반경: 8px
- 패딩: 16px × 20px
- 최대 너비: 400px
- 그림자: 0 4px 12px rgba(0, 0, 0, 0.15)
- 위치: 우측 상단 (16px 여백)

**타입별 색상**:
- **Success**: 좌측 테두리 4px Success-Main + Success 아이콘
- **Error**: 좌측 테두리 4px Error-Main + Error 아이콘
- **Warning**: 좌측 테두리 4px Warning-Main + Warning 아이콘
- **Info**: 좌측 테두리 4px Info-Main + Info 아이콘

**동작**:
- 자동 사라짐: 4초 후
- 닫기 버튼: 우측 상단 X 아이콘
- 애니메이션: 우측에서 슬라이드 인

### 6.6 배지 (Badge)

**스타일**:
- 패딩: 4px (상하) × 12px (좌우)
- 테두리 반경: 12px (완전 둥근 형태)
- 폰트: Medium, 12px

**타입별 색상**:
- **Primary**: 배경 Primary-Light, 텍스트 Primary-Dark
- **Success**: 배경 Success-Light, 텍스트 Success-Dark
- **Warning**: 배경 Warning-Light, 텍스트 Warning-Dark
- **Error**: 배경 Error-Light, 텍스트 Error-Dark
- **Neutral**: 배경 Gray-200, 텍스트 Gray-700

**사용 예시**:
- 상태 표시: "작성 중", "검증 중", "확정됨"
- 카운트: "3개의 알림", "5명 참석"

---

## 7. 반응형 브레이크포인트

### 7.1 브레이크포인트 정의

| 디바이스 | 범위 | 레이아웃 | 주요 조정 |
|---------|------|---------|----------|
| **Mobile** | 320px ~ 767px | 단일 컬럼 | 햄버거 메뉴, 하단 탭, 스택 레이아웃 |
| **Tablet** | 768px ~ 1023px | 2단 레이아웃 | 토글 사이드바, 터치 최적화 |
| **Desktop** | 1024px ~ 1439px | 3단 레이아웃 | 고정 사이드바, 키보드 단축키 |
| **Large Desktop** | 1440px 이상 | 확장 레이아웃 | 더 넓은 중앙 패널, 4단 가능 |

### 7.2 디바이스별 UI 조정

#### Mobile (320px ~ 767px)

**네비게이션**:
- 햄버거 메뉴로 사이드바 숨김
- 하단 탭 네비게이션 (대시보드, 회의, Todo, 더보기)
- 상단 헤더 고정

**레이아웃**:
- 1단 스택 레이아웃
- 카드/위젯을 세로로 배치
- 패딩 감소 (24px → 16px)

**인터랙션**:
- 최소 터치 영역: 44×44px
- 버튼 크기 증가
- 스와이프 제스처 지원

**05-회의진행 화면**:
- 탭으로 패널 전환 (회의록 / 참석자 / AI 제안 / 용어 설명)
- 툴바를 하단 고정 (터치 용이성)

**09-Todo관리 화면**:
- 칸반 보드 대신 리스트 뷰 권장
- 상태 변경은 드롭다운으로

#### Tablet (768px ~ 1023px)

**네비게이션**:
- 사이드바 토글 가능 (기본 숨김)
- 상단 헤더에 메뉴 아이콘

**레이아웃**:
- 2단 그리드 레이아웃 (2×2 또는 2×3)
- 적절한 여백 유지

**05-회의진행 화면**:
- 2단 레이아웃 (에디터 + AI 제안 패널)
- 참석자 목록은 드로어로 표시

**터치 최적화**:
- 버튼 크기: 최소 44×44px
- 간격: 최소 8px

#### Desktop (1024px 이상)

**네비게이션**:
- 전체 사이드바 항상 표시
- 호버 효과 및 툴팁

**레이아웃**:
- 3단 그리드 레이아웃 (3×2)
- 더 많은 위젯 동시 표시

**05-회의진행 화면**:
- 3단 레이아웃 (참석자 + 에디터 + AI 제안)
- 모든 패널 동시 표시

**키보드 단축키**:
- Ctrl+N: 새 회의
- Ctrl+S: 저장
- Ctrl+F: 검색
- Ctrl+/: 단축키 가이드

### 7.3 미디어 쿼리 예시

```css
/* Mobile First 접근 */
.container {
  padding: 16px;
}

/* Tablet */
@media (min-width: 768px) {
  .container {
    padding: 32px;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  .container {
    padding: 64px;
  }
}

/* Large Desktop */
@media (min-width: 1440px) {
  .container {
    max-width: 1536px;
    margin: 0 auto;
  }
}
```

---

## 8. 회의록 서비스 특화 컴포넌트

### 8.1 실시간 협업 인디케이터

#### 사용자 커서

**스타일**:
- 사용자별 색상 코드:
  - User 1: Primary-Main (#00D9B1)
  - User 2: Secondary-Main (#6366F1)
  - User 3: Warning-Main (#F59E0B)
  - User 4: Info-Main (#3B82F6)
  - User 5: Error-Main (#EF4444)
- 커서 크기: 2px (너비) × 20px (높이)
- 커서 상단에 아바타 + 이름 레이블
- 레이블 배경: 사용자 색상, 텍스트: White
- 레이블 패딩: 4px × 8px, 테두리 반경: 4px

#### 편집 중 하이라이트

**스타일**:
- 배경: 사용자 색상 (투명도 20%)
- 지속 시간: 사용자가 편집하는 동안 유지
- 애니메이션: 부드러운 페이드인

#### 변경 하이라이트

**스타일**:
- 배경: Warning-Light (노란색)
- 지속 시간: 3초
- 애니메이션: 3초 동안 페이드아웃

### 8.2 상태 배지

#### 작성 중

**스타일**:
- 배경: Warning-Light (#FCD34D)
- 텍스트: Warning-Dark (#D97706)
- 아이콘: Edit 아이콘 (선택적)

#### 검증 중

**스타일**:
- 배경: Info-Light (#93C5FD)
- 텍스트: Info-Dark (#2563EB)
- 아이콘: Clock 아이콘 (선택적)

#### 확정됨

**스타일**:
- 배경: Success-Light (#6EE7B7)
- 텍스트: Success-Dark (#059669)
- 아이콘: Check 아이콘 (선택적)

### 8.3 전문용어 하이라이트

**스타일**:
- 밑줄: 2px dotted Primary-Main
- 커서: pointer

**호버 상태**:
- 툴팁 표시
  - 배경: Gray-800
  - 텍스트: White
  - 패딩: 8px × 12px
  - 테두리 반경: 6px
  - 최대 너비: 300px
  - 화살표 표시

**클릭 상태**:
- 우측 패널의 "용어 설명" 탭으로 전환
- 해당 용어 상세 설명 표시

### 8.4 AI 제안 영역

**스타일**:
- 배경: Gray-50
- 테두리: 1px dashed Primary-Main
- 테두리 반경: 8px
- 패딩: 16px
- 아이콘: AI Sparkle 아이콘 (Primary-Main)

**액션 버튼**:
- 적용: Primary 버튼 (소형, 패딩 8px × 16px)
- 무시: Text 버튼

**애니메이션**:
- 등장: 페이드인 + 약간의 상승 (translateY)
- 업데이트: 부드러운 전환 (200ms)

### 8.5 Todo 카드

**레이아웃**:
- 카드 형태
- 패딩: 16px
- 테두리 반경: 8px
- 그림자: 0 1px 3px rgba(0, 0, 0, 0.1)

**우선순위 표시**:
- 높음: 좌측 테두리 4px Error-Main + Error 점 (8px 원)
- 보통: 테두리 없음, Gray 점
- 낮음: 표시 없음

**진행률 바**:
- 높이: 4px
- 배경: Gray-200
- 채워진 부분: Primary-Main
- 테두리 반경: 2px
- 위치: 하단

**마감일 표시**:
- D-day 형식: "D-3", "오늘", "D+2 (지남)"
- 색상:
  - 지남: Error-Main
  - 오늘: Warning-Main
  - 여유: Gray-500

**드래그 핸들**:
- 아이콘: 점 6개 (2×3)
- 색상: Gray-400
- 위치: 좌측 상단

**호버 상태**:
- 그림자 증가
- 드래그 핸들 색상 변경 (Gray-600)

### 8.6 타임라인

**스타일**:
- 세로 라인: 2px solid Gray-300
- 위치: 좌측 고정

**이벤트 점**:
- 크기: 12px 원
- 배경: Primary-Main
- 테두리: 2px solid White
- 위치: 라인 중앙

**타임스탬프**:
- 폰트: Caption (12px), Gray-500
- 위치: 이벤트 점 우측

**이벤트 내용**:
- 폰트: Body-Small (14px), Gray-700
- 위치: 타임스탬프 하단

---

## 9. 인터랙션 패턴

### 9.1 버튼 인터랙션

**Hover**:
```css
transition: all 150ms ease-out;
transform: translateY(-1px);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
```

**Active (클릭)**:
```css
transform: scale(0.98);
```

**Disabled**:
```css
cursor: not-allowed;
opacity: 0.6;
```

### 9.2 카드 인터랙션 (인터랙티브 카드)

**Hover**:
```css
transition: all 200ms ease-out;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
```

**클릭**:
```css
transform: scale(0.99);
```

### 9.3 모달 애니메이션

**등장**:
```css
/* Backdrop */
opacity: 0 → 1;
transition: opacity 200ms ease-out;

/* Modal */
opacity: 0 → 1;
transform: scale(0.95) → scale(1.0);
transition: all 200ms ease-out;
```

**사라짐**:
```css
opacity: 1 → 0;
transform: scale(1.0) → scale(0.95);
transition: all 150ms ease-in;
```

### 9.4 토스트 알림 애니메이션

**등장**:
```css
transform: translateX(400px) → translateX(0);
opacity: 0 → 1;
transition: all 200ms ease-out;
```

**사라짐**:
```css
transform: translateX(0) → translateX(400px);
opacity: 1 → 0;
transition: all 150ms ease-in;
```

**자동 사라짐**: 4초 후

### 9.5 로딩 상태

#### 스켈레톤 UI

**스타일**:
- 배경: Gray-200
- 테두리 반경: 4px
- 애니메이션: 펄스 (밝기 변화)

```css
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.skeleton {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
```

#### 스피너

**스타일**:
- 색상: Primary-Main
- 크기: 24px (소형), 40px (중형), 56px (대형)
- 애니메이션: 회전

```css
@keyframes spin {
  to { transform: rotate(360deg); }
}

.spinner {
  animation: spin 1s linear infinite;
}
```

### 9.6 드래그 앤 드롭

**드래그 시작**:
```css
opacity: 0.5;
cursor: grabbing;
```

**드롭 영역 (유효)**:
```css
border: 2px dashed #00D9B1;
background-color: rgba(0, 217, 177, 0.05);
```

**드롭 영역 (무효)**:
```css
border: 2px dashed #EF4444;
background-color: rgba(239, 68, 68, 0.05);
```

**드롭 완료**:
```css
transition: all 300ms ease-out;
transform: translate(newX, newY);
```

### 9.7 포커스 스타일

**인풋/버튼 포커스**:
```css
outline: 4px solid rgba(0, 217, 177, 0.2);
outline-offset: 0;
border-color: #00D9B1;
```

**키보드 네비게이션 포커스**:
```css
/* 마우스 클릭 시에는 outline 숨김 */
.js-focus-visible :focus:not(.focus-visible) {
  outline: none;
}

/* 키보드 탐색 시에만 outline 표시 */
.focus-visible {
  outline: 2px solid #00D9B1;
  outline-offset: 2px;
}
```

### 9.8 페이지 전환 애니메이션

**페이드 전환**:
```css
/* 나가는 페이지 */
opacity: 1 → 0;
transition: opacity 150ms ease-out;

/* 들어오는 페이지 */
opacity: 0 → 1;
transition: opacity 200ms ease-in;
```

---

## 10. 변경 이력

| 버전 | 날짜 | 작성자 | 변경 내용 |
|------|------|--------|----------|
| 1.0 | 2025-10-15 | 유진 | 초안 작성 - 레퍼런스 클로바노트 기반 스타일 가이드 설계 완료 |

---

## 부록

### A. 색상 접근성 체크리스트

- [ ] Primary-Main (#00D9B1) + White: 대비율 3.5:1 (AA Large) ✅
- [ ] Gray-600 (#4B5563) + White: 대비율 8.6:1 (AAA) ✅
- [ ] Primary-Main + Gray-900: 대비율 4.8:1 (AA) ✅
- [ ] 모든 상태 색상 (Success, Warning, Error, Info) + White: AA 이상 ✅

### B. 디자인 도구 및 에셋

**권장 디자인 도구**:
- Figma (프로토타입 및 디자인 시스템)
- Adobe XD (대안)

**아이콘 라이브러리**:
- Heroicons (추천)
- Feather Icons
- Lucide Icons

**일러스트레이션**:
- unDraw (무료, 색상 커스터마이징 가능)
- Storyset (Freepik)
- 자체 제작 (브랜드 일관성)

### C. 프론트엔드 구현 권장사항

**CSS 프레임워크**:
- Tailwind CSS (유틸리티 우선, 빠른 개발)
- Emotion / styled-components (CSS-in-JS)

**컴포넌트 라이브러리**:
- Headless UI (접근성 우수)
- Radix UI (무스타일 프리미티브)
- 자체 제작 (완전한 커스터마이징)

**애니메이션**:
- Framer Motion (React)
- GSAP (고급 애니메이션)
- CSS Transitions (단순 애니메이션)

### D. 참고 자료

- **WCAG 2.1 가이드라인**: https://www.w3.org/WAI/WCAG21/quickref/
- **클로바노트**: https://clovanote.naver.com/
- **Pretendard 폰트**: https://cactus.tistory.com/306
- **Tailwind CSS 컬러 팔레트**: https://tailwindcss.com/docs/customizing-colors

---

**문서 끝**
