* { margin: 0; padding: 0; box-sizing: border-box; } :root { --red: #cc0000; --red2: #e80000; --redd: #8b0000; --blk: #1a1a1a; --blk2: #2d2d2d; --gray-light: #f5f5f5; --gray-mid: #e8e8e8; --gray-dark: #666666; --gold: #d4af37; --orange: #ff9800; } /* 앱 셸(/dashboard/business-performance)에서는 styles.css의 body 배경을 쓰고, 단독 임베드 페이지에만 어두운 배경 */ body.mgmt-perf-standalone { font-family: '맑은 고딕', 'Apple SD Gothic Neo', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: linear-gradient(135deg, var(--blk) 0%, var(--blk2) 100%); color: var(--blk); line-height: 1.6; padding: 20px; min-height: 100vh; } .container { max-width: 1600px; margin: 0 auto; background: white; border-radius: 8px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); overflow: hidden; } /* Header */ .header { background: linear-gradient(135deg, var(--redd) 0%, var(--red) 100%); color: white; padding: 40px 30px; border-bottom: 4px solid var(--red2); } .header h1 { font-size: 32px; margin-bottom: 5px; font-weight: 700; letter-spacing: 0.5px; } .header p { font-size: 14px; opacity: 0.95; font-weight: 300; } /* Slicer Bars Container */ .slicers-container { display: flex; gap: 30px; padding: 20px 30px; background: var(--gray-light); border-bottom: 1px solid var(--gray-mid); align-items: flex-start; } .slicer-group { display: flex; flex-direction: column; gap: 8px; } .slicer-label { font-size: 12px; font-weight: 700; color: var(--blk); text-transform: uppercase; letter-spacing: 0.5px; } .slicer-tabs { display: flex; gap: 4px; } .slicer-tab { padding: 8px 14px; background: white; border: 1px solid var(--gray-mid); border-radius: 4px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; color: var(--blk); } .slicer-tab:hover { background: var(--gray-mid); } .slicer-tab.active { background: var(--red); color: white; border-color: var(--red); box-shadow: 0 2px 6px rgba(204, 0, 0, 0.3); } /* Section Tabs Navigation */ .section-tabs { display: flex; background: white; border-bottom: 2px solid var(--gray-mid); padding: 0; gap: 0; } .section-tab-btn { flex: 1; padding: 16px 20px; background: white; border: none; cursor: pointer; font-size: 14px; font-weight: 600; color: var(--blk); transition: all 0.3s ease; border-bottom: 3px solid transparent; max-width: 200px; } .section-tab-btn:hover { background: var(--gray-light); color: var(--red); } .section-tab-btn.active { background: white; color: var(--red); border-bottom-color: var(--red); } /* Content Area */ .content { padding: 30px; min-height: 600px; } .section { display: none; } .section.active { display: block; animation: fadeIn 0.3s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* KPI Cards */ .kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-bottom: 30px; } .kpi-card { background: white; border-radius: 8px; padding: 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); border-top: 4px solid var(--red); transition: transform 0.3s ease, box-shadow 0.3s ease; } .kpi-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .kpi-card.warning { border-top-color: var(--orange); background: rgba(255, 152, 0, 0.05); } .kpi-label { font-size: 12px; font-weight: 600; color: var(--gray-dark); text-transform: uppercase; margin-bottom: 8px; letter-spacing: 0.5px; } .kpi-value { font-size: 24px; font-weight: 700; color: var(--red); margin-bottom: 4px; } .kpi-value.large { font-size: 32px; } .kpi-subtext { font-size: 11px; color: var(--gray-dark); margin-top: 8px; } /* Charts */ .chart-container { background: white; border-radius: 8px; padding: 20px; margin-bottom: 30px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); position: relative; } .chart-title { font-size: 16px; font-weight: 700; color: var(--blk); margin-bottom: 20px; } .chart-wrapper { position: relative; height: 300px; width: 100%; } .chart-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 30px; } /* Tables */ table { width: 100%; border-collapse: collapse; background: white; } thead { background: var(--gray-light); position: sticky; top: 0; z-index: 10; } th { padding: 12px 8px; text-align: left; font-size: 12px; font-weight: 700; color: var(--blk); border-bottom: 2px solid var(--gray-mid); text-transform: uppercase; letter-spacing: 0.5px; } td { padding: 12px 8px; font-size: 12px; border-bottom: 1px solid var(--gray-mid); } tbody tr:hover { background: var(--gray-light); } .rank-badge { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: var(--red); color: white; font-size: 11px; font-weight: 700; } .num-cell { text-align: right; font-family: 'Courier New', monospace; } .percent-cell { text-align: right; color: var(--red); font-weight: 600; } /* Table Wrapper */ .table-wrapper { background: white; border-radius: 8px; padding: 20px; margin-bottom: 30px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); overflow-x: auto; } .table-title { font-size: 14px; font-weight: 700; color: var(--blk); margin-bottom: 15px; } /* Risk Section */ .risk-section { background: linear-gradient(135deg, rgba(255, 152, 0, 0.05) 0%, rgba(212, 175, 55, 0.05) 100%); border-radius: 8px; padding: 20px; margin-bottom: 30px; border-left: 4px solid var(--orange); } .risk-title { font-size: 16px; font-weight: 700; color: var(--orange); margin-bottom: 20px; } .risk-value { font-size: 36px; font-weight: 700; color: var(--orange); } .risk-label { font-size: 12px; color: var(--gray-dark); margin-top: 5px; } /* Division Detail View */ .division-detail { display: none; } .division-detail.active { display: block; animation: fadeIn 0.3s ease; } /* Responsive */ @media (max-width: 1200px) { .chart-row { grid-template-columns: 1fr; } .slicers-container { flex-direction: column; gap: 15px; } } @media (max-width: 768px) { .kpi-grid { grid-template-columns: 1fr; } .section-tab-btn { max-width: none; } } @media print { body { background: white; padding: 0; } .container { box-shadow: none; border-radius: 0; } .section { page-break-inside: avoid; } } /* 앱 셸 안에 인라인 삽입 시 전역 .container(grid)와 충돌 방지 */ .mgmt-perf-embed .container { display: block !important; max-width: 1600px !important; width: auto !important; margin: 0 auto !important; padding: 0 !important; gap: unset !important; background: white; border-radius: 8px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); overflow: hidden; } .mgmt-perf-embed { font-family: '맑은 고딕', 'Apple SD Gothic Neo', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: transparent; color: var(--blk); line-height: 1.6; padding: 0; border-radius: 0; overflow-x: auto; } body.mgmt-perf-standalone .mgmt-perf-embed { padding: 16px; border-radius: 10px; } .mgmt-perf-embed .chart-wrapper { min-height: 280px; position: relative; }