/* 레이아웃 v4 (2026-11-05): 우버 승객 웹앱 구성. 지도가 바탕, 왼쪽 떠 있는 패널 하나, 화면마다 질문 하나, 결론 먼저, 하단 검은 버튼 하나.
   panel4.js 가 body.v4 를 붙이면 켜짐. v2·v3 파일은 그대로 두고 이 파일이 뒤에서 덮는다. 끄려면 index.html 에서 layout4.css·panel4.js 두 줄을 빼면 v3.
   색: 흑백 + 상태 점 3색(되는 땅 초록 · 현장 확인 노랑 · 안 되는 땅 빨강)만. 시안: claude/stitch-ui-prompt.md v4 */
body.v4 {
  --bg: #FFFFFF; --bg2: #F3F3F1; --fg: #111111; --fg2: #555555; --fg3: #6B6B6B; --edge: #E9E9E6;
  --accent: #111111; --ok: #2E9E5B; --warn: #F5B400; --bad: #D64545; --halo: #FFFFFF;
  --v4w: 400px; --v4m: 24px;
}
@media (min-width: 0px) {
  body.v4 { font-size: 14px; }
  body.v4 .app, body.v4.simple .app, body.v4.simple .app.adClosed { display: block; height: 100%; }
  body.v4 #map { height: 100vh; }
  body.v4 #adPanel, body.v4 #adTab, body.v4 .v3Top, body.v4 .v3Filt, body.v4 .v3Search, body.v4 .v3Legend, body.v4 .v2Hello, body.v4 .v3Back,
  body.v4 .adHead, body.v4 .adFoot, body.v4 #say, body.v4 .sec, body.v4 #reqSec, body.v4 #aiNote { display: none !important; }
  body.v4 .app > .col, body.v4.simple .app.v3chat > .col { display: flex !important; }
  body.v4.simple #adPanel { display: none !important; }

  /* 패널: 지도 위에 떠 있는 흰 기둥 */
  body.v4 .col { position: fixed; left: var(--v4m); top: var(--v4m); bottom: var(--v4m); width: var(--v4w); z-index: 1000; padding: 0; border: 0; border-radius: 12px;
    background: var(--bg); box-shadow: 0 8px 28px rgba(0,0,0,.14); overflow: hidden; display: flex; flex-direction: column; }
  body.v4 .stage, body.v4 .col.fresh .stage { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px 20px 8px; justify-content: flex-start; gap: 0; }
  body.v4 .brand { display: flex; align-items: center; justify-content: space-between; padding: 2px 0 10px; border: 0; margin: 0; font-size: 18px; font-weight: 700; letter-spacing: -.3px; }
  body.v4 .brand .aboutLink { font-size: 12px; font-weight: 500; color: var(--fg3); }
  body.v4 .brand .edName { display: none; }
  body.v4 .leaflet-left .leaflet-control { margin-left: calc(var(--v4w) + var(--v4m) * 2); }
  body.v4 .leaflet-control-zoom { border: 0 !important; border-radius: 999px !important; box-shadow: 0 2px 8px rgba(0,0,0,.12) !important; overflow: hidden; }
  body.v4 .leaflet-control-zoom a { border-radius: 0 !important; }
  body.v4 .baseLite { filter: grayscale(1) contrast(.92) brightness(1.04); }
  body.v4 #hint { border-radius: 999px; font-size: 12px; }

  /* 1) 찾기 상태 (#browse) */
  body.v4 .v4Q { margin: 8px 0 12px; font-size: 26px; font-weight: 700; letter-spacing: -.5px; line-height: 1.25; }
  body.v4 .v4Search { display: flex; align-items: center; gap: 10px; background: var(--bg2); border-radius: 8px; padding: 0 14px; min-height: 56px; }
  body.v4 .v4Search svg { flex: none; }
  body.v4 .v4Search input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; font-size: 16px; color: var(--fg); outline: none; min-height: 44px; }
  body.v4 .v4Search input::placeholder { color: var(--fg3); }
  body.v4 .v4Search:focus-within { box-shadow: inset 0 0 0 1.5px var(--fg); }
  body.v4 #browse .region { margin-top: 20px; font-size: 12px; color: var(--fg3); }
  body.v4 #browse .duo { margin-top: 4px; display: flex; gap: 18px; }
  body.v4 #browse .duo span { font-size: 11px; }
  body.v4 #browse .duo b { font-size: 15px; margin-top: 2px; letter-spacing: -.01em; }
  body.v4 #browse .duo b small { font-size: 11px; }
  body.v4 #browse .cap { font-size: 12px; margin-top: 6px; }
  body.v4 #browse .v2Empty .region, body.v4 #browse.v2Empty .duo { display: none; }
  body.v4 .v4Lbl { margin: 18px 0 4px; font-size: 12px; color: var(--fg3); }
  body.v4 .obRows { margin: 0; }
  body.v4 .obRows li { border: 0; }
  body.v4 .obRows button { padding: 10px 0; min-height: 44px; }
  body.v4 .obRows .t { font-size: 15px; font-weight: 500; }
  body.v4 .obRows .t em { color: var(--fg3); font-weight: 500; }
  body.v4 .histHead { margin-top: 18px; font-size: 12px; color: var(--fg3); }
  body.v4 .results button { padding: 10px 0; font-size: 15px; }

  /* 2) 판정 상태 (#detail): 주소 → 결론 → 숫자 → 걸린 항목 → 통과 접힘 */
  body.v4 #detail { display: flex; flex-direction: column; }
  body.v4 #detail[hidden] { display: none; }
  body.v4 .back { order: 0; margin: 0 0 10px; font-size: 13px; color: var(--fg3); align-self: flex-start; min-height: 24px; }
  body.v4 .pSub { order: 1; margin: 0; font-size: 22px; font-weight: 700; letter-spacing: -.4px; line-height: 1.25; color: var(--fg); }
  body.v4 .pTitle { order: 2; margin: 4px 0 0; font-size: 13px; font-weight: 400; color: var(--fg2); letter-spacing: 0; line-height: 1.5; }
  body.v4 .grpList { order: 3; }
  body.v4 .dActs { order: 4; margin-top: 8px; }
  body.v4 .dActs .addBtn { font-size: 12px; }
  body.v4 #srcPick { order: 4; }
  body.v4 #obBox { order: 5; margin-top: 10px; font-size: 13px; }
  body.v4 .v4Verd { order: 6; display: flex; align-items: center; gap: 10px; margin-top: 18px; font-size: 22px; font-weight: 700; letter-spacing: -.4px; }
  body.v4 .v4Verd::before { content: ''; width: 12px; height: 12px; border-radius: 50%; background: #B6BEC7; flex: none; }
  body.v4 .v4Verd.ok::before { background: var(--ok); } body.v4 .v4Verd.warn::before { background: var(--warn); } body.v4 .v4Verd.bad::before { background: var(--bad); }
  body.v4 .verdict, body.v4 .verdict.warn, body.v4 .verdict.bad { order: 7; margin: 4px 0 0 22px; font-size: 13px; line-height: 1.5; color: var(--fg2); font-weight: 400; }
  body.v4 #myDl { order: 7; }
  body.v4 .nums { order: 8; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 16px; padding: 14px 0; border-top: 1px solid var(--edge); border-bottom: 1px solid var(--edge); }
  body.v4 .nums span { font-size: 11px; }
  body.v4 .nums b { font-size: 15px; margin-top: 2px; letter-spacing: -.01em; }
  body.v4 .nums b.ok, body.v4 .nums b.warn, body.v4 .nums b.bad { color: var(--fg); }
  body.v4 .checks { order: 9; margin: 6px 0 0; }
  body.v4 .checks li { grid-template-columns: 10px 1fr; column-gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--edge); align-items: start; }
  body.v4 .checks li::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #B6BEC7; margin-top: 6px; }
  body.v4 .checks li.ok::before { background: var(--ok); } body.v4 .checks li.warn::before { background: var(--warn); } body.v4 .checks li.bad::before { background: var(--bad); }
  body.v4 .checks .k { font-size: 15px; font-weight: 500; color: var(--fg); padding: 0; }
  body.v4 .checks .v { display: none; }
  body.v4 .checks .d { grid-column: 2; margin-top: 2px; font-size: 13px; color: var(--fg3); }
  body.v4 .checks .v.wait + .d, body.v4 .checks li.wait .d { color: var(--fg3); }
  body.v4 .v4Pass { order: 10; margin: 0; }
  body.v4 .v4Pass summary { list-style: none; display: grid; grid-template-columns: 10px 1fr auto; column-gap: 12px; align-items: center; padding: 12px 0; min-height: 44px; font-size: 14px; color: var(--fg2); cursor: pointer; }
  body.v4 .v4Pass summary::-webkit-details-marker { display: none; }
  body.v4 .v4Pass summary::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: var(--ok); }
  body.v4 .v4Pass summary::after { content: '⌄'; color: #999; font-size: 16px; line-height: 1; }
  body.v4 .v4Pass[open] summary::after { content: '⌃'; }
  body.v4 .v4Pass .checks { margin: 0; }
  body.v4 .v4Pass .checks li .k { font-weight: 400; color: var(--fg2); }
  body.v4 #layoutBtn { order: 11; }
  body.v4 #layoutSec, body.v4 #procSec, body.v4 .links, body.v4 .note { order: 12; }
  body.v4 #links, body.v4 #pNote { font-size: 12px; }

  /* 에드 입력창 + 하단 버튼 */
  body.v4.simple #aiSec { display: flex !important; margin: 0; padding: 0 20px; border: 0; }
  body.v4.simple #aiChips { display: block !important; padding: 0 20px; }
  body.v4 .composer { padding: 10px 20px 0; border: 0; }
  body.v4 .cbox { display: flex; align-items: center; gap: 10px; background: var(--bg2); border-radius: 8px; padding: 0 14px; min-height: 48px; box-shadow: none; border: 0; }
  body.v4 .cbox:focus-within { box-shadow: inset 0 0 0 1.5px var(--fg); }
  body.v4 .cbox textarea { font-size: 14px; background: transparent; border: 0; }
  body.v4 .cbox button { background: transparent; color: var(--fg); box-shadow: none; }
  body.v4 .v4Cta { all: unset; cursor: pointer; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; margin: 12px 20px 0; padding: 0 20px; min-height: 56px; border-radius: 8px; background: var(--fg); color: #fff; font-size: 16px; font-weight: 700; }
  body.v4 .v4Cta:hover { background: #222; } body.v4 .v4Cta:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }
  body.v4 .v4Cta span { font-weight: 500; color: #ddd; font-size: 14px; }
  body.v4 .v4Cta[hidden] { display: none; }
  body.v4 .v4Fine { margin: 0; padding: 8px 20px 14px; font-size: 11px; color: var(--fg3); text-align: center; }

  /* 지도 위 핀·변전소: 흑백 + 상태 점 */
  body.v4 .obPin span { border-radius: 6px; font-weight: 600; font-size: 11px; padding: 3px 7px; background: var(--fg); box-shadow: 0 1px 3px rgba(0,0,0,.25); }
  body.v4 .obPin span::after { border-top-color: var(--fg); }
  body.v4 .obPin.grA span, body.v4 .obPin.ok span { background: var(--fg); } body.v4 .obPin.grA span::after, body.v4 .obPin.ok span::after { border-top-color: var(--fg); }
  body.v4 .obPin.grA i, body.v4 .obPin.ok i { background: var(--ok); } body.v4 .obPin.grB i { background: var(--warn); } body.v4 .obPin.grC i { background: #B0B8C1; }
  body.v4 .obPin.grB span { background: var(--fg); } body.v4 .obPin.grB span::after { border-top-color: var(--fg); }
  /* 변전소 육각형: 송전 여유 있는 곳만 검정, 적으면 중간 회색, 없거나 모르면 옅은 회색 (11-05) */
  body.v4 .subHex { background: #D5D8DC; } body.v4 .subHex.f3 { background: var(--fg); } body.v4 .subHex.f2 { background: #3A3F45; } body.v4 .subHex.f1 { background: #8A9099; } body.v4 .subHex.f0 { background: #C9CDD2; } body.v4 .subHex.na { background: #D5D8DC; }
  body.v4 .subHex.f0::before { background: var(--bg); }
  body.v4 .subNm { color: var(--fg); } body.v4 .subNm em.bad { color: #8A9099; }
  body.v4 .subNm { border-radius: 6px; box-shadow: 0 1px 3px rgba(0,0,0,.15); }
  body.v4 .subNm em { color: var(--fg2); }
  body.v4 #browse, body.v4 #detail { box-shadow: none; }
}
/* v2 가 지도 오른쪽 카드로 뺀 #browse·#detail 을 패널 안으로 되돌림 */
@media (min-width: 0px) {
  body.v4 #browse, body.v4 #detail { position: static; width: auto; max-height: none; overflow: visible; border: 0; border-radius: 0; box-shadow: none; padding: 0; background: transparent; }
  body.v4 #browse.v2Empty { display: block !important; }
  body.v4 #browse.v2Empty .region, body.v4 #browse.v2Empty .duo, body.v4 #browse.v2Empty .cap, body.v4 #browse.v2Empty #trans, body.v4 #browse.v2NoRegion .region, body.v4 #browse.v2NoRegion .duo { display: none !important; }
  body.v4 #hist { display: block !important; }
  body.v4 .leaflet-top.leaflet-left .leaflet-control-zoom { position: fixed; right: 24px; bottom: 40px; margin: 0; }
  body.v4 .leaflet-left .leaflet-control { margin-left: 0; }
  body.v4 .leaflet-bottom.leaflet-right .leaflet-control-attribution { margin-bottom: 0; }
}
@media (min-width: 0px) {
  body.v4 #browse[hidden], body.v4 #detail[hidden] { display: none !important; }
  body.v4 #detail .pTitle { font-size: 13px !important; font-weight: 400 !important; color: var(--fg2) !important; line-height: 1.5 !important; letter-spacing: 0 !important; margin: 4px 0 0 !important; }
  body.v4 #detail .pSub { font-size: 22px !important; font-weight: 700 !important; color: var(--fg) !important; }
  body.v4 .cbox:focus-within { box-shadow: inset 0 0 0 1px #999; }
}
/* 땅 | 건물 전환: 11-05 사용자 결정으로 겸업 제한 해제. 시안대로 지도 오른쪽 위, 후보지·내 정보 왼쪽 */
@media (min-width: 0px) {
  body.v4.simple #branchBar { display: flex !important; position: fixed; top: 24px; right: 210px; left: auto; transform: none; z-index: 1001; background: #fff; border-radius: 999px; padding: 4px; box-shadow: 0 2px 8px rgba(0,0,0,.12); }
  body.v4 .branchBar button { padding: 8px 18px; border-radius: 999px; font-size: 14px; font-weight: 500; color: var(--fg); opacity: 1; min-height: 36px; }
  body.v4 .branchBar button[aria-pressed="true"] { background: var(--fg); color: #fff; }
  body.v4 .leaflet-top.leaflet-right .acct { margin: 24px 24px 0 0; }
  body.v4 .acct > button { border-radius: 999px; min-height: 44px; box-shadow: 0 2px 8px rgba(0,0,0,.12); }
}
/* 11-05 (2): 패널 안 상세(선로·변전소 카드) */
@media (min-width: 0px) {
  body.v4 #v4Sub { display: flex; flex-direction: column; }
  body.v4 #v4Sub[hidden] { display: none; }
  body.v4 .v4Back { all: unset; cursor: pointer; align-self: flex-start; font-size: 13px; color: var(--fg3); margin: 0 0 10px; min-height: 24px; }
  body.v4 .v4Back:hover { color: var(--fg); }
  body.v4 .v4SubBody .subInfo, body.v4 .v4SubBody .near { margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
  body.v4 .v4SubBody .nearHead { display: flex; flex-direction: column; gap: 2px; padding: 0 0 12px; border-bottom: 1px solid var(--edge); }
  body.v4 .v4SubBody .nearHead b { font-size: 22px; font-weight: 700; letter-spacing: -.4px; }
  body.v4 .v4SubBody .nearHead span { font-size: 13px; color: var(--fg2); }
  body.v4 .v4SubBody .subClose { display: none; }
  body.v4 .v4SubBody .subKv { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: auto auto; grid-auto-flow: column; gap: 2px 8px; margin: 14px 0 0; padding: 14px 0; border-bottom: 1px solid var(--edge); }
  body.v4 .v4SubBody .subKv dt { font-size: 11px; color: var(--fg3); }
  body.v4 .v4SubBody .subKv dd { margin: 2px 0 0; font-size: 15px; font-weight: 700; }
  body.v4 .v4SubBody .lad { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
  body.v4 .v4SubBody .lad li { display: flex; justify-content: space-between; font-size: 13px; color: var(--fg2); padding-left: 18px; position: relative; }
  body.v4 .v4SubBody .lad li::before { content: ''; position: absolute; left: 0; top: 5px; width: 8px; height: 8px; border-radius: 50%; background: #B6BEC7; }
  body.v4 .v4SubBody .lad li.ok::before { background: var(--ok); } body.v4 .v4SubBody .lad li.bad::before { background: var(--bad); }
  body.v4 .v4SubBody .lad li b { color: var(--fg); font-weight: 600; }
  body.v4 .v4SubBody .eqDl, body.v4 .v4SubBody .nearDl { border: 0; border-radius: 0; background: transparent; box-shadow: none; padding: 12px 0; border-bottom: 1px solid var(--edge); }
  body.v4 .v4SubBody .eqDl.dlSub { border: 0; margin-top: 12px; padding: 0; font-size: 14px; font-weight: 500; }
  body.v4 .v4SubBody .eqDl.dlSub .eqDlNm::after { content: ' ›'; }
  body.v4 .v4SubBody .eqMsg, body.v4 .v4SubBody .nearMsg { font-size: 11px; color: var(--fg3); line-height: 1.5; margin-top: 12px; }
  body.v4 .v4SubBody table { font-size: 13px; }
  body.v4 .v4SubBody .dlDot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: 8px; vertical-align: 1px; }
  /* 걸린 항목 중 누를 수 있는 행 */
  body.v4 .checks li.v4Link { cursor: pointer; grid-template-columns: 10px 1fr 18px; }
  body.v4 .checks li.v4Link::after { content: '›'; grid-column: 3; grid-row: 1 / span 2; align-self: center; color: #999; font-size: 18px; }
  body.v4 .checks li.v4Link:hover .k { text-decoration: underline; text-underline-offset: 3px; }
}
/* 11-05 (5): 검색 결과 목록이 패널 내용 뒤에 숨던 문제 */
@media (min-width: 0px) {
  body.v4 .composer { position: relative; z-index: 5; }
  body.v4 .composer .results { left: 20px; right: 20px; border-radius: 8px; padding: 4px 0; box-shadow: 0 8px 28px rgba(0,0,0,.16); border: 1px solid var(--edge); }
  body.v4 .composer .results button { padding: 12px 16px; font-size: 15px; }
  body.v4 .composer .results button:hover { background: var(--bg2); text-decoration: none; }
}
/* 11-05 (6): 선로·변전소 카드는 지도 오른쪽 아래 창. 왼쪽 패널은 땅 그대로 */
@media (min-width: 0px) {
  body.v4 #v4Sub { display: none !important; }
  body.v4 #v4Grid { position: fixed; right: 24px; bottom: 24px; width: 400px; max-height: 62vh; z-index: 1000; background: var(--bg); border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.16); display: flex; flex-direction: column; overflow: hidden; }
  body.v4 #v4Grid[hidden] { display: none; }
  body.v4 .v4GridHead { display: flex; align-items: center; gap: 8px; padding: 10px 12px 8px 16px; border-bottom: 1px solid var(--edge); }
  body.v4 .v4GridHead .v4Back { margin: 0; min-height: 32px; font-size: 13px; }
  body.v4 .v4GridHead .v4Back[hidden] { display: none; }
  body.v4 .v4GridTtl { flex: 1; font-size: 12px; color: var(--fg3); }
  body.v4 .v4GridX { all: unset; cursor: pointer; width: 32px; height: 32px; border-radius: 999px; display: grid; place-items: center; color: var(--fg2); font-size: 14px; }
  body.v4 .v4GridX:hover { background: var(--bg2); }
  body.v4 #v4Grid .v4SubBody { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 14px 16px 16px; }
  /* 확대 버튼은 왼쪽 아래(패널 옆)로 */
  body.v4 .leaflet-top.leaflet-left .leaflet-control-zoom { right: auto; left: calc(var(--v4w) + var(--v4m) * 2); bottom: 24px; }
}
/* 11-05 (8): 왼쪽 패널에서 리 단위 배전선로 목록·설비 펼치기 제거. 선로는 변전소 창에서만 */
@media (min-width: 0px) {
  body.v4 #near, body.v4 #equip, body.v4 #eqOpen, body.v4 #browse .cap br { display: none !important; }
}
/* 11-05 (9): 찾기 화면 = 질문 + 검색 + 매물·공매 목록. 후보지·내 정보 서랍 다시 열리게 */
@media (min-width: 0px) {
  body.v4.simple #drawer:not([hidden]) { display: block !important; }
  body.v4 #browse #adPanel, body.v4.simple #browse #adPanel { display: flex !important; flex-direction: column; position: static; width: auto; height: auto; border: 0; box-shadow: none; background: transparent; transform: none; margin-top: 18px; }
  body.v4 #adPanel .adHead { display: flex !important; align-items: baseline; justify-content: space-between; padding: 0 0 6px; border: 0; }
  body.v4 #adPanel .adHead b { font-size: 12px; font-weight: 500; color: var(--fg3); text-transform: none; }
  body.v4 #adPanel .adHead em { font-style: normal; color: var(--fg); margin-left: 4px; }
  body.v4 #adPanel .adBtns, body.v4 #adPanel .adFoot, body.v4 #adPanel .v3Search, body.v4 #adPanel .v3Top { display: none !important; }
  /* 필터: 칩·알약 대신 글자 줄 */
  body.v4 #adPanel .v3Filt { display: flex !important; flex-wrap: wrap; gap: 4px 14px; padding: 0 0 10px; border-bottom: 1px solid var(--edge); align-items: center; }
  body.v4 #adPanel .v3Filt .seg { border: 0; border-radius: 0; gap: 8px; }
  body.v4 #adPanel .v3Filt .seg button { padding: 4px 0; font-size: 13px; font-weight: 500; color: var(--fg3); }
  body.v4 #adPanel .v3Filt .seg button.on { background: transparent; color: var(--fg); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
  body.v4 #adPanel .v3Filt .chip { border: 0; border-radius: 0; padding: 4px 0; font-size: 13px; color: var(--fg3); background: transparent; }
  body.v4 #adPanel .v3Filt .chip.on, body.v4 #adPanel .v3Filt .chip.soon.on { color: var(--fg); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; background: transparent; border: 0; }
  body.v4 #adPanel .v3Filt select { border: 0; border-radius: 0; background: transparent; padding: 4px 0; font-size: 13px; color: var(--fg3); font-weight: 500; }
  /* 목록: 행 */
  body.v4 #adPanel .adList { flex: none; overflow: visible; }
  body.v4 #adPanel .adCard { grid-template-columns: 56px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--edge); position: relative; background: transparent; box-shadow: none; }
  body.v4 #adPanel .adCard:hover { background: transparent; }
  body.v4 #adPanel .adCard.sel { background: transparent; box-shadow: none; }
  body.v4 #adPanel .adCard.sel .adPrice { text-decoration: underline; text-underline-offset: 4px; }
  body.v4 #adPanel .adThumb { width: 56px; height: 44px; border-radius: 6px; filter: grayscale(1) contrast(.9); }
  body.v4 #adPanel .adGr { left: 0; top: 12px; width: 16px; height: 16px; border-radius: 6px 0 6px 0; font-size: 10px; background: #8A9099; }
  body.v4 #adPanel .adGr.A { background: var(--ok); } body.v4 #adPanel .adGr.B { background: var(--warn); }
  body.v4 #adPanel .adPrice { font-size: 15px; font-weight: 700; font-family: var(--font); letter-spacing: -.01em; }
  body.v4 #adPanel .adPrice em { font-family: var(--font); color: var(--fg3); font-weight: 500; font-size: 12px; }
  body.v4 #adPanel .obTag { background: var(--fg); border-radius: 4px; font-size: 10px; }
  body.v4 #adPanel .adMeta, body.v4 #adPanel .adAddr, body.v4 #adPanel .adEnd { font-size: 12px; color: var(--fg3); font-family: var(--font); }
  body.v4 #adPanel .adMeta b[style*="1a7f37"] { color: var(--fg) !important; }
  body.v4 #adPanel .adEnd b.soon { color: var(--bad); }
  body.v4 #adPanel .adMore { font-size: 13px; padding: 12px 0; color: var(--fg2); }
  body.v4 #obList, body.v4 .v4Lbl { display: none !important; }   /* 리 공매 목록은 매물 목록과 겹치므로 숨김 */
}
@media (min-width: 0px) { body.v4 #adPanel .v3Filt #adScope { display: inline-block !important; } }
/* 11-06: 찾기 화면에서 리 단위 숫자(배전·송전 여유, 설명줄) 제거. 리 정보는 지도 클릭 판정과 변전소 창에서만 */
@media (min-width: 0px) {
  body.v4 #browse .region, body.v4 #browse .duo, body.v4 #browse .cap, body.v4 #browse #trans, body.v4 #browse #watchBtn, body.v4 #browse #riList { display: none !important; }
}
/* 11-06: 선로·변전소 창 쌓기(#v4Dock). 새 창이 아래, 옛 창은 제목줄만 */
@media (min-width: 0px) {
  body.v4 #v4Grid { display: none !important; }
  body.v4 #v4Dock { position: fixed; right: 24px; bottom: 24px; width: 400px; max-height: calc(100vh - 48px); z-index: 1000; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; pointer-events: none; }
  body.v4 .v4Win { pointer-events: auto; background: var(--bg); border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.16); display: flex; flex-direction: column; overflow: hidden; min-height: 0; flex: 0 1 auto; }
  body.v4 .v4Win.open { max-height: 62vh; flex: 1 1 auto; }
  body.v4 .v4Win:not(.open) { flex: none; }
  body.v4 .v4WinHead { display: flex; align-items: center; gap: 8px; padding: 6px 8px 6px 16px; flex: none; }
  body.v4 .v4Win.open .v4WinHead { border-bottom: 1px solid var(--edge); }
  body.v4 .v4WinTtl { all: unset; cursor: pointer; flex: 1; font-size: 13px; font-weight: 600; color: var(--fg); min-height: 32px; display: flex; align-items: center; }
  body.v4 .v4Win:not(.open) .v4WinTtl { color: var(--fg2); font-weight: 500; }
  body.v4 .v4Win:not(.open) .v4WinTtl::before { content: '⌃'; color: #999; margin-right: 8px; }
  body.v4 .v4Win .v4SubBody { display: none; }
  body.v4 .v4Win.open .v4SubBody { display: block; flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 14px 16px 16px; }
  body.v4 .v4Win .nearHead { display: none; }                 /* 제목은 창 머리에 있음 */
  body.v4 .v4Win .nearMsg, body.v4 .v4Win .eqMsg.nearMsg { display: none !important; }   /* "경과는 전주 위치로 추정" 안내문 제거 (11-06) */
  body.v4 .v4Win .subKv { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: auto auto; grid-auto-flow: column; gap: 2px 8px; margin: 0; padding: 0 0 14px; border-bottom: 1px solid var(--edge); }
  body.v4 .v4Win .subKv dt { font-size: 11px; color: var(--fg3); } body.v4 .v4Win .subKv dd { margin: 2px 0 0; font-size: 15px; font-weight: 700; }
  body.v4 .v4Win .lad { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
  body.v4 .v4Win .lad li { display: flex; justify-content: space-between; font-size: 13px; color: var(--fg2); padding-left: 18px; position: relative; }
  body.v4 .v4Win .lad li::before { content: ''; position: absolute; left: 0; top: 5px; width: 8px; height: 8px; border-radius: 50%; background: #B6BEC7; }
  body.v4 .v4Win .lad li.ok::before { background: var(--ok); } body.v4 .v4Win .lad li.bad::before { background: var(--bad); }
  body.v4 .v4Win .lad li b { color: var(--fg); font-weight: 600; }
  body.v4 .v4Win .eqDl.dlSub { border: 0; margin-top: 12px; padding: 0; font-size: 14px; font-weight: 500; background: transparent; box-shadow: none; }
  body.v4 .v4Win .eqDl.dlSub .eqDlNm::after { content: ' ›'; }
  body.v4 .v4Win .subClose { display: none; }
  body.v4 .v4Win table { font-size: 13px; }
}
@media (min-width: 0px) { body.v4 .v4WinSub { font-size: 11px; font-weight: 400; color: var(--fg3); margin-left: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } body.v4 .v4Win:not(.open) .v4WinSub { display: none; } }
@media (min-width: 0px) { body.v4 .v4NoNet { margin: 0 0 12px; padding: 10px 12px; border-radius: 8px; background: var(--bg2); font-size: 12px; color: var(--fg2); line-height: 1.5; } }
/* 11-06 저녁: 땅 판정은 왼쪽 패널 옆 두 번째 창(#v4Land 360px). 1280px 미만이면 왼쪽 패널을 덮음 */
@media (min-width: 0px) {
  body.v4 #v4Land { position: fixed; left: calc(var(--v4w) + var(--v4m) * 2); top: var(--v4m); bottom: var(--v4m); width: 360px; z-index: 999; background: var(--bg); border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.14); display: flex; flex-direction: column; overflow: hidden; }
  body.v4 #v4Land[hidden] { display: none; }
  body.v4 .v4LandHead { display: flex; justify-content: flex-end; padding: 8px 8px 0; flex: none; }
  body.v4 .v4LandX { all: unset; cursor: pointer; width: 32px; height: 32px; border-radius: 999px; display: grid; place-items: center; color: var(--fg2); font-size: 14px; }
  body.v4 .v4LandX:hover { background: var(--bg2); }
  body.v4 .v4LandBody { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 0 20px 8px; }
  body.v4 #v4Land #detail { display: flex; }
  body.v4 #v4Land .v4Cta { margin: 8px 20px 0; }
  body.v4 .leaflet-top.leaflet-left .leaflet-control-zoom { left: auto; right: 24px; bottom: 24px; }   /* 확대 버튼은 오른쪽 아래(계통 창 없을 때 자리) */
  body.v4 #v4Dock { bottom: 80px; }
  body.v4 #browse .cap, body.v4 #browse .v2Msg, body.v4 #browse .eqMsg { display: none !important; }
}
@media (min-width: 0px) and (max-width: 1279px) {
  body.v4 #v4Land { left: var(--v4m); width: var(--v4w); z-index: 1001; }
}
@media (min-width: 0px) { body.v4 .mtrHead { display: flex; align-items: center; gap: 8px; } body.v4 .mtrAll { display: inline-flex; margin-right: 2px; } body.v4 .mtrAll input { width: 15px; height: 15px; accent-color: var(--fg); cursor: pointer; } body.v4 .mtrHead span { margin-left: auto; } }
/* 11-06: 필터 한 줄 */
@media (min-width: 0px) {
  body.v4 #adPanel .v3Filt { display: none !important; }
  body.v4 .v4Filt { display: flex; align-items: center; gap: 16px; padding: 0 0 10px; border-bottom: 1px solid var(--edge); }
  body.v4 .v4Filt select { appearance: none; -webkit-appearance: none; border: 0; background: transparent; padding: 4px 16px 4px 0; font: inherit; font-size: 13px; font-weight: 500; color: var(--fg); cursor: pointer; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M1 1l4 4 4-4' fill='none' stroke='%23555' stroke-width='1.5'/></svg>"); background-repeat: no-repeat; background-position: right 2px center; }
  body.v4 .v4Filt button { all: unset; cursor: pointer; font-size: 13px; font-weight: 500; color: var(--fg3); padding: 4px 0; }
  body.v4 .v4Filt button[aria-pressed="true"] { color: var(--fg); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
  body.v4 #adPanel .adHead { padding-bottom: 8px; }
}
@media (min-width: 0px) { body.v4 .v4Upload { display: flex; align-items: center; justify-content: space-between; margin-top: 4px; padding: 12px 0; min-height: 44px; font-size: 14px; font-weight: 500; color: var(--fg); text-decoration: none; border-top: 1px solid var(--edge); } body.v4 .v4Upload span { color: #999; font-size: 18px; } body.v4 .v4Upload.off { color: var(--fg3); } }
/* 11-07: 변전소·선로 창 글자 정돈. 결론(20px 굵게 + 점) → 한 줄 보조 → 숫자 3칸 → 목록 → 왜 그런가(접힘) */
@media (min-width: 0px) {
  body.v4 .v4Win.open .v4SubBody { padding: 16px 20px 18px; font-size: 13px; line-height: 1.5; display: block; }
  body.v4 .v4Win:not(.open) .v4SubBody { display: none !important; }
  body.v4 .v4Win .v4Card { display: block; }
  body.v4 .v4Win .v4Card > * { order: 0 !important; }
  body.v4 .v4Win .v4Verd { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 20px; font-weight: 700; letter-spacing: -.3px; line-height: 1.3; }
  body.v4 .v4Win .v4Verd::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #B6BEC7; flex: none; }
  body.v4 .v4Win .v4Verd.ok::before { background: var(--ok); } body.v4 .v4Win .v4Verd.bad::before { background: var(--bad); }
  body.v4 .v4Win .v4VerdSub { margin: 4px 0 0 20px; font-size: 13px; color: var(--fg2); }
  body.v4 .v4Win .v4VerdSub:empty { display: none; }
  body.v4 .v4Win .subKv { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 16px 0 0; padding: 14px 0; border-top: 1px solid var(--edge); border-bottom: 1px solid var(--edge); }
  body.v4 .v4Win .subKv dt { font-size: 11px; color: var(--fg3); white-space: nowrap; }
  body.v4 .v4Win .subKv dd { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--fg); }
  body.v4 .v4Win .subKv dd.ok, body.v4 .v4Win .subKv dd.bad { color: var(--fg); }
  body.v4 .v4Win .subKv dd small { font-size: 11px; font-weight: 500; color: var(--fg3); margin-left: 2px; }
  body.v4 .v4Win .v4LnHead { display: flex; align-items: center; justify-content: space-between; margin-top: 16px; padding-bottom: 6px; font-size: 12px; color: var(--fg3); }
  body.v4 .v4Win .v4Mtrs { display: flex; gap: 4px; }
  body.v4 .v4Win .v4Mtrs button { all: unset; cursor: pointer; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; color: var(--fg3); box-shadow: inset 0 0 0 1px var(--edge); }
  body.v4 .v4Win .v4Mtrs button[aria-pressed="true"] { background: var(--fg); color: #fff; box-shadow: none; }
  body.v4 .v4Win table.v4Ln { width: 100%; border-collapse: collapse; font-size: 14px; }
  body.v4 .v4Win .v4Ln tr { border-top: 1px solid var(--edge); }
  body.v4 .v4Win .v4Ln td { padding: 9px 0; vertical-align: middle; }
  body.v4 .v4Win .v4Ln td:first-child { width: 24px; } body.v4 .v4Win .v4Ln input { width: 15px; height: 15px; accent-color: var(--fg); cursor: pointer; margin: 0; }
  body.v4 .v4Win .v4Ln .dlNm { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; font-weight: 500; color: var(--fg); }
  body.v4 .v4Win .v4Ln .dlNm:hover { text-decoration: underline; text-underline-offset: 3px; }
  body.v4 .v4Win .v4Ln .dlNm small { font-size: 11px; color: var(--fg3); font-weight: 500; }
  body.v4 .v4Win .v4Ln tr.mine .dlNm { font-weight: 700; }
  body.v4 .v4Win .v4Ln tr.on td { background: var(--bg2); }
  body.v4 .v4Win .v4Ln .dlDot { width: 8px; height: 8px; border-radius: 50%; margin: 0; background: #B6BEC7; }
  body.v4 .v4Win .v4Ln .dlDot.ok { background: var(--ok); } body.v4 .v4Win .v4Ln .dlDot.bad { background: var(--bad); }
  body.v4 .v4Win .v4Ln td.mtr { width: 36px; font-size: 12px; color: var(--fg3); text-align: right; }
  body.v4 .v4Win .v4Ln td:last-child { width: 72px; text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--fg); }
  body.v4 .v4Win .v4Ln td.bad:last-child { color: var(--fg3); font-weight: 500; }
  body.v4 .v4Win .eqDl.dlSub { margin-top: 14px; padding: 12px 0; border-top: 1px solid var(--edge); border-bottom: 1px solid var(--edge); width: 100%; box-sizing: border-box; display: flex; justify-content: space-between; }
  body.v4 .v4Win .eqDl.dlSub .eqDlNm { font-size: 14px; font-weight: 500; }
  body.v4 .v4Win .v4Why { margin-top: 12px; }
  body.v4 .v4Win .v4Why summary { list-style: none; cursor: pointer; font-size: 13px; color: var(--fg2); padding: 8px 0; min-height: 32px; display: flex; align-items: center; justify-content: space-between; }
  body.v4 .v4Win .v4Why summary::-webkit-details-marker { display: none; }
  body.v4 .v4Win .v4Why summary::after { content: '⌄'; color: #999; font-size: 16px; } body.v4 .v4Win .v4Why[open] summary::after { content: '⌃'; }
  body.v4 .v4Win .v4Why .ladTop { display: none; }
  body.v4 .v4Win .v4Why .lad { margin: 4px 0 0; }
  body.v4 .v4Win .v4Why .ladOpen { margin: 8px 0 0 18px; font-size: 12px; color: var(--fg2); }
  body.v4 .v4Win .v4Why .subKv { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 12px; border-bottom: 0; padding-bottom: 0; }
  body.v4 .v4Win .v4Why .subKv dd { font-size: 13px; font-weight: 500; }
  body.v4 .v4Win .v4Why .eqMsg { display: block !important; margin-top: 10px; font-size: 11px; color: var(--fg3); }
  body.v4 .v4Win .subTog, body.v4 .v4Win .mtrBox { display: none; }
  body.v4 .v4NoNet { margin: 12px 0 0; }
}
@media (min-width: 0px) {
  body.v4 .v4Win .v4LnHead { padding-bottom: 0; }
  body.v4 .v4Win .v4MtrRow { display: flex; flex-direction: column; gap: 6px; margin: 6px 0 8px; font-size: 11px; color: var(--fg3); }
  body.v4 .v4Win .v4Mtrs { flex-wrap: wrap; gap: 6px; }
  body.v4 .v4Win .v4Mtrs button { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; font-size: 12px; }
  body.v4 .v4Win .v4Mtrs button small { font-size: 11px; font-weight: 500; opacity: .75; }
  body.v4 .v4Win .v4Ln td.mtr { width: 64px; white-space: nowrap; }
}
/* 11-08: 도구 메뉴에서 배전선로·변전소 버튼 제거. 선로는 변전소를 눌러서만, 변전소는 늘 켜짐 */
@media (min-width: 0px) { body.v4 #tNet, body.v4 #tSub { display: none !important; } }
/* 11-08 정리형 판정: 이름 · 수치 · 할 일 */
@media (min-width: 0px) {
  body.v4 .checks .k { display: inline; font-size: 15px; font-weight: 500; }
  body.v4 .checks .v { display: inline !important; margin-left: 8px; font-size: 13px; font-weight: 500; color: var(--fg2); }
  body.v4 .checks .v.ok, body.v4 .checks .v.warn, body.v4 .checks .v.bad, body.v4 .checks .v.wait { color: var(--fg2); }
  body.v4 .checks .d { grid-column: 2; margin-top: 3px; font-size: 13px; color: var(--fg3); line-height: 1.45; }
  body.v4 .checks .v4More { all: unset; cursor: pointer; margin-left: 6px; font-size: 12px; color: var(--fg3); text-decoration: underline; text-underline-offset: 3px; }
  body.v4 .checks .v4Full { display: block; margin-top: 4px; color: var(--fg2); }
  body.v4 .checks .v4Full[hidden] { display: none; }
  body.v4 .verdict, body.v4 .verdict.warn, body.v4 .verdict.bad { display: none !important; }   /* 결론 아래 서술문 제거: 걸린 항목이 설명함 */
  body.v4 .v4Pass .checks li .k { font-weight: 400; } body.v4 .v4Pass .checks .v { color: var(--fg3); } body.v4 .v4Pass .checks .d { display: none; }
}
@media (min-width: 0px) {
  body.v4 .checks li > .v4Head { grid-column: 2; grid-row: 1; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
  body.v4 .checks li > .v4Head .k { font-size: 15px; font-weight: 500; color: var(--fg); display: inline; }
  body.v4 .checks li > .v4Head .v { display: inline !important; font-size: 13px; font-weight: 600; color: var(--fg); white-space: nowrap; }
  body.v4 .checks li > .d { grid-column: 2; grid-row: 2; }
  body.v4 .checks li.v4Link > .v4Head { grid-column: 2; }
  body.v4 .checks li.v4Link::after { grid-row: 1 / span 2; }
}
@media (min-width: 0px) { body.v4 #myDl .eqMsg, body.v4 #pNote, body.v4 .note { display: none !important; } body.v4 #links { margin-top: 14px; font-size: 12px; } }
/* 11-08 요청·진행 창 (시안 D·E). #reqBox 는 가운데 모달이지만 v4 에서는 오른쪽 패널 자리(왼쪽 패널 옆)로 */
@media (min-width: 0px) {
  body.v4 #reqWrap { background: transparent; pointer-events: none; }
  body.v4 #reqBox { pointer-events: auto; position: fixed; left: calc(var(--v4w) + var(--v4m) * 2); top: var(--v4m); bottom: var(--v4m); width: 360px; max-width: none; max-height: none; margin: 0; padding: 8px 20px 16px; border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.14); overflow-y: auto; display: flex; flex-direction: column; font-size: 13px; }
  body.v4 #reqBox .reqHead { display: flex; align-items: center; justify-content: space-between; margin: 0 0 6px; }
  body.v4 #reqBox .reqHead h2 { font-size: 18px; font-weight: 700; margin: 0; }
  body.v4 #reqBox .reqHead .x { all: unset; cursor: pointer; width: 32px; height: 32px; border-radius: 999px; display: grid; place-items: center; color: var(--fg2); font-size: 18px; }
  body.v4 .v4RqTgt { background: var(--bg2); border-radius: 8px; padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; }
  body.v4 .v4RqTgt b { font-size: 15px; font-weight: 500; } body.v4 .v4RqTgt span { font-size: 12px; color: var(--fg3); }
  body.v4 .v4RqWarn { margin: 10px 0 0; font-size: 12px; color: var(--fg2); line-height: 1.5; }
  body.v4 .v4RqPrice { display: flex; align-items: baseline; gap: 8px; margin-top: 18px; }
  body.v4 .v4RqPrice b { font-size: 28px; font-weight: 700; letter-spacing: -.5px; } body.v4 .v4RqPrice span { font-size: 13px; color: var(--fg3); }
  body.v4 .v4RqLbl { margin-top: 16px; font-size: 12px; color: var(--fg3); }
  body.v4 .v4RqList { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 14px; }
  body.v4 .v4RqList li { padding-left: 22px; position: relative; } body.v4 .v4RqList li::before { content: '✓'; position: absolute; left: 0; font-weight: 700; }
  body.v4 .v4Who { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
  body.v4 .v4Who label { cursor: pointer; } body.v4 .v4Who input { position: absolute; opacity: 0; width: 0; height: 0; }
  body.v4 .v4Who span { display: inline-block; padding: 6px 12px; border-radius: 999px; font-size: 13px; color: var(--fg2); box-shadow: inset 0 0 0 1px var(--edge); }
  body.v4 .v4Who input:checked + span { background: var(--fg); color: #fff; box-shadow: none; }
  body.v4 .v4RqField { display: flex; flex-direction: column; gap: 6px; margin-top: 14px; }
  body.v4 .v4RqField span { font-size: 12px; color: var(--fg3); }
  body.v4 .v4RqField input { border: 0; background: var(--bg2); border-radius: 8px; padding: 0 14px; font: inherit; font-size: 16px; min-height: 48px; outline: none; }
  body.v4 .v4RqField input:focus { box-shadow: inset 0 0 0 1.5px var(--fg); }
  body.v4 .v4Agree { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--fg2); margin-top: 10px; min-height: 44px; cursor: pointer; }
  body.v4 .v4Agree input { width: 18px; height: 18px; accent-color: var(--fg); margin: 0; }
  body.v4 #reqBox .reqErr { margin: 4px 0 0; font-size: 12px; color: var(--bad); min-height: 16px; }
  body.v4 #reqBox .v4Cta { margin: auto 0 0; }
  body.v4 #reqBox .v4Cta.off { background: var(--bg2); color: #999; cursor: default; }
  body.v4 #reqBox .v4Fine { padding: 8px 0 0; }
  body.v4 .v4RqTop { display: flex; justify-content: space-between; font-size: 13px; color: var(--fg2); margin-bottom: 14px; } body.v4 .v4RqTop .no { color: var(--fg3); font-size: 12px; }
  body.v4 #reqBox .v4Verd { display: flex; align-items: center; gap: 10px; font-size: 20px; font-weight: 700; letter-spacing: -.3px; }
  body.v4 #reqBox .v4Verd::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #B6BEC7; flex: none; } body.v4 #reqBox .v4Verd.ok::before { background: var(--fg); }
  body.v4 #reqBox .v4VerdSub { margin: 4px 0 0 20px; font-size: 13px; color: var(--fg2); }
  body.v4 .v4Steps { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-direction: column; }
  body.v4 .v4Steps li { display: flex; align-items: center; gap: 14px; min-height: 40px; font-size: 14px; color: var(--fg2); }
  body.v4 .v4Steps li i { width: 22px; height: 22px; border-radius: 999px; border: 2px solid #ccc; box-sizing: border-box; flex: none; }
  body.v4 .v4Steps li.done i { background: var(--fg); border-color: var(--fg); position: relative; } body.v4 .v4Steps li.done i::after { content: '✓'; color: #fff; font-size: 12px; font-weight: 700; position: absolute; inset: 0; display: grid; place-items: center; }
  body.v4 .v4Steps li.now { color: var(--fg); font-weight: 700; } body.v4 .v4Steps li.now i { border: 3px solid var(--fg); }
  body.v4 .v4Steps li span { flex: 1; } body.v4 .v4Steps li em { font-style: normal; font-size: 12px; color: var(--fg3); font-weight: 400; }
  body.v4 .v4Agent { display: flex; align-items: center; gap: 12px; margin-top: 14px; padding: 12px 14px; border: 1px solid var(--edge); border-radius: 10px; }
  body.v4 .v4Agent > b { width: 40px; height: 40px; border-radius: 999px; background: var(--fg); color: #fff; display: grid; place-items: center; font-size: 14px; flex: none; }
  body.v4 .v4Agent > span { display: flex; flex-direction: column; gap: 2px; flex: 1; } body.v4 .v4Agent strong { font-size: 14px; font-weight: 500; } body.v4 .v4Agent small { font-size: 12px; color: var(--fg3); }
  body.v4 .v4Agent button { all: unset; cursor: pointer; border: 1px solid var(--fg); border-radius: 999px; padding: 0 14px; min-height: 40px; font-size: 13px; font-weight: 500; }
  body.v4 .v4Agent button:disabled { color: #999; border-color: var(--edge); cursor: default; }
  body.v4 #reqBox .v4Why { margin-top: 12px; } body.v4 #reqBox .v4Why summary { list-style: none; cursor: pointer; font-size: 13px; color: var(--fg2); padding: 8px 0; display: flex; justify-content: space-between; }
  body.v4 #reqBox .v4Why summary::after { content: '⌄'; color: #999; } body.v4 #reqBox .v4Why[open] summary::after { content: '⌃'; }
  body.v4 #reqBox pre { font-size: 12px; white-space: pre-wrap; background: var(--bg2); padding: 10px 12px; border-radius: 8px; margin: 4px 0 8px; }
  body.v4 #reqBox .ghost { all: unset; cursor: pointer; font-size: 12px; color: var(--fg2); text-decoration: underline; text-underline-offset: 3px; }
  body.v4 .v4Cancel { all: unset; cursor: pointer; align-self: center; margin-top: 8px; font-size: 13px; color: var(--fg3); text-decoration: underline; text-underline-offset: 3px; min-height: 36px; }
  body.v4 #v4Land:not([hidden]) ~ #reqWrap #reqBox, body.v4 #reqWrap:not([hidden]) ~ #v4Land { }
}
@media (min-width: 0px) { body.v4 #v4Land.v4Behind { display: none !important; } }
@media (min-width: 0px) { body.v4 #reqBox .v4Verd { order: 0; margin-top: 10px; } }
/* 11-08 사용자 결정: 추정값은 안 보여줌. 땅값 추정·평당 땅값(공시지가 기반) 칸 제거. 숫자는 배전·송전 둘만. 공매 최저가는 사실이라 그대로 */
@media (min-width: 0px) { body.v4 .nums { grid-template-columns: repeat(2, minmax(0, 1fr)); } body.v4 .nums > div:nth-child(3), body.v4 .nums > div:nth-child(4) { display: none !important; } body.v4 #pNote { display: none !important; } }
/* 11-08 사용자 결정: 안내 문구·출처 줄 제거. 지도 출처는 브이월드만 작게 */
body.v4 .v4Fine { display: none !important; }
body.v4 .leaflet-control-attribution { font-size: 9px; opacity: .55; background: transparent; }
body.v4 .leaflet-control-attribution .leaflet-attribution-flag, body.v4 .leaflet-control-attribution a[href*="leafletjs"] { display: none !important; }
body.v4 #netDist { display: none !important; }   /* 11-08: "배전선로까지 약 n m (추정)" 문구 제거 */
/* 11-08 공매 블록 위계: 눈썹(11px 회색) → 최저가(크게) → 감정가·마감(13px) → 번호·링크(11px 연회색) */
body.v4 .obEyebrow { font-size: 11px; color: var(--fg3); letter-spacing: .2px; }
body.v4 .obMeta { font-size: 13px; color: var(--fg2); margin-top: 4px; }
body.v4 .obMeta.obMeta2 { font-size: 11px; color: var(--fg3); margin-top: 6px; }
body.v4 .obMeta.obMeta2 a { color: var(--fg2); text-decoration: none; }
body.v4 .obMeta.obMeta2 a:hover { text-decoration: underline; }
/* 11-08 변전소 표시 다듬기: 육각형은 흰 테두리로 지도와 떨어뜨리고, 이름표는 알약 모양(이름 굵게 · 여유는 연하게), 말풍선은 흰 카드 */
body.v4 .subMk { gap: 6px; }
body.v4 .subHex { filter: drop-shadow(0 1px 1.5px rgba(0,0,0,.35)); transition: transform .12s ease; }
body.v4 .subMk:hover .subHex { transform: scale(1.12); }
body.v4 .subNm { font: 600 11px/1 var(--font); color: var(--fg); background: rgba(255,255,255,.96); padding: 4px 8px 4px 7px; border-radius: 999px; box-shadow: 0 1px 2px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.05); letter-spacing: -.1px; display: inline-flex; align-items: center; gap: 5px; }
body.v4 .subNm em { font-family: var(--font); font-style: normal; font-weight: 500; font-size: 10.5px; color: var(--fg3); margin: 0; }
body.v4 .subNm em::before { content: ''; width: 1px; height: 9px; background: #DADDE1; margin-right: 5px; }
body.v4 .subNm em.bad { color: #8A9099; }
body.v4 .leaflet-tooltip { background: #fff; color: var(--fg); border: 0; border-radius: 10px; padding: 9px 12px; font: 400 12px/1.5 var(--font); box-shadow: 0 6px 20px rgba(0,0,0,.14), 0 0 0 1px rgba(0,0,0,.04); letter-spacing: -.1px; }
body.v4 .leaflet-tooltip b { font-weight: 700; font-size: 13px; }
body.v4 .leaflet-tooltip::before { display: none; }
/* 11-08 이름표 글자 색: 여유 50MW+ 초록, 10~50 초록, 10 미만 노랑, 꽉참 빨강, 모름 회색 (상태 점 3색과 같은 값) */
body.v4 .subHex.f3 + .subNm em, body.v4 .subHex.f2 + .subNm em { color: var(--ok); font-weight: 600; }
body.v4 .subHex.f1 + .subNm em { color: var(--warn); font-weight: 600; }
body.v4 .subHex.f0 + .subNm em, body.v4 .subNm em.bad { color: var(--bad); font-weight: 600; }
body.v4 .subHex.na + .subNm em { color: var(--fg3); }
body.v4 .leaflet-tooltip .tipOk { color: var(--ok); font-weight: 600; } body.v4 .leaflet-tooltip .tipWarn { color: var(--warn); font-weight: 600; } body.v4 .leaflet-tooltip .tipBad { color: var(--bad); font-weight: 600; }
/* 11-08 (사용자 정정): 숫자 칸(배전·송전 여유)은 두고, 아래 검토 항목의 배전·송전 행을 뺌 */
body.v4 #detail .nums { display: grid !important; }
body.v4 #checks li[data-go=line], body.v4 #checks li[data-go=sub], body.v4 .v4Pass li[data-go=line], body.v4 .v4Pass li[data-go=sub] { display: none !important; }   /* 11-09 (사용자 결정): 배전·송전 행은 아래에 안 보임. 상태는 위 숫자 칸의 색·글자로 */
body.v4 .v4Verd { margin-bottom: 6px; }
body.v4 .checks { margin-top: 10px; padding-top: 6px; border-top: 1px solid var(--edge); }
/* 11-08 즐겨찾기 별 (땅 창 머리) */
body.v4 .v4LandHead { display: flex; justify-content: flex-end; align-items: center; gap: 2px; }
body.v4 .v4Star { all: unset; cursor: pointer; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 999px; font-size: 20px; line-height: 1; color: var(--fg2); }
body.v4 .v4Star:hover { background: var(--bg2); } body.v4 .v4Star[aria-pressed="true"] { color: var(--warn); }
body.v4:not(.v4m) #saveBtn { display: none !important; }   /* 데스크톱은 별이 대신 */
/* 11-08 "오늘 n회 남음": 입력창 아래 오른쪽에 작게, 여백 맞춤 */
body.v4.simple #aiNote, body.v4.v2.simple #aiNote { display: block !important; margin: 6px 4px 0; font-size: 11px; color: var(--fg3); text-align: right; line-height: 1.3; }
body.v4 #aiNote:empty { display: none !important; }
body.v4:not(.v4m) .composer { padding-bottom: 12px; }
/* 11-08 물건 정보 창 */
body.v4 .v4ObMore { all: unset; cursor: pointer; display: inline-block; margin-top: 8px; font-size: 13px; font-weight: 600; color: var(--fg); border-bottom: 1px solid var(--fg); line-height: 1.4; }
body.v4 .v4IImg { display: block; width: 100%; max-height: 180px; object-fit: cover; border-radius: 8px; margin-bottom: 12px; background: var(--bg2); }
body.v4 .v4IName { font-size: 13px; font-weight: 600; margin-bottom: 10px; line-height: 1.4; }
body.v4 .v4ITbl { display: flex; flex-direction: column; border-top: 1px solid var(--edge); }
body.v4 .v4IRow { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--edge); font-size: 13px; }
body.v4 .v4IRow span { color: var(--fg3); flex: none; } body.v4 .v4IRow b { font-weight: 600; text-align: right; }
body.v4 .v4ILbl { margin: 14px 0 4px; font-size: 11px; color: var(--fg3); }
body.v4 .v4INote { margin: 0; font-size: 13px; line-height: 1.55; color: var(--fg2); white-space: normal; }
body.v4 .v4ILinks { margin: 14px 0 0; font-size: 12px; } body.v4 .v4ILinks a { color: var(--fg2); }
/* 11-08 현장확인 받기 버튼: 바닥 여백이 좌우와 같게(안내 문구를 빼면서 바닥에 붙었던 것) */
body.v4 #v4Land .v4Cta { margin: 10px 20px 20px; }
body.v4 #v4Land .v4LandBody { padding-bottom: 8px; }
/* 11-08 후보지 선반 */
body.v4 .v4Shelf { margin: 0 0 18px; }
body.v4 .v4Shelf h4 { margin: 0 0 10px; font-size: 13px; font-weight: 700; } body.v4 .v4Shelf h4 em { font-style: normal; font-weight: 500; color: var(--fg3); margin-left: 6px; }
body.v4 .v4ShelfRow { display: flex; gap: 14px; overflow-x: auto; padding: 6px 4px 0; align-items: flex-end; scrollbar-width: thin; }
body.v4 .v4Cover { all: unset; cursor: pointer; flex: none; width: 112px; display: flex; flex-direction: column; background: #fff; border-radius: 6px; box-shadow: 0 6px 14px rgba(0,0,0,.14), 0 0 0 1px rgba(0,0,0,.06); overflow: hidden; transform: translateY(0); transition: transform .15s ease, box-shadow .15s ease; }
body.v4 .v4Cover:hover { transform: translateY(-4px); box-shadow: 0 12px 22px rgba(0,0,0,.18), 0 0 0 1px rgba(0,0,0,.06); }
body.v4 .v4CoverImg { display: block; width: 112px; height: 92px; background: #E9E9E6 center / 256px 256px no-repeat; filter: saturate(.75); }
body.v4 .v4CoverTxt { display: flex; flex-direction: column; gap: 2px; padding: 8px 9px 9px; position: relative; }
body.v4 .v4CoverTxt i { position: absolute; top: 10px; right: 9px; width: 8px; height: 8px; border-radius: 50%; background: #B6BEC7; }
body.v4 .v4CoverTxt i.ok { background: var(--ok); } body.v4 .v4CoverTxt i.warn { background: var(--warn); } body.v4 .v4CoverTxt i.bad { background: var(--bad); }
body.v4 .v4CoverTxt b { font-size: 12px; font-weight: 700; line-height: 1.3; padding-right: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.v4 .v4CoverTxt span { font-size: 10.5px; color: var(--fg3); }
body.v4 .v4ShelfLine { height: 6px; margin: 0 -4px; border-radius: 2px; background: linear-gradient(#E6DCCB, #D5C6AE); box-shadow: 0 2px 4px rgba(0,0,0,.12); }
body.v4 .v4Shelf { margin: 14px 28px 22px; }
body.v4 .v4ShelfRow { padding: 6px 8px 0; }
body.v4 .v4ShelfLine { margin: 0; }
/* 11-09 목록 카드: 걸리는 것 먼저 */
body.v4 .adCard.v4Card .adBody { display: flex; flex-direction: column; gap: 3px; }
body.v4 .v4W { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--fg); }
body.v4 .v4W i { width: 8px; height: 8px; border-radius: 50%; background: #B6BEC7; } body.v4 .v4W.ok i { background: var(--ok); } body.v4 .v4W.warn i { background: var(--warn); } body.v4 .v4W.bad i { background: var(--bad); }
body.v4 .v4WL { font-size: 12px; color: var(--fg2); line-height: 1.4; }
body.v4 .v4CPrice { font-size: 13px; color: var(--fg); margin-top: 2px; } body.v4 .v4CPrice b { font-weight: 600; color: var(--fg3); font-size: 11px; margin-right: 2px; }
body.v4 .v4Card .adAddr { font-size: 11.5px; color: var(--fg3); }
body.v4 .v4Card .adEnd { font-size: 11.5px; color: var(--fg3); } body.v4 .v4Card .adEnd b.soon { color: var(--bad); }

/* 11-09 위 숫자 칸(배전·송전)에 상태를 색·글자로. panel4 가 숨은 행의 값을 여기로 옮김 */
body.v4 .nums b.ok { color: var(--ok); } body.v4 .nums b.warn { color: #B98700; } body.v4 .nums b.bad { color: var(--bad); } body.v4 .nums b.wait { color: var(--fg3); font-weight: 600; }
body.v4 .nums > div { cursor: pointer; } body.v4 .nums > div:hover span { text-decoration: underline; text-underline-offset: 3px; }
body.v4 .nums > div::after { content: '›'; color: #999; font-size: 14px; margin-left: 6px; }
body.v4 .nums > div { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 4px; } body.v4 .nums > div > span { flex: 0 0 100%; }
/* 11-09 상태 표시: 점 대신 작은 기호 (✓ 통과 · ! 확인 · ✕ 막힘 · … 확인 중). 사용자가 점만 있는 게 아쉽다고 해서 1안 */
body.v4 .checks li::before, body.v4 .v4Verd::before, body.v4 .v4Pass summary::before, body.v4 .v4Win .v4Verd::before {
  content: '✓'; display: inline-grid; place-items: center; color: #fff; font-size: 9px; font-weight: 800; line-height: 1; border-radius: 50%; width: 14px; height: 14px; }
body.v4 .checks li::before { margin-top: 3px; background: #B6BEC7; content: '…'; }
body.v4 .checks li.ok::before { content: '✓'; background: var(--ok); }
body.v4 .checks li.warn::before { content: '!'; background: var(--warn); color: #111; }
body.v4 .checks li.bad::before { content: '✕'; background: var(--bad); }
body.v4 .checks li.wait::before { content: '…'; background: #B6BEC7; }
body.v4 .v4Verd::before { width: 18px; height: 18px; font-size: 11px; background: #B6BEC7; content: '…'; }
body.v4 .v4Verd.ok::before { content: '✓'; background: var(--ok); } body.v4 .v4Verd.warn::before { content: '!'; background: var(--warn); color: #111; } body.v4 .v4Verd.bad::before { content: '✕'; background: var(--bad); }
body.v4 .v4Pass summary::before { content: '✓'; background: var(--ok); }
body.v4 .v4Win .v4Verd::before { width: 16px; height: 16px; font-size: 10px; }
body.v4 .v4Win .v4Verd.ok::before { content: '✓'; background: var(--ok); } body.v4 .v4Win .v4Verd.bad::before { content: '✕'; background: var(--bad); }
body.v4 .v4W i { width: 14px; height: 14px; display: inline-grid; place-items: center; color: #fff; font-size: 9px; font-weight: 800; font-style: normal; }
body.v4 .v4W.ok i::before { content: '✓'; } body.v4 .v4W.warn i::before { content: '!'; color: #111; } body.v4 .v4W.bad i::before { content: '✕'; }
/* 11-09 결론을 제목 바로 밑으로, 왜 한 줄, 안 되는 땅 버튼 */
body.v4 .v4Verd { order: 3; margin-top: 14px; }
body.v4 .v4Why1 { order: 3; margin: 4px 0 0 28px; font-size: 13px; color: var(--fg2); line-height: 1.45; } body.v4 .v4Why1:empty { display: none; }
body.v4 .verdict, body.v4 .verdict.warn, body.v4 .verdict.bad { display: none !important; }   /* 옛 결론 문장은 '왜 한 줄'로 대체 */
body.v4 #obBox { order: 5; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--edge); }
body.v4 .v4Alt { padding: 0 20px 20px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
body.v4 .v4Alt[hidden] { display: none; }
body.v4 .v4Alt p { margin: 0 0 2px; font-size: 13px; color: var(--fg2); align-self: flex-start; }
body.v4 .v4Alt .v4CtaAlt { margin: 0; width: 100%; justify-content: center; }
body.v4 .v4AltLink { all: unset; cursor: pointer; font-size: 12px; color: var(--fg3); text-decoration: underline; text-underline-offset: 3px; min-height: 28px; }
body.v4m .composer .v4Alt { padding: 0 0 8px; }
body.v4 .v4Alt { background: var(--bg); padding-top: 12px; border-top: 1px solid var(--edge); flex: none; }
body.v4 #v4Land .v4Alt { margin: 0; }
/* 11-09 리포트 예약(10만원 × 5명) */
body.v4 .v4Pool { position: relative; height: 28px; margin: 10px 0 4px; border-radius: 6px; background: var(--bg2); overflow: hidden; display: flex; align-items: center; padding: 0 10px; font-size: 12px; font-weight: 600; color: var(--fg); }
body.v4 .v4Pool i { position: absolute; left: 0; top: 0; bottom: 0; background: #DDE9E0; transition: width .4s ease; }
body.v4 .v4Pool span { position: relative; }
body.v4 .v4RqHow { margin-top: 8px; } body.v4 .v4RqHow li::before { content: '·'; }
body.v4 .v4Refund { margin: 12px 0 0; padding: 10px 12px; border-radius: 8px; background: var(--bg2); font-size: 12px; line-height: 1.5; color: var(--fg2); }
body.v4 #reqBox .v4AltLink { align-self: center; margin-top: 10px; }
body.v4 .v4RqNote { margin: 10px 0 0; font-size: 12px; line-height: 1.5; color: var(--fg2); }

/* 아래 사업자 표시 + 안내 링크 (11-09) */
body.v4 .v4Foot { padding: 4px 20px 10px; font-size: 11px; line-height: 1.5; color: var(--fg3); }
body.v4 .v4Foot .v4FootL { display: flex; gap: 12px; }
body.v4 .v4Foot a { color: var(--fg3); text-decoration: none; }
body.v4 .v4Foot a:hover { color: var(--fg); }
body.v4 .v4Foot span { display: block; margin-top: 2px; word-break: keep-all; }
body.v4m .v4Foot { padding: 0 14px 8px; }
body.v4m .v4Foot span { display: none; }
body.v4 .v4Biz { font-size: 11px; color: var(--fg3); margin: 6px 0 0; line-height: 1.5; }
body.v4 .v4Agent .v4Sms { margin-left: auto; padding: 8px 12px; border-radius: 8px; background: var(--fg); color: var(--bg); font-size: 13px; font-weight: 600; text-decoration: none; white-space: nowrap; }
body.v4 .obEmpty .lnk { border: 0; background: none; padding: 0; font: inherit; color: var(--fg); text-decoration: underline; cursor: pointer; }

/* 공개판에 에드(AI)가 없을 때 (11-09): 질문 칸·칩 감춤 */
body.v4.noAi #aiChips, body.v4.noAi .composer .cbox, body.v4.noAi #aiNote { display: none !important; }

/* 11-09: 왼쪽 패널은 내용만큼만. 물건이 적을 때 목록과 입력창 사이가 비던 것 */
body.v4:not(.v4m) .col { bottom: auto; height: auto; max-height: calc(100vh - var(--v4m) * 2); }
body.v4:not(.v4m) .stage, body.v4:not(.v4m) .col.fresh .stage { flex: 0 1 auto; }

/* 11-09: 검색 결과는 검색칸 아래 블록 (팝업 아님) */
body.v4 #browse #results.v4Res, body.v4 .composer .results.v4Res { position: static; left: auto; right: auto; bottom: auto; margin: 4px 0 0; padding: 0; background: transparent; border: 0; border-radius: 0; box-shadow: none; max-height: 40vh; overflow-y: auto; }
body.v4 #results.v4Res button { padding: 11px 2px; border-bottom: 1px solid var(--edge); font-size: 15px; }
body.v4 #results.v4Res button:last-child { border-bottom: 0; }
body.v4 #results.v4Res button:hover { background: var(--bg2); text-decoration: none; }
body.v4 #results.v4Res:empty { display: none; }

/* 11-09: 옆 필지 더하기 (심플 모드가 숨기던 것). 여러 필지를 묶어 한 땅으로 판정 */
body.v4.simple #addMode { display: inline-flex !important; align-items: center; gap: 6px; margin: 4px 0 0; padding: 8px 12px; border: 1px solid var(--edge); border-radius: 999px; font-size: 13px; font-weight: 600; color: var(--fg); background: var(--bg); cursor: pointer; }
body.v4.simple #addMode[aria-pressed="true"] { background: var(--fg); color: var(--bg); border-color: var(--fg); }
body.v4 #detail.bmode #addMode { display: none !important; }
body.v4 .grpList li { font-size: 13px; }

/* 11-09: 경매·공매 물건 정보를 땅 창 안에 바로 펼침 */
body.v4 .v4ObInfo { margin-top: 10px; }
body.v4 .v4ObInfo > summary { list-style: none; cursor: pointer; font-size: 12px; color: var(--fg3); padding: 4px 0; display: flex; align-items: center; gap: 6px; }
body.v4 .v4ObInfo > summary::-webkit-details-marker { display: none; }
body.v4 .v4ObInfo > summary::after { content: '⌃'; font-size: 11px; margin-left: auto; transform: translateY(2px); }
body.v4 .v4ObInfo:not([open]) > summary::after { content: '⌄'; transform: none; }
body.v4 .v4ObInfo .v4ITbl { margin-top: 2px; }
body.v4 .v4ObInfo .v4IRow { padding: 6px 0; font-size: 12.5px; }
body.v4 .v4ObInfo .v4INote { font-size: 12.5px; }
body.v4 .v4ObInfo .v4ILinks { margin-top: 10px; }
body.v4 .v4ObInfo .v4IThumb { max-height: 140px; margin: 6px 0 8px; cursor: zoom-in; }
body.v4 .v4ILinks { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; }
body.v4 .v4IOpen { border: 0; background: none; padding: 0; font: inherit; font-size: 12px; font-weight: 600; color: var(--fg); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
body.v4 #v4Dock .v4IImg { max-height: 260px; }
/* 11-10 (사용자 결정): 에드 입력창 위 질문 예시 칩 제거. 입력창에 붙어 있어 어색함 */
body.v4 #aiChips, body.v4.simple #aiChips, body.v2.simple.v4 #aiChips { display: none !important; }
/* 11-10 예약 화면: 견본 리포트 링크 */
body.v4 .v4Sample { float: right; font-weight: 600; color: var(--fg); text-decoration: underline; text-underline-offset: 3px; }
/* 11-10 변전소 창 범례 한 줄 */
body.v4 .v4LnKey { margin: 2px 0 8px; font-size: 11.5px; line-height: 1.5; color: var(--fg3); }
/* 11-10 (사용자 지적): 선로·변전소 창이 쌓이며 위쪽 땅·건물 버튼까지 덮던 것. 위 버튼 줄(약 100px) 아래에서만 쌓이고, 넘치면 열린 창이 줄어듦 */
body.v4 #v4Dock { max-height: calc(100vh - 80px - 160px); }   /* 위 버튼 줄 + 위성·지적도 상자 아래까지 */
body.v4 .v4Win.open { max-height: none; }
/* 11-10 (사용자 요청): 선로·변전소 창을 위로 쌓지 않고 옆으로. 새 창이 오른쪽 끝, 옛 창은 왼쪽으로 밀림(제목줄만) */
body.v4:not(.v4m) #v4Dock { width: auto; max-width: calc(100vw - var(--v4w) - var(--v4m) * 3); flex-direction: row; align-items: flex-end; justify-content: flex-end; }
body.v4:not(.v4m) #v4Dock .v4Win { width: 400px; flex: none; }
body.v4:not(.v4m) #v4Dock .v4Win:not(.open) { width: 240px; }
body.v4:not(.v4m) #v4Dock .v4Win.open { max-height: calc(100vh - 80px - 200px); }
/* 11-10: 붙은 땅 작은 창 */
.adjPop .leaflet-popup-content { margin: 14px 16px; font-size: 13px; line-height: 1.5; }
.adjBox > b { font-size: 15px; }
.adjRd { margin: 6px 0 8px; font-weight: 600; padding-left: 16px; position: relative; }
.adjRd::before { content: ''; position: absolute; left: 0; top: 6px; width: 8px; height: 8px; border-radius: 50%; background: #B6BEC7; }
.adjRd.ok::before { background: var(--ok); } .adjRd.warn::before { background: #E8A33D; }
.adjRow { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; border-top: 1px solid var(--edge); }
.adjRow span { color: var(--fg3); white-space: nowrap; } .adjRow b { font-weight: 600; text-align: right; }
.adjDim { margin: 8px 0 0; font-size: 11px; color: var(--fg3); }
.adjOpen { all: unset; cursor: pointer; margin-top: 8px; font-weight: 600; }
/* 11-11 (사용자 요청): 새 창은 오른쪽에 열리고, 바로 앞 창도 접지 않고 왼쪽에 펼친 채로 나란히. 그보다 오래된 창만 제목줄 */
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) { width: 380px; }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) .v4SubBody { display: block !important; flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px 20px 18px; font-size: 13px; line-height: 1.5; }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) { max-height: calc(100vh - 80px - 200px); }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) .v4WinHead { border-bottom: 1px solid var(--edge); }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) .v4WinTtl { color: var(--fg); font-weight: 600; }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) .v4WinTtl::before { content: none; }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2):not(.open) { opacity: .92; }

/* 11-11 후보지 = 즐겨찾기 물건 줄(썸네일 + 이름 + 상태/변화) */
body.v4 .drawer .row.fav { grid-template-columns: 56px 1fr auto; gap: 2px 12px; align-items: center; }
body.v4 .drawer .row.fav .th { grid-row: 1 / 3; width: 56px; height: 44px; border-radius: 6px; background: #E9E9E6 center / 256px 256px no-repeat; filter: saturate(.75); }
body.v4 .drawer .row.fav .s { grid-column: 2 / -1; }
body.v4 .drawer .row .r.new { color: var(--ok); }
body.v4 .drawer details.blk > summary { cursor: pointer; font-size: 13px; font-weight: 700; padding: 6px 0; }
/* 11-11 (사용자 요청): 나란히 대신 겹쳐 쌓기. 새 창이 맨 앞 제자리, 앞 창들은 뒤로 조금씩 왼쪽 위로 비켜 보임. 뒤 창 제목을 누르면 앞으로 */
body.v4:not(.v4m) #v4Dock { display: block; width: 400px; max-width: none; height: calc(100vh - 80px - 200px); }
body.v4:not(.v4m) #v4Dock .v4Win, body.v4:not(.v4m) #v4Dock .v4Win:not(.open), body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(-n+2) { position: absolute; right: 0; bottom: 0; width: 400px; max-height: 100%; opacity: 1; z-index: 1; transition: transform .18s ease; }
body.v4:not(.v4m) #v4Dock .v4Win .v4SubBody { display: block !important; flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px 20px 18px; font-size: 13px; line-height: 1.5; }
body.v4:not(.v4m) #v4Dock .v4Win .v4WinHead { border-bottom: 1px solid var(--edge); }
body.v4:not(.v4m) #v4Dock .v4Win .v4WinTtl { color: var(--fg); font-weight: 600; }
body.v4:not(.v4m) #v4Dock .v4Win .v4WinTtl::before { content: none; }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(2) { transform: translate(-36px, -16px); }
body.v4:not(.v4m) #v4Dock .v4Win:nth-last-child(3) { transform: translate(-72px, -32px); }
body.v4:not(.v4m) #v4Dock .v4Win.open { z-index: 3; transform: none; box-shadow: 0 12px 36px rgba(0,0,0,.22); }
body.v4:not(.v4m) #v4Dock .v4Win:not(.open) { z-index: 2; }
body.v4:not(.v4m) #v4Dock .v4Win:not(.open) .v4WinHead { cursor: pointer; }
/* 11-11 후보지 창 위계: 제목·탭 → 즐겨찾기(칩·확인할 것 먼저·줄마다 ✕) → 리포트 요청 → 최근 본 곳(접힘) → 바닥(로그인 안내·비우기). 폭은 지도 덜 가리게 */
body.v4 .drawer.dList { width: min(440px, 100%); }
body.v4 .drawer.dList .dtop { padding: 16px 20px; gap: 12px; }
body.v4 .drawer.dList .dTitle { flex: 1; margin: 0; font-size: 20px; font-weight: 700; letter-spacing: -.3px; }
body.v4 .drawer.dList .blk { padding: 0 20px; }
body.v4 .drawer.dList .blk h4 { display: flex; align-items: baseline; gap: 6px; margin: 22px 0 8px; font-size: 15px; font-weight: 700; color: var(--fg); }
body.v4 .drawer.dList .blk h4 em { font-style: normal; font-size: 13px; color: var(--fg3); font-weight: 500; }
body.v4 .drawer .favChips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 6px; }
body.v4 .drawer .favChips button { all: unset; cursor: pointer; font-size: 12px; padding: 5px 10px; border-radius: 999px; background: var(--bg2); color: var(--fg2); }
body.v4 .drawer .favChips button em { font-style: normal; color: var(--fg3); margin-left: 2px; }
body.v4 .drawer .favChips button[aria-pressed="true"] { background: var(--fg); color: var(--bg); } body.v4 .drawer .favChips button[aria-pressed="true"] em { color: inherit; opacity: .7; }
body.v4 .drawer .favRow { position: relative; }
body.v4 .drawer .favRow .row.fav { padding-right: 34px; }
body.v4 .drawer .favDel { all: unset; cursor: pointer; position: absolute; right: 0; top: 50%; transform: translateY(-50%); width: 28px; height: 28px; border-radius: 999px; display: grid; place-items: center; font-size: 12px; color: var(--fg3); opacity: 0; transition: opacity .12s; }
body.v4 .drawer .favRow:hover .favDel, body.v4 .drawer .favDel:focus-visible { opacity: 1; }
body.v4 .drawer .favDel:hover { background: var(--bg2); color: var(--fg); }
@media (hover: none) { body.v4 .drawer .favDel { opacity: 1; } }
body.v4 .drawer .favRow.gone .row.fav { opacity: .5; }
body.v4 .drawer .favRow .row.fav .r { margin-right: 4px; }
body.v4 .drawer.dList .df { padding: 16px 20px 20px; font-size: 12px; color: var(--fg3); }
/* 11-11 후보지·내 정보 2차: 글자 탭, 한 단 440, 되돌리기 띠, 즉시 저장 */
body.v4 .drawer.dList { width: min(440px, 100%); display: flex; flex-direction: column; }
body.v4 .drawer.dList .dtop { padding: 18px 20px 0; gap: 12px; border-bottom: 1px solid var(--edge); align-items: flex-end; }
body.v4 .drawer .dTabs { flex: 1; display: flex; gap: 20px; }
body.v4 .drawer .dTabs button { all: unset; cursor: pointer; font-size: 20px; font-weight: 700; letter-spacing: -.3px; color: var(--fg3); padding: 0 0 12px; border-bottom: 2px solid transparent; margin-bottom: -1px; }
body.v4 .drawer .dTabs button[aria-pressed="true"] { color: var(--fg); border-bottom-color: var(--fg); }
body.v4 .drawer .dTabs button:focus-visible { outline: 2px solid var(--fg); outline-offset: 4px; }
body.v4 .drawer.dList .dtop .x { align-self: center; margin-bottom: 10px; width: 32px; height: 32px; padding: 0; border-radius: 999px; display: grid; place-items: center; }
body.v4 .drawer.dList .dtop .x:hover { background: var(--bg2); }
body.v4 .drawer .dNow { margin: 16px 20px 0; padding: 12px 14px; border-radius: 10px; background: var(--bg2); font-size: 13px; display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; align-items: center; }
body.v4 .drawer .dNow b { font-size: 12px; color: var(--fg3); font-weight: 600; grid-column: 1 / -1; }
body.v4 .drawer .dNow p { margin: 0; font-weight: 600; } body.v4 .drawer .dNow .bad { color: var(--bad); } body.v4 .drawer .dNow .new { color: var(--ok); }
body.v4 .drawer .dNow button, body.v4 .drawer .dLink { all: unset; cursor: pointer; font-size: 12px; color: var(--fg2); text-decoration: underline; text-underline-offset: 3px; }
body.v4 .drawer .dNow button:hover, body.v4 .drawer .dLink:hover { color: var(--fg); }
body.v4 .drawer .dEmpty { padding: 20px 0 8px; } body.v4 .drawer .dEmpty b { font-size: 15px; } body.v4 .drawer .dEmpty p { margin: 6px 0 14px; font-size: 13px; line-height: 1.55; color: var(--fg2); }
body.v4 .drawer .dEmpty button { all: unset; cursor: pointer; font-size: 13px; font-weight: 600; padding: 10px 16px; border-radius: 10px; background: var(--fg); color: var(--bg); }
body.v4 .drawer.dList details.blk { padding: 0 20px; margin-top: 14px; border-top: 1px solid var(--edge); }
body.v4 .drawer.dList details.blk > summary { padding: 14px 0; font-size: 15px; font-weight: 700; color: var(--fg); display: flex; align-items: baseline; gap: 6px; }
body.v4 .drawer.dList details.blk > summary::after { content: '›'; margin-left: auto; color: var(--fg3); font-weight: 400; transform: rotate(90deg); transition: transform .15s; }
body.v4 .drawer.dList details.blk[open] > summary::after { transform: rotate(-90deg); }
body.v4 .drawer.dList details.blk > summary em { font-style: normal; font-size: 13px; color: var(--fg3); font-weight: 500; }
body.v4 .drawer .dHist .dLink { display: inline-block; margin: 8px 0 14px; }
body.v4 .drawer.dList .df { margin-top: auto; border-top: 0; padding: 20px; font-size: 12px; color: var(--fg3); }
body.v4 .drawer.dList .df button { font-size: 12px; text-decoration: underline; text-underline-offset: 3px; }
body.v4 .drawer .dUndo { position: sticky; bottom: 16px; margin: 0 16px 16px; padding: 12px 16px; border-radius: 12px; background: var(--fg); color: var(--bg); font-size: 13px; display: flex; align-items: center; justify-content: space-between; gap: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.2); z-index: 2; }
body.v4 .drawer .dUndo span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.v4 .drawer .dUndo button { all: unset; cursor: pointer; font-weight: 700; white-space: nowrap; text-decoration: underline; text-underline-offset: 3px; }
/* 내 정보 */
body.v4 .drawer .prefForm { display: flex; flex-direction: column; flex: 1; }
body.v4 .drawer .dAcct { display: flex; gap: 12px; align-items: center; padding: 18px 20px 0; }
body.v4 .drawer .dAcct b { display: block; font-size: 15px; } body.v4 .drawer .dAcct span { font-size: 12px; color: var(--fg3); line-height: 1.5; display: block; }
body.v4 .drawer .dStat { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 14px 20px 0; }
body.v4 .drawer .dStat > * { all: unset; box-sizing: border-box; padding: 12px 14px; border-radius: 10px; background: var(--bg2); display: block; }
body.v4 .drawer .dStat button { cursor: pointer; } body.v4 .drawer .dStat button:hover { box-shadow: inset 0 0 0 1px var(--fg); }
body.v4 .drawer .dStat b { display: block; font-size: 20px; font-weight: 700; letter-spacing: -.3px; font-variant-numeric: tabular-nums; }
body.v4 .drawer .dStat span { font-size: 12px; color: var(--fg3); }
body.v4 .drawer .prefForm .fine { margin: 8px 0 0; font-size: 12px; color: var(--fg3); line-height: 1.5; }
body.v4 .drawer .prefForm .pf { padding: 9px 0; font-size: 14px; }
body.v4 .drawer .prefForm .pf small, body.v4 .drawer .tog small { display: block; font-size: 12px; color: var(--fg3); font-weight: 400; margin-top: 2px; line-height: 1.4; }
body.v4 .drawer .prefForm .pf input { box-shadow: inset 0 0 0 1px var(--edge); height: 36px; box-sizing: border-box; }
body.v4 .drawer .prefForm .pf input:focus { box-shadow: inset 0 0 0 2px var(--fg); outline: 0; }
body.v4 .drawer .prefForm .pf.wide { border-bottom: 0; padding: 0; } body.v4 .drawer .prefForm .pf.wide input { height: 44px; padding: 0 12px; }
body.v4 .drawer .tog { gap: 16px; padding: 12px 0; cursor: pointer; }
body.v4 .drawer .tog .sw { appearance: none; -webkit-appearance: none; flex: none; width: 40px; height: 24px; border-radius: 999px; background: #C9CDD2; position: relative; cursor: pointer; transition: background .15s; margin: 0; }
body.v4 .drawer .tog .sw::after { content: ''; position: absolute; left: 2px; top: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .15s; box-shadow: 0 1px 2px rgba(0,0,0,.25); }
body.v4 .drawer .tog .sw:checked { background: var(--fg); } body.v4 .drawer .tog .sw:checked::after { transform: translateX(16px); }
body.v4 .drawer .tog .sw:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }
body.v4 .drawer .chip input:focus-visible + span { outline-color: var(--fg); }
body.v4 .drawer.dList .kv2 { grid-template-columns: 72px 1fr; font-size: 13px; padding: 0; }
body.v4 .drawer .dAdv .pf:last-child { border-bottom: 0; margin-bottom: 8px; }
body.v4 .drawer #prefSaved { color: var(--ok); font-weight: 600; }
/* 11-11 로그인. 버튼 색은 각 회사 지침(카카오 노랑, 네이버 초록, 구글 흰 바탕 테두리)을 따름. 그 밖은 흑백 */
body.v4 .drawer .dLogin { margin: 18px 20px 0; padding: 18px; border-radius: 12px; background: var(--bg2); display: flex; flex-direction: column; gap: 8px; }
body.v4 .drawer .dLogin b { font-size: 16px; letter-spacing: -.2px; } body.v4 .drawer .dLogin p { margin: 0 0 6px; font-size: 13px; line-height: 1.55; color: var(--fg2); }
body.v4 .drawer .dLogin .lg { all: unset; box-sizing: border-box; cursor: pointer; width: 100%; height: 46px; border-radius: 10px; text-align: center; font-size: 14px; font-weight: 600; }
body.v4 .drawer .dLogin .lg.kakao { background: #FEE500; color: rgba(0,0,0,.85); }
body.v4 .drawer .dLogin .lg.naver { background: #03C75A; color: #fff; }
body.v4 .drawer .dLogin .lg.google { background: #fff; color: #1F1F1F; box-shadow: inset 0 0 0 1px #747775; }
body.v4 .drawer .dLogin .lg:hover { filter: brightness(.96); } body.v4 .drawer .dLogin .lg:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }
body.v4 .drawer .dAcct.in > div:nth-child(2) { flex: 1; min-width: 0; } body.v4 .drawer .dAcct.in .av { background: var(--fg); color: var(--bg); }
body.v4 .drawer.dList .df #drToLogin { color: var(--fg2); }
