# 회의록 작성 서비스 - 스타일 가이드 ## 1. 디자인 시스템 개요 ### 1.1 디자인 철학 - **Mobile First**: 모바일 환경을 우선으로 설계하고 점진적으로 향상 - **접근성 우선**: WCAG 2.1 Level AA 준수 - **일관성**: 모든 화면에서 동일한 시각적 언어 사용 --- ## 2. 색상 팔레트 ### 2.1 Primary Colors ```css --primary: #0066CC; /* 주요 액션 버튼, 링크 */ --primary-dark: #004A99; /* Hover, Active 상태 */ --primary-light: #E6F2FF; /* 배경, 하이라이트 */ ``` ### 2.2 Text Colors ```css --text-primary: #1A1A1A; /* 제목, 본문 (15:1 대비) */ --text-secondary: #666666; /* 부가 정보 (5:1 대비) */ --text-disabled: #999999; /* 비활성 텍스트 */ --text-inverse: #FFFFFF; /* 어두운 배경의 텍스트 */ ``` ### 2.3 Background Colors ```css --bg-white: #FFFFFF; /* 주요 배경 */ --bg-gray: #F5F5F5; /* 보조 배경 */ --bg-dark: #1A1A1A; /* 다크 모드 배경 */ ``` ### 2.4 Status Colors ```css --success: #0A7029; /* 성공, 완료 (4.5:1 대비) */ --error: #C41E3A; /* 오류, 위험 (4.5:1 대비) */ --warning: #856404; /* 경고, 주의 (4.5:1 대비) */ --info: #0066CC; /* 정보 */ ``` ### 2.5 Border & Shadow ```css --border-light: #E0E0E0; /* 기본 테두리 */ --border-medium: #CCCCCC; /* 강조 테두리 */ --shadow-sm: 0 1px 3px rgba(0,0,0,0.1); --shadow-md: 0 4px 6px rgba(0,0,0,0.1); --shadow-lg: 0 10px 15px rgba(0,0,0,0.1); ``` --- ## 3. 타이포그래피 ### 3.1 폰트 패밀리 ```css --font-primary: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --font-mono: "SF Mono", Monaco, "Cascadia Code", monospace; ``` ### 3.2 폰트 크기 ```css --font-xs: 0.75rem; /* 12px - 캡션, 레이블 */ --font-sm: 0.875rem; /* 14px - 본문, 입력 필드 */ --font-base: 1rem; /* 16px - 기본 본문 */ --font-lg: 1.125rem; /* 18px - 소제목 */ --font-xl: 1.25rem; /* 20px - 제목 */ --font-2xl: 1.5rem; /* 24px - 큰 제목 */ --font-3xl: 2rem; /* 32px - 페이지 제목 */ ``` ### 3.3 폰트 굵기 ```css --font-regular: 400; --font-medium: 500; --font-semibold: 600; --font-bold: 700; ``` ### 3.4 행간 ```css --leading-tight: 1.25; /* 제목 */ --leading-normal: 1.5; /* 본문 */ --leading-relaxed: 1.75; /* 긴 텍스트 */ ``` --- ## 4. 간격 시스템 ### 4.1 Spacing Scale ```css --space-1: 0.25rem; /* 4px */ --space-2: 0.5rem; /* 8px */ --space-3: 0.75rem; /* 12px */ --space-4: 1rem; /* 16px */ --space-5: 1.25rem; /* 20px */ --space-6: 1.5rem; /* 24px */ --space-8: 2rem; /* 32px */ --space-10: 2.5rem; /* 40px */ --space-12: 3rem; /* 48px */ --space-16: 4rem; /* 64px */ ``` ### 4.2 적용 규칙 - **컴포넌트 내부 패딩**: space-4 (16px) - **컴포넌트 간 간격**: space-6 (24px) - **섹션 간 간격**: space-8 (32px) - **페이지 여백**: space-4 (모바일), space-8 (데스크톱) --- ## 5. 레이아웃 ### 5.1 Breakpoints ```css /* Mobile First */ --breakpoint-sm: 640px; /* 작은 태블릿 */ --breakpoint-md: 768px; /* 태블릿 */ --breakpoint-lg: 1024px; /* 데스크톱 */ --breakpoint-xl: 1280px; /* 큰 데스크톱 */ ``` ### 5.2 Container ```css --container-mobile: 100%; --container-tablet: 720px; --container-desktop: 960px; --container-wide: 1200px; ``` ### 5.3 Grid System - **Mobile (< 768px)**: 1 column - **Tablet (768px - 1023px)**: 2 columns - **Desktop (≥ 1024px)**: 3 columns - **Gap**: 24px --- ## 6. 컴포넌트 스타일 ### 6.1 버튼 #### Primary Button ```css background: var(--primary); color: var(--text-inverse); padding: 12px 24px; border-radius: 8px; font-weight: var(--font-semibold); ``` **상태:** - Hover: `background: var(--primary-dark)` - Active: `transform: scale(0.98)` - Disabled: `opacity: 0.5; cursor: not-allowed` #### Secondary Button ```css background: transparent; color: var(--primary); border: 2px solid var(--primary); padding: 10px 22px; ``` #### Ghost Button ```css background: transparent; color: var(--text-primary); padding: 12px 24px; ``` ### 6.2 입력 필드 ```css border: 1px solid var(--border-light); border-radius: 8px; padding: 12px 16px; font-size: var(--font-sm); transition: border-color 0.2s; ``` **상태:** - Focus: `border-color: var(--primary); outline: 2px solid var(--primary-light)` - Error: `border-color: var(--error)` - Disabled: `background: var(--bg-gray); cursor: not-allowed` ### 6.3 카드 ```css background: var(--bg-white); border-radius: 12px; padding: var(--space-6); box-shadow: var(--shadow-sm); transition: box-shadow 0.3s; ``` **Hover:** ```css box-shadow: var(--shadow-md); transform: translateY(-2px); ``` ### 6.4 Badge/Chip ```css display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 16px; font-size: var(--font-xs); font-weight: var(--font-medium); ``` **변형:** - Success: `background: var(--success); color: white` - Error: `background: var(--error); color: white` - Info: `background: var(--primary-light); color: var(--primary)` --- ## 7. 아이콘 ### 7.1 아이콘 크기 ```css --icon-sm: 16px; /* 인라인 아이콘 */ --icon-md: 24px; /* 버튼, 입력 필드 */ --icon-lg: 32px; /* 큰 아이콘 */ --icon-xl: 48px; /* 일러스트 아이콘 */ ``` ### 7.2 아이콘 사용 원칙 - SVG 형식 사용 - `currentColor` 사용하여 텍스트 색상 상속 - 접근성을 위해 `aria-label` 또는 `sr-only` 텍스트 제공 --- ## 8. 애니메이션 ### 8.1 Transition Duration ```css --duration-fast: 150ms; /* Hover 효과 */ --duration-base: 200ms; /* 일반 전환 */ --duration-slow: 300ms; /* Modal, Drawer */ ``` ### 8.2 Easing Functions ```css --ease-in: cubic-bezier(0.4, 0, 1, 1); --ease-out: cubic-bezier(0, 0, 0.2, 1); --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); ``` ### 8.3 애니메이션 원칙 - 성능을 위해 `transform`과 `opacity`만 애니메이션 - `prefers-reduced-motion` 미디어 쿼리 지원 - 불필요한 애니메이션 지양 --- ## 9. 접근성 ### 9.1 색상 대비 - 일반 텍스트: 최소 4.5:1 - 큰 텍스트 (18pt+ 또는 14pt bold+): 최소 3:1 - UI 컴포넌트: 최소 3:1 ### 9.2 포커스 표시 ```css *:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; } ``` ### 9.3 터치 타겟 - 최소 크기: 44x44px - 간격: 최소 8px ### 9.4 스크린 리더 ```css .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } ``` --- ## 10. 다크 모드 ```css @media (prefers-color-scheme: dark) { :root { --bg-white: #1A1A1A; --bg-gray: #2A2A2A; --text-primary: #FFFFFF; --text-secondary: #CCCCCC; --border-light: #404040; --shadow-sm: 0 1px 3px rgba(0,0,0,0.3); } } ``` --- ## 11. 모바일 최적화 ### 11.1 터치 최적화 - 버튼/링크 최소 크기: 44x44px - 스와이프 제스처 지원 - Pull-to-refresh 지원 ### 11.2 성능 최적화 - 이미지 lazy loading - 코드 스플리팅 - CSS 최소화 - 시스템 폰트 우선 사용 --- ## 12. 컴포넌트 라이브러리 ### 12.1 공통 컴포넌트 1. **Header**: 페이지 상단 네비게이션 2. **Button**: Primary, Secondary, Ghost 3. **Input**: Text, Email, Password, Date, Time 4. **Card**: 정보 카드, 클릭 가능한 카드 5. **Badge**: 상태 표시 6. **Modal**: 팝업 다이얼로그 7. **Toast**: 알림 메시지 8. **Loading**: 로딩 스피너 9. **Empty State**: 빈 상태 일러스트 10. **Bottom Navigation**: 모바일 하단 네비게이션 ### 12.2 도메인 컴포넌트 1. **Meeting Card**: 회의 정보 카드 2. **Minutes Editor**: 회의록 편집기 3. **Todo Item**: Todo 항목 4. **Attendee Avatar**: 참석자 아바타 5. **Term Tooltip**: 전문용어 툴팁 --- ## 13. 사용 예시 ### 13.1 페이지 구조 ```html