Files
Aislo/M01_MasterData/M01_MasterData_UI_Test_C_Style.css
T
eomsangdonandClaude Opus 5 17838d0098 feat(m01): 로직 테스트 방식 C — 흐름 그림
설계 값 → 표 찾기 → 수량 → × 단가 → 할증·덧줄 → 비목 합계 → 계 일곱 칸.
상자를 누르면 값·출처 · 로직이 부르는 로직은 상자 안에서 펼침 · 설계 값을 바꾸면
바로 다시 셈(로직 화면과 같은 `fetchLogic`·`runCalc` — 읽기·시험 계산만).
뼈대는 순수 모듈로 떼어 Node 헬퍼 + pytest 로 검증.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
2026-09-20 21:38:50 +09:00

183 lines
3.2 KiB
CSS

/* M01 로직 테스트 — 방식 C(흐름 그림). 왼쪽에서 오른쪽으로 칸 · 칸마다 상자 */
.m01c [hidden] {
display: none !important;
}
.m01c {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
padding: var(--spacing-12);
box-sizing: border-box;
color: var(--color-text-body);
font-size: var(--text-body-sm);
}
.m01c__head {
display: flex;
align-items: baseline;
gap: var(--spacing-8);
flex-wrap: wrap;
}
.m01c__head h3 {
margin: 0;
font-size: 16px;
color: var(--color-text);
}
.m01c__flow {
display: flex;
align-items: flex-start;
gap: var(--spacing-4);
overflow-x: auto;
padding-bottom: var(--spacing-8);
}
/* 값 칸은 다시 그려도 설계 값 칸은 그대로 — 그래서 한 겹 더 있음 */
.m01c__rest {
display: contents;
}
.m01c__col {
display: flex;
flex-direction: column;
gap: var(--spacing-4);
flex: 0 0 auto;
width: 170px;
min-width: 0;
}
.m01c__col--input {
width: 200px;
}
.m01c__col-head {
margin: 0;
padding-bottom: 2px;
border-bottom: 1px solid var(--color-border);
color: var(--color-text-muted);
font-size: var(--text-caption);
font-weight: 600;
}
.m01c__arrow {
align-self: center;
padding-top: 28px;
color: var(--color-text-muted);
font-size: 18px;
}
.m01c__box,
.m01c__group {
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-surface);
}
.m01c__group {
border-style: dashed;
background: none;
}
.m01c__group > summary {
padding: 2px 6px;
color: var(--color-text-muted);
font-size: var(--text-caption);
cursor: pointer;
}
.m01c__group > .m01c__box {
margin: 2px;
}
.m01c__box > summary {
display: flex;
flex-direction: column;
gap: 1px;
padding: 4px 6px;
cursor: pointer;
}
.m01c__box--bad {
border-color: var(--color-danger);
}
.m01c__label {
color: var(--color-text);
overflow-wrap: anywhere;
}
.m01c__value {
font-variant-numeric: tabular-nums;
font-weight: 600;
}
.m01c__note,
.m01c__muted {
color: var(--color-text-muted);
font-size: var(--text-caption);
}
.m01c__bad {
margin: 0;
color: var(--color-danger);
font-size: var(--text-caption);
}
.m01c__detail {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
gap: 1px var(--spacing-4);
margin: 0;
padding: 4px 6px;
border-top: 1px solid var(--color-border);
font-size: var(--text-caption);
}
.m01c__detail dt {
color: var(--color-text-muted);
}
.m01c__detail dd {
margin: 0;
overflow-wrap: anywhere;
}
.m01c__sub {
padding: 0 6px 4px;
font-size: var(--text-caption);
}
.m01c__sub > summary {
color: var(--color-text-muted);
cursor: pointer;
}
.m01c__sub-body ul {
margin: 2px 0;
padding-left: 14px;
}
.m01c__field {
display: flex;
flex-direction: column;
gap: 2px;
padding: 4px 6px;
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-surface);
}
.m01c__input {
box-sizing: border-box;
width: 100%;
min-width: 0;
padding: 3px 6px;
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-surface);
color: var(--color-text);
font-size: var(--text-body-sm);
}