/* 지도 위 버튼(전체화면·내 위치) — map-extras.js */
.map-fab-group{position:absolute;right:10px;bottom:34px;z-index:650;display:grid;gap:10px}
.map-fab{width:46px;height:46px;border-radius:50%;background:#fff;border:1px solid #d1ddcc;box-shadow:0 3px 12px #2b463033;display:grid;place-items:center;color:#244b39;cursor:pointer;padding:0}
.map-fab svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.map-fab svg .dot{fill:currentColor;stroke:none}
.map-fab:active{transform:scale(.95)}
.map-fab:focus-visible{outline:3px solid #448de5;outline-offset:2px}
#map-fab-locate{color:#6b7a70}
#map-fab-locate.on{color:#2277df}
#map-fab-locate.following{background:#2277df;color:#fff;border-color:#2277df}
#map-fab-locate.searching svg{animation:map-fab-pulse 1s ease-in-out infinite}
@keyframes map-fab-pulse{50%{opacity:.25}}

/* 전체화면 지도 — 진짜 전체화면(안드로이드·PC)과 화면 채우기(아이폰) 모두 같은 모양 */
.map-frame.map-full,.map-frame.map-full:fullscreen{position:fixed;inset:0;z-index:2000;border:0;border-radius:0;min-height:0;height:100dvh;isolation:isolate;background:#c8e2e2}
.map-frame.map-full>.map-canvas{height:100%!important;width:100%}
.map-frame.map-full .zoom-controls{top:calc(10px + env(safe-area-inset-top,0px))}
.map-frame.map-full .map-legend{top:calc(10px + env(safe-area-inset-top,0px))}
.map-frame.map-full .map-fab-group{bottom:calc(40px + env(safe-area-inset-bottom,0px))}
.map-frame.map-full .close-expanded{display:none}
html.map-full-open,html.map-full-open body{overflow:hidden}
html.map-full-open .mobile-nav{display:none!important}

/* 전체화면에서만 보이는 위치 상태 한 줄 */
.map-status-chip{display:none}
.map-frame.map-full .map-status-chip:not(:empty){display:block;position:absolute;left:10px;right:68px;bottom:calc(40px + env(safe-area-inset-bottom,0px));z-index:650;background:#ffffffee;border:1px solid #d8e0ce;border-radius:10px;padding:8px 11px;font-size:12px;line-height:1.4;color:#244b39;pointer-events:none}
.map-status-chip.error{color:#a8461f}

/* 위성사진 위에서는 범례·저작자 표시가 잘 보이게 */
.map-frame.satellite-on .leaflet-control-attribution{background:#ffffffd9}

/* 바래길 경로 반투명·끄기 */
#map-fab-route{color:#23795f}
#map-fab-route.off{color:#9aa69c;background:#f1f3ee}
#map-fab-route.off::after{content:'';position:absolute;width:28px;height:2px;background:currentColor;transform:rotate(-45deg)}
.map-fab{position:relative}
.map-frame.routes-off .map-legend .line{opacity:.25}
.route-mode select{font:inherit;font-size:inherit;padding:3px 6px;border:1px solid #d1ddcc;border-radius:7px;background:#fff;margin-left:4px}

/* 잡고 이동 — 시안의 .map-canvas{cursor:auto} 가 Leaflet 손 모양을 덮어 끌 수 있는지 안 보였다 */
.map-canvas.leaflet-container{cursor:grab;touch-action:none}
.map-canvas.leaflet-container.leaflet-dragging,.map-canvas.leaflet-container:active{cursor:grabbing}
.map-canvas.leaflet-container .leaflet-interactive{cursor:pointer}

/* 여행 안내 › 코스별 화장실 — map-extras.js */
#course-wc{margin-top:0}
.cwc-day{border:1px solid #dfe5d8;background:#fff;border-radius:13px;padding:16px;margin-bottom:14px}
.cwc-day-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.cwc-day-head h3{margin:4px 0 0;font-size:18px}
.cwc-day-head h3 small{font-size:12px;font-weight:500;color:#6b7a70;margin-left:6px}
.cwc-day-head button{white-space:nowrap}
.cwc-list{list-style:none;margin:0;padding:0;display:grid;gap:10px;counter-reset:cwc}
.cwc-item{display:grid;grid-template-columns:110px 1fr;gap:12px;padding-top:10px;border-top:1px solid #edf1e8}
.cwc-photo{position:relative;width:110px;height:96px;padding:0;border:0;border-radius:10px;overflow:hidden;background:#eaf0e4;cursor:pointer;display:grid;place-items:center;align-content:center;gap:4px;color:#527882}
.cwc-photo img{width:100%;height:100%;object-fit:cover}
.cwc-photo b{font-size:13px}
.cwc-photo span{font-size:10px;color:#6b7a70}
.cwc-body h4{margin:0 0 3px;font-size:15px}
.cwc-body h4::before{counter-increment:cwc;content:counter(cwc);display:inline-grid;place-items:center;width:20px;height:20px;margin-right:6px;border-radius:50%;background:#294f3b;color:#fff;font-size:11px;vertical-align:1px}
.cwc-body>p{margin:0 0 6px;font-size:12px;color:#55645a}
.cwc-src{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;margin:0 0 8px;font-size:11px;color:#55645a}
.cwc-src dt{font-weight:700;color:#294f3b}
.cwc-src dd{margin:0}
.cwc-src a{color:#2d6a4f}
.cwc-actions{display:flex;flex-wrap:wrap;gap:6px}
.cwc-actions button,.cwc-actions a{min-height:36px;padding:7px 11px;border:1px solid #d9e1d0;border-radius:8px;background:#fff;font-size:12px;color:#294f3b;text-decoration:none;cursor:pointer}
/* 여행 안내 › 코스 주변 마트·병원 — map-extras.js */
#course-nearby{margin-top:0}
.nb-emergency{border:1px solid #f0c9c0;background:#fff6f3;color:#7a2e1d;border-radius:11px;padding:11px 14px;margin-bottom:14px;font-size:13px;line-height:1.5}
.nb-emergency a{color:#a8461f;margin-left:4px}
.nb-empty{margin:0 0 10px;padding:10px 12px;border-radius:9px;background:#f4f6f0;font-size:12px;color:#55645a}
.nb-sub{margin:14px 0 4px;font-size:13px;color:#294f3b}
.nb-anchors .cwc-photo{cursor:default}
.cwc-photo.nb-hospital{color:#a8461f;background:#fbece7}
.cwc-photo.nb-mart{color:#2d6a9f;background:#e8f0f8}
@media (max-width:600px){
  .cwc-day{padding:13px}
  .cwc-day-head{align-items:flex-start}
  .cwc-item{grid-template-columns:84px 1fr;gap:10px}
  .cwc-photo{width:84px;height:84px}
}

/* 출발 차량 배정(요청 #7) — vehicles.js */
@media(max-width:900px){body.has-vehicle-nav .app-nav{grid-template-columns:repeat(7,1fr);padding-left:2px;padding-right:2px}body.has-vehicle-nav .app-nav button{font-size:10px;padding-left:1px;padding-right:1px}}
.vehicle-tools{display:grid;gap:10px;margin-bottom:12px}
.vehicle-tools .search input{font-size:16px}
.vehicle-filters{display:flex;flex-wrap:wrap;gap:6px}
.vehicle-filters button span{opacity:.7;font-size:11px}
.vehicle-status{font-size:13px;color:#5d6d5a;margin:4px 0 10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.vehicle-list{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.vehicle-person{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid #dce4d4;border-radius:12px;padding:10px 12px}
.vehicle-person.moved{border-color:#e0a75a;background:#fffaf1}
.vehicle-person strong{display:block;font-size:15px;color:#244b39}
.vehicle-person small{display:block;font-size:12px;color:#728066;margin-top:2px}
.vehicle-person select{font-size:16px;min-height:40px;border:1px solid #cfd9c8;border-radius:8px;padding:4px 8px;background:#fff;color:#244b39;max-width:52%}
.vehicle-person .vehicle-name{font-size:14px;white-space:nowrap}
