
#draw-ui.floating {
  background: #2b702e !important;
  color: #ffffff !important;
  border: 1px solid #1c4b20 !important;
  border-radius: 4px !important;
  padding: 6px 12px !important;
  box-shadow: 0 4px 10px rgba(0,0,0,0.3) !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-family: inherit !important;
  z-index: 9999 !important;
}

#draw-ui.floating #draw-msg {
  display: none !important;
}

#draw-ui.floating button {
  background: #8e24aa !important;
  color: #ffffff !important;
  border: none !important;
  border-radius: 4px !important;
  padding: 4px 8px !important;
  font-size: 14px !important;
  font-weight: bold !important;
  cursor: pointer !important;
}

#draw-ui.floating button:hover {
  background: #ab47bc !important;
}

#draw-ui.floating #draw-finish-btn {
  background: #1565c0 !important;
  color: #ffffff !important;
  border-radius: 4px !important;
  padding: 4px 10px !important;
  font-size: 13px !important;
  box-shadow: none !important;
}

#draw-ui.floating #draw-auto-label {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  color: #ffffff !important;
  font-size: 13px !important;
  font-weight: bold !important;
  cursor: pointer !important;
}

#draw-ui.floating #draw-auto-chk {
  width: 16px !important;
  height: 16px !important;
  margin: 0 !important;
  cursor: pointer !important;
}

#draw-ui.floating #topo-type-sel {
  border-radius: 4px !important;
  padding: 3px 6px !important;
  font-size: 12px !important;
}




* { margin:0; padding:0; box-sizing:border-box; }



html, body { 



  height:100%; font-family:'맑은 고딕', sans-serif; font-size:14px; 



  display:flex; flex-direction:column; 



  touch-action: pan-x pan-y; /* 모바일 브라우저 전체화면 핀치 줌 방지 (스크롤만 허용) */



  overscroll-behavior: none; /* 당겨서 새로고침 방지 (바운스 효과 차단) */



}







/* ── 툴바 ── */



#toolbar {



  min-height:48px; background:#1e3a5f; color:#fff;



  display:flex; align-items:center; gap:6px; padding:8px 12px;



  /* 조서/관라벨 등 side panel(z=3000)보다 위에 두어 줄바꿈된 툴바 버튼 클릭 보장 */
  flex-shrink:0; position:relative; z-index:5000;



  flex-wrap:wrap; /* 모바일에서 공간 부족 시 아랫줄로 넘김 */



}



#toolbar > * { flex-shrink:0; } /* 버튼들이 찌그러지지 않도록 보호 */

/* 툴바 옆 설정 패널 — 실제 툴바 높이 아래 배치 (줄바꿈 반영) */
.tb-side-panel {
  position: fixed !important;
  top: calc(var(--toolbar-h, 52px) + 6px) !important;
  right: 8px;
  left: auto;
  z-index: 3000;
  max-height: calc(100dvh - var(--toolbar-h, 52px) - 14px) !important;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}

/* 세로 좁은 화면: 패널을 툴바 아래 가로 전폭으로 두어 아이콘 영역과 겹침 최소화 */
@media (max-width: 768px) and (orientation: portrait) {
  .tb-side-panel {
    left: 8px !important;
    right: 8px !important;
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }
}



#toolbar .logo { height:32px; width:auto; margin-right:6px; flex-shrink:0; }







/* GPS 버튼 */



#btn-gps {



  padding:5px 10px; border:none; border-radius:4px; cursor:pointer;



  font-size:16px; background:#3a5f8a; color:#fff; line-height:1;



  transition:background .15s;



}



#btn-gps:hover    { background:#4a7cb5; }



#btn-gps.locating { background:#e67e22; animation:gps-pulse .8s infinite alternate; }



#btn-gps.located  { background:#27ae60; }



@keyframes gps-pulse { from { opacity:1; } to { opacity:.5; } }

/* 배경지도 전환 버튼 (지도 좌상단, 줌 컨트롤 아래) */
#btn-basemap {
  position:absolute; top:74px; left:8px; z-index:200;
  width:34px; height:34px; padding:0;
  border:1px solid #c8d2de; border-radius:4px;
  background:rgba(255,255,255,0.95); font-size:18px; line-height:1;
  cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,0.25);
}
#btn-basemap:hover { background:#eef4fb; }

/* 지적도(지번) 표시 토글 버튼 (배경지도 전환 버튼 바로 아래) */
#btn-cadastral {
  position:absolute; top:112px; left:8px; z-index:200;
  width:34px; height:34px; padding:0;
  border:1px solid #c8d2de; border-radius:4px;
  background:rgba(255,255,255,0.95); font-size:16px; line-height:1;
  cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,0.25);
}
#btn-cadastral:hover { background:#eef4fb; }
#btn-cadastral.active { background:#27ae60; }

/* 현재화면 지번 DXF 내보내기 버튼 (지적도 토글 버튼 바로 아래) */
#btn-cadastral-export {
  position:absolute; top:150px; left:8px; z-index:200;
  width:34px; height:34px; padding:0;
  border:1px solid #c8d2de; border-radius:4px;
  background:rgba(255,255,255,0.95); font-size:16px; line-height:1;
  cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,0.25);
}
#btn-cadastral-export:hover { background:#eef4fb; }



/* #sel-class: 숨긴 input으로 변경 (분야는 프로젝트에서 관리) */

/* 분야 다중선택 체크박스 그룹 */
.prj-field-group {
  display:flex; flex-wrap:wrap; gap:4px 6px; align-items:center;
  padding:5px 6px; border:1px solid #c8d0dc; border-radius:4px;
  background:#fff; font-size:13px;
}
.prj-field-group label {
  display:inline-flex; align-items:center; gap:2px; cursor:pointer;
  font-weight:600; color:#34495e; margin:0;
}
.prj-field-group input[type="checkbox"] { margin:0; cursor:pointer; }



.tb-btn {



  padding:5px 12px; border:none; border-radius:4px; cursor:pointer;



  font-size:13px; font-weight:600; background:#3a5f8a; color:#fff;



  transition:background .15s;



}



.tb-btn:hover  { background:#4a7cb5; }



.tb-btn.active { background:#27ae60; }



.tb-sep { width:1px; height:24px; background:#3a5f8a; margin:0 4px; }







@media (max-width: 768px) {



  #toolbar {



    padding: 6px 8px;



    gap: 4px;



  }



  .tb-btn {



    padding: 5px 8px;



    font-size: 12px;



  }



  .tb-sep {



    margin: 0 2px;



  }



  #toolbar .logo {



    height: 28px;

  }

  /* 모바일용 프로젝트 설정 카드 여백 및 2단 배치 */
  .setup-prj-item {
    flex-wrap: wrap !important;
    padding: 10px 12px !important;
    gap: 8px !important;
  }
  .setup-prj-item .prj-info {
    flex: none !important;
    width: calc(100% - 40px) !important; /* 체크 표시 너비를 뺌 */
  }
  .setup-prj-btns {
    width: 100% !important;
    justify-content: flex-start !important;
    margin-top: 4px !important;
  }

}







.tb-toggle { padding:5px 8px; border:none; border-radius:4px; cursor:pointer; font-size:12px; font-weight:700; color:#fff; transition:opacity .15s; }



.tb-toggle.off { opacity:0.4; }



.tb-toggle-csv { background:#9b59b6; }



.tb-toggle-dxf { background:#f39c12; }



.tb-toggle-sheet { background:#e67e22; }







/* ── 레이아웃 ── */



#layout { display:flex; flex:1; width:100%; overflow:hidden; position:relative; }



#map-wrap { flex:1; position:relative; }



#map { width:100%; height:100%; }



body.drawing #map { cursor:crosshair; }







/* ── 속성 패널 (방향 반응형) ── */



#attr-panel {



  background:#fff; display:flex; flex-direction:column;



  transition:transform .25s ease;



  position:fixed; z-index:100;



}







/* 드래그 핸들 (portrait 전용) */



#panel-handle {



  display:none; width:40px; height:4px;



  background:#ccc; border-radius:2px;



  margin:10px auto 4px; flex-shrink:0;



}







/* 세로(portrait): 하단 시트 */



@media (orientation: portrait) {



  #attr-panel {



    left:0; right:0; bottom:0;



    width:100%; height:48vh;



    border-top:2px solid #d0d8e4;



    border-left:none;



    border-radius:14px 14px 0 0;



    box-shadow:0 -6px 24px rgba(0,0,0,.13);



    transform:translateY(110%);



  }



  #attr-panel.open  { transform:translateY(0); }



  #panel-handle     { display:block; }



}







/* 가로(landscape) + 데스크탑: 우측 패널 */



@media (orientation: landscape) {



  #attr-panel {



    right:0; top:48px; bottom:0;



    width:340px;



    border-left:1px solid #d0d8e4;



    border-top:none;



    transform:translateX(110%);



  }



  #attr-panel.open  { transform:translateX(0); }



  #panel-handle     { display:none; }



}







.panel-head {



  background:#1e3a5f; color:#fff; padding:10px 14px;



  display:flex; align-items:center; justify-content:space-between; flex-shrink:0;



}



.panel-head h3 { font-size:14px; font-weight:700; }



.panel-head .close-btn {



  background:none; border:none; color:#fff; font-size:18px;



  cursor:pointer; line-height:1; padding:0 2px;



}







/* 단계 표시 */



.phase-badge {



  font-size:11px; font-weight:600; padding:2px 8px; border-radius:10px;



  margin-left:8px;



}



.phase-badge.p1 { background:#f39c12; color:#fff; }



.phase-badge.p2 { background:#27ae60; color:#fff; }







.panel-body { flex:1; overflow-y:auto; padding:12px; }







/* 폼 필드 */



.form-group { margin-bottom:8px; }



.form-group label {



  display:block; font-size:12px; color:#555; margin-bottom:3px; font-weight:600;



}



.form-group select,



.form-group input[type=text],



.form-group input[type=number],



.form-group textarea {



  width:100%; padding:6px 8px; border:1px solid #c8d0dc; border-radius:4px;



  font-size:13px; background:#fff;



}



.form-group textarea { resize:vertical; min-height:50px; }



.form-group select:focus,



.form-group input:focus,



.form-group textarea:focus { outline:none; border-color:#4a7cb5; }







.depth-dropdown-group { display: flex; align-items: center; gap: 4px; }



.depth-dropdown-group select {



  flex: 1; padding: 6px 2px; border: 1px solid #c8d0dc; border-radius: 4px;



  font-size: 14px; background: #fff; text-align: center; min-width: 0;



}



.depth-dropdown-group span { font-weight: 800; font-size: 20px; color: #111827; line-height: 1; }







.section-divider {



  font-size:12px; font-weight:700; color:#1e3a5f;



  border-bottom:2px solid #1e3a5f; padding-bottom:4px;



  margin:14px 0 8px;



}















/* 이미지 그리드 */



.img-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:8px; }



.img-slot {



  border:1px dashed #aab; border-radius:6px; aspect-ratio:4/3;



  display:flex; flex-direction:column; align-items:center; justify-content:center;



  overflow:hidden; position:relative; background:#f8f9fb;



  transition:border-color .15s;



}



.img-slot:hover { border-color:#4a7cb5; }



.img-slot.has-img .del-btn { display:flex; }



.slot-actions {



  display:flex; gap:8px; align-items:center; justify-content:center;



  width:100%; padding:0 8px 18px; box-sizing:border-box;



}



.slot-pick-btn {



  flex:1; max-width:88px; min-height:54px;



  display:flex; flex-direction:column; align-items:center; justify-content:center;



  gap:2px; border:1px solid #c5d4e8; border-radius:8px;



  background:#fff; color:#2c4a6e; font-size:11px; line-height:1.2;



  cursor:pointer; padding:6px 4px; -webkit-tap-highlight-color:transparent;



}



.slot-pick-btn:active { background:#e8f0fa; }



.slot-pick-ico { font-size:18px; line-height:1; }



.slot-pick-txt { font-size:11px; color:#456; }



.img-slot .slot-label {



  font-size:11px; color:#888; text-align:center; padding:4px;



  position:absolute; bottom:0; left:0; right:0;



  background:rgba(255,255,255,.85);



}



.img-slot img { width:100%; height:100%; object-fit:cover; }



.img-slot .del-btn {



  position:absolute; top:3px; right:3px;



  background:rgba(0,0,0,.5); color:#fff; border:none;



  border-radius:50%; width:20px; height:20px; font-size:12px;



  cursor:pointer; display:none; align-items:center; justify-content:center;



}



.img-slot:hover .del-btn { display:flex; }



.btn-add-img {



  width:100%; padding:7px; border:1px dashed #4a7cb5; border-radius:4px;



  background:#f0f5ff; color:#4a7cb5; font-size:13px; cursor:pointer;



  margin-bottom:4px;



}



.btn-add-img:hover { background:#e0edff; }







/* 패널 하단 버튼 */



.panel-foot {



  padding:10px 12px; border-top:1px solid #d0d8e4; display:flex; gap:8px; flex-shrink:0;



  flex-direction:column;



}



.panel-foot-btns { display:flex; gap:8px; width:100%; }







/* 업로드 진행 표시 */



.upload-status {



  width:100%; display:flex; flex-direction:column; gap:5px;



}



.upload-status-text {



  font-size:12px; color:#1e3a5f; font-weight:600;



  display:flex; justify-content:space-between; align-items:center;



}



.upload-status-text .upload-count {



  font-size:13px; font-weight:700; color:#27ae60;



}



.upload-bar-wrap {



  width:100%; height:6px; background:#e0e8f0; border-radius:3px; overflow:hidden;



}



.upload-bar-fill {



  height:100%; background:linear-gradient(90deg,#27ae60,#2ecc71);



  border-radius:3px; transition:width .3s ease;



  width:0%;



}



.btn-save {



  flex:1; padding:9px; background:#27ae60; color:#fff;



  border:none; border-radius:4px; font-size:14px; font-weight:700; cursor:pointer;



}



.btn-save:hover { background:#219a52; }



.btn-cancel {



  padding:9px 16px; background:#95a5a6; color:#fff;



  border:none; border-radius:4px; font-size:14px; cursor:pointer;



}



.btn-cancel:hover { background:#7f8c8d; }



.btn-skip {



  padding:9px 16px; background:#7f8c8d; color:#fff;



  border:none; border-radius:4px; font-size:13px; cursor:pointer;



}



.btn-skip:hover { background:#636e72; }



.btn-quick {



  flex:1; padding:9px; background:#3498db; color:#fff;



  border:none; border-radius:4px; font-size:14px; font-weight:700; cursor:pointer;



}



.btn-quick:hover { background:#2980b9; }







/* ── portrait: 폼 2컬럼 그리드 + 컴팩트 스타일 ── */



@media (orientation: portrait) {



  /* 일반 필드: 2열 */



  #fields-container {



    display:grid; grid-template-columns:1fr 1fr; gap:0 8px;



  }



  /* textarea·geom-tip·section-divider 는 전체 열 차지 */



  #fields-container .form-group:has(textarea),



  #fields-container .geom-edit-tip,



  #fields-container .section-divider {



    grid-column:1 / -1;



  }



  /* view-row (조회 모드) 도 2열 */



  #fields-container .view-row { grid-column:auto; }







  /* 컴팩트: 마진·패딩·폰트 축소 */



  .panel-body { padding:8px 10px; }



  .form-group { margin-bottom:5px; }



  .form-group label { font-size:11px; margin-bottom:2px; }



  .form-group select,



  .form-group input[type=text],



  .form-group input[type=number] { padding:4px 6px; font-size:12px; }



  .view-row { margin-bottom:5px; }



  .view-row .v-label { font-size:10px; margin-bottom:1px; }



  .view-row .v-value { font-size:12px; padding:3px 6px; min-height:24px; }



  .section-divider { margin:8px 0 5px; font-size:11px; }



  .panel-foot { padding:7px 10px; }



  .btn-save, .btn-cancel, .btn-skip, .btn-quick { padding:7px; font-size:13px; }



}







/* ── 지오메트리 편집 안내 ── */



.geom-edit-tip {



  background:#fff8e6; border:1px solid #ffc107; border-radius:6px;



  padding:8px 10px; margin-bottom:10px; font-size:12px; color:#664d03; line-height:1.6;



}







/* ── 조회 모드 읽기전용 ── */



.view-row { margin-bottom:8px; }



.view-row .v-label {



  font-size:11px; color:#888; font-weight:600; margin-bottom:2px;



}



.view-row .v-value {



  font-size:13px; color:#1a2f4a; padding:5px 8px;



  background:#f5f7fa; border-radius:4px; min-height:28px; word-break:break-all;



}



.view-img-slot {



  border:1px solid #d0d8e4; border-radius:6px; aspect-ratio:4/3;



  overflow:hidden; position:relative; cursor:pointer;



}



.view-img-slot img { width:100%; height:100%; object-fit:cover; }



.view-img-slot .slot-label {



  position:absolute; bottom:0; left:0; right:0;



  font-size:11px; color:#555; text-align:center; padding:3px;



  background:rgba(255,255,255,.85);



}







/* 이미지 전체화면 */



#img-viewer {



  position:fixed; inset:0; background:rgba(0,0,0,.88);



  display:flex; align-items:center; justify-content:center; z-index:600;



}



#img-viewer img { max-width:92vw; max-height:88vh; border-radius:4px; }



#img-viewer .iv-close {



  position:absolute; top:16px; right:20px; color:#fff; font-size:28px;



  background:none; border:none; cursor:pointer; line-height:1;



}







/* ── 다이얼로그 ── */



.dialog-overlay {



  position:fixed; inset:0; background:rgba(0,0,0,.45);



  display:flex; align-items:center; justify-content:center; z-index:500;



}



.dialog-box {



  background:#fff; border-radius:8px; padding:24px; max-width:320px; width:90%;



  text-align:center; box-shadow:0 4px 24px rgba(0,0,0,.2);



}



.dialog-box p { margin-bottom:16px; font-size:14px; line-height:1.6; }



.dialog-btns { display:flex; gap:8px; }



.dialog-btns button { flex:1; padding:9px; border:none; border-radius:4px; font-size:14px; cursor:pointer; }



.btn-yes { background:#27ae60; color:#fff; font-weight:700; }



.btn-no  { background:#e0e0e0; color:#333; }







/* ── 프로젝트 모달 ── */



#prj-modal {



  position:fixed; inset:0; background:rgba(0,0,0,.55);



  display:none; align-items:center; justify-content:center; z-index:600;



}



#prj-modal.open { display:flex; }



#dxf-export-modal {



  position:fixed; inset:0; background:rgba(0,0,0,.55);



  display:none; align-items:center; justify-content:center; z-index:9500;



}



#dxf-export-modal.open { display:flex; }



.prj-box {



  background:#fff; border-radius:10px; width:92%; max-width:420px;



  max-height:88vh; display:flex; flex-direction:column;



  box-shadow:0 8px 32px rgba(0,0,0,.25); overflow:hidden;



}



.prj-head {



  background:#1e3a5f; color:#fff; padding:12px 16px;



  display:flex; align-items:center; justify-content:space-between; flex-shrink:0;



}



.prj-head h3 { font-size:15px; font-weight:700; }



.prj-head .close-btn { background:none; border:none; color:#fff; font-size:20px; cursor:pointer; }



.prj-body { flex:1; overflow-y:auto; padding:12px; }







/* 새 프로젝트 입력폼 */



.prj-form { background:#f0f5ff; border-radius:8px; padding:12px; margin-bottom:12px; }



.prj-form h4 { font-size:13px; font-weight:700; color:#1e3a5f; margin-bottom:8px; }



.prj-form .form-row { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:6px; align-items:center; }



.prj-form input, .prj-form select {



  flex:1; min-width:80px; padding:6px 8px; border:1px solid #c8d0dc;



  border-radius:4px; font-size:13px;



}



.prj-form .btn-create {



  width:100%; padding:8px; background:#27ae60; color:#fff;



  border:none; border-radius:4px; font-size:13px; font-weight:700; cursor:pointer;



}



.prj-form .btn-create:hover { background:#219a52; }







/* 프로젝트 목록 */



.prj-list-title { font-size:12px; color:#888; font-weight:600; margin-bottom:6px; }



.prj-item {



  display:flex; align-items:center; gap:8px;



  padding:10px 12px; border:2px solid #e0e8f0; border-radius:8px;



  margin-bottom:6px; cursor:pointer; transition:border-color .15s, background .15s;



}



.prj-item:hover  { border-color:#4a7cb5; background:#f5f9ff; }



.prj-item.active { border-color:#27ae60; background:#f0fff5; }



.prj-item .prj-info { flex:1; }



.prj-item .prj-name  { font-size:14px; font-weight:700; color:#1a2f4a; }



.prj-item .prj-meta  { font-size:11px; color:#888; margin-top:2px; }



.prj-item .prj-cnt   { font-size:12px; color:#27ae60; font-weight:700; }



.prj-item .btn-edit-prj {



  background:none; border:none; color:#3498db; font-size:16px;



  cursor:pointer; line-height:1; padding:2px 4px; opacity:.5;



}



.prj-item .btn-edit-prj:hover { opacity:1; }



.prj-item .btn-dxf-prj {



  background:none; border:none; color:#8e44ad; font-size:12px; font-weight:700;



  cursor:pointer; line-height:1; padding:2px 5px; opacity:.6;



  border:1px solid #8e44ad; border-radius:4px;



}



.prj-item .btn-dxf-prj:hover { opacity:1; background:#f5eeff; }



.prj-item .btn-del-prj {



  background:none; border:none; color:#e74c3c; font-size:18px;



  cursor:pointer; line-height:1; padding:2px 4px; opacity:.5;



}



.prj-item .btn-del-prj:hover { opacity:1; }



.prj-foot {



  padding:10px 12px; border-top:1px solid #d0d8e4; display:flex; gap:8px; flex-shrink:0;



}







/* 툴바 프로젝트 표시 */



#btn-prj {



  max-width:140px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;



  background:#2a4f7a; border:1px solid #4a7cb5;



  padding:5px 10px; border-radius:4px; color:#fff; font-size:12px;



  cursor:pointer; font-weight:600;



}



#btn-prj.has-prj { background:#27ae60; border-color:#219a52; }







/* ══════════════════════════════════════



   로그인 화면



══════════════════════════════════════ */



#login-screen {



  position:fixed; inset:0; background:#eef2f7; z-index:9000;



  display:flex; align-items:center; justify-content:center;



}



.login-card {



  background:#fff; border-radius:18px; width:90%; max-width:360px;



  padding:40px 32px 32px; box-shadow:0 10px 40px rgba(0,0,0,.15);



  display:flex; flex-direction:column; align-items:center;



}



.login-icon { font-size:56px; margin-bottom:10px; line-height:1; }



.login-title {



  font-size:22px; font-weight:900; text-align:center; margin-bottom:28px;



  background:linear-gradient(120deg,#c0392b 30%,#1a5276);



  -webkit-background-clip:text; -webkit-text-fill-color:transparent;



  background-clip:text; line-height:1.4;



}



.login-fields { width:100%; display:flex; flex-direction:column; gap:14px; margin-bottom:10px; }



.login-fields .lf-group { display:flex; flex-direction:column; gap:4px; }



.login-fields label { font-size:12px; font-weight:700; color:#555; }



.login-fields input {



  width:100%; padding:11px 14px; border:1.5px solid #d0d8e4; border-radius:9px;



  font-size:15px; background:#fafbfd; outline:none; transition:border-color .15s;



  font-family:inherit;



}



.login-fields input:focus { border-color:#2980b9; background:#fff; }



.login-error {



  font-size:12px; color:#e74c3c; font-weight:600; min-height:20px;



  margin:6px 0 10px; text-align:center; width:100%;



}



.btn-login {



  width:100%; padding:13px; margin-top:4px;



  background:linear-gradient(120deg,#1e3a5f,#2980b9);



  color:#fff; border:none; border-radius:9px; font-size:16px; font-weight:800;



  cursor:pointer; letter-spacing:.5px; transition:opacity .15s; font-family:inherit;



}



.btn-login:hover { opacity:.88; }



.btn-login:disabled { opacity:.55; cursor:default; }

/* 프로젝트 암호 모달 */
#prj-pw-modal {
  display:none; position:fixed; inset:0; z-index:19000;
  background:rgba(0,0,0,.55); align-items:center; justify-content:center;
}
#prj-pw-modal.open { display:flex; }
#prj-pw-box {
  background:#fff; border-radius:14px; padding:28px 28px 22px;
  width:320px; max-width:92%; box-shadow:0 8px 32px rgba(0,0,0,.35);
}
#prj-pw-box h3 { margin:0 0 6px; font-size:16px; color:#1e3a5f; }
#prj-pw-box .pw-sub { font-size:12px; color:#888; margin-bottom:16px; }
#prj-pw-box input {
  width:100%; padding:10px 12px; border:1.5px solid #c8d0dc; border-radius:7px;
  font-size:15px; box-sizing:border-box; margin-bottom:8px;
}
#prj-pw-box input:focus { border-color:#2980b9; outline:none; }
#prj-pw-error { font-size:12px; color:#e74c3c; min-height:16px; margin-bottom:10px; }
#prj-pw-box .pw-btns { display:flex; gap:8px; }
#prj-pw-box .pw-btns button {
  flex:1; padding:9px; border:none; border-radius:7px;
  font-size:14px; font-weight:700; cursor:pointer; font-family:inherit;
}
#prj-pw-btn-ok { background:#2980b9; color:#fff; }
#prj-pw-btn-ok:hover { background:#2471a3; }
#prj-pw-btn-cancel { background:#ecf0f1; color:#555; }
#prj-pw-btn-cancel:hover { background:#dde1e6; }

/* 프로젝트 편집 모달 */
#prj-edit-modal {
  display:none; position:fixed; inset:0; z-index:19000;
  background:rgba(0,0,0,.55); align-items:center; justify-content:center;
}
#prj-edit-modal.open { display:flex; }
#prj-edit-box {
  background:#fff; border-radius:14px; padding:24px 24px 18px;
  width:360px; max-width:92%; box-shadow:0 8px 32px rgba(0,0,0,.35);
}
#prj-edit-box h3 { margin:0 0 16px; font-size:15px; color:#1e3a5f; }
#prj-edit-box label { font-size:12px; font-weight:700; color:#555; display:block; margin-bottom:4px; }
#prj-edit-box input {
  width:100%; padding:9px 11px; border:1.5px solid #c8d0dc; border-radius:7px;
  font-size:14px; box-sizing:border-box; margin-bottom:14px;
}
#prj-edit-box input:focus { border-color:#2980b9; outline:none; }
.prj-edit-pw-row { position:relative; }
.prj-edit-pw-row input { padding-right:70px; }
.prj-edit-pw-clear {
  position:absolute; right:8px; top:50%; transform:translateY(-60%);
  font-size:11px; color:#e74c3c; cursor:pointer; background:none; border:none;
  padding:2px 5px; border-radius:4px;
}
.prj-edit-pw-clear:hover { background:#fdecea; }
#prj-edit-box .edit-btns { display:flex; gap:8px; margin-top:4px; }
#prj-edit-box .edit-btns button {
  flex:1; padding:9px; border:none; border-radius:7px;
  font-size:14px; font-weight:700; cursor:pointer; font-family:inherit;
}
#prj-edit-btn-ok { background:#2980b9; color:#fff; }
#prj-edit-btn-ok:hover { background:#2471a3; }
#prj-edit-btn-cancel { background:#ecf0f1; color:#555; }

/* 프로젝트 삭제 내부 확인 모달 */
#project-delete-modal {
  display:none; position:fixed; inset:0; z-index:20000;
  background:rgba(15,23,42,.62); align-items:center; justify-content:center;
}
#project-delete-modal.open { display:flex; }
#project-delete-box {
  background:#fff; border-radius:14px; width:410px; max-width:92%;
  box-shadow:0 12px 40px rgba(0,0,0,.38); overflow:hidden;
}
.project-delete-head { padding:18px 20px 12px; border-bottom:1px solid #edf0f4; }
.project-delete-head h3 { margin:0 0 6px; color:#c0392b; font-size:17px; }
.project-delete-name { font-size:13px; color:#34495e; font-weight:700; word-break:break-all; }
.project-delete-body { padding:16px 20px; }
.project-delete-summary {
  padding:10px 12px; margin-bottom:13px; border-radius:8px;
  background:#f5f7fa; color:#536273; font-size:12px; line-height:1.65;
}
.project-delete-option {
  display:flex; gap:10px; align-items:flex-start; padding:12px;
  border:1.5px solid #d9e0e7; border-radius:9px; cursor:pointer;
}
.project-delete-option.delete-all { border-color:#e74c3c; background:#fff5f4; }
.project-delete-option input { margin-top:3px; width:17px; height:17px; accent-color:#e74c3c; }
.project-delete-option strong { display:block; color:#c0392b; font-size:13px; margin-bottom:3px; }
.project-delete-option span { display:block; color:#6b7280; font-size:11px; line-height:1.45; }
.project-delete-warning { min-height:18px; margin-top:9px; color:#c0392b; font-size:11px; font-weight:700; }
.project-delete-actions { display:flex; gap:8px; padding:12px 20px 18px; }
.project-delete-actions button {
  flex:1; padding:10px; border:0; border-radius:8px; cursor:pointer;
  font-family:inherit; font-size:13px; font-weight:800;
}
#project-delete-cancel { background:#edf1f5; color:#4b5563; }
#project-delete-submit { background:#e67e22; color:#fff; }
#project-delete-submit.delete-all { background:#c0392b; }
#project-delete-submit:disabled { opacity:.55; cursor:default; }

.prj-lock-badge {
  font-size:11px; color:#e67e22; margin-left:4px; vertical-align:middle;
}



.login-help { font-size:12px; color:#bbb; margin-top:16px; text-align:center; }







/* ══════════════════════════════════════



   프로젝트 설정 화면



══════════════════════════════════════ */



#setup-screen {



  position:fixed; inset:0; background:#eef2f7; z-index:8900;



  display:flex; flex-direction:column;



}



@font-face {



  font-family: 'LGPSFNT';



  src: url('/static/fonts/uis_combined.ttf') format('truetype');



  font-weight: normal;



  font-style: normal;



}



:root {



  --primary: #1e3a5f;



}



.setup-head {



  background:var(--primary); color:#fff; padding:14px 18px;



  display:flex; align-items:center; justify-content:space-between; flex-shrink:0;



}



.setup-head h2 { font-size:16px; font-weight:700; }



.btn-logout {



  background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.35);



  color:#fff; border-radius:6px; padding:5px 11px; font-size:12px; cursor:pointer;



  font-family:inherit;



}



.btn-logout:hover { background:rgba(255,255,255,.25); }



.btn-manual {



  background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.35);



  color:#fff; border-radius:6px; padding:5px 11px; font-size:12px; cursor:pointer;



  font-family:inherit; margin-right:6px;



}



.btn-manual:hover { background:rgba(255,255,255,.25); }



.setup-body {



  flex:1; overflow-y:auto; padding:16px 14px;



  display:flex; flex-direction:column; gap:12px;



}



.setup-year-row { display:flex; align-items:center; gap:10px; }



.setup-year-row label { font-size:13px; font-weight:700; color:#1e3a5f; white-space:nowrap; }



.setup-year-row select {



  padding:7px 12px; border:1.5px solid #c8d0dc; border-radius:7px;



  font-size:14px; background:#fff; min-width:110px; outline:none; font-family:inherit;



}



.setup-section-title {



  font-size:11px; font-weight:700; color:#999; letter-spacing:.5px; text-transform:uppercase;



}



.setup-prj-list { display:flex; flex-direction:column; gap:8px; }



.setup-prj-item {



  background:#fff; border:2px solid #e0e8f0; border-radius:11px;



  padding:12px 14px; cursor:pointer; display:flex; align-items:center; gap:10px;



  transition:border-color .15s, box-shadow .15s;



}



.setup-prj-item:hover  { border-color:#4a7cb5; box-shadow:0 2px 8px rgba(74,124,181,.15); }



.setup-prj-item.selected { border-color:#27ae60; background:#f0fff5;



  box-shadow:0 2px 10px rgba(39,174,96,.15); }



.prj-tag {



  font-size:11px; font-weight:700; padding:3px 8px; border-radius:10px;



  flex-shrink:0; white-space:nowrap;



}



.tag-실측 { background:#e67e22; color:#fff; }



.tag-수정 { background:#2980b9; color:#fff; }



.tag-신규 { background:#27ae60; color:#fff; }



.setup-prj-item .prj-info { flex:1; min-width:0; }



.setup-prj-item .prj-name  { font-size:14px; font-weight:700; color:#1a2f4a; }



.setup-prj-item .prj-meta  { font-size:11px; color:#888; margin-top:2px; }



.setup-prj-item .prj-check { font-size:18px; color:#27ae60; flex-shrink:0; }



.btn-edit-setup {



  flex-shrink:0; background:none; border:none; color:#ccc;



  font-size:15px; padding:5px 7px; cursor:pointer;



  border-radius:7px; line-height:1;



}



.btn-edit-setup:hover { background:#e0f7fa; color:#2980b9; }



.btn-dxf-setup {



  flex-shrink:0; background:none; border:1px solid #8e44ad; color:#8e44ad;



  font-size:11px; font-weight:700; padding:3px 7px; cursor:pointer;



  border-radius:6px; line-height:1.4;



}



.btn-dxf-setup:hover { background:#f5eeff; }

.btn-shp-setup {
  flex-shrink:0; background:none; border:1px solid #16a085; color:#16a085;
  font-size:11px; font-weight:700; padding:3px 7px; cursor:pointer;
  border-radius:6px; line-height:1.4; margin-left:4px;
}
.btn-shp-setup:hover { background:#e8f8f4; }

.btn-wp-setup {
  flex-shrink:0; background:none; border:1px solid #d35400; color:#d35400;
  font-size:11px; font-weight:700; padding:3px 7px; cursor:pointer;
  border-radius:6px; line-height:1.4; margin-left:4px;
}
.btn-wp-setup:hover { background:#fdf0e6; }

.btn-cr-setup {
  flex-shrink:0; background:none; border:1px solid #27ae60; color:#27ae60;
  font-size:11px; font-weight:700; padding:3px 7px; cursor:pointer;
  border-radius:6px; line-height:1.4; margin-left:4px;
}
.btn-cr-setup:hover { background:#eafaf1; }

.btn-export-setup {
  flex-shrink:0; background:#2c3e50; border:1px solid #2c3e50; color:#fff;
  font-size:11px; font-weight:700; padding:3px 9px; cursor:pointer;
  border-radius:6px; line-height:1.4;
}
.btn-export-setup:hover { background:#1a252f; }

.btn-quantity-setup {
  flex-shrink:0; background:#f0f9ff; border:1px solid #0ea5e9; color:#0369a1;
  font-size:11px; font-weight:700; padding:3px 8px; cursor:pointer;
  border-radius:6px; line-height:1.4;
}
.btn-quantity-setup:hover { background:#dff2ff; }

.btn-del-setup {



  flex-shrink:0; background:none; border:none; color:#ccc;



  font-size:15px; padding:5px 7px; cursor:pointer;



  border-radius:7px; line-height:1;



}



.btn-del-setup:hover { background:#fee2e2; color:#e74c3c; }

.setup-prj-btns {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}



.setup-prj-empty {



  color:#bbb; font-size:13px; text-align:center; padding:28px 0; line-height:2;



}



.setup-foot {



  padding:12px 14px; background:#fff; border-top:1px solid #d0d8e4;



  display:flex; gap:10px; flex-shrink:0; box-shadow:0 -3px 12px rgba(0,0,0,.06);



}



.btn-new-prj {



  flex:1; padding:12px; background:#27ae60; color:#fff;



  border:none; border-radius:9px; font-size:14px; font-weight:700;



  cursor:pointer; font-family:inherit; transition:background .15s;



}



.btn-new-prj:hover { background:#219a52; }



.btn-start {



  flex:1; padding:12px; background:#1e3a5f; color:#fff;



  border:none; border-radius:9px; font-size:14px; font-weight:700;



  cursor:pointer; font-family:inherit; transition:background .15s, opacity .15s;



}



.btn-start:hover:not(:disabled) { background:#2c5285; }



.btn-start:disabled { opacity:.4; cursor:default; }



.btn-csv {



  padding:12px; background:#9b59b6; color:#fff;



  border:none; border-radius:9px; font-size:14px; font-weight:700;



  cursor:pointer; transition:background .15s, opacity .15s;



}



.btn-csv:hover:not(:disabled) { background:#8e44ad; }



.btn-csv:disabled { opacity:.4; cursor:default; }



.btn-dxf {



  padding:12px; background:#f39c12; color:#fff;



  border:none; border-radius:9px; font-size:14px; font-weight:700;



  cursor:pointer; transition:background .15s, opacity .15s;



}



.btn-dxf:hover:not(:disabled) { background:#e67e22; }



.btn-dxf:disabled { opacity:.4; cursor:default; }







/* Phase2 속성/사진 탭 */



.phase2-tabs {



  display: flex;



  border-bottom: 2px solid #e0e8f0;



  margin: 0 -14px 12px;



  padding: 0 14px;



}



.ph2-tab {



  flex: 1; padding: 9px 4px;



  background: none; border: none;



  border-bottom: 3px solid transparent;



  font-size: 14px; font-weight: 700; color: #999;



  cursor: pointer; margin-bottom: -2px;



  transition: color .15s, border-color .15s;



}



.ph2-tab.active { color: #1e3a5f; border-bottom-color: #2980b9; }



.ph2-tab .img-cnt {



  display: inline-block; background: #2980b9; color: #fff;



  border-radius: 10px; font-size: 11px; padding: 0 6px; margin-left: 4px;



}







/* 신규 프로젝트 생성 인라인 폼 */



.setup-new-form {



  background:#f0f5ff; border:1.5px solid #c8d4ec; border-radius:10px;



  padding:14px; display:none; flex-direction:column; gap:10px;



}



.setup-new-form.open { display:flex; }



.setup-new-form h4 { font-size:13px; font-weight:700; color:#1e3a5f; }



.setup-new-form .snf-row { display:flex; gap:6px; flex-wrap:wrap; }
.setup-new-form .snf-row.compact { align-items:center; }



.setup-new-form input, .setup-new-form select {



  flex:1; min-width:80px; padding:8px 10px; border:1.5px solid #c8d0dc;



  border-radius:7px; font-size:13px; outline:none; background:#fff; font-family:inherit;



}



.setup-new-form input:focus, .setup-new-form select:focus { border-color:#2980b9; }



.btn-create-inline {



  width:100%; padding:9px; background:#27ae60; color:#fff;



  border:none; border-radius:7px; font-size:13px; font-weight:700;



  cursor:pointer; font-family:inherit;



}



.btn-create-inline:hover { background:#219a52; }







/* ── 데이터 일괄 입력 모달 CSS ── */



.batch-table { width: 100%; border-collapse: collapse; font-size: 13px; }



.batch-table th, .batch-table td { border: 1px solid #d0d8e4; padding: 6px 8px; text-align: center; white-space: nowrap; }



.batch-table th { background: #1e3a5f; color:#fff; position: sticky; top: 0; z-index: 1; font-weight:700; }



.batch-table input, .batch-table select { width: 100%; min-width: 70px; padding: 5px; border: 1px solid #c8d0dc; border-radius:4px; font-family:inherit; font-size:12px; }



.batch-table input:focus, .batch-table select:focus { border-color: #2980b9; outline: none; background:#f0f5ff; }



.batch-table tbody tr:hover { background: #f8fafc; }



.batch-table-wrap { max-height: calc(90vh - 160px); }







/* ── 토스트 알림 ── */



#toast-msg {



  visibility: hidden;



  min-width: 200px;



  margin-left: -100px;



  background: rgba(41, 128, 185, 0.95);



  color: #fff;



  text-align: center;



  border-radius: 20px;



  padding: 10px 16px;



  position: fixed;



  z-index: 9999;



  left: 50%;



  bottom: 30px;



  font-size: 13px;



  font-weight: bold;



  opacity: 0;



  transition: opacity 0.4s, bottom 0.4s, visibility 0.4s;



  box-shadow: 0 4px 12px rgba(0,0,0,0.2);



  pointer-events: none;



}



#toast-msg.show {



  visibility: visible;



  opacity: 1;



  bottom: 70px;



}



