.map-dock{position:absolute;left:22px;right:22px;bottom:20px;z-index:8;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;pointer-events:none}.map-card{width:320px;max-width:calc(50% - 12px);padding:12px;background:#f6f7efed;border:1px solid #87978b55;border-radius:18px;box-shadow:0 6px 25px #1b392515;backdrop-filter:blur(12px);pointer-events:auto;color:#263f36}.map-detail-card{width:360px}.map-slide-tabs{position:relative;display:grid;grid-template-columns:repeat(var(--count),1fr);isolation:isolate;--active:0}.map-slide-tabs button{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-width:0;min-height:38px;padding:8px 4px;border:0;border-radius:8px;background:transparent;color:#64736a;font-size:12px;cursor:pointer;transition:color .3s}.map-slide-tabs button[aria-selected=true]{color:#fff}.map-slide-tabs button:focus-visible{outline:2px solid #9bbb40;outline-offset:-2px}.map-tab-slider{position:absolute;inset:0 auto 0 0;width:calc(100% / var(--count));border-radius:9px;background:#263f36;box-shadow:0 1px 2px #0002;transform:translateX(calc(var(--active) * 100%));transition:transform .75s cubic-bezier(.22,1,.36,1);pointer-events:none}.map-card-content{padding:12px 6px 3px;max-height:235px;overflow:auto;font-size:14px;line-height:1.65;overflow-wrap:anywhere}.map-card-content p{margin:0 0 10px}.map-card-content .map-card-note{font-size:12px;line-height:1.7;color:#69766c;margin-bottom:0}.map-card-stat{display:flex;gap:14px;align-items:baseline;margin-bottom:9px}.map-card-stat strong{font-size:29px;font-weight:650;letter-spacing:-1px;white-space:nowrap}.map-card-stat small{font-size:12px;letter-spacing:0}.map-card-stat>span{font-size:12px}.map-card-kicker{font:11px monospace;letter-spacing:1px;color:#6b796f;margin:2px 6px 5px}.map-detail-card h3{font-size:21px;line-height:1.35;margin:0 6px 13px;letter-spacing:-.5px}.map-card-content dl{margin:10px 0 0}.map-card-content dl>div{display:grid;grid-template-columns:70px 1fr;gap:10px;border-top:1px solid #becabd80;padding:7px 0}.map-card-content dt{font-size:12px;color:#6b796f}.map-card-content dd{font-size:13px;margin:0}.map-card-content:focus-visible{outline:2px solid #90a875;outline-offset:1px}
.city-project-button{position:absolute;pointer-events:auto;display:flex;align-items:center;justify-content:center;width:144px;height:46px;padding:0;overflow:hidden;border:1px solid #263f36;border-radius:999px;background:#f6f7ef;color:#263f36;font-size:14px;font-weight:650;transform:translate(-50%,-50%);cursor:pointer;box-shadow:2px 3px 0 #263f3618}.city-project-button.align-left{transform:translate(0,-50%)}.city-project-button.align-right{transform:translate(-100%,-50%)}.city-button-fill{position:absolute;left:15px;top:calc(50% - 4px);width:8px;height:8px;border-radius:50%;background:#263f36;z-index:1;transition:transform .5s cubic-bezier(.16,1,.3,1)}.city-button-label{transform:translateX(8px);transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .3s}.city-button-reveal{position:absolute;inset:0;z-index:2;display:flex;justify-content:center;align-items:center;color:#e3fa82;opacity:0;transform:translateX(46px);transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .3s}.city-project-button:is(:hover,:focus-visible) .city-button-fill{transform:scale(38)}.city-project-button:is(:hover,:focus-visible) .city-button-label{transform:translateX(46px);opacity:0}.city-project-button:is(:hover,:focus-visible) .city-button-reveal{transform:translateX(0);opacity:1}.city-project-button:focus-visible{outline:3px solid #c9e858;outline-offset:3px}
.bay-keyboard-target{position:absolute;pointer-events:none;opacity:0;width:1px;height:1px;overflow:hidden;padding:0;border:0;transform:translate(-50%,-50%)}.bay-keyboard-target:focus-visible{opacity:1;width:auto;height:auto;padding:8px 12px;border-radius:8px;background:#263f36;color:#fff;outline:2px solid #e0fc7b;z-index:10}.bay-hover-title{position:absolute;right:24px;top:26px;z-index:7;max-width:65%;padding:12px 17px;border-radius:12px;background:#f6f7efdc;color:#263f36;font-size:22px;font-weight:700;letter-spacing:-.5px;pointer-events:none;box-shadow:0 4px 20px #263f3610}.bay-hover-title[hidden]{display:none}.typing-cursor{animation:map-cursor 1s steps(1) infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@keyframes map-cursor{50%{opacity:0}}
@media(max-width:700px){.portfolio-map{height:820px;min-height:820px}.portfolio-map.has-project-detail{height:1080px}.map-dock{left:10px;right:10px;bottom:10px;gap:10px;flex-direction:column;align-items:stretch}.map-card,.map-detail-card{width:100%;max-width:none;padding:10px}.map-detail-card{display:none}.has-project-detail .map-detail-card{display:block}.map-filter-card .map-card-content{padding-top:9px}.map-card-content{max-height:195px}.map-card-stat{margin-bottom:5px}.map-card-stat strong{font-size:24px}.map-card-content p{margin-bottom:6px}.map-card-content .map-card-note{font-size:12px}.map-detail-card h3{font-size:19px;margin-bottom:8px}.map-slide-tabs button{min-height:38px}.city-project-button{width:125px;height:42px;font-size:13px}.bay-hover-title{top:64px;right:12px;max-width:calc(100% - 24px);font-size:19px}}
.bay-plan-legend{position:absolute;left:24px;top:88px;z-index:7;max-width:270px;padding:13px 16px;background:#f6f7efed;border:1px solid #87978b55;border-radius:12px;color:#263f36;pointer-events:none}.bay-plan-legend[hidden]{display:none}.bay-plan-legend strong{font-size:12px}.bay-plan-legend>div{display:flex;gap:12px;flex-wrap:wrap;margin:9px 0}.bay-plan-legend span{display:inline-flex;align-items:center;gap:5px;font-size:12px}.bay-plan-legend i{width:9px;height:9px;border-radius:3px}.bay-plan-legend small{font-size:10px;color:#69766c}@media(max-width:700px){.bay-plan-legend{left:12px;top:116px;padding:9px 12px;max-width:230px}}
.map-filter-card{width:360px}.map-use-breakdown section{margin:10px 0 15px}.map-use-breakdown h4{display:flex;align-items:center;gap:6px;margin:0;padding:6px 0;border-bottom:1px solid #becabd80;font-size:12px}.map-use-breakdown h4>span{margin-left:auto;font-size:11px;font-weight:500}.map-use-breakdown i{width:9px;height:9px;border-radius:3px}.map-use-breakdown ul{list-style:none;padding:0;margin:5px 0 0}.map-use-breakdown li{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-size:11px}.map-use-breakdown li strong{font-weight:500;white-space:nowrap}.map-card-content .map-area-pending{font-size:11px;color:#74694c;margin:0 0 7px}.map-housing-note{font-size:12px;margin-top:12px!important}.bay-plan-labels{position:absolute;inset:0;pointer-events:none;z-index:6;overflow:hidden}.bay-plan-labels span{position:absolute;transform:translate(-50%,-50%);text-align:center;font-size:10px;line-height:1.4;color:#203f32;white-space:nowrap;text-shadow:0 1px 2px #fff,0 0 4px #fff}.bay-plan-labels small{display:block;font-size:9px}.bay-plan-legend small{display:block;line-height:1.6}.bay-plan-legend em{font-style:normal;opacity:.75;font-size:10px}@media(max-width:700px){.map-filter-card{width:100%}.bay-plan-labels span{font-size:9px}.bay-plan-labels small{font-size:8px}}
@media(prefers-reduced-motion:reduce){.map-tab-slider,.city-button-fill,.city-button-label,.city-button-reveal{transition:none}.typing-cursor{animation:none}}

/* Filters grow upward from the dock; only the detail panel keeps its own scroll. */
.map-filter-card .map-card-content{max-height:none;overflow:visible}
.map-use-breakdown.is-summary section{margin:0}
.map-use-breakdown.is-summary{margin:4px 0 12px}
.map-use-breakdown.is-summary h4{padding:7px 0}
.city-project-button{height:36px}
@media(max-width:700px){.city-project-button{height:34px}}
.bay-plan-labels span{font-size:13px;font-weight:700;color:#172c24;text-shadow:0 1px 2px #fff,0 0 4px #ffffffe6}
.bay-plan-labels small{font-size:11px;font-weight:600}
@media(max-width:700px){.bay-plan-labels span{font-size:11px}.bay-plan-labels small{font-size:10px}}
@media(min-width:701px){.portfolio-map{height:900px;min-height:900px}}
@media(min-width:701px) and (max-width:1200px){.map-filter-card,.map-detail-card{width:300px}.map-card-stat{gap:8px}.map-card-stat strong{font-size:26px}}

/* A square geographic slice drawn as isometric, single-colour pillars. */
.shenzhen-flat-map{position:absolute;inset:12px 0 auto;z-index:1;display:block;width:100%;height:calc(100% - 205px);overflow:visible}
.portfolio-map[data-mode=city]{height:760px;min-height:760px;background:transparent;border:0;border-radius:0;box-shadow:none;overflow:hidden}
.portfolio-map[data-mode=city]:after{display:none}
/* Shared city/bay information panels follow the site's hard-edged controls. */
.map-card{background:var(--paper,#f5f5ef);border:2px solid #20221d;border-radius:0;box-shadow:5px 5px 0 #20221d;backdrop-filter:none}
.map-slide-tabs{gap:0;margin-bottom:4px}
.map-slide-tabs button{border:1px solid #20221d;border-radius:0;color:#20221d;transition:background-color .2s,color .2s}
.map-slide-tabs button+button{border-left:0}
.map-slide-tabs button[aria-selected=true]{color:#20221d;font-weight:700}
.map-slide-tabs button:not([aria-selected=true]):hover{background:#20221d0c}
.map-slide-tabs button:focus-visible{outline:2px solid #20221d;outline-offset:-4px}
.map-tab-slider{border-radius:0;background:var(--lime,#d8ff3e);box-shadow:3px 3px 0 #20221d}
.portfolio-map[data-mode=city] canvas{visibility:hidden;opacity:0;pointer-events:none}
.portfolio-map[data-mode=bay] .shenzhen-flat-map{visibility:hidden;pointer-events:none}
.terrain-legend text{font:15px Arial,"Microsoft YaHei",sans-serif;fill:#33483b}
.portfolio-map[data-mode=city] .city-project-button{background:#f8faf0f2}
.city-terrain [data-district]{transition:opacity .25s}
@media(min-width:701px){.portfolio-map[data-mode=bay]{height:900px;min-height:900px}}
@media(max-width:700px){.portfolio-map[data-mode=city]{min-height:600px}.shenzhen-flat-map{top:0;height:350px}.terrain-legend text{font-size:30px}.portfolio-map[data-mode=city] .city-project-button{width:110px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.city-terrain [data-district]{transition:none}}
.bay-map-labels{position:absolute;inset:0;z-index:3;pointer-events:none}
.bay-map-labels[hidden],.portfolio-map[data-mode=city] .bay-map-labels{display:none}
.bay-map-labels span{position:absolute;transform:translate(-50%,-50%);padding:3px 7px;background:#fffdf2ed;border:1px solid #20221d;border-radius:4px;color:#20221d;font:700 12px/1.4 Arial,"Microsoft YaHei",sans-serif;white-space:nowrap;box-shadow:1px 2px 0 #20221d24}
.bay-map-labels .is-landmark{font-size:14px;border-width:1.5px}
@media(max-width:700px){.bay-map-labels span{font-size:10px;padding:2px 4px}.bay-map-labels .is-landmark{font-size:11px}}

/* Icon-only project handles: small visible badges, generous touch targets. */
.bay-keyboard-target.bay-hotspot{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;overflow:visible;opacity:1;background:transparent;pointer-events:auto;cursor:pointer;color:#20221d;z-index:2;outline:none}
.bay-hotspot-face{position:relative;display:block;width:14px;height:14px;overflow:hidden;border:1.5px solid #000;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0002;transition:transform .2s,box-shadow .2s}
.bay-hotspot-face::after{content:"";position:absolute;left:50%;top:50%;z-index:2;width:6px;height:6px;border-radius:50%;background:#000;transform:translate(-50%,-50%)}
.bay-hotspot-ring{position:absolute;inset:0;z-index:1;border:1px solid #000;border-radius:50%;pointer-events:none;animation:bay-hint-ripple 3.2s cubic-bezier(.2,.65,.35,1) var(--hint-delay,0s) infinite;animation-play-state:paused}
.bay-hints-running .bay-hotspot-ring{animation-play-state:running}
.bay-hotspot:is(:hover,:focus-visible,.is-active) .bay-hotspot-face{transform:scale(1.2);box-shadow:0 0 0 3px #fff,0 0 0 4px #000}
.bay-keyboard-target.bay-hotspot:focus-visible{outline:2px solid #20221d;outline-offset:3px;border-radius:50%;z-index:5}
.bay-hotspot:is(:hover,:focus-visible,.is-active) .bay-hotspot-ring{animation:none;opacity:0}
.bay-hotspot.model-marker-pending{visibility:hidden;pointer-events:none}
.bay-hotspot-leader{position:absolute;height:1px;background:#20221d88;transform-origin:left center;pointer-events:none;z-index:1}
.bay-hotspot-leader[hidden]{display:none}
.has-bay-selection .bay-hotspot:not(.is-active){opacity:0;pointer-events:none}
.has-bay-selection .bay-hotspot-leader{opacity:0}
.has-bay-selection .bay-hotspot-ring{animation-play-state:paused;opacity:0}
@keyframes bay-hint-ripple{0%{transform:scale(.55);opacity:.85}62%,100%{transform:scale(1);opacity:0}}
@media(pointer:coarse){.bay-keyboard-target.bay-hotspot{width:44px;height:44px}}
@media(prefers-reduced-motion:reduce){.bay-hotspot-ring{animation:none;display:none}.bay-hotspot-face{transition:none}}
.bay-label-leader{position:absolute;inset:0;pointer-events:none;z-index:0}
.bay-label-leader svg{display:block;width:100%;height:100%;overflow:visible}
.bay-label-leader polyline{fill:none;stroke:#20221d88;stroke-width:1;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.bay-label-leader[hidden]{display:none}
.bay-map-labels span{z-index:1}
