/* 좌측 「구조물 옵션 보이기」 화면(메인 칸) — 왼쪽 종류(군별) · 오른쪽 옵션 체크 */ .m02-opts { display: flex; flex-direction: column; gap: var(--spacing-12); max-width: 64rem; font-size: var(--text-body-sm); } /* 종류 제목 */ .m02-options__head { margin: 0; color: var(--color-text); font-size: var(--text-body); } .m02-opts__panes { display: grid; grid-template-columns: minmax(14rem, 20rem) 1fr; gap: var(--spacing-16); align-items: start; } .m02-opts__kinds, .m02-opts__list { max-height: calc(100vh - 20rem); overflow-y: auto; display: flex; flex-direction: column; gap: var(--spacing-4); min-width: 0; } .m02-opts__group { margin: var(--spacing-8) 0 0; color: var(--color-text-muted); font-size: var(--text-body-sm); } .m02-opts__kind { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-4); padding: var(--spacing-4) var(--spacing-8); border: 1px solid transparent; border-radius: var(--radius-sm); background: none; color: var(--color-text); font: inherit; text-align: left; cursor: pointer; } .m02-opts__kind:hover { background: var(--color-mist-violet); } .m02-opts__kind.is-active { border-color: var(--color-accent); background: var(--color-mist-violet); } /* 옵션 줄 = 왼쪽 보이기 체크 · 라벨 · 키 · 표시 / 오른쪽 들어갈 자리(본체 · 그룹) */ .m02-opts__option { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); padding: var(--spacing-4) 0; border-bottom: 1px solid var(--color-border); } .m02-opts__check { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--spacing-8); min-width: 0; cursor: pointer; } /* 옵션 그룹(PLAN 46-2) — 그룹 줄 = 이름 · 옵션 수 · 위로 · 아래로 · 지우기 */ .m02-sog { display: flex; flex-direction: column; gap: var(--spacing-4); padding: var(--spacing-8) var(--spacing-12); border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface-raised); } .m02-sog__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8); } .m02-sog__name { flex: 1 1 12rem; min-width: 0; } .m02-sog__place { flex: none; width: 11rem; } .m02-opts__key { color: var(--color-text-muted); font-size: 11px; } /* 구조물 정의 편집 화면(PLAN 48-2) — 판 띠 · 종류 머리 · 옵션 · 선택지 · 배치 격자 · 규칙 · 지난 판 */ .m02-sod { max-width: 80rem; } .m02-sod__banner { display: flex; align-items: center; gap: var(--spacing-8); color: var(--color-text-muted); } .m02-sod__banner.is-past { padding: var(--spacing-4) var(--spacing-8); border: 1px solid var(--color-accent); border-radius: var(--radius-sm); background: var(--color-mist-violet); color: var(--color-text); } .m02-sod__family, .m02-sod__kindrow, .m02-sod__kindhead, .m02-sod__option, .m02-sod__choice, .m02-sod__place, .m02-sod__rule { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8); } .m02-sod__family { margin-top: var(--spacing-8); } .m02-sod__family > .ui-input { flex: 1 1 8rem; min-width: 0; font-weight: 600; } .m02-sod__kindrow { flex-wrap: nowrap; } .m02-sod__kindrow > .m02-opts__kind { flex: 1 1 auto; min-width: 0; } .m02-sod__kindrow > button:not(.m02-opts__kind), .m02-sod__family > button { flex: none; white-space: nowrap; } .m02-sod__block { display: flex; flex-direction: column; gap: var(--spacing-4); padding-top: var(--spacing-8); border-top: 1px solid var(--color-border); } .m02-sod__option { padding: var(--spacing-4) 0; border-bottom: 1px solid var(--color-border); } .is-off > .ui-input, .m02-opts__kind.is-off > span:first-child { color: var(--color-text-muted); text-decoration: line-through; } .m02-sod__name { flex: 1 1 10rem; min-width: 0; } .m02-sod__form, .m02-sod__default { width: 8rem; } .m02-sod__unit, .m02-sod__num { width: 4.5rem; } .m02-sod__check { display: inline-flex; align-items: center; gap: var(--spacing-4); white-space: nowrap; cursor: pointer; } .m02-sod__choices { display: flex; flex-direction: column; gap: var(--spacing-4); margin: 0 0 var(--spacing-8) var(--spacing-24); padding-left: var(--spacing-8); border-left: 2px solid var(--color-border); } /* 배치 격자 — 왼쪽 칸 숫자 · 오른쪽 미리보기 */ .m02-sod__layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(12rem, 22rem); gap: var(--spacing-16); align-items: start; } .m02-sod__place { flex-wrap: nowrap; } .m02-sod__placename { flex: 1 1 6rem; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .m02-sod__place > .m02-sod__num { flex: none; width: 4rem; } .m02-sod__grid { display: grid; gap: var(--spacing-4); padding: var(--spacing-8); border: 1px dashed var(--color-border); border-radius: var(--radius-sm); } .m02-sod__cell { overflow: hidden; padding: var(--spacing-4); border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface-raised); font-size: 11px; white-space: nowrap; text-overflow: ellipsis; } .m02-sod__cell.is-base { background: var(--color-mist-violet); } .m02-sod__cell.is-bad, .m02-sod__rule.is-bad { border-color: var(--color-danger); } .m02-sod__rule { padding: var(--spacing-4); border: 1px solid transparent; border-radius: var(--radius-sm); } .m02-sod__rulepick { width: 9rem; } .m02-sod__rulechoices { display: flex; flex-wrap: wrap; gap: var(--spacing-8); } /* 그룹 형상 칸 — 길이 · 높이 · 전 · 후 받기 + 뜻 */ .m02-sog__item { display: flex; flex-direction: column; gap: var(--spacing-4); padding-bottom: var(--spacing-4); border-bottom: 1px solid var(--color-border); } .m02-sog__shape { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: var(--spacing-4) var(--spacing-12); } .m02-sog__shapecell { display: flex; align-items: center; gap: var(--spacing-4); } .m02-sog__mean { flex: 1 1 auto; min-width: 0; } .m02-sod__issues:empty, .m02-sod__history:empty { display: none; } .m02-sod__history { display: flex; flex-wrap: wrap; gap: var(--spacing-4); } .m02-sod__bad { margin: 0; color: var(--color-danger); }