하단 버튼 영역 레이아웃 개선 (common.css)

- 버튼 가로 전체 너비로 채우기 (flex: 1 유지)
- 버튼 간격 50% 축소 (gap: calc(var(--space-md) * 0.5))
- 버튼 내부 여백 축소로 텍스트 줄바꿈 방지 (padding: var(--space-sm) var(--space-xs))
- 텍스트 줄바꿈 방지 속성 추가 (white-space: nowrap)
- 웹/모바일 모두 하단 고정 유지 (position: fixed)

개선 화면: 03-회의예약, 06-검증완료, 07-회의종료, 10-회의록상세조회, 11-회의록수정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
yabo0812 2025-10-22 15:24:51 +09:00
parent c4f2a37da1
commit 60f2b5253d

View File

@ -1096,3 +1096,347 @@ input[type="date"]::-webkit-calendar-picker-indicator {
display: none; 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 유지하여 가로 꽉 채움 */
}
}