Files
Aislo/M02_MasterTemplete/M02_MasterTemplete_Labor.css
T
eomsangdonandClaude Opus 5.5 1c0868b788 feat(M02): 일위대가 보기 갈래 한 줄 표(compact · 카드용) — 항목 · 수량산출 · 단위 · 노무비 · 재료비 · 경비 · 합계 · 금액 = 반영 · 없으면 기준 흐리게 · 자재 줄 같은 표 아래(40-1 ①)
- createLaborView(onRow, { compact: true }) · Labor_Rows compactTable · baseQtyText(결과단위 기준 수량) · qtyShort(손 5 ㎥ · B6 = 12.5 · —)
- 400px 이하면 결과 단위 칸 접음 · 300 · 320 · 360 · 420 · 560 에서 가로 넘침 없음
- 시험: test_m02_labor_values 에 수량산출 글 줄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-04 22:24:35 +09:00

267 lines
5.6 KiB
CSS

/* 일위대가 화면 — 표는 칸 폭을 채움 ·
흐린 안내 글은 보조 글색(뮤트 글색은 밝은 테마에서 대비 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);
}
.m02-labrow__name {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 12rem;
}
.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);
}
.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;
}
/* 입력 모달 */
.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__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__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;
}
}
/* 한 줄 표(카드용 · 40-1) — 금액 = 수량 반영 값 · 반영이 없으면 기준 값 흐리게 */
.m02-labline {
width: 100%;
font-size: var(--text-caption);
}
.m02-labline th,
.m02-labline td {
padding: var(--spacing-4) var(--spacing-6, 6px);
}
.m02-labline th:nth-child(n + 4),
.m02-labline .m02-labrow__num {
text-align: right;
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.m02-labline .m02-labrow__name {
display: table-cell;
min-width: 0;
overflow-wrap: anywhere;
}
.m02-labline .m02-labrow__qty,
.m02-labline .m02-labrow__unit {
color: var(--color-text-secondary);
overflow-wrap: anywhere;
}
.m02-labline .is-base {
color: var(--color-text-secondary);
font-style: italic;
}
.m02-labline .m02-labrow__sum td {
font-weight: 600;
border-top: 2px solid var(--color-border);
}
/* 아주 좁으면(카드 3열 · 400px 이하) 결과 단위 칸을 접음 — 수량산출 글에 단위가 같이 보임 */
@container m02-labview (max-width: 400px) {
.m02-labline th:nth-child(3),
.m02-labline .m02-labrow__unit {
display: none;
}
.m02-labline th,
.m02-labline td {
padding: var(--spacing-4) 3px;
}
}