/* Shared fallbacks and phone layout for Safari, Samsung Internet and Chrome. */
:root{--visible-height:100vh;--visible-top:0px;--app-header:78px;color-scheme:light}
@supports(height:100dvh){:root{--visible-height:100dvh}}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
main{height:calc(var(--visible-height) - var(--app-header))}
button,a,summary{touch-action:manipulation}
.search-box input{-webkit-appearance:none;appearance:none}
.search-box input::-webkit-search-cancel-button{display:none}
.search-box .search-clear{font-size:24px;flex-shrink:0;width:36px;min-height:44px;color:#526c7c}
.search-clear[hidden]{display:none}
.place-details{margin-top:8px;border-top:1px solid var(--line);font-size:14px}
.place-details summary{padding:12px 0;cursor:pointer;color:#315f7b;min-height:44px}
.place-details:not([open]) .when-open,.place-details[open] .when-closed{display:none}
.detail .source-note{font-size:12px;color:#607887}
.mobile-map-search,.mobile-quick-nav,.keyboard-done{display:none}
.results{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
dialog,#mapToolsDialog{max-height:calc(var(--visible-height) - 32px);overflow:auto;-webkit-overflow-scrolling:touch}
.dialog-title button{min-width:44px;min-height:44px}
@media(max-width:700px),(max-width:1000px) and (max-height:500px){
  :root{--app-header:calc(64px + env(safe-area-inset-top,0px))}
  html,body{height:100%;overflow:hidden}
  body{position:fixed;left:0;right:0;top:var(--visible-top);height:var(--visible-height)}
  .topbar{height:var(--app-header);padding:env(safe-area-inset-top,0px) max(12px,env(safe-area-inset-right,0px)) 0 max(12px,env(safe-area-inset-left,0px));gap:8px}
  .brand{gap:8px;letter-spacing:0}.brand-title{font-size:14px;line-height:1.4}.brand-suffix{font-size:12px}.brand small{display:none}
  .brand-icon{width:32px;height:36px;font-size:19px}
  .edition{display:none}
  .mobile-toggle{display:block;min-height:44px;min-width:72px;padding:8px;font-size:14px;background:#314758;color:white;border-radius:8px}
  main{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:calc(var(--visible-height) - var(--app-header));min-height:0}
  .map-shell{grid-row:2;height:100%;width:100%;min-height:0}
  .sidebar{position:absolute;inset:0;width:100%;min-width:0;max-height:none;border-radius:0;box-shadow:none;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px);overflow:hidden}
  .sidebar.collapsed{display:none}
  .search-open .map-shell{visibility:hidden}
  .search-open .mobile-map-search,.search-open .mobile-quick-nav{display:none}
  .search-header{padding:10px 12px 8px}.search-header h1,.search-header p{display:none}
  .search-header .search-box{height:50px;gap:4px;padding:0 6px 0 10px;min-width:0}
  .search-header .search-box input{font-size:16px;line-height:1.5}
  .search-header .search-box>span{display:none}
  .search-header .search-box button[type=submit]{width:44px;min-width:44px;height:44px}
  .search-header .mobile-help-button{min-width:44px;height:48px;font-size:14px}
  .explorer-tabs,.search-header~.explorer-tabs{padding:0 12px 8px;gap:8px}
  .search-header~.explorer-tabs button{font-size:14px;min-height:44px}
  .search-chips{padding:8px 12px;gap:8px;scrollbar-width:thin}
  .search-chips button{min-height:44px;font-size:14px;padding:8px 14px}
  .community-region-filters{padding:0 16px 2px;font-size:14px}
  .community-region-filters summary{min-height:44px;padding:11px 0}
  .community-region-filters select,.zone-head .filter-row select{font-size:16px;min-height:44px}
  .community-region-filters p{font-size:12px;color:#667d8b}
  .result-title{padding:2px 14px;min-height:44px;gap:8px;font-size:14px;flex-shrink:0}
  #resultCount{flex:1;min-width:0}
  .result-title button{min-height:44px;font-size:14px;white-space:nowrap}
  .results{padding:0 10px 18px;scrollbar-width:thin}
  .result-item{min-height:72px;padding:13px 8px;gap:10px}
  .result-copy b,.zone-result .result-copy b{font-size:17px;font-weight:600}
  .result-copy small,.zone-result small{font-size:13px;color:#536c7d;line-height:1.6}
  .type-icon{width:36px;height:36px}.result-arrow{color:#486d85}
  .search-section,.zone-group-title{font-size:13px;color:#536c7d;letter-spacing:0;margin:12px 8px 4px}
  .search-help{padding:22px 8px;font-size:15px}.search-help h2{font-size:22px}
  .search-examples button,.search-more{min-height:44px;font-size:14px;padding:10px 12px}
  .search-help .search-coverage{display:block;font-size:12px;color:#657d8c}
  .mobile-map-search{grid-row:1;display:flex;align-items:center;gap:10px;min-height:52px;margin:10px max(12px,env(safe-area-inset-right,0px)) 10px max(12px,env(safe-area-inset-left,0px));padding:10px 14px;background:white;border:1px solid #cbd8e1;border-radius:10px;text-align:left;font-size:16px;color:#536c7d}
  .mobile-map-search>span:first-child{font-size:28px;line-height:1}.mobile-map-search>span:nth-child(2){flex:1;min-width:0}.mobile-map-search b{font-size:14px;color:#244c68}
  .map-heading{display:none}
  .map-tools{top:10px;right:max(12px,env(safe-area-inset-right,0px));padding:3px;border-radius:10px}
  .map-tools button{width:44px;height:44px}
  .zone-map-toggle{left:max(12px,env(safe-area-inset-left,0px));top:10px;min-height:44px;font-size:13px;padding:10px}
  .zone-legend{left:max(12px,env(safe-area-inset-left,0px));top:60px;font-size:12px;padding:6px 8px}
  .map-footer{font-size:11px;padding:7px max(12px,env(safe-area-inset-right,0px)) 7px max(12px,env(safe-area-inset-left,0px))}
  .has-map-detail .map-footer{padding-bottom:calc(7px + env(safe-area-inset-bottom,0px))}
  .map-footer>span:last-child{max-width:none}
  .detail{left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));width:auto;max-width:none;bottom:calc(42px + env(safe-area-inset-bottom,0px));padding:14px 16px 4px;max-height:48%;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .detail h2{font-size:21px;margin:5px 36px 10px 0}.detail-kicker{font-size:13px;color:#546f81;padding-right:34px}
  .detail-close{width:44px;height:44px;top:6px;right:6px}
  .detail-actions{gap:8px;margin-top:8px}.detail-actions button,.detail-actions a{min-height:44px;padding:10px;font-size:14px}
  .detail [data-action=results]{background:var(--navy);color:#fff}
  .place-details summary{font-size:14px}.place-details p{font-size:14px}.navigator{display:none!important}
  #toast{bottom:calc(60px + env(safe-area-inset-bottom,0px));width:max-content;font-size:14px}
  .mobile-quick-nav{grid-row:3;display:block;min-width:0;background:#fff;border-top:1px solid #cdd9e2;padding:6px max(12px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}
  .mobile-quick-nav[hidden]{display:none}
  .quick-nav-head{display:flex;align-items:center;gap:8px;min-height:44px}.quick-nav-head>strong{font-size:14px;white-space:nowrap}
  .quick-nav-tabs{display:flex;gap:3px;margin-left:auto;background:#eef3f6;border-radius:8px;padding:2px}
  .quick-nav-tabs button{min-height:44px;padding:6px 10px;font-size:14px;border-radius:6px;white-space:nowrap}.quick-nav-tabs button[aria-selected=true]{background:var(--navy);color:white}
  .quick-nav-collapse{font-size:13px;min-height:44px;min-width:44px;color:#526e81;padding:0 3px}
  .quick-nav-items{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:44px;max-height:158px;overflow:auto;gap:6px;padding:8px 0 3px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:thin}
  .quick-nav-items[data-kind=districts]{grid-template-columns:repeat(4,minmax(0,1fr))}
  .quick-nav-items button{border:1px solid #d6e1e8;background:#f4f7f9;border-radius:8px;font-size:15px;scroll-snap-align:start;padding:4px;white-space:nowrap}
  .quick-nav-items b{font-weight:500}.quick-nav-items small{display:block;font-size:12px;line-height:1.2;color:#687d8a}
  .quick-nav-items p{grid-column:1/-1;min-width:0;font-size:14px}
  .quick-nav-hint{font-size:12px;color:#637b8b;margin:6px 0 1px}
  .quick-district-context{display:flex;align-items:center;gap:8px;border-top:1px solid #ffffff20;padding-top:2px;margin-top:2px;font-size:12px;line-height:1.4;color:#d2dde5}
  .quick-district-context[hidden]{display:none}
  .quick-district-context span{flex:1;min-width:0}
  .quick-district-context button{min-height:44px;padding:5px 8px;flex:none;color:#ffe5b5;font-size:12px;border-radius:5px;text-decoration:underline;text-underline-offset:3px}
  .mobile-quick-nav.is-collapsed .quick-nav-items,.mobile-quick-nav.is-collapsed .quick-nav-hint{display:none}
  .search-input-active .keyboard-done{display:block;color:#315f7b}
  .short-viewport.search-input-active .explorer-tabs,.short-viewport.search-input-active .search-chips,.short-viewport.search-input-active .community-region-filters{display:none}
  .short-viewport .search-help{padding-top:10px}
}
@media(min-width:701px) and (max-width:1000px) and (max-height:500px){
  :root{--app-header:calc(52px + env(safe-area-inset-top,0px))}
  .brand-suffix{display:inline}
  .quick-nav-items{max-height:100px}.quick-nav-hint{display:none}
  .zone-legend{display:none}.detail{max-width:380px;left:auto;max-height:calc(100% - 80px);bottom:38px}
  .search-header{padding-top:6px;padding-bottom:6px}.search-header .search-box{height:46px}
  .search-chips{padding-top:4px;padding-bottom:4px}
  .mobile-quick-nav.has-district-context{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:18px}
  .mobile-quick-nav.has-district-context[hidden]{display:none}
  .has-district-context .quick-district-context{max-width:300px;border-top:0;padding:0;margin:0}
  .has-district-context .quick-nav-items,.has-district-context .quick-nav-hint{grid-column:1/-1}
}
@media(max-width:350px){
  .brand-icon{width:28px;height:32px}.brand-title{font-size:13px}.brand-suffix{font-size:12px}
  .mobile-map-search{font-size:15px;padding:10px}.mobile-map-search b{display:none}
  .quick-nav-head{gap:3px}.quick-nav-tabs button{padding:6px 7px}.quick-nav-head>strong{font-size:13px}
}
@media(min-width:701px) and (max-width:1366px){
  :root{--app-header:calc(60px + env(safe-area-inset-top,0px))}
  html,body{height:100%;overflow:hidden}
  body{position:fixed;left:0;right:0;top:var(--visible-top);height:var(--visible-height)}
  .topbar{height:var(--app-header);padding:env(safe-area-inset-top,0px) max(18px,env(safe-area-inset-right,0px)) 0 max(18px,env(safe-area-inset-left,0px))}
  .mobile-toggle{display:block;min-height:44px;min-width:100px;padding:8px 12px;background:#314758;color:white;border-radius:8px}
  main{position:relative;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;height:calc(var(--visible-height) - var(--app-header));min-height:0}
  .map-shell{grid-row:2;height:100%;width:100%;min-height:0}
  .sidebar{position:absolute;inset:0;width:100%;min-width:0;max-height:none;border-radius:0;box-shadow:none;padding-bottom:env(safe-area-inset-bottom,0px);overflow:hidden}
  .sidebar.collapsed{display:none}
  .search-open .map-shell{visibility:hidden}
  .mobile-map-search{grid-row:1;display:flex;align-items:center;gap:12px;min-height:56px;margin:10px max(20px,env(safe-area-inset-right,0px)) 10px max(20px,env(safe-area-inset-left,0px));padding:10px 16px;background:white;border:1px solid #cbd8e1;border-radius:10px;text-align:left;font-size:17px;color:#536c7d}
  .mobile-map-search>span:first-child{font-size:28px;line-height:1}.mobile-map-search>span:nth-child(2){flex:1;min-width:0}.mobile-map-search b{font-size:15px;color:#244c68}
  .mobile-quick-nav{grid-row:3;display:block;min-width:0;padding:7px max(18px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px));background:linear-gradient(135deg,#344658 0%,#263847 58%,#202f3e 100%);border-top:1px solid #647487;color:#edf2f5}
  .mobile-quick-nav[hidden]{display:none}
  .quick-nav-head{display:flex;align-items:center;gap:12px;min-height:46px}
  .quick-nav-head>strong{font-size:15px;font-weight:500;letter-spacing:.05em;color:#e8eef3}
  .quick-nav-tabs{display:flex;gap:3px;margin-left:auto;background:#14233273;border:1px solid #81909c4d;border-radius:7px;padding:2px}
  .quick-nav-tabs button{min-height:42px;padding:7px 13px;color:#c4d0da;border-radius:5px;font-size:15px}
  .quick-nav-tabs button[aria-selected=true]{color:#ffedc2;background:#ffffff0c;box-shadow:inset 0 -2px 0 #d8b777}
  .quick-nav-collapse{min-height:44px;min-width:56px;color:#d3dde5;font-size:14px}
  .quick-nav-items{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:50px;max-height:176px;gap:6px;overflow:auto;padding:8px 0 2px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-color:#84939f #ffffff08}
  .quick-nav-items[data-kind=districts]{grid-template-columns:repeat(5,minmax(0,1fr))}
  .quick-nav-items button{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:48px;padding:6px;border:1px solid #b6c6d542;border-radius:7px;background:#ffffff0b;color:#f4f6f8;white-space:nowrap;font-size:15px}
  .quick-nav-items b{font-family:RegionSerif,'Noto Serif TC','Songti TC','PMingLiU',serif;font-size:1.375rem;font-weight:400}
  .quick-phase-unit{font-size:.875rem;margin-left:2px}
  .quick-nav-items small{font-size:.8125rem;color:#c7d2dc;overflow:hidden;text-overflow:ellipsis}
  .quick-nav-items button[aria-pressed=true]{border-color:#e2bf7e;background:#77644055;color:#fff0ce}
  .quick-nav-hint{display:none}
  .quick-nav-items p{display:block;grid-column:1/-1;color:#edf2f5;font-size:14px;margin:8px 0}
  .map-tools{right:max(18px,env(safe-area-inset-right,0px));top:10px}
  .detail{left:max(18px,env(safe-area-inset-left,0px));right:max(18px,env(safe-area-inset-right,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px));width:auto;max-width:none;max-height:45%;padding:14px 18px}
  .sidebar{inset:0 auto 0 0;width:min(460px,calc(100% - 96px));border-radius:0 12px 12px 0;box-shadow:0 10px 32px #182e4033;padding-bottom:245px;z-index:20}
  .search-open .map-shell{visibility:visible}
  .search-open .mobile-map-search{display:none}
  .mobile-quick-nav{position:relative;z-index:25}
  .search-open .mobile-quick-nav{display:block}
  .search-open .mobile-quick-nav[hidden]{display:none}
}
/* Keep tablet collapse and status behaviour consistent with the phone layout. */
.mobile-quick-nav.is-collapsed .quick-nav-items,.mobile-quick-nav.is-collapsed .quick-nav-hint{display:none}
.district-map-action{min-height:44px;margin:0 14px 12px;padding:9px 12px;border:1px solid #b6cbd9;border-radius:7px;background:#eef5f9;color:#244e69;font-size:14px;text-align:left}
.district-map-action[hidden]{display:none}
.map-load-status{position:absolute;z-index:30;top:42%;left:50%;transform:translate(-50%,-50%);width:min(330px,calc(100% - 100px));padding:15px 18px;border:1px solid #cad7df;border-radius:10px;background:#fffffff5;box-shadow:0 4px 20px #1635471c;color:#244e69;text-align:center}
.map-load-status p{margin:0 0 10px;line-height:1.5}.map-load-status button{min-height:44px;padding:8px 14px;background:#244e69;color:white;border-radius:6px}
.map-load-status[hidden],.sunlight-active .map-load-status{display:none}

/* Station shortcuts use one lightweight marker, independent of the search index. */
.quick-metro-marker{position:absolute;z-index:6;width:18px;height:18px;transform:translate(-50%,-50%);border:3px solid white;border-radius:50%;background:#218355;box-shadow:0 0 0 5px #21835538,0 2px 8px #132c4844;pointer-events:none}
.quick-metro-marker span{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#17683f;color:white;padding:8px 12px;border:2px solid white;border-radius:8px;font-size:14px;box-shadow:0 2px 10px #12352833}
.quick-metro-marker[hidden],.sunlight-active .quick-metro-marker{display:none}
.quick-nav-items[data-kind=metro]{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:60px;max-height:202px}
.quick-nav-items[data-kind=metro] button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;white-space:normal;line-height:1.25}
.quick-nav-items[data-kind=metro] b{font-family:inherit;font-size:14px;font-weight:500;white-space:normal}
.quick-nav-items[data-kind=metro] small{display:block;border-radius:4px;padding:1px 6px;background:#218355;color:#fff;font-family:Arial,sans-serif;font-size:11px;letter-spacing:.03em}
.quick-nav-items[data-kind=metro] button[aria-pressed=true]{border-color:#218355;background:#e6f4ec;color:#175c3b;box-shadow:inset 0 0 0 1px #218355}
@media(max-width:700px){.quick-nav-head{gap:5px}.quick-nav-tabs button{padding:6px 7px}.quick-nav-head>strong{font-size:13px}}
@media(min-width:701px) and (max-width:1366px){.quick-nav-items[data-kind=metro]{grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:54px;max-height:184px}.quick-nav-items[data-kind=metro] button{flex-direction:row;gap:7px}.quick-nav-items[data-kind=metro] b{font-size:15px}}
@media(max-height:500px){.quick-nav-items[data-kind=metro]{max-height:126px}}

@media(min-width:1367px){
  main{display:grid;grid-template-columns:360px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto}
  .sidebar{grid-column:1;grid-row:1/3;min-height:0}.map-shell{grid-column:2;grid-row:1;min-height:0}
  .mobile-quick-nav{display:block;grid-column:2;grid-row:2;min-width:0;padding:8px 18px;background:#263847;color:#edf2f5}
  .mobile-quick-nav[hidden]{display:none}.quick-nav-head{display:flex;align-items:center;gap:12px;min-height:46px}.quick-nav-head>strong{font-size:15px}
  .quick-nav-tabs{display:flex;gap:3px;margin-left:auto;background:#14233273;border-radius:7px;padding:2px}.quick-nav-tabs button{min-height:42px;padding:7px 13px;color:#c4d0da;border-radius:5px;font-size:15px}.quick-nav-tabs button[aria-selected=true]{color:#ffedc2;background:#ffffff0c;box-shadow:inset 0 -2px 0 #d8b777}.quick-nav-collapse{min-height:44px;min-width:56px;color:#d3dde5;font-size:14px}
  .quick-nav-items{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:50px;max-height:176px;overflow:auto;gap:6px;padding:8px 0 2px;overscroll-behavior:contain}.quick-nav-items button{min-width:0;border:1px solid #b6c6d542;border-radius:7px;background:#ffffff0b;color:#f4f6f8;padding:6px;font-size:15px}.quick-nav-items b{font-weight:500}.quick-nav-items small{display:block;color:#c7d2dc;font-size:12px}.quick-nav-items button[aria-pressed=true]{border-color:#e2bf7e;background:#77644055;color:#fff0ce}.quick-nav-items p{grid-column:1/-1}.quick-nav-hint{display:none}
  .quick-district-context{display:flex;align-items:center;gap:8px;font-size:13px}.quick-district-context[hidden]{display:none}.quick-district-context button{min-height:44px;text-decoration:underline;color:#ffe5b5}
  .quick-nav-items[data-kind=metro]{grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:54px;max-height:184px}.quick-nav-items[data-kind=metro] button{flex-direction:row;gap:7px}.quick-nav-items[data-kind=metro] button[aria-pressed=true]{border-color:#218355;background:#e6f4ec;color:#175c3b}
}
