.m02-dfpanel { display: flex; flex-direction: column; gap: var(--spacing-8); font-size: var(--text-body); color: var(--color-text-body); } .m02-dfpanel-head, .m02-dfpanel-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8); } .m02-dfpanel-head { justify-content: space-between; } .m02-dfpanel-title { font-size: var(--text-subheading); } .m02-dfpanel-unitbox { display: inline-flex; align-items: center; gap: var(--spacing-8); margin-left: auto; } .m02-dfpanel-unit { width: 6em; text-align: center; } .m02-dfpanel-cell { padding: 2px var(--spacing-12); border: 1px solid var(--color-border); border-radius: var(--radius-pills); background: var(--color-surface-raised); } .m02-dfpanel-label { font-weight: var(--font-weight-bold); } .m02-dfpanel-note { color: var(--color-text-muted); font-size: var(--text-body-sm); } .m02-dfpanel .ui-btn, .m02-dfpanel .ui-input, .m02-dfpanel .ui-select { min-height: 44px; font-size: var(--text-body); } .m02-dfpanel-form { align-items: flex-end; padding: var(--spacing-8) var(--spacing-12); border: 1px solid var(--color-border); border-radius: var(--radius-cards); background: var(--color-surface-raised); } .m02-dfpanel-fieldbox { display: inline-flex; flex-direction: column; gap: 2px; } .m02-dfpanel-field { width: 9em; } .m02-dfpanel-field.is-num { width: 6em; } .m02-dfpanel-why, .m02-dfpanel-msg { margin: 0; padding: var(--spacing-8) var(--spacing-12); border-left: 4px solid var(--color-warning); background: var(--color-surface-raised); font-weight: var(--font-weight-medium); } .m02-dfpanel-chip { display: inline-flex; align-items: center; gap: var(--spacing-4); min-height: 44px; padding: 0 var(--spacing-12); border: 2px solid; border-radius: var(--radius-pills); background: var(--color-surface); color: inherit; font: inherit; font-weight: var(--font-weight-medium); } button.m02-dfpanel-chip { cursor: pointer; } button.m02-dfpanel-chip:focus-visible { outline: 2px solid var(--color-focus-ring); } .m02-dfpanel-chip.is-in { border-color: #3b82f6; } .m02-dfpanel-chip.is-in:not(.is-placed) { border-style: dashed; } .m02-dfpanel-chip.is-out { border-color: #f59e0b; } .m02-dfpanel-chip.is-var { border-color: #22a06b; } /* 판 높이 크게 — 안쪽 세로 스크롤 없이 보이게 */ .m02-dfpanel-sheet { position: relative; height: max(640px, calc(100vh - 260px)); border: 1px solid var(--color-border); border-radius: var(--radius-cards); overflow: hidden; } /* 칸 위 표시 — 색 + 글자(받음 · 변수 · 출력) 둘 다 */ .m02-dfpanel .aislo-cell[data-cf-kind="in"] { box-shadow: inset 0 0 0 2px #3b82f6; } .m02-dfpanel .aislo-cell[data-cf-kind="var"] { box-shadow: inset 0 0 0 2px #22a06b; } .m02-dfpanel .aislo-cell[data-cf-kind="out"] { box-shadow: inset 0 0 0 2px #f59e0b; } .m02-dfpanel .aislo-cell[data-cf-kind]::after { content: attr(data-cf-name); position: absolute; top: 0; right: 0; padding: 0 4px; border-radius: 0 0 0 6px; background: var(--color-surface); color: var(--color-text); font-size: 10px; line-height: 14px; pointer-events: none; } .m02-dfpanel .aislo-cell[data-cf-lock]::before { content: attr(data-cf-lock); position: absolute; bottom: 0; left: 0; padding: 0 4px; background: var(--color-surface); font-size: 10px; line-height: 14px; pointer-events: none; } .m02-dfpanel .aislo-cell[data-cf-err] { outline: 2px dashed var(--color-danger); outline-offset: -2px; }