/* layout.css - 레이아웃 및 구조 스타일 */ /* 대시보드 메인 그리드 레이아웃 */ .dashboard-grid { display: grid; grid-template-columns: 2fr 1fr; /* 메인 콘텐츠(2/3), 사이드바(1/3) 비율 */ gap: 1.5rem; margin-bottom: 1rem; } .dashboard-main-content { width: 100%; } .dashboard-sidebar { width: 100%; display: flex; flex-direction: column; gap: 1.5rem; } /* 기본 그리드 레이아웃 */ .dashboard-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 0.2rem; } /* 특별한 그리드 레이아웃 - 배치/피크 섹션용 */ .dashboard-row.batch-peak-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; } /* 특별한 그리드 레이아웃 - 배치/피크 섹션용에서 중첩 방지 */ .dashboard-row.batch-peak-row > .dashboard-batch, .dashboard-row.batch-peak-row > .dashboard-peak, .dashboard-row.batch-peak-row > .batch-container, .dashboard-row.batch-peak-row > .peak-container { width: 100%; margin-bottom: 0; } /* 요약 섹션 (1:2 비율) */ .dashboard-transactions { margin-bottom: 0; /* 사이드바 내에서 하단 마진 제거 */ } /* 어댑터 섹션 */ .dashboard-adapters { margin-bottom: 0; /* 사이드바 내에서 하단 마진 제거 */ } /* 트랜잭션 섹션 */ .dashboard-transactions { margin-bottom: 0; /* 사이드바 내에서 하단 마진 제거 */ } /* 헤더 */ header { background-color: white; padding: 0.8rem 1.5rem; border-radius: var(--rounded-lg); box-shadow: var(--shadow); margin-bottom: 1.2rem; display: flex; align-items: center; justify-content: space-between; } .header-title { display: flex; align-items: center; } .header-title h1 { margin: 0; font-size: 1.25rem; font-weight: 600; color: var(--color-gray-900); } .header-title i { font-size: 1.5rem; color: var(--color-primary); margin-right: 0.75rem; } .header-controls { display: flex; align-items: center; gap: 1rem; } .time-display { background-color: var(--color-gray-100); padding: 0.5rem 0.75rem; border-radius: var(--rounded); font-size: 0.813rem; font-weight: 500; color: var(--color-gray-700); } /* 자동 새로고침 컨트롤 */ .refresh-controls { display: flex; align-items: center; margin-right: 15px; } .refresh-label { margin-right: 8px; font-size: 0.875rem; color: var(--color-gray-600); } .refresh-status { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; } .refresh-status.active { background-color: var(--color-success); animation: pulse 2s infinite; } .refresh-status.inactive { background-color: var(--color-gray-400); } /* 푸터 */ footer { margin-top: 1.5rem; padding: 1rem 1.5rem 0.5rem 1.5rem; border-top: 1px solid var(--color-gray-200); display: flex; justify-content: space-between; align-items: center; } .footer-info { font-size: 0.813rem; color: var(--color-gray-500); } .footer-info p { margin: 0; } .footer-links { display: flex; gap: 1.5rem; } .footer-link { font-size: 0.813rem; color: var(--color-gray-600); text-decoration: none; } .footer-link:hover { color: var(--color-primary); text-decoration: underline; } /* 서버-트랜잭션 행 (한 줄에 나오도록) */ .dashboard-row.server-transaction-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; } .server-container, .transaction-container { width: 100%; } /* 어댑터 섹션 컨테이너 */ .dashboard-adapters-container { width: 100%; margin-bottom: 1rem; } /* 기존 대시보드 그리드 스타일은 비활성화 */ .dashboard-grid { display: none; } /* 반응형 디자인 */ @media (max-width: 1200px) { .dashboard-row.server-transaction-row { grid-template-columns: 1fr; } } /* 반응형 디자인 */ @media (max-width: 1200px) { .dashboard-grid { grid-template-columns: 1fr; /* 좁은 화면에서는 세로로 배치 */ } .dashboard-summary { grid-template-columns: 1fr; } .dashboard-row.batch-peak-row { grid-template-columns: 1fr; } } @media (max-width: 992px) { header { flex-direction: column; align-items: flex-start; } .header-controls { margin-top: 1rem; width: 100%; justify-content: flex-start; flex-wrap: wrap; } .server-metrics { flex-direction: column; gap: 1rem; } } @media (max-width: 768px) { .transaction-table-container, .adapter-table-container { max-height: 300px; overflow-y: auto; } .card-tabs { overflow-x: auto; } }