/**
 * [Purpose] : 메인 홈 화면의 전체 레이아웃 구성을 담당하며, 지도 영역과 하단 컨트롤 패널의 6열 컬럼 구조를 정의하는 스타일시트
 * [Dependencies] : index.html (템플릿), home_core.js (패널 리사이즈), home_views.js (뷰 리스트 관리)
 * [Data Flow] : N/A (상수 및 스타일 정의)
 * [Side Effects] : 
 *   - UI (DOM) 스타일링: #app의 플렉스 레이아웃, 하단 컨트롤 패널(#ctrl-panel)의 높이 및 내부 6열(.ctrl-col) 구조화
 *   - 스크롤바 제어: 컨트롤 패널 내부 각 컬럼(.ctrl-col-body)의 커스텀 스크롤바 스타일 적용
 * [Constraints / Notes] : 
 *   - 높이 제한: #ctrl-panel은 min-height(8px)와 max-height(100vh - 40px) 제한이 설정되어 리사이즈 시 범위를 이탈하지 않도록 함
 *   - 상태 제어: .ctrl-panel-disabled 클래스가 추가되면 패널 전체의 투명도가 낮아지고 포인터 이벤트가 차단됨
 *   - 뷰 관리: 뷰 아이템(.view-item)의 이름 수정 시 .view-edit-input을 노출하여 인라인 편집 UI 제공
 */

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html,
body {
  height: 100%;
  overflow: hidden;
  font-family: 'Noto Sans KR', sans-serif;
  background: #f0f2f5;
}

/* ─── 전체 레이아웃 ──────────────────────────── */
#app {
  display: flex;
  height: 100vh;
  width: 100vw;
  overflow: hidden;
}

/* ─── 지도 영역 ───────────────────────────────── */
#map-area {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
  z-index: 1;
}

#map-wrap {
  position: relative;
  width: 100%;
  flex: 1;
  min-height: 0;
}

#main-map {
  width: 100%;
  height: 100%;
}

/* ─── 컨트롤 패널 ─────────────────────────────── */
#ctrl-panel {
  height: 200px;
  min-height: 8px;
  max-height: calc(100vh - 40px);
  flex-shrink: 0;
  background: #1e2533;
  color: #cdd4e0;
  border-top: 2px solid #2d3748;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
}

#ctrl-view-title {
  text-align: center;
  padding: 4px 12px;
  font-size: 14px;
  font-weight: 700;
  color: #e2e8f0;
  background: #111827;
  border-bottom: 1px solid #2d3748;
  flex-shrink: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#ctrl-view-title .view-modified-tag {
  font-size: 11px;
  font-weight: 500;
  color: #f5a623;
  margin-left: 6px;
}

#ctrl-panel-header {
  display: flex;
  align-items: center;
  padding: 3px 10px;
  border-bottom: 1px solid #2d3748;
  flex-shrink: 0;
  gap: 8px;
  background: #171e2d;
}

#ctrl-panel-inner {
  display: flex;
  flex-direction: row;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  transition: opacity .2s;
}

#ctrl-panel-inner.ctrl-panel-disabled {
  opacity: 0.35;
  pointer-events: none;
}

/* ─── 6열 컬럼 ────────────────────────────────── */
.ctrl-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  border-right: 1px solid #2d3748;
  overflow: hidden;
}

.ctrl-col:last-child {
  border-right: none;
}

.ctrl-col-title {
  font-size: 10px;
  font-weight: 700;
  color: #718096;
  letter-spacing: .7px;
  text-transform: uppercase;
  padding: 4px 8px;
  border-bottom: 1px solid #2d3748;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 4px;
}

.ctrl-col-body {
  flex: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  padding: 6px 10px;
  gap: 4px;
  min-height: 0;
}

.ctrl-col-body::-webkit-scrollbar { width: 6px; }
.ctrl-col-body::-webkit-scrollbar-track { background: transparent; }
.ctrl-col-body::-webkit-scrollbar-thumb { background: #718096; border-radius: 3px; }
.ctrl-col-body::-webkit-scrollbar-thumb:hover { background: #a0aec0; }

/* ─── 레이어 서브 타이틀 ──────────────────────── */
.layer-sub-title {
  font-size: 9px;
  font-weight: 600;
  color: #718096;
  padding: 3px 8px;
  border-bottom: 1px solid #2d3748;
  flex-shrink: 0;
  text-transform: uppercase;
  letter-spacing: .4px;
}

/* ─── 뷰 관리 ─────────────────────────────────── */
.ctrl-save-view-btn {
  padding: 4px 8px;
  background: #2d3748;
  border: 1px solid #4a5568;
  color: #a0aec0;
  border-radius: 4px;
  cursor: pointer;
  font-size: 12px;
  flex-shrink: 0;
  transition: all .12s;
}

.ctrl-save-view-btn:hover {
  border-color: #1a73e8;
  color: #1a73e8;
}

.view-item {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 6px;
  border-radius: 4px;
  border: 1px solid #2d3748;
  font-size: 10px;
  color: #a0aec0;
  margin-bottom: 3px;
  transition: all .12s;
}

.view-item:hover {
  border-color: #4a5568;
  background: rgba(255, 255, 255, 0.04);
}

.view-item-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}

.view-item-name:hover {
  color: #e2e8f0;
}

.view-item-btns {
  display: flex;
  gap: 2px;
  flex-shrink: 0;
}

.view-item-btn {
  background: none;
  border: none;
  color: #4a5568;
  cursor: pointer;
  font-size: 11px;
  padding: 1px 3px;
  border-radius: 3px;
  line-height: 1;
  transition: color .12s;
}

.view-item-btn:hover {
  color: #a0aec0;
}

.view-edit-input {
  width: 100%;
  background: #1a2035;
  border: 1px solid #1a73e8;
  color: #e2e8f0;
  border-radius: 4px;
  padding: 3px 6px;
  font-size: 11px;
  outline: none;
}

