/* 소비자 위치기반 지도 화면 — 모바일 우선. 색·radius·간격은 styles.css 토큰만 사용. */
.map-page{
  margin:0; background:var(--bg); color:var(--text);
  min-height:100dvh; overflow-x:hidden;
  /* 하단 고정 시트가 있으므로 페이지 자체 스크롤은 막는다 */
  overscroll-behavior:none;
}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* 상단 바 (safe-area 상단 침범 방지) */
.map-nav{
  position:relative; z-index:20;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:calc(env(safe-area-inset-top) + 12px) 16px 12px;
  background:var(--card); border-bottom:1px solid var(--border);
}
.map-nav .logo{display:flex;align-items:baseline;gap:3px;text-decoration:none}
.map-nav .local{font-size:14px;color:var(--muted)}
.map-nav .brand{font-size:19px;font-weight:800;color:var(--brand)}
.map-slogan{font-size:12px;color:var(--muted)}
.map-list-link{font-size:13px;font-weight:700;color:var(--brand);text-decoration:none;white-space:nowrap}
.map-list-link:active{opacity:.7}

/* 홈 상황선택에서 넘어온 안내 칩 */
.purpose-chip{
  position:relative; z-index:20;
  margin:0; padding:8px 16px;
  background:var(--brand-soft); color:var(--brand);
  font-size:13px; font-weight:700; text-align:center;
  border-bottom:1px solid var(--border);
}

/* 지역 직접 선택 (위치 거부 시) */
.region-picker{position:relative;z-index:20;background:var(--brand-soft);padding:12px 16px}
.region-title{margin:0 0 8px;font-size:13px;color:var(--text)}
.region-row{display:flex;gap:8px;flex-wrap:wrap}
.region-row select{flex:1 1 90px;min-height:44px;border:1px solid var(--border);border-radius:10px;padding:0 10px;background:var(--card);font:inherit;color:var(--text)}
.region-row .btn{flex:1 1 100%;min-height:44px}
@media(min-width:420px){.region-row .btn{flex:0 0 auto;width:auto;padding:0 18px}}

/* 지도: 화면 세로의 큰 비중 */
#map{
  width:100%;
  height:65vh; height:65dvh; /* dvh 미지원 브라우저는 vh로 폴백 */
  z-index:1; background:var(--bg);
}
.map-credit{
  position:fixed; left:8px; bottom:calc(132px + env(safe-area-inset-bottom));
  margin:0; font-size:10px; color:var(--muted);
  background:rgba(255,255,255,.7); padding:1px 6px; border-radius:6px; z-index:5;
  pointer-events:none;
}

/* 현재 위치 버튼 */
.locate-fab{
  position:fixed; right:14px; bottom:calc(150px + env(safe-area-inset-bottom));
  width:46px; height:46px; border-radius:50%;
  background:var(--card); color:var(--brand); border:1px solid var(--border);
  box-shadow:var(--shadow); display:grid; place-items:center; z-index:15; cursor:pointer;
}
.locate-fab:active{background:var(--brand-soft)}

/* 커스텀 마커 (핀+집) */
.pin-marker{filter:drop-shadow(0 2px 3px rgba(16,24,40,.25))}
.pin-me{filter:drop-shadow(0 2px 4px rgba(71,124,255,.5))}

/* ── 하단 목록 바텀시트 ── */
.list-sheet{
  position:fixed; left:0; right:0; bottom:0; z-index:10;
  height:64dvh;
  background:var(--card); border-top-left-radius:20px; border-top-right-radius:20px;
  box-shadow:0 -4px 20px rgba(16,24,40,.12);
  display:flex; flex-direction:column;
  transform:translateY(calc(64dvh - 132px)); /* peek: 약 132px 노출 */
  transition:transform .28s ease;
  padding-bottom:env(safe-area-inset-bottom);
}
.list-sheet.open{transform:translateY(8dvh)}
.sheet-grip{
  display:block; width:44px; height:5px; margin:10px auto 6px;
  border:0; border-radius:999px; background:var(--border); cursor:grab;
}
.list-head{padding:2px 16px 10px;border-bottom:1px solid var(--border)}
.profession-filter{display:flex;align-items:center;gap:var(--space-2);font-size:var(--type-label);color:var(--text);flex:1 1 auto;min-width:0}.profession-filter select{min-height:var(--touch-target);min-width:0;max-width:100%;flex:1;padding:var(--space-2);background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-control);font:inherit}
.list-head strong{display:block;font-size:15px;margin-bottom:8px}
.sort-tabs{display:flex;gap:6px}
.sort-tabs button{
  flex:1; min-height:34px; border:1px solid var(--border); border-radius:10px;
  background:var(--card); color:var(--muted); font:inherit; font-size:13px; cursor:pointer; white-space:nowrap;
}
.sort-tabs button[aria-selected="true"]{background:var(--brand-soft);color:var(--brand);border-color:var(--brand-soft);font-weight:700}
.list-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 12px 16px}
.list-empty{margin:24px 12px;color:var(--muted);font-size:14px;line-height:1.6;text-align:center}
.sample-note{margin:0 0 10px;padding:8px 10px;background:var(--brand-soft);color:var(--muted);font-size:12px;border-radius:10px;text-align:center}

/* 목록 아이템 */
.spot{
  display:flex; gap:12px; align-items:center; width:100%; text-align:left;
  background:var(--card); border:1px solid var(--border); border-radius:14px;
  padding:12px; margin-bottom:10px; cursor:pointer;
}
.spot:active{background:var(--brand-soft)}
.spot .thumb{flex:0 0 46px;width:46px;height:46px;border-radius:12px;background:var(--brand-soft);display:grid;place-items:center;color:var(--brand);font-weight:800;font-size:15px}
.spot .info{flex:1;min-width:0}
.spot .name{font-size:15px;font-weight:700;color:var(--text)}
.spot .sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.spot .meta{font-size:12px;color:var(--muted);margin-top:2px}
.badge-pledge{display:inline-block;font-size:11px;color:var(--ok);background:rgba(26,156,109,.1);border-radius:6px;padding:1px 6px;margin-top:4px}
.thumb-img{object-fit:cover;overflow:hidden;padding:0}
.avail{display:inline-block;font-size:11px;border-radius:6px;padding:1px 6px;margin-top:4px;white-space:nowrap}
.avail-now{color:var(--ok);background:rgba(26,156,109,.12);font-weight:700}
.avail-today{color:var(--brand);background:var(--brand-soft);font-weight:700}
.avail-scheduled{color:var(--muted);background:var(--bg)}
.card-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}

/* ── 마커 탭 카드 바텀시트 (전체화면 아님, 요약→상세) ── */
.card-scrim{position:fixed;inset:0;background:rgba(16,24,40,.28);z-index:25;opacity:0;transition:opacity .2s}
.card-scrim.show{opacity:1}
.card-sheet{
  position:fixed; left:0; right:0; bottom:0; z-index:26;
  height:60dvh; background:var(--card);
  border-top-left-radius:20px; border-top-right-radius:20px;
  box-shadow:0 -6px 24px rgba(16,24,40,.18);
  transform:translateY(100%); transition:transform .28s ease;
  display:flex; flex-direction:column; padding-bottom:env(safe-area-inset-bottom);
}
.card-sheet.show{transform:translateY(16dvh)}      /* 요약: 약 44dvh 노출 */
.card-sheet.show.detail{transform:translateY(0)}   /* 상세: 60dvh */
.card-sheet-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 16px 20px}

.card-top{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.card-top .thumb{flex:0 0 56px;width:56px;height:56px;border-radius:14px;background:var(--brand-soft);display:grid;place-items:center;color:var(--brand);font-weight:800;font-size:18px}
.card-top .name{font-size:18px;font-weight:800}
.card-top .job{font-size:13px;color:var(--muted)}
.card-stats{display:flex;gap:14px;font-size:13px;color:var(--muted);margin-bottom:12px;flex-wrap:wrap}
.card-stats b{color:var(--text)}
.card-actions{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.card-actions .btn.secondary{background:transparent;color:var(--brand);border:1px solid var(--border)}
.card-subrow{display:flex;gap:10px}
.card-subrow .btn{flex:1;min-height:44px}
.card-note{font-size:12px;color:var(--muted);margin:14px 0 0;line-height:1.6}
.card-more{background:none;border:0;color:var(--brand);font:inherit;font-size:13px;padding:8px 0;cursor:pointer;text-decoration:underline}
.card-detail{margin-top:12px;border-top:1px solid var(--border);padding-top:12px}
.card-detail p{font-size:14px;color:var(--text);line-height:1.7;margin:0 0 8px}

@media(prefers-reduced-motion:reduce){
  .list-sheet,.card-sheet,.card-scrim{transition:none}
}

.planned-pin{display:grid;place-items:center;width:32px;height:32px;background:var(--card);border:2px solid var(--muted);color:var(--muted);border-radius:10px;box-shadow:var(--shadow)}.planned-pin .ui-icon{width:20px;height:20px}.map-page .list-sheet{bottom:92px}.map-page .locate-fab{bottom:calc(36dvh + 92px)}.map-page .card-sheet{bottom:88px}.map-page .card-sheet h2{font-size:22px;letter-spacing:-.5px;margin:12px 0}.map-page .card-sheet details{margin-top:16px}.map-page .card-sheet .btn{margin:16px 0 0}.map-page #map{height:calc(100dvh - 240px);min-height:320px}.map-page .list-body{padding-bottom:16px}.map-page .card-scrim{z-index:510}.map-page .card-sheet{z-index:520}.map-page .map-credit{position:relative;bottom:auto;margin:0;font-size:10px}.map-page .list-empty{margin-bottom:20px}
@media(min-width:900px){.map-page #map{margin-left:380px;width:calc(100% - 380px);height:calc(100dvh - 220px)}.map-page .list-sheet{left:16px;right:auto;top:230px;bottom:100px;width:348px;max-height:none;transform:none;border-radius:var(--radius)}.map-page .list-body{max-height:calc(100% - 70px)}.map-page .locate-fab{right:24px;bottom:120px}.map-page .card-sheet{left:auto;right:24px;width:400px;bottom:110px}.map-page .map-credit{margin-left:390px}.map-page .region-picker{padding-left:24px;padding-right:24px}}
.map-page .card-sheet.show{transform:none;height:auto;max-height:65dvh}.map-page .card-sheet-body{padding:4px 20px 24px}
@media(max-width:899px){.map-page .list-sheet{height:32dvh;transform:none}.map-page .list-sheet.open{height:62dvh;transform:none}.map-page .locate-fab{bottom:calc(32dvh + 106px)}}
.map-page .map-credit{left:0}.spot .info>span{display:block}.spot .meta{margin-top:4px}
.area-request{display:block;margin:8px 12px;padding:10px 12px;text-align:center;text-decoration:none;background:var(--brand);color:var(--card);border-radius:12px;font-weight:700;font-size:14px}.map-page .list-head{flex-shrink:0}.map-page .list-body{min-height:0}.map-page .area-request{flex-shrink:0}

/* Map, list, and navigation occupy separate rows even as browser chrome resizes. */
.map-page{height:100dvh;min-height:520px;display:flex;flex-direction:column;overflow:hidden}
.map-page .map-nav,.map-page .purpose-chip,.map-page .region-picker{flex-shrink:0}
.map-stage{position:relative;flex:1;min-height:180px;isolation:isolate;overflow:hidden}
.map-page #map{position:absolute;inset:0;height:100%;width:100%;min-height:0;margin:0}
.map-page .map-credit{position:absolute;left:4px;bottom:2px;margin:0;z-index:2}
.map-page .list-sheet{position:absolute;left:8px;right:8px;top:auto;bottom:18px;width:auto;height:max(42%,240px);max-height:calc(100% - 16px);transform:none;padding:0;border-radius:18px;transition:height .18s ease;z-index:10}
.map-page .list-sheet.open{height:85%;transform:none}
.sheet-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;padding:4px 10px;border-bottom:1px solid var(--border)}
.sheet-toolbar button{min-height:44px;min-width:64px;border:0;border-radius:10px;background:var(--brand-soft);color:var(--brand);font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:8px 12px}
.sheet-toolbar .sheet-resize{background:transparent;touch-action:none;cursor:ns-resize}
.sheet-toolbar button:focus-visible,.list-reopen:focus-visible{outline:3px solid var(--brand);outline-offset:-3px}
.map-page .list-head{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:6px 12px}
.map-page .list-head strong{margin:0;font-size:13px}.map-page .sort-tabs{flex-shrink:0}.map-page .sort-tabs button{padding:4px 8px}
.map-page .list-body{min-height:0;max-height:none;overscroll-behavior:contain}.map-page .area-request{font-size:13px;margin:6px 12px;padding:8px}
.map-page .locate-fab{position:absolute;top:90px;bottom:auto;right:10px;z-index:9}
.map-page .list-reopen{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:11;border:0;background:var(--brand);color:var(--card);border-radius:24px;min-height:48px;padding:12px 24px;font:inherit;font-weight:700;box-shadow:var(--shadow);white-space:nowrap}
.map-page .card-sheet,.map-page .card-sheet.show{position:absolute;left:8px;right:8px;bottom:18px;width:auto;height:auto;max-height:calc(100% - 16px);transform:none;padding:0;border-radius:18px;z-index:30}
.map-page .card-sheet.show.detail{height:calc(100% - 16px)}.map-page .card-sheet-body{min-height:0}.map-page .card-scrim{position:absolute;z-index:25}
.map-page .customer-nav{position:relative;bottom:auto;left:auto;transform:none;width:100%;max-width:none;flex-shrink:0;border-radius:0;padding:4px 8px max(4px,env(safe-area-inset-bottom));box-shadow:none}
.map-page .customer-nav a{padding:6px;font-size:11px}.map-page .customer-nav .ui-icon{width:22px;height:22px}
@media(min-width:900px){.map-page .list-sheet,.map-page .list-sheet.open{left:12px;right:auto;top:12px;bottom:18px;width:330px;height:auto}.map-page .list-reopen{left:24px;transform:none}.map-page .card-sheet,.map-page .card-sheet.show{left:auto;right:70px;width:380px}.map-page .customer-nav{padding-left:calc((100% - 560px)/2);padding-right:calc((100% - 560px)/2)}}
@media(max-width:419px){.region-row{gap:6px}.region-row select{flex:1;min-width:0}.region-row .btn{flex:0 0 auto;font-size:12px;padding:0 8px;width:auto}.map-page .map-nav{padding:8px 12px}.map-page .brand-logo{height:32px;width:auto}.region-picker{padding:8px 12px}.purpose-chip{padding:6px 12px;font-size:12px}}
@media(max-height:600px){.map-page{min-height:440px}.map-page .map-nav{padding:4px 12px}.map-page .brand-logo{height:28px;width:auto}.map-page .region-picker{padding:4px 12px}.map-page .region-title{margin:0 0 4px}.map-page .purpose-chip{display:none}.map-page .list-sheet{height:65%}.map-page .customer-nav a{flex-direction:row;justify-content:center}.map-page .list-head{padding:2px 10px}}
@media(prefers-reduced-motion:reduce){.map-page .list-sheet{transition:none}}

.region-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:8px}.region-toolbar .region-title{flex:1;margin:0;line-height:1.5}.map-page .region-toolbar .locate-fab{position:static;display:flex;align-items:center;justify-content:center;gap:4px;width:auto;min-width:92px;height:44px;flex-shrink:0;border-radius:12px;font:inherit;font-size:13px;font-weight:700;box-shadow:none}.region-toolbar .locate-fab svg{width:18px;height:18px}

.map-page .planned-pin{background:var(--brand);border-color:var(--brand-dark);color:var(--card)}
.map-page .card-sheet,.map-page .card-sheet.show{left:50%;right:auto;width:min(380px,calc(100% - 24px));transform:translateX(-50%)}
.map-page .card-sheet h2{font-size:21px;margin:6px 0}.map-page .card-sheet-body{padding:12px 18px 18px}.map-page .card-sheet .btn{margin:12px 0 0}
.map-page .list-sheet{transition:none}

.sheet-toolbar .sheet-resize{flex:1;min-height:48px;text-align:center}.map-page .sheet-toolbar{padding:4px 8px}.map-page .list-body{overscroll-behavior-y:contain;scroll-behavior:smooth}

/* One compact, nonmodal selection card leaves the map usable. */
.map-page .card-sheet,.map-page .card-sheet.show{bottom:12px;width:min(340px,calc(100% - 24px));max-height:45%;height:auto;box-shadow:0 4px 20px #172b4d26}.map-page .card-sheet .sheet-toolbar{min-height:40px}.map-page .card-sheet .sheet-toolbar button{min-height:44px;padding:6px 12px}.map-page .card-sheet-body{padding:0 14px 12px;overflow-y:auto;overscroll-behavior:contain}.map-page .card-sheet h2{font-size:18px;margin:0 0 6px}.map-page .card-sheet p{font-size:13px;margin:4px 0;line-height:1.4}.map-page .card-sheet .btn{margin-top:8px;padding:10px 12px;font-size:14px}.map-page .card-scrim{display:none!important}

.urgent-map-link{padding:8px 16px;background:var(--brand-soft);color:var(--brand);font-weight:700;text-align:center;flex-shrink:0}

.map-page{height:100vh;height:100dvh;min-height:0}.map-page.has-bottom-nav .customer-nav{height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));flex:0 0 calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));padding:4px 8px calc(4px + env(safe-area-inset-bottom,0px));box-sizing:border-box}.map-page .card-sheet-body{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}.map-page .notification-bell{top:auto;bottom:auto}

/* Compact result panel. The map stage already excludes the navigation safe area. */
.map-page .list-sheet{height:auto;max-height:calc(100% - 16px);bottom:16px;display:flex;flex-direction:column;overflow:hidden}
.map-page .list-sheet.open{height:min(52dvh,520px);max-height:min(52dvh,520px,calc(100% - 16px))}
.map-page .list-sheet .sheet-toolbar{height:44px;min-height:44px;padding:0 8px;border:0}
.map-page .list-sheet .sheet-toolbar button{height:44px;min-height:44px;padding:0 12px;min-width:44px}
.map-page .list-sheet .sheet-resize{font-size:12px}.map-page .list-sheet .sheet-close{background:transparent;font-size:22px}
.map-page .list-head{padding:0 16px;min-height:24px;flex-shrink:0}.map-page .list-head strong{font-size:13px;line-height:20px}
.map-page .list-sheet:not(.open) .sort-tabs,.map-page .list-sheet:not(.open) .list-body,.map-page .list-sheet.is-empty .sort-tabs{display:none}
.map-page .area-request{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:48px;height:48px;flex-shrink:0;margin:8px 16px 16px;padding:0 16px;font-size:14px;border-radius:14px}
.map-page .list-body{overflow-y:auto;flex:1;padding:0 12px 12px}.map-page .spot{padding:12px;gap:12px;margin-bottom:8px}.map-page .spot .sub,.map-page .spot .meta{font-size:12px;line-height:18px}.spot-action{color:var(--brand);font-size:13px;font-weight:700}.map-page .spot .thumb{width:48px;height:48px}.map-page .sort-tabs button{min-height:44px}
.map-page .list-sheet.is-empty,.map-page .list-sheet.is-empty.open{height:140px!important;max-height:calc(100% - 16px)!important}
@media(min-width:900px){.map-page .list-sheet,.map-page .list-sheet.open{left:auto;right:16px;top:16px;bottom:auto;width:clamp(340px,28vw,420px);max-width:calc(35% - 16px);height:auto;max-height:calc(100% - 32px);border-radius:20px}.map-page .list-sheet:not(.open) .list-body{display:block;max-height:340px;flex:initial}.map-page .list-sheet.open .list-body{max-height:340px}.map-page .list-sheet.is-empty .list-body{display:none}.map-page .list-sheet .sheet-resize{visibility:hidden}.map-page .list-sheet .list-head{min-height:32px}.map-page .list-sheet.is-empty,.map-page .list-sheet.is-empty.open{height:148px!important}.map-page .list-reopen{left:auto;right:16px;transform:none}}

/* Legal links remain on home/account; keep the map viewport dedicated to navigation. */
.map-page > .policy-footer{display:none}
.professional-pin{display:grid;place-items:center;width:36px;height:36px;border:2px solid var(--brand);border-radius:50%;background:var(--card);color:var(--brand);box-shadow:var(--shadow)}.professional-pin .ui-icon{width:24px;height:24px}.map-page .planned-pin.is-planned{background:var(--brand-soft);color:var(--brand);border:2px dashed var(--brand)}.spot .thumb .ui-icon{width:26px;height:26px}.map-page .list-head{flex-wrap:wrap;gap:8px}.map-page .sort-tabs{flex-wrap:wrap}.map-key{display:flex;gap:16px;flex-wrap:wrap;padding:8px 16px;margin:0;font-size:12px;color:var(--muted)}.map-key span{display:inline-flex;gap:5px;align-items:center}.map-key .ui-icon{width:18px;height:18px;color:var(--brand)}
@media(min-width:900px){.map-page .list-sheet:not(.open) .sort-tabs{display:flex}}
.map-page #cardSheet.expert-card-sheet{width:min(var(--expert-card-width),calc(100% - var(--space-4)*2));max-height:min(65%,calc(100% - var(--space-4)*2));bottom:var(--space-4)}
.map-page .expert-card-sheet .card-sheet-body{padding:0 var(--space-4) var(--space-4);min-height:0;overflow-y:auto;overscroll-behavior:contain}
.map-page .expert-card-sheet .expert-profile h2{margin:0;font-size:var(--type-office-title);overflow-wrap:anywhere}
.map-page .expert-card-sheet .btn{min-height:var(--touch-target);box-sizing:border-box;white-space:normal;line-height:1.5}
.map-page .expert-card-sheet .expert-profile p{margin:0}.map-page .expert-card-sheet .expert-profile-note{font-size:var(--type-small)}
.map-page #cardBody.expert-card-body{display:flex;flex-direction:column;overflow:hidden;min-height:0}
.expert-card-content{min-height:0;overflow-y:auto;overscroll-behavior:contain}.expert-card-actions{display:grid;flex-shrink:0;gap:var(--space-2);padding-top:var(--space-2);max-height:50%;overflow-y:auto}
.map-page .expert-card-actions .btn{margin:0}.expert-visit-link{display:flex;align-items:center;min-height:var(--touch-target);font-size:var(--type-small);color:var(--brand-dark)}
@media(min-width:900px){.map-page .card-sheet.expert-card-sheet{left:auto;right:calc(var(--touch-target) + var(--space-5));transform:none}}
.map-page .expert-card-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
.map-page .expert-card-actions .expert-office-action{grid-column:1/-1}
.map-page .expert-card-actions .btn:only-child{grid-column:1/-1}
@media(max-width:600px){
 .map-page #cardSheet.expert-card-sheet{width:calc(100% - var(--space-2)*2);max-height:56%;bottom:var(--space-2)}
 .map-page .expert-card-sheet .card-sheet-body{padding:0 var(--space-3) var(--space-3)}
 .map-page .expert-card-sheet .expert-card-actions{padding-top:var(--space-3)}
 .map-page .expert-card-sheet .expert-profile :is(.expert-profession,.expert-organization){font-size:var(--type-label);line-height:1.5}
 .map-page .expert-card-sheet .expert-profile .expert-introduction{font-size:var(--type-body);line-height:1.65}
 .map-page .expert-card-sheet .expert-card-actions .btn{font-size:var(--type-body);min-height:var(--ui-control)}
}

/* 빈 지역 안내 — 오픈 알림 신청 연결.
   .list-body 는 시트가 접혀 있을 때(205행)와 빈 상태일 때(209행) 숨겨지므로 안내 블록은
   .list-body 밖, 기존 '방문 전문가 찾기' 링크와 같은 층(시트 직계)에 둔다.
   버튼은 기존 .btn / .btn.ghost 를 그대로 쓰고 간격만 토큰으로 준다. */
.map-page .list-sheet .empty-actions{display:flex;flex-direction:column;gap:var(--space-2);flex-shrink:0;padding:var(--space-2) var(--space-4) 0}
.map-page .list-sheet .empty-actions .btn{width:100%;min-height:48px;box-sizing:border-box;white-space:normal}
.map-page .list-sheet .empty-actions-hint{margin:0;color:var(--muted);font-size:var(--type-small);line-height:1.5}
/* 빈 상태 시트를 140px 에 고정하면 안내 버튼이 잘린다. 내용 높이만큼만 늘리고 상한만 유지한다. */
.map-page .list-sheet.is-empty,.map-page .list-sheet.is-empty.open{height:auto!important;max-height:calc(100% - 16px)!important}
@media(min-width:900px){.map-page .list-sheet.is-empty,.map-page .list-sheet.is-empty.open{height:auto!important}}

/* 빈 상태 안내가 상한 높이를 넘으면 잘라내지 말고 시트 안에서 스크롤한다(1440px에서 방문 링크가 잘리던 문제). */
.map-page .list-sheet.is-empty,.map-page .list-sheet.is-empty.open{overflow-y:auto}
.map-page .list-sheet.is-empty .empty-actions,.map-page .list-sheet.is-empty #areaRequest{flex-shrink:0}
/* 빈 상태에서는 빈 그림 자리와 방문 링크 여백을 줄여 상한 높이 안에 모두 들어오게 한다. */
.map-page .list-sheet.is-empty .art-slot.empty-art{margin-bottom:0}
.map-page .list-sheet.is-empty #areaRequest{margin-top:4px;margin-bottom:8px}
.map-page .list-sheet.is-empty .empty-actions{padding-top:0;gap:6px}
/* 등록과 지역 소식을 분리해도 데스크톱 시트의 방문 링크가 잘리지 않게 한다. */
@media(min-width:900px){.map-page .list-sheet.is-empty .empty-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.map-page .list-sheet.is-empty .empty-actions .btn{height:auto;min-width:0}}

/* 헤더 로고는 모바일 28px / 데스크톱 32px. 뒤에 오는 규칙이 이기도록 파일 끝에 둔다. */
@media(max-width:480px){.map-page .brand-logo{height:28px;width:auto}}
/* Map-first surface: panels are opened only by an explicit user action. */
.map-page #listSheet[hidden],.map-page #regionPicker[hidden],.map-page #listReopen[hidden]{display:none!important}
.map-page .map-nav{gap:var(--space-2)}
.map-page .map-nav .logo{margin-right:auto;min-width:0}
.map-page .map-nav .brand-logo{max-width:100%;object-fit:contain}
.map-page .map-nav .locate-fab{position:static;display:flex;align-items:center;justify-content:center;gap:var(--space-1);width:auto;min-width:var(--touch-target);height:var(--touch-target);padding:var(--space-2);flex:none;box-shadow:none;font:inherit;font-size:var(--type-small)}
.map-page #regionToggle{width:auto;white-space:nowrap;min-height:var(--touch-target);padding:var(--space-2);font-size:var(--type-small);flex:none}
.map-page .map-location-status{margin:0;padding:var(--space-1) var(--space-4);font-size:var(--type-small);flex:none}
.map-page .map-location-status:empty{display:none}
.map-page #listSheet.open{overflow-y:auto;max-height:calc(100% - var(--space-4)*2)}
.map-page #listSheet .list-body{overflow:visible;max-height:none;flex:none}
.map-page #listSheet :is(.urgent-map-link,.map-key,.map-list-link,.purpose-chip){position:static;margin:var(--space-2) var(--space-4);padding:0;flex:none}
.map-page #listSheet .map-key{display:flex;flex-wrap:wrap;font-size:var(--type-small)}
.map-page #listSheet .sort-tabs{display:flex;flex-wrap:wrap}
.map-page #listReopen{font-size:var(--type-small);padding:var(--space-2) var(--space-4);min-height:var(--touch-target)}
