feat(B05·B06): 구조물 좌측 패널 「집계 항목」 줄 · 옵션 보이기 · [수정] 옵션 보존 · 목록 지정 색(21-4)

- 폼 옵션 아래 「집계 항목」 줄(이름 · 미지정 · [고르기] · [해제]) — 구조물 · 관 계열 하위 폼 · B05 · B06 한 코드
- 옵션 `visible:false` 는 폼에서 숨김(정의 · 옛 값 그대로) · [수정]은 폼이 그린 칸만 갈아 끼우고 안 그린 칸(상세 · 숨긴 칸) 보존 — 옵션 덮어쓰기 흠 고침
- 목록 줄 `.is-assigned` 색 · 툴팁 항목 이름 · 캐시는 지금 초안 기록 칸(structures · pipes) 안 summary_item
- 미지정이면 칸을 안 실음 · 관은 서버 응답에 칸이 없으면 같은 측점에서 화면이 이어받음
- 항목 고르기 모달은 21-5 가 오기 전까지 같은 이름의 임시 함수 · Structures_Panel 700줄 넘어 옵션 그리기를 Panel_Options 로 나눔

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TULoa94ZFL26KU6ZqVpjkF
This commit is contained in:
2026-09-29 12:19:31 +09:00
co-authored by Claude Sonnet 5.5
parent 9d85ce8b4a
commit 71fac35dab
23 changed files with 1018 additions and 104 deletions
@@ -437,3 +437,62 @@
.is-outside-standard {
border-color: var(--color-warning, #c98a00);
}
/* 집계 항목 줄(PLAN 21-4) — 옵션 · 시설 서브폼 아래 [이름][고르기][해제] 한 줄. 이름이 남는 폭을
* 먹고 말줄임 · 키는 툴팁에만. 지정되면 성공색(`.is-assigned`) — 목록 줄과 같은 색. */
.b05-structure__summary {
display: flex;
align-items: center;
gap: var(--spacing-8);
min-width: 0;
}
.b05-structure__summary[hidden] {
display: none;
}
.b05-structure__summary-label {
flex: none;
color: var(--color-text-secondary);
font-size: var(--text-caption);
}
.b05-structure__summary-name {
flex: 1 1 auto;
min-width: 0;
overflow: hidden;
color: var(--color-text-secondary);
font-size: var(--text-caption);
text-overflow: ellipsis;
white-space: nowrap;
}
/* 글자는 성공색에 본문색을 섞어 대비 4.5 를 넘김(성공색 그대로는 밝은 테마에서 4.4). */
.b05-structure__summary-name.is-assigned {
color: color-mix(in srgb, var(--color-success) 65%, var(--color-text));
}
.b05-structure__summary .b05-route__irregular-btn {
flex: none;
}
/* 목록 줄 — 집계 항목이 지정된 구조물 · 관은 왼쪽 선 + 이름 색으로(밝음 · 어두움 같은 토큰). */
.b05-route__irregular-item.is-assigned {
border-left: 3px solid var(--color-success);
}
.b05-route__irregular-item.is-assigned span {
color: color-mix(in srgb, var(--color-success) 65%, var(--color-text));
}
/* 임시 항목 고르기 모달(21-5 가 오면 사라짐) */
.b05-structure__pick-list {
display: flex;
flex-direction: column;
gap: var(--spacing-4);
margin-bottom: var(--spacing-8);
}
.b05-structure__pick-list .is-picked {
outline: 2px solid var(--color-success);
}