/* ============================================================================= * B06_wf3_ProfileCross_UI_Style.css * 3차 워크플로우(종·횡단 생성) 페이지 전용 스타일. * * 원칙(frontend.md §1): 하드코딩 색상 금지. theme.css 변수(var(--...))만 참조. * 공통 컴포넌트 스타일은 ui_template_elements.ts가 주입하므로 여기서는 * B06 고유 레이아웃(옵션 그룹/결과 메트릭)만 정의한다. * ========================================================================== */ /* --- 좌측 입력 폼 --- */ .b06-profile-layout { height: calc(100vh - var(--spacing-64)); height: calc(100dvh - var(--spacing-64)); min-height: 0; overflow: hidden; } .b06-profile-layout .ui-workflow-layout__body, .b06-profile-layout .ui-workflow-layout__main { height: 100%; min-height: 0; } .b06-profile-layout .ui-workflow-layout__main { overflow: auto; } .b06-profile__form { display: flex; flex-direction: column; gap: var(--spacing-16); } .b06-profile__group { display: flex; flex-direction: column; gap: var(--spacing-16); margin: 0; padding: var(--spacing-16); border: 1px solid var(--color-border); border-radius: var(--radius-cards); background-color: var(--color-surface-raised); } .b06-profile__group-legend { padding: 0 var(--spacing-8); font-size: var(--text-caption); font-weight: var(--font-weight-medium); color: var(--color-text-secondary); } /* --- 읽기 전용 경로 컨텍스트 --- */ .b06-profile__info-line { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); font-size: var(--text-body-sm); color: var(--color-text-body); } .b06-profile__info-line span { color: var(--color-text-secondary); } .b06-profile__info-line strong { font-family: var(--font-mono); text-align: right; } /* --- 액션 버튼 행 --- */ .b06-profile__actions { display: flex; gap: var(--spacing-8); } .b06-profile__actions > * { flex: 1 1 0; min-width: 0; } /* --- 우측 결과 --- */ .b06-profile__result { display: flex; flex-direction: column; gap: var(--spacing-16); padding: var(--spacing-24); } .b06-profile__result-title { font-size: var(--text-subheading); color: var(--color-text); } .b06-profile__empty { color: var(--color-text-muted); font-size: var(--text-body-sm); } .b06-profile__result-body { display: flex; flex-direction: column; gap: var(--spacing-8); max-width: 480px; } .b06-profile__metric { display: flex; align-items: baseline; justify-content: space-between; gap: var(--spacing-16); padding: var(--spacing-8) var(--spacing-16); border-radius: var(--radius-inputs); background-color: var(--color-surface); } .b06-profile__metric-key { font-size: var(--text-caption); color: var(--color-text-secondary); } .b06-profile__metric-val { font-family: var(--font-mono); font-size: var(--text-body-sm); color: var(--color-text-body); word-break: break-all; text-align: right; } /* --- 종·횡단 도면 --- */ .b06-profile__main, .b06-section { display: flex; flex-direction: column; gap: var(--spacing-24); min-width: 0; } .b06-section { box-sizing: border-box; padding-inline: var(--spacing-24); } .b06-section__panel, .b06-cross-card { overflow: hidden; border: 1px solid var(--color-border); border-radius: var(--radius-cards); background: var(--color-surface-raised); } .b06-section__panel { position: sticky; z-index: 2; top: 0; } .b06-section__panel > header, .b06-cross-card > header, .b06-cross-card > footer { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); padding: var(--spacing-8) var(--spacing-16); background: var(--color-surface); color: var(--color-text-secondary); font-size: var(--text-caption); } .b06-section__panel > header { border-bottom: 1px solid var(--color-border); } .b06-section__panel > header h3, .b06-section__heading h3 { font-size: var(--text-body); } .b06-section__chart-wrap { width: 100%; overflow-x: auto; } .b06-section__chart { display: block; max-width: none; } .b06-cross-card > .b06-section__chart { width: 100%; } .b06-section__heading { display: flex; align-items: end; justify-content: space-between; gap: var(--spacing-16); color: var(--color-text-secondary); font-size: var(--text-caption); } .b06-section__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(480px, 100%), 1fr)); gap: var(--spacing-16); } .b06-cross-card { cursor: pointer; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); } .b06-cross-card:hover { border-color: var(--color-text-muted); box-shadow: var(--shadow-sm); } .b06-cross-card--selected { border-color: var(--color-danger); box-shadow: 0 0 0 2px var(--color-danger); } .b06-cross-card > header { border-bottom: 1px solid var(--color-border); } .b06-cross-card > header div { display: flex; align-items: baseline; gap: var(--spacing-8); } .b06-cross-card > header strong { color: var(--color-text); font-size: var(--text-body-sm); } .b06-cross-card > footer { border-top: 1px solid var(--color-border); } .b06-section__empty { display: flex; min-height: 180px; align-items: center; justify-content: center; padding: var(--spacing-24); border: 1px dashed var(--color-text-muted); color: var(--color-text-muted); background: var(--color-surface); } /* SVG 차트 색상은 테마 토큰만 사용한다. */ .b06-chart__bg { fill: var(--color-surface-raised); } .b06-chart__grid { stroke: var(--color-border); stroke-width: 1; } .b06-chart__axis { stroke: var(--color-text-secondary); stroke-width: 1; } .b06-chart__tick, .b06-chart__station-label, .b06-chart__axis-label { fill: var(--color-text-secondary); font-family: var(--font-body); } .b06-chart__tick, .b06-chart__station-label { font-size: 10px; } .b06-chart__axis-label { fill: var(--color-text-body); font-size: var(--text-caption); font-weight: var(--font-weight-medium); } .b06-chart__profile { fill: none; stroke: var(--color-chart-0); stroke-width: 2.5; } .b06-chart__cross-profile { fill: none; stroke: var(--color-chart-1); stroke-width: 2.4; } .b06-chart__station { cursor: pointer; } .b06-chart__station-line { stroke-width: 1.2; } .b06-chart__station-hit { stroke: transparent; stroke-width: 14; pointer-events: stroke; } .b06-chart__station-line--bp, .b06-chart__station-line--regular { stroke: var(--color-warning); } .b06-chart__station-line--ep { stroke: var(--color-accent); stroke-dasharray: 4 3; } .b06-chart__station-line--selected, .b06-chart__center-marker { stroke: var(--color-danger); stroke-width: 2.5; } .b06-chart__station--selected .b06-chart__station-label { fill: var(--color-danger); font-weight: var(--font-weight-bold); }