.mm-map-page { padding-inline:20px; }
.mm-map-page .breadcrumb { margin-bottom:8px; font-size:14px; }
.mm-map-nav { font-size:14px; }
.mm-map-nav > nav { min-width:0; margin-bottom:0!important; }
.mm-map { position:relative; color:#172333; }
.mm-map [hidden],.mm-map-plan-viewer[hidden] { display:none!important; }
.mm-map-stage { position:relative; background:#f6f7f9; border:1px solid #d8dfe6; border-radius:12px; overflow:hidden; }
.mm-map.is-ready .mm-map-stage { height:var(--map-height,calc(100vh - 170px)); min-height:320px; }
.mm-map-fallback img { display:block; width:100%; height:auto; }
.mm-map-viewer,.mm-map-overlay { position:absolute; inset:0; width:100%; height:100%; }
.mm-map-viewer { touch-action:none; }.mm-map-overlay { pointer-events:none; }
.mm-map-icon { width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center; border:1px solid #d8dfe6; border-radius:10px; background:#fff; color:#23354b; font-size:24px; line-height:1; flex-shrink:0; }
.mm-map-icon:disabled { color:#9aa5b2; background:#f5f6f8; }
.mm-map button:focus-visible,.mm-map a:focus-visible,.mm-map summary:focus-visible { outline:3px solid #1d67c1; outline-offset:2px; }
.mm-map-open-search { position:absolute; top:12px; right:12px; z-index:3; box-shadow:0 2px 10px #17233318; }
.mm-map-controls { position:absolute; top:12px; left:12px; display:flex; flex-direction:column; gap:4px; z-index:3; }
.mm-map-controls .mm-map-icon { box-shadow:0 2px 10px #17233312; }
.mm-map-panel { position:absolute; bottom:12px; left:50%; transform:translateX(-50%); width:min(540px,calc(100% - 24px)); max-height:65%; overflow:auto; overscroll-behavior:contain; padding:18px; border:1px solid #d8dfe6; background:#fff; border-radius:18px; box-shadow:0 6px 28px #17233325; z-index:4; }
.mm-map-panel h2 { font-size:21px; margin:0 38px 8px 0; line-height:1.4; overflow-wrap:anywhere; }
.mm-map-card-close { position:absolute; right:6px; top:6px; border:0; background:transparent; }
.mm-map-card-lines,.mm-map-route-path { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:8px 0; }
.mm-map-line { border:1px solid #d8dfe6; border-left:5px solid var(--line-color); border-radius:6px; padding:4px 8px; background:#fff; color:#172333; text-align:start; font-size:14px; overflow-wrap:anywhere; }
.mm-map-card-lines button { min-height:36px; }
.mm-map-card-note { margin:8px 0; font-size:13px; color:#526174; }
.mm-map-card-actions { display:flex; gap:8px; margin-top:14px; }.mm-map-card-actions .btn { flex:1; font-size:14px; padding:9px 6px; }
.mm-map-card-divider,.mm-map-card:not(.is-station-card) .mm-map-station-only,.mm-map-card.is-station-card .mm-map-line-only { display:none; }
.mm-map-panel.mm-map-card,.mm-map-panel.mm-map-endpoint-card,.mm-map-panel.mm-map-route-card { padding:0; border-radius:24px; border-color:#1118201f; background:#fff; color:#111820; box-shadow:0 4px 16px #00000024; }
.mm-map-card .mm-map-card-identity { min-height:100px; padding:16px 20px; }
.mm-map-card .mm-map-card-names { padding-right:44px; }
.mm-map-card-heading { display:flex; align-items:center; gap:10px; }
.mm-map-card #map-card-title { margin:0; font-size:18px; line-height:24px; font-weight:500; }
.mm-map-card:not(.is-station-card) #map-card-title { font-size:20px; line-height:28px; font-weight:600; }
.mm-map-line-title-badge { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; min-width:34px; min-height:34px; padding:3px 9px; border-radius:8px; background:var(--line-color); color:var(--line-text-color); font-size:18px; line-height:28px; font-weight:600; }
.mm-map-card-subname { margin:2px 0 0; font-size:14px; line-height:20px; color:#111820a3; overflow-wrap:anywhere; }
.mm-map-card.is-station-card .mm-map-card-lines { gap:4px 8px; margin:8px 0 0; }
.mm-map-station-badge { display:inline-block; padding:1px 5px; border-radius:2px; background:var(--line-color); color:var(--line-text-color); font-size:13px; line-height:16px; font-weight:500; overflow-wrap:anywhere; }
.mm-map-panel .mm-map-card-close { top:8px; right:8px; width:44px; height:44px; border-radius:50%; color:#8e8e93; }
.mm-map-card .mm-map-card-divider { display:block; height:1px; margin:0 16px; background:#11182017; }
.mm-map-card .mm-map-card-actions { gap:0; margin:0; padding:0 8px; }
.mm-map-card .mm-map-station-action { flex:1; min-width:0; min-height:48px; display:flex; align-items:center; justify-content:center; gap:8px; padding:10px 4px; border:0; border-radius:8px; background:transparent; color:inherit; font-size:14px; line-height:20px; font-weight:500; text-decoration:none; }
.mm-map-station-action img { flex-shrink:0; }
.mm-map-external { flex-shrink:0; opacity:.65; }
.mm-map-line-stats { display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 0; padding:0; list-style:none; color:#43505d; font-size:13px; line-height:20px; }
.mm-map-line-stats li { padding:5px 10px; border:1px solid #e7ebef; border-radius:8px; background:#f4f6f8; overflow-wrap:anywhere; }
.mm-map-card.is-station-card .mm-map-card-note { margin:8px 0 0; }
.mm-map-panel :is(.mm-map-station-action,.mm-map-card-close):hover { background:#1118200a; }
.mm-map-panel :is(.mm-map-station-action,.mm-map-card-close):active { background:#11182012; }
.mm-map-endpoints { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-right:44px; font-size:18px; line-height:24px; font-weight:500; }
.mm-map-endpoint-name { min-width:0; max-width:100%; overflow-wrap:anywhere; }
.mm-map-direction { flex:0 0 20px; }
.mm-map-endpoint-card .mm-map-endpoints { min-height:60px; padding:6px 20px; margin-right:44px; }
.mm-map-endpoint { min-width:0; max-width:100%; text-align:start; border:0; padding:0; background:transparent; color:#68747d; font:inherit; overflow-wrap:anywhere; min-height:48px; }
.mm-map-endpoint:hover { color:#0758b0; }
.mm-map-panel.mm-map-route-card { padding:16px 20px 12px; }
.mm-map-route-summary { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 8px; margin:4px 44px 0 0; color:#49454f; font-size:16px; line-height:24px; font-weight:500; }
.mm-map-route-transfer { display:inline-flex; align-items:baseline; gap:8px; white-space:nowrap; }
.mm-map-route-link { color:#0758b0; text-decoration:none; }
.mm-map-route-link:hover { text-decoration:underline; }
.mm-map-route-path { gap:4px 6px; min-height:24px; margin:8px 0 12px; color:#68747d; font-size:14px; }
.mm-map-route-path > span { overflow-wrap:anywhere; }
.mm-map-path-arrow { font-size:18px; color:#8a949b; }
.mm-map-route-message { color:#526174; font-size:14px; margin:8px 0; }
.mm-map-route-actions { display:flex; flex-wrap:wrap; gap:8px; }
.mm-map-route-actions .btn { display:inline-flex; align-items:center; justify-content:center; min-height:44px; white-space:normal; }
.mm-map-route-card:not([data-state="done"]) .mm-map-route-path { display:none; }
.mm-map-route-pager { display:flex; align-items:center; justify-content:center; gap:18px; border-top:1px solid #11182017; margin-top:10px; min-height:48px; font-size:15px; font-weight:500; color:#68747d; font-variant-numeric:tabular-nums; }
.mm-map-route-pager .mm-map-icon { width:48px; height:48px; border:0; background:transparent; }
.mm-map-panel.mm-map-route-card:has(.mm-map-route-pager:not([hidden])) { padding-bottom:0; }
.mm-map-dialog { width:min(560px,calc(100% - 32px)); max-height:85vh; max-height:85dvh; padding:20px; border:1px solid #d8dfe6; border-radius:18px; color:#172333; background:#fff; box-shadow:0 12px 60px #17233335; }
.mm-map-dialog::backdrop { background:#17233366; }
.mm-map-search-dialog { width:min(500px,calc(100% - 32px)); padding:0; border-radius:var(--bs-border-radius-lg); color:var(--bs-body-color); }
.mm-map-search-dialog:not([open]) { display:none; }
.mm-map-search-dialog[open] { height:min(700px,85vh); height:min(700px,85dvh); }
.mm-map-search-dialog .modal-header { padding:16px; }
.mm-map-search-dialog .modal-body { overflow:auto; overscroll-behavior:contain; }
.mm-map-search-dialog.is-searching .modal-body { grid-column:1 / -1; }
.mm-map-search-dialog .planner-station-modal__line-title { scroll-margin-top:0; }
.mm-map-search-dialog .planner-station-modal__line-title:has(button) { padding:0; }
.mm-map-result-line { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; padding:14px 16px 4px; min-height:44px; border:0; background:transparent; color:inherit; font:inherit; text-align:start; }
.mm-map-line-chevron { width:7px; height:7px; border-top:1.5px solid currentColor; border-right:1.5px solid currentColor; transform:rotate(45deg); flex-shrink:0; }
.mm-map-result { width:100%; border:0; border-bottom:1px solid var(--mm-color-border); background:transparent; text-align:start; }
.mm-map-search-dialog .planner-station-modal__list > li:last-child .mm-map-result { border-bottom:0; }
.mm-map-result:disabled { opacity:.45; cursor:default; }
.mm-map-result-line:hover { background:var(--mm-color-hover-bg); }
.mm-map-search-dialog :is(button,a):focus-visible { outline:2px solid var(--mm-color-link); outline-offset:-2px; }
.mm-map-dialog input { font-size:16px; }
.mm-map.is-fullscreen { position:fixed; inset:0; z-index:1060; padding:8px; background:#fff; display:flex; flex-direction:column; }
.mm-map.is-fullscreen .mm-map-stage { flex:1; min-height:0; height:auto; }
.mm-map-plan-viewer { height:calc(100vh - 160px); height:calc(100dvh - 160px); min-height:320px; background:#f6f7f9; }
@media(max-width:575px) {
    .mm-map-page { padding-inline:8px; }.mm-map-nav { gap:8px; font-size:13px; }
    .mm-map-panel { bottom:8px; width:calc(100% - 16px); padding:14px; border-radius:16px; }
    .mm-map-open-search { top:8px; right:8px; }.mm-map-controls { top:8px; left:8px; }
    .mm-map-controls [data-action="zoom-in"],.mm-map-controls [data-action="zoom-out"],.mm-map-controls [data-action="home"] { display:none; }
    .mm-map-search-dialog { width:100%; max-width:none; height:100vh; height:100dvh; max-height:100vh; max-height:100dvh; margin:0; border:0; border-radius:0; padding:0; padding-bottom:env(safe-area-inset-bottom); }
    .mm-map-search-dialog[open] { height:100dvh; }
}
@media(prefers-reduced-motion:reduce) { .mm-map * { scroll-behavior:auto!important; } }
