/* Analysis Page Styles */ .analysis-content { padding: 24px; max-width: 1400px; margin: var(--topbar-h, 36px) auto 0; } .analysis-header { display: flex; justify-content: space-between; align-items: flex-end; padding: 10px 0 30px 0; margin-bottom: 10px; } .ai-badge { display: inline-block; padding: 4px 12px; border-radius: 20px; background: var(--ai-color, linear-gradient(135deg, #6366f1 0%, #a855f7 100%)); color: #fff; font-size: 11px; font-weight: 700; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.5px; } .analysis-header h2 { font-size: 24px; font-weight: 800; color: #111; margin: 0; } .analysis-header p { font-size: 13px; color: #666; margin-top: 6px; } .btn-refresh { padding: 10px 20px; background: #fff; border: 1px solid #ddd; border-radius: 8px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.2s; } .btn-refresh:hover { background: #f8f9fa; border-color: #bbb; } /* 1. Metrics Grid */ .metrics-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-bottom: 30px; } .metric-card { background: #fff; padding: 24px; border-radius: 16px; border: 1px solid #eef0f2; box-shadow: 0 4px 20px rgba(0,0,0,0.04); display: flex; flex-direction: column; gap: 12px; } .metric-card .label { font-size: 12px; font-weight: 600; color: #888; display: flex; align-items: center; gap: 5px; position: relative; /* 툴팁 배치를 위해 추가 */ } /* 툴팁 스타일 추가 */ .metric-card .label:hover::after { content: attr(data-tooltip); position: absolute; bottom: 100%; left: 0; width: 220px; padding: 12px; background: #1e293b; color: #fff; font-size: 11px; font-weight: 400; line-height: 1.5; border-radius: 8px; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); z-index: 10; margin-bottom: 10px; pointer-events: none; white-space: normal; } .metric-card .label:hover::before { content: ''; position: absolute; bottom: 100%; left: 20px; border: 6px solid transparent; border-top-color: #1e293b; margin-bottom: -2px; z-index: 10; } .info-icon { width: 14px; height: 14px; border-radius: 50%; background: #eee; display: inline-flex; align-items: center; justify-content: center; font-size: 9px; cursor: help; font-style: normal; } .metric-card .value { font-size: 32px; font-weight: 800; color: #1e5149; margin: 0; } .trend { font-size: 11px; font-weight: 700; } .trend.up { color: #d32f2f; } .trend.down { color: #1976d2; } .trend.steady { color: #666; } /* 2. Main Grid Layout */ .analysis-main-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 24px; margin-bottom: 24px; } .analysis-card { background: #fff; border-radius: 16px; border: 1px solid #eef2f6; box-shadow: 0 4px 20px rgba(0,0,0,0.04); overflow: hidden; } .card-header { padding: 20px 24px; border-bottom: 1px solid #f1f5f9; display: flex; justify-content: space-between; align-items: center; } .card-header h4 { margin: 0; font-size: 15px; font-weight: 700; color: #334155; } .card-body { padding: 24px; } /* 테이블 스크롤 래퍼 */ .table-scroll-wrapper { max-height: 600px; overflow-y: auto; border-radius: 8px; border: 1px solid #eef2f6; } /* 스크롤바 커스텀 */ .table-scroll-wrapper::-webkit-scrollbar { width: 6px; } .table-scroll-wrapper::-webkit-scrollbar-track { background: #f8fafc; } .table-scroll-wrapper::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } .table-scroll-wrapper::-webkit-scrollbar-thumb:hover { background: #94a3b8; } .chart-placeholder { height: 300px; background: #f8fafc; border-radius: 12px; display: flex; align-items: center; justify-content: center; color: #94a3b8; border: 1px dashed #e2e8f0; } /* D-WAR 테이블 스타일 추가 */ .d-war-table { width: 100%; border-radius: 12px; overflow: hidden; } .d-war-table th { background: #f1f5f9; color: #475569; font-size: 11px; padding: 12px; } .d-war-table td { padding: 14px 12px; border-bottom: 1px solid #f1f5f9; } .d-war-value { font-weight: 800; color: #1e5149; text-align: center; font-size: 15px; } .p-war-value { font-weight: 800; text-align: center; font-size: 15px; } .text-plus { color: #1d4ed8; } .text-minus { color: #dc2626; } /* 관리 상태 배지 스타일 */ .badge-system { display: inline-block; padding: 4px 10px; background: #450a0a; color: #fecaca; border: 1px solid #7f1d1d; font-size: 11px; font-weight: 800; border-radius: 6px; white-space: nowrap; } .badge-active { display: inline-block; padding: 4px 10px; background: #f0fdf4; color: #166534; border: 1px solid #dcfce7; font-size: 11px; font-weight: 700; border-radius: 6px; white-space: nowrap; } .badge-warning { display: inline-block; padding: 4px 10px; background: #fffbeb; color: #92400e; border: 1px solid #fef3c7; font-size: 11px; font-weight: 700; border-radius: 6px; white-space: nowrap; } .badge-danger { display: inline-block; padding: 4px 10px; background: #fef2f2; color: #991b1b; border: 1px solid #fee2e2; font-size: 11px; font-weight: 700; border-radius: 6px; white-space: nowrap; } /* 행 강조 스타일 수정 */ .row-danger { background: #fff1f2 !important; } .row-warning { background: #fffaf0 !important; } .row-success { background: #f0fdf4 !important; } .font-bold { font-weight: 700; } /* P-WAR 가이드 스타일 */ .d-war-guide { display: flex; gap: 20px; margin-bottom: 20px; padding: 12px 20px; background: #f8fafc; border-radius: 8px; border: 1px solid #e2e8f0; } .guide-item { font-size: 12px; font-weight: 600; color: #64748b; display: flex; align-items: center; gap: 8px; } .guide-item span { padding: 2px 8px; border-radius: 4px; font-size: 11px; color: #fff; } .active-low span { background: #2563eb; } .warning-mid span { background: #22c55e; } .danger-high span { background: #f59e0b; } .hazard-critical span { background: #ef4444; } /* 3. Risk Signal List */ .risk-signal-list { display: flex; flex-direction: column; gap: 12px; } .risk-item { padding: 16px; border-radius: 12px; display: grid; grid-template-columns: 1fr 40px; gap: 4px; position: relative; } .risk-project { font-size: 13px; font-weight: 700; color: #1e293b; } .risk-reason { font-size: 11px; color: #64748b; margin-top: 4px; } .risk-status { grid-row: span 2; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; border-radius: 8px; } .risk-item.high { background: #fff1f2; border-left: 4px solid #f43f5e; } .risk-item.high .risk-status { color: #f43f5e; } .risk-item.warning { background: #fffbeb; border-left: 4px solid #f59e0b; } .risk-item.warning .risk-status { color: #f59e0b; } .risk-item.safe { background: #f0fdf4; border-left: 4px solid #22c55e; } .risk-item.safe .risk-status { color: #22c55e; } /* 4. Factor Section */ .factor-grid { display: flex; flex-direction: column; gap: 16px; } .factor-item { display: grid; grid-template-columns: 200px 1fr 60px; align-items: center; gap: 20px; } .factor-name { font-size: 13px; font-weight: 600; color: #475569; } .factor-bar-wrapper { height: 8px; background: #f1f5f9; border-radius: 4px; overflow: hidden; } .factor-bar { height: 100%; background: var(--ai-color, #6366f1); border-radius: 4px; } .factor-value { font-size: 12px; font-weight: 700; color: #1e5149; text-align: right; }