:root{--brand:#00497c;--brand-dark:#00355d;--cyan:#009fe3;--bg:#f2f4f6;--panel:#fff;--line:#d7e0e8;--text:#1c2430;--muted:#5f7078}body{color:var(--text);margin:0;font-family:Poppins,-apple-system,Segoe UI,system-ui,sans-serif}.login-wall{box-sizing:border-box;background:#f4f6f9;justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{box-sizing:border-box;text-align:center;background:#fff;border-radius:8px;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:340px;padding:36px 28px;display:flex;box-shadow:0 4px 24px #00000014}.login-logo{height:40px}.login-card h1{color:var(--brand);margin:0;font-size:22px}.login-card .hint,.login-card .error{margin:0}.login-button{justify-content:center;align-items:center;gap:8px;width:100%;padding:10px 16px;font-size:15px;display:inline-flex}.login-locale{align-self:center}.app{flex-direction:column;height:100dvh;display:flex;position:relative;overflow:hidden}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:10px;padding:8px 12px;display:flex;position:relative}.toolbar-logo{width:auto;height:24px}.toolbar-title{flex-direction:column;gap:2px;line-height:1.1;display:flex}.toolbar-title h2{margin:0}.tool-group{align-items:center;gap:4px;display:flex}.toolbar-label{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:12px}.checkbox-inline{color:var(--muted);white-space:nowrap;cursor:pointer;flex-shrink:0;align-items:center;gap:6px;font-size:12px;display:flex}.toolbar button,.toolbar select,.viewport-toolbar button,.viewport-toolbar select{box-sizing:border-box;height:32px}.toolbar select,.viewport-toolbar select{white-space:nowrap}.viewport-toolbar{z-index:5;background:var(--panel);border-radius:8px;align-items:center;gap:10px;padding:6px 10px;display:flex;position:absolute;bottom:12px;left:12px;box-shadow:0 2px 8px #0003}.spacer{flex:1}.auth-bar{align-items:center;gap:8px;display:flex}.auth-bar button{gap:6px;padding:7px 10px}.auth-status{color:var(--muted);font-size:12px}.toolbar-menu{align-items:center;display:flex}.toolbar-menu-toggle,.menu-caption{display:none}.toolbar-secondary{align-items:center;gap:10px;display:flex}@media (width<=480px){.toolbar{gap:6px;padding:6px 8px}.toolbar-title .auth-status{display:none}.toolbar-title h2{white-space:nowrap;font-size:15px}.toolbar-menu-toggle{align-items:center;display:inline-flex}.toolbar-secondary{display:none}.toolbar-secondary.open{z-index:20;background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;min-width:200px;padding:8px;display:flex;position:absolute;top:100%;right:8px;box-shadow:0 4px 16px #00000026}.toolbar-secondary.open button{justify-content:flex-start;align-items:center;gap:8px;width:100%;display:flex}.toolbar-secondary.open .menu-caption{display:inline}.viewport-toolbar{right:12px;overflow-x:auto}.viewport-toolbar>*{flex-shrink:0}}.modal-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);box-sizing:border-box;border-radius:8px;width:420px;max-height:80vh;padding:16px;overflow-y:auto}.modal-wide{width:560px}.modal-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.modal-header h2{margin:0;font-size:16px}.settings-heading{margin:8px 0 4px;font-size:14px}.modal-settings{flex-direction:column;display:flex;overflow:hidden}.settings-scroll{border-bottom:1px solid var(--line);flex:1;min-height:0;margin-top:4px;overflow-y:auto}.center-row{border-top:1px solid var(--line)}.center-row>:not(summary){margin-bottom:8px}.center-title{cursor:pointer;align-items:baseline;gap:8px;padding:10px 2px;list-style:none;display:flex}.center-title::-webkit-details-marker{display:none}.center-title:before{content:"▸";color:var(--brand);transition:transform .15s;display:inline-block}.center-row[open]>.center-title:before{transform:rotate(90deg)}.center-actions{align-items:center;gap:6px;display:flex}.center-actions button:not(.icon-button){align-items:center;gap:4px;padding:5px 10px;display:inline-flex}.center-search{flex-direction:column;gap:4px;display:flex}.center-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.center-fields label{flex-direction:column;gap:2px;font-size:12px;display:flex}.center-fields input{box-sizing:border-box;width:100%}@media (width<=480px){.center-fields{grid-template-columns:1fr}}.layout{flex:1;min-height:0;display:flex;position:relative}.viewer{flex:1}.viewer.place-cursor{cursor:crosshair}.place-tooltip{pointer-events:none;background:var(--brand-dark);color:#fff;white-space:nowrap;z-index:10;border-radius:4px;padding:3px 6px;font-size:12px;position:absolute}.panel{box-sizing:border-box;background:var(--bg);border-left:1px solid var(--line);flex-shrink:0;width:380px;padding:16px;transition:width .2s;position:relative;overflow-y:auto}.panel.collapsed{border-left:none;width:0;padding:0;overflow:hidden}.panel-toggle{z-index:6;border-radius:6px 0 0 6px;padding:6px;transition:right .2s;position:absolute;top:12px;right:380px}.panel-toggle.collapsed{right:0}@media (width<=900px){.panel{z-index:7;width:min(380px,85vw);height:100%;position:absolute;top:0;right:0;box-shadow:-2px 0 8px #00000040}.panel-toggle{right:min(380px,85vw)}}.field{flex-direction:row;align-items:center;gap:6px;margin-bottom:4px;font-size:12px;display:flex}.field>span:first-child{width:78px;color:var(--muted);flex-shrink:0}.field input,.field select{flex:1;min-width:0}.field-stack{flex-direction:column;gap:4px;margin-bottom:4px;font-size:12px;display:flex}.field-stack>label{color:var(--muted)}.input-row{gap:6px;display:flex}.input-row input{flex:1;min-width:0}.field-group{align-items:center;gap:4px;margin-bottom:4px;font-size:12px;display:flex}.field-group-label{width:78px;color:var(--muted);flex-shrink:0}.section-label{width:100%;color:var(--muted);white-space:nowrap;font-size:12px}.model-info-table{border-collapse:collapse;width:100%;margin-bottom:10px;font-size:12px}.model-info-table th,.model-info-table td{text-align:left;border-bottom:1px solid var(--line);padding:4px 8px 4px 0}.model-info-table th{width:90px;color:var(--muted);flex-shrink:0;font-weight:500}.model-info-table tr:last-child th,.model-info-table tr:last-child td{border-bottom:none}.field-group-sublabel{color:var(--muted);flex-shrink:0}.field-group input{flex:1;min-width:0}.checkbox{flex-direction:row;align-items:center;gap:6px;margin-bottom:10px;font-size:13px;display:flex}h2{color:var(--brand);font-size:14px}input,select,textarea{border:1px solid var(--line);box-sizing:border-box;border-radius:4px;padding:4px;font-family:inherit;font-size:14px}textarea{box-sizing:border-box;width:100%;font-family:monospace;font-size:12px}button{background:var(--brand);color:#fff;cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;padding:7px;font-family:inherit;font-size:13px;display:inline-flex}.icon-button{color:var(--muted);background:0 0;border-radius:4px;padding:2px}.icon-button.active{color:var(--brand)}.icon-button:hover:not(:disabled){background:var(--bg);color:var(--brand)}button:hover:not(:disabled){background:var(--brand-dark)}button:disabled{background:var(--muted);cursor:default;opacity:.6}.icon-button:disabled{opacity:.4;background:0 0}.tabs{gap:4px;margin-bottom:6px;display:flex}.tabs button{background:var(--panel);color:var(--brand);border:1px solid var(--line)}.tabs button:hover:not(:disabled):not(.active){color:#fff}.tabs button.active{background:var(--brand);color:#fff;font-weight:600}.tool-group button{background:var(--panel);color:var(--brand);border:1px solid var(--line)}.tool-group button:hover:not(:disabled):not(.active){color:#fff}.tool-group button.active{background:var(--brand);color:#fff;border-color:var(--cyan);box-shadow:0 0 0 2px var(--cyan)}.tool-group button:disabled{background:var(--bg);color:var(--muted);border-color:var(--line)}.viewport-toolbar select:disabled{color:var(--muted);cursor:default}.main-tabs{margin-bottom:12px}.main-tabs button{flex:1 1 0;min-width:0;padding-left:2px;padding-right:2px}.main-tabs .caption{text-overflow:ellipsis;max-width:100%;overflow:hidden}.btn-captioned{flex-direction:column;gap:2px;padding:6px 8px}.btn-captioned .caption{white-space:nowrap;font-size:10px;line-height:1.1}@media (width<=480px){.btn-captioned{padding:7px}.btn-captioned .caption{display:none}}.snippet-output{position:relative}.snippet-output textarea{padding-right:56px}.snippet-copy{position:absolute;top:8px;right:8px}.edit-fieldset{border:0;min-width:0;margin:0;padding:0;display:contents}.edit-fieldset:disabled .section{opacity:.6}.section{background:var(--panel);border:1px solid var(--line);border-radius:6px;margin-bottom:10px;padding:8px}.section summary{cursor:pointer;color:var(--brand);font-weight:600;list-style:none}.section summary::-webkit-details-marker{display:none}.section summary:before{content:"▸";margin-right:6px;transition:transform .15s;display:inline-block}.section[open] summary:before{transform:rotate(90deg)}.section>:not(summary){margin-top:8px}.outliner-row,.layer-row{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 0;font-size:13px;display:flex}.layer-row .error{overflow-wrap:anywhere;flex-basis:100%;margin:0 0 0 22px;font-size:12px}.layer-group-heading{color:var(--muted);margin:10px 0 2px;font-size:12px;font-weight:600}.add-layer-toggle{align-items:center;gap:6px;margin:6px 0;display:flex}.layer-add-form{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.layer-edit{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.layer-edit-actions{align-items:center;gap:6px;display:flex}.layer-edit-actions select{min-width:0}.outliner-row.selected{background:var(--bg);border-radius:4px}.clickable{cursor:pointer}.ifc-element-row.selected,.outliner-row.clickable.selected,.material-row.selected{background:var(--brand);color:var(--panel);border-radius:4px}.ifc-element-row.guid-selected:not(.selected),.outliner-row.clickable.guid-selected:not(.selected),.material-row.guid-selected:not(.selected){background:color-mix(in srgb, var(--brand) 25%, transparent);border-radius:4px}.outliner-label{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;flex:6em;min-width:0;overflow:hidden}.layer-row input[type=text]{flex:1;min-width:0}.badge{background:var(--line);color:var(--text);border-radius:10px;padding:2px 6px;font-size:11px}.badge.ready{color:#1c6b34;background:#d7f0dc}.badge.converting{color:#8a5a00;background:#fdeecb}.badge.error{color:#99202f;background:#f6d3d8}.badge.inactive{color:#555;background:#e0e0e0}.error{color:#b00020}.hint{color:var(--muted);margin:0 0 8px;font-size:12px}.search-results{border:1px solid var(--line);background:var(--panel);border-radius:6px;max-height:140px;margin:4px 0 0;padding:0;list-style:none;overflow-y:auto}.search-results li{cursor:pointer;border-bottom:1px solid var(--line);padding:6px 8px;font-size:12px}.search-results li:last-child{border-bottom:none}.search-results li:hover{background:var(--bg)}.status{color:var(--muted)}.row{gap:6px;margin-bottom:6px;display:flex}.row input{flex:1;min-width:0}.dropzone{border:2px dashed var(--line);text-align:center;color:var(--muted);background:var(--panel);cursor:pointer;border-radius:6px;margin-bottom:8px;padding:16px;font-size:13px}.dropzone.over{border-color:var(--cyan);color:var(--text)}.dropzone-compact{padding:8px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ifc-element-list{max-height:260px;overflow-y:auto}.ifc-element-row{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:4px 0;font-size:12px;display:flex}.ifc-element-row:last-child{border-bottom:none}.material-row{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:4px 0;font-size:12px;display:flex}.material-row:last-child{border-bottom:none}.material-row .outliner-label{flex:auto;min-width:0}.material-row.fill .outliner-label{flex:0 auto}.material-row.fill.aligned .outliner-label{text-overflow:ellipsis;white-space:nowrap;flex:0 0 11em;overflow:hidden}.material-row.fill select{flex:1;min-width:0}.checkbox.spread .grow{flex:1}.material-row input{flex:1;min-width:60px}.badge.pending{color:var(--brand);background:#e3ecf5}.badge.public{color:var(--brand);background:#d9eefb}.mono{word-break:break-all;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:11px}.auth-error-banner{color:#99202f;background:#f6d3d8;flex-shrink:0;align-items:center;gap:8px;padding:6px 12px;font-size:13px;display:flex}.auth-error-banner span{flex:1}.draw-banner{background:var(--brand-dark);color:#fff;z-index:10;pointer-events:none;border-radius:4px;padding:6px 10px;font-size:12px;position:absolute;top:12px;left:12px}.release-row{border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:6px;margin-bottom:8px;padding:8px;display:flex}.release-header{align-items:center;gap:6px;display:flex}.upload-progress{flex-direction:column;gap:4px;margin-top:8px;display:flex}.upload-progress progress{width:100%;height:8px;accent-color:var(--brand)}.file-list{flex-direction:column;gap:4px;margin:4px 0 0;padding:0;font-size:12px;list-style:none;display:flex}.file-list li{flex-wrap:wrap;align-items:baseline;gap:2px 8px;display:flex}.release-links{flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.btn-captioned.danger:not(:disabled){background:#99202f}.btn-captioned.danger:hover:not(:disabled){background:#7a1826}.conflict-banner{background:#fff8e1;border:1px solid #e0a800;border-radius:4px;flex-direction:column;gap:6px;margin:6px 0;padding:8px 10px;font-size:13px;display:flex}.badge.editing{color:#7a5b00;background:#fff3cd;align-items:center;display:inline-flex}.load-more{width:100%;margin-top:4px}.startup-spinner{border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite startup-spin}@keyframes startup-spin{to{transform:rotate(360deg)}}button.secondary{background:var(--bg);color:var(--text);border:1px solid var(--line)}button.secondary:hover:not(:disabled){background:var(--line);color:var(--text)}.version-row{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.version-actions{gap:2px;margin-left:auto;display:inline-flex}.version-upload{flex-direction:column;align-items:flex-start;gap:6px;margin-top:8px;display:flex}.choice-box{border:1px solid var(--line);background:var(--bg);border-radius:6px;margin-top:8px;padding:8px;font-size:13px}.choice-box p{margin:0 0 6px}.subversion-choice{border:none;margin:0;padding:0;font-size:13px}.subversion-choice legend{color:var(--muted);margin-bottom:4px;padding:0;font-size:12px}.subversion-choice .checkbox{margin-bottom:4px}.outliner-child{padding-left:46px}.outliner-toggle{justify-content:center;width:18px;display:inline-flex}.outliner-toggle-spacer{flex-shrink:0;width:18px}.subversion-list .outliner-row{flex-wrap:nowrap;padding:3px 6px}.subversion-list .outliner-row>*{flex-shrink:0}.subversion-list .outliner-row>.outliner-label{flex:auto}.subversion-list .outliner-row>.hint{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;margin:0;overflow:hidden}.subversion-list .subversion-row{padding-left:26px}.outliner-row.clickable.selected .hint{color:inherit;opacity:.85}.outliner-error{flex-basis:100%;margin:0;font-size:12px}.row-actions{flex-basis:100%;justify-content:flex-end;align-items:center;gap:2px;display:flex}.appearance-editor{flex-wrap:wrap;align-items:center;gap:4px 8px;display:inline-flex}.appearance-editor input[type=text]{width:110px}.appearance-editor .checkbox{margin-bottom:0}.appearance-editor input[type=color]{border:1px solid var(--line);width:28px;height:22px;padding:0}.appearance-editor input[type=range]{width:70px}.appearance-badge{align-items:center;gap:4px;display:inline-flex}.color-swatch{border:1px solid var(--line);border-radius:3px;width:14px;height:14px;display:inline-block}.material-row .appearance-editor{flex-basis:100%;padding-left:12px}.material-row .appearance-editor input[type=text]{flex:1;min-width:90px}.material-row{flex-wrap:wrap}.material-row .appearance-editor input[type=checkbox],.material-row .appearance-editor input[type=color],.material-row .appearance-editor input[type=range]{flex:none;min-width:0}.subtabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;margin-bottom:8px;padding-bottom:6px;display:flex}.subtabs button{background:var(--panel);color:var(--brand);border:1px solid var(--line);padding:4px 8px;font-size:12px}.subtabs button:hover:not(:disabled){background:var(--brand-dark);color:#fff}.subtabs button.active{background:var(--brand);color:#fff;border-color:var(--brand)}.clip-row{cursor:pointer}.clip-row.selected{background:#f5c4001f;outline:2px solid #f5c400}.breadcrumb{box-sizing:border-box;background:#eef3f8;border-bottom:1px solid #d5dde6;flex-shrink:0;align-items:center;gap:4px;min-width:0;height:34px;padding:6px 12px;font-size:.85rem;display:flex}.breadcrumb button{color:#003a70;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:2px;min-width:0;padding:2px 6px;display:inline-flex}.breadcrumb button:hover{color:#003a70;background:#d5e2ef}.breadcrumb button span,.breadcrumb-current{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.breadcrumb-current{min-width:0;font-weight:600}.breadcrumb-placeholder{color:#6b7a89;padding:0 6px;font-style:italic}.sub-tabs{margin-bottom:8px}.modal-configurator{flex-direction:column;width:min(960px,96vw);max-height:92vh;display:flex}.configurator-body{flex:1;gap:16px;min-height:0;display:flex}.configurator-preview{flex-direction:column;flex:0 0 340px;gap:6px;display:flex}.material-preview{background:#2b2f36;border-radius:6px;width:100%;height:340px;position:relative;overflow:hidden}.preview-shapes{gap:4px;display:flex}.configurator-form{border:0;flex:1;min-width:0;padding:0 4px 0 0;overflow-y:auto}.texture-slot{border-top:1px solid var(--line);padding:6px 0}.texture-slot-header{align-items:center;gap:6px;display:flex}.texture-slot-header select{flex:1;min-width:0}.texture-slot-params{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 8px;margin-top:6px;display:grid}.configurator-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.set-editor{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}@media (width<=800px){.configurator-body{flex-direction:column;overflow-y:auto}.configurator-preview{flex:none}.configurator-form{overflow:visible}}.configurator-form .field>span:first-child{width:150px}.texture-slot-params .field{flex-direction:column;align-items:stretch;gap:2px}.texture-slot-params .field>span:first-child{width:auto}.debug-overlay{z-index:20;color:#fff;background:#000000b8;border-radius:6px;max-width:460px;padding:8px 10px;font:12px/1.5 monospace;position:absolute;top:8px;left:8px}.debug-overlay label{display:block}.debug-overlay input[type=number]{width:56px}.debug-row{align-items:center;gap:8px;margin:4px 0;display:flex}.debug-overlay table{border-collapse:collapse;width:100%}.debug-overlay th,.debug-overlay td{text-align:right;padding:1px 6px}.debug-overlay th:first-child,.debug-overlay td:first-child{text-align:left}.debug-hint{color:#bbb;margin:4px 0 0}.process-bar{z-index:5;background:var(--panel);border-radius:8px;max-width:calc(100% - 24px);font-size:12px;position:absolute;top:12px;left:12px;box-shadow:0 2px 8px #0003}.process-bar.failed{border-left:3px solid var(--danger,#c0392b)}.process-summary{width:100%;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:6px 10px;display:flex}.process-bar .process-summary:hover:not(:disabled){color:inherit;background:#0000000d}.process-model{font-weight:600}.process-list{flex-direction:column;gap:6px;max-height:40vh;margin:0;padding:0 10px 8px;list-style:none;display:flex;overflow-y:auto}.process-list li{flex-direction:column;gap:3px;display:flex}.process-line{align-items:center;gap:6px;display:flex}.process-list progress{width:100%;height:6px}.spin{animation:1s linear infinite process-spin}@keyframes process-spin{to{transform:rotate(360deg)}}.large-model-hint{background:#fff8e1;border:1px solid #e0a800;border-radius:4px;flex-direction:column;gap:6px;margin:6px 0;padding:8px 10px;font-size:13px;display:flex}.large-model-hint .hint{margin:0}.badge.large{color:#7a5600;background:#fff3cd}
