:root {
  --ink:#1f4248; --muted:#647c80; --paper:#faf9f4; --card:#fffefa; --line:#dce4df;
  --accent:#b84932; --on-accent:#fff9ef; --sea:#afd3d7; --land:#eeeddf; --road:#fffdf5;
  --rail:#a2b4ae; --park:#cbdcc2; --map-label:#698987; --panel-shadow:0 12px 42px #123f4319;
  --topbar-h:40px;
  --art:url('assets/harbour-day-v2.webp');
  color-scheme:light; font-family:"Microsoft JhengHei","Yu Gothic",system-ui,sans-serif;
}
html[data-mode=night] {
  --ink:#f2e9d6; --muted:#9badb6; --paper:#142934; --card:#1b333e; --line:#344c58;
  --accent:#efb669; --on-accent:#182f3d; --sea:#112c3d; --land:#203944; --road:#38515a;
  --rail:#58707b; --park:#2b4a49; --map-label:#7899a4; --panel-shadow:0 12px 48px #0005;
  --art:url('assets/harbour-night-v2.webp'); color-scheme:dark;
}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper)}button,select,a{font:inherit}button,select{color:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer;background:var(--card);border:1px solid var(--line);border-radius:8px;min-height:44px;padding:10px 14px;font-weight:650}button:hover{border-color:var(--accent)}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #4b94ac;outline-offset:3px}a{color:inherit}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}[hidden]{display:none!important}.skip{position:fixed;top:-100px;left:10px;z-index:3000;padding:15px;background:var(--card)}.skip:focus{top:10px}
.masthead{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:12px 28px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{display:grid;place-items:center;width:43px;height:43px;border-radius:50%;background:var(--ink);color:var(--paper);font-family:serif;font-size:25px;flex-shrink:0}.brand strong{display:block;font-size:14px;letter-spacing:1px;line-height:1.5}.eyebrow{display:block;font-size:11px;letter-spacing:2.4px;font-weight:700;color:var(--muted);margin-bottom:3px}.header-place{font-size:13px;letter-spacing:2px;color:var(--muted);margin:0 0 0 auto;padding-right:22px;border-right:1px solid var(--line)}.languages{display:flex;gap:3px;flex-shrink:0}.languages button{font-size:13px;padding:10px 13px;background:transparent;border-color:transparent;white-space:nowrap}.languages button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
main{display:grid;grid-template-columns:minmax(0,1fr) 378px;height:calc(100dvh - 76px - var(--topbar-h));min-height:580px}.map-shell{position:relative;overflow:hidden;min-width:0;background:var(--land)}#map{position:absolute;inset:0;background:var(--land);z-index:1}.map-toolbar{position:absolute;left:24px;right:24px;top:22px;z-index:700;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}.map-toolbar button,.modes{pointer-events:auto}.modes{display:flex;gap:2px;padding:4px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--panel-shadow)}.modes button{background:transparent;border:0;font-size:14px;white-space:nowrap;padding:11px 17px}.modes button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-radius:8px}.modes button>span:first-child{font-size:18px;margin-right:4px}.fit{display:flex;align-items:center;gap:8px;background:var(--card);box-shadow:var(--panel-shadow);font-size:13px}.fit svg{height:18px;width:18px}.map-filters{position:absolute;left:24px;top:95px;z-index:600;display:flex;gap:6px}.map-filters button{display:flex;align-items:center;gap:5px;min-height:37px;padding:8px 12px;font-size:12px;border-radius:20px;box-shadow:0 2px 8px #143c3910;white-space:nowrap}.map-filters button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--paper)}.legend-dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--ink)}.legend-dot.landmark{background:var(--accent)}.legend-dot.transit{background:#678e9d}.map-filters button[aria-pressed=true] i{background:var(--paper)}.map-caption{position:absolute;left:24px;bottom:24px;z-index:600;display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:8px;padding:11px 14px;background:var(--card);font-size:12px;box-shadow:var(--panel-shadow)}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}.dot-separator{color:var(--muted)}.map-error{position:absolute;inset:40% 20px auto;z-index:850;padding:20px;background:var(--card);box-shadow:var(--panel-shadow);border-radius:12px}
.guide-panel{min-width:0;min-height:0;border-left:1px solid var(--line);display:flex;flex-direction:column;background:var(--paper);z-index:800;box-shadow:-6px 0 30px #193e3a06}.choose-stop{flex-shrink:0;display:flex;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid var(--line);background:var(--paper)}.choose-stop label{font-size:12px;color:var(--muted);white-space:nowrap}.choose-stop select{min-width:0;width:100%;padding:10px 25px 10px 11px;background:var(--card);border:1px solid var(--line);border-radius:7px;font-size:14px;min-height:43px}.guide-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.station-art{position:relative;width:100%;height:220px;display:grid;place-items:center;overflow:hidden;background:#e6e8d8}.station-art>img{width:100%;height:100%;display:block;object-fit:cover}.station-art[data-kind=illustration]>img{object-fit:contain;width:85%;height:85%}.station-art[data-kind=illustration]{background:var(--land)}.station-art[data-kind=ambience]>img{object-fit:cover;object-position:right}.station-art[data-kind=photo]>img{animation:photo-in .35s ease-out}.station-art:after{content:"";position:absolute;inset:55% 0 0;background:linear-gradient(transparent,#102d3755);pointer-events:none}.station-art[data-kind=illustration]:after{display:none}.art-caption{position:absolute;left:16px;bottom:13px;background:#fffef4e8;color:#2f4b50;border-radius:5px;font-size:11px;line-height:1.3;padding:5px 8px;z-index:1;max-width:75%}.image-index{position:absolute;top:15px;right:15px;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#fffdf3ed;color:#234047;font-family:Georgia,serif;font-size:17px;z-index:1;box-shadow:0 2px 8px #0001}.station-art #station-number{font-family:Georgia,serif;font-size:80px;color:var(--muted);opacity:.2}.station-copy{padding:22px 24px 16px}.station-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11px;letter-spacing:1px;color:var(--muted);font-weight:700}.station-meta span:first-child{color:var(--accent)}h2{font-size:24px;font-weight:750;line-height:1.45;letter-spacing:.5px;margin:10px 0 12px}.station-copy>p{font-size:14px;line-height:1.85;color:var(--muted);margin:0 0 18px}.station-copy .stories{padding-left:12px;border-left:2px solid var(--accent);font-size:12px;line-height:1.75;color:var(--ink)}.audio-note{display:flex;align-items:center;gap:10px;padding:15px 0;border-top:1px solid var(--line)}.audio-note>svg{width:24px;height:24px;color:var(--accent)}.audio-note strong{display:block;font-size:14px}.audio-note small{display:block;font-size:11px;margin-top:3px;color:var(--muted)}.voice-info{margin-left:auto;position:relative;font-size:12px;color:var(--muted)}.voice-info>summary{width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;cursor:pointer;font-family:Georgia,serif;font-size:15px;list-style:none}.voice-info p{position:absolute;width:230px;right:0;bottom:20px;background:var(--card);border:1px solid var(--line);border-radius:9px;box-shadow:var(--panel-shadow);padding:15px;line-height:1.7;z-index:10}.transcript-details{font-size:13px;color:var(--muted)}.transcript-details>summary{cursor:pointer;padding:6px 0;color:var(--ink);font-weight:600}.transcript-details>p{line-height:1.9;font-size:14px}.step-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:17px;padding-top:15px;border-top:1px solid var(--line)}.step-controls button{min-height:38px;padding:7px 10px;border:0;background:transparent;font-size:12px}.step-controls>span{font-family:Georgia,serif;font-size:12px;color:var(--muted)}footer{padding:0 24px 20px;color:var(--muted);font-size:11px;line-height:1.7}footer p{margin:0}.action-dock{padding:11px 20px 18px;background:var(--card);border-top:1px solid var(--line);box-shadow:0 -5px 20px #153e3707;flex-shrink:0}.dock-meta{display:flex;align-items:center;gap:12px;margin-bottom:9px;min-height:28px}.dock-meta>span{font-size:12px;font-weight:650;letter-spacing:.3px}.speed-label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);margin-left:auto}.speed-label select{background:transparent;color:var(--ink);padding:2px 0;border:0;font-size:12px}.dock-meta button{min-height:28px;padding:4px 8px;font-size:11px;border:0;background:transparent}.dock-buttons{display:grid;grid-template-columns:1.2fr 1fr;gap:9px}.dock-buttons button,.dock-buttons a{min-height:49px;border-radius:8px;font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 10px;text-decoration:none;font-weight:700}.primary{background:var(--accent);color:var(--on-accent);border:1px solid transparent}.primary>svg{width:17px;height:17px;fill:currentColor;stroke-width:1}.navigate{border:1px solid var(--line);color:var(--ink)}.navigate svg{width:17px;height:17px}#audio-status{font-size:12px;line-height:1.7;margin:9px 0 0;color:var(--accent)}#audio-status:empty{display:none}.action-dock[data-playing=true] .primary>svg{animation:playing-pulse 1.2s ease-in-out infinite}
.leaflet-control-attribution{font-size:10px!important;background:var(--paper)!important;color:var(--muted)!important}.leaflet-control-attribution a{color:var(--muted)!important}.leaflet-bottom.leaflet-left{bottom:78px;left:14px}.leaflet-bar{border:1px solid var(--line)!important;box-shadow:var(--panel-shadow)!important;border-radius:10px!important;overflow:hidden}.leaflet-bar a{background:var(--card)!important;color:var(--ink)!important;width:36px!important;height:36px!important;line-height:36px!important;border-color:var(--line)!important;font-size:22px!important}.pin{background:none!important;border:0!important;overflow:visible!important}.pin>span{display:grid;place-items:center;width:29px;height:29px;background:var(--card);border:1.5px solid var(--ink);color:var(--ink);border-radius:50%;box-shadow:0 2px 5px #224b4333;transition:transform .2s,background .2s}.pin b{font-size:11px;line-height:1;font-family:Arial,sans-serif;font-weight:800}.pin.landmark>span{background:var(--accent);border-color:var(--paper);color:var(--on-accent);border-radius:8px;width:29px;height:29px}.pin.transit>span{width:21px;height:21px;background:#6e939f;color:white;border:1.5px solid var(--paper);border-radius:6px}.pin.transit b{font-size:9px}.pin.selected>span{background:var(--accent);color:var(--on-accent);border:2px solid var(--card);transform:scale(1.27);box-shadow:0 0 0 5px #bf743e28,0 5px 12px #10393244}.pin.selected{z-index:1200!important}.pin.selected:after{content:"";position:absolute;top:29px;left:12px;width:7px;height:7px;background:var(--accent);transform:rotate(45deg)}.leaflet-tooltip{font-family:inherit;background:var(--card);color:var(--ink);border:1px solid var(--line);font-size:12px;box-shadow:var(--panel-shadow);border-radius:6px;padding:7px 10px}.leaflet-tooltip.selected-label{font-weight:700;border:1px solid var(--accent)}.district-label{font-size:15px;font-weight:700;letter-spacing:5px;color:var(--map-label);white-space:nowrap;text-shadow:0 1px 2px var(--land);pointer-events:none}.street-label{font-size:10px;letter-spacing:1px;color:var(--map-label);white-space:nowrap;pointer-events:none;text-shadow:1px 1px var(--land),-1px -1px var(--land)}.north-mark{font-family:Georgia,serif;position:absolute;right:26px;bottom:55px;z-index:500;text-align:center;color:var(--map-label);font-size:11px;pointer-events:none}.north-mark:before{content:"↑";display:block;font-size:24px;margin-bottom:3px}
@keyframes photo-in{from{opacity:.4}to{opacity:1}}@keyframes playing-pulse{50%{opacity:.5}}
@media(min-width:1550px){main{grid-template-columns:minmax(0,1fr) 414px}.station-art{height:250px}.station-copy{padding:25px 28px}}
@media(max-width:1000px) and (min-width:761px){main{grid-template-columns:minmax(0,1fr) 340px}.masthead{padding:12px 20px}.header-place{display:none}.map-toolbar{left:16px;right:16px}.fit>span{display:none}.map-filters{left:16px}.map-filters button{padding:7px 9px}.station-copy{padding:18px 20px}.station-art{height:190px}.dock-buttons{gap:7px}.dock-buttons button,.dock-buttons a{font-size:12px;padding:10px 7px}}
@media(max-width:760px){body{overflow:hidden}.masthead{height:64px;padding:9px 14px;gap:10px}.brand{gap:9px}.brand-mark{width:35px;height:35px;font-size:21px}.brand .eyebrow{font-size:9px;letter-spacing:1.8px;margin-bottom:2px}.brand strong{font-size:12px;letter-spacing:.3px}.header-place{display:none}.languages{gap:0}.languages button{font-size:12px;padding:8px 9px;min-height:40px}main{display:flex;flex-direction:column;height:calc(100dvh - 64px - var(--topbar-h));min-height:0}.map-shell{height:44%;flex-shrink:0;min-height:240px}.map-toolbar{top:11px;left:12px;right:12px;gap:8px}.modes{padding:3px;border-radius:9px}.modes button{font-size:12px;padding:7px 10px;min-height:38px}.modes button>span:first-child{font-size:16px;margin-right:2px}.fit{min-height:44px;padding:10px 11px}.fit>span{display:none}.map-filters{left:12px;top:auto;bottom:28px;gap:5px}.map-filters button{min-height:32px;padding:6px 10px;font-size:11px}.map-caption{display:none}.leaflet-bottom.leaflet-left{left:auto;right:10px;bottom:26px}.leaflet-bar a{width:31px!important;height:31px!important;line-height:31px!important;font-size:19px!important}.leaflet-control-attribution{font-size:9px!important}.guide-panel{border-left:0;flex:1;min-height:0;border-radius:20px 20px 0 0;margin-top:-12px;border-top:1px solid var(--line);box-shadow:0 -8px 30px #153e3315;overflow:hidden}.choose-stop{padding:10px 15px 9px;gap:10px;position:relative}.choose-stop:before{content:"";position:absolute;left:calc(50% - 14px);top:4px;width:28px;height:3px;border-radius:10px;background:var(--line)}.choose-stop label{font-size:11px}.choose-stop select{font-size:13px;padding:8px 25px 8px 10px;min-height:38px}.guide-scroll{padding-top:0}.station-art{height:156px}.station-copy{padding:17px 19px 12px}h2{font-size:23px;margin:8px 0 9px}.station-meta{font-size:11px}.station-copy>p{font-size:14px;margin-bottom:14px;line-height:1.75}.art-caption{font-size:10px;bottom:11px;left:13px}.image-index{height:32px;width:32px;top:12px;right:12px;font-size:15px}.audio-note{padding:12px 0}.action-dock{padding:7px 14px max(11px,env(safe-area-inset-bottom));box-shadow:0 -5px 20px #153e3310}.dock-meta{margin-bottom:6px;min-height:24px}.dock-meta>span{font-size:11px}.dock-meta button{min-height:26px}.dock-buttons button,.dock-buttons a{font-size:13px;min-height:46px;padding:10px}.dock-buttons{grid-template-columns:1.2fr 1fr;gap:9px}.dock-buttons svg{width:16px;height:16px}footer{font-size:10px;padding:0 19px 14px}.district-label{font-size:11px;letter-spacing:3px}.street-label{font-size:9px}.north-mark{display:none}.pin>span{width:27px;height:27px}.pin b{font-size:10px}.pin.landmark>span{width:27px;height:27px}.pin.transit>span{width:20px;height:20px}.pin.selected>span{transform:scale(1.18)}}
@media(max-width:365px){.masthead{padding:9px 10px}.brand{gap:6px}.brand-mark{width:31px;height:31px;font-size:18px}.brand strong{font-size:11px;max-width:134px}.brand .eyebrow{font-size:8px;letter-spacing:1.2px}.languages button{padding:7px 6px;font-size:11px;min-width:29px}.map-filters button{padding:6px 8px;font-size:10px}.map-filters{gap:4px}.station-art{height:132px}.dock-buttons button,.dock-buttons a{font-size:12px;gap:5px}.dock-buttons{gap:7px}.action-dock{padding-left:11px;padding-right:11px}.choose-stop{padding-left:12px;padding-right:12px}.map-shell{min-height:220px}}
@media(max-height:650px) and (min-width:761px){main{min-height:0}.station-art{height:155px}.station-copy{padding-top:15px}}
.station-art[data-fit=contain]>img{object-fit:contain;background:var(--land)}
@media(max-width:760px) and (max-height:680px){.map-shell{height:43%;min-height:210px}.station-art{float:right;width:108px;height:102px;margin:16px 16px 8px 12px;border-radius:9px}.station-art .art-caption,.station-art .image-index{display:none}.station-copy{padding:14px 17px 10px}.station-meta{display:block;line-height:1.7}.station-meta span{display:block}h2{font-size:18px;line-height:1.4;margin:6px 0 8px}.station-copy>p{font-size:12px;line-height:1.65}.audio-note{clear:both}.choose-stop{padding-top:9px;padding-bottom:7px}.choose-stop select{min-height:34px}.action-dock{padding-top:5px;padding-bottom:9px}.dock-meta{margin-bottom:3px}.dock-buttons button,.dock-buttons a{min-height:41px}}
@media(min-width:500px) and (max-width:760px) and (max-height:500px){main{display:grid;grid-template-columns:minmax(0,1fr) 300px;height:calc(100dvh - 64px - var(--topbar-h))}.map-shell{height:100%;min-height:0}.guide-panel{margin-top:0;border-radius:0;border-top:0;border-left:1px solid var(--line)}.map-toolbar{left:9px;right:9px;top:9px;gap:5px}.modes button{padding:6px 7px;font-size:11px}.fit{padding:7px;min-height:39px}.map-filters{left:9px;gap:3px}.map-filters button{padding:6px 7px;font-size:10px}.map-filters .legend-dot{display:none}.choose-stop{padding-left:11px;padding-right:11px;gap:6px}.choose-stop label{font-size:10px}.choose-stop select{font-size:12px}.dock-buttons button,.dock-buttons a{font-size:11px;padding:8px;gap:5px}.station-art{width:88px;height:80px;margin:12px 12px 7px 9px}.station-copy{padding:12px 13px}h2{font-size:16px}.action-dock{padding-left:11px;padding-right:11px}}
@media(max-width:499px) and (max-height:500px){body{overflow:auto}main{height:auto}.map-shell{height:250px;min-height:250px}.guide-panel{min-height:420px}.guide-scroll{min-height:230px}.action-dock{position:sticky;bottom:0}}
.pin.landmark.illustrated>span{width:52px;height:48px;border:0;border-radius:0;background:transparent;box-shadow:none;filter:drop-shadow(0 2px 2px #163e3955)}.pin.landmark.illustrated>span>img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;user-select:none}.pin.landmark.illustrated.selected>span{filter:drop-shadow(0 2px 3px var(--accent));background:transparent;box-shadow:none;transform:scale(1.18)}.pin.landmark.illustrated.selected:after{display:none}
.expand-image{position:absolute;right:13px;bottom:11px;z-index:2;display:flex;align-items:center;gap:5px;min-height:32px;padding:6px 8px;background:#fffdf3ed;color:#234047;border:0;border-radius:5px;font-size:11px;box-shadow:0 2px 5px #0001}.expand-image svg{width:14px;height:14px}#image-viewer{width:min(960px,calc(100vw - 28px));max-height:92dvh;padding:22px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:15px;box-shadow:0 15px 80px #0006;overflow:auto}#image-viewer::backdrop{background:#091b2be3;backdrop-filter:blur(5px)}.viewer-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.viewer-heading h2{margin:0;font-size:22px}.viewer-heading button{display:flex;align-items:center;gap:12px;white-space:nowrap;font-size:13px}.viewer-heading button>span:last-child{font-size:22px;font-weight:400}#viewer-image{display:block;max-width:100%;width:auto;max-height:calc(90dvh - 160px);object-fit:contain;margin:auto}#viewer-caption{font-size:13px;line-height:1.7;color:var(--muted);margin:15px 0 0}
@media(max-width:760px){.pin.landmark.illustrated>span{width:44px;height:42px}.expand-image{font-size:10px;right:11px;bottom:10px;min-height:30px}#image-viewer{padding:15px}.viewer-heading h2{font-size:18px}.viewer-heading button{padding:8px 10px;font-size:12px}.viewer-heading{gap:10px}.viewer-heading .eyebrow{font-size:9px;letter-spacing:1px}}
@media(max-width:760px) and (max-height:680px){.expand-image{right:5px;bottom:5px;min-height:28px;padding:5px}.expand-image>span{display:none}.expand-image svg{width:15px;height:15px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* v0.3: five working day categories plus sights and transit. */
.map-filters{right:24px;width:max-content;max-width:calc(100% - 48px);overflow-x:auto;overflow-y:hidden;padding:2px 2px 5px;scrollbar-width:thin;scrollbar-color:var(--accent) transparent;overscroll-behavior-x:contain}
.map-filters button{flex:none}
.legend-dot.cafe{background:#8a5a3c}.legend-dot.dining{background:#a2473a}.legend-dot.bar{background:#65518a}.legend-dot.retail{background:#286b67}.legend-dot.lodging{background:#8a6925}.legend-dot.story{background:#ab6045}
.pin.cafe{--pin-color:#8a5a3c}.pin.dining{--pin-color:#a2473a}.pin.bar{--pin-color:#65518a}.pin.retail{--pin-color:#286b67}.pin.lodging{--pin-color:#8a6925}.pin.story{--pin-color:#ab6045}
.pin.cafe>span,.pin.dining>span,.pin.bar>span,.pin.retail>span,.pin.lodging>span,.pin.story>span{background:var(--pin-color);border-color:var(--card);color:#fffdf7}
.pin.selected>span{background:var(--accent)!important;border-color:var(--card)!important;color:var(--on-accent)!important}
@media(max-width:760px){.map-filters{left:12px;right:12px;max-width:calc(100% - 24px);bottom:25px}}
@media(max-width:499px) and (max-height:500px){.map-filters{bottom:25px}}
.station-copy .location-status{margin-top:-6px;padding:8px 10px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--card));color:var(--ink);font-size:12px;line-height:1.6}
.navigate[aria-disabled=true]{opacity:.55;cursor:default;pointer-events:none}
.opening-control{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:14px 0 18px;font-size:12px}.opening-control button{min-height:36px;padding:6px 11px;background:var(--card);color:var(--ink)}.opening-control details{color:var(--muted)}.opening-control summary{cursor:pointer}.opening-control details[open]{flex-basis:100%}.opening-control details p{margin:8px 0 0;line-height:1.7;white-space:pre-line}.opening-control small{color:var(--muted)}
.opening-map-button{min-height:38px;padding:7px 12px;background:var(--card);color:var(--ink);font-size:12px;white-space:nowrap;box-shadow:var(--panel-shadow)}
@media(max-width:760px){.opening-map-button{min-height:36px;padding:6px 8px;font-size:11px}}
.pilot-preview{margin:0 0 15px;padding:13px 14px;border:1px solid var(--line);border-radius:9px;background:var(--card)}
.pilot-preview[hidden],.pilot-preview details[hidden]{display:none}
.pilot-preview strong{display:block;font-size:13px;color:var(--ink)}
.pilot-preview>p{margin:5px 0 10px;font-size:12px;line-height:1.65;color:var(--muted)}
.pilot-preview button{min-height:38px;padding:7px 11px;border:1px solid var(--accent);border-radius:7px;background:transparent;color:var(--accent);font-size:12px;font-weight:700}
.pilot-preview button:disabled{opacity:.55}
.pilot-preview details{margin-top:10px;font-size:12px;color:var(--muted)}
.pilot-preview summary{cursor:pointer;color:var(--ink);font-weight:600}
.pilot-preview details p{margin:8px 0 0;line-height:1.8;white-space:pre-line}

/* 返回官網列：高度固定為 --topbar-h，main 的高度要一起扣掉（見下方三處 calc）。 */
.map-topbar{position:relative;z-index:1100;height:var(--topbar-h);display:flex;align-items:center;padding:0 28px;background:var(--paper);color:var(--ink);font-size:13px;line-height:1.4;border-bottom:1px solid var(--line)}

/* Website integration preview: the return link follows the selected language. */
@media(max-width:760px){.map-topbar{padding:0 14px}}
.map-home-link{display:inline-block;padding:.25rem .6rem;border:1px solid currentColor;border-radius:6px;color:inherit;text-decoration:none;white-space:nowrap}
.map-home-link:hover{text-decoration:underline}
.home-label{display:none}
html[lang^="zh"] .home-label-zh,html[lang^="ja"] .home-label-ja,html[lang^="en"] .home-label-en{display:inline}
/* 2026-10-07 使用者：拿掉地圖左上角的標題卡（會擋住地標）。
   h1 留給螢幕閱讀器與搜尋引擎、畫面上不顯示；篩選鈕往上補到工具列下方（top:95px）。 */
.map-intro{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* 2026-10-07 使用者：地點介紹可以收合，讓地圖變大。main[data-panel] 由 app.js 切換 open／closed。
   手機預設收起：只留店名列和「播放導覽／前往這裡」，點店名列展開；電腦預設展開，收起後介紹欄縮成右側 48px 直條，整條都能點開。 */
.panel-toggle{flex-shrink:0;display:flex;align-items:center;justify-content:flex-end;gap:6px;width:100%;min-height:40px;padding:6px 16px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:var(--paper);color:var(--muted);font-size:12px;font-weight:650;text-align:left}
.panel-toggle:hover{color:var(--ink)}
.panel-toggle__grip,.panel-toggle__name{display:none}
.panel-toggle svg{width:16px;height:16px;transition:transform .2s ease}
@media(min-width:761px){main[data-panel=closed]{grid-template-columns:minmax(0,1fr) 48px}main[data-panel=closed] .choose-stop,main[data-panel=closed] .guide-scroll,main[data-panel=closed] .action-dock{display:none}main[data-panel=closed] .panel-toggle{flex:1;flex-direction:column;justify-content:flex-start;gap:12px;padding:18px 0;border-bottom:0;color:var(--ink)}main[data-panel=closed] .panel-toggle__label{writing-mode:vertical-rl;letter-spacing:3px;font-size:13px}main[data-panel=closed] .panel-toggle svg{transform:rotate(180deg)}}
@media(max-width:760px){.choose-stop:before{display:none}.panel-toggle{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;min-height:54px;padding:16px 16px 10px;background:var(--card)}.panel-toggle__grip{display:block;position:absolute;top:7px;left:50%;width:38px;height:4px;margin-left:-19px;border-radius:2px;background:var(--line)}.panel-toggle__name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:15px;font-weight:700}.panel-toggle svg{transform:rotate(90deg)}main:not([data-panel=open]) .panel-toggle svg{transform:rotate(-90deg)}main:not([data-panel=open]) .map-shell{flex:1 1 auto;height:auto;min-height:0}main:not([data-panel=open]) .guide-panel{flex:0 0 auto}main:not([data-panel=open]) .choose-stop,main:not([data-panel=open]) .guide-scroll{display:none}}
@media(max-width:499px) and (max-height:500px){main:not([data-panel=open]) .map-shell{flex:none;height:calc(100dvh - 64px - var(--topbar-h) - 170px);min-height:200px}main:not([data-panel=open]) .guide-panel{min-height:0}}
