.twsr-map-engine{position:relative;width:100%;overflow:hidden;border:1px solid #d8ddd9;border-radius:16px;background:#f4f3ef;box-shadow:0 8px 24px rgba(41,60,65,.08)}.twsr-map-engine .maplibregl-canvas{outline:0}.twsr-map-engine__status{position:absolute;z-index:4;top:50%;left:50%;max-width:80%;padding:10px 14px;border-radius:10px;color:#40505a;background:rgba(255,255,255,.94);font-size:14px;box-shadow:0 4px 14px rgba(22,39,45,.12);transform:translate(-50%,-50%);text-align:center}.twsr-map-engine__status.is-error{color:#8d2222;background:#fff2f2}.twsr-map-engine__region{position:absolute;z-index:4;top:16px;left:16px;max-width:190px;padding:9px 32px 9px 12px;border:1px solid #d7ddd9;border-radius:10px;background:rgba(255,255,255,.96);color:#263b45;font-weight:600;box-shadow:0 3px 12px rgba(29,50,59,.12)}.twsr-map-engine__legend{position:absolute;z-index:4;bottom:18px;left:16px;display:flex;gap:7px;align-items:center;max-width:calc(100% - 84px);padding:8px 10px;border:1px solid rgba(215,221,217,.9);border-radius:10px;background:rgba(255,255,255,.92);box-shadow:0 3px 12px rgba(29,50,59,.1);color:#50616b;font-size:12px}.twsr-map-engine__legend i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#e89b3c}.twsr-map-engine .maplibregl-ctrl-group{overflow:hidden;border:1px solid #d7ddd9;border-radius:10px;box-shadow:0 3px 12px rgba(29,50,59,.12)}.twsr-map-engine .maplibregl-ctrl button{width:34px;height:34px}.twsr-map-engine .maplibregl-ctrl-attrib{border-radius:8px 0 0 0;background:rgba(255,255,255,.78)}

.twsr-map-engine__layers{position:absolute;left:10px;bottom:10px;z-index:2;background:#fffdf8e8;border:1px solid #d8d2c7;border-radius:6px;padding:6px 8px;font-size:12px}.twsr-map-engine__layers label{display:block;cursor:pointer}


/* D6.5 full-page map workbench. The map intentionally breaks out of a WordPress content column. */
.twsr-map-engine--workbench{width:100vw!important;max-width:none!important;height:100svh;min-height:640px!important;margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;border:0;border-radius:0;box-shadow:none}
.twsr-map-engine--workbench .twsr-map-engine__region{left:368px;top:16px}
.twsr-map-engine--workbench .twsr-map-engine__legend{left:368px;bottom:18px}
.twsr-map-engine--workbench .twsr-map-engine__layers{left:auto;right:12px;bottom:12px;z-index:4;padding:8px 10px;border-radius:9px;box-shadow:0 4px 16px rgba(29,50,59,.14)}
.twsr-map-engine__workbench{position:absolute;z-index:5;top:16px;bottom:16px;left:16px;width:328px;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(215,221,217,.95);border-radius:14px;background:rgba(255,255,255,.97);box-shadow:0 8px 24px rgba(29,50,59,.18);transition:width .22s ease,transform .22s ease}
.twsr-map-engine__workbench-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 14px 10px;color:#263b45;font-size:16px}
.twsr-map-engine__workbench-toggle{width:30px;height:30px;border:1px solid #d6ddd9;border-radius:8px;background:#fff;color:#405560;font-size:23px;line-height:20px;cursor:pointer}
.twsr-map-engine__search-label{padding:0 14px 6px;color:#5b6870;font-size:12px;font-weight:600}
.twsr-map-engine__search{margin:0 14px;padding:10px 11px;border:1px solid #cdd7d2;border-radius:9px;background:#fff;color:#253b45;font:inherit;outline:none}
.twsr-map-engine__search:focus{border-color:#4f8baa;box-shadow:0 0 0 3px rgba(79,139,170,.16)}
.twsr-map-engine__search-hint{padding:9px 14px;color:#77848a;font-size:12px}
.twsr-map-engine__results{overflow:auto;padding:0 8px 10px}
.twsr-map-engine__result{display:block;width:100%;margin:0 0 4px;padding:10px 8px;border:0;border-radius:8px;background:transparent;color:#283e48;text-align:left;cursor:pointer}
.twsr-map-engine__result:hover,.twsr-map-engine__result:focus{background:#edf4f3;outline:0}.twsr-map-engine__result strong,.twsr-map-engine__result span{display:block}.twsr-map-engine__result strong{font-size:14px}.twsr-map-engine__result span,.twsr-map-engine__empty{margin-top:3px;color:#738087;font-size:12px}.twsr-map-engine__empty{padding:10px}
.twsr-map-engine__workbench.is-collapsed{width:48px}.twsr-map-engine__workbench.is-collapsed>*:not(.twsr-map-engine__workbench-head){display:none}.twsr-map-engine__workbench.is-collapsed .twsr-map-engine__workbench-head{padding:8px}.twsr-map-engine__workbench.is-collapsed strong{display:none}
@media (max-width:700px){.twsr-map-engine--workbench{min-height:100svh!important}.twsr-map-engine--workbench .twsr-map-engine__region{left:12px;top:12px;max-width:150px}.twsr-map-engine--workbench .twsr-map-engine__legend{display:none}.twsr-map-engine--workbench .twsr-map-engine__layers{right:10px;bottom:10px}.twsr-map-engine__workbench{top:auto;right:8px;bottom:8px;left:8px;width:auto;height:238px;min-height:0;border-radius:14px}.twsr-map-engine__workbench.is-collapsed{width:auto;height:48px}.twsr-map-engine__workbench-head{padding:10px 12px 6px}.twsr-map-engine__search-label{padding:0 12px 5px}.twsr-map-engine__search{margin:0 12px}.twsr-map-engine__search-hint{padding:6px 12px}.twsr-map-engine__results{padding:0 8px 8px}.twsr-map-engine__workbench.is-collapsed .twsr-map-engine__workbench-head{justify-content:flex-end}.twsr-map-engine__workbench.is-collapsed strong{display:none}}

/* D6.7 canvas map page: hide theme-generated page heading only when [twsr_map] is present. */
body.twsr-map-engine-page .entry-header,body.twsr-map-engine-page .page-header,body.twsr-map-engine-page h1.entry-title,body.twsr-map-engine-page h1.wp-block-post-title{display:none!important}body.twsr-map-engine-page .entry-content{margin-top:0!important;padding-top:0!important}body.twsr-map-engine-page .twsr-map-engine--workbench{margin-top:0!important}

/* D9 地圖頁固定頁首：只在掛有 [twsr_map] 短代碼的頁面套用，不影響網站其他頁面的頁首行為。
   頁首實際高度由 twsr-map-engine.js 量測後寫入 CSS 變數 --twsr-map-header-h，
   因為五種頁首版型（header_02/03/05/06/07）高度不同、手機版選單也可能換行，寫死高度會不準。 */
body.twsr-map-engine-page .site-header{position:fixed!important;top:0!important;left:0!important;right:0!important;z-index:40!important}
body.twsr-map-engine-page{padding-top:var(--twsr-map-header-h,72px)!important}
body.twsr-map-engine-page .twsr-map-engine--workbench{height:calc(100svh - var(--twsr-map-header-h,72px))!important;min-height:calc(100svh - var(--twsr-map-header-h,72px))!important}
body.admin-bar.twsr-map-engine-page .site-header{top:32px!important}
@media (max-width:782px){body.admin-bar.twsr-map-engine-page .site-header{top:46px!important}}

.twsr-map-engine__tower-picker{margin:2px 14px 10px;padding:9px;border:1px solid #d7dce4;border-radius:9px;background:#f9fafc;color:#425264;font-size:12px;font-weight:600}.twsr-map-engine__tower-picker label{display:block}.twsr-map-engine__tower-select{display:block;width:100%;margin-top:5px;padding:6px;border:1px solid #bdc9d5;border-radius:6px;background:#fff;color:#33475a;font:inherit}

/* D6.8 project information side panel */
.twsr-map-engine__project-detail{overflow:auto;margin:8px;padding:14px;border-top:1px solid #e4ddd4;color:#314550;font-size:13px}.twsr-map-engine__project-detail[hidden]{display:none}.twsr-map-engine__project-detail h2{margin:0 28px 10px 0;color:#263b45;font-size:18px}.twsr-map-engine__project-detail>div{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid #f0ece6}.twsr-map-engine__project-detail span{color:#71808a}.twsr-map-engine__project-detail strong{text-align:right}.twsr-map-engine__project-detail p{line-height:1.6}.twsr-map-engine__project-detail img{display:block;width:100%;height:auto;margin:10px 0;border-radius:9px}.twsr-map-engine__project-detail a{color:#b85700;font-weight:600}.twsr-map-engine__project-close{float:right;border:0;background:transparent;color:#61717b;font-size:24px;cursor:pointer}

.twsr-map-engine__project-detail h3{margin:14px 0 7px;color:#b85700;font-size:14px}.twsr-map-engine__listing{display:block;margin:6px 0;padding:8px;border:1px solid #ece4da;border-radius:8px;background:#fffaf4;text-decoration:none}.twsr-map-engine__listing strong,.twsr-map-engine__listing span{display:block}.twsr-map-engine__listing span{margin-top:2px;color:#b85700}

/* D7.3.5: a project detail is a distinct, scrollable workbench state. */
.twsr-map-engine__workbench.is-showing-project>.twsr-map-engine__search-label,.twsr-map-engine__workbench.is-showing-project>.twsr-map-engine__search,.twsr-map-engine__workbench.is-showing-project>.twsr-map-engine__search-hint,.twsr-map-engine__workbench.is-showing-project>.twsr-map-engine__results{display:none}
.twsr-map-engine__workbench.is-showing-project .twsr-map-engine__project-detail{flex:1;min-height:0;margin-top:0}
.twsr-map-engine__listing-status{color:#71808a}

/* D7.3.9: local mobile detail scroll containment; no document positioning. */
@media (max-width:700px){.twsr-map-engine__project-detail{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}}

/* D7.3.13: when a project is selected on mobile, keep only the detail sheet in the visible viewport.
   This deliberately does not fix body/html or the map canvas, so MapLibre layers and tower markers keep their normal lifecycle. */
@media (max-width:700px){.twsr-map-engine__workbench.is-showing-project{position:fixed!important;top:auto!important;right:8px!important;bottom:calc(56px + env(safe-area-inset-bottom))!important;left:8px!important;width:auto!important;height:238px!important;min-height:0!important;z-index:100!important}.twsr-map-engine__workbench.is-showing-project .twsr-map-engine__project-detail{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.twsr-map-engine__workbench.is-showing-project .twsr-map-engine__project-detail[hidden]{display:none!important}}

/* D8.1 地標/公園/布告彈出卡片樣式──小標籤顏色跟地圖上的點顏色對齊 */
.twsr-popup{padding:2px;max-width:220px;font-family:inherit}
.twsr-popup__badge{display:inline-block;margin-bottom:6px;padding:2px 8px;border-radius:99px;color:#fff;font-size:11px;font-weight:600;letter-spacing:.02em}
.twsr-popup__badge--landmark{background:#6f7f91}
.twsr-popup__badge--school{background:#8a6fb0}
.twsr-popup__badge--medical{background:#c85c5c}
.twsr-popup__badge--transit{background:#367eb6}
.twsr-popup__badge--market{background:#c58a2d}
.twsr-popup__badge--government{background:#5f7c6e}
.twsr-popup__badge--parking{background:#64748b}
.twsr-popup__badge--attraction{background:#9a6e55}
.twsr-popup__badge--park{background:#6f9c68}
.twsr-popup__title{display:block;margin-bottom:4px;color:#263b45;font-size:14px;line-height:1.35}
.twsr-popup__meta{color:#71808a;font-size:12px;line-height:1.55}
.twsr-popup__meta a{color:#b85700;font-weight:600;text-decoration:none}
.twsr-popup__notice-dates{color:#71808a;font-size:12px}
.twsr-map-engine .maplibregl-popup-content{border-radius:10px;padding:12px 14px;box-shadow:0 6px 20px rgba(29,50,59,.16)}
.twsr-map-engine .maplibregl-popup-close-button{font-size:16px;color:#8a97a0}

/* D8.1 建案側欄卡片細節優化 */
.twsr-map-engine__project-detail h3.twsr-map-engine__section-label{margin:12px 0 4px;color:#8a97a0;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-bottom:0}
.twsr-map-engine__project-detail figure{margin:10px 0}
.twsr-map-engine__project-detail figure:first-of-type img{box-shadow:0 6px 18px rgba(29,50,59,.14)}
.twsr-map-engine__project-detail figcaption{margin-top:5px;color:#8a97a0;font-size:11px}
.twsr-map-engine__project-detail ul{margin:6px 0 4px;padding-left:18px;color:#425560;line-height:1.7}
.twsr-map-engine__project-detail ul li{padding-left:2px}
.twsr-map-engine__project-detail ul li::marker{color:#b85700}

/* D8.2 載入畫面：轉圈動畫 + 中文提示，取代單純文字 */
.twsr-map-engine__status{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 26px}
.twsr-map-engine__spinner{width:26px;height:26px;border:3px solid #e4ddd4;border-top-color:#b85700;border-radius:50%;animation:twsr-map-engine-spin .8s linear infinite}
@keyframes twsr-map-engine-spin{to{transform:rotate(360deg)}}
.twsr-map-engine__status.is-error .twsr-map-engine__spinner{display:none}
.twsr-map-engine__status-text{font-size:14px}

/* D8.3 側邊欄／圖層工具視覺細節 */
.twsr-map-engine__region{appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%23708089'/></svg>");background-repeat:no-repeat;background-position:right 12px center}
.twsr-map-engine__region:hover{border-color:#b9c2c6}
.twsr-map-engine__region:focus{outline:none;border-color:#4f8baa;box-shadow:0 0 0 3px rgba(79,139,170,.16)}
.twsr-map-engine__layers{border-radius:10px;padding:9px 12px;box-shadow:0 3px 12px rgba(29,50,59,.1);background:rgba(255,255,255,.94);border-color:#d7ddd9}
.twsr-map-engine__layers label{display:flex;align-items:center;gap:7px;padding:3px 2px;color:#40505a;border-radius:6px;transition:background .12s ease}
.twsr-map-engine__layers label:hover{background:#f2f0eb}
.twsr-map-engine__layers input[type="checkbox"]{width:14px;height:14px;accent-color:#b85700;cursor:pointer}

/* D8.3 建案 hover 提示（滑鼠移過去顯示名稱，桌機限定，觸控裝置不會出現） */
.twsr-map-engine__hover-tip{position:absolute;z-index:6;pointer-events:none;max-width:200px;padding:7px 11px;border-radius:8px;background:rgba(255,255,255,.97);border:1px solid rgba(216,221,217,.9);color:#263b45;font-size:12px;line-height:1.4;box-shadow:0 4px 14px rgba(29,50,59,.16);transform:translate(-50%,-115%);white-space:nowrap}
.twsr-map-engine__hover-tip strong{display:block;font-size:13px;font-weight:600;color:#263b45}
.twsr-map-engine__hover-tip span{display:block;margin-top:2px;color:#71808a;font-size:11px}
.twsr-map-engine__hover-tip[hidden]{display:none}
@media (hover:none){.twsr-map-engine__hover-tip{display:none!important}}
