# 회의록 서비스 스타일 가이드 ## 1. 디자인 철학 ### 핵심 원칙 - **Mobile First**: 모바일 환경 우선 설계 - **깔끔한 미니멀리즘**: 정보의 명확한 계층 구조와 여백 활용 - **직관적 UX**: 사용자가 생각 없이 사용 가능한 인터페이스 - **일관성**: 모든 화면에서 동일한 디자인 패턴 적용 --- ## 2. 컬러 시스템 ### Primary Colors (주요 색상) ```css --primary: #4DD5A7; /* 민트 그린 - 메인 액션, CTA */ --primary-dark: #3DBD95; /* 민트 그린 (진하게) - 호버, 액티브 */ --primary-light: #E8F9F3; /* 민트 그린 (연하게) - 배경, 하이라이트 */ ``` ### Semantic Colors (의미 색상) ```css --success: #4DD5A7; /* 성공, 완료 */ --warning: #FFB74D; /* 경고, 임박 */ --error: #FF6B6B; /* 에러, 긴급 */ --info: #64B5F6; /* 정보, 알림 */ --ongoing: #FF9800; /* 진행 중 (주황) */ ``` ### Neutral Colors (중립 색상) ```css --gray-900: #212121; /* 제목, 강조 텍스트 */ --gray-700: #616161; /* 본문 텍스트 */ --gray-500: #9E9E9E; /* 보조 텍스트 */ --gray-300: #E0E0E0; /* 구분선, 테두리 */ --gray-100: #F5F5F5; /* 배경 (연한 회색) */ --white: #FFFFFF; /* 카드, 모달 배경 */ ``` ### 색상 사용 가이드 - **Primary**: 주요 액션 버튼, 활성 탭, FAB - **Success**: 완료 상태, 체크박스 체크됨 - **Warning**: 마감 임박 Todo, 경고 배지 - **Error**: 에러 메시지, 마감 지연 Todo - **Gray**: 텍스트, 구분선, 비활성 요소 --- ## 3. 타이포그래피 ### 폰트 패밀리 ```css --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", "Roboto", sans-serif; ``` ### 폰트 크기 (Mobile First) ```css /* Mobile (320px~768px) */ --font-h1: 24px; /* 페이지 제목 */ --font-h2: 20px; /* 섹션 제목 */ --font-h3: 18px; /* 서브 타이틀 */ --font-body: 16px; /* 본문 */ --font-small: 14px; /* 보조 정보 */ --font-caption: 12px; /* 캡션, 메타 정보 */ /* Tablet/Desktop (768px+) */ --font-h1-desktop: 32px; --font-h2-desktop: 24px; --font-h3-desktop: 20px; --font-body-desktop: 16px; ``` ### 폰트 굵기 ```css --font-weight-regular: 400; --font-weight-medium: 500; --font-weight-bold: 700; ``` ### 사용 예시 - **제목 (H1)**: font-size: 24px, font-weight: 700, color: --gray-900 - **본문 (Body)**: font-size: 16px, font-weight: 400, color: --gray-700, line-height: 1.6 - **보조 정보 (Small)**: font-size: 14px, font-weight: 400, color: --gray-500 --- ## 4. 간격 시스템 (Spacing) ### 기본 단위 (8px 그리드 시스템) ```css --space-xs: 4px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; --space-xl: 32px; --space-xxl: 48px; ``` ### 사용 가이드 - **컴포넌트 내부 패딩**: 16px (--space-md) - **카드 간격**: 16px (--space-md) - **섹션 간격**: 24px (--space-lg) - **페이지 여백**: 16px (Mobile), 24px (Tablet/Desktop) --- ## 5. 레이아웃 & 그리드 ### 브레이크포인트 ```css --breakpoint-mobile: 320px; --breakpoint-tablet: 768px; --breakpoint-desktop: 1024px; ``` ### 컨테이너 Max-Width ```css --container-mobile: 100%; --container-tablet: 768px; --container-desktop: 1200px; ``` ### 그리드 시스템 - **Mobile**: 4 columns (16px gutter) - **Tablet**: 8 columns (16px gutter) - **Desktop**: 12 columns (24px gutter) ### 2열 레이아웃 (회의 진행 화면) ```css /* Mobile: 단일 열 (스크롤 가능) */ .two-column-layout { display: flex; flex-direction: column; height: 100vh; } .editor-panel { flex: 1; padding: 16px; overflow-y: auto; } .info-panel { height: 50vh; border-top: 1px solid var(--gray-300); } /* Desktop: 2열 구조 (왼쪽 60-70%, 오른쪽 30-40%) */ @media (min-width: 768px) { .two-column-layout { flex-direction: row; } .editor-panel { flex: 0 0 65%; border-right: 1px solid var(--gray-300); } .info-panel { flex: 0 0 35%; height: 100vh; border-top: none; } } ``` **사용 시나리오**: - 회의 진행 화면 (05-회의진행.html) - 왼쪽: 텍스트 에디터 (툴바 + contentEditable 영역) - 오른쪽: 탭 패널 (참석자/AI 제안/용어 사전/관련 자료) --- ## 6. 카드 디자인 ### 카드 스타일 ```css .card { background: var(--white); border-radius: 12px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); padding: 16px; transition: box-shadow 0.2s ease; } .card:hover { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); } ``` ### 카드 변형 - **기본 카드**: 배경 흰색, 그림자 있음 - **강조 카드**: 배경 primary-light, 좌측 4px primary 보더 - **진행 중 카드**: 배경 흰색, 좌측 4px ongoing 보더 --- ## 7. 버튼 디자인 ### Primary Button (주요 액션) ```css .btn-primary { background: var(--primary); color: var(--white); padding: 12px 24px; border-radius: 8px; font-size: 16px; font-weight: 500; border: none; transition: background 0.2s ease; } .btn-primary:hover { background: var(--primary-dark); } ``` ### Secondary Button (보조 액션) ```css .btn-secondary { background: transparent; color: var(--primary); padding: 12px 24px; border-radius: 8px; font-size: 16px; font-weight: 500; border: 1px solid var(--primary); } .btn-secondary:hover { background: var(--primary-light); } ``` ### Ghost Button (최소 강조) ```css .btn-ghost { background: transparent; color: var(--gray-700); padding: 8px 16px; border-radius: 8px; font-size: 14px; border: none; } .btn-ghost:hover { background: var(--gray-100); } ``` ### FAB (Floating Action Button) ```css .fab { width: 56px; height: 56px; background: var(--primary); color: var(--white); border-radius: 50%; box-shadow: 0 4px 12px rgba(77, 213, 167, 0.4); position: fixed; bottom: 24px; right: 24px; } ``` --- ## 8. 배지 (Badges) ### 상태 배지 ```css /* 완료 */ .badge-complete { background: var(--success); color: var(--white); padding: 4px 8px; border-radius: 12px; font-size: 12px; } /* 진행중 */ .badge-ongoing { background: var(--ongoing); color: var(--white); padding: 4px 8px; border-radius: 12px; font-size: 12px; animation: pulse 1.5s ease-in-out infinite; } /* 예정 */ .badge-scheduled { background: var(--info); color: var(--white); padding: 4px 8px; border-radius: 12px; font-size: 12px; } /* 지연 */ .badge-overdue { background: var(--error); color: var(--white); padding: 4px 8px; border-radius: 12px; font-size: 12px; } ``` ### 우선순위 배지 ```css /* 높음 */ .badge-high { background: #FFEBEE; color: #D32F2F; border: 1px solid #EF9A9A; } /* 보통 */ .badge-medium { background: #FFF3E0; color: #F57C00; border: 1px solid #FFCC80; } /* 낮음 */ .badge-low { background: #E8F5E9; color: #388E3C; border: 1px solid #A5D6A7; } ``` ### D-day 배지 Todo 마감일 표시를 위한 D-day 배지 스타일입니다. ```css /* D-Day (오늘 마감) */ .badge-dday { background: #E8F5E9; color: #2E7D32; border: 1px solid #81C784; padding: 4px 8px; border-radius: 12px; font-size: 12px; } /* D-1 ~ D-3 (임박) */ .badge-warning { background: #FFF3E0; color: #F57C00; border: 1px solid #FFCC80; padding: 4px 8px; border-radius: 12px; font-size: 12px; } /* D-4 ~ D-7 (여유) */ .badge-primary { background: #E3F2FD; color: #1976D2; border: 1px solid #90CAF9; padding: 4px 8px; border-radius: 12px; font-size: 12px; } /* D-8+ (충분) */ .badge-secondary { background: #F5F5F5; color: #616161; border: 1px solid #E0E0E0; padding: 4px 8px; border-radius: 12px; font-size: 12px; } ``` **D-day 배지 색상 체계** - **지연 (D+N)**: `.badge-overdue` - 빨간색 배경, 흰색 글씨 - **오늘 (D-Day)**: `.badge-dday` - 연한 녹색 배경, 진한 녹색 글씨, 테두리 - **임박 (D-1~3)**: `.badge-warning` - 연한 주황 배경, 진한 주황 글씨, 테두리 - **여유 (D-4~7)**: `.badge-primary` - 연한 파랑 배경, 진한 파랑 글씨, 테두리 - **충분 (D-8+)**: `.badge-secondary` - 연한 회색 배경, 진한 회색 글씨, 테두리 --- ## 9. 아이콘 ### 아이콘 라이브러리 - **Material Icons** 또는 **Feather Icons** 권장 - 일관된 스타일 유지 (Outlined 또는 Rounded) ### 아이콘 크기 ```css --icon-sm: 16px; /* 인라인 아이콘 */ --icon-md: 24px; /* 기본 아이콘 */ --icon-lg: 32px; /* 강조 아이콘 */ ``` ### 주요 아이콘 매핑 - **회의**: 📅 calendar - **Todo**: ✅ check-circle - **녹음**: 🎙️ mic - **참석자**: 👤 user - **설정**: ⚙️ settings - **검색**: 🔍 search - **알림**: 🔔 bell - **링크**: 🔗 link --- ## 10. 네비게이션 ### 반응형 네비게이션 전략 - **Mobile (< 768px)**: 하단 네비게이션 바 (3개 메뉴) - **Desktop (≥ 768px)**: 왼쪽 사이드바 (240px 고정폭) ### 하단 네비게이션 (Mobile) ```css .bottom-nav { position: fixed; bottom: 0; left: 0; right: 0; height: 64px; background: var(--white); border-top: 1px solid var(--gray-300); box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08); display: flex; justify-content: space-around; z-index: 100; } .nav-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: var(--gray-500); font-size: 12px; cursor: pointer; transition: color 0.2s ease; } .nav-item.active { color: var(--primary); } .nav-item-icon { font-size: 24px; } /* Desktop에서 하단 네비게이션 숨김 */ @media (min-width: 768px) { .bottom-nav { display: none; } } ``` **메뉴 항목**: - 홈 (🏠) → 대시보드 - 회의록 (📋) → 회의록목록조회 - Todo (✅) → Todo관리 - 프로필 (👤) → 사용자 프로필 및 설정 ### 사이드바 네비게이션 (Desktop) ```css .sidebar { position: fixed; left: 0; top: 0; bottom: 0; width: 240px; background: var(--white); border-right: 1px solid var(--gray-300); display: none; flex-direction: column; z-index: 100; } @media (min-width: 768px) { .sidebar { display: flex; } .main-content { margin-left: 240px; } } /* 사이드바 로고 영역 */ .sidebar-logo { padding: 24px 16px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--gray-300); } .sidebar-logo-icon { width: 40px; height: 40px; background: var(--primary); color: var(--white); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; } .sidebar-logo-text { font-size: 18px; font-weight: 700; color: var(--gray-900); } /* 사이드바 메뉴 */ .sidebar-nav { flex: 1; padding: 16px 8px; overflow-y: auto; } .sidebar-nav-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; margin-bottom: 4px; border-radius: 8px; color: var(--gray-700); font-size: 16px; text-decoration: none; transition: all 0.2s ease; cursor: pointer; } .sidebar-nav-item:hover { background: var(--gray-100); } .sidebar-nav-item.active { background: var(--primary-light); color: var(--primary); font-weight: 500; } .sidebar-nav-icon { font-size: 20px; width: 24px; text-align: center; } /* 사이드바 사용자 정보 영역 */ .sidebar-user { padding: 16px; border-top: 1px solid var(--gray-300); display: flex; align-items: center; gap: 12px; } .sidebar-user-info { flex: 1; } .sidebar-user-name { font-size: 14px; font-weight: 500; color: var(--gray-900); } .sidebar-user-email { font-size: 12px; color: var(--gray-500); margin-top: 2px; } ``` **메뉴 항목**: - 📊 대시보드 (active) - 📋 회의 목록 → 회의록목록조회 - ✅ Todo 관리 → Todo관리 ### 탭 네비게이션 ```css .tab-nav { display: flex; border-bottom: 1px solid var(--gray-300); background: var(--white); } .tab { padding: 12px 16px; color: var(--gray-500); border-bottom: 2px solid transparent; background: transparent; font-size: 16px; font-weight: 400; cursor: pointer; transition: all 0.2s ease; } .tab:hover { color: var(--gray-700); } .tab.active { color: var(--primary); border-bottom: 2px solid var(--primary); font-weight: 500; } ``` **사용 예시**: - 회의록 상세 화면: 회의록 / 대시보드 (2개 탭) - 회의 진행 화면 (오른쪽 패널): 참석자 / AI 제안 / 용어 사전 / 관련 자료 (4개 탭) ### 우측 사이드바 탭 (회의 진행 화면) #### 레이아웃 ```css /* 메인 레이아웃 */ .main-layout { display: flex; gap: 16px; } .main-content { flex: 1; min-width: 0; } .right-sidebar { display: none; /* 모바일에서는 숨김 */ } @media (min-width: 768px) { .right-sidebar { display: block; width: 320px; flex-shrink: 0; border-left: 1px solid var(--gray-300); padding-left: 16px; } } ``` #### 사이드바 탭 스타일 ```css .sidebar-tabs { display: flex; border-bottom: 2px solid var(--gray-300); margin-bottom: 16px; overflow-x: auto; gap: 4px; } .sidebar-tab { flex: 1; padding: 8px 4px; background: transparent; border: none; cursor: pointer; font-size: 12px; font-weight: 500; color: var(--gray-500); transition: all 0.2s ease; border-bottom: 2px solid transparent; white-space: nowrap; text-align: center; } .sidebar-tab.active { color: var(--primary); border-bottom-color: var(--primary); } .sidebar-panel { display: none; } .sidebar-panel.active { display: block; animation: fadeIn 0.2s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } ``` #### 참석자 리스트 ```css .participant-item { display: flex; align-items: center; gap: 8px; padding: 8px; border-bottom: 1px solid var(--gray-100); } .participant-item:last-child { border-bottom: none; } .participant-status { font-size: 10px; color: var(--gray-500); } ``` #### AI 제안 카드 ```css .ai-suggestion-card { background: var(--primary-light); border: 1px dashed var(--primary); border-radius: 8px; padding: 8px; margin-bottom: 8px; } .ai-suggestion-title { display: flex; align-items: center; gap: 4px; font-size: 14px; font-weight: 700; margin-bottom: 4px; } .ai-suggestion-content { font-size: 12px; color: var(--gray-700); line-height: 1.4; margin-bottom: 8px; } .ai-suggestion-actions { display: flex; gap: 4px; } ``` #### 용어 사전 리스트 ```css .term-item { padding: 8px; border-radius: 4px; background: var(--white); border: 1px solid var(--gray-200); margin-bottom: 8px; cursor: pointer; transition: background 0.2s ease; } .term-item:hover { background: var(--gray-100); } .term-name { font-size: 14px; font-weight: 700; color: var(--gray-900); margin-bottom: 2px; } .term-definition { font-size: 12px; color: var(--gray-600); line-height: 1.3; } .term-badge { display: inline-block; font-size: 10px; padding: 2px 6px; background: var(--warning); color: var(--white); border-radius: 8px; margin-left: 4px; } ``` #### 관련 자료 리스트 ```css .related-doc-item { display: flex; align-items: flex-start; gap: 8px; padding: 8px; border-radius: 4px; background: var(--white); border: 1px solid var(--gray-200); margin-bottom: 8px; cursor: pointer; transition: background 0.2s ease; } .related-doc-item:hover { background: var(--gray-100); } .related-doc-icon { font-size: 24px; flex-shrink: 0; } .related-doc-info { flex: 1; min-width: 0; } .related-doc-title { font-size: 14px; font-weight: 500; color: var(--gray-900); margin-bottom: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .related-doc-meta { font-size: 12px; color: var(--gray-500); } .related-doc-relevance { display: flex; align-items: center; gap: 2px; font-size: 12px; color: var(--warning); flex-shrink: 0; } ``` **사용 위치**: - 회의 진행 화면 (05-회의진행.html) - 데스크톱/태블릿 (768px+)에서만 표시 - 모바일에서는 하단 시트로 변환 (향후 구현) **구성 요소**: 1. **참석자 탭**: 현재 회의 참석자 목록 및 상태 2. **AI 제안 탭**: 회의록 요약 및 Todo 자동 추출 제안 3. **용어 사전 탭**: 회의에서 언급된 전문용어 설명 4. **관련 자료 탭**: AI가 찾은 관련 회의록 목록 --- ## 11. 폼 요소 ### Input Field ```css .input { width: 100%; padding: 12px 16px; border: 1px solid var(--gray-300); border-radius: 8px; font-size: 16px; background: var(--white); transition: border-color 0.2s ease; } .input:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 3px rgba(77, 213, 167, 0.1); } .input::placeholder { color: var(--gray-500); } ``` ### Checkbox ```css .checkbox { width: 20px; height: 20px; border: 2px solid var(--gray-300); border-radius: 4px; transition: all 0.2s ease; } .checkbox:checked { background: var(--primary); border-color: var(--primary); } ``` --- ## 12. 모달 & 다이얼로그 ### 모달 오버레이 ```css .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(4px); z-index: 1000; } ``` ### 모달 콘텐츠 ```css .modal { background: var(--white); border-radius: 16px 16px 0 0; /* Mobile: Bottom Sheet */ max-width: 480px; padding: 24px; box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.16); } /* Desktop: Centered Modal */ @media (min-width: 768px) { .modal { border-radius: 16px; margin: auto; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } } ``` --- ## 13. 애니메이션 ### 트랜지션 ```css --transition-fast: 0.15s ease; --transition-normal: 0.2s ease; --transition-slow: 0.3s ease; ``` ### 주요 애니메이션 #### Fade In ```css @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } ``` #### Slide Up (Bottom Sheet) ```css @keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } } ``` #### Pulse (진행 중 배지) ```css @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } ``` --- ## 14. 접근성 (Accessibility) ### 색상 대비 - **WCAG 2.1 Level AA** 준수 - 텍스트와 배경 대비율: 최소 4.5:1 - 큰 텍스트(18px+) 대비율: 최소 3:1 ### 포커스 스타일 ```css :focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; } ``` ### 터치 타겟 - 최소 크기: 44x44px (iOS), 48x48px (Android) - 터치 타겟 간 최소 간격: 8px --- ## 15. 반응형 디자인 ### Mobile First 접근 ```css /* Mobile (기본) */ .container { padding: 16px; } /* Tablet (768px+) */ @media (min-width: 768px) { .container { padding: 24px; } } /* Desktop (1024px+) */ @media (min-width: 1024px) { .container { padding: 32px; } } ``` --- ## 참조 이미지 분석 결과 ### 확인된 디자인 특징 (reference/sampleimg 기반) 1. **Primary Color**: #4DD5A7 (민트 그린) - 모든 액션 버튼과 강조 요소에 사용 2. **카드 디자인**: 흰색 배경, 12px 둥근 모서리, 미세한 그림자 3. **타이포그래피**: 명확한 계층 구조, 충분한 여백 4. **아바타**: 원형, 다양한 색상 배경 (팀원 구분) 5. **배지**: 둥근 모서리, 명확한 색상 코딩 (진행 중=주황, 완료=민트) 6. **간격**: 16px 기본 간격 일관 적용 7. **섹션 구분**: 미세한 구분선 또는 배경색 차이로 구분 --- ## 16. 회의 진행 화면 우측 사이드바 카드 디자인 ### 공통 디자인 원칙 (통일성) 모든 우측 사이드바 카드는 **일관된 디자인 시스템**을 따릅니다: ```css /* 공통 카드 베이스 스타일 */ .sidebar-card { background: #FAFAFA; /* 연한 회색 배경 */ border: 1px dashed #D0D0D0; /* 회색 점선 테두리 */ border-radius: var(--radius-md); padding: var(--space-md); margin-bottom: var(--space-md); } /* 공통 카드 타이틀 */ .sidebar-card-title { font-size: var(--font-body); /* 16px */ font-weight: var(--font-weight-bold); color: var(--primary); /* 민트 그린 */ margin-bottom: var(--space-xs); } /* 공통 카드 본문 */ .sidebar-card-text { font-size: var(--font-small); /* 14px */ color: var(--gray-700); line-height: 1.6; } /* 공통 호버 */ .sidebar-card:hover { background: #F0F0F0; /* 조금 더 진한 회색 */ border-color: var(--primary); /* 민트 그린 테두리 */ } ``` ### AI 제안 카드 ```css .ai-suggestion-card { background: #FAFAFA; border: 1px dashed #D0D0D0; border-radius: var(--radius-md); padding: var(--space-md); margin-bottom: var(--space-md); } .ai-suggestion-header { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--font-body); /* 16px */ font-weight: var(--font-weight-bold); color: var(--primary); margin-bottom: var(--space-sm); } .ai-suggestion-text { font-size: var(--font-small); /* 14px */ color: var(--gray-700); line-height: 1.6; } ``` **구성 요소**: - 헤더: ✨ (아이콘) + 제목 (16px Bold, 민트 그린) - 본문: 제안 내용 (14px, gray-700) - 액션 버튼: Primary 버튼 + Ghost 버튼 ### 용어 사전 카드 ```css .term-item { background: #FAFAFA; /* 기본: 연한 회색 배경 */ border: 1px dashed #D0D0D0; border-radius: var(--radius-md); padding: var(--space-md); margin-bottom: var(--space-md); } .term-item.highlight { background: var(--primary-light); /* 하이라이트: 민트 연한 배경 */ border: 1px dashed var(--primary); /* 민트 그린 점선 테두리 */ } .term-item:hover { background: #F0F0F0; border-color: var(--primary); } .term-name { font-size: var(--font-body); /* 16px */ font-weight: var(--font-weight-bold); color: var(--primary); /* 민트 그린 */ margin-bottom: var(--space-xs); } .term-definition { font-size: var(--font-small); /* 14px */ color: var(--gray-700); line-height: 1.6; } .term-context { font-size: 11px; color: var(--gray-500); padding-top: var(--space-xs); border-top: 1px dashed #D0D0D0; /* 점선 구분선 */ margin-top: var(--space-xs); } ``` **구성 요소**: - 용어명: Bold (16px, 민트 그린) + 카테고리 배지 + 언급 아이콘 (💬, 14px) - 정의: 일반 텍스트 (14px, gray-700) - 컨텍스트: 작은 텍스트 (11px, gray-500, 상단 점선 구분선) - "회의에서 N회 언급됨" - "관련 회의록에서 언급됨" - "회의에서 언급됨 (HH:MM)" - "{관련 회의록명} (날짜)에서 {컨텍스트 정보}" **하이라이트 조건**: - 현재 진행 중인 회의에서 언급된 용어 - 민트 그린 연한 배경 (#E8F9F3) - 민트 그린 점선 테두리 **인터랙션**: - 호버 시: 조금 더 진한 회색 배경 (#F0F0F0) + 민트 그린 테두리 ### 관련 회의록 카드 ```css .related-doc-item { background: #FAFAFA; /* 연한 회색 배경 */ border: 1px dashed #D0D0D0; /* 회색 점선 테두리 */ border-radius: var(--radius-md); padding: var(--space-md); margin-bottom: var(--space-md); } .related-doc-item:hover { background: #F0F0F0; /* 조금 더 진한 회색 */ border-color: var(--primary); /* 민트 그린 테두리 */ } .related-doc-header { font-size: var(--font-body); /* 16px */ font-weight: var(--font-weight-bold); color: var(--primary); /* 민트 그린 */ margin-bottom: var(--space-xs); } .related-doc-text { font-size: var(--font-small); /* 14px */ color: var(--gray-700); line-height: 1.6; } .related-doc-meta { font-size: var(--font-caption); /* 12px */ color: var(--gray-600); } .related-doc-relevance { color: var(--success); /* 관련도는 초록색 */ font-weight: var(--font-weight-medium); } ``` **구성 요소**: - 제목: Bold (16px, 민트 그린) - 메타정보: 날짜 | 관련도 (12px, gray-600) - 관련도는 초록색 (success, font-weight-medium) - 본문: 요약 텍스트 (14px, gray-700, line-height 1.6) **인터랙션**: - 호버 시: 조금 더 진한 회색 배경 (#F0F0F0) + 민트 그린 테두리 ### 통일성 체크리스트 모든 사이드바 카드는 다음을 준수합니다: - ✅ 배경: `#FAFAFA` (연한 회색) - ✅ 테두리: `1px dashed #D0D0D0` (회색 점선) - ✅ 타이틀 색상: `var(--primary)` (민트 그린) - ✅ 타이틀 크기: `16px` (var(--font-body)) - ✅ 타이틀 굵기: `Bold` (var(--font-weight-bold)) - ✅ 본문 색상: `var(--gray-700)` - ✅ 본문 크기: `14px` (var(--font-small)) - ✅ 호버 배경: `#F0F0F0` (더 진한 회색) - ✅ 호버 테두리: `var(--primary)` (민트 그린) --- ## 15. 용어 정의 ### 사용자 역할 용어 프로젝트 전체에서 다음 용어를 일관되게 사용합니다: #### 회의 생성자 (Meeting Creator) - **정의**: 회의 예약을 생성한 사용자 - **권한**: - 회의 시작/종료 - 템플릿 선택 - 참석자 관리 (추가/삭제) - 회의록 최종 확정 - 검증 완료된 안건 잠금 해제 - 모든 Todo 수정 (담당자 변경 포함) - **사용 예시**: - "회의 생성자 전용 기능" - "회의 생성자만 회의를 종료할 수 있습니다" #### 회의 참석자 (Meeting Participant) - **정의**: 회의에 참석하는 모든 사용자 (회의 생성자 포함) - **권한**: - 회의록 조회 - 안건 편집 (검증 완료 전) - 안건 검증 - 본인의 Todo 수정 (담당자 변경 불가) - 회의록 목록 조회 (본인이 참석한 회의만) - **사용 예시**: - "모든 참석자가 편집할 수 있습니다" - "참석자는 본인의 Todo만 수정 가능합니다" ### 사용하지 않는 용어 - ❌ "회의록 작성자" - 명확하지 않으므로 사용 금지 - ❌ "작성자" - "회의 생성자" 또는 "참석자"로 명확히 표현 --- ## 변경 이력 | 버전 | 날짜 | 작성자 | 변경 내용 | |------|------|--------|----------| | 1.0 | 2025-10-21 | 최유진 | 최초 작성 - reference/sampleimg 샘플 이미지 기반 스타일 가이드 작성 | | 1.0.1 | 2025-10-21 | 이미준 | 네비게이션 간소화 및 인터랙션 개선
- 설정 메뉴를 프로필 메뉴로 통합 (사이드바, 하단 네비게이션)
- 로그아웃 및 개인 설정 기능은 프로필 영역에서 접근
- Todo 항목 클릭 시 회의록 상세 화면으로 이동하는 인터랙션 추가
- 네비게이션 메뉴 항목: 대시보드, 회의 목록, Todo 관리, 프로필 (4개 항목) | | 1.1 | 2025-10-21 | 이미준 | 반응형 네비게이션 및 2열 레이아웃 패턴 추가
- **반응형 네비게이션 전략**: Mobile (하단 네비게이션), Desktop (왼쪽 사이드바 240px)
- **사이드바 네비게이션 (Desktop)**: 로고 영역, 메뉴 항목 (대시보드/회의 목록/Todo 관리), 사용자 정보 영역
- **하단 네비게이션 (Mobile)**: 홈/회의록/Todo/프로필 (4개 메뉴)
- **2열 레이아웃 패턴**: 회의 진행 화면용 (왼쪽 65% 에디터, 오른쪽 35% 탭 패널)
- **탭 네비게이션 사용 예시**: 회의록 상세 (2개 탭), 회의 진행 (4개 탭) | | 1.1.1 | 2025-10-21 | 도그냥 | 회의 진행 화면 개선
- **메모 기능 제거**: 하단 액션바에서 메모 버튼 제거 (일시정지, 회의종료만 유지)
- **AI 제안 적용 기능 개선**:
- 논의사항 제안: "논의사항에 적용" 버튼으로 논의사항 섹션에 직접 추가
- 결정사항 제안: "결정사항에 적용" 버튼으로 결정사항 섹션에 직접 추가
- 액션아이템 제안: "액션아이템에 적용" 버튼으로 중복 제거 후 액션아이템 섹션에 추가
- 적용 시 해당 섹션 탭으로 자동 이동 및 성공 토스트 표시 | | 1.1.2 | 2025-10-21 | 도그냥 | 우측 사이드바 탭 디자인 개선 (gappa 프로토타입 기반)
- **AI 제안 카드**: 회색 배경(#F5F5F5), 민트 그린 점선 테두리, 헤더 (✨/📋 아이콘 + 제목), 본문, 액션 버튼
- **용어 사전 카드**:
- 흰색 배경, 회색 실선 테두리
- 하이라이트 카드: 민트 그린 연한 배경(#E8F9F3), 민트 그린 테두리 (현재 회의에서 언급된 용어)
- 용어명 + 카테고리 배지 + 언급 아이콘 (💬)
- 하단 컨텍스트: "회의에서 N회 언급됨" 또는 "관련 회의록에서 언급됨"
- 호버 시: 민트 그린 테두리 + 그림자
- **관련 회의록 카드**: 회색 배경(#F5F5F5), 회색 점선 테두리, 제목 + 메타정보 (날짜, 관련도) + 요약 텍스트 | | 1.1.3 | 2025-10-21 | 도그냥 | 용어 사전 및 관련 회의록 탭 디자인 통일성 개선
- **용어 사전 카드 디자인 개선**:
- 기본 상태: 민트 배경에서 화이트 배경 + 회색 테두리로 변경
- 하이라이트 상태: 민트 연한 배경 + 민트 테두리 (현재 회의 언급 용어만)
- 용어명: 16px Semibold
- 배지: 민트 연한 배경, 테두리 제거
- 언급 아이콘: 14px
- 컨텍스트: 상단 회색 구분선, 11px
- 호버: 민트 테두리 + 그림자
- **관련 회의록 카드 타이틀 강조**:
- 제목 폰트: Semibold → Bold (16px)
- 호버 시: 더 진한 회색 배경
- **사이드바 패널 타이틀 통일**:
- h3: 14px Bold (섹션 타이틀)
- h4: 14px Semibold (서브 타이틀) | | 1.1.4 | 2025-10-21 | 도그냥 | 우측 사이드바 3개 탭 (AI제안, 용어사전, 관련회의록) 디자인 통일성 개선
- **공통 디자인 원칙 수립**: 모든 카드가 일관된 디자인 시스템을 따르도록 개선
- 배경: `#FAFAFA` (연한 회색)
- 테두리: `1px dashed #D0D0D0` (회색 점선)
- 타이틀: 16px Bold, 민트 그린 (`var(--primary)`)
- 본문: 14px, gray-700
- 호버 상태: 진한 회색 배경 (#F0F0F0) + 민트 그린 테두리
- **AI 제안 카드**: 헤더 폰트 Bold (16px)
- **용어 사전 카드**: 배경 회색(#FAFAFA), 점선 테두리, 타이틀 민트 그린, 컨텍스트 구분선 점선으로 변경
- **관련 회의록 카드**: 타이틀 민트 그린으로 변경, 호버 시 민트 테두리 추가
- **통일성 체크리스트** 추가: 9가지 디자인 규칙 명시 | | 1.1.5 | 2025-10-22 | 이미준 | 프로토타입 기반 스타일 가이드 업데이트
- **하단 네비게이션 복원**: 4개 메뉴 (홈/회의록/Todo/프로필) - 프로토타입 구현 기준 반영
- **프로필 메뉴 기능**: 사용자 정보, 개인 설정, 로그아웃 접근
- **일관성 개선**: 프로토타입과 스타일 가이드 통일 | | 1.2.0 | 2025-10-23 | 강지수 | Todo 카드 디자인 통일 및 D-day 배지 스타일 정의
- **D-day 배지 스타일 추가**: 5가지 마감일 상태별 배지 정의
- `.badge-dday`: D-Day (오늘 마감) - 연한 녹색 배경, 진한 녹색 글씨, 테두리
- `.badge-warning`: D-1~3 (임박) - 연한 주황 배경, 진한 주황 글씨, 테두리
- `.badge-primary`: D-4~7 (여유) - 연한 파랑 배경, 진한 파랑 글씨, 테두리
- `.badge-secondary`: D-8+ (충분) - 연한 회색 배경, 진한 회색 글씨, 테두리
- `.badge-overdue`: D+N (지연) - 빨간색 배경, 흰색 글씨 (기존 스타일 재사용)
- **디자인 일관성 개선**: 대시보드, Todo관리, 회의록상세조회 화면의 Todo 카드 스타일 통일
- **모바일 최적화**: 대시보드 통계 카드에서 모바일 화면 시 이모지 숨김 처리 | | 1.2.1 | 2025-10-23 | 강지수 | 회의 진행 화면 액션아이템 탭 UI/UX 개선 (v1.2.1)
- **기능 개선**: 전체 영역 "편집" 버튼 제거, "추가" 버튼 추가
- **Todo 카드별 편집 버튼**: 10-회의록상세조회 화면과 동일하게 각 Todo 카드에 ✏️ 편집 버튼 추가
- **Todo 편집 모달**: 추가/편집 공통 모달 구현
- 모달 제목: "Todo 추가" 또는 "Todo 편집"
- 입력 필드: Todo 제목, 담당자 (선택), 마감일 (날짜 선택), 우선순위 (높음/보통/낮음)
- 유효성 검사: 필수 필드 검증
- 모바일: 전체화면 모달, 데스크톱: 중앙 모달 (600px)
- **UI 일관성**: common.css의 `.todo-card` 스타일 재사용
- **인터랙션**: "추가" 버튼 클릭 → 빈 모달, "편집" 버튼 클릭 → 기존 데이터 로드 | | 1.2.2 | 2025-10-23 | 강지수 | 05-회의진행 화면 Todo 카드 스타일 통일 (v1.2.2)
- **Todo 카드 구조 통일**: 10-회의록상세조회 화면과 동일한 HTML 구조 적용
- `.todo-card` > `.todo-top` > (`.todo-checkbox-wrapper` + `.todo-content-wrapper` + `.todo-actions`)
- 체크박스: `.todo-checkbox` (24px, border-radius 6px)
- 배지: `.todo-badges` 컨테이너에 D-day 배지 + 우선순위 배지
- 제목: `.todo-title` (font-body, regular, gray-900)
- 메타 정보: `.todo-meta-row` (담당자, 마감일)
- 편집 버튼: 절대 위치 (top-right)
- **CSS 스타일 추가**: 10-회의록상세조회와 동일한 스타일 적용
- 호버 효과: shadow + primary 테두리
- 완료 상태: opacity 0.5 + gray 배경 + 취소선
- 아이콘 버튼: 32px, 호버 시 scale(1.1)
- **JavaScript 함수 추가**: `toggleTodoComplete()` 함수 구현
- 완료/미완료 토글 기능
- 확인 다이얼로그 표시
- 토스트 메시지 표시 | | 1.2.3 | 2025-10-23 | 강지수 | 05-회의진행 화면 D-day 배지 제거 (v1.2.3)
- **정책 변경**: 회의 진행 중에는 Todo의 마감일이 확정되지 않았으므로 D-day 배지 숨김
- **Todo 카드 배지 수정**: 우선순위 배지만 표시 (D-day 배지 제거)
- Todo 1: 높음
- Todo 2: 보통
- Todo 3: 높음
- **마감일 표시 간소화**: "2025-10-23 마감" → "마감: 10/23"
- **이유**: 회의 중 작성되는 Todo는 마감일이 임시로 입력된 것이며, 회의 종료 후 확정됨
- **다른 화면**: 09-Todo관리, 10-회의록상세조회는 D-day 배지 유지 (확정된 회의록) | | 1.2.4 | 2025-10-24 | 이미준 | 12-회의록목록조회 화면 데이터 아키텍처 반영 (v1.2.4)
- **프로토타입 동기화**: UI/UX 설계서 v1.4.14 변경사항 반영
- **데이터 아키텍처 명시**: common.js → SAMPLE_MINUTES 배열 기반 동적 렌더링
- **정렬 옵션 레이블 변경**: "최신순" → "최근수정순", "회의일시순" → "최근회의순"
- **페이지네이션**: 초기 10개 표시, "10개 더보기" 버튼으로 추가 로딩
- **샘플 데이터**: 총 30개 (작성중 13개, 확정완료 17개) | | 1.2.5 | 2025-10-24 | 이미준 | 사용자 역할 용어 통일 (유저스토리 v2.1.2 반영)
- **용어 정의 섹션 신규 추가**: 프로젝트 전체 용어 사용 가이드
- **회의 생성자 (Meeting Creator)**: 회의 예약을 생성한 사용자, 회의 시작/종료 및 최종 확정 권한
- **회의 참석자 (Meeting Participant)**: 회의에 참석하는 모든 사용자 (생성자 포함), 회의록 편집 및 조회 권한
- **사용 금지 용어**: "회의록 작성자", "작성자" → "회의 생성자" 또는 "참석자"로 명확히 표현
- **권한 정의 명시**: 생성자/참석자별 권한 상세 설명
- **통일성 달성**: 유저스토리, 화면설계서, 스타일 가이드 간 용어 완전 통일 |