/* ============================================================================= * E04_Stab3D_UI_Style.css * E04 3D 해석 — 좌측 구간 · 설정 · 진행 / 가운데 지도 · 3D · 범례 / 우측 결과 * 색은 테마 토큰만(밝음 · 어두움 같이) · 안전율 · 체적 색 단계만 logic 고정색 * ========================================================================== */ .e04-page { height: 100dvh; box-sizing: border-box; } .e04-row { height: 100%; } .e04-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; } .e04-toolbar { display: flex; gap: var(--spacing-12); flex-wrap: wrap; } .e04-toggle { display: inline-flex; gap: var(--spacing-4); } .e04-toggle .ui-btn.is-on { border-color: var(--color-primary); background: var(--color-primary); color: var(--color-primary-text); } .e04-stage { position: relative; flex: 1 1 auto; min-height: 320px; border-radius: var(--radius-sm); background: var(--color-surface-raised); overflow: hidden; } .e04-map, .e04-view3d { position: absolute; inset: 0; } .e04-map[hidden], .e04-view3d[hidden] { display: none; } .e04-map__canvas, .e04-view3d__canvas { display: block; width: 100%; height: 100%; touch-action: none; } .e04-map__canvas { cursor: grab; } .e04-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; } .e04-map__empty { position: absolute; inset: var(--spacing-16) 0 auto 0; margin: 0; text-align: center; color: var(--color-text-muted); pointer-events: none; } .e04-view3d__compass { position: absolute; top: var(--spacing-8); right: var(--spacing-8); } .e04-view3d__tools { position: absolute; top: var(--spacing-8); left: var(--spacing-8); display: flex; gap: var(--spacing-12); padding: var(--spacing-4) var(--spacing-8); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); font-size: 12px; } .e04-view3d__toggle { display: inline-flex; align-items: center; gap: var(--spacing-4); } .e04-legend-slot { position: absolute; left: var(--spacing-8); bottom: var(--spacing-8); pointer-events: none; } .e04-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; } .e04-legend__row { display: flex; align-items: center; gap: var(--spacing-8); } .e04-legend__swatch, .e04-section__chip { display: inline-block; width: 14px; height: 10px; flex: none; border-radius: 2px; border: 1px solid var(--color-border); } /* 좌측 */ .e04-hint, .e04-note { margin: 0 0 var(--spacing-8); color: var(--color-text-muted); font-size: 12px; line-height: 1.5; } .e04-sections { display: flex; flex-direction: column; gap: 2px; max-height: 240px; overflow: auto; } .e04-section { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--spacing-8); padding: var(--spacing-4) var(--spacing-8); border: 1px solid transparent; border-radius: var(--radius-sm); background: transparent; color: var(--color-text); font: inherit; font-size: 13px; text-align: left; cursor: pointer; } .e04-section:hover { background: var(--color-surface-raised); } .e04-section.is-active { border-color: var(--color-primary); } .e04-section__value { color: var(--color-text-muted); font-size: 12px; } .e04-range .ui-field, .e04-advanced .ui-field { min-width: 0; } .e04-range .ui-input, .e04-advanced .ui-input { width: 100%; box-sizing: border-box; } .e04-range, .e04-advanced { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-8); margin-top: var(--spacing-8); } .e04-progress-box { display: flex; flex-direction: column; gap: var(--spacing-4); margin: var(--spacing-8) 0; } .e04-progress-box[hidden] { display: none; } .e04-progress { width: 100%; } .e04-progress__text { margin: 0; color: var(--color-text); font-size: 12px; } /* 우측 */ .e04-result { padding: var(--spacing-12); } .e04-result__list { display: grid; grid-template-columns: auto 1fr; gap: var(--spacing-8) var(--spacing-12); margin: 0; font-size: 13px; } .e04-result__list dt { color: var(--color-text-muted); } .e04-result__list dd { display: flex; align-items: center; gap: var(--spacing-8); margin: 0; color: var(--color-text); font-weight: 600; justify-content: flex-end; } .e04-result__list dd.is-ok { color: var(--color-success); } .e04-result__list dd.is-ng { color: var(--color-danger); } .e04-warn { margin: var(--spacing-12) 0 0; color: var(--color-danger); font-size: 12px; } .e04-empty { margin: var(--spacing-16); color: var(--color-text-muted); }