  #tab-pick{
    --map-route:var(--action-fill);--map-route-soft:#c9e2ff;--map-stop:var(--action-fill);--map-stop-fixed:var(--brand-deep);--map-interest:#2563d9;
    --map-mul:#247a84;--map-soup:#a45161;--map-local:#5b64b3;--map-market:#994d75;
    --map-meal:#167c5b;--map-bar:#6554c0;--map-cafe:#7d4ea0;--map-tour:#386eae;--map-etc:#5d7486;
    --map-home:#c7354a;--map-home-ring:#ffadbc;--map-home-key:#0b2545;
    --map-fixed:#2563d9;--map-fixed-ring:#93c5fd;
  }
  /* 지도 모드: 카드 섹션·검색·퀵네비 숨기고 지도만 (탭 나갔다 오면 JS가 리스트로 리셋) */
  #tab-pick.active.mapmode{display:flex;flex-direction:column;min-height:100vh;padding-bottom:calc(68px + env(safe-area-inset-bottom));box-sizing:border-box;}
  #tab-pick.mapmode > .qnav,
  #tab-pick.mapmode > .fpanel,
  #tab-pick.mapmode > .qempty,
  #tab-pick.mapmode > section{display:none !important;}
  /* 일정에서 연 지도는 맛집 필터 대신 같은 3등분 Day 탐색을 유지한다. */
  #tab-pick > .schedule-map-days{display:none!important;}
  #tab-pick.schedule-map-mode > .schedule-map-days{position:sticky;top:0;z-index:650;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:11px 12px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.96);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
  .schedule-map-day{display:inline-flex;width:100%;min-width:0;min-height:44px;box-sizing:border-box;align-items:center;justify-content:center;padding:0 10px;border:1px solid var(--input-border);border-radius:22px;background:var(--control-bg);color:var(--info);font-family:inherit;font-size:13.5px;font-weight:800;line-height:1;white-space:nowrap;cursor:pointer;}
  .schedule-map-day.on{border-color:var(--action-fill);background:var(--action-fill);color:var(--on-action);box-shadow:0 3px 9px rgba(27,100,218,.2);}
  .schedule-map-day:focus-visible{outline:3px solid var(--focus);outline-offset:2px;}
  /* 일반 지도에서도 장소 추가는 공통 우측 레일을 지킨다. 지도 유틸 열을 위로 보내 겹침을 막는다. */
  #tab-pick.mapmode:not(.schedule-map-mode) .mfabs{bottom:112px;}
  #tab-pick.schedule-map-mode > .place-add-fab{display:none!important;}
  #sokcho-map-wrap{position:relative;flex:1 1 auto;min-height:320px;margin:8px 12px 0;border-radius:16px;overflow:hidden;border:1px solid var(--border-default,#ccd9e3);background:#dbe9f1;box-shadow:0 8px 24px rgba(7,26,46,.12);}
  #sokcho-map-wrap[hidden]{display:none;}
  #sokcho-map{position:absolute;top:0;left:0;right:0;bottom:0;}
  /* 고정 캡슐이 지도 저작권 표기를 덮지 않도록 표기만 한 줄 위로 올린다. */
  #sokcho-map-wrap .leaflet-bottom.leaflet-left{bottom:58px;}
  #sokcho-map-state{position:absolute;top:0;left:0;right:0;bottom:0;z-index:500;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;font-size:13.5px;font-weight:600;color:#475569;background:#dbe9f1;line-height:1.7;}
  #sokcho-map-state[hidden]{display:none;}
  #sokcho-map-msg{margin:8px 20px 0;padding:10px 12px;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;color:#9b2c2c;font-size:12.5px;font-weight:600;line-height:1.6;}
  #sokcho-map-msg[hidden]{display:none;}
  #sokcho-map-context{margin:7px 20px 0;font-size:11.5px;font-weight:800;color:var(--text-secondary,#5a6b80);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  #sokcho-map-context[hidden]{display:none;}
  /* 커스텀 핀 — 외부 이미지 없이 CSS로 (오프라인·경로문제 안전) */
  .mpin{position:relative;width:32px;height:32px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1px rgba(9,45,67,.34),inset 0 1px 0 rgba(255,255,255,.28),0 4px 10px rgba(7,31,47,.32);border:2.5px solid rgba(255,255,255,.98);}
  .mpin.mp-cat{width:34px;height:34px;margin:5px;color:#fff;transition:transform .16s cubic-bezier(.2,.8,.2,1),filter .16s,box-shadow .16s;}
  .mpin span{position:relative;z-index:1;transform:rotate(45deg);font-size:13px;line-height:1;}
  .mpin.mp-cat::before{content:'';position:absolute;inset:2px 2px 48% 2px;border-radius:999px 999px 30% 30%;background:linear-gradient(180deg,rgba(255,255,255,.28),transparent);pointer-events:none;}
  /* 숙소·확정은 일반 카테고리 핀과 다른 원형 랜드마크 프레임을 쓴다. */
  .mpin.mp-home,.mpin.mp-fixed{position:relative;box-sizing:border-box;transform:none;border-radius:50%;overflow:visible;isolation:isolate;color:#fff;border:3px solid #fff;}
  .mpin.mp-home span,.mpin.mp-fixed span{position:relative;z-index:1;width:100%;height:100%;transform:none;display:grid;place-items:center;}
  .mpin.mp-home::after,.mpin.mp-fixed::after{content:'';position:absolute;left:50%;bottom:-7px;z-index:-1;width:11px;height:11px;transform:translateX(-50%) rotate(45deg);border-right:3px solid #fff;border-bottom:3px solid #fff;border-radius:0 0 3px 0;}
  .mpin-symbol{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}
  .mpin.mp-cat .mpin-emoji{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.94);font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:16px;line-height:1;text-shadow:none;box-shadow:inset 0 1px 0 #fff,0 1px 3px rgba(7,26,46,.18);}
  .leaflet-marker-icon:active .mpin.mp-cat{transform:rotate(-45deg) scale(.9);filter:saturate(1.12);}
  .mpin.mp-home{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#e34b60 0%,var(--map-home) 72%);border:3px solid #fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 0 0 2px var(--map-home-key),0 0 0 6px color-mix(in srgb,var(--map-home-ring) 48%,transparent),0 9px 20px rgba(7,26,46,.4);}
  .mpin.mp-home::before{content:'숙소';position:absolute;left:50%;top:-24px;z-index:4;transform:translateX(-50%);min-width:34px;padding:3px 7px;border:2px solid #fff;border-radius:999px;background:var(--map-home-key);color:#fff;font-size:10.5px;font-weight:900;line-height:1;letter-spacing:.02em;text-align:center;white-space:nowrap;box-shadow:0 2px 6px rgba(7,26,46,.34);}
  .mpin.mp-home::after{bottom:-8px;z-index:0;width:13px;height:13px;background:var(--map-home);border-right:3px solid #fff;border-bottom:3px solid #fff;}
  .mpin.mp-home .mpin-symbol{width:27px;height:27px;stroke-width:2.15;}
  /* 팝업 내용 */
  .mpop{min-width:150px;}
  #sokcho-map-wrap .leaflet-popup-content-wrapper,#sokcho-map-wrap .leaflet-popup-tip{background:var(--surface-1,#fff);color:var(--text-primary,#16324f);}
  #sokcho-map-wrap .leaflet-popup-close-button{width:44px;height:44px;color:var(--text-secondary,#5a6b80);font-size:22px;}
  .mpop-nm{font-size:14.5px;font-weight:800;color:#16324f;}
  .mpop-desc{font-size:12px;color:#5a6b80;margin-top:3px;line-height:1.5;}
  .mpop-dist{font-size:12px;color:#2b6cb0;font-weight:700;margin-top:5px;}
  .mpop-btns{display:flex;gap:6px;margin-top:9px;}
  .mpop-b{flex:1;font-family:inherit;font-size:12.5px;font-weight:800;border:1px solid #d6e4f5;border-radius:9px;padding:7px 4px;cursor:pointer;background:#eef4fb;color:#2b6cb0;white-space:nowrap;}
  .mpop-b.star{display:inline-flex;align-items:center;justify-content:center;gap:4px;}
  .mpop-b.star .bookmark-mark{width:15px;height:18px;}
  .mpop-b.star .bookmark-icon{width:15px;height:18px;}
  .mpop-b.star .bookmark-check{right:-4px;bottom:-3px;width:11px;height:11px;font-size:7px;}
  .mpop-b.star.on{background:#fffbeb;color:#975a16;border-color:#f6d98a;}
  /* data-theme 기반 정본(theme.css)과 충돌하던 구 OS 테마 규칙 */
  @media not all{
    #sokcho-map-wrap{border-color:#2b3d5c;background:#0e1726;}
    #sokcho-map-state{background:#0e1726;color:#8ea3bd;}
    #sokcho-map-msg{background:#2a1518;border-color:#c53030;color:#feb2b2;}
    .mpop-nm{color:#e8f1fa;}
    .mpop-desc{color:#8ea3bd;}
  }
  /* ── 13단계: 카테고리별 핀 색 ── */
  .mpin.cat-mul{background:var(--map-mul);}    /* 회·물회 */
  .mpin.cat-soup{background:var(--map-soup);}  /* 탕·해장 */
  .mpin.cat-local{background:var(--map-local);}/* 로컬픽 */
  .mpin.cat-market{background:var(--map-market);}/* 시장 */
  .mpin.cat-meal{background:var(--map-meal);}  /* 식사 */
  .mpin.cat-bar{background:var(--map-bar);}    /* 술집 */
  .mpin.cat-cafe{background:var(--map-cafe);}  /* 카페 */
  .mpin.cat-tour{background:var(--map-tour);}  /* 여행지 */
  .mpin.cat-etc{background:var(--map-etc);}    /* 폴백 */
  .mpin.mp-fixed{width:38px;height:38px;background:linear-gradient(145deg,color-mix(in srgb,var(--map-fixed) 78%,#fff),var(--map-fixed));box-shadow:inset 0 1px 0 rgba(255,255,255,.26),0 0 0 3px color-mix(in srgb,var(--map-fixed-ring) 82%,transparent),0 5px 12px rgba(7,26,46,.34);}   /* 확정 일정 */
  .mpin.mp-fixed::after{background:var(--map-fixed);}
  .mpin.mp-fixed::before{content:'✓';position:absolute;right:-5px;top:-5px;z-index:2;width:17px;height:17px;box-sizing:border-box;border:2px solid #fff;border-radius:50%;background:var(--success-fill);color:#fff;font-size:10px;font-weight:900;line-height:13px;text-align:center;box-shadow:0 2px 5px rgba(24,43,56,.24);}
  /* 관심 강조 — 경고용 금색 대신 블루 체크를 쓴다. */
  .mpin.mp-cat.starred{box-shadow:0 0 0 3px color-mix(in srgb,var(--map-interest) 70%,transparent),0 4px 9px rgba(24,43,56,.32);border-color:#dbeafe;}
  .mpin.mp-cat.starred::after{content:'✓';position:absolute;right:-7px;top:-7px;z-index:3;width:15px;height:15px;box-sizing:border-box;transform:rotate(45deg);border:2px solid #fff;border-radius:50%;background:var(--action-fill);color:#fff;font-size:8px;font-weight:950;line-height:11px;text-align:center;box-shadow:0 2px 5px rgba(7,26,46,.3);}
  /* GPS 내 위치 — 파란 중심점·흰 테두리·정적인 halo(핀/펄스 아님) */
  .mgps{box-sizing:border-box;width:20px;height:20px;border-radius:50%;background:var(--action-fill);border:3px solid #fff;box-shadow:0 0 0 5px color-mix(in srgb,var(--action) 24%,transparent),0 2px 6px rgba(7,26,46,.38);}
  /* 카테고리 필터 칩 */
  .mcatbar{display:flex;flex-wrap:nowrap;gap:6px;margin:8px 20px 0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding-bottom:2px;}
  .mcatbar::-webkit-scrollbar{display:none;}
  .mcatbar[hidden]{display:none;}
  .mchip{flex:0 0 auto;min-height:44px;font-family:inherit;font-size:12px;font-weight:800;border:1.5px solid #d6e4f5;border-radius:999px;padding:5px 11px 5px 6px;cursor:pointer;background:#fff;color:#334155;display:inline-flex;align-items:center;gap:6px;line-height:1;transition:opacity .15s,transform .15s,box-shadow .15s;}
  .mchip:active{transform:translateY(1px) scale(.97);}
  .mchip.off{opacity:.46;}
  .mchip.off .mchip-icon{filter:grayscale(.58);}
  .mchip-all{background:var(--action-fill);border-color:var(--action-fill);color:var(--on-action);}
  .mchip-all.off{opacity:1;text-decoration:none;background:#fff;border-color:#cbd5e1;color:#64748b;}
  .mchip-icon{width:26px;height:26px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto;border:1px solid color-mix(in srgb,currentColor 18%,transparent);font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:15px;line-height:1;box-shadow:inset 0 1px 0 rgba(255,255,255,.68),0 1px 3px rgba(7,26,46,.1);transition:transform .16s cubic-bezier(.2,.8,.2,1);}
  .mchip:active .mchip-icon{transform:rotate(-6deg) scale(1.08);}
  .mchip-icon.cat-mul{background:color-mix(in srgb,var(--map-mul) 18%,#fff);}.mchip-icon.cat-soup{background:color-mix(in srgb,var(--map-soup) 18%,#fff);}.mchip-icon.cat-local{background:color-mix(in srgb,var(--map-local) 18%,#fff);}.mchip-icon.cat-market{background:color-mix(in srgb,var(--map-market) 18%,#fff);}
  .mchip-icon.cat-meal{background:color-mix(in srgb,var(--map-meal) 18%,#fff);}.mchip-icon.cat-bar{background:color-mix(in srgb,var(--map-bar) 18%,#fff);}.mchip-icon.cat-cafe{background:color-mix(in srgb,var(--map-cafe) 18%,#fff);}.mchip-icon.cat-tour{background:color-mix(in srgb,var(--map-tour) 18%,#fff);}.mchip-icon.cat-etc{background:color-mix(in srgb,var(--map-etc) 18%,#fff);}
  /* 일차 동선: 해안 블루 한 계열로 순서가 먼저 보이게 한다. */
  .mroute-base{stroke:var(--map-route-soft)!important;}
  .mroute{stroke:var(--map-route)!important;stroke-dasharray:3 10;stroke-linecap:round;animation:mflow 1.35s linear infinite;}
  @keyframes mflow{to{stroke-dashoffset:-28;}}
  .mdir{width:22px;height:22px;border-radius:50%;background:#fff;color:var(--map-route);font-size:11px;font-weight:900;line-height:18px;text-align:center;border:2px solid var(--map-route);box-shadow:0 2px 6px rgba(24,43,56,.22);}
  .mpin.mp-day{margin:6px;background:var(--map-stop);}
  .mpin.mp-day.fx{background:var(--map-stop-fixed);border:2.5px solid #fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--map-fixed-ring) 78%,transparent),0 3px 7px rgba(24,43,56,.28);}
  .mpin.mp-day span{color:#fff;font-size:14px;font-weight:900;text-shadow:0 1px 1px rgba(0,0,0,.22);}
  .mpin.mp-day.meeting-stop{background:linear-gradient(145deg,color-mix(in srgb,var(--action) 72%,#fff),var(--action));border-color:#fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--action) 24%,transparent),0 4px 10px rgba(15,55,96,.3);}
  .mpin.mp-day.meeting-stop.role-primary{background:linear-gradient(145deg,#16a8a0,#087d79);box-shadow:0 0 0 3px rgba(22,168,160,.24),0 4px 10px rgba(9,82,79,.32);}
  .mpin.mp-day.choice-stop{width:40px;height:28px;margin:10px 4px 0;transform:none;border-radius:10px;background:var(--surface-1,#fff);border:2px dashed var(--action);box-shadow:0 0 0 3px color-mix(in srgb,var(--action) 16%,transparent),0 3px 8px rgba(24,43,56,.22);}
  .mpin.mp-day.choice-stop span{transform:none;color:var(--action);font-size:9.5px;letter-spacing:-.04em;text-shadow:none;}
  .mpin.mp-day.choice-stop.role-alternative{border-color:var(--warning);background:var(--surface-warning,#fff8e8);}
  .mpin.mp-day.choice-stop.role-alternative span{color:var(--warning);}
  .mpin.mp-day.hold-stop{background:var(--warning,#d88908);border:2.5px solid #fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--warning,#d88908) 24%,transparent),0 3px 8px rgba(24,43,56,.25);}
  .mpin.mp-day.home-stop{background:var(--map-home);border-color:#fff;box-shadow:0 0 0 1.5px var(--map-home-key),0 0 0 5px color-mix(in srgb,var(--map-home-ring) 46%,transparent),0 5px 12px rgba(7,26,46,.36);}
  .mpin.mp-day.home-stop .mp-day-home-label{position:absolute;left:50%;top:-25px;transform:translateX(-50%);min-width:34px;padding:3px 7px;border:2px solid #fff;border-radius:999px;background:var(--map-home-key);color:#fff;font-size:10px;font-style:normal;font-weight:900;line-height:1;letter-spacing:.02em;text-shadow:none;white-space:nowrap;box-shadow:0 2px 6px rgba(7,26,46,.32);}
  .mpop-desc.meeting{margin-top:4px;color:var(--action,#1b64b1);font-size:10.5px;font-weight:850;}
  /* 지도 우하단 플로팅 버튼 (숙소·내 위치) */
  /* 지도 카드 자체가 앱 우측 12px 안쪽에 있으므로 right:0이 공통 고정 레일과 같은 열이다. */
  .mfabs{position:absolute;right:0;bottom:12px;z-index:600;display:flex;flex-direction:column;align-items:flex-end;gap:10px;}
  #tab-pick.schedule-map-mode .mfabs{bottom:190px;}
  .mfab[hidden],.place-add-fab[hidden]{display:none!important;}
  .mfab{position:relative;width:44px;height:44px;box-sizing:border-box;border-radius:50%;border:1px solid #d6e0ee;background:#fff;box-shadow:0 3px 10px rgba(11,37,69,.15);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#16324f;line-height:1;transition:transform .1s,opacity .15s,box-shadow .15s,background-color .15s,border-color .15s;}
  .mfab[hidden]{display:none!important;}
  .mfab:active{transform:scale(.93);}
  .mfab:focus-visible{outline:3px solid var(--focus);outline-offset:2px;}
  .mfab:disabled{cursor:progress;opacity:.66;transform:none;}
  .mfab-emoji{display:flex;flex:0 0 auto;align-items:center;justify-content:center;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:20px;line-height:1;pointer-events:none;}
  .mfab-state-dot{position:absolute;right:-2px;top:-2px;width:12px;height:12px;box-sizing:border-box;border:2px solid #fff;border-radius:50%;background:#ffb300;box-shadow:0 1px 3px rgba(11,37,69,.2);opacity:0;transform:scale(.72);transition:opacity .15s,transform .15s;pointer-events:none;}
  .mfab-star.on{background:#1b64da;border-color:#1b64da;color:#fff;box-shadow:0 3px 10px rgba(27,100,218,.3);}
  .mfab-star.on .mfab-state-dot{opacity:1;transform:scale(1);}
  .mpop-b.star.on .bookmark-shape{fill:currentColor;}
  .mpop-b.star.on .bookmark-check{display:grid;}
  .mfab-gps.is-busy{opacity:.66;box-shadow:0 2px 7px rgba(11,37,69,.22);}
  /* 관심 담김 토스트 (지도 전용) */
  .mtoast{position:fixed;left:50%;bottom:calc(184px + env(safe-area-inset-bottom));z-index:1200;transform:translateX(-50%) translateY(10px);max-width:88%;background:rgba(20,32,52,.94);color:#fff;font-size:13px;font-weight:700;padding:11px 18px;border-radius:22px;box-shadow:0 6px 22px rgba(0,0,0,.28);opacity:0;transition:opacity .28s ease,transform .28s ease;pointer-events:none;text-align:center;}
  .mtoast[hidden]{display:none;}
  .mtoast.show{opacity:1;transform:translateX(-50%) translateY(0);}
  @media not all{
    .mchip{background:#12203a;border-color:#2b3d5c;color:#cfe0f5;}
    .mchip-all{background:#4aa3df;border-color:#4aa3df;color:#07121f;}
    .mchip-all.off{background:#12203a;border-color:#2b3d5c;color:#8ea3bd;}
    .mfab{background:rgba(19,27,40,.92);border-color:#2b3d5c;color:#cfe0f5;box-shadow:0 3px 10px rgba(0,0,0,.42);}
    .mfab-star.on{background:#1b64da;border-color:#1b64da;color:#fff;box-shadow:0 3px 10px rgba(27,100,218,.38);}
  }
