:root{--accent:#b85742;--ink:#e9e5da;--muted:#7e8982;--panel:#0c110e;--line:rgba(231,231,219,.13);--deep:#030605;--good:#72b58e;--warn:#c2a066}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:var(--deep);color:var(--ink);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}button{font:inherit}button:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.app{height:100%;display:grid;grid-template-rows:58px minmax(0,1fr);background:#060a08}.topbar{z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 18px;border-bottom:1px solid var(--line);background:rgba(8,12,10,.97)}.topbar-brand{display:flex;align-items:center;gap:11px}.topbar-brand .seal{width:31px;height:31px;display:grid;place-items:center;border:1px solid #667069;color:var(--accent);font:18px/1 serif}.topbar-brand b,.topbar-brand small{display:block}.topbar-brand b{font:400 12px serif;letter-spacing:.08em}.topbar-brand small{margin-top:4px;color:#5f6963;font:7px monospace;letter-spacing:.14em}.mode-switch{align-self:stretch;display:flex}.mode-switch button{min-width:112px;padding:0 16px;border:0;border-left:1px solid var(--line);background:transparent;color:#68736d;font-size:9px;letter-spacing:.09em;cursor:pointer}.mode-switch button:last-child{border-right:1px solid var(--line)}.mode-switch button.active{color:var(--ink);background:color-mix(in srgb,var(--accent) 10%,transparent);box-shadow:inset 0 -2px var(--accent)}.engine-badge{justify-self:end;display:flex;align-items:center;gap:8px;color:#66716b;font:8px monospace;letter-spacing:.12em}.engine-badge i{width:6px;height:6px;border-radius:50%;background:var(--good);box-shadow:0 0 9px color-mix(in srgb,var(--good) 70%,transparent)}.workspace{min-height:0;display:grid;grid-template-columns:266px minmax(360px,1fr) 260px}.project-panel,.property-panel{min-height:0;overflow:auto;scrollbar-width:thin;scrollbar-color:#303a34 transparent;background:var(--panel)}.project-panel{border-right:1px solid var(--line)}.property-panel{border-left:1px solid var(--line);padding:20px}.site-identity{padding:23px 18px 19px;display:grid;grid-template-columns:39px 1fr;gap:12px;border-bottom:1px solid var(--line)}.site-identity>span{color:var(--accent);font:26px/1 serif}.site-identity small{display:block;min-height:19px;color:#66716b;font:7px/1.45 monospace;letter-spacing:.1em}.site-identity h1{margin:4px 0 5px;font:400 20px/1.25 serif}.site-identity p{margin:0;color:#6d7971;font:9px/1.55 serif}.panel-heading{display:flex;align-items:end;justify-content:space-between;gap:12px}.panel-heading small,.panel-heading b{display:block}.panel-heading small{color:#58635c;font:7px/1.4 monospace;letter-spacing:.16em}.panel-heading b{margin-top:4px;font:400 12px serif}.archive-card,.model-catalog{padding:18px;border-bottom:1px solid var(--line)}.archive-card dl{margin:15px 0 0}.archive-card dl>div{padding:7px 0;display:grid;grid-template-columns:43px 1fr;gap:8px;border-bottom:1px dotted rgba(255,255,255,.1)}.archive-card dt{color:#59645d;font-size:8px}.archive-card dd{margin:0;color:#9ca59f;font-size:9px;line-height:1.5;text-align:right}.pipeline-state{margin-top:14px;padding:12px;display:grid;grid-template-columns:8px 1fr;gap:9px;background:#111814}.pipeline-state>i{width:6px;height:6px;margin-top:4px;border-radius:50%;background:var(--good)}.pipeline-state.is-pending>i{background:var(--warn)}.pipeline-state b{display:block;color:#b9c1bc;font:9px/1.5 serif}.pipeline-state p{margin:4px 0 0;color:#66716a;font:8px/1.55 serif}.model-list{margin-top:13px}.model-list button{width:100%;padding:10px 0;display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;border:0;border-top:1px solid var(--line);background:transparent;color:#66726b;text-align:left;cursor:pointer}.model-list button>span{color:var(--accent);font:9px monospace}.model-list button b,.model-list button small{display:block}.model-list button b{font:400 10px serif}.model-list button small{margin-top:3px;color:#566159;font:7px monospace}.model-list button>i{font:normal 7px monospace}.model-list button.active{color:var(--ink)}.model-list button.active>i{color:var(--good)}.model-list .no-model{margin:14px 0 0;padding:13px;border:1px dashed #303b34;color:#68736c;font:9px/1.7 serif}.tree-section{padding:18px}.tree-heading>span{color:#566159;font:7px monospace}.tree-view{min-height:130px;max-height:42vh;margin-top:14px;overflow:auto;color:#89958d;font-size:9px}.tree-placeholder{margin:0;color:#59635d;font:9px/1.7 serif}.tree-view ul{margin:0;padding-left:14px;list-style:none}.tree-view>ul{padding-left:0}.tree-view li{position:relative;margin:2px 0}.tree-view li a{color:#818c85;text-decoration:none}.tree-view li a:hover{color:#d8d9d2}.tree-view input{width:10px;height:10px;margin:0 5px 0 0;accent-color:var(--accent)}.tree-view .xeokit-tree-view-item{padding:2px 0}.tree-view .xeokit-tree-view-item-icon{display:inline-block;width:8px}.tree-view .highlighted-node>a{color:var(--accent)}.viewport-shell{position:relative;min-width:0;min-height:0;overflow:hidden;background:#030504}.viewport{position:absolute;inset:0;transition:opacity .25s}.bim-viewport{background-color:#050806;background-image:radial-gradient(circle at center,rgba(75,93,82,.18),transparent 58%),linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:auto,48px 48px,48px 48px}.bim-viewport:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle,transparent 50%,rgba(0,0,0,.45))}.bim-viewport canvas#bimCanvas{position:absolute;width:100%;height:100%}.app[data-mode="gis"] .bim-viewport{opacity:0;pointer-events:none}.gis-viewport{opacity:0;pointer-events:none;background:#050806}.app[data-mode="gis"] .gis-viewport{opacity:1;pointer-events:auto}.tool-bar{position:absolute;z-index:12;top:14px;left:50%;display:flex;transform:translateX(-50%);border:1px solid rgba(255,255,255,.15);background:rgba(7,11,9,.88);backdrop-filter:blur(12px)}.tool-bar button{width:49px;height:48px;padding:5px 2px;border:0;border-right:1px solid rgba(255,255,255,.1);background:transparent;color:#7a867e;cursor:pointer}.tool-bar button:last-child{border-right:0}.tool-bar button span,.tool-bar button small{display:block}.tool-bar button span{font:14px/1 serif}.tool-bar button small{margin-top:5px;font:7px/1 sans-serif}.tool-bar button:hover,.tool-bar button.active{color:var(--ink);background:color-mix(in srgb,var(--accent) 14%,transparent)}.app[data-mode="gis"] .tool-bar{display:none}#navCubeCanvas{position:absolute;z-index:5;right:16px;top:75px;width:92px;height:92px}#sectionOverview{position:absolute;z-index:5;right:16px;bottom:51px;width:95px;height:95px;display:none;background:rgba(3,7,5,.7);border:1px solid var(--line)}#sectionOverview.active{display:block}.axis-legend{position:absolute;z-index:5;left:16px;bottom:45px;color:#6e7972;font:7px monospace}.axis-legend i{display:inline-block;width:13px;height:2px;margin:0 4px 2px 9px}.axis-legend i:first-child{margin-left:0}.axis-legend .x{background:#c26459}.axis-legend .y{background:#76a66f}.axis-legend .z{background:#688da5}.viewport-readout{position:absolute;z-index:11;left:0;right:0;bottom:0;height:31px;padding:0 13px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);background:rgba(6,10,8,.94);color:#5c6860;font:7px monospace;letter-spacing:.1em}.loading-state{position:absolute;z-index:14;left:50%;top:50%;min-width:235px;padding:17px 19px;display:flex;align-items:center;gap:14px;transform:translate(-50%,-50%);background:rgba(7,11,9,.92);border:1px solid var(--line);box-shadow:0 18px 70px rgba(0,0,0,.45)}.loading-state[hidden]{display:none}.loading-state>i{width:21px;height:21px;border:1px solid #2e3d34;border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.loading-state small,.loading-state b{display:block}.loading-state small{color:#57635b;font:7px monospace;letter-spacing:.15em}.loading-state b{margin-top:6px;font:400 11px serif}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{position:absolute;z-index:10;inset:0;padding:90px 12% 55px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:radial-gradient(circle at center,color-mix(in srgb,var(--accent) 8%,#070b09),#030504 66%)}.empty-state[hidden]{display:none}.empty-state>span{color:var(--accent);font:56px/1 serif}.empty-state>small{margin-top:8px;color:#5f6a63;font:8px monospace;letter-spacing:.2em}.empty-state h2{margin:25px 0 14px;font:400 34px/1.2 serif}.empty-state p{max-width:490px;margin:0;color:#79857d;font:11px/1.9 serif}.empty-state button{margin-top:27px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--accent) 60%,#3b463f);background:transparent;color:#c9cbc4;font-size:9px;letter-spacing:.08em;cursor:pointer}.empty-state button b{margin-left:25px;color:var(--accent)}.gis-viewport #cesiumContainer{position:absolute;inset:0}.cesium-widget-credits{font-size:7px!important}.cesium-viewer-toolbar{top:76px;right:15px}.cesium-viewer-bottom{bottom:31px}.gis-caption{position:absolute;z-index:4;left:20px;bottom:52px;padding:14px 16px;border-left:2px solid var(--accent);background:rgba(6,10,8,.87);backdrop-filter:blur(12px)}.gis-caption small,.gis-caption b{display:block}.gis-caption small{color:#748078;font:7px monospace;letter-spacing:.13em}.gis-caption b{margin-top:7px;font:400 14px serif}.gis-caption p{margin:5px 0 0;color:#6c7870;font:8px monospace}.tiles-state{position:absolute;z-index:4;top:75px;left:20px;max-width:280px;padding:13px 15px;border:1px solid rgba(255,255,255,.13);background:rgba(6,10,8,.84);backdrop-filter:blur(10px)}.tiles-state span{color:var(--accent);font:7px monospace;letter-spacing:.15em}.tiles-state b{display:block;margin-top:7px;font:400 10px serif}.tiles-state p{margin:5px 0 0;color:#68736c;font:8px/1.55 serif}.property-panel>.panel-heading{padding-bottom:15px;border-bottom:1px solid var(--line)}.selection-empty{padding:40px 7px;text-align:center;border-bottom:1px solid var(--line)}.selection-empty>span{color:var(--accent);font-size:31px}.selection-empty h2{margin:17px 0 10px;font:400 17px serif}.selection-empty p{margin:0;color:#69756d;font:9px/1.8 serif}.selected-title{padding:24px 0 17px;border-bottom:1px solid var(--line)}.selected-title small{color:var(--accent);font:7px monospace;letter-spacing:.14em}.selected-title h2{margin:9px 0 7px;font:400 18px/1.35 serif;word-break:break-word}.selected-title span{color:#69756d;font:8px monospace}.property-list{margin:0;padding:10px 0;border-bottom:1px solid var(--line)}.property-list>div{padding:7px 0;display:grid;grid-template-columns:62px 1fr;gap:8px}.property-list dt{color:#59645d;font-size:8px}.property-list dd{margin:0;color:#a5ada7;font:8px/1.5 monospace;text-align:right;word-break:break-all}.property-sets section{padding:14px 0;border-bottom:1px solid var(--line)}.property-sets h3{margin:0 0 8px;color:#8f9993;font:400 10px serif}.property-sets dl{margin:0}.property-sets dl>div{padding:4px 0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.property-sets dt,.property-sets dd{font-size:8px;line-height:1.4}.property-sets dt{color:#5f6b63}.property-sets dd{margin:0;color:#9aa39d;text-align:right}.object-actions{padding:16px 0;display:grid;grid-template-columns:1fr 1fr;gap:6px}.object-actions button{padding:10px 4px;border:1px solid #354038;background:transparent;color:#8b958f;font-size:8px;cursor:pointer}.object-actions button:first-child{border-color:color-mix(in srgb,var(--accent) 52%,#354038);color:#c4c7c0}.delivery-card{margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.delivery-card ol{margin:15px 0 0;padding:0;list-style:none}.delivery-card li{padding:9px 0;display:grid;grid-template-columns:20px 1fr;gap:9px;border-bottom:1px solid rgba(255,255,255,.08)}.delivery-card li>i{width:18px;height:18px;display:grid;place-items:center;border:1px solid #344038;color:var(--accent);font:normal 7px monospace}.delivery-card li>span{color:#8f9993;font-size:9px}.delivery-card li small{display:block;margin-top:3px;color:#546057;font:6px monospace;letter-spacing:.08em}

.viewport-shell{background:#d5d2c9}.bim-viewport{background-color:#d5d2c9;background-image:radial-gradient(circle at center,rgba(255,255,255,.5),transparent 64%),linear-gradient(rgba(45,57,49,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(45,57,49,.055) 1px,transparent 1px)}.bim-viewport:after{background:none}

.landmark-panel{margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid var(--line)}.landmark-panel[hidden]{display:none}.landmark-panel>.panel-heading{padding-bottom:11px}.landmark-panel>p{margin:0 0 10px;color:#6f7a73;font:8px/1.65 serif}.landmark-list{display:grid;gap:5px}.landmark-list-item{width:100%;min-height:47px;padding:8px 8px 8px 0;display:grid;grid-template-columns:28px minmax(0,1fr) 18px;gap:7px;align-items:center;border:0;border-top:1px solid rgba(255,255,255,.09);background:transparent;color:#76827a;text-align:left;cursor:pointer;transition:background .2s,color .2s,border-color .2s}.landmark-list-item>span{color:var(--accent);font:8px/1 monospace}.landmark-list-item b,.landmark-list-item small{display:block}.landmark-list-item b{font:400 10px/1.35 serif}.landmark-list-item small{margin-top:4px;color:#58645c;font:7px/1.35 serif}.landmark-list-item>i{color:#536057;font:normal 10px serif;text-align:right}.landmark-list-item:hover,.landmark-list-item.active{padding-left:8px;background:color-mix(in srgb,var(--accent) 10%,transparent);border-top-color:color-mix(in srgb,var(--accent) 42%,transparent);color:#ede9df}.landmark-list-item.active small{color:#8f9a93}.landmark-list-item.active>i{color:var(--accent)}

.landmark-overlay{position:absolute;z-index:7;inset:0;overflow:hidden;pointer-events:none}.model-landmark{position:absolute;left:0;top:0;display:flex;align-items:center;gap:6px;padding:5px 8px 5px 5px;border:1px solid rgba(255,255,255,.27);border-radius:2px;background:rgba(10,14,12,.78);box-shadow:0 7px 22px rgba(0,0,0,.24);backdrop-filter:blur(8px);color:#e9e5da;white-space:nowrap;pointer-events:auto;cursor:pointer;transition:opacity .18s,background .18s,border-color .18s}.landmark-overlay.has-active .model-landmark:not(.active){opacity:0;pointer-events:none}.model-landmark[hidden]{display:none}.model-landmark i{width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:#fff;font:normal 7px/1 monospace}.model-landmark span{font:9px/1 serif;letter-spacing:.03em}.model-landmark:hover,.model-landmark.active{background:rgba(18,20,17,.94);border-color:var(--accent)}.model-landmark:after{content:"";position:absolute;left:50%;top:100%;width:1px;height:16px;background:linear-gradient(var(--accent),transparent)}.app[data-mode="gis"] .landmark-overlay{display:none}

@media(max-width:1050px){.workspace{grid-template-columns:235px minmax(360px,1fr)}.property-panel{position:absolute;z-index:30;right:0;top:58px;bottom:0;width:260px;transform:translateX(100%);box-shadow:-18px 0 60px rgba(0,0,0,.4)}.topbar{grid-template-columns:1fr auto}.engine-badge{display:none}}
@media(max-width:760px){.app{grid-template-rows:52px minmax(0,1fr)}.topbar{padding:0 10px}.topbar-brand small{display:none}.topbar-brand b{font-size:10px}.topbar-brand .seal{width:28px;height:28px}.mode-switch button{min-width:80px;padding:0 8px}.workspace{display:block}.project-panel{position:absolute;z-index:25;left:0;right:0;top:52px;max-height:178px;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;background:rgba(10,15,12,.96);backdrop-filter:blur(12px)}.site-identity{padding:15px}.archive-card{padding:15px}.archive-card dl,.pipeline-state{display:none}.model-catalog,.tree-section{display:none}.viewport-shell{height:calc(100vh - 52px);padding-top:178px}.tool-bar{top:190px;width:calc(100% - 20px);overflow-x:auto;justify-content:start;transform:none;left:10px}.tool-bar button{min-width:47px}.bim-viewport,.gis-viewport{top:178px}.empty-state{top:178px}.loading-state{top:58%}#navCubeCanvas{top:245px;right:8px;width:72px;height:72px}.tiles-state{top:190px;left:10px;right:10px;max-width:none}.gis-caption{left:10px;bottom:43px}.viewport-readout{bottom:0}.site-identity h1{font-size:16px}.site-identity>span{font-size:22px}.site-identity small{font-size:6px}.topbar-brand{gap:7px}}
