/* 일위대가 화면 — 표는 칸 폭을 채움 · 흐린 안내 글은 보조 글색(뮤트 글색은 밝은 테마에서 대비 3.1 로 모자람) */ .m01-combo .m01-master__grid { width: 100%; } .m01-combo .m01-logic__muted { color: var(--color-text-secondary); } /* 일위대가 상세(39-3) — 담은 로직 · 자재목록 표 · 금액 칸 두 줄(위 기준 작게 · 아래 반영) */ .m02-labrow { width: 100%; } .m02-labrow__row.is-open { cursor: pointer; } .m02-labrow__row.is-open:hover { background: var(--color-mist-violet); } /* 이름 칸(45-7) — 칸은 표 칸 그대로(flex 면 칸 선이 끊김) · 코드 · 이름 · 설명은 글마다 한 줄 말줄임(전체 = title) */ .m02-labrow__name { min-width: 12rem; } .m02-labrow__name > * { display: block; max-width: 20rem; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .m02-labrow th, .m02-labrow__code, .m02-labrow__spec { white-space: nowrap; } .m02-labrow__key, .m02-labrow__note, .m02-labrow__muted { color: var(--color-text-secondary); font-size: var(--text-caption); overflow-wrap: anywhere; } .m02-labrow__empty { color: var(--color-danger); font-size: var(--text-caption); } .m02-labrow__money, .m02-labrow__num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; } .m02-labrow__money { vertical-align: top; } .m02-labrow__base { display: block; color: var(--color-text-secondary); font-size: var(--text-caption); } /* 자재 가격 다섯 — 기준단가가 된 칸(43-3) */ .m02-labrow__price.is-base-price { color: var(--color-accent); font-weight: 700; box-shadow: inset 0 -2px 0 var(--color-accent); } .m02-labrow__applied { display: block; } .m02-labrow__sum td { font-weight: 600; border-top: 2px solid var(--color-border); } .m02-labrow__move { white-space: nowrap; } /* 옵션 값 줄(44-6) — 이름 ~ 합계에 걸친 한 줄 말줄임(max-width 0 = 표 폭을 안 늘림) · 위 줄과 한 덩이 */ .m02-labrow .m02-labrow__optrow td { padding-top: 0; padding-bottom: var(--spacing-4); font-size: var(--text-caption); line-height: 1.5; } .m02-labrow__opt { max-width: 0; overflow: hidden; color: var(--color-text-secondary); white-space: nowrap; text-overflow: ellipsis; } .m02-labrow__row:has(+ .m02-labrow__optrow) td { border-bottom: 0; } .m02-labrow__optrow.is-open { cursor: pointer; } .m02-labrow__optrow.is-open:hover, .m02-labrow__row.is-open:hover + .m02-labrow__optrow { background: var(--color-mist-violet); } /* 별칭 칸(44-6) — 칸 안 글상자 · 누르면 바로 고침 */ .m02-labrow__alias { min-width: 7rem; } .m02-labrow__aliasin { width: 100%; min-width: 6rem; padding: 2px var(--spacing-4); border: 1px dashed var(--color-border); border-radius: var(--radius-sm, 4px); background: transparent; color: inherit; font: inherit; } .m02-labrow__aliasin:hover, .m02-labrow__aliasin:focus { border-color: var(--color-primary); border-style: solid; } /* 총합계 줄 전체 합계 칸(44-6) — 테두리 · 색 · 테두리는 안쪽 그림자(칸 선 굵기 안 바꿈 · 45-7) */ .m02-labrow__sum .m02-labrow__total { box-shadow: inset 0 0 0 2px var(--color-primary); background: var(--color-mist-violet); color: var(--color-primary); } /* 입력 모달 */ .m02-labin { width: min(40rem, calc(100vw - 32px)); } .m02-labin__qty { display: flex; flex-direction: column; gap: var(--spacing-4); padding-top: var(--spacing-8); border-top: 1px solid var(--color-border); } .m02-labin__qty-line { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8); font-size: var(--text-body-sm); } .m02-labin__muted { color: var(--color-text-secondary); font-size: var(--text-caption); } .m02-labin__lost { margin: 0; color: var(--color-danger); font-size: var(--text-caption); } .m02-labin__foot { display: flex; justify-content: flex-end; gap: var(--spacing-8); margin-top: var(--spacing-12); } /* 보기 갈래(면적산출 오른쪽 패널 · 일위대가 카드) */ .m02-labview { display: flex; flex-direction: column; gap: var(--spacing-8); min-width: 0; } .m02-labview__title { margin: 0; font-size: var(--text-body-sm); } /* 보기 갈래가 좁으면(면적산출 오른쪽 패널 등) 표를 줄마다 카드로 — 가로 스크롤 없이. 줄 = 이름 한 줄(차례 · 단위 곁) → 금액 넷 한 줄(칸 이름은 `data-label` · 합계만 굵게) · 자재 = 코드 · 이름 · 규격 한 줄 → 단위 · 수량 · 기준 단가 · 반영 금액 한 줄. 넓은 상세는 그대로 */ .m02-labview { container: m02-labview / inline-size; } @container m02-labview (max-width: 640px) { .m02-labrow, .m02-labrow tbody, .m02-labrow tfoot { display: block; width: 100%; } .m02-labrow thead { display: none; } .m02-labrow tr { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2px var(--spacing-8); padding: var(--spacing-8) 0; border-bottom: 1px solid var(--color-border); } .m02-labrow td { display: block; min-width: 0; padding: 0; border: 0; overflow-wrap: anywhere; } /* 이름 줄 — 차례 · 이름 · 결과 단위(자재 = 코드 · 이름 · 규격) */ .m02-labrow .m02-labrow__name { display: flex; flex-direction: column; grid-column: 1 / -1; order: 1; min-width: 0; } .m02-labrow .m02-labrow__name > * { max-width: none; } .m02-labrow .m02-labrow__no, .m02-labrow .m02-labrow__unit:not([data-label]), .m02-labrow .m02-labrow__code, .m02-labrow .m02-labrow__spec { grid-column: span 2; color: var(--color-text-secondary); font-size: var(--text-caption); } .m02-labrow .m02-labrow__unit:not([data-label]), .m02-labrow .m02-labrow__spec { text-align: right; } /* 수량산출 칸 — 윗줄에(차례 · 단위와 한 줄) · 칸 이름 없이 */ .m02-labrow:not(.m02-labline) tr:has(.m02-labrow__qty) .m02-labrow__no, .m02-labrow tr:has(.m02-labrow__qty) .m02-labrow__unit:not([data-label]) { grid-column: span 1; } .m02-labrow .m02-labrow__qty { order: 0; grid-column: span 2; text-align: left; } .m02-labrow .m02-labrow__qty::before { content: none; } .m02-labrow__sum .m02-labrow__qty, .m02-labrow__sum .m02-labrow__no, .m02-labrow__sum .m02-labrow__unit { display: none; } /* 금액 · 수 칸 — 칸 이름을 위에 작게 */ .m02-labrow [data-label] { order: 2; text-align: right; white-space: normal; font-size: var(--text-caption); } .m02-labrow [data-label]::before { content: attr(data-label); display: block; color: var(--color-text-secondary); font-size: var(--text-caption); } .m02-labrow .m02-labrow__money:last-of-type .m02-labrow__applied { font-weight: 700; } .m02-labrow__move { grid-column: 1 / -1; order: 3; text-align: right; } /* 옵션 값 줄 — 한 줄 통째 */ .m02-labrow__optrow .m02-labrow__no, .m02-labrow__sum .m02-labrow__alias { display: none; } .m02-labrow .m02-labrow__opt { grid-column: 1 / -1; max-width: none; } } /* 수량산출 칸(40-1) — 위 결과단위 기준 수량 · 아래 지금 수량 · 누르면 손 입력 · 엑셀에서 고르기 */ .m02-labrow__qty { white-space: nowrap; vertical-align: top; } .m02-labrow__qtybtn { display: block; width: 100%; padding: 2px var(--spacing-4); border: 1px dashed var(--color-border); border-radius: var(--radius-sm, 4px); background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; } .m02-labrow__qtybtn:hover { border-color: var(--color-primary); background: var(--color-mist-violet); } /* 수량산출 모달(43-1) — 위 지금 수량 · 손 입력 · [연결 풀기] / 아래 면적산출 시트(읽기만) */ .m02-labqty { width: min(960px, 94vw); } .m02-labqty__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8) var(--spacing-12); margin-bottom: var(--spacing-4); } .m02-labqty__now { font-weight: 600; font-variant-numeric: tabular-nums; }