/* 구조물 위치 조정 오버레이 창. */ /* 구조물 조정 오버레이 — **위쪽 기준**으로 붙인다(2026-08-24 사용자). 아래를 기준으로 * 두면 높이가 낮은 횡단도에서 창이 카드 위로 넘쳐 **제목·값 줄이 잘린다**. 카드 안에 * 넘칠 만큼 길어지면 창 안에서 스크롤한다. z-index는 카드 안 오버레이 중 최상단. */ .b06-structure-panel { position: absolute; /* 좌측 상단에는 절·성토 면적표가 이미 서 있다 — 조정창을 같은 자리에 두면 표를 덮어 수치가 안 보인다(2026-09-12 사용자). 표 높이(머리글+절토+성토 세 줄)만큼 내려 시작한다. 아래를 기준으로 붙이지 않는 까닭은 종전 그대로다 — 낮은 횡단도에서 창이 잘린다. */ top: calc(var(--spacing-8) + var(--b06-areas-height, 3.2rem)); left: var(--spacing-8); z-index: 20; display: flex; max-height: calc(100% - 2 * var(--spacing-8) - var(--b06-areas-height, 3.2rem)); flex-direction: column; gap: 2px; padding: var(--spacing-8); border: 1px solid var(--color-danger); border-radius: var(--radius-inputs); background: color-mix(in srgb, var(--color-surface-raised) 94%, transparent); overflow-y: auto; overscroll-behavior: contain; } /* 연동·경사 — 한 행에 버튼 두 개(2026-08-24 사용자). 켜짐은 채운 색으로 구분한다. */ .b06-structure-panel__controls.b06-structure-panel__toggles { display: flex; gap: 2px; } .b06-structure-panel__toggle { width: auto; padding: 0 var(--spacing-8); } /* 켜짐 색은 **주 액션 색**이다(2026-08-30 사용자: 붉은 채움이 경고처럼 보인다). * 경고·삭제 자리를 비워 두고, 옵션이 켜졌다는 사실만 조용히 알린다. */ .b06-structure-panel__toggle.is-on { border-color: var(--color-primary); background: var(--color-primary); color: var(--color-primary-text); } .b06-structure-panel.is-hidden, .b06-structure-panel__value span.is-hidden, .b06-structure-panel__btn.is-hidden, .b06-structure-panel__buttons.is-hidden, .b06-structure-panel__struct.is-hidden { display: none; } .b06-structure-panel__head { display: flex; align-items: center; gap: var(--spacing-8); justify-content: space-between; } .b06-structure-panel__title { color: var(--color-danger); font-size: var(--text-caption); font-weight: var(--font-weight-medium); } .b06-structure-panel__value { display: flex; flex-direction: column; gap: 1px; color: var(--color-text-secondary); font-size: var(--text-caption); } .b06-structure-panel__controls.b06-structure-panel__buttons { display: grid; grid-template-areas: ". up ." "left reset right" ". down equal"; justify-content: center; gap: 2px; } .b06-structure-panel__btn--up { grid-area: up; } .b06-structure-panel__btn--down { grid-area: down; } .b06-structure-panel__btn--left { grid-area: left; } .b06-structure-panel__btn--right { grid-area: right; } .b06-structure-panel__btn--reset { grid-area: reset; } .b06-structure-panel__btn--equal { grid-area: equal; } .b06-structure-panel__controls .b06-structure-panel__btn { box-sizing: border-box; width: 26px; height: 22px; padding: 0; text-align: center; line-height: 1; } .b06-structure-panel__hval { box-sizing: border-box; width: 3.5em; text-align: center; color: var(--color-text-body); font-size: var(--text-caption); align-self: center; } .b06-structure-panel__struct { display: flex; flex-direction: column; align-items: stretch; gap: 2px; color: var(--color-text-secondary); font-size: var(--text-caption); } .b06-structure-panel__label { color: var(--color-text-muted); font-size: var(--text-caption); line-height: 1.2; } .b06-structure-panel__controls { display: flex; align-items: center; gap: 2px; } /* 집수정 조작 = 9키(3×3, 2026-08-22 사용자) — 십자 축 이동 · 모서리 크기 · 중앙 초기화. 기슭막이 십자와 같은 폭·버튼 크기로 맞춰 행열이 어긋나지 않게 한다. */ .b06-structure-panel__controls.b06-structure-panel__basin-buttons { display: grid; grid-template-areas: "nw up ne" "left reset right" "sw down se"; justify-content: center; gap: 2px; } .b06-structure-panel__btn--nw { grid-area: nw; } .b06-structure-panel__btn--ne { grid-area: ne; } .b06-structure-panel__btn--sw { grid-area: sw; } .b06-structure-panel__btn--se { grid-area: se; } .b06-structure-panel__basin-reset { margin-left: auto; } .b06-structure-panel__select { flex: 1; padding: 1px var(--spacing-4); border: 1px solid var(--color-border); border-radius: var(--radius-inputs); background: var(--color-surface); color: var(--color-text); font-size: var(--text-caption); } .b06-structure-panel__btn { padding: 0 var(--spacing-8); border: 1px solid var(--color-border); border-radius: var(--radius-inputs); background: var(--color-surface); color: var(--color-text-secondary); cursor: pointer; font-size: var(--text-caption); line-height: 1.6; } .b06-structure-panel__btn:hover { border-color: var(--color-danger); color: var(--color-danger); } .b06-structure-panel__close { padding: 0 4px; border-color: transparent; background: transparent; } .b06-cross-card__zoom { position: absolute; top: var(--spacing-4); right: var(--spacing-4); z-index: 2; display: flex; overflow: hidden; border: 1px solid var(--color-border); border-radius: var(--radius-inputs); background: color-mix(in srgb, var(--color-surface-raised) 88%, transparent); } .b06-cross-card__zoom-btn { width: 22px; height: 22px; padding: 0; border: none; border-left: 1px solid var(--color-border); background: none; color: var(--color-text-secondary); font-size: 0.8rem; line-height: 1; cursor: pointer; } .b06-cross-card__zoom-btn:first-child { border-left: none; } .b06-cross-card__zoom-btn:hover { color: var(--color-text); background: var(--color-surface); } /* ── 좌측 [횡단 조정] 사본(2026-08-29 B05/B06 일원화) ───────────────────── * 오버레이 창과 같은 DOM을 좌측 사이드바에 흐름 배치로 세운다. */ .b06-structure-panel--dock { position: static; z-index: auto; max-height: none; margin-top: var(--spacing-8); border-color: var(--color-border); overflow: visible; } /* 9키·십자 위치제어(이동 D-pad·집수정 9키)는 횡단도 오버레이 전용 * (2026-08-29 사용자 지시 7) — 사본에서는 그 행을 통째로 숨긴다. */ .b06-structure-panel--dock .b06-structure-panel__struct:has(> .b06-structure-panel__controls.b06-structure-panel__buttons), .b06-structure-panel--dock .b06-structure-panel__struct:has( > .b06-structure-panel__controls.b06-structure-panel__basin-buttons ) { display: none; } /* [횡단 조정] 하위 컨테이너 — 구조물 배치 폼과 경계 구분(접이식). */ .b06-adjust-dock { margin-top: var(--spacing-8); padding-top: var(--spacing-8); border-top: 1px solid var(--color-border); } .b06-adjust-dock > summary { color: var(--color-text-body); font-size: var(--text-caption); font-weight: var(--font-weight-medium); cursor: pointer; } .b06-adjust-dock__empty { margin: var(--spacing-8) 0 0; color: var(--color-text-muted); font-size: var(--text-caption); } /* 횡단도 오버레이 창은 **위치제어 전용**으로 줄인다(2026-08-29 사용자 지시: 좌측 * [횡단 조정]과 내용이 같음을 확인한 뒤 중복 삭제). 십자(이동)·9키(집수정) 버튼 * 세트만 남기고, 값·형식·구간값 등 항목 행은 좌측 하나로 모은다. DOM·배선은 그대로라 * 두 창의 값은 계속 같이 움직인다. */ .b06-structure-panel:not(.b06-structure-panel--dock) .b06-structure-panel__struct:not( :has(> .b06-structure-panel__controls.b06-structure-panel__buttons) ):not(:has(> .b06-structure-panel__controls.b06-structure-panel__basin-buttons)) { display: none; } /* 집수정 기본값(↺)은 9키와 한 세트라 오버레이에만 둔다. */ .b06-structure-panel--dock .b06-structure-panel__basin-reset { display: none; } /* 좌측 폼과 중복된 행은 사본에서 숨긴다(2026-08-29 사용자 지시 3·5): * 형태 = 유입구·유출구 그룹의 "형태", 구조물 형식 = 유입구 "구조"로 합쳤다. */ .b06-structure-panel--dock .b06-structure-panel__struct--form, .b06-structure-panel--dock .b06-structure-panel__struct--inlet-kind { display: none; } /* 유입구·유출구 그룹으로 옮겨 붙은 행(단 수·옵션) — 그룹 안에서는 폼 여백을 따른다. */ .b05-structure__adjust-slot:empty { display: none; } .b05-structure__adjust-slot { display: flex; flex-direction: column; gap: 6px; } /* 유입구·유출구 그룹으로 옮겨 온 행(단 수·옵션) — 폼의 다른 항목과 같은 표기로 * 맞추고 2열로 세운다(2026-08-29 사용자 지시 1). 조정창 안에서 쓰던 어두운 행 * 양식은 여기서 벗는다. */ .b05-structure__adjust-slot { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } .b05-structure__adjust-slot .b06-structure-panel__struct { display: flex; min-width: 0; flex-direction: column; gap: 2px; } .b05-structure__adjust-slot .b06-structure-panel__label { color: var(--color-text-body); font-size: var(--text-caption); opacity: 1; } /* 단 수 [-][값][+]도 폼의 숫자 조정칸과 같은 한 덩어리로 보이게 한다. */ .b05-structure__adjust-slot .b06-structure-panel__controls { display: flex; overflow: hidden; min-width: 0; align-items: stretch; border: 1px solid var(--color-border); border-radius: var(--radius-inputs); background: var(--color-surface); gap: 0; } .b05-structure__adjust-slot .b06-structure-panel__controls .b06-structure-panel__btn { width: 28px; height: auto; min-height: 24px; border: 0; border-radius: 0; background: transparent; color: var(--color-text-body); } /* 옮겨 온 형태 드롭다운(다단 벽) — 폼의 다른 선택칸과 같은 한 덩어리로 앉힌다. */ .b05-structure__adjust-slot .b06-structure-panel__select { min-width: 0; flex: 1 1 auto; border: 0; background: transparent; color: var(--color-text); font-size: var(--text-caption); } .b05-structure__adjust-slot .b06-structure-panel__hval { display: flex; min-width: 0; flex: 1 1 auto; align-items: center; justify-content: center; border-right: 1px solid var(--color-border); border-left: 1px solid var(--color-border); color: var(--color-text); font-size: var(--text-caption); } /* 옵션 토글 둘은 한 덩어리 안에서 반씩 나눠 쓴다. */ .b05-structure__adjust-slot .b06-structure-panel__controls.b06-structure-panel__toggles .b06-structure-panel__toggle { width: auto; flex: 1 1 0; padding: 0; } .b05-structure__adjust-slot .b06-structure-panel__controls.b06-structure-panel__toggles .b06-structure-panel__toggle + .b06-structure-panel__toggle { border-left: 1px solid var(--color-border); } /* 도면에서 고른 구조물 쪽 그룹 강조(2026-08-29 사용자 지시) — 조정창 테두리와 같은 붉은 계열로 맞춰 "지금 만지는 구조물"이 한 색으로 읽히게 한다. */ .b05-structure__group.is-active { border-color: var(--color-danger); background: color-mix(in srgb, var(--color-danger) 8%, transparent); } .b05-structure__group.is-active > legend { color: var(--color-danger); opacity: 1; } /* 옮겨 온 옵션 토글(연동·경사) — 켜짐/꺼짐이 한눈에 보이게 한다(2026-08-29 사용자: * 활성인지 비활성인지 모르겠음). 슬롯 공통 버튼 규칙이 배경을 지워 두 상태가 같아 * 보였다. 켜짐은 조정창과 같은 붉은 채움, 꺼짐은 흐린 글자 + 옅은 바탕. */ .b05-structure__adjust-slot .b06-structure-panel__toggle { background: var(--color-surface); color: var(--color-text-muted); font-size: var(--text-caption); } .b05-structure__adjust-slot .b06-structure-panel__toggle.is-on { background: var(--color-primary); color: var(--color-primary-text); font-weight: var(--font-weight-medium); } .b05-structure__adjust-slot .b06-structure-panel__toggle:disabled { opacity: 0.45; cursor: default; }