:root{font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:#203446;background:#f3f5f7;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer;border:1px solid #d6dfe5;background:#fff;color:inherit;border-radius:8px;padding:10px 14px;transition:background .18s}button:hover{background:#eef3f7}button:focus-visible{outline:3px solid #b87b2b;outline-offset:3px}header{height:100px;display:flex;align-items:center;gap:30px;padding:20px 36px;background:#fff;border-bottom:1px solid #dde3e9}.brand{display:flex;align-items:center;gap:14px}.mark{display:grid;place-items:center;width:48px;height:48px;border:1px solid #b59158;background:#172d40;color:#e2bd7a;font-size:26px}.brand small{font-size:10px;letter-spacing:2px;color:#7d8791}.brand h1{font-size:23px;letter-spacing:3px;margin:3px 0}.header-note{font-size:14px;color:#7c8993;margin-left:auto}header button{font-size:14px}main{display:grid;grid-template-columns:minmax(0,1fr) 395px;min-height:calc(100vh - 153px)}.workspace{padding:30px 28px 16px;min-width:0}.map-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.eyebrow{font-size:11px;letter-spacing:1.7px;color:#8b774f;font-weight:600}h2{font-size:25px;font-weight:550;margin:10px 0}p{font-size:14px;line-height:1.7}.map-top p{color:#71828e;margin:9px 0}.pill{font-size:12px;padding:7px 10px;border:1px solid #cdd8df;border-radius:20px;white-space:nowrap;color:#73828d}.canvas-wrap{position:relative;height:min(58vh,600px);min-height:390px;background:radial-gradient(ellipse,#fff 10%,#e7edf2 100%);border-radius:12px;margin-top:12px;overflow:hidden;border:1px solid #dce4eb}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}canvas:active{cursor:grabbing}.compass{position:absolute;left:22px;top:20px;text-align:center;font-size:25px;color:#697c8b;pointer-events:none}.compass span{display:block;font-size:11px}.view-controls{position:absolute;right:16px;top:16px;display:flex;gap:5px}.view-controls button{font-size:14px;padding:7px 10px;box-shadow:0 3px 10px #17354c08}.legend{position:absolute;bottom:18px;left:22px;display:flex;gap:17px;font-size:12px;background:#ffffffd9;padding:9px 12px;border-radius:6px}.legend span{display:flex;align-items:center;gap:6px}i{width:9px;height:9px;display:inline-block;background:#7799b5;border-radius:2px}i.commercial{background:#b9bec2}i.selected{background:#c6a15c}.building-strip{display:flex;align-items:flex-start;gap:15px;margin-top:20px}.building-strip>span{white-space:nowrap;font-size:13px;padding-top:10px;color:#788792}#buildingButtons{display:flex;gap:6px;flex-wrap:wrap}#buildingButtons button{font-size:12px;padding:8px 10px}button.active{background:#203a50!important;border-color:#203a50;color:white!important}.disclaimer{font-size:12px;color:#7e8b95;line-height:1.7;margin-bottom:0}aside{background:#fff;border-left:1px solid #dde3e9;padding:29px 24px}.title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.title-row h2{font-size:24px}.badge{font-size:12px;border-radius:5px;background:#edf3f7;padding:5px 8px;color:#4c708c}.detail-head p{color:#788894;font-size:13px;margin:0 0 22px}#plans{display:flex;gap:7px;flex-wrap:wrap}#plans button{font-size:14px;padding:9px 12px}.plan-meta{display:flex;justify-content:space-between;align-items:center;margin:24px 0 15px}.plan-meta strong{font-size:28px;display:block;font-weight:550}.plan-meta span{font-size:13px;color:#7e8b93;display:block;margin-top:5px}.plan-image{display:block;border:1px solid #e1e6eb;width:100%;padding:10px;border-radius:8px;background:#fbfbfa}.plan-image img{width:100%;height:215px;object-fit:contain;display:block}.plan-image span{font-size:12px;color:#82909a;display:block;margin:10px 0 3px}#variants{display:flex;gap:6px;margin-top:12px}#variants button{font-size:12px;padding:7px 10px}.notes{color:#71808b;font-size:13px}.article-info{border-top:1px solid #e2e7eb;padding-top:20px;margin-top:24px}.article-info>span{font-size:12px;color:#8f7952}.article-info>div{display:flex;justify-content:space-between}.article-info p{font-size:12px;color:#78838c}.article-info strong{font-size:24px;font-weight:500;color:#314b5e}.article-info small{font-size:11px;line-height:1.7;color:#8b969f;display:block}footer{display:flex;justify-content:space-between;padding:17px 35px;background:#eaf0f4;color:#82919c;gap:20px;font-size:11px}dialog{width:min(1150px,95vw);max-height:95vh;padding:18px;border:0;border-radius:12px;box-shadow:0 20px 100px #0004}dialog::backdrop{background:#102331b8}.dialogbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.image-scroll{overflow:auto;max-height:75vh}.image-scroll img{width:100%;min-width:650px;display:block}dialog p{font-size:12px;color:#7c8994;margin-bottom:0}@media(min-width:1500px){main{grid-template-columns:minmax(0,1fr) 450px}.workspace{padding:35px 45px}.canvas-wrap{height:62vh}}@media(max-width:950px){main{grid-template-columns:minmax(0,1fr) 330px}header{padding:18px 22px}.header-note{display:none}header button{margin-left:auto}.workspace{padding:24px 16px}.map-top h2{font-size:21px}.pill{display:none}aside{padding:25px 18px}.canvas-wrap{min-height:410px}.legend{gap:10px;left:10px;font-size:11px}}@media(max-width:700px){header{height:85px;padding:15px}.brand h1{font-size:19px}.brand small{font-size:8px}.mark{width:40px;height:40px}.brand{gap:10px}header button{font-size:12px;padding:8px}main{display:block}.workspace{padding:22px 14px 16px}.canvas-wrap{height:440px;min-height:0}.map-top p{font-size:12px}.compass{top:17px;left:15px}aside{border-left:0;border-top:1px solid #dde3e9;padding:24px 20px}.plan-image img{height:auto;max-height:340px}.building-strip{gap:8px}.building-strip>span{font-size:12px}footer{padding:15px;display:block;line-height:1.8}footer span{display:block}.article-info{margin-top:20px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

[hidden]{display:none!important}#buildingButtons button{font-size:14px}.detail-head p,.notes{font-size:14px}.brand small{font-size:12px;letter-spacing:1px}.eyebrow{font-size:12px}@media(max-width:700px){.brand small{font-size:12px;letter-spacing:0}.brand h1{letter-spacing:1px}.canvas-wrap{height:380px}}

.map-warning{position:absolute;top:64px;right:16px;background:#fff5de;color:#896120;border:1px solid #e3cf9f;padding:6px 9px;border-radius:5px;font-size:12px;pointer-events:none}
.labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.building-label{position:absolute;left:0;top:0;pointer-events:auto;white-space:nowrap;padding:5px 7px;background:#fffffff0;border:1px solid #9badb9;border-radius:5px;box-shadow:0 3px 8px #243e5420;font-size:12px}.building-label strong{font-size:14px;margin-right:5px}.building-label span{color:#6d7b85}.building-label.is-selected{background:#203a50;border-color:#dec089;color:#fff}.building-label.is-selected span{color:#e8cf9f}.view-controls,.map-warning,.compass,.legend{z-index:40}.scene-status{position:absolute;inset:25% 10% auto;background:white;padding:20px;z-index:50;border:1px solid #cca263}.canvas-wrap{height:580px;min-height:440px}.map-warning{background:#ffffffdb;color:#5c7385;border-color:#ccd8df}.header-note{margin-left:auto}header{gap:16px}header button{white-space:nowrap}#reference{margin-left:auto}.header-note+#reference{margin-left:0}@media(max-width:950px){#reference{margin-left:auto}.canvas-wrap{height:570px}}@media(max-width:700px){header{height:auto;flex-wrap:wrap;gap:8px}.brand{width:100%;margin-bottom:5px}header button,#reference{margin-left:0}.canvas-wrap{height:470px;min-height:0}.building-label{padding:4px 5px}.building-label strong{font-size:12px}.building-label span{font-size:11px}}

.building-label::after{content:"";position:absolute;width:1px;height:var(--stem,5px);background:#71899699;top:100%;left:50%;pointer-events:none}.labels.compact .building-label:not(.is-selected) span{display:none}.labels.compact .building-label strong{margin-right:0}.labels.compact .building-label.is-selected strong{margin-right:5px}@media(max-width:1100px){main{display:block}.workspace{padding:24px}.canvas-wrap{height:550px}aside{border-left:0;border-top:1px solid #dde3e9}.plan-image img{height:340px}.header-note{display:none}#reference{margin-left:auto}}@media(max-width:700px){.workspace{padding:20px 14px}.canvas-wrap{height:500px}#reference{margin-left:0}}

.building-label::after{transform-origin:top;transform:rotate(var(--stem-angle,0deg))}

.sun-panel{margin:16px 0;background:#fff;border:1px solid #dce4eb;border-radius:12px;padding:18px 20px}.sun-heading{display:flex;align-items:center;justify-content:space-between}.sun-heading h3{margin:4px 0 14px;font-size:20px;font-weight:550}.sun-heading output{font-variant-numeric:tabular-nums;font-size:32px;color:#a87526;letter-spacing:1px}.sun-row{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.sun-row>label{display:flex;flex-direction:column;gap:6px;font-size:14px}.sun-row input,.sun-settings input{font:inherit;border:1px solid #cdd8df;border-radius:6px;padding:8px;background:#f8fafb;color:#203446}.season-buttons{display:flex;gap:5px}.sun-row button{padding:9px 12px;font-size:14px}#sunPlay{margin-left:auto;color:#fff;background:#263f52;border-color:#263f52;min-width:124px}.timeline-label{display:flex;justify-content:space-between;font-size:14px;margin:18px 0 5px}.timeline-label span{color:#80909d;font-size:12px}.sun-time{width:100%;accent-color:#b08b45;cursor:pointer;height:28px;margin:0}.time-marks{display:flex;justify-content:space-between;color:#82919d;font-size:12px}.sun-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.sun-bottom p{font-size:14px;color:#6e7e89;margin:14px 0}.sun-toggles{display:flex;gap:12px;font-size:14px}.sun-toggles label{display:flex;gap:5px;align-items:center;cursor:pointer}.sun-toggles input{accent-color:#263f52;width:16px;height:16px}.sun-assumptions{border-top:1px solid #e5ebef;padding-top:12px;font-size:13px;color:#748490}.sun-assumptions summary{cursor:pointer;font-size:14px}.sun-assumptions p{font-size:13px}.sun-assumptions a{color:#547e9a}.sun-settings{display:flex;gap:14px;flex-wrap:wrap}.sun-settings label{display:flex;flex-direction:column;gap:6px;font-size:13px}.sun-settings input{width:100px}#northArrow{display:block;font-size:25px;font-weight:500}.compass span{font-size:12px}.canvas-wrap.hide-labels #labels{display:none}.sun-panel:has(#sunPlay[aria-pressed="true"]){border-color:#c5ad7c}@media(max-width:700px){.sun-panel{padding:16px 12px}.sun-row{gap:8px}.sun-heading output{font-size:28px}#sunPlay{margin-left:0}.sun-toggles{gap:9px}.sun-bottom{gap:0}.sun-settings{gap:10px}}
@media(min-width:850px){.sun-panel{display:grid;grid-template-columns:minmax(170px,1fr) auto;column-gap:22px;row-gap:0;padding:14px 20px}.sun-heading h3{margin-bottom:0}.sun-heading output{margin:0 0 0 18px;font-size:28px}.sun-row{justify-content:flex-end}.sun-row>label{font-size:12px}.sun-panel>.timeline-label,.sun-panel>.sun-time,.sun-panel>.time-marks,.sun-panel>.sun-bottom,.sun-panel>.sun-assumptions{grid-column:1/-1}.timeline-label{margin-top:12px}.sun-bottom p{margin:10px 0}.sun-assumptions{padding-top:9px}}
/* Mobile H5 layout and safe touch targets. */
html{scroll-behavior:smooth;scroll-padding-top:16px}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,input,summary{touch-action:manipulation}.mobile-nav{display:none}#floorPlans:focus{outline:none}
@media(max-width:700px){
 body{padding-bottom:calc(72px + env(safe-area-inset-bottom));-webkit-text-size-adjust:100%}
 header{padding:14px max(14px,env(safe-area-inset-right)) 12px max(14px,env(safe-area-inset-left));gap:8px}.brand small{font-size:10px}.brand h1{font-size:21px}.brand{margin:0 0 4px}header button{flex:1;min-height:44px;font-size:14px;padding:8px}
 .workspace{padding:18px 12px 14px}.map-top h2{font-size:23px}.map-top p{font-size:14px;line-height:1.65}.eyebrow{font-size:12px}
 .sun-panel{padding:14px 12px;margin:12px 0}.sun-heading h3{margin-bottom:10px}.sun-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:end}.sun-row>label{grid-column:1;min-width:0}.sun-row input{width:100%;max-width:100%;min-width:0;min-height:44px;font-size:16px}.season-buttons{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(3,1fr)}.sun-row button{min-height:44px;font-size:14px}#sunPlay{grid-column:2;grid-row:1;min-width:0;width:100%;margin:0}.sun-time{height:44px}.sun-toggles{width:100%;justify-content:space-between;gap:4px;flex-wrap:wrap}.sun-toggles label{min-height:44px}.sun-toggles input{width:20px;height:20px}.sun-bottom p{width:100%;margin:9px 0 0;min-height:42px}.sun-assumptions summary{padding:10px 0;min-height:44px}.sun-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sun-settings label:first-child{grid-column:1/-1}.sun-settings input{font-size:16px;width:100%;min-height:44px}
 .canvas-wrap{height:clamp(390px,65svh,560px);min-height:0;scroll-margin-top:12px}.view-controls{gap:4px;right:9px;top:10px}.view-controls button{min-width:40px;min-height:44px;padding:7px;font-size:14px}.compass{left:10px;top:12px}.compass span{font-size:10px}.map-warning{top:62px;right:9px;font-size:11px}.legend{left:8px;right:8px;bottom:10px;justify-content:center;gap:10px;padding:9px 6px;font-size:11px}.building-label{min-width:36px;min-height:32px;padding:6px}.building-label strong{font-size:13px}
 .building-strip{display:block;margin-top:14px}.building-strip>span{display:block;margin-bottom:9px;padding:0;font-size:14px}#buildingButtons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}#buildingButtons button{min-height:44px;padding:7px 4px;font-size:13px;white-space:nowrap}.disclaimer{font-size:12px}
 aside{padding:22px 16px;scroll-margin-top:12px}.title-row h2{font-size:26px}#plans button,#variants button{min-height:44px;font-size:15px}#plans{gap:8px}.plan-image img{height:auto;max-height:380px}.plan-image{padding:6px}.plan-meta strong{font-size:30px}.detail-head p,.notes{font-size:14px}.article-info small{font-size:12px}
 .mobile-nav{display:flex;position:fixed;z-index:70;bottom:0;left:0;right:0;gap:8px;padding:10px max(12px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#fffffff5;border-top:1px solid #d7e1e7;box-shadow:0 -3px 16px #203a5010;backdrop-filter:blur(12px)}.mobile-nav a{flex:1;display:grid;place-items:center;min-height:44px;border-radius:8px;text-decoration:none;color:#35536a;font-size:14px;background:#edf2f5}.mobile-nav a:last-child{color:#fff;background:#203a50}
 dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0;padding:calc(14px + env(safe-area-inset-top)) 12px calc(14px + env(safe-area-inset-bottom));overflow:auto}.dialogbar{gap:12px}.dialogbar strong{font-size:15px;line-height:1.5}.dialogbar button{min-width:72px;min-height:44px}.image-scroll{max-height:calc(100dvh - 150px);overflow:auto;-webkit-overflow-scrolling:touch}.image-scroll img{min-width:0;width:100%;max-width:none}dialog p{font-size:13px}
 footer{font-size:12px;padding:16px}
}
@media(max-width:360px){.view-controls button{min-width:35px;padding:5px}.legend{gap:6px;font-size:10px}.building-label strong{font-size:12px}.sun-heading output{font-size:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

#buildingButtons small{display:block;font-size:12px;line-height:1.5;color:#718493}#buildingButtons [data-kind="commercial"]{border-color:#cbbda7;background:#faf6ef}#buildingButtons .active small{color:#e3edf4}.building-label em{display:block;font-style:normal;font-size:10px;line-height:1.3;color:#907345}.building-label.is-selected em{color:#e8cf9f}.building-classification{font-size:13px;color:#806b4d;margin:14px 0 0}

#wechatLogin{color:#187849;border-color:#bcdacb}#loginDialog{width:min(460px,calc(100vw - 24px));height:auto;max-height:85dvh;margin:auto;padding:22px;border-radius:12px}#loginMessage{font-size:15px;line-height:1.8;color:#536b7c}#loginStart{background:#187849;color:#fff;min-height:44px;width:100%;margin-top:12px}#loginStart:disabled{opacity:.5;cursor:not-allowed}

#wechatQr{min-height:260px;display:grid;place-items:center;margin:6px auto}#wechatQr iframe{width:300px;height:400px;border:0;max-width:100%}#loginDialog #loginMessage,#loginDialog #loginHint{text-align:center}#loginDialog #loginHint{font-size:14px;color:#748490;margin:6px 0 10px}#loginDialog #loginStart{background:#187849;color:#fff;min-height:44px;width:100%;margin-top:8px}#loginDialog{width:min(420px,calc(100vw - 24px));padding:20px 22px}@media(max-width:700px){#loginDialog{width:calc(100vw - 24px);padding:16px}#wechatQr iframe{width:min(300px,80vw);height:min(400px,110vw)}}
