:root{--ink:#273231;--muted:#65716c;--paper:#f2f1e9;--line:rgba(44,55,49,.13);--accent:#8c7150;--glass:rgba(249,249,242,.88)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#d9e3e7;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #8c7150;outline-offset:4px}button{color:inherit}#viewport{position:fixed;inset:0}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}.header{position:absolute;z-index:5;top:27px;left:30px;right:30px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;pointer-events:auto}.brand svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:1.4}.brand b{display:block;font-size:18px;letter-spacing:3px;font-weight:600}.brand small{display:block;font-size:8px;letter-spacing:3px;margin-top:3px}.project{position:absolute;left:50%;transform:translateX(-50%);text-align:center;white-space:nowrap}.project>span{font-size:9px;letter-spacing:3.2px;color:#66726e}.project h1{font-size:19px;letter-spacing:3px;font-weight:500;margin:8px 0 0}.header-tools{display:flex;align-items:center;gap:13px;pointer-events:auto}.review-badge{font-size:10px;letter-spacing:1px;padding:7px 11px;border:1px solid var(--line);border-radius:20px}.icon-btn{height:38px;border:none;background:rgba(251,251,246,.65);backdrop-filter:blur(16px);border-radius:7px;padding:10px;display:flex;align-items:center;gap:7px;transition:background .2s}.icon-btn:hover{background:#fff}.icon-btn svg,.tool-btn svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px}.icon-btn span{font-size:11px;letter-spacing:1px}.lighting-panel{position:absolute;right:30px;top:100px;display:flex;align-items:center;gap:10px;z-index:4}.lighting-panel>span{font-size:10px;color:#5a6a64;letter-spacing:2px}.segmented{display:flex;padding:4px;border:1px solid rgba(255,255,255,.5);background:var(--glass);border-radius:8px;backdrop-filter:blur(18px);box-shadow:0 3px 18px #1f302808}.segmented button{padding:8px 11px;background:none;border:none;border-radius:5px;font-size:10px;color:#6d756d;transition:.25s}.segmented button.active{background:#323d38;color:#fff}.view-info{position:absolute;z-index:3;left:38px;bottom:154px;pointer-events:none;max-width:460px;text-shadow:0 1px 16px rgba(236,241,239,.85)}.view-eyebrow{display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:2.1px;color:#455953}.view-eyebrow i{width:5px;height:5px;background:#8f7551;border-radius:50%}.view-info h2{font-size:26px;line-height:1.2;letter-spacing:3px;font-weight:500;margin:11px 0}.view-info p{font-size:11px;color:#52625b;margin:0;letter-spacing:.4px}.height-tag{display:inline-block;font-size:9px;letter-spacing:1px;margin-top:14px;background:rgba(246,248,242,.68);padding:6px 9px;border-radius:4px;backdrop-filter:blur(10px)}.material-caption{position:absolute;right:35px;bottom:160px;display:flex;align-items:center;gap:11px;pointer-events:none}.swatch{width:33px;height:33px;border-radius:50%;background:linear-gradient(110deg,#393b37,#64625a 42%,#45433e 62%,#302f2c);border:1px solid #ffffff7a;box-shadow:1px 3px 9px #151c1b20}.material-caption small{font-size:9px;letter-spacing:2px;color:#53625c;display:block;margin-bottom:5px}.material-caption b{font-size:11px;font-weight:400;letter-spacing:.5px}.view-dock{position:absolute;z-index:6;left:50%;bottom:52px;transform:translateX(-50%);padding:8px;display:flex;align-items:center;background:var(--glass);border:1px solid rgba(255,255,255,.7);border-radius:13px;backdrop-filter:blur(22px);box-shadow:0 8px 45px #21332c19;max-width:calc(100% - 50px)}.view-buttons{display:flex;align-items:stretch;gap:3px}.view-button{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:103px;padding:10px 14px 11px;white-space:nowrap;border:none;border-radius:7px;background:transparent;font-size:11px;transition:.25s}.view-button>span{font-size:8px;letter-spacing:1px;color:#849087}.view-button:hover{background:#e9ede4}.view-button.active{color:#fff;background:#37443c}.view-button.active>span{color:#aebdaf}.dock-divider{height:35px;width:1px;background:var(--line);margin:0 9px}.tool-btn{width:45px;display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:none;border-radius:7px;padding:10px 4px}.tool-btn span{font-size:9px}.tool-btn[aria-pressed=true]{background:#e1e8dc;color:#536b4d}.tool-btn:hover{background:#e1e8dc}.hint{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);font-size:9px;letter-spacing:1px;color:#53665f;white-space:nowrap;margin:0}.quality-control{position:absolute;left:30px;bottom:19px;display:flex;align-items:center;gap:12px;font-size:8px;color:#62746b;letter-spacing:1px}.quality-control button{font-size:8px;border:none;border-bottom:1px solid #6b7e7250;padding:0 0 3px;background:none;letter-spacing:1px}.quality-control span{opacity:.7}#toast{position:absolute;z-index:20;left:50%;bottom:150px;transform:translateX(-50%);padding:11px 18px;border-radius:8px;background:#263d32e8;color:#fff;backdrop-filter:blur(12px);font-size:12px;opacity:0;transition:opacity .25s;pointer-events:none;max-width:90vw;text-align:center}.loading{position:fixed;z-index:40;inset:0;background:#f0f1e9;display:grid;place-items:center;transition:opacity .6s}.loading.done{opacity:0;pointer-events:none}.loading-content{text-align:center;width:240px}.loading-mark{font-size:36px;letter-spacing:7px;font-weight:300;color:#4c5d51}.loading p{font-size:15px;font-weight:400;letter-spacing:4px;margin:25px 0 12px}.loading-content>span:not(.loading-mark){font-size:10px;letter-spacing:2px;color:#81907f}.load-track{height:2px;background:#dfe5d9;margin-top:31px;overflow:hidden}.load-track i{display:block;height:100%;width:0;background:#778c70;transition:width .25s}.loading small{display:block;font-size:9px;color:#7b8e76;letter-spacing:1px;margin-top:12px}.error{position:fixed;z-index:50;left:50%;top:50%;transform:translate(-50%,-50%);padding:30px;background:#fafaf3;border-radius:12px;text-align:center;max-width:90vw}.error h2{font-size:19px;font-weight:500}.error p{font-size:12px;line-height:1.8;max-width:390px}.error button{background:#36443d;color:#fff;border:none;padding:10px 24px;border-radius:6px}#walk-pad{position:absolute;bottom:160px;left:35px;z-index:8;display:none;align-items:center;flex-direction:column;gap:4px}body.walking #walk-pad{display:flex}body.walking .view-info{left:155px}#walk-pad div{display:flex;gap:4px}#walk-pad button{width:34px;height:34px;background:var(--glass);backdrop-filter:blur(8px);border:1px solid #ffffffb0;border-radius:7px;font-size:17px;touch-action:none}body.walking #viewport{cursor:grab}button:disabled{opacity:.4;pointer-events:none}@media(min-width:1500px){.view-dock{bottom:65px}.view-button{min-width:119px;padding:12px 17px}.view-info{bottom:183px}.material-caption{bottom:185px}.hint{bottom:31px}.quality-control{bottom:31px}}@media(max-width:1150px){.view-button{min-width:87px;padding:10px}.view-dock{max-width:calc(100% - 32px)}.project h1{font-size:17px}.material-caption{right:25px}.brand b{font-size:16px}.review-badge{display:none}}@media(max-width:800px){.header{left:18px;right:18px;top:18px}.brand svg{width:29px;height:29px}.brand b{font-size:15px;letter-spacing:2px}.brand small{font-size:7px;letter-spacing:2px}.project{display:none}.header-tools{gap:7px}.icon-btn{height:34px;padding:8px}.icon-btn span{display:none}.lighting-panel{top:77px;right:18px}.lighting-panel>span{display:none}.segmented button{font-size:9px;padding:7px 9px}.view-info{left:21px;bottom:165px;max-width:75vw}.view-info h2{font-size:22px;margin:10px 0}.view-info p{font-size:10px;max-width:280px;line-height:1.6}.view-eyebrow{font-size:8px;letter-spacing:1.8px}.height-tag{font-size:8px;margin-top:10px;padding:5px 7px}.material-caption{display:none}.view-dock{bottom:49px;border-radius:10px;padding:6px;max-width:calc(100% - 26px);width:calc(100% - 26px)}.view-buttons{overflow:auto;scrollbar-width:none;flex:1;min-width:0}.view-buttons::-webkit-scrollbar{display:none}.view-button{font-size:10px;min-width:86px;padding:8px 12px;gap:6px}.view-button span{font-size:7px}.dock-divider{margin:0 5px}.tool-btn{width:34px;flex-shrink:0;padding:8px 3px}.tool-btn span{font-size:8px}.tool-btn svg{width:15px;height:15px}.hint{bottom:24px;font-size:8px}.quality-control{display:none}#toast{bottom:140px;font-size:10px}#walk-pad{left:20px;bottom:155px}body.walking .view-info{left:151px;max-width:calc(100% - 170px)}body.walking .view-info p{display:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Readable captions over both road and construction soil. */
.view-info{padding:17px 20px;background:rgba(247,248,241,.86);border:1px solid #ffffff8c;border-radius:10px;backdrop-filter:blur(14px);text-shadow:none}.material-caption{background:rgba(247,248,241,.87);border:1px solid #ffffff8c;border-radius:9px;padding:12px 15px;backdrop-filter:blur(14px)}.quality-control{background:rgba(247,248,241,.78);padding:7px 10px;border-radius:5px}.hint{background:rgba(247,248,241,.76);padding:5px 10px;border-radius:4px;color:#3b4943}@media(max-width:800px){.view-info{padding:12px 14px;bottom:155px;left:17px}.view-info h2{font-size:20px;margin:8px 0}.view-info p{max-width:250px}.height-tag{background:#e5e9de}.hint{white-space:nowrap}body.walking .view-info{padding:10px;left:145px}}

#layout-labels{position:fixed;inset:0;z-index:2;pointer-events:none}#layout-labels[hidden]{display:none}#layout-labels>div{position:absolute;transform:translate(-50%,-50%);padding:7px 10px;background:rgba(249,249,243,.9);border:1px solid #ffffffad;border-radius:5px;box-shadow:0 2px 14px #1b302315;text-align:center;white-space:nowrap}#layout-labels b{display:block;font-size:12px;letter-spacing:1px;font-weight:500}#layout-labels small{display:block;font-size:8px;margin-top:4px;color:#657168}body.layout-view .material-caption{display:none}@media(max-width:800px){#layout-labels>div{padding:4px 6px}#layout-labels b{font-size:9px}#layout-labels small{font-size:7px}}

.header .brand{background:rgba(246,248,242,.85);padding:8px 11px;border-radius:7px;backdrop-filter:blur(12px)}.project{background:rgba(246,248,242,.85);padding:10px 20px;border-radius:7px;backdrop-filter:blur(12px)}@media(max-width:800px){.header .brand{padding:7px 9px}}

.swatch{background:linear-gradient(110deg,#8d6d4d,#b99770 50%,#9d7d5a)}

.swatch{background:linear-gradient(110deg,#62402b,#805439 50%,#70452a)}

.view-buttons{overflow-x:auto;scrollbar-width:thin;min-width:0}.view-buttons::-webkit-scrollbar{height:3px}.view-buttons::-webkit-scrollbar-thumb{background:#a8b1a6;border-radius:3px}#render-view{position:fixed;inset:0;z-index:4;background:#202624;display:flex;align-items:center;justify-content:center;padding:90px 25px 115px}#render-view[hidden]{display:none}#render-image{width:100%;height:100%;object-fit:contain}#render-close{position:absolute;right:32px;top:95px;border:1px solid #ffffff80;background:#f8f8f0ed;border-radius:7px;padding:9px 14px;font-size:12px}.render-info{position:absolute;left:36px;top:105px;background:#f8f8f0e8;padding:10px 14px;border-radius:7px}.render-info span{display:block;font-size:9px;color:#6c756d;letter-spacing:1px}.render-info b{display:block;font-weight:500;font-size:14px;margin-top:4px}body.photo-view .view-info,body.photo-view .material-caption,body.photo-view .lighting-panel,body.photo-view .hint{display:none}@media(max-width:800px){#render-view{padding:95px 0 120px}#render-close{top:75px;right:16px}.render-info{top:75px;left:16px}}

/* Confirmed brand style: pale blue-gray, 3 × 3, lower-left to upper-right. */
.watermark{
 position:fixed;inset:0;z-index:7;pointer-events:none;user-select:none;
 display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));
 align-items:center;justify-items:center;padding:8vh 2vw;overflow:hidden;
}
.watermark>span{
 display:block;white-space:nowrap;transform:rotate(-22deg);
 font-family:"Heiti SC","PingFang SC","Microsoft YaHei",sans-serif;
 font-size:clamp(10px,2.5vw,42px);font-weight:500;line-height:1.3;
 color:rgba(112,132,157,.55);-webkit-text-stroke:.6px rgba(255,255,255,.43);
 paint-order:stroke fill;letter-spacing:.02em;
}
@media(max-width:800px){.watermark{padding:12vh 2vw}.watermark>span{-webkit-text-stroke:.35px rgba(255,255,255,.43)}}
