diff --git a/design/uiux/prototype/common.css b/design/uiux/prototype/common.css index 6d076d1..e190531 100644 --- a/design/uiux/prototype/common.css +++ b/design/uiux/prototype/common.css @@ -1096,3 +1096,347 @@ input[type="date"]::-webkit-calendar-picker-indicator { display: none; } } + +/* ======================================== + 20. 공통 헤더 컴포넌트 + ======================================== */ +.header { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 64px; + background: var(--white); + border-bottom: 1px solid var(--gray-300); + box-shadow: var(--shadow-sm); + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 var(--space-md); + z-index: 100; +} + +.header-left { + display: flex; + align-items: center; + gap: var(--space-md); +} + +.header-right { + display: flex; + align-items: center; + gap: var(--space-md); +} + +.header-title { + font-size: var(--font-h3); + font-weight: var(--font-weight-bold); + color: var(--gray-900); +} + +.icon-btn { + background: transparent; + border: none; + font-size: 24px; + color: var(--gray-700); + cursor: pointer; + padding: var(--space-sm); + transition: color var(--transition-fast); +} + +.icon-btn:hover { + color: var(--primary); +} + +/* ======================================== + 21. 메인 콘텐츠 레이아웃 (공통) + ======================================== */ +/* 기본 스타일 - 헤더 있는 페이지용 */ +.main-content { + margin-top: 64px; + padding: var(--space-md); + padding-bottom: 100px; +} + +/* 반응형: 데스크톱에서 중앙 정렬 */ +@media (min-width: 768px) { + .main-content { + max-width: 900px; + margin-left: auto; + margin-right: auto; + padding-bottom: var(--space-xxl); + } + + /* 사이드바가 있는 경우 */ + .has-sidebar .main-content { + margin-left: 240px; + margin-right: 0; + max-width: none; + } +} + +/* ======================================== + 22. 섹션 카드 컴포넌트 + ======================================== */ +.section { + background: var(--white); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + padding: var(--space-md); + margin-bottom: var(--space-lg); +} + +.section-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-md); +} + +.section-title { + font-size: var(--font-h3); + font-weight: var(--font-weight-bold); + color: var(--gray-900); + display: flex; + align-items: center; + gap: var(--space-sm); +} + +.section-content { + color: var(--gray-700); + line-height: 1.6; +} + +/* ======================================== + 23. 날짜 입력 필드 스타일 + ======================================== */ +.date-input-wrapper { + position: relative; +} + +.date-input-wrapper input[type="date"] { + position: relative; + z-index: 1; +} + +.date-input-wrapper::after { + content: '📅'; + position: absolute; + right: 12px; + top: 50%; + transform: translateY(-50%); + pointer-events: none; + font-size: 18px; + z-index: 3; +} + +.date-input-wrapper input[type="date"]::-webkit-calendar-picker-indicator { + position: absolute; + right: 0; + width: 100%; + height: 100%; + opacity: 0; + cursor: pointer; + z-index: 2; +} + +.date-input-wrapper input[type="date"]:focus { + box-shadow: 0 0 0 3px rgba(77, 213, 167, 0.15), + 0 4px 0 0 var(--primary); +} + +/* ======================================== + 24. AI 요약 영역 + ======================================== */ +.ai-summary { + background: var(--primary-light); + border-left: 4px solid var(--primary); + border-radius: var(--radius-md); + padding: var(--space-md); + margin-bottom: var(--space-md); +} + +.ai-summary-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-sm); +} + +.ai-summary-label { + display: flex; + align-items: center; + gap: var(--space-sm); + font-size: var(--font-small); + font-weight: var(--font-weight-bold); + color: var(--primary); +} + +.ai-summary-content { + font-size: var(--font-body); + color: var(--gray-900); + line-height: 1.6; +} + +.ai-summary-time { + font-size: var(--font-caption); + color: var(--gray-500); + margin-top: var(--space-sm); +} + +/* AI 요약 편집 모드 */ +.ai-summary-edit { + background: var(--primary-light); + border-left: 4px solid var(--primary); + border-radius: var(--radius-md); + padding: var(--space-md); + margin-bottom: var(--space-md); +} + +.ai-summary-textarea { + width: 100%; + min-height: 80px; + padding: var(--space-sm); + border: 1px solid var(--primary); + border-radius: var(--radius-md); + font-size: var(--font-body); + font-family: var(--font-family); + color: var(--gray-900); + background: var(--white); + resize: vertical; +} + +.ai-summary-textarea:focus { + outline: none; + box-shadow: 0 0 0 3px rgba(77, 213, 167, 0.1); +} + +/* ======================================== + 25. 참고자료/관련회의록 카드 + ======================================== */ +.reference-item, +.related-meeting-item { + background: var(--white); + border-radius: var(--radius-md); + padding: var(--space-sm); + margin-bottom: var(--space-sm); + display: flex; + align-items: center; + gap: var(--space-sm); + transition: background var(--transition-fast); +} + +.reference-item:last-child, +.related-meeting-item:last-child { + margin-bottom: 0; +} + +.reference-item:hover, +.related-meeting-item:hover { + background: var(--gray-100); +} + +.reference-content, +.related-meeting-content { + flex: 1; +} + +.reference-title, +.related-meeting-title { + font-size: var(--font-small); + font-weight: var(--font-weight-medium); + color: var(--gray-900); + margin-bottom: var(--space-xs); +} + +.reference-meta, +.related-meeting-meta { + font-size: var(--font-caption); + color: var(--gray-500); +} + +/* ======================================== + 26. 통계 그리드 + ======================================== */ +.stats-grid { + display: grid; + gap: var(--space-md); + margin-bottom: var(--space-lg); +} + +/* 2열 그리드 */ +.stats-grid-2 { + grid-template-columns: repeat(2, 1fr); +} + +/* 3열 그리드 */ +.stats-grid-3 { + grid-template-columns: repeat(3, 1fr); +} + +/* 4열 그리드 */ +.stats-grid-4 { + grid-template-columns: repeat(2, 1fr); +} + +@media (min-width: 768px) { + .stats-grid-4 { + grid-template-columns: repeat(4, 1fr); + } +} + +.stat-card { + background: var(--white); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + padding: var(--space-md); + text-align: center; +} + +.stat-icon { + font-size: 32px; + margin-bottom: var(--space-sm); +} + +.stat-value { + font-size: var(--font-h2); + font-weight: var(--font-weight-bold); + color: var(--gray-900); + margin-bottom: var(--space-xs); +} + +.stat-label { + font-size: var(--font-small); + color: var(--gray-500); +} + +/* ======================================== + 27. 하단 액션 바 (공통) + ======================================== */ +.action-bar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: var(--space-md); + background: var(--white); + border-top: 1px solid var(--gray-300); + box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08); + z-index: 100; + display: flex; + gap: calc(var(--space-md) * 0.5); /* 버튼 간격 50% 축소 */ +} + +.action-bar .btn { + flex: 1; /* 모든 화면에서 가로 꽉 채움 */ + padding: var(--space-sm) var(--space-xs); /* 내부 여백 축소하여 텍스트 줄바꿈 방지 */ + white-space: nowrap; /* 텍스트 줄바꿈 방지 */ +} + +/* 웹 화면에서도 하단 고정 유지 (회의록공유 화면 참조) */ +@media (min-width: 768px) { + .action-bar { + /* position: fixed 유지 - 하단 고정 */ + /* flex: 1 유지하여 가로 꽉 채움 */ + } +}