:root{--outliner-height: min(380px, 70vh);--outliner-width: min(320px, 100vw);--models-width: min(260px, 100vw);--dock-gap: 8px}.dock-panel{position:absolute;bottom:0;z-index:95;color:var(--text-primary);background:var(--surface);box-shadow:0 4px 16px var(--shadow-panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:12px;transition:transform .25s ease}.dock-panel.dock-collapsed{transform:translateY(100%)}.dock-tab{position:absolute;bottom:100%;left:0;width:34px;height:18px;display:flex;align-items:center;justify-content:center;padding:0;background:var(--surface);border:none;border-radius:0 var(--radius) 0 0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-muted);cursor:pointer}.dock-tab:hover{color:var(--icon-hover)}.dock-tab svg{width:13px;height:13px}.dock-content{display:flex;flex-direction:column;height:var(--outliner-height);padding:12px 14px 14px;gap:8px}.dock-panel [hidden]{display:none!important}.dock-panel button,.dock-panel input{font:inherit;color:inherit;min-width:0}.dock-panel :disabled{opacity:.45;cursor:default}.dock-panel :focus-visible{outline:2px solid var(--accent);outline-offset:-2px}body:has(#outliner-panel:not(.dock-collapsed)){--dock-right: var(--outliner-width)}body:has(#models-panel:not(.dock-collapsed)){--dock-right: calc(var(--outliner-width) + var(--dock-gap) + var(--models-width))}body:has(.dock-panel:not(.dock-collapsed)) #profiler-panel{left:calc(min(var(--dock-right, 0px),50vw) + 16px)!important}#outliner-panel{left:0;width:var(--outliner-width);border-radius:0 var(--radius-lg) 0 0}.outliner-count{font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.outliner-tree{flex:1 1 auto;min-height:60px;padding-bottom:26px;overflow:auto;overscroll-behavior:contain;border-radius:var(--radius);scrollbar-width:thin;scrollbar-color:var(--border-bright) transparent}.outliner-tree.outliner-drop-target{box-shadow:inset 0 0 0 2px var(--accent-border)}.outliner-row{position:relative;display:flex;align-items:center;gap:2px;height:26px;padding:0 4px 0 calc(4px + var(--depth) * 14px);border-radius:var(--radius);cursor:default;-webkit-user-select:none;user-select:none}.outliner-row:before{content:"";position:absolute;top:0;bottom:0;left:13px;width:calc(var(--depth) * 14px);background:repeating-linear-gradient(to right,var(--border-subtle) 0 1px,transparent 1px 14px);pointer-events:none}.outliner-row:hover{background:var(--fill-hover)}.outliner-row[aria-selected=true]{background:var(--accent-fill)}.outliner-row.outliner-drop-target{box-shadow:inset 0 0 0 2px var(--accent-border)}#outliner-panel .outliner-row button{flex:0 0 20px;height:20px;display:flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;border-radius:var(--radius);color:var(--text-muted);cursor:pointer}#outliner-panel .outliner-row button:hover:not(:disabled){color:var(--icon-hover);background:var(--surface-inset)}.outliner-row button svg{width:14px;height:14px}.outliner-expand svg{transition:transform .15s ease}.outliner-expand.expanded svg{transform:rotate(90deg)}.outliner-icon{flex:0 0 16px;display:flex;justify-content:center;color:var(--text-muted)}.outliner-icon svg{width:14px;height:14px}.outliner-name{flex:1;min-width:24px;padding:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.outliner-hidden-entity .outliner-name,.outliner-hidden-entity .outliner-icon{opacity:.5}.outliner-row .outliner-toggle{opacity:0}.outliner-row:hover .outliner-toggle,.outliner-row:focus-within .outliner-toggle,.outliner-row[aria-selected=true] .outliner-toggle,.outliner-toggle[aria-pressed=true]{opacity:1}.outliner-name-input{flex:1;width:24px;padding:2px 6px;background:var(--surface-inset);border:1px solid var(--accent-border);border-radius:var(--radius)}.outliner-feedback{flex:0 0 auto;max-height:72px;overflow:auto;color:#ffd39b;overflow-wrap:anywhere}.outliner-feedback:empty,.outliner-connection:empty{display:none}.outliner-connection,.outliner-empty{color:var(--text-muted);font-size:11px;line-height:1.45}.outliner-menu{position:fixed;top:0;left:0;border-radius:var(--radius);z-index:120;outline:none}.outliner-menu .menu-item:has(>button:disabled)>.toolbar-submenu{display:none}.outliner-menu.flip .menu-item>.toolbar-submenu{left:auto;right:100%;border-radius:var(--radius) 0 var(--radius) var(--radius)}.room-save-trigger{display:flex;flex-direction:column;justify-content:center;width:58px;flex-shrink:0;line-height:15px}@media(max-width:360px){.room-save-trigger{width:48px}}#room-save-state{color:var(--text-muted);font-size:10px;line-height:12px}#room-save-announcement{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.room-save-trigger:disabled{color:var(--text-disabled);cursor:default}.room-save-trigger:focus-visible,#room-save-dialog :focus-visible:not(.props-input),#room-save-feedback :focus-visible{outline:2px solid var(--accent-border);outline-offset:2px}#room-save-dialog{width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:0;color:var(--text-body);background:var(--surface-modal);border:0;border-radius:var(--radius-lg);box-shadow:0 12px 40px var(--shadow-modal)}#room-save-dialog::backdrop{background:var(--overlay-scrim)}.room-save-form{display:flex;flex-direction:column;padding:14px;gap:12px}.room-save-description,.room-save-note{color:var(--text-muted);font-size:12px;line-height:1.5}.room-save-description{margin-top:-6px}.room-save-form label{margin-bottom:-6px}#room-save-name[aria-invalid=true]{border-color:var(--danger)}#room-save-error{color:var(--danger);font-size:12px;line-height:1.5}.room-save-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.room-save-actions button{padding:7px 16px;font:inherit;font-size:12px;color:var(--text-body);background:var(--surface-inset);border:1px solid transparent;border-radius:var(--radius);cursor:pointer}.room-save-actions button:hover:not(:disabled){background:var(--fill-hover)}#room-save-submit{color:var(--accent-text);background:var(--accent-fill);border-color:var(--accent-border)}#room-save-submit:hover:not(:disabled){background:var(--accent-fill-soft)}.room-save-actions button:disabled{opacity:.5;cursor:default}#room-save-feedback{position:fixed;bottom:48px;left:50%;transform:translate(-50%);width:max-content;max-width:min(520px,calc(100vw - 32px));display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:10px 14px;color:var(--text-menu);background:var(--surface);border-radius:var(--radius);box-shadow:0 4px 16px var(--shadow-panel);font-size:12px;line-height:1.5;z-index:120}#room-save-feedback[hidden],#room-save-error[hidden]{display:none}#selection-summary:not([hidden])~#room-save-feedback{bottom:84px}#room-save-feedback span{flex:1 1 220px;overflow-wrap:anywhere}#room-save-feedback button,#room-save-feedback a{padding:0;color:var(--accent);background:transparent;border:0;font:inherit;text-decoration:none;cursor:pointer}#room-save-feedback button:disabled{color:var(--text-disabled);cursor:default}#room-save-feedback button:last-child{color:var(--text-muted)}#room-save-feedback a:hover,#room-save-feedback button:hover{text-decoration:underline}.room-share-trigger{width:58px}@media(max-width:360px){.room-share-trigger{width:48px}}.room-share-trigger:disabled{color:var(--text-disabled);cursor:default}.room-share-trigger:focus-visible{outline:2px solid var(--accent-border);outline-offset:2px}#share-feedback{position:absolute;top:calc(100% + 6px);right:4px;width:max-content;padding:6px 10px;color:var(--text-menu);background:var(--surface);border-radius:var(--radius);box-shadow:0 4px 16px var(--shadow-panel);font-size:12px;line-height:1.4;pointer-events:none}#share-feedback.failed{color:var(--danger)}#share-feedback[hidden]{display:none}#annotation-panel{display:flex;flex-direction:column;gap:8px;color:var(--text-body);font-size:12px}#annotation-panel[hidden]{display:none}body>#annotation-panel{position:absolute;top:var(--toolbar-height, 41px);left:0;width:var(--toolbar-width, 250px);max-height:calc(100vh - var(--toolbar-height, 41px) - 48px);overflow-y:auto;padding:10px;background:var(--surface);border-radius:0 0 var(--radius-lg) 0;box-shadow:0 4px 16px var(--shadow-panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:90}#annotation-panel label{display:flex;flex-direction:column;gap:6px}#annotation-panel label>span{padding-left:2px;font-size:12px;color:var(--text-label)}.annotation-text{width:100%;min-height:100px;resize:vertical;padding:8px;line-height:1.4}.annotation-text:disabled{opacity:.5;cursor:default}#viewpoint-panel{display:flex;flex-direction:column;gap:8px;color:var(--text-body);font-size:12px}#viewpoint-panel[hidden]{display:none}#viewpoint-panel [hidden]{display:none!important}body>#viewpoint-panel{position:absolute;top:var(--toolbar-height, 41px);left:0;width:var(--toolbar-width, 250px);max-height:calc(100vh - var(--toolbar-height, 41px) - 48px);overflow-y:auto;padding:10px;background:var(--surface);border-radius:0 0 var(--radius-lg) 0;box-shadow:0 4px 16px var(--shadow-panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:90}#viewpoint-panel label{display:flex;flex-direction:column;gap:6px}#viewpoint-panel label>span{padding-left:2px;font-size:12px;color:var(--text-label)}.viewpoint-goto{font:inherit;color:inherit;border:1px solid transparent;border-radius:var(--radius);background:var(--surface-inset);padding:5px 10px;cursor:pointer}.viewpoint-goto:hover:not(:disabled){background:var(--fill-hover)}.viewpoint-goto:disabled{opacity:.5;cursor:default}.viewpoint-feedback{white-space:normal;line-height:1.35}#measurement-panel{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--text-body)}#measurement-panel[hidden],#measurement-panel [hidden]{display:none}body:has(>#measurement-panel[data-picking=true])>#annotation-panel{display:none}body>#measurement-panel{position:absolute;top:var(--toolbar-height, 41px);left:0;z-index:90;width:var(--toolbar-width, 250px);max-height:calc(100vh - var(--toolbar-height, 41px) - 48px);overflow-y:auto;padding:10px;background:var(--surface);box-shadow:0 4px 16px var(--shadow-panel);border-radius:0 0 var(--radius-lg) 0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}:is(#object-panel,#properties-panel,body>#annotation-panel):has(#measurement-panel:not([hidden])){max-height:calc(100vh - var(--toolbar-height, 41px) - 48px);overflow-y:auto}body:has(#outliner-panel:not(.dock-collapsed)) :is(#object-panel:has(#measurement-panel:not([hidden])),#properties-panel:has(#measurement-panel:not([hidden])),body>#annotation-panel:has(#measurement-panel:not([hidden])),body>#measurement-panel){max-height:calc(100vh - var(--outliner-height) - var(--toolbar-height, 41px) - 36px)}#measurement-panel p{margin:0;overflow-wrap:anywhere;line-height:1.5}#measurement-panel output{padding-left:2px;font-size:18px;font-variant-numeric:tabular-nums}.measurement-feedback{white-space:normal;line-height:1.35}.measurement-feedback:empty{display:none}.props-actions{display:flex;align-items:center;justify-content:flex-end;gap:2px}.props-actions .props-status{flex:1;white-space:normal;line-height:1.35}.props-actions .tb-btn{width:26px;height:26px}.props-actions .tb-btn svg{width:15px;height:15px}.props-apply:not(:disabled){color:var(--accent)}.tags-editor{display:flex;flex-direction:column;gap:6px}.tags-row{align-items:start}.tags-row textarea{resize:vertical;min-height:44px;max-height:120px;line-height:1.4}#models-panel{left:calc(var(--outliner-width) + var(--dock-gap));width:var(--models-width);border-radius:0 var(--radius-lg) 0 0}#models-panel .dock-tab{border-radius:var(--radius) var(--radius) 0 0}.models-content.models-drop-target{box-shadow:inset 0 0 0 2px var(--accent-border)}.models-heading{display:flex;align-items:baseline;gap:8px;min-width:0}.models-header .tb-btn{width:24px;height:24px;flex:0 0 auto;margin:-5px -4px}.models-header .tb-btn svg{width:15px;height:15px}.models-list{flex:1 1 auto;min-height:60px;margin:0;padding:0 2px 2px 0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-content:start;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-bright) transparent}.models-row{position:relative;min-width:0}.models-row-main{display:flex;flex-direction:column;gap:4px;width:100%;padding:0;background:transparent;border:0;text-align:center;cursor:pointer}.models-pending .models-row-main{cursor:default;color:var(--text-muted)}.models-thumb{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1;background:var(--surface-inset);border:1px solid transparent;border-radius:var(--radius);overflow:hidden}.models-row-main:hover .models-thumb{border-color:var(--accent-border)}.models-row-active .models-thumb,.models-row-active .models-row-main:hover .models-thumb{border-color:var(--accent);background:var(--accent-fill-soft)}.models-row-active .models-name{color:var(--accent-bright)}#models-panel .models-row-main:focus-visible{outline:none}.models-row-main:focus-visible .models-thumb{outline:2px solid var(--accent);outline-offset:-2px}.models-image{width:100%;height:100%;object-fit:contain;pointer-events:none}.models-icon{display:flex;color:var(--text-muted)}.models-icon svg{width:28px;height:28px}.models-name{padding:0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.models-caption{font-size:11px;color:var(--text-faint)}.models-meta{position:absolute;left:4px;bottom:4px;display:flex;align-items:center;padding:1px 5px;border-radius:var(--radius);background:var(--surface);color:var(--text-muted);font-size:10px;font-variant-numeric:tabular-nums}.models-meta:empty{display:none}.models-row[data-state=error] .models-icon{color:#ffd39b}#models-panel .models-action{position:absolute;right:4px;width:22px;height:22px;background:var(--surface);border-radius:var(--radius)}#models-panel .models-action svg{width:13px;height:13px}#models-panel .models-remove{top:4px}#models-panel .models-action:not(.models-remove){top:30px}.models-row .models-remove{opacity:0}.models-row:hover .models-remove,.models-row:focus-within .models-remove{opacity:1}@media(hover:none){.models-row .models-remove{opacity:1}}.models-spinner{width:10px;height:10px;border:1.5px solid var(--border-bright);border-top-color:var(--accent);border-radius:50%;animation:models-spin .8s linear infinite}.models-thumb>.models-spinner{width:18px;height:18px}@keyframes models-spin{to{transform:rotate(360deg)}}#canvas-container.viewport-drop-target:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 0 2px var(--accent-border);pointer-events:none}.models-feedback{transition:opacity 2s ease}.models-feedback.faded{opacity:0}
