/* ============================================================================= * E07_StabArea_UI_Style.css * E07 광역 위험 지도 — 좌측 조건 · 진행 / 가운데 지도 · 범례 / 우측 요약 · 측점 표 * 색은 테마 토큰만(밝음 · 어두움 같이) · 등급 · 안전율 색만 logic 고정색 * ========================================================================== */ .e07-page { height: 100dvh; box-sizing: border-box; } .e07-row { height: 100%; } .e07-center { display: flex; flex-direction: column; gap: var(--spacing-8); height: 100%; min-height: 0; padding: var(--spacing-12) 0 var(--spacing-12) var(--spacing-12); box-sizing: border-box; } .e07-toggle { display: inline-flex; gap: var(--spacing-4); } .e07-toggle .ui-btn.is-on { border-color: var(--color-primary); background: var(--color-primary); color: var(--color-primary-text); } .e07-stage { position: relative; flex: 1 1 auto; min-height: 320px; border-radius: var(--radius-sm); background: var(--color-surface-raised); overflow: hidden; } .e07-map { position: absolute; inset: 0; } .e07-map__canvas { display: block; width: 100%; height: 100%; touch-action: none; cursor: grab; } .e07-map__tip { position: absolute; padding: var(--spacing-4) var(--spacing-8); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-border); font-size: 12px; white-space: pre; pointer-events: none; } .e07-map__empty { position: absolute; inset: auto 0 45% 0; margin: 0; text-align: center; color: var(--color-text-muted); pointer-events: none; } .e07-legend-slot { position: absolute; left: var(--spacing-8); bottom: var(--spacing-8); pointer-events: none; } .e07-legend { display: flex; flex-direction: column; gap: 2px; padding: var(--spacing-8); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-border); font-size: 12px; } .e07-legend__sub { max-width: 180px; color: var(--color-text-muted); } .e07-legend__row { display: flex; align-items: center; gap: var(--spacing-8); } .e07-chip { display: inline-block; width: 14px; height: 10px; flex: none; margin-right: var(--spacing-4); border-radius: 2px; border: 1px solid var(--color-border); vertical-align: middle; } /* 좌측 */ .e07-hint, .e07-note { margin: 0 0 var(--spacing-8); color: var(--color-text-muted); font-size: 12px; line-height: 1.5; } .e07-panel .ui-field[hidden] { display: none; } .e07-progress-box { display: flex; flex-direction: column; gap: var(--spacing-4); margin: var(--spacing-8) 0; } .e07-progress-box[hidden] { display: none; } .e07-progress { width: 100%; } .e07-progress__text { margin: 0; color: var(--color-text); font-size: 12px; } /* 우측 */ .e07-result { padding: var(--spacing-12); color: var(--color-text); } .e07-result h4 { margin: var(--spacing-16) 0 var(--spacing-8); font-size: 13px; } .e07-summary { display: grid; grid-template-columns: auto 1fr; gap: var(--spacing-8) var(--spacing-12); margin: 0; font-size: 13px; } .e07-summary dt { color: var(--color-text-muted); } .e07-summary dd { margin: 0; font-weight: 600; text-align: right; } .e07-table { width: 100%; border-collapse: collapse; font-size: 12px; } .e07-table th, .e07-table td { padding: var(--spacing-4) var(--spacing-8); border-bottom: 1px solid var(--color-border); text-align: right; white-space: nowrap; } .e07-table th:first-child, .e07-table td:first-child, .e07-stations td:nth-child(4) { text-align: left; } .e07-table th { color: var(--color-text-muted); font-weight: 600; } .e07-stations tr[data-chainage] { cursor: pointer; } .e07-stations tr[data-chainage]:hover { background: var(--color-surface-raised); } .e07-stations tr.is-risk td { color: var(--color-danger); font-weight: 600; } .e07-stations tr.is-on { outline: 2px solid var(--color-primary); outline-offset: -2px; } .e07-warn { margin: var(--spacing-12) 0 0; color: var(--color-danger); font-size: 12px; } .e07-empty { margin: var(--spacing-16); color: var(--color-text-muted); }