# 회의록 작성 및 공유 개선 서비스 - 스타일 가이드 **버전**: 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 --- **문서 끝**