/* 수식(796-2) — 분수 · 첨자 · 괄호 · 줄 · 변수 풀이 · 블록 · 색은 공통 값만 */ .ui-eq { display: flex; flex-direction: column; gap: var(--spacing-8); min-width: 0; container-type: inline-size; font-size: var(--text-body); color: var(--color-text-body); } /* ── 식 그림 ── */ .ui-eq__expr, .ui-eq__body { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0 var(--spacing-4); min-width: 0; } .ui-eq__num, .ui-eq__str { font-variant-numeric: tabular-nums; } .ui-eq__str { color: var(--color-text-secondary); } .ui-eq__op { color: var(--color-text-secondary); padding: 0 1px; } .ui-eq__sym.is-latin { font-style: italic; font-family: "Cambria Math", "STIX Two Math", "Times New Roman", serif; } .ui-eq__script { font-size: 0.7em; line-height: 0; font-style: normal; } .ui-eq__var { border-radius: var(--radius-sm); } .ui-eq__var.is-pick, .ui-eq__block.is-pick { cursor: pointer; } .ui-eq__var.is-pick:hover, .ui-eq__var.is-pick:focus-visible { outline: 1px solid var(--color-accent); background: var(--color-accent-soft); } /* 분수 — 가로 줄 안에 위 · 아래를 세로로 쌓고 사이에 선 */ .ui-eq__frac { display: inline-flex; flex-direction: column; align-items: center; vertical-align: middle; min-width: 0; max-width: 100%; } .ui-eq__top { padding: 0 var(--spacing-4) 2px; border-bottom: 1px solid currentcolor; text-align: center; } .ui-eq__bottom { padding: 2px var(--spacing-4) 0; text-align: center; } /* 괄호 — 안 키에 맞춰 늘어나는 곡선 */ .ui-eq__paren { display: inline-flex; align-items: stretch; gap: 2px; } .ui-eq__paren::before, .ui-eq__paren::after { content: ""; flex: none; width: 5px; border: 1.5px solid currentcolor; } .ui-eq__paren::before { border-right: 0; border-radius: 8px 0 0 8px; } .ui-eq__paren::after { border-left: 0; border-radius: 0 8px 8px 0; } .ui-eq__inner { display: inline-flex; align-items: center; min-width: 0; } .ui-eq__fn { color: var(--color-text-secondary); } /* 조건 칩 · 하위 로직 칩 */ .ui-eq__cond, .ui-eq__block { display: inline-flex; align-items: center; gap: var(--spacing-4); padding: 0 var(--spacing-8); border: 1px solid var(--color-border-strong); border-radius: var(--radius-pills); background: var(--color-surface); font-size: var(--text-body-sm); max-width: 100%; } .ui-eq__cond-key { color: var(--color-warning); font-weight: var(--font-weight-medium); } .ui-eq__block { border-color: var(--color-info); } .ui-eq__block.is-pick:hover { background: var(--color-accent-soft); } .ui-eq__badge { color: var(--color-info); } .ui-eq__block-name { max-width: 14em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ui-eq__block-val { font-variant-numeric: tabular-nums; font-weight: var(--font-weight-medium); } /* ── 줄(800-2 — 구분선 · 번호 · 풀이 없음 · 식이 차례로 이어짐) ── */ .ui-eq__line { display: flex; flex-direction: column; gap: var(--spacing-4); padding: var(--spacing-4) 0; min-width: 0; } .ui-eq__main { min-width: 0; } /* 네 칸 상자 — 결과명 = 이름 식 = 값 식 = 결과 값 */ .ui-eq__box { display: inline-flex; align-items: center; gap: var(--spacing-4); padding: var(--spacing-4) var(--spacing-8); border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); background: var(--color-surface-raised); max-width: 100%; min-width: 0; } .ui-eq__res { font-weight: var(--font-weight-bold); font-variant-numeric: tabular-nums; } .ui-eq__unit { color: var(--color-text-secondary); font-size: var(--text-body-sm); font-weight: var(--font-weight-regular); } .ui-eq__raw { font-family: var(--font-mono, monospace); font-size: var(--text-body-sm); overflow-wrap: anywhere; } .ui-eq__bad { color: var(--color-danger); font-size: var(--text-caption); } /* 바로 고침 — 이름 식 칸을 누르면 그 자리에서 식 칸 */ .ui-eq__name.is-edit { cursor: text; } .ui-eq__name.is-edit:hover { border-color: var(--color-accent); } .ui-eq__name.is-open { flex: 1 1 24rem; align-items: flex-start; border-color: var(--color-accent); } .ui-eq__name.is-open > * { flex: 1 1 auto; min-width: 0; } /* 하위 로직 블록 — 접힘 */ .ui-eq__blockpanel { margin-left: var(--spacing-16); padding-left: var(--spacing-8); border-left: 2px solid var(--color-info); } .ui-eq__block-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8); } .ui-eq__blockpanel[data-open] .ui-eq__block-head .ui-btn__icon { transform: rotate(90deg); } .ui-eq__bundle { display: inline-flex; flex-wrap: wrap; gap: var(--spacing-8); font-size: var(--text-caption); font-variant-numeric: tabular-nums; color: var(--color-text-secondary); } .ui-eq__block-body { margin-top: var(--spacing-4); } .ui-eq__block-body .ui-eq__line { padding: var(--spacing-4); } :is(.ui-eq__block-body, .ui-eq__bad)[hidden] { display: none !important; } /* ── M02 SK 고친 칸 표지(796-2c) ── */ .ui-eq__mark { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-4); } .ui-eq__mark-was { color: var(--color-text-muted); font-size: var(--text-caption); } .ui-eq__line[data-removed] > .ui-eq__main { opacity: 0.5; } .ui-eq__line[data-removed] .ui-eq__res { text-decoration: line-through; } /* ── 단가산출 소계 · 합계(799-1 · 796-2c) ── */ .ui-eq__sum { display: flex; flex-direction: column; border-top: 1px solid var(--color-border); font-variant-numeric: tabular-nums; } .ui-eq__sum-row { display: grid; grid-template-columns: minmax(var(--spacing-96), 2fr) repeat(4, minmax(0, 1fr)); gap: var(--spacing-8); padding: var(--spacing-4) var(--spacing-8); border-bottom: 1px solid var(--color-border); } .ui-eq__sum-head { font-size: var(--text-caption); color: var(--color-text-secondary); } .ui-eq__sum-cell { text-align: right; } .ui-eq__sum-name { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-4); min-width: 0; } .ui-eq__sum-was, .ui-eq__sum-note { color: var(--color-text-muted); font-size: var(--text-caption); } .ui-eq__sum-note { padding: var(--spacing-4) var(--spacing-8); } .ui-eq__sum-row[data-eq-sum-state="뺌"] { opacity: 0.5; } .ui-eq__sum-row[data-eq-sum-state="뺌"] .ui-eq__sum-label { text-decoration: line-through; } .ui-eq__sum-tree { padding: var(--spacing-4) var(--spacing-8) var(--spacing-8) var(--spacing-16); border-bottom: 1px solid var(--color-border); } .ui-eq__sum-tree[hidden] { display: none !important; } .ui-eq__sum-row[data-eq-sum-kind="끝수"] { color: var(--color-text-secondary); } .ui-eq__sum-row[data-eq-sum-kind="합계"] { font-weight: var(--font-weight-semibold); } /* ── 변수 정의 영역(800-2) — 오른쪽 한 덩어리 ── */ .ui-eq__defs { position: sticky; top: var(--spacing-8); align-self: start; max-height: calc(100vh - var(--spacing-24)); overflow-y: auto; display: flex; flex-direction: column; gap: var(--spacing-4); min-width: 0; padding: var(--spacing-8); border-left: 1px solid var(--color-border); font-size: var(--text-body-sm); color: var(--color-text-secondary); } .ui-eq__defs-head { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); color: var(--color-text-muted); font-size: var(--text-caption); } .ui-eq__def { display: flex; flex-direction: column; gap: var(--spacing-4); padding: var(--spacing-4); border-radius: var(--radius-sm); min-width: 0; } .ui-eq__def-top { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .ui-eq__def.is-pick > .ui-eq__def-top { cursor: pointer; } .ui-eq__def.is-pick > .ui-eq__def-top:hover, .ui-eq__def[data-flash], .ui-eq__def[data-editing] { background: var(--color-accent-soft); } .ui-eq__def-main { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--spacing-4); color: var(--color-text-body); } .ui-eq__def-name { overflow-wrap: anywhere; } .ui-eq__def-tag { color: var(--color-text-muted); font-size: var(--text-caption); } .ui-eq__def-link { color: var(--color-text-muted); font-size: var(--text-caption); overflow-wrap: anywhere; } .ui-eq__def-empty { color: var(--color-text-muted); } /* ── 기준 단가산출별 묶음(800-4 · 요구 661) — 가. 이름 → 노 · 재 · 경 → 소 계 ── */ .ui-eq__grp { font-size: var(--text-body-sm); display: flex; flex-direction: column; gap: 2px; padding: var(--spacing-8) 0 var(--spacing-4); border-bottom: 1px solid var(--color-border); } .ui-eq__grp-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-4); padding: 0 var(--spacing-8); font-weight: var(--font-weight-semibold); } .ui-eq__grp-line { display: flex; align-items: baseline; gap: var(--spacing-4); padding: 0 var(--spacing-8) 0 var(--spacing-24); font-variant-numeric: tabular-nums; } .ui-eq__grp-key { min-width: 4.5em; color: var(--color-text-secondary); } .ui-eq__grp-total .ui-eq__sum-cell::before { content: attr(data-eq-sum-col) " "; color: var(--color-text-muted); font-size: var(--text-caption); } .ui-eq__grp-total { border-bottom: 0; font-weight: var(--font-weight-medium); }