/* V7 extends the existing glass theme; only the map owns this viewport layout. */
.tabbar{grid-template-columns:repeat(4,minmax(0,1fr))}
.tab-liquid-indicator{width:calc((100% - 10px)/4)}
.tabbar[data-active="map"] .tab-liquid-indicator{transform:translate3d(300%,0,0)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-shell.map-mode{display:grid;grid-template-rows:48px minmax(0,1fr) calc(78px + env(safe-area-inset-bottom));height:100dvh!important;padding-bottom:0!important}
.app-shell.map-mode main{height:auto!important;min-height:0!important;padding:0!important;overflow:hidden!important;display:flex;scroll-padding:0!important}
.app-shell.map-mode .status-pill{visibility:hidden}
#view-map{width:100%;min-width:0;min-height:0}
#view-map.active{height:100%;display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;gap:7px;overflow:hidden}
.map-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}
.map-heading h1{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.035em}
.map-button{min-height:40px;padding:8px 12px;border:1px solid var(--line-soft);border-radius:13px;background:var(--glass-strong);color:var(--ink);font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 2px 9px #0001;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.map-button:disabled{opacity:.4;cursor:wait}
#map-refresh{width:44px;min-height:44px;font-size:24px;padding:0}
.map-controls{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:6px 8px;border-radius:19px;padding:9px}
.map-field{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:14px;color:var(--muted);font-weight:600}
.map-field select,.map-field input{width:100%;min-width:0;min-height:40px;background:var(--glass-strong);border:1px solid var(--line-soft);border-radius:10px;color:var(--ink);font-size:16px;padding:7px 8px}
.map-search-wrap{grid-column:1/-1;position:relative;min-width:0}
.map-results{position:absolute;left:0;right:0;top:calc(100% + 5px);max-height:40dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--bg2);border:1px solid var(--line-soft);border-radius:14px;box-shadow:0 12px 30px #0004;z-index:4}
.map-results button{display:block;width:100%;padding:12px;text-align:left;border:0;border-bottom:1px solid var(--line-soft);background:transparent;color:var(--ink);cursor:pointer}
.map-results button:hover,.map-results button:focus-visible{background:var(--glass-strong)}
.map-results strong{font-size:16px;font-weight:650;display:block}
.map-results small{font-size:12px;color:var(--muted);display:block;margin-top:4px}
.map-results p{font-size:14px;padding:4px 12px;color:var(--muted)}
.map-status{font-size:12px;line-height:1.35;min-height:17px;color:var(--muted);padding:0 3px;overflow-wrap:anywhere}
.map-status-warning{color:#9b5a1b}
.map-surface{position:relative;z-index:0;isolation:isolate;min-height:0;border:1px solid var(--line-soft);border-radius:22px;overflow:hidden;background:#d9e4e8}
#stations-map{height:100%;width:100%;background:#d9e4e8;color:#10202d;z-index:0}
.map-actions{position:absolute;top:10px;right:10px;z-index:600;display:flex;gap:6px}
.map-actions .map-button{background:rgba(255,255,255,.94);color:#153143;border-color:#bdcdd8}
#stations-map .leaflet-control-zoom{border:1px solid #bdcdd8;border-radius:12px;overflow:hidden;box-shadow:0 2px 9px #0001}
#stations-map .leaflet-control-zoom a{width:38px;height:38px;line-height:38px;color:#153143}
#stations-map .leaflet-control-attribution{font-size:12px;line-height:1.5;background:#ffffffed;color:#203b4b;padding:1px 5px;max-width:100%;box-sizing:border-box}
#stations-map .leaflet-control-attribution a{color:#155e83}
.station-label{background:none;border:none;cursor:pointer;display:grid;place-items:center}
.station-label span{font:750 14px/1.1 -apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-variant-numeric:tabular-nums;color:#fff;background:var(--station-color,#687b88);border:1.5px solid #fffffff5;border-radius:8px;padding:5px 6px;box-shadow:0 2px 5px #0003;white-space:nowrap}
.station-label-muted span{background:#687b88;border-style:dashed;opacity:.85}
.map-empty{position:absolute;z-index:610;top:96px;left:10px;right:10px;background:#ffffffef;color:#244555;border-radius:12px;padding:10px;font-size:14px;pointer-events:none}
.map-detail{position:absolute;z-index:650;bottom:26px;left:7px;right:7px;max-height:calc(100% - 34px);overflow-y:auto;overscroll-behavior:contain;background:var(--bg2);color:var(--ink);border:1px solid var(--line-soft);border-radius:18px;padding:16px;box-shadow:0 8px 35px #0005;scrollbar-width:thin}
.map-detail-close{position:sticky;float:right;top:0;right:0;min-width:40px;min-height:40px;border:1px solid var(--line-soft);border-radius:50%;background:var(--bg2);color:var(--ink);font-size:26px;cursor:pointer;z-index:2;margin:-6px -6px 0 7px}
.map-detail h2{font-size:19px;line-height:1.25;margin:0 28px 4px 0;letter-spacing:-.025em;overflow-wrap:anywhere}
.detail-location,.detail-time{font-size:13px;line-height:1.5;color:var(--muted);margin:4px 0}
.detail-time.recent{color:#237044}.detail-time.delayed,.detail-time.old{color:#98601f}
.detail-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}
.detail-values>div{padding:8px 0;border-top:1px solid var(--line-soft)}
.detail-values dt{font-size:14px;color:var(--muted);line-height:1.3}
.detail-values dd{font-size:22px;margin:4px 0 0;line-height:1.15;font-weight:650;font-variant-numeric:tabular-nums}
.detail-values small{font-size:14px;font-weight:500}
.detail-coordinates,.detail-owner{font-size:12px;line-height:1.55;color:var(--muted);margin:10px 0;overflow-wrap:anywhere}
.detail-warning{font-size:14px;line-height:1.4;padding:9px;background:rgba(181,130,47,.12);border-radius:9px;color:var(--ink)}
.detail-link{display:inline-block;padding:10px 0;color:var(--ink);font-size:14px;font-weight:650;text-underline-offset:3px}
.map-source{display:flex;justify-content:space-between;gap:8px;font-size:12px;line-height:1.4;color:var(--muted);padding:0 3px}
.map-source a{color:var(--muted);text-underline-offset:2px}
.map-source span{white-space:nowrap}
#view-map button:focus-visible,#view-map input:focus-visible,#view-map select:focus-visible,.station-label:focus-visible{outline:3px solid #4baff3;outline-offset:2px}
@media(prefers-color-scheme:dark){.map-status-warning,.detail-time.delayed,.detail-time.old{color:#edbc71}.detail-time.recent{color:#77cca2}}
@media(max-height:730px){.map-heading h1{font-size:20px}.map-controls{padding:7px}.map-field{font-size:14px;gap:2px}.map-field select,.map-field input{min-height:36px;padding:5px 8px}#map-refresh{min-height:38px;height:38px}.map-heading{min-height:38px}#view-map.active{gap:5px}.app-shell.map-mode{grid-template-rows:43px minmax(0,1fr) calc(74px + env(safe-area-inset-bottom))}}
@media(max-width:360px){.map-source{flex-wrap:wrap;gap:2px}.map-heading h1{font-size:20px}.map-actions .map-button{padding:7px;font-size:13px}}
@media(orientation:landscape) and (max-height:550px){.app-shell.map-mode{grid-template-rows:36px minmax(0,1fr) calc(67px + env(safe-area-inset-bottom))}.app-shell.map-mode .topbar{height:36px}#view-map.active{grid-template-columns:240px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto}.map-heading{grid-column:1}.map-controls{grid-column:1;align-content:start;overflow-y:auto}.map-status{grid-column:1;grid-row:3}.map-surface{grid-column:2;grid-row:1/4}.map-source{display:none}}
.station-extra{border-top:1px solid var(--line-soft);margin-top:12px;padding-top:6px}
.station-extra summary{font-size:16px;font-weight:650;cursor:pointer;padding:10px 0;min-height:44px}
.station-extra-content{font-size:14px;line-height:1.45}
.station-extra h3{font-size:15px;margin:15px 0 6px}
.extra-values{margin:0}.extra-values>div{display:flex;gap:12px;justify-content:space-between;border-bottom:1px solid var(--line-soft);padding:7px 0}
.extra-values dt{color:var(--muted)}.extra-values dd{margin:0;text-align:right;font-weight:650}.extra-values small{font-weight:400;font-size:12px;color:var(--muted)}

.leaflet-control-attribution{font-size:10px!important;background:rgba(255,255,255,.75)!important;line-height:1.4!important}
