/* ============================================================================= * E06_StabRock_UI_Style.css * E06 암반 해석 — 좌측 절리 표 · 설정 / 가운데 위험 띠 · 스테레오넷 / 우측 측점 결과 * 색은 테마 토큰(밝음 · 어두움 같이) · 판정 · 모드 · 절리 색만 고정색(E03 판정색과 같음) * ========================================================================== */ .e06-page { --e06-ng: #d03b3b; --e06-ok: #0ca30c; --e06-check: #e0a106; --e06-none: #9a9a95; --e06-planar: #d03b3b; --e06-wedge: #f1963b; --e06-toppling: #9b6dde; height: 100dvh; box-sizing: border-box; } .e06-row { height: 100%; } .e06-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; overflow: auto; } .e06-empty, .e06-hint, .e06-status, .e06-kin { margin: 0; white-space: pre-line; color: var(--color-text-muted); font-size: 12px; } .e06-empty { padding: var(--spacing-16); } .e06-status.is-error { color: var(--color-danger); } .e06-kin { color: var(--color-text); } .e06-panel .ui-sidebar-actions { flex-wrap: wrap; } .e06-stale { padding: var(--spacing-8) var(--spacing-12); border-radius: var(--radius-sm); background: color-mix(in srgb, var(--color-warning) 18%, var(--color-surface)); color: var(--color-text); } .e06-stale[hidden] { display: none; } /* ---- 좌측 표 · 설정 ---- */ .e06-table-wrap { overflow-x: auto; } .e06-table { border-collapse: collapse; font-size: 12px; } .e06-table th { padding: 2px 3px; font-weight: var(--font-weight-medium); color: var(--color-text-secondary); white-space: nowrap; } .e06-table td { padding: 1px 2px; } .e06-input { width: 4.2em; padding: 2px 4px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); font: inherit; font-size: 12px; box-sizing: border-box; } .e06-input--name { width: 3.6em; } select.e06-input { width: auto; } .e06-input.is-invalid { border-color: var(--color-danger); background: color-mix(in srgb, var(--color-danger) 12%, var(--color-surface)); } .e06-row-actions { display: flex; justify-content: flex-end; margin-top: var(--spacing-4); } .e06-setting { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); margin: 2px 0; font-size: 12px; color: var(--color-text); } .e06-setting .e06-input { width: 5.5em; } .e06-setting__ctl { display: flex; align-items: center; gap: var(--spacing-4); } /* ---- 가운데 ---- */ .e06-toolbar { display: flex; align-items: center; gap: var(--spacing-12); flex-wrap: wrap; } .e06-title { color: var(--color-text); } .e06-toggle { display: inline-flex; gap: var(--spacing-4); } .e06-toggle .ui-btn.is-on { border-color: var(--color-primary); background: var(--color-primary); color: var(--color-primary-text); } .e06-stage { display: flex; gap: var(--spacing-12); align-items: flex-start; flex-wrap: wrap; padding: var(--spacing-8); border-radius: var(--radius-sm); background: var(--color-surface-raised); } .e06-net-slot { flex: 1 1 360px; max-width: 560px; } .e06-net { display: block; width: 100%; height: auto; color: var(--color-text); font-size: 11px; } .e06-net__rim { fill: var(--color-surface); stroke: var(--color-text); stroke-width: 1.4; } .e06-net__zone { stroke: none; opacity: 0.28; } .e06-net__zone--planar { fill: var(--e06-planar); } .e06-net__zone--wedge { fill: var(--e06-wedge); } .e06-net__zone--toppling { fill: var(--e06-toppling); } .e06-net__friction { fill: none; stroke: var(--color-text-secondary); stroke-width: 1; stroke-dasharray: 5 3; } .e06-net__friction--line { stroke-dasharray: 2 3; } .e06-net__envelope { fill: none; stroke: var(--e06-planar); stroke-width: 1; stroke-dasharray: 6 3; } .e06-net__gc { fill: none; stroke: currentColor; stroke-width: 1.2; } .e06-net__slope { fill: none; stroke: var(--color-text); stroke-width: 2.6; } .e06-net__slope-pole { fill: var(--color-text); } .e06-net__pole circle { fill: currentColor; stroke: var(--color-surface); stroke-width: 1; } .e06-net__pole.is-risk circle, .e06-net__line.is-risk path { stroke: var(--e06-ng); stroke-width: 2.4; } .e06-net__pole text, .e06-net__line text, .e06-net__dir { fill: var(--color-text); } .e06-net__line path { fill: var(--e06-wedge); stroke: var(--color-surface); } .e06-net__tick { stroke: var(--color-text-secondary); } .e06-tone-0 { color: #2f6fd6; } .e06-tone-1 { color: #1f9d6a; } .e06-tone-2 { color: #c2410c; } .e06-tone-3 { color: #7c4dcc; } .e06-tone-4 { color: #b8860b; } .e06-tone-5 { color: #0e7490; } .e06-legend { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--color-text); } .e06-legend__row { display: inline-flex; align-items: center; gap: 6px; } .e06-legend__mark { display: inline-block; width: 16px; height: 10px; border-radius: 2px; } .e06-legend__mark--slope { height: 3px; background: var(--color-text); } .e06-legend__mark--friction { height: 0; border-top: 1px dashed var(--color-text-secondary); } .e06-legend__mark--daylight { height: 0; border-top: 1px dashed var(--e06-planar); } .e06-legend__mark--planar { background: color-mix(in srgb, var(--e06-planar) 35%, transparent); } .e06-legend__mark--wedge { background: color-mix(in srgb, var(--e06-wedge) 35%, transparent); } .e06-legend__mark--toppling { background: color-mix(in srgb, var(--e06-toppling) 35%, transparent); } .e06-legend__mark--line { width: 10px; background: var(--e06-wedge); clip-path: polygon(50% 0, 100% 100%, 0 100%); } .e06-legend__mark--pole { width: 10px; border-radius: 50%; background: #2f6fd6; } /* ---- 위험 띠 ---- */ .e06-band { display: flex; flex-direction: column; gap: 4px; } .e06-band__legend { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--color-text); } .e06-band__count { margin-right: 6px; color: var(--color-text-secondary); } .e06-band__strip { position: relative; height: 18px; border-radius: var(--radius-sm); background: var(--color-surface-raised); overflow: hidden; } .e06-band__seg { position: absolute; top: 0; bottom: 0; padding: 0; border: none; cursor: pointer; } .e06-band__seg--ng { background: var(--e06-ng); } .e06-band__seg--ok { background: var(--e06-ok); } .e06-band__seg--check { background: var(--e06-check); } .e06-band__seg--none { background: var(--e06-none); } .e06-band__seg.is-active { outline: 2px solid var(--color-text); outline-offset: -2px; z-index: 1; } .e06-band__ticks { display: flex; justify-content: space-between; font-size: 11px; color: var(--color-text-secondary); } /* ---- 우측 ---- */ .e06-side { display: flex; flex-direction: column; gap: var(--spacing-12); } .e06-list-slot { max-height: 46vh; overflow: auto; } .e06-list, .e06-cases { width: 100%; border-collapse: collapse; font-size: 12px; color: var(--color-text); } .e06-list th, .e06-cases th { position: sticky; top: 0; padding: 3px 4px; background: var(--color-surface); color: var(--color-text-secondary); font-weight: var(--font-weight-medium); text-align: left; } .e06-list td, .e06-cases td { padding: 3px 4px; border-top: 1px solid var(--color-border); } .e06-list tbody tr { cursor: pointer; } .e06-list tbody tr:hover { background: var(--color-surface-raised); } .e06-list tr.is-active { background: color-mix(in srgb, var(--color-primary) 16%, transparent); } .e06-detail h4 { margin: 0 0 4px; color: var(--color-text); } .e06-verdict { display: inline-flex; align-items: center; gap: 4px; font-weight: var(--font-weight-medium); white-space: nowrap; } .e06-verdict::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--e06-none); } .e06-verdict--ng::before { background: var(--e06-ng); border-radius: 2px; transform: rotate(45deg); } .e06-verdict--ok::before { background: var(--e06-ok); } .e06-verdict--check::before { background: var(--e06-check); border-radius: 0; clip-path: polygon(50% 0, 100% 100%, 0 100%); }