/* 游览：上方示意地图，下方「本站攻略 / 沿途设施 / 我的路线」面板 */
.page-tour { display: flex; flex-direction: column; overflow: hidden; padding-bottom: 0; }

/* ---------- 地图 ---------- */
.map {
  position: relative; flex: none; height: var(--map-share);
  background:
    radial-gradient(90% 70% at 50% 40%, #dceee6 0%, #cfe4da 60%, #c3dccf 100%);
  overflow: hidden;
}
.map-real, .map-schematic { position: absolute; inset: 0; }
.map-real[hidden], .map-schematic[hidden] { display: none; }
.map-schematic > svg { position: absolute; inset: 0; width: 100%; height: 100%; }
/* 底图切换：放左上角，右上角留给指北标 */
.map-tools { position: absolute; left: 12px; top: 12px; z-index: 2; }
.map-mode { display: flex; padding: 3px; border-radius: 999px; background: rgba(250, 252, 250, .9); box-shadow: 0 2px 8px rgba(15, 38, 33, .12); }
.map-mode button { min-height: 30px; padding: 0 11px; border-radius: 999px; font-size: 12.5px; color: var(--ink-2); }
.map-mode button[aria-checked="true"] { background: var(--ink); color: #fff; font-weight: 600; }
.map-note { display: inline-block; padding: 5px 10px; border-radius: 999px; background: rgba(250, 252, 250, .9); font-size: 12px; color: var(--ink-2); }
.map .contour { fill: none; stroke: #2f6a55; stroke-opacity: .13; stroke-width: 1; }
.map .trail { fill: none; stroke: #fff; stroke-width: 5; stroke-linecap: round; }
.map .trail-core { fill: none; stroke: var(--gold); stroke-width: 2; stroke-dasharray: 1 5; stroke-linecap: round; }
.map .st { cursor: pointer; outline: none; }
.map .st .dot { stroke: #fff; stroke-width: 2; }
.map .st .ring { fill: none; stroke: var(--deep); stroke-width: 2.5; opacity: 0; }
.map .st:focus-visible .ring, .map .st.is-current .ring { opacity: 1; }
.map .st.is-off .dot { fill: #fff; stroke: #8aa59c; stroke-dasharray: 2 2; }
.map .st.is-dim { opacity: .35; }
.map .lbl { font: 600 12px var(--sans); fill: var(--ink); paint-order: stroke; stroke: rgba(237, 243, 239, .95); stroke-width: 3.5px; stroke-linejoin: round; }
.map .lbl.is-current { font: 700 14px var(--serif); }
.map .fac { cursor: pointer; outline: none; }
/* .hit 是放大点击范围的透明方块，不描边 */
.map .fac rect:not(.hit) { stroke: #fff; stroke-width: 1.5; }
.map .fac.is-focus rect:not(.hit) { stroke: var(--ink); stroke-width: 2.5; }
.map .fac:focus-visible rect:not(.hit) { stroke: var(--deep); stroke-width: 3; }
.north { position: absolute; right: 14px; top: 12px; width: 38px; height: 38px; border-radius: 50%; background: rgba(250, 252, 250, .86); display: grid; grid-auto-flow: column; place-content: center; align-items: center; gap: 1px; font-size: 11px; line-height: 1; color: var(--ink-2); }
.north .i { width: 14px; height: 14px; }
.north span { position: absolute; top: 100%; left: 50%; transform: translateX(-50%); margin-top: 4px; font-size: 10px; white-space: nowrap; }

@keyframes ping { from { r: 9; opacity: .9; } to { r: 22; opacity: 0; } }
.map .ping { fill: none; stroke: var(--deep); stroke-width: 2; animation: ping .7s ease-out 1 forwards; }

/* ---------- 面板 ---------- */
.panel { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; margin-top: -24px; }
.panel .rim { flex: none; position: relative; z-index: 1; }
.panel-tabs { flex: none; position: relative; z-index: 1; background: var(--base); padding: 0 16px 10px; }
.seg { display: grid; grid-template-columns: repeat(3, 1fr); padding: 3px; border-radius: 999px; background: rgba(23, 51, 45, .07); }
.seg button { min-height: 38px; border-radius: 999px; font-size: 14px; color: var(--ink-2); }
.seg button[aria-selected="true"] { background: var(--surface); color: var(--ink); font-weight: 600; box-shadow: 0 1px 3px rgba(23, 51, 45, .14); }
.panel-body { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 20px 28px; scrollbar-width: none; }
.panel-body::-webkit-scrollbar { display: none; }

/* 本站攻略 */
.station-head { display: flex; gap: 12px; align-items: flex-start; }
.station-head .t { flex: 1; min-width: 0; }
.station-head small { font-size: 12.5px; color: var(--ink-2); }
.station-head h2 { margin: 2px 0 0; font: 700 26px/1.25 var(--serif); }
.station-head p { margin: 4px 0 0; color: var(--ink-2); font-size: 14px; }
.stepper { display: flex; gap: 6px; }
.stepper .icon-btn { width: 40px; height: 40px; }
.facts { display: flex; gap: 18px; margin: 14px 0 0; padding: 12px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: 13px; color: var(--ink-2); }
.facts b { display: block; font-size: 15px; color: var(--ink); font-weight: 600; }
.guide-block { margin-top: 16px; }
.guide-block h3 { margin: 0 0 4px; font: 600 15px/1.4 var(--serif); color: var(--deep); }
.guide-block p { margin: 0; font-size: 14.5px; }
.station-photo { margin-top: 14px; border-radius: 14px; overflow: hidden; aspect-ratio: 16 / 9; background: var(--c); }
.station-photo img, .station-photo svg { width: 100%; height: 100%; object-fit: cover; }
.station-actions { display: flex; gap: 10px; margin-top: 18px; align-items: center; }
.station-actions .btn-primary { flex: 1; }

/* 我的路线 */
.route-sum { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 2px 0 6px; }
.route-sum b { font: 600 18px var(--serif); }
.route-sum span { font-size: 12.5px; color: var(--ink-2); }
.stop { display: flex; align-items: center; gap: 10px; min-height: 54px; }
.stop .no { width: 26px; text-align: right; font: 600 13px var(--serif); color: var(--ink-2); flex: none; }
.stop .sw { width: 12px; height: 26px; border-radius: 4px; background: var(--c); flex: none; box-shadow: inset 0 2px 0 var(--rim); }
.stop .name { flex: 1; min-width: 0; text-align: left; padding: 8px 0; }
.stop .name b { display: block; font-weight: 600; font-size: 15px; line-height: 1.35; }
.stop .name span { font-size: 12.5px; color: var(--ink-2); }
.stop.is-off .name b { color: var(--ink-2); text-decoration: line-through; text-decoration-color: rgba(23, 51, 45, .35); }
.toggle {
  width: 44px; height: 44px; flex: none; display: grid; place-items: center; border-radius: 12px;
}
.toggle span { width: 24px; height: 24px; border-radius: 7px; display: grid; place-items: center; box-shadow: inset 0 0 0 1.7px rgba(23, 51, 45, .35); }
.toggle[aria-checked="true"] span { background: var(--deep); box-shadow: none; color: #fff; }
.toggle .i { width: 16px; height: 16px; stroke-width: 2.4; }
.visited-tag { font-size: 11.5px; color: #8a6a1f; background: rgba(201, 160, 75, .2); padding: 1px 7px; border-radius: 999px; margin-left: 4px; }

@media (max-width: 340px) {
  .station-head h2 { font-size: 23px; }
  .facts { gap: 12px; }
}
