*{margin:0;padding:0;box-sizing:border-box}#rail-road-panel[hidden]{display:none}#rail-road-panel{position:absolute;left:.75rem;right:.75rem;bottom:calc(24px + 1rem);z-index:4;height:min(260px,45%);padding:.7rem 1rem;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 3px 16px #0002}.rail-road-header{display:flex;align-items:center;gap:.8rem;padding-right:1.5rem;flex-wrap:wrap}#rail-road-title{font-size:.95rem}#rail-road-filter{min-width:100px;width:180px;padding:.3rem}.rail-road-table{overflow:auto;flex:1;min-height:0}.rail-road-table table{width:100%;border-collapse:collapse;font-size:.8rem;text-align:left}.rail-road-table th{position:sticky;top:0;background:var(--bg-panel)}.rail-road-table th,.rail-road-table td{padding:.25rem .5rem;border-bottom:1px solid var(--table-border);white-space:nowrap}.rail-road-table tr.selected{background:var(--row-hover);outline:1px solid var(--accent);outline-offset:-1px}.rail-road-table tbody tr:hover{background:var(--row-hover);cursor:pointer}.rail-road-table button{border:0;background:none;color:var(--accent-text);font:inherit;text-align:left;cursor:pointer}#rail-road-status{font-size:.78rem;color:var(--text-muted)}.rail-type-filter{position:relative;font-size:.8rem}.rail-type-filter summary{cursor:pointer;padding:.3rem .5rem;border:1px solid var(--table-border);border-radius:4px;background:var(--bg-panel)}.rail-type-filter>div{position:absolute;top:100%;left:0;z-index:8;min-width:240px;max-height:230px;overflow-y:auto;padding:.5rem;background:var(--bg-panel);border:1px solid var(--table-border);box-shadow:0 4px 12px #0003}.rail-type-filter label{display:flex;gap:.4rem;align-items:center;padding:.2rem 0;white-space:nowrap}.rail-type-filter button{margin:0 .4rem .3rem 0}.section-curve-nav{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;width:100%}.section-curve-nav input[type=range]{flex:1;min-width:80px}.section-curve-nav input[type=number]{width:85px}.section-curve-nav small{width:100%;color:var(--text-muted)}#section-list li:has(.section-curve-nav){flex-wrap:wrap}#section-curve-status:empty{display:none}#viewport-container.rail-road-open #minimap{bottom:calc(284px + 1.5rem);max-height:calc(100% - 284px - 2.25rem)}:root{color-scheme:light;--bg: light-dark(#f2f3f5, #14161a);--bg-panel: light-dark(#e7e9ed, #1c1f26);--bg-sidebar: light-dark(#eceef1, #191c22);--border: light-dark(#d0d4db, #2a2e37);--border-strong: light-dark(#b6bcc7, #3a4150);--border-strong-hover: light-dark(#9aa2b0, #4a5364);--btn-bg: light-dark(#dde0e6, #2b3141);--btn-hover: light-dark(#cfd4dd, #353c4e);--row-hover: light-dark(#dbe4f0, #2b3546);--badge-bg: light-dark(#dfe2e8, #262b35);--table-border: light-dark(#dcdfe5, #252a33);--text: light-dark(#23272e, #d6d9de);--text-muted: light-dark(#444b57, #aeb8c8);--text-muted-2: light-dark(#4a505b, #aeb4be);--text-dim: light-dark(#5c6370, #8b919c);--text-dimmer: light-dark(#6b7280, #727987);--text-faint: light-dark(#8a919c, #565c68);--accent: #4a90d9;--accent-text: light-dark(#2e6db4, #9ec5ef);--amber: light-dark(#9a6b00, #e8c47a);--error: light-dark(#b33a3a, #e8b4b4);--green: light-dark(#1d7a4f, #63d3a6);--green-bg: light-dark(#d2efe1, #1f3d33);--drop-bg: light-dark(rgba(232, 240, 250, .3), rgba(20, 30, 48, .3));--main-resizer-grip-width: 3px;--main-resizer-grip-height: 28px;--sidebar-collapse-duration: .6s}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong-hover)}html,body,#app{height:100%;font-family:system-ui,sans-serif;background:var(--bg);color:var(--text)}#app{display:flex;flex-direction:column}#main{display:flex;flex:1 1 auto;min-height:0;overflow:hidden}#sidebar{flex:0 0 260px;background:var(--bg-sidebar);border-right:0;padding:0;display:flex;flex-direction:column;min-height:0;min-width:0;transition:margin-left var(--sidebar-collapse-duration) ease;will-change:margin-left}#sidebar .placeholder{color:var(--text-faint);font-size:.85rem}#tree-tabs button,#welcome-open,#welcome-about,#load-cancel,#model-details-link,#status-bar button{display:inline-flex;align-items:center;justify-content:center;gap:.28rem;background:#f7f8fa;border:1px solid #c9cdd4;border-radius:2px;box-shadow:inset 0 1px #ffffffd9,0 1px 1px #23272e14;color:#23272e;font:inherit;font-weight:600;cursor:pointer;text-decoration:none}#tree-tabs button:hover,#welcome-open:hover,#welcome-about:hover,#load-cancel:hover:not(:disabled),#model-details-link:hover,#status-bar button:hover{background:#fff;border-color:#b6bcc7}#tree-tabs button:focus-visible,#welcome-open:focus-visible,#welcome-about:focus-visible,#load-cancel:focus-visible,#model-details-link:focus-visible,#status-bar button:focus-visible{outline:2px solid rgba(74,144,217,.35);outline-offset:1px}#load-cancel:disabled{opacity:.5;cursor:default}#tree-header{flex:0 0 auto;display:flex;flex-direction:column;gap:.4rem;padding:.5rem .5rem .45rem;border-bottom:1px solid var(--border)}#tree-search,#tree-sort{width:100%;padding:.3rem .5rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:4px;color:var(--text);font-size:.78rem}#tree-tabs{display:flex;gap:4px}#tree-tabs button{flex:1 1 0;height:24px;padding:0 .25rem;color:var(--text-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:0}#tree-tabs button.active{background:#fff;border-color:#8fb7df;color:#2e6db4}#tree{flex:1 1 auto;min-height:8rem;overflow:hidden}.tree-viewport{position:relative;height:100%;overflow:auto;font-size:.82rem}.tree-rows{position:absolute;inset:0 0 auto}.tree-row{height:28px;display:flex;align-items:center;gap:4px;padding-right:6px;cursor:pointer;user-select:none;white-space:nowrap}.tree-row:hover,.tree-row.selected{background:var(--row-hover)}.tree-toggle{width:16px;border:0;background:transparent;color:var(--text-muted);cursor:pointer}.tree-toggle:disabled{cursor:default}.tree-row input{accent-color:var(--accent)}.tree-label{overflow:hidden;text-overflow:ellipsis}.tree-side{margin-left:auto;display:flex;align-items:center;gap:4px;min-width:0}.tree-side>span{padding:0 .35rem;border-radius:3px;font-size:.68rem;font-variant-numeric:tabular-nums}.badge-elev{background:var(--green-bg);color:var(--green)}.badge-count{background:var(--badge-bg);color:var(--text-dim)}.tree-type{color:var(--text-faint);overflow:hidden;text-overflow:ellipsis}#sidebar-resizer{flex:0 0 8px;cursor:row-resize;background:var(--border);border-top:1px solid var(--bg);border-bottom:1px solid var(--bg)}#sidebar-resizer:hover,#sidebar-resizer.dragging{background:var(--border-strong)}#main.sidebar-collapsed #sidebar{margin-left:calc(var(--sidebar-width, 260px) * -1)}#main-resizer{flex:0 0 8px;margin-left:-4px;margin-right:-4px;cursor:col-resize;background:transparent;border:0;position:relative;z-index:2;transition:opacity .12s ease}#main.sidebar-collapsed #main-resizer{flex-basis:0;margin-left:0;margin-right:0;opacity:0;pointer-events:none}#main-resizer:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--main-resizer-grip-width);height:var(--main-resizer-grip-height);border-radius:2px;background:var(--text-faint);opacity:1}#main-resizer:hover,#main-resizer.dragging{background:transparent}#main-resizer:hover:after,#main-resizer.dragging:after{background:var(--text-muted)}#sidebar-collapse-indicator{position:fixed;top:50%;left:0;z-index:6;display:flex;align-items:center;justify-content:center;width:calc(var(--main-resizer-grip-width) * 7.5);height:calc(var(--main-resizer-grip-height) * 2);transform:translateY(-50%);border:0;border-radius:0 3px 3px 0;background:var(--text-faint);cursor:pointer;opacity:.92}#sidebar-collapse-indicator[hidden]{display:none}#sidebar-collapse-indicator:hover,#sidebar-collapse-indicator:focus-visible{background:var(--text-muted);opacity:1}#sidebar-collapse-indicator:focus-visible{outline:2px solid rgba(74,144,217,.45);outline-offset:1px}#sidebar-collapse-indicator:before{content:"";width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:6px solid var(--bg)}#sidebar-collapse-indicator.collapsed:before{border-right:0;border-left:6px solid var(--bg)}.properties{flex:0 0 20vh;min-height:4rem;max-height:65%;overflow:auto;padding:.6rem .75rem;font-size:.78rem}.properties.empty{color:var(--text-dimmer)}.properties table{width:100%;border-collapse:collapse;table-layout:fixed}.properties th,.properties td{padding:.16rem .2rem;border-top:1px solid var(--table-border);overflow-wrap:anywhere;vertical-align:top}.properties thead th{color:var(--text-dimmer);font-weight:600;text-align:left}.properties thead th:first-child,.properties tbody td:first-child{width:43%}.properties tbody td:first-child{color:var(--text-muted-2)}.properties thead th:last-child,.properties tbody td:last-child{width:3.8rem;color:var(--text-muted-2);text-align:right;white-space:nowrap}.properties .property-group th{color:var(--accent-text);font-size:.8rem;font-weight:700;padding-top:.55rem;text-align:left}#viewport-container{position:relative;flex:1 1 auto;min-width:0}#viewport{display:block;width:100%;height:100%;touch-action:none}#viewport-tools{position:absolute;top:calc(1.25rem + 84px);right:.75rem;z-index:3;display:flex;flex-direction:column;align-items:flex-end;gap:.35rem}.tool-icon{width:32px;height:32px;display:grid;place-items:center;padding:0;background:#e7e9edb1;border:1px solid rgba(198,203,212,.776);border-radius:4px;color:#2e6db4;cursor:pointer;opacity:.86}.tool-icon:hover,.tool-icon.active{background:#ffffffda;color:#1f5b99}.tool-icon svg{width:24px;height:24px}.tool-icon img{width:24px;height:24px;object-fit:contain}#measure-button{height:19px}#measure-button svg{height:14px}#terrain-button,#script-button{height:26px}#terrain-button svg,#script-button svg{height:20px}#ids-button{height:19px}#ids-button svg{height:14px}#lab-group{position:relative;width:32px;height:32px}#lab-button .lab-close-arrow,#lab-button[aria-expanded=true] .lab-flask{display:none}#lab-button[aria-expanded=true] .lab-close-arrow{display:inline}#lab-flyout{position:absolute;bottom:0;right:calc(100% + .35rem);display:flex;flex-direction:column-reverse;gap:.35rem;width:max-content;max-width:calc(100vw - 64px - 2rem);visibility:hidden;pointer-events:none;transition:visibility 0s linear .18s}#lab-flyout.open{visibility:visible;pointer-events:auto;transition-delay:0s}.lab-tool-row{display:grid;grid-template-columns:minmax(0,1fr) 32px;align-items:center;gap:.5rem;transform:translate(calc(32px + .35rem));opacity:0;transition:transform .18s ease,opacity .18s ease}.lab-tool-description{padding:.2rem .4rem;border-radius:4px;background:var(--bg-panel);color:var(--text-muted);font-size:.8rem;text-align:right;overflow-wrap:anywhere;pointer-events:none}#lab-flyout.open .lab-tool-row{transform:none;opacity:1;transition-delay:var(--lab-delay)}@media(prefers-reduced-motion:reduce){#lab-flyout,#lab-flyout .lab-tool-row,#lab-flyout.open .lab-tool-row{transition:none}.lab-tool-row{transform:none}}#zoom-bounds-button svg path{fill:none;stroke:currentColor;stroke-linecap:square;stroke-linejoin:miter;stroke-width:1.5}#settings-button svg path,#settings-button svg circle,#terrain-button svg path,#storey-shift-button svg path,#minimap-button svg path,#walk-button svg path,#walk-button svg circle,#measure-button svg path,#measure-button svg rect,#data-button svg path,#clash-button svg path,#lab-button svg path,#heat-button svg path,#heat-button svg circle,#outer-shape-button svg path,#ids-button svg path,#compare-button svg path,#section-button svg path,#bcf-button svg path,#script-button svg path,#ai-button svg path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.55}#rail-road-button svg path{fill:currentColor;stroke:none}#data-button svg .data-icon-grid{stroke-width:.8}#heat-button svg circle{fill:currentColor}#outer-shape-button svg .outer-shape-icon-removed{stroke-width:1;stroke-dasharray:0 2.1}#section-button svg path{stroke-width:.7}#section-button svg .section-icon-plane{stroke-width:.85;stroke-dasharray:1.7 1.5}#section-button svg .section-icon-cut{fill:currentColor;fill-opacity:.16}#section-button svg .section-icon-hatch{stroke-width:.5}#area-select-button svg path{fill:none;stroke:currentColor;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.55}#nav-cube{position:absolute;top:.75rem;right:.75rem;z-index:3;width:84px;height:84px;background:transparent;border:0;cursor:grab;touch-action:none}#nav-cube:active{cursor:grabbing}#minimap{position:absolute;left:.75rem;bottom:calc(24px + 1rem);z-index:3;width:min(300px,40%);height:min(300px,50%);max-width:calc(100% - 1.5rem);max-height:calc(100% - 24px - 1.75rem);background:#ffffffd1;border:1px solid rgba(198,203,212,.9);border-radius:4px}#minimap-canvas{display:block;width:100%;height:100%;cursor:crosshair;touch-action:none}#minimap-grip{position:absolute;top:0;right:0;width:16px;height:16px;cursor:nesw-resize;touch-action:none}#minimap-grip svg{display:block;width:11.2px;height:11.2px;margin-left:auto;fill:#a9aeb7;pointer-events:none}#minimap-footer{position:absolute;left:.35rem;bottom:.35rem;display:flex;align-items:center;gap:.25rem;max-width:calc(100% - .7rem)}#minimap-storey{min-width:0;height:24px;color:#16181d;font-size:.85rem}#minimap-pin{flex:0 0 auto;width:24px;height:24px;display:grid;place-items:center;padding:0;background:#e7e9edb1;border:1px solid rgba(198,203,212,.776);border-radius:4px;color:#2e6db4;cursor:pointer}#minimap-pin[aria-pressed=true]{background:#2e6db4;color:#fff}#minimap-pin svg{width:16px;height:16px}#minimap-pin svg path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}#minimap[hidden],#area-selection-box[hidden],#selection-menu[hidden],#selection-menu button[hidden],#viewer-status-bar[hidden],#settings-panel[hidden],#terrain-panel[hidden],#storey-shift-panel[hidden],#section-panel[hidden],#walk-panel[hidden],#measure-panel[hidden],#data-panel[hidden],#clash-panel[hidden],#heat-panel[hidden],#outer-shape-panel[hidden],#ids-panel[hidden],#compare-panel[hidden],#bcf-panel[hidden]{display:none}#area-selection-box{position:absolute;z-index:4;border:1px dashed #2e6db4;background:#4a90d924;pointer-events:none}#selection-menu{position:absolute;z-index:6;min-width:148px;padding:.25rem;background:#e7e9edf5;border:1px solid rgba(198,203,212,.95);border-radius:6px;box-shadow:0 8px 24px #23272e2e}#selection-menu button{display:block;width:100%;padding:.4rem .55rem;background:transparent;border:0;border-radius:4px;color:#23272e;font-size:.82rem;text-align:left;cursor:pointer}#selection-menu button:hover,#selection-menu button:focus-visible{background:#cfd4dde6;outline:0}#model-details-dock{position:absolute;left:.75rem;right:.75rem;bottom:5px;z-index:3;display:flex;align-items:center;min-width:0;pointer-events:none}#model-details-dock>*{pointer-events:auto}#viewer-status-bar{flex:1 1 auto;min-width:0;display:flex;align-items:center;height:24px;overflow-x:auto;white-space:nowrap;background:#e7e9ede6;border:1px solid rgba(198,203,212,.9);border-left:0;border-radius:0 2px 2px 0;color:#4a505b;font-size:.78rem;font-variant-numeric:tabular-nums}#viewer-status-bar span{flex:0 0 auto;padding:0 .75rem;border-right:1px solid rgba(198,203,212,.9)}#viewer-status-bar span:last-child{border-right:0}#status{min-width:12rem;color:#2e6db4}#settings-panel,#terrain-panel,#storey-shift-panel,#section-panel,#walk-panel,#measure-panel,#data-panel,#clash-panel,#ids-panel,#compare-panel,#bcf-panel{position:absolute;top:3.4rem;right:6rem;z-index:4;display:flex;flex-direction:column;gap:.75rem;width:min(320px,calc(100% - 2rem));padding:1rem;background:#e7e9edf0;border:1px solid rgba(198,203,212,.9);border-radius:6px;color:#23272e;box-shadow:0 8px 24px #23272e29}#settings-panel{width:min(360px,calc(100% - 2rem))}#terrain-panel{width:min(440px,calc(100% - 2rem));gap:.55rem;max-height:calc(100% - 5.5rem);overflow-y:auto}#terrain-panel #setting-terrain-surface{width:260px;max-width:75%}#terrain-gis-layers,#terrain-advanced{border-top:1px solid #c6cbd4;padding-top:.4rem}#terrain-gis-layers summary,#terrain-advanced summary{cursor:pointer;font-size:.84rem}#terrain-gis-options{padding:.35rem .2rem}#terrain-gis-options label{justify-content:flex-start}#terrain-advanced[open]>label,#terrain-advanced[open]>div{margin-top:.5rem}.terrain-gis-actions{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;font-size:.76rem}#terrain-identify[aria-pressed=true]{background:#164f82;color:#fff}#terrain-identify-status{font-size:.78rem}#terrain-identify-results{font-size:.78rem;overflow-wrap:anywhere}#terrain-identify-results p{margin:.35rem 0}#terrain-identify-results h4{margin:.65rem 0 .25rem}#terrain-identify-results summary{cursor:pointer;padding:.3rem 0}#terrain-identify-results dl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:.25rem .5rem;margin:.4rem 0}#terrain-identify-results dt{font-weight:600}#terrain-identify-results dd{margin:0;user-select:text}#terrain-gis-marker{position:absolute;transform:translate(-50%,-50%);pointer-events:none;z-index:3;color:#ffcf33;font:700 30px monospace;text-shadow:0 1px 2px black,1px 0 2px black}#terrain-gis-marker[hidden]{display:none}#viewport.gis-identifying{cursor:crosshair}#ids-panel{width:min(440px,calc(100% - 2rem));max-height:calc(100% - 5rem);gap:.5rem;overflow-y:auto;font-size:.82rem}#ids-panel .panel-secondary:disabled{opacity:.55;cursor:default}#ids-specifications,.ids-failures{list-style:none}#ids-specifications{flex:none;max-height:13rem;overflow-y:auto}#ids-specifications:empty,#ids-detail:empty,.ids-failures:empty{display:none}#ids-specifications button,.ids-failures button{display:block;width:100%;padding:.25rem .45rem;margin-bottom:.15rem;background:transparent;border:0;border-left:3px solid #9aa2b0;border-radius:0 4px 4px 0;color:#23272e;font-size:.8rem;text-align:left;cursor:pointer}#ids-specifications button.ids-pass{border-left-color:#1a9e38}#ids-specifications button.ids-fail,.ids-failures button{border-left-color:#cc1414}#ids-specifications button:hover,#ids-specifications li.active button,.ids-failures button:hover{background:#cfd4dde6}#ids-detail{display:flex;flex-direction:column;gap:.35rem;padding-top:.5rem;border-top:1px solid rgba(198,203,212,.9)}.ids-note{color:#8a5a00;font-size:.76rem}.ai-chip.ai-filter{border:1px solid #8fb7df;background:#fff;color:#2e6db4;font:inherit;font-size:.72rem;cursor:pointer}.ai-chip.ai-filter:hover{background:#e8f0fa}#heat-panel{position:absolute;left:.75rem;right:.75rem;bottom:calc(24px + 1rem);z-index:4;display:flex;gap:1rem;height:236px;padding:.7rem 1rem;background:#e7e9edf0;border:1px solid rgba(198,203,212,.9);border-radius:6px;color:#23272e;font-size:.8rem;box-shadow:0 8px 24px #23272e29}#viewport-container.heat-open #minimap{bottom:calc(260px + 1.5rem);max-height:calc(100% - 260px - 2.25rem)}#heat-side{flex:none;display:flex;flex-direction:column;gap:.4rem;width:min(370px,45%);overflow-y:auto}.heat-inputs{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem}.heat-inputs input{width:3.6rem;height:24px;padding:0 .3rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.8rem}.heat-inputs select{height:26px;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.78rem}.heat-scale{display:flex;align-items:center;gap:.4rem;color:#4a505b;font-size:.74rem}.heat-scale-bar{flex:1 1 auto;height:8px;border-radius:2px;background:linear-gradient(to right,#1f1fe0,#1fe0e0,#1fe01f,#e0e01f,#e01f1f)}#heat-stats,#outer-shape-stats,.outer-shape-model-stats{display:grid;grid-template-columns:auto 1fr;gap:.1rem .6rem;font-variant-numeric:tabular-nums}#heat-stats dt,#outer-shape-stats dt,.outer-shape-model-stats dt{color:#4a505b}#heat-plot{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.25rem;padding-right:1.6rem}#heat-legend{display:flex;flex-wrap:wrap;gap:.2rem .8rem;font-size:.74rem;color:#4a505b}#heat-legend span:before{content:"";display:inline-block;width:14px;height:3px;margin-right:.3rem;vertical-align:middle;background:var(--heat-line)}#heat-graph{flex:1 1 auto;min-height:0;width:100%}#outer-shape-panel{position:absolute;left:.75rem;bottom:calc(24px + 1rem);z-index:4;display:flex;flex-direction:column;gap:.4rem;box-sizing:border-box;width:calc(100% - 1.5rem);height:min(460px,calc(100% - 5rem));padding:.7rem 1rem;overflow-y:auto;background:#e7e9edf0;border:1px solid rgba(198,203,212,.9);border-radius:6px;color:#23272e;font-size:.8rem;box-shadow:0 8px 24px #23272e29}.outer-shape-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem;min-height:0;flex:1}.outer-shape-controls,.outer-shape-cli{min-width:0;overflow-y:auto}.outer-shape-controls{display:flex;flex-direction:column;gap:.4rem}.outer-shape-controls>*{flex-shrink:0}.outer-shape-actions{display:flex;align-items:center;gap:.6rem}.outer-shape-preview-output{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.6rem 1.5rem}.outer-shape-export{flex:1 1 20rem;min-width:0}#outer-shape-output{flex:1 1 12rem;min-width:0;max-width:100%}.outer-shape-cli{border-left:1px solid #c6cbd4;padding-left:1rem}.outer-shape-cli h3{margin:.25rem 0;font-size:.85rem}.outer-shape-cli ul{margin:.25rem 0;padding-left:1.1rem}.outer-shape-cli textarea{display:block;box-sizing:border-box;width:100%;margin:.3rem 0 .6rem;resize:vertical;font:.75rem monospace}#viewport-container.outer-shape-open #minimap{bottom:calc(484px + 1.5rem);max-height:calc(100% - 484px - 2.25rem)}.outer-shape-inputs,.outer-shape-options{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem}.outer-shape-sampling-option{display:grid;grid-template-columns:14rem max-content auto;align-items:center;column-gap:.4rem}.outer-shape-inputs select{height:26px;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.78rem}#outer-shape-model{position:relative;flex:1 1 100%;min-width:0}#outer-shape-model>summary{padding:.3rem .45rem;border:1px solid #c6cbd4;border-radius:4px;background:#fff;overflow:hidden;text-overflow:ellipsis}#outer-shape-model>div{position:absolute;top:100%;left:0;box-sizing:border-box;width:100%;max-height:min(260px,40vh);z-index:2;box-shadow:0 4px 12px #0003}#outer-shape-model summary[aria-disabled=true]{opacity:.55;cursor:default}#outer-shape-model-stats{overflow-wrap:anywhere}#outer-shape-model-stats>details{margin-top:.4rem}.outer-shape-model-filter{min-width:145px;flex:1}.outer-shape-model-filter summary{cursor:pointer;white-space:nowrap}.outer-shape-model-filter>div{max-height:120px;overflow-y:auto;padding:.4rem;background:#fff;border:1px solid #c6cbd4}.outer-shape-model-filter label{display:flex;gap:.4rem;align-items:center;overflow-wrap:anywhere;padding:.2rem 0}.outer-shape-model-filter input{flex:none}.outer-shape-model-filter button{margin-right:.4rem}.outer-shape-model-filter[hidden]{display:none}#clash-panel{width:min(440px,calc(100% - 2rem));max-height:calc(100% - 5rem);gap:.5rem;font-size:.82rem}.clash-set{display:flex;align-items:center;gap:.35rem}.clash-set span{flex:none;width:2.6rem;color:#4a505b;font-size:.78rem}#clash-panel select{flex:1 1 0;min-width:0;height:28px;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.78rem}.clash-model-filter{position:relative;flex:1 1 0;min-width:0;font-size:.78rem}.clash-model-filter summary{height:28px;padding:.3rem .4rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border:1px solid var(--border);border-radius:4px;background:var(--bg-sidebar)}.clash-model-filter>div{position:absolute;left:0;top:100%;z-index:8;width:max-content;min-width:230px;max-width:min(330px,65vw);max-height:230px;overflow-y:auto;padding:.5rem;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:4px;box-shadow:0 4px 12px #0003}.clash-model-filter label{display:flex;align-items:center;gap:.4rem;padding:.25rem 0;overflow-wrap:anywhere;cursor:pointer}.clash-model-filter input{flex:none}.clash-model-filter button{margin:0 .4rem .3rem 0;padding:.2rem .5rem}#clash-panel input[type=number]{width:4.2rem;height:24px;padding:0 .3rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.8rem}#clash-panel .panel-secondary:disabled{opacity:.55;cursor:default}#clash-list{flex:1 1 auto;min-height:0;overflow-y:auto;list-style:none;border-top:1px solid rgba(198,203,212,.9);padding-top:.35rem}#clash-list:empty{display:none}#clash-list button{display:flex;flex-direction:column;gap:.05rem;width:100%;padding:.25rem .35rem;background:transparent;border:0;border-left:3px solid #cc1414;border-radius:0 4px 4px 0;margin-bottom:.2rem;color:#23272e;font-size:.8rem;text-align:left;cursor:pointer}#clash-list button.clash-clearance{border-left-color:#f2730d}#clash-list button.clash-inside{border-left-color:#9e33bf}#clash-list button:hover{background:#cfd4dde6}.clash-kind{color:#4a505b;font-size:.72rem}#data-panel{width:min(460px,calc(100% - 2rem));max-height:calc(100% - 5rem);gap:.45rem;overflow-y:auto;font-size:.82rem}#data-panel h3{margin-top:.2rem;font-size:.8rem;font-weight:600;color:#4a505b}#data-panel input[type=text],#data-panel select{flex:1 1 0;min-width:0;height:28px;padding:0 .4rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.8rem}#data-panel select{flex:0 0 5.4rem}#data-conditions:empty,#data-legend:empty,#data-table:empty{display:none}#data-conditions{display:flex;flex-direction:column;gap:.3rem}.data-condition{display:flex;align-items:center;gap:.35rem}#data-legend{display:flex;flex-wrap:wrap;gap:.15rem .6rem}.data-legend-item{display:flex;align-items:center;gap:.35rem;padding:.1rem .2rem;background:transparent;border:0;border-radius:3px;color:#23272e;font-size:.78rem;cursor:pointer}.data-legend-item:hover{background:#cfd4dde6}.data-swatch{flex:none;width:.8rem;height:.8rem;border-radius:2px;background:transparent;border:1px solid rgba(120,126,138,.5)}.data-tint-1{background:#1a9e38}.data-tint-2{background:#cc1414}.data-tint-3{background:#f2730d}.data-tint-4{background:#1a59d9}.data-tint-5{background:#9e33bf}.data-tint-7{background:#0d8c8c}.data-tint-8{background:#ebc71a}.data-tint-9{background:#ed73a6}.data-tint-10{background:#7a471f}.data-tint-11{background:#8ccc26}.data-tint-12{background:#33b8e6}.data-tint-13{background:#142473}.data-tint-14{background:#73781f}.data-tint-15{background:#d91ab3}#data-table{max-height:16rem;overflow:auto;border:1px solid rgba(198,203,212,.9);border-radius:4px;background:#ffffff8c}#data-table table{width:100%;border-collapse:collapse;font-size:.78rem;font-variant-numeric:tabular-nums}#data-table th,#data-table td{padding:.2rem .45rem;text-align:left;border-bottom:1px solid rgba(198,203,212,.6)}#data-table th{position:sticky;top:0;background:#e7e9ed}#data-table td:not(:first-child),#data-table th:not(:first-child){text-align:right}#data-table tbody tr{cursor:pointer}#data-table tbody tr:hover{background:#cfd4ddb3}#data-table tfoot td{font-weight:600;border-bottom:0}#compare-panel{width:min(380px,calc(100% - 2rem));max-height:calc(100% - 5rem);gap:.5rem;font-size:.82rem}#compare-panel select{flex:1 1 auto;min-width:0;height:28px;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.82rem}.compare-option,.compare-category{display:flex;align-items:center;gap:.45rem}#compare-categories:empty,#compare-list:empty{display:none}.compare-swatch{flex:none;width:.8rem;height:.8rem;border-radius:2px;background:#b9bec0}.compare-added .compare-swatch{background:#1a9e38}.compare-removed .compare-swatch{background:#cc1414}.compare-geometry .compare-swatch{background:#f2730d}.compare-moved .compare-swatch{background:#1a59d9}.compare-properties .compare-swatch{background:#9e33bf}#compare-list{flex:1 1 auto;min-height:0;overflow-y:auto;list-style:none;border-top:1px solid rgba(198,203,212,.9);padding-top:.35rem}#compare-list button{display:flex;align-items:center;gap:.45rem;width:100%;padding:.25rem .35rem;background:transparent;border:0;border-radius:4px;color:#23272e;font-size:.8rem;text-align:left;cursor:pointer}#compare-list button:hover{background:#cfd4dde6}.compare-more{padding:.25rem .35rem;color:#4a505b}#viewport.walking{cursor:move}#walk-panel{width:min(380px,calc(100% - 2rem));gap:.5rem;font-size:.82rem}#walk-panel h3{font-size:.8rem;font-weight:600;color:#4a505b}#walk-toggle.active{outline:2px solid rgba(74,144,217,.55);outline-offset:1px}#view-name{flex:1 1 auto;min-width:0;height:28px;padding:0 .45rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.82rem}#walk-panel .panel-secondary:disabled{opacity:.55;cursor:default}#view-list{list-style:none;max-height:14rem;overflow-y:auto}#view-list:empty{display:none}#view-list li{display:flex;align-items:center;gap:.55rem;padding:.1rem 0}.view-go{flex:1 1 auto;min-width:0;padding:.25rem .4rem;overflow:hidden;background:transparent;border:0;border-radius:4px;color:#23272e;font-size:.82rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.view-go:hover{background:#cfd4dde6}#viewport.measuring{cursor:crosshair}.measure-line{stroke:#d0207a;stroke-width:1.6}.measure-face{stroke:#d0207a;stroke-width:1.4;stroke-dasharray:5 3}.measure-preview{opacity:.55}.measure-end{fill:#d0207a}.measure-snap{fill:#fff;stroke:#d0207a;stroke-width:2}.measure-snap-surface{fill:#fff;stroke-width:2}.measure-snap-perpendicular{fill:#2e6db4;stroke:#fff;stroke-width:2}.measure-snap-vertex{fill:#d0207a}.measure-snap-midpoint{fill:#ffd34d}.measure-snap-edge{fill:#2e6db4;stroke:#fff;stroke-width:1.4}.measure-snap-line{stroke:#2e6db4;stroke-width:3.5;stroke-linecap:round;opacity:.8}.measure-square{fill:none;stroke:#2e6db4;stroke-width:2}.measure-snap-label{fill:#1f5b99;font-size:11px;font-weight:600;text-anchor:start;text-transform:uppercase;letter-spacing:.04em}.measure-label{fill:#7a0f46;font-size:12px;font-weight:600;text-anchor:middle;font-variant-numeric:tabular-nums}.measure-halo{stroke:#fff;stroke-width:3.5;stroke-linejoin:round}#measure-overlay,#section-overlay{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none;touch-action:none}.section-outline{fill:#4a90d912;stroke:#2e6db4;stroke-width:1;stroke-dasharray:6 4}.section-arrow{stroke:#2e6db4;stroke-width:2.5;stroke-linecap:round}.section-axis{stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.section-axis-x{color:#bd3636}.section-axis-y{color:#26823e}.section-axis-negative{stroke-dasharray:1 5}.section-axis-label{fill:currentColor;stroke:#fff;stroke-width:3;paint-order:stroke;font:700 12px sans-serif}.section-handle{fill:#fff;stroke:#2e6db4;stroke-width:2.5;pointer-events:auto;cursor:grab}.section-handle:hover,#section-overlay.dragging .section-handle{fill:#cfe2f7}#section-overlay.dragging .section-handle{cursor:grabbing}#section-overlay.moving-handle .section-handle{cursor:move}#section-list button.active{outline:2px solid rgba(74,144,217,.55);outline-offset:1px}#section-list li{flex-wrap:wrap}#section-list .section-move-handle{white-space:nowrap}#section-panel:has(.section-elevation){width:min(420px,calc(100% - 2rem))}.section-elevation{display:inline-flex;align-items:center;gap:.2rem;white-space:nowrap;font-size:.78rem}.section-elevation input{width:6.5em;height:26px;padding:0 .3rem;border:1px solid #c6cbd4;border-radius:4px;font:inherit;font-variant-numeric:tabular-nums}.section-elevation input[aria-invalid=true]{border-color:#bd3636}.section-row{display:flex;align-items:center;gap:.45rem}.section-row .panel-secondary{flex:none;min-width:2.2rem;white-space:nowrap}#measure-panel .section-row{flex-wrap:wrap}#measure-panel [data-measure-mode].active,#section-pick.active{outline:2px solid rgba(74,144,217,.55);outline-offset:1px}.section-hint{flex:1 1 auto;color:#4a505b;font-size:.74rem}#outer-shape-progress-row:not([hidden]){display:flex;align-items:center;gap:8px}#outer-shape-progress{flex:1 1 auto;height:8px}#outer-shape-elapsed{flex:0 0 auto}#measure-list,#section-list{list-style:none;font-size:.82rem}#measure-list{max-height:12rem;overflow-y:auto;font-variant-numeric:tabular-nums}#measure-list:empty,#section-list:empty{display:none}#measure-list li,#section-list li{display:flex;align-items:center;gap:.65rem;padding:.15rem 0}#measure-list span,#section-list span{flex:1 1 auto}#measure-list button,#section-panel select{height:28px;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.8rem}#section-panel .panel-secondary:disabled{opacity:.55;cursor:default}#section-list button{padding:0;background:transparent;border:0;color:#2e6db4;font-size:.78rem;cursor:pointer}#measure-list button:hover,#section-list button:hover{text-decoration:underline}#bcf-panel{width:min(360px,calc(100% - 2rem));max-height:calc(100% - 5rem);gap:.55rem;font-size:.82rem}.bcf-header{display:flex;align-items:center;gap:.65rem}#bcf-open,#bcf-save,#bcf-new-topic{flex:none;white-space:nowrap}#bcf-save:disabled{opacity:.55;cursor:default}.bcf-field span{flex:none;width:4.6rem;color:#4a505b;font-size:.78rem}.bcf-field textarea{flex:1 1 auto;min-width:0;padding:.3rem .45rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font:inherit;resize:vertical}.bcf-editor{display:flex;flex-wrap:wrap;gap:.2rem .65rem}.bcf-editor textarea{flex:1 0 100%;padding:.3rem .45rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font:inherit;resize:vertical}.bcf-link{padding:0;background:transparent;border:0;color:#2e6db4;font-size:.74rem;cursor:pointer}.bcf-link:hover{text-decoration:underline}.bcf-meta .bcf-link{margin-left:.45rem}#bcf-new-title,#bcf-author,#bcf-detail input{flex:1 1 auto;min-width:0;height:28px;padding:0 .45rem;border:1px solid rgba(198,203,212,.9);border-radius:4px;font-size:.82rem}#bcf-status{min-width:0;color:#4a505b;font-size:.78rem}#bcf-topics{flex:0 1 auto;min-height:0;max-height:14rem;overflow-y:auto;list-style:none}#bcf-topics:empty,#bcf-detail:empty{display:none}#bcf-topics button{display:block;width:100%;padding:.35rem .5rem;background:transparent;border:0;border-radius:4px;color:#23272e;font-size:.82rem;text-align:left;cursor:pointer}#bcf-topics button:hover,#bcf-topics li.active button{background:#cfd4dde6}#bcf-detail{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:.35rem;padding-top:.55rem;border-top:1px solid rgba(198,203,212,.9)}.bcf-title{font-weight:600}.bcf-meta{color:#4a505b;font-size:.74rem}.bcf-text{white-space:pre-wrap;overflow-wrap:anywhere}.bcf-viewpoints{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.35rem}.bcf-shot{display:flex;flex-direction:column;align-items:center;gap:.1rem}.bcf-viewpoints .bcf-link{min-height:0;border:0}.bcf-viewpoints button{min-height:28px;padding:0;background:transparent;border:1px solid rgba(198,203,212,.9);border-radius:4px;color:#2e6db4;font-size:.78rem;cursor:pointer;overflow:hidden}.bcf-viewpoints button:hover{border-color:#2e6db4}.bcf-viewpoints button:not(:has(img)){padding:0 .6rem}.bcf-viewpoints img{display:block;width:150px;height:100px;object-fit:cover}#settings-panel h2,#terrain-panel h2,#storey-shift-panel h2,#section-panel h2,#walk-panel h2,#measure-panel h2,#data-panel h2,#clash-panel h2,#heat-panel h2,#outer-shape-panel h2,#ids-panel h2,#compare-panel h2,#bcf-panel h2{font-size:.95rem;font-weight:600}#settings-panel label,#terrain-panel label,#storey-shift-panel label,.settings-background-row{display:flex;align-items:center;gap:.55rem;font-size:.82rem;line-height:1.35}.settings-background-row label{display:block;flex:1 1 auto;min-width:0}.settings-check-row{display:flex;align-items:center;gap:.55rem;font-size:.82rem;line-height:1.35}#settings-panel .settings-check-row label{flex:1 1 auto;min-width:0;gap:.45rem}.settings-group{padding-top:.6rem;border-top:1px solid #c6cbd4;color:#5b6472;font-size:.74rem;font-weight:600}h2+.settings-group{padding-top:0;border-top:0}.settings-show-row{display:flex;align-items:center;gap:.55rem;font-size:.82rem;line-height:1.35}.show-combo{position:relative;width:min(13rem,58%);margin-left:auto}#setting-show-button{display:flex;align-items:center;width:100%;padding:.25rem .4rem;background:#f5f6f8;border:1px solid #b6bcc7;border-radius:4px;color:#23272e;font-size:.82rem;text-align:left;cursor:pointer}#setting-show-button:focus-visible{outline:2px solid #2e6db4;outline-offset:1px}.show-summary{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.show-caret{flex:0 0 auto;width:0;height:0;margin-left:.4rem;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #4a505b}#setting-show-menu{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:5;display:flex;flex-direction:column;padding:.25rem;background:#f5f6f8fa;border:1px solid #b6bcc7;border-radius:4px;box-shadow:0 8px 24px #23272e2e}#setting-show-menu[hidden]{display:none}#settings-panel #setting-show-menu label{padding:.25rem .35rem;border-radius:3px;cursor:pointer}#setting-show-menu label:hover{background:#cfd4dde6}#settings-panel input[type=number],#settings-panel input[type=text],#settings-panel input[type=password],#settings-panel select,#terrain-panel input[type=number],#terrain-panel input[type=text],#terrain-panel input[type=range],#terrain-panel select{width:4.5rem;margin-left:auto;padding:.25rem .4rem;background:#f5f6f8;border:1px solid #b6bcc7;border-radius:4px;color:#23272e}#terrain-panel input[type=range]{flex:1 1 auto;min-width:7rem;padding:0}#storey-shift-panel input[type=range]{flex:1 1 auto;min-width:7rem}#storey-shift-panel output{width:3.6rem;text-align:right;font-variant-numeric:tabular-nums}.storey-shift-footer{display:flex;align-items:center;justify-content:space-between;gap:.55rem;font-size:.82rem}#settings-panel input[type=color],#terrain-panel input[type=color]{width:2.4rem;height:1.65rem;margin-left:auto;padding:2px;background:#f5f6f8;border:1px solid #b6bcc7;border-radius:4px;cursor:pointer}.settings-default-button{flex:0 0 auto;height:24px;padding:0 .45rem;font-size:.74rem;line-height:1;white-space:nowrap}#settings-panel input[type=color]::-webkit-color-swatch-wrapper,#terrain-panel input[type=color]::-webkit-color-swatch-wrapper{padding:0}#settings-panel input[type=color]::-webkit-color-swatch,#terrain-panel input[type=color]::-webkit-color-swatch{border:0;border-radius:2px}#settings-panel input[type=color]::-moz-color-swatch,#terrain-panel input[type=color]::-moz-color-swatch{border:0;border-radius:2px}#settings-panel input[type=text],#settings-panel select,#terrain-panel select,#terrain-panel input[type=text]{width:min(13rem,58%)}#settings-panel input:disabled{opacity:.65}#terrain-panel input:disabled{opacity:.65}#settings-close,#terrain-close,#storey-shift-close,#section-close,#walk-close,#measure-close,#data-close,#clash-close,#heat-close,#outer-shape-close,#rail-road-close,#ids-close,#compare-close,#bcf-close,#ai-close,#about-close{position:absolute;top:.55rem;right:.55rem}.panel-close{width:32px;height:32px;padding:0;background:transparent;border:0;color:#4a505b;cursor:pointer}.panel-close:before,.panel-close:after{content:"";position:absolute;top:15px;left:9px;width:14px;height:2px;background:currentColor;border-radius:1px}.panel-close:before{transform:rotate(45deg)}.panel-close:after{transform:rotate(-45deg)}.panel-close:hover,.panel-close:focus-visible{color:#2e6db4}.panel-close:focus-visible{outline:2px solid rgba(74,144,217,.35);outline-offset:-3px}.terrain-inline,.terrain-footer{display:flex;align-items:center;gap:.65rem}.terrain-inline label{flex:1 1 0}#terrain-position,#terrain-status,.terrain-attribution{color:#4a505b;font-size:.78rem;line-height:1.35}#terrain-position.invalid{color:#b33a3a;font-weight:600}#terrain-georef-warning{padding:.5rem .6rem;border:1px solid #d4b272;border-radius:4px;background:#fff4d9;color:#80531c;font-size:.78rem;line-height:1.4}#terrain-legend{display:flex;align-items:center;gap:.45rem;color:#4a505b;font-size:.78rem;font-variant-numeric:tabular-nums}#terrain-legend[hidden]{display:none}#terrain-legend-bar{flex:1 1 auto;height:10px;border:1px solid rgba(35,39,46,.25);border-radius:2px}.terrain-footer{justify-content:space-between}.terrain-actions{display:flex;align-items:center;gap:.45rem;margin-left:auto}.panel-primary{height:28px;padding:0 .75rem;background:#f7f8fa;border:1px solid #c9cdd4;border-radius:2px;box-shadow:inset 0 1px #ffffffd9,0 1px 1px #23272e14;color:#23272e;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}.panel-secondary{height:28px;padding:0 .65rem;background:#eef1f5;border:1px solid #c9cdd4;border-radius:2px;box-shadow:inset 0 1px #ffffffbf,0 1px 1px #23272e0d;color:#23272e;font:inherit;font-size:.82rem;font-weight:500;cursor:pointer}.panel-primary:hover:not(:disabled),.panel-secondary:hover:not(:disabled),.panel-primary:focus-visible{background:#fff;border-color:#b6bcc7}.panel-secondary:focus-visible{background:#fff;border-color:#b6bcc7}.panel-primary:disabled,.panel-secondary:disabled{opacity:.5;cursor:default}#error-banner[hidden]{display:none}#error-banner{position:absolute;left:1rem;right:1rem;bottom:1rem;z-index:6;max-width:720px;margin:0 auto;padding:.65rem .9rem;background:#e7e9edf5;border:1px solid #d3a8a8;border-radius:8px;box-shadow:0 8px 24px #23272e24;color:var(--error);font-size:.85rem;line-height:1.45;white-space:pre-line;cursor:pointer}#error-banner.notice{border-color:#d4b272;color:var(--amber)}#model-details-dock.details-open~#error-banner{bottom:calc(24px + 1.5rem)}#load-overlay:not([hidden])~#error-banner,#element-link-notice:not([hidden])~#error-banner{bottom:5.5rem}#welcome-drop-zone,#welcome-panel,#about-panel{position:absolute}#welcome-drop-zone{top:20px;left:15%;right:15%;bottom:calc(75% - 20px);z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:2px dotted var(--accent);border-radius:8px;background:var(--drop-bg);color:var(--accent-text);font-size:1.7rem;font-weight:600;padding:0 1.5rem;pointer-events:none;text-align:center;white-space:normal;transition:top .12s ease,right .12s ease,bottom .12s ease,left .12s ease,background-color .12s ease,box-shadow .12s ease,font-size .12s ease}#welcome-drop-zone .drop-formats{font-size:.7em}#welcome-drop-zone .drop-privacy{margin-top:.5rem;font-size:.6em;font-weight:400}#welcome-panel,#about-panel{top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:1.1rem;width:min(380px,85%);padding:2.5rem 2.25rem;background:#e7e9ed;border:1px solid rgba(55,68,93,.1);border-radius:10px}#welcome-panel{top:66.666%;background:#e7e9ed80}#about-panel{top:66.666%;z-index:4}#welcome-drop-zone[hidden],#welcome-panel[hidden],#about-panel[hidden]{display:none}#viewport-container.dragging.drop-welcome #welcome-drop-zone{inset:12px;z-index:5;background:light-dark(rgba(207,225,249,.7),rgba(42,68,103,.7));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent);font-size:3.1rem}.brand-title{display:flex;align-items:center;gap:0;margin:0;color:#0c1d2e;font-family:Inter,Segoe UI,Arial,sans-serif;font-size:1.7rem;font-weight:700;line-height:1}.brand-title span:last-child{color:#2e6db4;margin-left:.12rem}.brand-icon{width:36px;height:36px;flex:0 0 auto;margin-right:.65rem}#welcome-panel hr,#about-panel hr{width:100%;border:0;border-top:1px solid #c6cbd4}#welcome-open{width:100%;height:34px;padding:0 1rem;font-size:.95rem}#welcome-panel .hint{color:#5c6370;font-size:.85rem}#welcome-about{width:100%;height:30px;padding:0 1rem;font-size:.9rem}#about-panel{position:absolute;align-items:stretch;gap:.85rem;width:min(480px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);padding:2.75rem 2.25rem 2rem;overflow:auto;z-index:4;color:#23272e;line-height:1.45}#about-panel img{align-self:center}#about-panel h2{color:#23272e;font-size:1rem;font-weight:600}#about-panel p{color:#444b57;font-size:.9rem}#about-panel a{color:#2e6db4;font-size:.9rem}#about-panel .powered-by{color:#23272e;font-weight:600}#ai-panel[hidden],#ai-settings[hidden]{display:none}#ai-panel{position:absolute;left:1rem;right:1rem;bottom:1rem;z-index:5;display:flex;flex-direction:column;gap:.45rem;max-width:720px;margin:0 auto;padding:.6rem .8rem;background:#e7e9edf5;border:1px solid #c6cbd4;border-radius:8px;box-shadow:0 8px 24px #23272e24;color:#23272e;font-size:.82rem}#model-details-dock.details-open~#ai-panel{bottom:calc(24px + 1.5rem)}#ai-header{display:flex;align-items:center;gap:.5rem;padding-right:2rem}#ai-title{font-weight:600;white-space:nowrap}.ai-beta{padding:.05rem .35rem;background:#2e6db4;border-radius:3px;color:#fff;font-size:.64rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;vertical-align:.08em}#ai-context{display:flex;flex:1 1 auto;gap:.35rem;min-width:0}.ai-chip{overflow:hidden;max-width:22rem;padding:.1rem .45rem;background:#f5f6f8;border:1px solid #c6cbd4;border-radius:999px;font-size:.76rem;text-overflow:ellipsis;white-space:nowrap}.ai-link{padding:0;background:none;border:0;color:#2e6db4;cursor:pointer;font-size:.76rem}#ai-close{top:.3rem;right:.35rem}#ai-settings{display:grid;grid-template-columns:1fr 1fr;gap:.4rem .8rem;padding:.45rem 0;border-top:1px solid #c6cbd4;border-bottom:1px solid #c6cbd4}#ai-settings label{display:flex;align-items:center;gap:.5rem}#ai-settings label span{flex:0 0 4.2rem}#ai-settings input,#ai-settings select,#ai-input{flex:1 1 auto;min-width:0;padding:.25rem .4rem;background:#f5f6f8;border:1px solid #b6bcc7;border-radius:4px;color:#23272e;font:inherit}#ai-settings input:disabled{opacity:.5}.ai-note,#ai-hint{grid-column:1 / -1;color:#5c6370;font-size:.76rem}#ai-transcript{display:flex;flex-direction:column;gap:.35rem;max-height:30vh;overflow-y:auto}#ai-transcript:empty{display:none}.ai-row{display:flex;gap:.6rem;line-height:1.4}.ai-who{flex:0 0 1.8rem;color:#5c6370;font-size:.76rem;line-height:1.55}.ai-body{flex:1 1 auto;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}.ai-row-user .ai-body{color:#4a505b}.ai-pending progress{display:block;width:100%;height:6px;margin-top:.3rem;accent-color:var(--accent)}.ai-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.35rem}#ai-input-row{display:flex;align-items:flex-end;gap:.5rem}#ai-input{resize:none;line-height:1.4;overflow-y:auto;scrollbar-width:thin}#load-overlay[hidden],#element-link-notice[hidden]{display:none}#load-overlay,#element-link-notice{position:absolute;left:1rem;right:1rem;bottom:1rem;z-index:5;display:flex;align-items:center;gap:.75rem;max-width:720px;margin:0 auto;padding:.65rem .8rem;background:#e7e9edf5;border:1px solid #c6cbd4;border-radius:8px;box-shadow:0 8px 24px #23272e24;color:#23272e;pointer-events:auto}#model-details-dock.details-open~#load-overlay,#model-details-dock.details-open~#element-link-notice{bottom:calc(24px + 1.5rem)}#load-content{flex:1 1 auto;min-width:0}#element-link-notice{pointer-events:none;font-size:.85rem;line-height:1.35}#element-link-notice>div{min-width:0}#element-link-notice-detail{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:.2rem;font-size:.76rem;color:#5c6370}.element-link-spinner{flex:0 0 auto;width:16px;height:16px;border:2px solid #c6cbd4;border-top-color:var(--accent);border-radius:50%;animation:element-link-spin .8s linear infinite}@keyframes element-link-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.element-link-spinner{animation:none}}#load-overlay:not([hidden])~#element-link-notice{bottom:5.5rem}#load-main-row{display:flex;align-items:center;gap:20px}#load-message{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35;font-size:.85rem}#load-progress{flex:1 1 auto;min-width:260px;height:8px;accent-color:var(--accent)}#load-hint{display:block;margin-top:.28rem;color:#5c6370;font-size:.76rem;line-height:1.25;white-space:normal}#load-hint[hidden]{display:none}#load-cancel{flex:0 0 auto;height:24px;padding:0 .55rem;font-size:.8rem}#nav-key-hint[hidden]{display:none}#nav-key-hint{position:absolute;left:50%;bottom:1rem;z-index:4;transform:translate(-50%);max-width:min(520px,calc(100% - 2rem));padding:.4rem .65rem;background:#e7e9edf0;border:1px solid rgba(198,203,212,.9);border-radius:6px;color:#4a505b;font-size:.8rem;line-height:1.3;text-align:center;box-shadow:0 8px 24px #23272e24;pointer-events:none}#model-details-dock.details-open~#nav-key-hint{bottom:calc(24px + 1.5rem)}#terrain-credit{position:absolute;right:.75rem;bottom:5px;z-index:3;display:flex;align-items:center;gap:.5rem;height:20px;padding:0 .45rem;background:#e7e9ede6;border:1px solid rgba(198,203,212,.9);border-radius:2px;color:#4a505b;font-size:.72rem;white-space:nowrap}#terrain-credit[hidden]{display:none}#terrain-credit a{color:inherit}#model-details-dock.details-open~#terrain-credit{bottom:34px}#load-overlay:not([hidden])~#nav-key-hint,#element-link-notice:not([hidden])~#nav-key-hint{bottom:5.5rem}#status-bar{display:flex;align-items:center;gap:.4rem;height:34px;padding:0 .45rem;background:var(--bg-panel);border-top:1px solid var(--border);color:var(--text-dim);font-size:.76rem;font-variant-numeric:tabular-nums;flex:0 0 auto;overflow:hidden;white-space:nowrap}#status-bar button{flex:0 0 auto;min-width:46px;height:24px;padding:0 .55rem}#status-bar button svg{width:14px;height:14px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}#status-bar button:disabled{opacity:.5;cursor:default}#model-details-link{flex:0 0 auto;height:24px;padding:0 .55rem;font-size:.76rem}#model-details-dock.details-open #model-details-link{border-top-right-radius:0;border-bottom-right-radius:0}#viewport-container.dragging:not(.drop-welcome):before,#viewport-container.dragging:not(.drop-welcome):after{position:absolute;left:12px;right:12px;display:flex;align-items:center;justify-content:center;box-sizing:border-box;border:2px dotted var(--accent);border-radius:8px;background:var(--drop-bg);color:var(--accent-text);font-size:2rem;font-weight:600;padding:0 1.5rem;pointer-events:none;text-align:center;white-space:normal}#viewport-container.dragging:not(.drop-welcome):before{content:"Load dropped ifc/ifczip files";top:12px;bottom:12px}#viewport-container.dragging:not(.drop-welcome):after{display:none}#viewport-container.dragging:not(.drop-welcome).drop-split:before{content:"Clear viewer and load dropped ifc files";bottom:calc(50% + 6px)}#viewport-container.dragging:not(.drop-welcome).drop-split:after{content:"Append to previously loaded files";display:flex;top:calc(50% + 6px);bottom:12px}#viewport-container.dragging:not(.drop-welcome):not(.drop-split):before,#viewport-container.dragging:not(.drop-welcome).drop-split.drop-replace:before,#viewport-container.dragging:not(.drop-welcome).drop-split.drop-append:after{background:light-dark(rgba(207,225,249,.7),rgba(42,68,103,.7));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent)}#viewport-container.dragging:not(.drop-welcome).drop-split:after{border-color:#41816c;background:#41816c4d}#viewport-container.dragging:not(.drop-welcome).drop-split.drop-append:after{background:#41816cb3;box-shadow:inset 0 0 0 2px #41816c66}@media(max-width:700px){#load-overlay{align-items:stretch;flex-direction:column}#load-message{white-space:normal}#load-main-row{align-items:stretch;flex-direction:column}#load-progress{flex:0 0 auto;width:100%}#load-hint{width:100%}#load-cancel{align-self:flex-end}}#ai-body,#ai-chat{display:flex;flex-direction:column;gap:.45rem;min-width:0;min-height:0}#ai-panel.script-open{max-width:1180px}#ai-panel.script-open #ai-body{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:.7rem}#ai-panel.script-open #ai-transcript{max-height:min(46vh,430px);flex:1}#ai-script{display:flex;flex-direction:column;gap:.35rem;min-width:0}#ai-script[hidden],#script-tools[hidden]{display:none}#script-toolbar,#script-savebar,#script-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}#script-toolbar button,#script-savebar button{padding:.25rem .6rem}#script-library{margin-left:auto;max-width:15rem}#script-name{width:9rem}#script-params{flex:1;min-width:8rem}#script-editor{height:min(26vh,250px);border:1px solid #c6cbd4;border-radius:6px;background:#fff;overflow:hidden}#script-editor .cm-editor{height:100%;font-size:.78rem}#script-editor textarea{width:100%;height:100%;border:0;padding:.4rem;resize:none;font:.78rem ui-monospace,Consolas,monospace;white-space:pre}#script-output{height:5rem;overflow:auto;padding:.3rem .45rem;border:1px solid #c6cbd4;border-radius:6px;background:#f7f8fa;font:.74rem ui-monospace,Consolas,monospace;white-space:pre-wrap}.script-info{color:#5b6472}.script-warn{color:#9a5b00}.script-error{color:#b3261e}@media(max-width:900px){#ai-panel.script-open #ai-body{grid-template-columns:minmax(0,1fr)}}#ai-panel:not([hidden])~#load-overlay,#ai-panel:not([hidden])~#element-link-notice,#ai-panel:not([hidden])~#nav-key-hint,#ai-panel:not([hidden])~#error-banner{top:1rem;bottom:auto}#settings-panel #licence-key{width:11rem}#licence-status{margin-top:-.2rem;font-size:.76rem;line-height:1.35;color:#5c6370}#licence-status[data-state=licensed]{color:#1b7a3a}#licence-status[data-state=invalid],#licence-status[data-state=expired]{color:#b3261e}#model-overview-overlay,#element-link-overlay{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}.tree-row[data-model-id]{box-shadow:inset -3px 0 var(--model-overview-color, transparent)}#georeferencing-panel[hidden]{display:none}#georeferencing-panel{position:absolute;left:.75rem;right:.75rem;bottom:calc(24px + 1rem);z-index:5;height:var(--geo-panel-height);min-height:250px;display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem;background:var(--bg-panel);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 3px 16px #0002;font-size:.78rem;overflow:auto}.geo-header,.geo-fields,.geo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .7rem}.geo-header{padding-right:1.5rem}.geo-header h2{font-size:.95rem}#geo-close{position:absolute;top:.35rem;right:.35rem}#geo-model{max-width:min(400px,65%)}.geo-header span{color:var(--text-muted)}#georeferencing-panel input,#georeferencing-panel select,#georeferencing-panel button:not(.panel-close){font:inherit;padding:.22rem .35rem}.geo-fields label{display:flex;align-items:center;gap:.3rem}.geo-fields input{width:130px}.geo-fields input[type=number]{width:75px}#geo-metadata{flex-shrink:0;max-height:150px;overflow:auto}#geo-metadata summary{cursor:pointer;font-weight:600}#geo-details{white-space:pre-wrap;overflow-wrap:anywhere;padding:.4rem 0;font-size:.74rem}#geo-warnings{padding-left:1.1rem;color:#80531c}.geo-manual{position:relative}.geo-manual summary{cursor:pointer}.geo-manual>div{position:absolute;bottom:100%;left:0;padding:.7rem;width:390px;background:var(--bg-panel);border:1px solid var(--border-strong);box-shadow:0 3px 10px #0003;z-index:2}.geo-manual input{width:104px;margin:.4rem 0}.geo-confirm{display:flex;gap:.4rem;align-items:center}.geo-table{overflow:auto;flex:1;min-height:80px}.geo-table table{border-collapse:collapse;width:100%;text-align:left}.geo-table th{position:sticky;top:0;background:var(--bg-panel)}.geo-table th,.geo-table td{white-space:nowrap;padding:.28rem .4rem;border-bottom:1px solid var(--border-strong)}.geo-table td input{width:90px}.geo-table td span{display:block;max-width:260px;overflow:hidden;text-overflow:ellipsis;font-size:.72rem}.geo-table tr.selected{background:var(--row-hover);outline:1px solid var(--accent);outline-offset:-1px}.geo-table tr[data-result=FAIL] td:last-child{color:#ab2424;font-weight:700}.geo-table tr[data-result=PASS] td:last-child,.geo-table tr[data-result="H PASS"] td:last-child{color:#126039;font-weight:700}.geo-table td button{border:0;background:none;color:var(--accent-text);cursor:pointer}#geo-summary,#geo-status{overflow-wrap:anywhere}#geo-status{color:var(--text-muted);min-height:1em}#viewport-container{--geo-panel-height: max(250px, min(390px, 58%))}#viewport-container.georeferencing-open #viewport,#viewport-container.georeferencing-open #measure-overlay,#viewport-container.georeferencing-open #section-overlay{height:calc(100% - var(--geo-panel-height) - 50px)}#viewport-container.georeferencing-open #minimap{bottom:calc(24px + 1.5rem + var(--geo-panel-height));max-height:calc(100% - 24px - 2.25rem - var(--geo-panel-height))}.rail-road-context{position:fixed;z-index:1000;padding:.3rem;border:1px solid #bbc5d1;border-radius:.35rem;background:#f5f7fa;box-shadow:0 4px 16px #0003}.rail-road-context[hidden]{display:none}.rail-road-context button{border:0;padding:.5rem .9rem;background:transparent;color:#152536;cursor:pointer}.rail-road-context button:hover,.rail-road-context button:focus-visible{background:#dbe9f6}#open-menu{position:fixed;z-index:100;padding:.3rem;background:var(--bg-panel);color:var(--text);border:1px solid var(--border-strong);border-radius:5px;box-shadow:0 4px 16px #0003}#open-menu[hidden],#export-settings-panel[hidden]{display:none}#open-menu button{display:block;width:100%;padding:.55rem .7rem;text-align:left;border:0;background:transparent;color:inherit;cursor:pointer}#open-menu button:hover,#open-menu button:focus-visible{background:#dce9f7;color:#1f5b99}#open-menu .open-menu-hint{padding:.55rem .7rem;font-size:.8rem;color:var(--text-dim)}#export-settings-panel{position:absolute;left:.75rem;bottom:calc(24px + 1rem);z-index:10;box-sizing:border-box;width:380px;max-width:calc(100% - 1.5rem);max-height:calc(100% - 4rem);overflow:auto;padding:1rem;background:var(--bg-panel);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 4px 16px #0003}#export-settings-panel h2{margin:0 2rem .8rem 0;font-size:1rem}#export-settings-panel label{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.7rem;font-size:.82rem}#export-settings-panel label[hidden]{display:none}#export-settings-panel input[type=text]{width:175px;min-width:0}#export-settings-panel input,#export-settings-panel select{font:inherit}#export-settings-panel p{font-size:.76rem;color:var(--text-dim)}
