@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;700;800;900&display=swap');
/* 전반적인 기본 폰트 사이즈 유지 (크게) */
body { font-family: 'Noto Sans KR', sans-serif; background-color: #f8fafc; color: #1e293b; font-size: 15px; }
.card { background: white; border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); border: 1px solid #e2e8f0; }
.card-visible { overflow: visible !important; }

.table-container { overflow-x: auto; scrollbar-width: thin; position: relative; }

/* 스크롤바 숨김 유틸리티 */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* 테이블 컬럼 폭 확대 */
.col-name-width { width: 380px; min-width: 380px; max-width: 380px; }
.col-date-width { width: 150px; min-width: 150px; text-align: center; }
.sticky-col { position: sticky; left: 0; background: white; z-index: 40; border-right: 2px solid #f1f5f9; }

/* 헤더 버튼 잘림 방지를 위해 패딩과 폰트 사이즈 미세 최적화 */
.nav-btn { padding: 6px 14px; border-radius: 8px; font-weight: 700; transition: all 0.2s; font-size: 12px; white-space: nowrap; }
.nav-btn.active { background-color: #0f172a; color: white; box-shadow: 0 3px 8px rgba(15, 23, 42, 0.2); }
.nav-btn:not(.active) { color: #64748b; background: white; border: 1px solid #e2e8f0; }
.page { display: none; }
.page.active { display: block; }

.gantt-column-width { width: auto; min-width: 600px; position: relative; }
.gantt-grid { display: grid; grid-template-columns: repeat(12, 1fr); position: relative; height: 30px; background: #f8fafc; border-radius: 4px; overflow: hidden; border: 1px solid #e2e8f0; }
.gantt-grid-cell { border-right: 1px solid #e2e8f0; height: 100%; }

.today-line-overlay { position: absolute; top: 0; bottom: 0; width: 2px; background: #ef4444; z-index: 50; pointer-events: none; }
.today-line-overlay::before { content: 'Today'; position: absolute; top: -22px; left: 50%; transform: translateX(-50%); background: #ef4444; color: white; font-size: 12px; padding: 2px 6px; border-radius: 4px; font-weight: 900; }

.gantt-bar-plan { position: absolute; height: 25%; top: 20%; border-radius: 2px; background: rgba(203, 213, 225, 0.6); border: 1px dashed #94a3b8; z-index: 5; }
.gantt-bar-act { position: absolute; height: 25%; top: 55%; border-radius: 99px; z-index: 10; overflow: hidden; }

/* 신호등 크기 확대 */
.status-light { width: 14px; height: 14px; border-radius: 50%; display: inline-block; }
.light-green { background-color: #10b981; box-shadow: 0 0 4px rgba(16,185,129,0.5); }
.light-orange { background-color: #f59e0b; box-shadow: 0 0 4px rgba(245,158,11,0.5); }
.light-red { background-color: #ef4444; box-shadow: 0 0 4px rgba(239,68,68,0.5); }
.light-gray { background-color: #cbd5e1; }

.text-kpi-name { font-size: 18px; font-weight: 900; letter-spacing: -0.02em; }

.lvl-1 { background-color: #ffffff; border-bottom: 1px solid #f1f5f9; }
.lvl-2 { background-color: #fcfdfe; }
.indent-2 { padding-left: 2.5rem !important; }
.tree-line { position: absolute; left: 1rem; top: 0; bottom: 50%; width: 1rem; border-left: 1.5px solid #e2e8f0; border-bottom: 1.5px solid #e2e8f0; border-bottom-left-radius: 6px; }

.compact-row td { padding-top: 0.6rem; padding-bottom: 0.6rem; }
.compact-row-l2 td { padding-top: 0.5rem; padding-bottom: 0.5rem; }

.chart-grid-line { position: absolute; left: 0; right: 0; border-top: 1px solid #f1f5f9; z-index: 10; }

@media print { .no-print { display: none !important; } }

.tooltip-wrap { position: relative; cursor: help; }
.tooltip-content {
    position: absolute; bottom: 120%; left: 50%; transform: translateX(-50%);
    background: #1e293b; color: white; padding: 12px; border-radius: 8px;
    font-size: 14px; line-height: 1.5; white-space: normal; break-inside: avoid; word-break: keep-all; z-index: 1000; opacity: 0; visibility: hidden;
    transition: all 0.15s; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.3);
    pointer-events: none; border: 1px solid #334155; font-weight: bold; min-width: max-content;
}
.tooltip-wrap:hover .tooltip-content { opacity: 1; visibility: visible; }

.sidebar-nav { scrollbar-width: thin; }
.sidebar-nav::-webkit-scrollbar { width: 4px; }
.sidebar-nav::-webkit-scrollbar-thumb { background-color: #cbd5e1; border-radius: 4px; }
.nav-item { display: block; padding: 8px 12px; border-radius: 6px; cursor: pointer; transition: background-color 0.2s; font-size: 14px; color: #475569; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
.nav-item:hover { background-color: #e2e8f0; color: #0f172a; }
.nav-item .no-badge { display: inline-block; min-width: 22px; color: #94a3b8; font-weight: 800; margin-right: 4px; }
.nav-group-title { font-size: 13px; font-weight: 900; color: #94a3b8; text-transform: uppercase; margin-top: 12px; margin-bottom: 4px; padding-left: 12px; }

#msg-box { position: fixed; top: 20px; right: 20px; z-index: 2000; padding: 14px 24px; border-radius: 10px; font-size: 15px; font-weight: bold; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); display: none; animation: slideIn 0.3s ease-out; }
@keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }

.num-input { text-align: right; font-family: 'Noto Sans KR', sans-serif; }
