/* Metalogy Spatial Editor — 상호작용 '드롭 메뉴' (v2.0.27, assets/ix-menu.js)
   편집 창(메뉴 구조 · 항목 설정 · 미리 보기 · 메뉴 설정)과 편집 칸 요약. 편집기 모양(--accent · --line · --text · --muted · --field ·
   .modal · .btn · .seg · .switch)을 따른다. 미리 보기 안의 단추 · 목록은 뷰어 interactions.css(.mse-dm-*)가 그린다. */

/* ---- 창 */
dialog.modal.ix-menu-modal { width: min(1280px, calc(100vw - 32px)); height: min(860px, calc(100vh - 32px)); }
dialog.modal.ix-menu-modal[open] { display: flex; flex-direction: column; }
.ixm-head { gap: 8px; }
.ixm-head h2 { flex: 1 1 auto; }
.ixm-head-tools { display: flex; gap: 4px; margin-right: 6px; }
.ixm-head-tools .btn:disabled { opacity: .35; }
.ix-menu-modal .modal-body.ixm-body {
  display: grid; grid-template-columns: minmax(270px, 320px) minmax(300px, 1fr) minmax(310px, 370px); gap: 14px;
  overflow: hidden; padding-bottom: 14px;
}
.ix-menu-modal .modal-foot { align-items: center; }
.ixm-foot-note { flex: 1 1 auto; min-width: 0; color: var(--muted); font-size: 12px; }
.ixm-foot-note.is-bad { color: #ff9aa9; }

.ixm-col { display: flex; flex-direction: column; min-width: 0; min-height: 0; border: 1px solid #ffffff14; border-radius: 13px; background: #ffffff05; }
.ixm-col-head {
  flex: none; display: flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 12px; border-bottom: 1px solid #ffffff10;
  font-size: 12.5px; font-weight: 600; color: #d5dde6;
}
.ixm-col-head > span:first-child { flex: 1 1 auto; }
.ixm-count { color: var(--dim); font-weight: 500; font-variant-numeric: tabular-nums; }

/* ---- 왼쪽: 메뉴 구조 */
.ixm-adds { flex: none; display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 10px 6px; }
.ixm-adds .btn svg { width: 14px; height: 14px; }
.ixm-tree-wrap { position: relative; flex: 1 1 auto; min-height: 0; display: flex; }
.ixm-tree { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 4px 6px 8px; outline: none; scrollbar-width: thin; scrollbar-color: #ffffff22 transparent; }
.ixm-tree:focus-visible { box-shadow: inset 0 0 0 1px #2fd3a866; border-radius: 8px; }
.ixm-tree.is-dragging { cursor: grabbing; }
.ixm-row {
  position: relative; display: flex; align-items: center; gap: 5px; height: 34px; padding: 0 4px 0 calc(2px + var(--d, 0) * 18px);
  border-radius: 8px; color: var(--text); font-size: 13px; cursor: pointer; user-select: none;
  transition: background-color .15s, box-shadow .15s, opacity .15s;
}
.ixm-row:hover { background: #ffffff0a; }
.ixm-row.is-sel { background: #2fd3a817; box-shadow: inset 0 0 0 1px #2fd3a866; }
.ixm-row.is-hidden { opacity: .5; }
.ixm-row.is-dragging { opacity: .35; }
.ixm-row.is-drop-in { background: #2fd3a826; box-shadow: inset 0 0 0 2px var(--accent); }
.ixm-grip { flex: none; display: grid; place-items: center; width: 16px; height: 26px; color: #ffffff40; cursor: grab; touch-action: none; }
.ixm-grip svg { width: 14px; height: 14px; }
.ixm-row:hover .ixm-grip { color: #ffffff8c; }
.ixm-fold, .ixm-fold-gap { flex: none; width: 18px; height: 18px; }
.ixm-fold { display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; color: var(--muted); cursor: pointer; }
.ixm-fold svg { width: 13px; height: 13px; transition: transform .2s; }
.ixm-fold.is-folded svg { transform: rotate(-90deg); }
.ixm-fold:hover { background: #ffffff14; color: var(--text); }
.ixm-glyph { flex: none; display: grid; place-items: center; width: 22px; height: 22px; color: var(--accent); }
.ixm-glyph svg { width: 15px; height: 15px; }
.ixm-row.is-heading .ixm-glyph, .ixm-row.is-separator .ixm-glyph { color: var(--dim); }
.ixm-label { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ixm-row.is-heading .ixm-label { color: #aebbc8; font-size: 11.5px; font-weight: 700; letter-spacing: .06em; }
.ixm-row.is-group .ixm-label { font-weight: 600; }
.ixm-sepline { display: block; height: 1px; margin-right: 8px; background: #ffffff2a; }
.ixm-kind { flex: none; padding: 1px 6px; border-radius: 5px; background: #ffffff0f; color: var(--dim); font-size: 10.5px; font-weight: 600; white-space: nowrap; }
.ixm-flag { flex: none; display: grid; place-items: center; width: 16px; height: 16px; border-radius: 50%; background: #ffd479; color: #1a1408; font-size: 11px; font-weight: 800; }
.ixm-row.is-bad .ixm-flag { background: #ff7a8c; color: #1a0508; }
.ixm-row.is-bad .ixm-label { color: #ffb4c0; }
.ixm-eye { flex: none; display: grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: #ffffff4d; cursor: pointer; opacity: 0; transition: opacity .15s, background-color .15s, color .15s; }
.ixm-eye svg { width: 15px; height: 15px; }
.ixm-row:hover .ixm-eye, .ixm-row.is-sel .ixm-eye, .ixm-eye.is-off { opacity: 1; }
.ixm-eye:hover { background: #ffffff14; color: var(--text); }
.ixm-eye.is-off { color: #ffd479; }
.ixm-dropmark { position: absolute; right: 8px; height: 2px; border-radius: 1px; background: var(--accent); box-shadow: 0 0 0 2px #2fd3a833; pointer-events: none; }
.ixm-empty { display: grid; gap: 6px; margin: 18px 10px; padding: 16px; border: 1px dashed #ffffff26; border-radius: 11px; color: var(--muted); font-size: 12.5px; line-height: 1.6; text-align: center; }
.ixm-empty strong { color: var(--text); font-size: 13px; }
.ixm-empty b { color: #d5dde6; }
/* v2.4.12 두 줄 — 차례 · 하위 메뉴 안팎 · 삭제 / 복제 · 복사 · 붙여넣기 */
.ixm-tree-tools { flex: none; display: flex; flex-direction: column; gap: 4px; padding: 6px 8px; border-top: 1px solid #ffffff10; }
.ixm-tools-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.ixm-tree-tools .btn:disabled { opacity: .35; }
.ixm-tree-tools .danger { margin-left: auto; }
.ixm-fills { flex: none; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; padding: 8px 10px 10px; border-top: 1px solid #ffffff10; }
.ixm-fills-label { width: 100%; color: var(--dim); font-size: 11px; font-weight: 600; letter-spacing: .04em; }

/* ---- 가운데: 항목 설정 */
.ixm-props { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 4px 16px 18px; scrollbar-width: thin; scrollbar-color: #ffffff22 transparent; }
.ixm-props .ix-field { margin-top: 14px; }
.ixm-props .field { width: 100%; }
.ixm-props select.field { height: 34px; }
.ixm-kinds { flex-wrap: wrap; }
.ixm-kinds .seg-btn { display: inline-flex; align-items: center; gap: 6px; }
.ixm-kinds .seg-btn svg { width: 14px; height: 14px; }
.ixm-action:empty { display: none; }
.ixm-view .ix-state { margin: 0 0 8px; }
.ixm-none { display: grid; gap: 8px; margin: 26px 6px; color: var(--muted); font-size: 12.5px; line-height: 1.65; }
.ixm-none strong { color: var(--text); font-size: 13.5px; }
.hint.ixm-bad { color: #ff9aa9; }
.ixm-icon-pick { display: grid; gap: 8px; }
.ixm-icon-row { display: flex; align-items: center; gap: 10px; }
/* v2.0.31 지금 아이콘: 큰 칸 + 이름 · 아래 아이콘 칸은 늘 펼침 (넘치면 칸 안에서 굴림) */
.ixm-icon-cur { flex: 1 1 auto; display: inline-flex; align-items: center; gap: 10px; min-width: 0; color: #d5dde6; font-size: 12.5px; }
.ixm-icon-tile { display: grid; flex: none; place-items: center; width: 34px; height: 34px; border-radius: 9px; border: 1px solid #2fd3a866; background: #2fd3a814; color: var(--accent); }
.ixm-icon-tile svg { width: 20px; height: 20px; }
.ixm-icon-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ixm-icon-none { display: inline-grid; place-items: center; color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .02em; }
.ixm-icon-none.is-dot::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.ixm-icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(36px, 1fr)); gap: 4px; padding: 6px; border: 1px solid #ffffff14; border-radius: 10px; background: #0b1116; }
.ixm-icon-grid.is-open { max-height: 158px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #ffffff22 transparent; }
.ixm-icon-grid[hidden] { display: none; }
.ixm-icon-btn {
  display: grid; place-items: center; height: 34px; padding: 0; border: 1px solid transparent; border-radius: 8px;
  background: transparent; color: #c8d3dd; cursor: pointer; transition: background-color .15s, border-color .15s, color .15s;
}
.ixm-icon-btn svg { width: 18px; height: 18px; }
.ixm-icon-btn:hover { background: #ffffff10; color: #fff; }
.ixm-icon-btn[aria-checked="true"] { border-color: var(--accent); background: #2fd3a81f; color: #fff; }
.ixm-icon-btn.is-none { font-size: 11.5px; color: var(--muted); }

/* ---- 오른쪽: 미리 보기 · 메뉴 설정 */
.ixm-col-side { overflow: auto; scrollbar-width: thin; scrollbar-color: #ffffff22 transparent; }
.ixm-pv-seg .seg-btn { padding: 0 10px; }
.ixm-preview {
  position: relative; flex: none; margin: 10px 10px 0; height: 300px; overflow: hidden; border-radius: 11px;
  border: 1px solid #ffffff1a; background: radial-gradient(120% 90% at 30% 20%, #1c2a33, #090d11 70%);
}
.ixm-preview.has-bg::before {
  content: ""; position: absolute; inset: -12px; background: var(--ixm-bg) center / cover no-repeat; filter: blur(2px) brightness(.62); transform: scale(1.02);
}
.ixm-preview[data-layout="mobile"] { width: 200px; height: 400px; margin: 10px auto 0; border-radius: 22px; }
.ixm-pv-note { margin: 8px 12px 0 !important; }
/* v2.0.31 미리 보기 조작 · 크게 보기 (창 안 실제 크기) */
.ixm-pv-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 10px 0; }
.ixm-pv-tools .seg-btn { padding: 0 9px; }
.ixm-pv-tool.is-on { border-color: #2fd3a899; background: #2fd3a81f; color: #fff; }
.ixm-preview.is-big { position: fixed; inset: 7vh 3vw 10vh; z-index: 30; height: auto; margin: 0; box-shadow: 0 30px 90px #000c, 0 0 0 1px #2fd3a855; }
.ixm-preview.is-big + .ixm-pv-tools { position: fixed; left: 50%; bottom: 2.5vh; z-index: 31; margin: 0; padding: 6px 8px; border: 1px solid #2fd3a855; border-radius: 12px; background: #0b1116f2; box-shadow: 0 12px 40px #000b; transform: translateX(-50%); }
/* 설명 (두 번째 줄) · 그림 */
.ixm-img-row { display: flex; align-items: center; gap: 12px; }
.ixm-img-pv { display: grid; flex: none; place-items: center; width: 72px; height: 46px; overflow: hidden; border-radius: 8px; border: 1px solid #ffffff1a; background: #0b1116; }
.ixm-img-pv img { width: 100%; height: 100%; object-fit: cover; }
.ixm-img-empty { color: var(--muted); font-size: 11.5px; }
.ixm-img-tools { display: flex; flex-wrap: wrap; gap: 6px; }
/* v2.0.31 스위치 줄: 작은 설명은 이름 아래 다음 줄 */
.ixm-sw > label { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ixm-sw .ixm-sw-note { display: block; line-height: 1.4; }
.ixm-settings { padding: 4px 14px 18px; }
.ixm-set-head { margin: 16px 0 2px; padding-top: 12px; border-top: 1px solid #ffffff10; color: #d5dde6; font-size: 12.5px; font-weight: 700; }
.ixm-settings .ix-field { margin-top: 12px; }
.ixm-settings .field { width: 100%; }
.ixm-settings select.field { height: 32px; }
.ixm-settings .ix-check-row { margin-top: 8px; }
.ixm-settings .ix-check-row > label { font-size: 12.5px; }
/* v2.7.6 보이는 때 (이 맵 메뉴만 — ix-menu.js vis): 시작 시 숨기기 줄 · 특정 조건 시 표시 칸 (빠른 이동 편집 칸 .ix-qm-opt 모양) */
.ixm-settings .ixm-vis-when { margin-top: 10px; }
.ixm-settings .ixm-vis-when > .ix-check-row { margin: 0; }
.ixm-settings .ixm-vis-note { margin: 6px 0 0; }
.ixm-vis-sub { margin-top: 4px; color: var(--muted); font-size: 11.5px; font-weight: 600; }
.ixm-sum-vis { margin: 2px 0 0; }
.ixm-place { display: grid; gap: 8px; }
.ixm-place .seg { flex-wrap: wrap; }
.ixm-offs { display: flex; flex-wrap: wrap; gap: 8px 14px; }
.ixm-off-row { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; }
.ixm-off-row .field.num { width: 64px; }

/* 좁은 화면: 세 칸을 위아래로 (창 전체가 굴러감) */
@media (max-width: 980px) {
  dialog.modal.ix-menu-modal { height: calc(100vh - 32px); }
  .ix-menu-modal .modal-body.ixm-body { grid-template-columns: 1fr; overflow: auto; }
  .ixm-col-tree { min-height: 420px; }
  .ixm-col-props { min-height: 360px; }
}

/* 메뉴를 가져올 맵 고르기 */
dialog.modal.ixm-pick-modal { width: min(460px, calc(100vw - 32px)); }
.ixm-pick-list { display: grid; gap: 6px; margin-top: 10px; }
.ixm-pick {
  display: grid; grid-template-columns: 20px 1fr; align-items: center; gap: 2px 10px; padding: 10px 12px; text-align: left;
  border: 1px solid #ffffff1f; border-radius: 10px; background: #ffffff06; color: var(--text); cursor: pointer;
}
.ixm-pick svg { grid-row: span 2; width: 18px; height: 18px; color: var(--accent); }
.ixm-pick small { color: var(--dim); font-size: 11px; }
.ixm-pick:hover { border-color: #ffffff45; background: #ffffff0a; }

/* ---- 편집 칸(왼쪽 탭): 요약 · 짧은 개요 */
.ixm-sec .ixm-sum { margin: 2px 0 6px; }
.ixm-outline { display: grid; gap: 2px; margin: 0 0 8px; padding: 6px; list-style: none; border: 1px solid #ffffff10; border-radius: 9px; background: #ffffff04; }
.ixm-out { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 3px 6px 3px calc(6px + var(--d, 0) * 14px); border-radius: 6px; font-size: 12px; color: #d5dde6; }
.ixm-out > span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ixm-out > small { flex: none; color: var(--dim); font-size: 10.5px; }
.ixm-out.is-group > span { font-weight: 600; }
.ixm-out.is-heading > span { color: #aebbc8; font-size: 11px; font-weight: 700; letter-spacing: .05em; }
.ixm-out.is-hidden { opacity: .5; }
.ixm-out.is-bad > span { color: #ffb4c0; }
.ixm-out.is-more { color: var(--dim); font-size: 11.5px; }
.ixm-out .ixm-sepline { flex: 1 1 auto; }

/* 다른 상호작용 편집 칸의 '드롭 메뉴에 넣기' */
.ix-menu-add-row { margin-top: 8px; }

/* 시점 맞추기 — 편집 창을 잠시 내린 동안 화면 아래 막대 */
.ixm-pickbar {
  position: fixed; left: 50%; bottom: 88px; z-index: 1000; display: flex; align-items: center; gap: 10px; max-width: calc(100vw - 32px);
  padding: 10px 12px 10px 16px; border: 1px solid #2fd3a866; border-radius: 13px; background: #0b1116f2; color: var(--text);
  box-shadow: 0 16px 44px #000a, 0 0 0 4px #2fd3a814; transform: translateX(-50%); font-size: 13px;
}
.ixm-pickbar-text { min-width: 0; color: var(--muted); }
.ixm-pickbar-text strong { color: var(--text); font-weight: 600; }
/* v2.7.0 맵 색상 동작 (안내 글은 늘 보임 · 효과 시간) */
.ixm-mct-guide { margin: 0; padding: 8px 10px; border-radius: 8px; background: #2fd3a812; color: #bfeee0; font-size: 12px; line-height: 1.55; }
.ixm-mct-guide.is-empty { background: #ffd4791a; color: #ffe3a6; }
.ixm-mct-durrow { display: flex; align-items: center; gap: 8px; }
.ixm-mct-durrow .ixm-mct-dur { flex: 0 0 72px; width: 72px; height: 30px; text-align: right; }
.ixm-mct-durrow small { font-size: 11px; }

/* v2.7.1 자리 여덟: 3 x 3 칸 (가운데 = 화면, 빈 칸), 시점 이동 방식 */
.ixm-place-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 4px; border: 1px solid #ffffff14; border-radius: 10px; background: #ffffff05; }
.ixm-place-grid .ixm-place-btn { min-width: 0; height: 32px; padding: 0 4px; justify-content: center; border-radius: 7px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ixm-place-mid { display: flex; align-items: center; justify-content: center; min-height: 32px; border: 1px dashed #ffffff1f; border-radius: 7px; color: var(--dim, #8a96a3); font-size: 11px; }
.ixm-move-seg { display: flex; }
.ixm-move-seg .seg-btn { flex: 1 1 0; justify-content: center; }
.ixm-mct-durrow .ixm-view-time { flex: 0 0 72px; width: 72px; height: 30px; text-align: right; }
