Files
Aislo/M02_MasterTemplete/M02_MasterTemplete_Labor_Diagram.css
T

312 lines
6.2 KiB
CSS

.m02-labordg {
--dg-노무비: #2f9e8f;
--dg-재료비: #d98a1d;
--dg-경비: #8a63d2;
--dg-값: #7a8699;
display: flex;
flex-direction: column;
gap: var(--spacing-8);
font-size: var(--text-body-sm);
color: var(--color-text-body);
}
.m02-labordg__bar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--spacing-8);
}
.m02-labordg__zoom {
min-width: 3em;
font-weight: var(--font-weight-bold);
}
.m02-labordg__hint {
color: var(--color-text-muted);
}
.m02-labordg__viewport {
position: relative;
height: clamp(320px, 62vh, 640px);
border: 1px solid var(--color-border);
border-radius: var(--radius-cards);
background: var(--color-surface);
overflow: hidden;
cursor: default;
}
.m02-labordg__viewport.is-space,
.m02-labordg__viewport.is-panning {
cursor: grab;
}
.m02-labordg__viewport.is-panning {
cursor: grabbing;
}
.m02-labordg__world {
position: absolute;
top: 0;
left: 0;
width: max-content;
transform-origin: 0 0;
}
.m02-labordg__lines {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
}
.m02-labordg__grid {
position: relative;
display: grid;
column-gap: 0;
row-gap: 0;
padding: var(--spacing-16);
}
.m02-labordg__head {
padding: var(--spacing-4) var(--spacing-8);
font-weight: var(--font-weight-bold);
}
.m02-labordg__head.is-bin,
.m02-labordg__cell {
border-left: 2px solid var(--dg-노무비);
border-right: 2px solid var(--dg-노무비);
}
.m02-labordg__head.is-bin {
border-top: 2px solid var(--dg-노무비);
border-radius: var(--radius-cards) var(--radius-cards) 0 0;
text-align: center;
background: color-mix(in srgb, var(--dg-노무비) 22%, var(--color-surface));
}
.m02-labordg__cell {
display: flex;
flex-direction: column;
justify-content: center;
min-height: 4rem;
padding: var(--spacing-4) var(--spacing-8);
background: color-mix(in srgb, var(--dg-노무비) 8%, var(--color-surface));
border-bottom: 1px solid var(--color-border);
}
.m02-labordg__cell.is-total {
border-bottom: 2px solid var(--dg-노무비);
border-radius: 0 0 var(--radius-cards) var(--radius-cards);
font-weight: var(--font-weight-bold);
}
.m02-labordg__cell.is-zero {
opacity: 0.45;
}
.m02-labordg__cell-name {
color: var(--color-text-secondary);
}
.m02-labordg__cell-amount {
font-weight: var(--font-weight-bold);
}
.m02-labordg__head.is-재료비,
.m02-labordg__cell.is-재료비 {
border-color: var(--dg-재료비);
}
.m02-labordg__head.is-재료비 {
background: color-mix(in srgb, var(--dg-재료비) 22%, var(--color-surface));
}
.m02-labordg__cell.is-재료비 {
background: color-mix(in srgb, var(--dg-재료비) 8%, var(--color-surface));
}
.m02-labordg__head.is-경비,
.m02-labordg__cell.is-경비 {
border-color: var(--dg-경비);
}
.m02-labordg__head.is-경비 {
background: color-mix(in srgb, var(--dg-경비) 22%, var(--color-surface));
}
.m02-labordg__cell.is-경비 {
background: color-mix(in srgb, var(--dg-경비) 8%, var(--color-surface));
}
.m02-labordg__head.is-값,
.m02-labordg__cell.is-값 {
border-color: var(--dg-값);
}
.m02-labordg__head.is-값 {
background: color-mix(in srgb, var(--dg-값) 22%, var(--color-surface));
}
.m02-labordg__cell.is-값 {
background: color-mix(in srgb, var(--dg-값) 8%, var(--color-surface));
}
/* 넣을 값 묶음 */
.m02-labordg__group {
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: center;
gap: var(--spacing-4);
padding: var(--spacing-8);
min-width: 13rem;
}
.m02-labordg__pill {
display: flex;
justify-content: space-between;
gap: var(--spacing-8);
padding: 2px var(--spacing-8);
border: 1px solid var(--color-border);
border-radius: var(--radius-pills);
background: var(--color-surface-raised);
color: inherit;
font: inherit;
text-align: left;
cursor: pointer;
}
.m02-labordg__pill.is-empty {
border: 2px dashed var(--color-danger);
}
.m02-labordg__pill.is-empty .m02-labordg__pill-value {
color: var(--color-danger);
font-weight: var(--font-weight-bold);
}
.m02-labordg__pill-name {
font-weight: var(--font-weight-medium);
}
.m02-labordg__pill:focus-visible,
.m02-labordg__card:focus-visible {
outline: 2px solid var(--color-focus-ring);
}
.m02-labordg__pill.is-hot {
border-color: var(--color-primary);
background: color-mix(in srgb, var(--color-primary) 18%, var(--color-surface));
}
/* 로직 카드 — 둥근 카드 */
.m02-labordg__card {
display: flex;
flex-direction: column;
align-self: center;
gap: 2px;
margin: var(--spacing-8) 0;
padding: var(--spacing-8) var(--spacing-12);
border: 2px solid var(--color-border);
border-radius: 1.2rem;
background: var(--color-surface-raised);
color: inherit;
font: inherit;
text-align: left;
cursor: pointer;
}
.m02-labordg__card:hover {
border-color: var(--color-primary);
}
.m02-labordg__card.is-stop {
border-style: dashed;
border-color: var(--color-danger);
}
.m02-labordg__card-key {
color: var(--color-text-muted);
}
.m02-labordg__card-name {
font-size: var(--text-body);
}
.m02-labordg__card-unit {
color: var(--color-text-secondary);
}
.m02-labordg__card-out {
margin-top: 2px;
font-weight: var(--font-weight-bold);
}
/* 선 */
.m02-labordg__wire {
fill: none;
stroke: var(--color-border);
stroke-width: 2;
}
.m02-labordg__out {
fill: none;
stroke: var(--dg-노무비);
stroke-width: 2.5;
}
.m02-labordg__out.is-재료비 {
stroke: var(--dg-재료비);
}
.m02-labordg__out.is-경비 {
stroke: var(--dg-경비);
}
.m02-labordg__out.is-값 {
stroke: var(--dg-값);
}
.m02-labordg__out.is-zero {
opacity: 0.2;
}
.m02-labordg__same {
fill: none;
stroke: var(--color-text-muted);
stroke-width: 1.5;
stroke-dasharray: 4 4;
opacity: 0.55;
}
.m02-labordg__same.is-hot {
stroke: var(--color-primary);
stroke-width: 2.5;
opacity: 1;
}
.m02-labordg__none {
margin: var(--spacing-16);
color: var(--color-text-muted);
}
/* 다이어그램에서 눌러 찾아온 미리 보기 입력 칸 */
.m02-labor__flash {
outline: 3px solid var(--color-primary);
outline-offset: 2px;
animation: m02-labor-flash 0.4s ease-in-out 3;
}
@keyframes m02-labor-flash {
50% {
outline-color: transparent;
}
}
.m02-labor__dg > summary {
cursor: pointer;
font-weight: var(--font-weight-bold);
}