/* ═══ 校园地图页专属样式 ═══
 * Neo-Brutalism：零渐变、粗描边、硬阴影、纯色块
 * 动效仅 fade + translateY，ease-out 400ms
 * v1: 2026-08-12
 */

html, body {
  height: 100%;
  overflow: hidden;
  background: var(--bg);
}
body {
  font-family: var(--font);
  position: relative;
  background-image: none; /* 地图页去掉点阵纹理 */
}

/* ══════════════════════════════════════════
   地图容器
   ══════════════════════════════════════════ */
#map-container {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
.map-load-err {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #fff;
  border: var(--bd);
  border-radius: var(--radius);
  padding: 20px 28px;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  box-shadow: var(--shadow);
}

/* ══════════════════════════════════════════
   顶部导航栏 — 半透明覆盖地图
   ══════════════════════════════════════════ */
.map-topbar {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 480px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: calc(env(safe-area-inset-top, 0px) + 12px) 14px 12px;
  z-index: 50;
  background: rgba(250, 247, 242, 0.92);
  border-bottom: var(--bd);
  box-shadow: 0 3px 0 rgba(26, 26, 46, 0.08);
}
.map-back-btn,
.map-search-btn {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 8px;
  box-shadow: var(--shadow-xs);
  cursor: pointer;
  color: var(--ink);
  transition: transform 0.15s, box-shadow 0.15s;
}
.map-back-btn svg,
.map-search-btn svg {
  width: 20px;
  height: 20px;
}
.map-back-btn:active,
.map-search-btn:active {
  transform: translate(1px, 1px);
  box-shadow: 0 0 0 var(--ink);
}
.map-title {
  flex: 1;
  text-align: center;
  font-size: 18px;
  font-weight: 900;
  color: var(--ink);
  letter-spacing: 0.02em;
}

/* ══════════════════════════════════════════
   搜索栏 — 展开式
   ══════════════════════════════════════════ */
.map-search-wrap {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translate(-50%, -110%);
  width: 100%;
  max-width: 480px;
  z-index: 60;
  padding: calc(env(safe-area-inset-top, 0px) + 12px) 14px;
  opacity: 0;
  transition: transform 0.4s ease-out, opacity 0.4s ease-out;
}
.map-search-wrap.open {
  transform: translate(-50%, 0);
  opacity: 1;
}
.map-search-input-row {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: var(--bd);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  box-shadow: var(--shadow);
}
.map-search-icon {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  color: var(--ink-dim);
}
.map-search-input-row input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-family: var(--font);
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  min-width: 0;
}
.map-search-input-row input::placeholder {
  color: rgba(92, 92, 122, 0.55);
  font-weight: 500;
}
.map-search-close {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: none;
  background: var(--bg);
  color: var(--ink-dim);
  border-radius: 6px;
  font-size: 18px;
  font-weight: 900;
  cursor: pointer;
  line-height: 1;
}

/* ── 自动补全下拉 ── */
.map-autocomplete-dropdown {
  display: none;
  margin-top: 8px;
  background: #fff;
  border: var(--bd);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow);
  overflow: hidden;
  max-height: 45vh;
  overflow-y: auto;
}
.map-autocomplete-dropdown.show { display: block; }
.map-dd-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  cursor: pointer;
  border-bottom: 1.5px solid rgba(26, 26, 46, 0.08);
  transition: background-color 0.15s;
}
.map-dd-item:last-child { border-bottom: none; }
.map-dd-item:active { background: rgba(37, 99, 235, 0.08); }
.map-dd-tag {
  flex-shrink: 0;
  font-size: 11px;
  font-weight: 900;
  color: var(--ink);
  padding: 2px 8px;
  border: 1.5px solid var(--ink);
  border-radius: 4px;
}
.map-dd-name {
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
}

/* ══════════════════════════════════════════
   自定义 Marker — Neo-Brutalism 标签
   ══════════════════════════════════════════ */
.nb-marker {
  display: inline-block;
  border: 2px solid #1a1a2e;
  box-shadow: 2px 2px 0 #1a1a2e;
  border-radius: 3px;
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 800;
  color: #1a1a2e;
  font-family: var(--font);
  white-space: nowrap;
  cursor: pointer;
  transition: transform 0.15s;
}
.nb-marker.active {
  transform: translateY(-3px) scale(1.08);
  box-shadow: 3px 3px 0 #1a1a2e;
  z-index: 100;
}

/* ── 聚合气泡（MarkerClusterer） — Neo-Brutalism 数字点 ── */
.nb-cluster {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 30px;
  padding: 0 6px;
  background: var(--yellow);
  border: 2px solid #1a1a2e;
  border-radius: 50%;
  box-shadow: 2px 2px 0 #1a1a2e;
  font-family: var(--font);
  font-size: 14px;
  font-weight: 900;
  color: #1a1a2e;
  line-height: 1;
  cursor: pointer;
}

/* ── 用户定位点 ── */
.nb-mypos {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(37, 99, 235, 0.18);
  border: 2.5px solid var(--blue);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.15);
}
.nb-mypos-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--blue);
}

/* ══════════════════════════════════════════
   底部分类筛选条
   ══════════════════════════════════════════ */
.map-filter-bar {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 480px;
  z-index: 50;
  display: flex;
  gap: 8px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  padding: 10px 14px calc(env(safe-area-inset-bottom, 0px) + 10px);
  background: transparent;
  scrollbar-width: none;
}
.map-filter-bar::-webkit-scrollbar { display: none; }
.map-filter-btn {
  flex-shrink: 0;
  font-family: var(--font);
  font-size: 13px;
  font-weight: 900;
  color: var(--ink);
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 7px 16px;
  cursor: pointer;
  box-shadow: var(--shadow-xs);
  transition: transform 0.15s, box-shadow 0.15s;
  white-space: nowrap;
}
.map-filter-btn.active {
  background: var(--yellow);
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--ink);
}
.map-filter-btn:active {
  transform: translate(1px, 1px);
  box-shadow: 0 0 0 var(--ink);
}
/* 分类色点：仅移动端左栏显示，桌面端横向 chips 隐藏 */
.map-filter-dot { display: none; }

/* ══════════════════════════════════════════
   建筑详情面板 — 底部滑出
   ══════════════════════════════════════════ */
.map-info-panel {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translate(-50%, 105%);
  width: 100%;
  max-width: 480px;
  z-index: 55;
  background: #fff;
  border: var(--bd);
  border-bottom: none;
  border-radius: var(--radius) var(--radius) 0 0;
  padding: 18px 18px calc(env(safe-area-inset-bottom, 0px) + 18px);
  box-shadow: 0 -4px 0 rgba(26, 26, 46, 0.06);
  opacity: 0;
  transition: transform 0.4s ease-out, opacity 0.4s ease-out;
  max-height: 60vh;
  overflow-y: auto;
}
.map-info-panel.open {
  transform: translate(-50%, 0);
  opacity: 1;
}
.map-panel-close {
  position: absolute;
  top: 12px;
  right: 14px;
  width: 30px;
  height: 30px;
  border: 2px solid var(--ink);
  background: var(--bg);
  border-radius: 8px;
  color: var(--ink);
  font-size: 18px;
  font-weight: 900;
  cursor: pointer;
  line-height: 1;
  box-shadow: var(--shadow-xs);
}
.map-panel-photo {
  position: relative;
  width: 100%;
  height: 180px;
  margin-bottom: 10px;
  border: var(--bd);
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: #ece9e2; /* 浅灰占位色，加载前可见 */
  box-shadow: var(--shadow-xs);
}
.map-panel-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* 无照片时的「暂无照片」占位：照片框始终显示 */
.map-panel-photo-empty {
  position: absolute;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink-dim);
  letter-spacing: 0.02em;
}
.map-panel-photo.empty img { display: none; }
.map-panel-photo.empty .map-panel-photo-empty { display: flex; }
.map-panel-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
  padding-right: 40px;
}
.map-panel-tag {
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 900;
  color: var(--ink);
  padding: 3px 10px;
  border: 2px solid var(--ink);
  border-radius: 4px;
}
.map-panel-name {
  font-size: 24px;
  font-weight: 900;
  color: var(--ink);
  line-height: 1.3;
}
.map-panel-desc {
  font-size: 13px;
  font-weight: 500;
  color: var(--ink-dim);
  line-height: 1.6;
  margin-bottom: 4px;
}
.map-panel-dist {
  font-size: 12px;
  font-weight: 700;
  color: var(--blue);
  margin-bottom: 12px;
}
.map-panel-actions {
  display: flex;
  gap: 10px;
}
.map-nav-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--font);
  font-size: 15px;
  font-weight: 900;
  color: #fff;
  background: var(--blue);
  border: var(--bd);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
  transition: transform 0.15s, box-shadow 0.15s;
}
.map-nav-btn svg {
  width: 18px;
  height: 18px;
}
.map-nav-btn:active {
  transform: translate(1px, 1px);
  box-shadow: 0 0 0 var(--ink);
}
/* ══════════════════════════════════════════
   常驻路线导航条 — 选起点/终点建筑 → 跳转高德生成路线
   桌面：地图左上角悬浮卡片；移动端：搜索栏下方流式常驻
   ══════════════════════════════════════════ */
#map-route-bar {
  position: fixed;
  top: 64px;
  left: 16px;
  width: 320px;
  z-index: 40;
  background: #fff;
  border: var(--bd);
  border-radius: var(--radius-sm);
  padding: 12px;
  box-shadow: var(--shadow);
}
.route-bar-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.route-bar-input-wrap { flex: 1; min-width: 0; }
.route-bar-input-wrap input {
  width: 100%;
  font-family: var(--font);
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 9px 10px;
  box-shadow: var(--shadow-xs);
  outline: none;
  box-sizing: border-box;
  cursor: pointer;   /* readonly：点击弹出选择面板 */
}
.route-bar-input-wrap input::placeholder {
  color: rgba(92, 92, 122, 0.55);
  font-weight: 600;
}
.route-bar-input-wrap input:focus { background: #fffbe6; }
.route-bar-arrow {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  color: var(--ink);
}
.route-bar-go {
  flex-shrink: 0;
  font-family: var(--font);
  font-size: 14px;
  font-weight: 900;
  color: #fff;
  background: var(--blue);
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 9px 14px;
  cursor: pointer;
  box-shadow: var(--shadow-xs);
}
.route-bar-go:active {
  transform: translate(1px, 1px);
  box-shadow: 0 0 0 var(--ink);
}
/* 方式切换 chips */
.route-bar-modes {
  display: flex;
  gap: 6px;
  margin-top: 10px;
}
.route-bar-mode {
  flex: 1;
  font-family: var(--font);
  font-size: 12px;
  font-weight: 900;
  color: var(--ink);
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 6px;
  padding: 6px 0;
  cursor: pointer;
  box-shadow: var(--shadow-xs);
}
.route-bar-mode.active {
  background: var(--yellow);
  transform: translate(-1px, -1px);
  box-shadow: 3px 3px 0 var(--ink);
}

/* ══════════════════════════════════════════
   导航起点/终点选择面板 — 顶部滑出，模糊搜索选建筑
   ══════════════════════════════════════════ */
.nav-pick-panel {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translate(-50%, -110%);
  width: 100%;
  max-width: 480px;
  max-height: 70vh;
  z-index: 70;
  display: flex;
  flex-direction: column;
  background: #fff;
  border-left: var(--bd);
  border-right: var(--bd);
  border-bottom: var(--bd);
  border-radius: 0 0 var(--radius) var(--radius);
  box-shadow: var(--shadow);
  opacity: 0;
  transition: transform 0.4s ease-out, opacity 0.4s ease-out;
}
.nav-pick-panel.open {
  transform: translate(-50%, 0);
  opacity: 1;
}
.nav-pick-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: calc(env(safe-area-inset-top, 0px) + 12px) 14px 10px;
}
.nav-pick-title {
  font-size: 18px;
  font-weight: 900;
  color: var(--ink);
}
.nav-pick-close {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
  color: var(--ink);
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 8px;
  box-shadow: var(--shadow-xs);
  cursor: pointer;
}
.nav-pick-input-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 14px 10px;
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 8px 10px;
  box-shadow: var(--shadow-xs);
}
.nav-pick-icon {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  color: var(--ink-dim);
}
.nav-pick-input-row input {
  flex: 1;
  min-width: 0;
  font-family: var(--font);
  font-size: 16px;
  font-weight: 700;
  color: var(--ink);
  background: transparent;
  border: none;
  outline: none;
}
.nav-pick-input-row input::placeholder {
  color: rgba(92, 92, 122, 0.55);
  font-weight: 600;
}
.nav-pick-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 0 14px 14px;
}
.nav-pick-item {
  padding: 11px 12px;
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  border-bottom: 1.5px dashed rgba(26, 26, 46, 0.15);
  cursor: pointer;
}
.nav-pick-item:last-child { border-bottom: none; }
.nav-pick-item:active { background: var(--yellow); }
.nav-pick-gps {
  color: var(--blue);
  border-bottom: 2px solid var(--ink);
  margin-bottom: 4px;
}

/* ══════════════════════════════════════════
   GPS 定位按钮
   ══════════════════════════════════════════ */
#map-gps-btn {
  position: fixed;
  right: 14px;
  bottom: 150px;
  z-index: 45;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: #fff;
  color: var(--blue);
  border: var(--bd);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-sm);
  transition: transform 0.15s, box-shadow 0.15s;
}
#map-gps-btn svg {
  width: 22px;
  height: 22px;
}
#map-gps-btn:active {
  transform: translate(1px, 1px);
  box-shadow: 1px 1px 0 var(--ink);
}

/* ══════════════════════════════════════════
   浮动加群按钮 — 地图页位置微调（避开筛选条）
   ══════════════════════════════════════════ */
#float-btn {
  bottom: 78px;
  right: 14px;
}

/* ══════════════════════════════════════════
   Toast 提示
   ══════════════════════════════════════════ */
#map-toast {
  position: fixed;
  top: 88px;
  left: 50%;
  transform: translate(-50%, -16px);
  z-index: 200;
  background: var(--ink);
  color: #fff;
  font-family: var(--font);
  font-size: 13px;
  font-weight: 700;
  padding: 10px 20px;
  border-radius: 8px;
  opacity: 0;
  transition: opacity 0.3s ease-out, transform 0.3s ease-out;
  pointer-events: none;
  max-width: 80vw;
  text-align: center;
}
#map-toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
}

/* ══════════════════════════════════════════
   移动端建筑列表 + 返回列表按钮（桌面隐藏）
   ══════════════════════════════════════════ */
.map-list { display: none; }
.map-panel-back { display: none; }

/* ── 响应式 ── */
@media (max-width: 640px) {
  /* 页面主体：流式 flex column（地图区 + 信息区） */
  html, body {
    height: 100%;
    overflow: auto;
  }
  body {
    display: flex;
    flex-direction: column;
    min-height: 100%;
  }

  /* 地图区：流式 50vh，顶栏悬浮其上 */
  #map-container {
    position: relative;
    inset: auto;
    height: 50vh;
    min-height: 330px;
    flex-shrink: 0;
    border-bottom: var(--bd);
  }

  /* 信息区容器：占满地图下方剩余空间 */
  #map-info-zone {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  /* 顶栏：全宽 fixed（含 safe-area），保持现状 */
  .map-topbar {
    left: 0;
    transform: none;
    max-width: none;
  }
  .map-title { font-size: 17px; }

  /* 搜索栏：常驻信息区顶部，去掉弹层动效（重置桌面 left/top 偏移） */
  .map-search-wrap {
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: auto;
    max-width: none;
    z-index: auto;
    padding: 12px 14px 10px;
    opacity: 1;
    transition: none;
  }
  .map-search-wrap.open { transform: none; }
  .map-search-close { display: none; }
  /* 下拉结果：绝对定位覆盖两栏，不推挤布局 */
  .map-autocomplete-dropdown {
    position: absolute;
    top: calc(100% - 2px);
    left: 14px;
    right: 14px;
    margin-top: 0;
    max-height: 40vh;
    z-index: 80;
  }

  /* 两栏主体：左分类栏目 + 右内容区 */
  .map-info-main {
    flex: 1;
    min-height: 0;
    display: flex;
  }
  .map-right-col {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
  }

  /* 分类栏目：左栏竖排，内部滚动 */
  .map-filter-bar {
    position: static;
    transform: none;
    width: 140px;
    flex-shrink: 0;
    max-width: none;
    display: flex;
    flex-direction: column;
    gap: 6px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 10px 10px;
    border-right: 1.5px dashed rgba(26, 26, 46, 0.15);
    scrollbar-width: none;
  }
  .map-filter-bar::-webkit-scrollbar { display: none; }
  /* 竖排按钮：色点 + 文字 */
  .map-filter-btn {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 7px;
    padding: 10px 10px;
    font-size: 15px;
    border-radius: 8px;
  }
  .map-filter-dot {
    display: block;
    flex-shrink: 0;
    width: 9px;
    height: 9px;
    border: 1.5px solid var(--ink);
    border-radius: 2px;
  }
  .map-filter-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* 建筑列表：信息区默认视图，内部滚动 */
  .map-list {
    display: block;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 12px 14px calc(env(safe-area-inset-bottom, 0px) + 24px);
  }
  .map-list.hidden { display: none; }
  .map-list-group { margin-bottom: 14px; }
  .map-list-group-title {
    display: inline-block;
    font-size: 12px;
    font-weight: 900;
    color: var(--ink);
    border: 2px solid var(--ink);
    border-radius: 4px;
    padding: 3px 10px;
    margin-bottom: 8px;
    box-shadow: var(--shadow-xs);
  }
  .map-list-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    text-align: left;
    font-family: var(--font);
    background: #fff;
    border: 2px solid var(--ink);
    border-radius: 8px;
    padding: 10px 12px;
    margin-bottom: 8px;
    cursor: pointer;
    box-shadow: var(--shadow-xs);
    transition: transform 0.15s, box-shadow 0.15s;
  }
  .map-list-item:active {
    transform: translate(1px, 1px);
    box-shadow: 0 0 0 var(--ink);
  }
  .map-list-item-icon {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    border: 1.5px solid var(--ink);
    border-radius: 6px;
  }
  .map-list-item-name {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 16px;
    font-weight: 800;
    color: var(--ink);
  }
  .map-list-empty {
    font-size: 13px;
    font-weight: 700;
    color: var(--ink-dim);
    text-align: center;
    padding: 28px 0;
  }

  /* 详情面板：信息区内静态视图（替代底部滑出） */
  .map-info-panel {
    position: static;
    transform: none;
    width: auto;
    max-width: none;
    z-index: auto;
    display: none;
    max-height: none;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    border: none;
    border-radius: 0;
    box-shadow: none;
    opacity: 1;
    transition: none;
    padding: 16px 16px calc(env(safe-area-inset-bottom, 0px) + 24px);
  }
  .map-info-panel.open {
    display: block;
    transform: none;
  }
  .map-panel-close { display: none; }
  .map-panel-back {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    background: #fff;
    border: 2px solid var(--ink);
    border-radius: 8px;
    box-shadow: var(--shadow-xs);
    color: var(--ink);
    cursor: pointer;
  }
  .map-panel-back svg { width: 22px; height: 22px; }
  .map-panel-back:active {
    transform: translate(1px, 1px);
    box-shadow: 0 0 0 var(--ink);
  }
  .map-panel-title-row { padding-right: 0; }
  .map-panel-name { font-size: 24px; }
  .map-panel-tag { font-size: 13px; }
  .map-panel-desc { font-size: 15px; }
  .map-panel-dist { font-size: 13px; }
  .map-nav-btn { font-size: 14px; padding: 11px 14px; }
  /* 常驻路线导航条：fixed 顶栏下方全宽一行卡片（不再占用信息区） */
  #map-route-bar {
    position: fixed;
    top: calc(env(safe-area-inset-top, 0px) + 64px);
    left: 12px;
    right: 12px;
    width: auto;
    margin: 0;
    z-index: 45;
    padding: 10px;
    box-shadow: var(--shadow-sm);
  }
  .route-bar-input-wrap input { font-size: 16px; }   /* 防 iOS 聚焦缩放（readonly 弹面板） */
  .route-bar-go { font-size: 15px; }
  .route-bar-mode { font-size: 13px; }
  .route-bar-modes { margin-top: 8px; }
  /* 选择面板：移动端全屏滑出 */
  .nav-pick-panel {
    max-width: none;
    max-height: none;
    height: 100%;
    border-left: none;
    border-right: none;
    border-radius: 0;
  }

  /* 悬浮按钮：地图区内右下角上下排列（加群下、GPS 上，间距 12px，不重叠） */
  #map-gps-btn { bottom: calc(50vh + 84px); }
  #float-btn { bottom: calc(50vh + 16px); }

  /* 高德控件与 Logo 留白（地图区变矮后的防遮挡） */
  .amap-logo { margin-bottom: 2px; }
  .amap-zoomcontrol { top: 64px; }

  /* 页脚在移动端隐藏（信息区占满剩余空间） */
  .site-footer { display: none; }
}
