:root{--paper:#f8f7f2;--ink:#173f35;--muted:#6d7972;--sea:#86b5af;--accent:#b35b43;--line:#dce0d7;--shadow:0 12px 42px #233f3514;font-family:var(--font-ui);color:var(--ink)}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:var(--sea)}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button{border:0;background:none}button:disabled{opacity:.55;cursor:wait}a{color:inherit}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}button svg{flex-shrink:0}[hidden]{display:none!important}#map{position:fixed;inset:0}.cesium-widget-credits{font-size:9px!important;opacity:.7;max-width:70%;bottom:4px!important}.cesium-viewer-bottom{bottom:1px!important}.cesium-viewer-toolbar,.cesium-viewer-animationContainer,.cesium-viewer-timelineContainer{display:none!important}.topbar{position:fixed;top:24px;left:32px;right:32px;height:68px;background:var(--paper);display:flex;align-items:center;justify-content:space-between;padding:0 26px;border-radius:5px;box-shadow:var(--shadow);z-index:20}.brand{display:flex;align-items:center;gap:26px;text-decoration:none;font-family:var(--font-display);font-size:29px;font-weight:600;letter-spacing:3px;white-space:nowrap}.brand span{font-family:var(--font-ui);letter-spacing:2px;font-weight:400;font-size:11px;color:var(--muted);border-left:1px solid var(--line);padding-left:24px}.topbar nav{display:flex;align-items:center;gap:20px}.search-launch{width:250px;background:#eeeee7;display:flex;align-items:center;gap:11px;border-radius:4px;padding:11px 14px;text-align:left;font-size:12px;color:var(--muted)}.search-launch kbd{margin-left:auto;font-family:inherit}.icon-btn{display:grid;place-items:center;min-width:38px;min-height:38px;font-size:25px}.text-btn{font-size:12px;color:var(--muted)}.breadcrumb{position:fixed;left:48px;top:117px;display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:1px;z-index:10}.tiny-dot{width:5px;height:5px;border-radius:50%;background:var(--ink)}#labels{position:fixed;inset:0;pointer-events:none;z-index:8}.map-label{position:absolute;left:0;top:0;pointer-events:auto;transform:translate(-50%,-50%);white-space:nowrap;display:flex;align-items:center;gap:9px;background:#f8f7f2ef;padding:10px 14px;border-radius:4px;box-shadow:0 3px 14px #20463b0d;font-size:13px;transition:background .2s,box-shadow .2s}.map-label:hover,.map-label:focus-visible{background:white;box-shadow:0 4px 24px #20463b26}.map-label .count{font-size:10px;color:var(--muted);border-left:1px solid #cdd5cc;padding-left:9px}.map-label.central{background:var(--ink);color:var(--paper);padding:13px 17px}.map-label.central .count{color:#d2dfd6;border-color:#5b7a6d}.map-label.shop-pin{gap:7px;padding:7px 10px;font-size:11px;border-radius:4px}.pin-dot{width:8px;height:8px;background:var(--accent);border:2px solid var(--paper);border-radius:50%;box-shadow:0 0 0 1px var(--accent)}.shop-pin.selected{background:var(--ink);color:var(--paper);z-index:2}.sea-label{position:fixed;color:#e7f0e7;font-size:13px;letter-spacing:6px;pointer-events:none;transform:translate(-50%,-50%);white-space:nowrap;opacity:.85}.home-panel{position:fixed;left:48px;bottom:80px;width:320px;padding:32px;background:var(--paper);border-radius:5px;box-shadow:var(--shadow);z-index:12}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted)}h1{font-family:var(--font-display);font-weight:500;font-size:39px;letter-spacing:3px;line-height:1.5;margin:15px 0}.home-panel p{font-size:12px;color:var(--muted);margin:0 0 28px;line-height:1.9}.primary{background:var(--ink);color:var(--paper);border-radius:3px;min-height:46px;padding:13px 19px;font-size:13px;display:flex;align-items:center;justify-content:center;gap:18px;text-decoration:none}.explore-btn{width:100%;justify-content:space-between}.home-meta{display:flex;gap:12px;align-items:center;margin-top:20px;font-size:10px;color:var(--muted)}.home-meta i{width:3px;height:3px;background:#a9b5ab;border-radius:50%}.district-panel{position:fixed;left:38px;bottom:60px;width:310px;background:var(--paper);padding:25px;border-radius:5px;box-shadow:var(--shadow);z-index:12}.back-link{font-size:11px;color:var(--muted);padding:0;margin-bottom:22px}.district-heading{display:flex;align-items:center;justify-content:space-between}.district-heading h1{font-size:32px;margin:5px 0 0}.district-count{font-size:11px;color:var(--muted)}.district-intro{font-size:11px;color:var(--muted);line-height:1.9;margin:12px 0 18px}.restaurant-row{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;padding:13px 0;border-top:1px solid var(--line);gap:12px}.restaurant-row strong{display:block;font-size:13px;font-weight:500;margin-bottom:5px}.restaurant-row small{font-size:10px;color:var(--muted)}.restaurant-row .row-arrow{font-size:18px;color:#83988a}.restaurant-row:hover strong{color:var(--accent)}.restaurant-panel{position:fixed;right:34px;top:116px;bottom:66px;width:338px;max-height:690px;background:var(--paper);padding:28px;border-radius:5px;z-index:22;box-shadow:var(--shadow);overflow:auto;animation:slide-in .35s ease}.panel-close{position:absolute;right:14px;top:10px}.restaurant-panel h2{font-family:var(--font-display);font-size:29px;letter-spacing:2px;font-weight:500;margin:30px 0 12px}.restaurant-panel .tagline{font-size:12px;line-height:2;color:var(--muted);margin:14px 0 25px}.meta-line{font-size:11px;letter-spacing:1px;color:var(--muted)}.price{padding:23px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.price span{display:block;font-size:10px;color:var(--muted);margin-bottom:9px}.price strong{font-size:23px;font-weight:400;letter-spacing:1px}.price small{font-size:11px;color:var(--muted)}.detail-section{margin:23px 0}.detail-section h3{font-size:11px;font-weight:500;letter-spacing:2px;margin-bottom:10px}.detail-section p{font-size:12px;line-height:1.9;color:var(--muted);margin:0}.detail-actions{display:flex;gap:9px;margin-top:25px}.detail-actions .primary{flex:1}.save-btn{border:1px solid var(--line);border-radius:3px;width:47px;display:grid;place-items:center}.save-btn[aria-pressed=true]{color:var(--accent)}.detail-source{font-size:10px;line-height:1.8;color:var(--muted);margin-top:18px}.detail-source a{text-underline-offset:3px}.sheet-handle{display:none}.map-tools{position:fixed;right:34px;bottom:104px;display:flex;flex-direction:column;gap:12px;z-index:18}.map-tools>button,.zoom-group{background:var(--paper);box-shadow:var(--shadow);border-radius:4px}.map-tools button{display:grid;place-items:center;width:40px;height:40px}.map-tools svg{width:18px}.zoom-group button{font-size:22px;line-height:1}.zoom-group button+button{border-top:1px solid var(--line)}.map-tools button:hover{color:var(--accent)}.map-tools #cloud-toggle[aria-pressed=false]{opacity:.6}.mode-switch{position:fixed;right:85px;bottom:104px;padding:4px;background:var(--paper);border-radius:4px;display:flex;z-index:18;box-shadow:var(--shadow)}.mode-switch button{padding:7px 12px;font-size:11px;border-radius:2px}.mode-switch button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.map-hint{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);font-size:10px;letter-spacing:1px;color:var(--ink);opacity:.65;white-space:nowrap}.performance{position:fixed;right:34px;bottom:57px;font-size:10px;letter-spacing:1px;background:#f8f7f2d9;padding:8px 10px;border-radius:3px;z-index:18}.loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;gap:12px;background:var(--paper);z-index:60;font-size:12px;letter-spacing:2px}.loading.compact{inset:auto;bottom:32px;left:50%;transform:translateX(-50%);padding:13px 20px;box-shadow:var(--shadow);border-radius:4px;letter-spacing:1px}.loader{width:14px;height:14px;border:1px solid #c5d2c6;border-top-color:var(--ink);border-radius:50%;animation:spin 1s linear infinite}#toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);max-width:90vw;padding:13px 20px;background:var(--ink);color:var(--paper);font-size:12px;border-radius:4px;z-index:80;text-align:center}dialog{border:0;border-radius:7px;background:var(--paper);color:var(--ink);padding:30px;width:520px;max-width:calc(100vw - 32px);max-height:80dvh;box-shadow:0 20px 80px #143c3430}dialog::backdrop{background:#14382e38;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px}.dialog-head h2{font-family:var(--font-display);font-weight:500;font-size:26px;letter-spacing:2px;margin:0}dialog h3{font-size:13px;margin:25px 0 10px}dialog p{font-size:12px;line-height:2;color:var(--muted)}.search-field{display:flex;align-items:center;gap:12px;background:#eeeee7;border-radius:3px;padding:12px 14px}.search-field input{border:0;outline:0;background:none;min-width:0;width:100%;font-size:13px;color:var(--ink)}.search-field svg{width:18px}.filter-row{display:flex;gap:8px;margin:18px 0;flex-wrap:wrap}.filter-row button{padding:8px 12px;border:1px solid var(--line);border-radius:3px;font-size:10px}.filter-row button[aria-pressed=true]{color:var(--paper);background:var(--ink);border-color:var(--ink)}.empty-state{padding:36px 0;text-align:center;font-size:13px;color:var(--muted);line-height:2}.no-js{position:fixed;inset:0;background:var(--paper);display:grid;place-items:center;z-index:100}.fallback-info{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);padding:14px 20px;background:var(--paper);font-size:12px;z-index:40;max-width:90vw}.body-detail .map-tools{right:390px}.body-detail .mode-switch{right:441px}.body-detail .performance{right:390px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slide-in{from{opacity:0;transform:translateX(15px)}to{opacity:1;transform:translateX(0)}}
@media(min-width:1700px){.home-panel{left:60px;bottom:110px;width:350px;padding:38px}}
@media(max-width:700px){.topbar{left:16px;right:16px;top:max(14px,env(safe-area-inset-top));height:60px;padding:0 17px}.brand{font-size:24px;letter-spacing:2px}.brand span,.search-launch span,.search-launch kbd,#about-open{display:none}.topbar nav{gap:5px}.search-launch{width:38px;height:38px;padding:8px;background:none}.icon-btn{min-width:34px}.breadcrumb{top:92px;left:23px;font-size:10px}.home-panel{left:16px;right:16px;bottom:max(48px,calc(env(safe-area-inset-bottom) + 38px));width:auto;padding:22px 25px}.home-panel h1{font-size:29px;line-height:1.45;margin:9px 0 10px}.home-panel h1 br{display:none}.home-panel p{font-size:11px;margin-bottom:18px}.eyebrow{font-size:9px}.home-meta{margin-top:13px}.primary{min-height:43px;font-size:12px}.map-label{padding:8px 10px;font-size:11px;gap:7px}.map-label .count{font-size:9px;padding-left:7px}.map-label.central{padding:10px 13px}.map-label.shop-pin{font-size:10px;padding:7px 8px}.sea-label{font-size:10px;letter-spacing:2px}.map-tools{right:16px;bottom:330px;gap:9px}.map-tools button{width:35px;height:35px}.map-tools #home-view{display:none}.mode-switch{right:60px;bottom:330px}.mode-switch button{padding:7px 9px}.performance{right:16px;bottom:290px;font-size:9px}.map-hint{bottom:17px;font-size:9px}.district-panel{left:16px;right:16px;bottom:45px;width:auto;padding:20px 24px 14px;max-height:250px;overflow:auto}.district-panel .back-link{margin-bottom:10px;font-size:10px}.district-heading h1{font-size:26px;margin-top:1px}.district-heading .eyebrow{display:none}.district-intro{display:none}.district-count{font-size:10px}.district-panel .restaurant-row{padding:10px 0}.district-panel .restaurant-row strong{font-size:12px;margin-bottom:3px}.district-panel #district-restaurants{margin-top:12px}.district-panel .restaurant-row:nth-child(n+3){display:none}.restaurant-panel{left:12px;right:12px;top:auto;bottom:17px;width:auto;padding:22px 25px;max-height:65dvh;border-radius:12px 12px 5px 5px;animation:slide-up .3s ease}.sheet-handle{display:block;width:32px;height:3px;border-radius:4px;background:#c3c9c0;margin:-10px auto 15px}.restaurant-panel h2{font-size:27px;margin:13px 0 9px}.restaurant-panel .tagline{margin:10px 0 16px;font-size:11px}.price{padding:16px 0}.price strong{font-size:21px}.detail-section{margin:17px 0}.detail-section p{font-size:11px}.detail-actions{margin-top:18px}.detail-source{font-size:9px;margin-top:13px}.body-detail .district-panel{display:none!important}.body-detail .map-tools{right:16px;bottom:calc(65dvh + 30px)}.body-detail .mode-switch{display:none!important}.body-detail .performance{display:none}.body-detail .map-hint{display:none}.loading.compact{bottom:20px;font-size:11px;width:max-content;max-width:95vw}dialog{padding:24px;max-height:85dvh}.dialog-head h2{font-size:24px}.search-field input{font-size:12px}.filter-row{gap:6px}.filter-row button{font-size:9px;padding:8px 10px}.cesium-widget-credits{font-size:8px!important;max-width:85%}@keyframes slide-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.area-label{background:none!important;box-shadow:none!important;font-size:18px;letter-spacing:7px;color:#586e5d;pointer-events:none;padding:0}.phase-home #home-view,.phase-home #cloud-toggle,.phase-home #performance{display:none}.phase-home .map-tools{bottom:80px}.phase-home .map-hint{opacity:.65}
@media(max-width:700px){.home-panel h1 br{display:block}.home-panel h1{font-size:27px;margin:7px 0 10px}.home-panel{padding:20px 24px}.phase-home .map-tools{bottom:350px}.area-label{font-size:14px;letter-spacing:4px}}

@media(max-width:700px){.district-panel #district-restaurants{max-height:125px;overflow-y:auto}.district-panel .restaurant-row:nth-child(n+3){display:flex}}
.body-detail .district-panel{display:none}

#scene-curtain{position:fixed;inset:0;background:var(--paper);z-index:19;opacity:0;pointer-events:none;transition:opacity .4s ease;display:grid;place-items:center}#scene-curtain span{font-family:var(--font-display);font-size:22px;letter-spacing:5px;color:var(--ink);opacity:.5}#scene-curtain.visible{opacity:1;pointer-events:auto}.phase-home #reset-view{display:none}.map-tools #reset-view{width:auto;min-width:110px;padding:0 13px;display:flex;gap:8px;font-size:11px}.map-tools #reset-view svg{width:16px}.map-tools{align-items:flex-end;bottom:100px}.phase-home .map-tools{display:none}.performance{bottom:57px}.body-detail .map-tools{right:390px}#map canvas{touch-action:manipulation}
@media(max-width:700px){.map-tools{bottom:320px}.map-tools #reset-view{min-width:94px;padding:0 10px;font-size:10px}.body-detail .map-tools{right:16px;bottom:calc(65dvh + 30px)}.performance{bottom:278px}}

/* Restaurant disclosure: selection opens a small card, details require a second action. */
.restaurant-panel{top:auto;bottom:66px;max-height:calc(100dvh - 190px)}
.restaurant-panel:not(.is-expanded){padding:24px 28px;overflow:visible}
.restaurant-panel:not(.is-expanded) h2{margin:17px 0 10px}
.detail-expand{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:20px;padding:14px 0 0;border-top:1px solid var(--line);font-size:12px;text-align:left}
.detail-expand>span:last-child{font-size:18px}
.restaurant-panel.is-expanded .detail-expand{margin-top:18px;padding-top:12px;color:var(--muted);font-size:11px}
@media(max-width:700px){
 .restaurant-panel{bottom:17px;max-height:65dvh}
 .restaurant-panel:not(.is-expanded){padding:22px 25px 20px}
 .restaurant-panel:not(.is-expanded) h2{margin:12px 0 8px;font-size:25px}
 .detail-expand{margin-top:15px;padding-top:12px;min-height:42px}
 .body-detail .map-tools{bottom:232px}
 .body-detail.detail-expanded .map-tools{bottom:calc(65dvh + 30px)}
}

.loading{flex-direction:column;gap:14px;padding:28px}.loading-heading{width:260px;max-width:100%;display:flex;align-items:center;justify-content:space-between;gap:24px;font-size:12px;letter-spacing:1px}#loading-percent{font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:0;color:var(--muted)}#loading-progress{display:block;width:260px;max-width:100%;height:3px;border:0;border-radius:4px;overflow:hidden;appearance:none;background:var(--line);color:var(--ink)}#loading-progress::-webkit-progress-bar{background:var(--line);border-radius:4px}#loading-progress::-webkit-progress-value{background:var(--ink);border-radius:4px;transition:width .2s ease}#loading-progress::-moz-progress-bar{background:var(--ink);border-radius:4px}.loading.compact{padding:18px 22px;gap:12px;min-width:280px}.loading.compact .loading-heading{font-size:11px}

.scene-travelling #labels,.scene-travelling #label-guides,.scene-travelling #district-panel,.scene-travelling .map-tools,.scene-travelling #sea-label{visibility:hidden}
.scene-travelling .loading.compact{bottom:28px}

#mobile-places{display:none}
.shop-pin.selected{background:#8a512c;color:#fffaf1;box-shadow:0 0 0 2px #f9e1ad,0 5px 20px #59331f35}
.shop-pin.selected .pin-dot{background:#f2c572;box-shadow:0 0 0 1px #efc47d}
@media(max-width:700px){
 #district-panel{display:none!important}
 #mobile-places{display:block;position:fixed;left:16px;right:16px;bottom:max(35px,calc(env(safe-area-inset-bottom) + 24px));z-index:22}
 .mobile-places-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:10px;color:var(--ink);background:#f8f7f2ed;padding:9px 12px;border-radius:4px}
 .mobile-places-head button{padding:0;font-size:10px;min-height:22px}
 .mobile-places-head>span:last-child{font-size:9px;color:var(--muted)}
 #mobile-place-track{display:flex;overflow-x:auto;gap:12px;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x;position:relative;border-radius:5px}
 #mobile-place-track::-webkit-scrollbar{display:none}
 .mobile-place-card{flex:0 0 100%;min-width:0;display:flex;align-items:center;gap:12px;padding:17px 18px;background:var(--paper);border-radius:5px;scroll-snap-align:start;scroll-snap-stop:always;min-height:89px}
 .mobile-place-select{flex:1;text-align:left;min-width:0;padding:0}
 .mobile-place-select strong{display:block;font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:1px;margin-bottom:8px}
 .mobile-place-select>span{display:block;font-size:10px;color:var(--muted)}
 .mobile-place-details{flex-shrink:0;font-size:10px;padding:12px 0 12px 8px}
 .mobile-place-card.active .mobile-place-select strong{color:#8a512c}
 .map-tools,.body-detail .map-tools{bottom:195px;right:16px}
 .body-detail.detail-expanded #mobile-places{visibility:hidden}
 .body-detail.detail-expanded .map-tools{bottom:calc(65dvh + 30px)}
 .has-mobile-card .restaurant-panel:not(.is-expanded){display:none}
 .body-detail:not(.has-mobile-card) #mobile-places{visibility:hidden}
 .map-hint{display:none}
}

/* The title sits directly on the map. */
.topbar{right:auto;width:max-content;height:auto;min-height:0;background:transparent;padding:0;border-radius:0;box-shadow:none;pointer-events:none;top:32px;left:48px}.topbar .brand{pointer-events:auto}
@media(max-width:700px){.topbar{top:max(28px,env(safe-area-inset-top));left:24px;right:auto;height:auto;padding:0}}

.detail-award{font-size:11px;color:#89613f;margin-top:12px;line-height:1.5}.restaurant-row .row-award{margin-top:6px;font-size:9px;color:#89613f}.mobile-place-select>.card-award{font-size:9px;margin-top:6px;color:#89613f;line-height:1.4}
@media(max-width:700px){.mobile-place-card{padding:14px 18px}.mobile-place-select strong{font-size:20px}.mobile-place-details{font-size:10px}}

#label-guides{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:7}#label-guides line{stroke:#426455;stroke-width:1;opacity:.45}

/* A small, dismissible district menu leaves the map unobstructed. */
#district-switch{position:fixed;top:32px;right:34px;z-index:35;display:flex;align-items:center;gap:9px;min-height:42px;padding:0 14px;background:#f8f7f2ed;border:1px solid #173f3514;border-radius:4px;box-shadow:0 2px 12px #173f350c;font-size:12px;letter-spacing:1px}
#district-switch svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
#district-switch .district-chevron{width:12px;height:12px;transition:transform .18s ease}
#district-switch[aria-expanded=true] .district-chevron{transform:rotate(180deg)}
#district-switch:disabled{opacity:.5;cursor:wait}
#district-picker{position:fixed;inset:84px 34px auto auto;margin:0;padding:20px;width:286px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 110px);overflow:auto;border:1px solid #173f3514;border-radius:5px;background:var(--paper);color:var(--ink);box-shadow:0 12px 36px #173f3524}
#district-picker::backdrop{background:transparent}
.district-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.district-picker-head h2{margin:0;font-family:var(--font-display);font-weight:500;font-size:20px;letter-spacing:1px}
.district-picker-head button{font-size:23px;line-height:1;width:32px;height:32px;color:var(--muted)}
.district-group+.district-group{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}
.district-group h3{font-size:10px;letter-spacing:1px;font-weight:400;color:var(--muted);margin:0 0 8px}
.district-group>div{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}
.district-group button{display:flex;align-items:center;justify-content:space-between;text-align:left;min-height:42px;padding:9px 10px;font-size:13px;border-radius:3px}
.district-group button:hover{background:#173f3509}
.district-group button[aria-current]{background:var(--ink);color:var(--paper)}
.district-choice-mark{font-size:12px;opacity:.65}
#district-switch:focus-visible,#district-picker button:focus-visible{outline:2px solid #a67442;outline-offset:3px}
@media(max-width:700px){#district-switch{top:max(24px,env(safe-area-inset-top));right:20px;min-height:40px;padding:0 11px;gap:7px;font-size:11px;letter-spacing:0}#district-switch svg{width:15px;height:15px}#district-picker{top:max(76px,calc(env(safe-area-inset-top) + 52px));right:20px;width:280px;padding:18px;max-height:calc(100dvh - 100px)}}

/* Desktop restaurant stepping shares the guided camera and selection state. */
#desktop-restaurant-nav{display:none}
@media(min-width:701px){
 #desktop-restaurant-nav{position:fixed;left:50%;bottom:66px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:4px;background:#f8f7f2ed;border:1px solid #173f3514;border-radius:4px;z-index:23}
 #desktop-restaurant-nav button{display:grid;place-items:center;width:40px;height:40px;border-radius:3px}
 #desktop-restaurant-nav button:hover:not(:disabled){background:#173f350b}
 #desktop-restaurant-nav button:disabled{opacity:.28;cursor:default}
 #desktop-restaurant-nav button:focus-visible{outline:2px solid #a67442;outline-offset:1px}
 #desktop-restaurant-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
 #desktop-place-index{min-width:82px;text-align:center;font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:1px}
 .phase-home #desktop-restaurant-nav{display:none}
 .scene-travelling #desktop-restaurant-nav{visibility:hidden}
}

/* Handwritten headings, with Hong Kong text forms for navigation and details. */
.brand{font-weight:500;letter-spacing:2px;font-size:32px}
.restaurant-row strong{font-family:var(--font-display);font-size:16px;font-weight:500}
.restaurant-panel h2,.district-heading h1,.mobile-place-select strong{font-family:var(--font-display);font-weight:500}
.price strong,#desktop-place-index{font-variant-numeric:tabular-nums}
@media(max-width:700px){.brand{font-size:28px;letter-spacing:1.5px}.mobile-place-select strong{font-size:22px;letter-spacing:.5px}.restaurant-panel h2{font-size:28px}}

/* Soft cards and capsule controls, with continuous corners where supported. */
:root{--radius-card:28px;--radius-sheet:32px;--radius-pill:9999px;--radius-item:18px}
.restaurant-panel,.district-panel,.home-panel,dialog,#district-picker{border-radius:var(--radius-card)}
.restaurant-panel .panel-close{top:14px;right:14px;width:36px;height:36px;border-radius:50%}
.icon-btn,.save-btn,.district-picker-head button{border-radius:50%}
.primary,.filter-row button,.search-field,#district-switch,.map-label,.map-label.shop-pin,.map-label.central,.map-tools>button,.map-tools #reset-view,.mode-switch,.mode-switch button,.performance,#toast,#desktop-restaurant-nav,#desktop-restaurant-nav button{border-radius:var(--radius-pill)}
.district-group button{border-radius:var(--radius-pill);padding-left:14px;padding-right:14px}
.loading.compact,.fallback-info{border-radius:24px}
#district-picker{padding:22px}
@media(min-width:701px){.restaurant-panel:not(.is-expanded){padding:28px 30px}.district-panel{padding:28px}.restaurant-panel{scrollbar-width:thin}}
@media(max-width:700px){
 .restaurant-panel,.restaurant-panel.is-expanded{border-radius:var(--radius-sheet)}
 .restaurant-panel:not(.is-expanded){padding:26px}
 .mobile-places-head{border-radius:var(--radius-pill);padding:10px 16px}
 #mobile-place-track,.mobile-place-card{border-radius:26px}
 .mobile-place-card{padding:18px 22px}
 .district-picker-head button{flex-shrink:0}
 #district-picker{padding:20px}
}
@supports(corner-shape:superellipse(1.4)){
 .restaurant-panel,.district-panel,.home-panel,dialog,#district-picker,.mobile-place-card,#mobile-place-track{corner-shape:superellipse(1.4)}
}

/* The lettering itself fills with real resource progress. */
.loading{--loading-fill:0%;gap:28px}
.loading-mark{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.1;user-select:none}
.loading-word{display:inline-grid;width:max-content;color:#dce0d7;white-space:nowrap}
.loading-word>span{grid-area:1/1}
.loading-word-fill{color:var(--ink);clip-path:inset(0 calc(100% - var(--loading-fill)) 0 0);transition:clip-path .3s ease}
.loading-word-zh{font-family:var(--font-display);font-weight:500;font-size:84px;letter-spacing:6px;padding-left:6px}
.loading-word-en{font-family:var(--font-ui);font-weight:500;font-size:38px;letter-spacing:.5px;line-height:1.4}
.loading .loading-heading{width:280px;font-size:11px;letter-spacing:.5px;color:var(--muted)}
.loading #loading-progress{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.loading.compact{gap:12px;padding:18px 24px;min-width:0}
.loading.compact .loading-mark{flex-direction:row;justify-content:center;align-items:baseline;gap:12px}
.loading.compact .loading-word-zh{font-size:30px;letter-spacing:1px;padding-left:1px}
.loading.compact .loading-word-en{font-size:20px;letter-spacing:0}
.loading.compact .loading-heading{width:260px;font-size:10px}
@media(max-width:700px){.loading-word-zh{font-size:72px}.loading-word-en{font-size:34px}.loading .loading-heading{width:min(280px,80vw)}.loading.compact{max-width:calc(100vw - 32px);bottom:24px}.loading.compact .loading-heading{width:min(260px,calc(100vw - 80px))}}

/* In-scene loading stays compact; the opening screen keeps its word fill. */
.loading.compact .loading-mark{display:none}
.loading.compact #loading-progress{position:static;width:260px;max-width:100%;height:3px;margin:0;clip-path:none;overflow:hidden}
@media(max-width:700px){.loading.compact #loading-progress{width:min(260px,calc(100vw - 80px))}}
/* Keep the native popover in the top layer until its closing transition ends. */
#district-picker{opacity:0;transform:translateY(-8px) scale(.96);transform-origin:top right;transition:opacity .2s ease,transform .28s cubic-bezier(.22,1,.36,1),display .28s allow-discrete,overlay .28s allow-discrete}
#district-picker:popover-open{opacity:1;transform:translateY(0) scale(1)}
@starting-style{#district-picker:popover-open{opacity:0;transform:translateY(-8px) scale(.96)}}

.restaurant-panel{animation:none}
#district-picker:not(:popover-open){pointer-events:none}

/* Restaurant photography and sourced menus inside expanded details. */
.store-preview{margin:18px 0 24px}
.store-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.store-section-heading h3{margin:0;font-size:13px;font-weight:500;letter-spacing:1px}
.store-section-heading>span,.store-section-heading>a{font-size:9px;color:var(--muted);text-decoration:none;letter-spacing:0}
.store-gallery{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pan-y;border-radius:18px}
.store-gallery::-webkit-scrollbar{display:none}
.store-gallery-nav{display:flex;align-items:center;gap:6px;flex-shrink:0}
.store-gallery-nav button{display:grid;place-items:center;width:32px;height:32px;padding:0;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);line-height:0;cursor:pointer}
.store-gallery-nav button svg{display:block;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.store-gallery-nav button:hover:not(:disabled){background:#e9e4d8}
.store-gallery-nav button:disabled{opacity:.28;cursor:default}
.store-gallery-nav button:focus-visible{outline:2px solid #a67442;outline-offset:2px}
.store-gallery-nav [data-gallery-status]{min-width:34px;text-align:center;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.store-photo{margin:0;flex:0 0 94%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always}
.store-photo button{display:block;position:relative;padding:0;width:100%;border-radius:18px;overflow:hidden;background:#e5e7dc}
.store-photo img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.photo-enlarge{position:absolute;right:10px;bottom:10px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#f8f7f2ed;font-size:20px}
.store-photo figcaption{display:flex;justify-content:space-between;gap:10px;padding:9px 2px;font-size:9px;color:var(--muted)}
.photo-history-note{font-size:9px;color:var(--muted);line-height:1.7;margin:0 0 22px}
.store-menu-heading{margin:0 0 8px}.menu-price-label{margin:0 0 6px;font-size:10px;color:#89613f}
.signature-menu{list-style:none;padding:0;margin:0}
.signature-menu li{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.signature-menu li>div{min-width:0}.dish-name{font-size:13px;line-height:1.7;font-weight:500}
.signature-tag{display:inline-block;margin-left:7px;padding:1px 6px;background:#e9e4d8;color:#89613f;font-size:8px;border-radius:999px;font-weight:400;vertical-align:middle}
.signature-menu li>div>small{display:block;margin-top:4px;font-size:10px;color:var(--muted);line-height:1.6}
.dish-price{white-space:nowrap;font-size:14px;font-variant-numeric:tabular-nums;padding-top:2px;line-height:1.7}
.dish-price small{margin-left:3px;font-size:9px;color:var(--muted)}
.dish-price{display:flex;flex-direction:column;align-items:flex-end;max-width:110px;flex-shrink:0}
.dish-price.is-inquiry{font-size:10px;white-space:normal;text-align:right;max-width:85px}
.dish-source a{font-size:9px;text-underline-offset:3px}
.photo-navigation button:disabled{opacity:.3;cursor:default}
.photo-unavailable button{min-height:160px;padding:20px;color:var(--muted);font-size:11px}
.photo-unavailable .photo-enlarge{display:none}
.menu-price-note{font-size:10px;color:var(--muted);line-height:1.8;margin:13px 0 8px}
.menu-source-link{display:flex;justify-content:space-between;gap:10px;font-size:10px;line-height:1.7;text-decoration:none}.menu-source-link>span{font-size:9px;color:var(--muted)}
.store-photo-credits{margin-top:16px;color:var(--muted);font-size:9px;line-height:1.8}
.store-photo-credits summary{cursor:pointer;width:max-content;padding:6px 0}
.store-photo-credits p{font-size:9px;line-height:1.8;margin:8px 0}.store-photo-credits a{text-underline-offset:3px}
.photo-dialog{width:880px;max-width:calc(100vw - 32px);max-height:90dvh;padding:22px;overflow:auto;animation:photo-reveal .24s cubic-bezier(.22,1,.36,1)}
.photo-dialog::backdrop{background:#102e29aa;backdrop-filter:blur(6px)}
.photo-dialog .dialog-head{margin-bottom:16px}.photo-dialog .dialog-head h2{font-size:24px}
.photo-dialog figure{margin:0}.photo-dialog #photo-full{display:block;max-height:62dvh;width:100%;height:auto;object-fit:contain;border-radius:16px;background:#e7e9df}
#photo-caption{display:flex;flex-direction:column;gap:5px;margin-top:12px;color:var(--muted);font-size:10px;line-height:1.6}#photo-caption strong{font-weight:500;color:var(--ink);font-size:12px}
.photo-navigation{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:12px;font-size:11px}
.photo-navigation button{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;font-size:18px}
.store-photo button:focus-visible,.store-gallery:focus-visible,.photo-navigation button:focus-visible{outline:2px solid #a67442;outline-offset:2px}
@media(min-width:1000px){.restaurant-panel.has-store-preview.is-expanded{width:390px}.body-detail:has(.has-store-preview.is-expanded) .map-tools{right:440px}}
@media(max-width:700px){.photo-dialog{padding:20px;max-height:88dvh}.photo-dialog #photo-full{max-height:57dvh}.store-preview{margin-top:17px}.store-section-heading h3{font-size:12px}.signature-menu li{padding:13px 0}}
@keyframes photo-reveal{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}

/* A dish photo appears only on request, in a small anchored preview. */
.dish-preview-trigger{display:inline-flex;align-items:center;gap:5px;min-height:28px;padding:0;margin:-3px 0;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer}
.dish-preview-trigger svg{width:14px;height:14px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linejoin:round;opacity:.55}
.dish-preview-trigger[aria-expanded=true]{color:#89613f}.dish-preview-trigger:hover svg{opacity:1}
.dish-preview-trigger:focus-visible{outline:2px solid #a67442;outline-offset:3px;border-radius:4px}
#dish-preview{position:fixed;inset:auto;margin:0;width:210px;max-width:calc(100vw - 24px);padding:10px;border:1px solid #173f3514;border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:0 8px 30px #173f3529;opacity:0;transform:translateY(5px) scale(.97);transform-origin:center;transition:opacity .16s ease,transform .2s cubic-bezier(.22,1,.36,1),display .2s allow-discrete,overlay .2s allow-discrete}
#dish-preview:popover-open{opacity:1;transform:none}#dish-preview:not(:popover-open){pointer-events:none}
#dish-preview::backdrop{background:transparent}
@starting-style{#dish-preview:popover-open{opacity:0;transform:translateY(5px) scale(.97)}}
#dish-preview-close{position:absolute;right:16px;top:16px;z-index:1;width:25px;height:25px;border-radius:50%;background:#f8f7f2eb;font-size:18px;line-height:1;display:grid;place-items:center}
.dish-image-wrap{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;border-radius:12px;background:#e8eade}
#dish-preview-image{display:block;width:100%;height:100%;object-fit:cover}
.dish-image-loading,.dish-image-error{position:absolute;inset:0;display:none;place-items:center;padding:20px;text-align:center;font-size:10px;color:var(--muted)}
#dish-preview[data-photo-state=loading] .dish-image-loading,#dish-preview[data-photo-state=error] .dish-image-error{display:grid}
#dish-preview:not([data-photo-state=ready]) #dish-preview-image{opacity:0}
.dish-preview-caption{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 2px 7px;font-size:11px;line-height:1.5}
.dish-preview-caption strong{font-weight:500}.dish-preview-caption>span{font-size:10px;white-space:nowrap;font-variant-numeric:tabular-nums}
.dish-preview-caption{flex-direction:column;align-items:flex-start;gap:3px}
.dish-preview-caption>span{white-space:normal}
#dish-preview-source{display:block;margin:0 2px;font-size:8px;line-height:1.6;color:var(--muted);text-underline-offset:2px}
#dish-preview>p{margin:4px 2px 0;font-size:8px;line-height:1.5;color:var(--muted)}

/* One compact audio menu, with separate mute switches. */
#audio-settings-toggle{position:fixed;top:32px;right:136px;z-index:36;display:grid;place-items:center;width:44px;height:44px;padding:10px;border:1px solid #173f3514;border-radius:50%;background:#f8f7f2ed;box-shadow:0 2px 12px #173f350c;color:var(--ink)}
#audio-settings-toggle svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
#audio-settings-toggle .audio-muted{display:none}#audio-settings-toggle[data-muted=true] .audio-waves{display:none}#audio-settings-toggle[data-muted=true] .audio-muted{display:block}#audio-settings-toggle[data-muted=true]{color:var(--muted)}
#audio-settings-toggle:hover{background:var(--paper)}
#audio-settings{position:fixed;inset:84px 34px auto auto;margin:0;width:286px;max-width:calc(100vw - 32px);padding:22px;border:1px solid #173f3514;border-radius:26px;background:var(--paper);color:var(--ink);box-shadow:0 12px 36px #173f3524}
#audio-settings::backdrop{background:transparent}.audio-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.audio-heading h2{font-family:var(--font-display);font-size:20px;font-weight:500;margin:0}.audio-heading button{width:36px;height:36px;font-size:24px;border-radius:50%}
.audio-option{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;min-height:54px;padding:10px 0;border-top:1px solid var(--line);text-align:left;font-size:13px}
.audio-switch{position:relative;display:block;flex-shrink:0;width:42px;height:25px;border-radius:20px;background:#dce0d7;transition:background .18s}
.audio-switch::after{content:'';position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:var(--paper);box-shadow:0 1px 3px #173f3522;transition:transform .18s}
.audio-option[aria-checked=true] .audio-switch{background:var(--ink)}.audio-option[aria-checked=true] .audio-switch::after{transform:translateX(17px)}
#music-status{font-size:11px;line-height:1.8;color:var(--muted);min-height:20px;margin:12px 0 0}
@media(max-width:700px){#audio-settings-toggle{top:max(22px,env(safe-area-inset-top));right:103px}#audio-settings{inset:max(76px,calc(env(safe-area-inset-top) + 52px)) 20px auto auto;padding:20px}}
@media(prefers-reduced-motion:reduce){.audio-switch,.audio-switch::after{transition:none}}

/* Contextual region names remain secondary to the interactive district pills. */
.area-label{font-size:16px;letter-spacing:4px;line-height:1.4;opacity:.82}
@media(max-width:700px){.area-label{font-size:12px;letter-spacing:3px}}

.price .price-reference-link{display:block;font-size:11px;font-weight:400;margin-top:9px;color:var(--muted);text-underline-offset:3px}.price .price-reference-note{display:block;font-size:11px;font-weight:400;line-height:1.7;margin-top:8px;color:var(--muted)}
