/* view-only 화면: 1행 유사도 지도를 화면 전체에 채움 */
body.view-only {
  margin: 0;
  height: 100vh;
  overflow: hidden;
  background: var(--bg);
  /* 빈 영역 탭/드래그 시 텍스트·라벨·이미지가 선택되는 것 방지 */
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;       /* iOS 길게 누름 메뉴 차단 */
  -webkit-tap-highlight-color: transparent;
}
body.view-only .map.full {
  width: 100vw;
  height: 100vh;
  border-radius: 0;
  border: 0;
  touch-action: none;                /* 핀치/스크롤 등 기본 제스처 차단 */
}
body.view-only #edges,
body.view-only #edges * {
  /* SVG 라인/숫자 라벨은 호버용일 뿐, 탭으로 선택되지 않게 */
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
}
body.view-only .node img { -webkit-user-drag: none; user-drag: none; }
.view-status {
  position: fixed; bottom: 14px; left: 50%;
  transform: translateX(-50%);
  background: rgba(15,19,32,.85);
  border: 1px solid var(--line);
  color: var(--text);
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 13px;
  pointer-events: none;
}
.view-status.error { color: #ff7b7b; }

/* 모바일/태블릿: 노드와 라벨을 작게, 패딩 줄여 화면을 더 활용 */
@media (max-width: 768px) {
  .node img { width: 56px; height: 56px; border-width: 2px; }
  .node .cap { font-size: 10px; margin-top: 3px; }
  .map-controls { top: 8px; right: 8px; gap: 4px; }
  .mapbtn { width: 30px; height: 30px; font-size: 14px; }
  .edge-label { font-size: 10px; }
  .view-status { font-size: 11px; padding: 4px 9px; bottom: 8px; }
}
@media (max-width: 420px) {
  .node img { width: 44px; height: 44px; border-width: 2px; }
  .node .cap { font-size: 9px; }
}
