:root{--bg: #0f1115;--surface-1: #16191f;--surface-2: #1c2028;--surface-3: #252a34;--viewport: #0b0d10;--line: #2a2f3a;--control-edge: #454d5e;--text: #eceef3;--text-2: #a3abbb;--text-3: #8a92a3;--accent: #f0654f;--accent-strong: #f4836f;--accent-tint: color-mix(in srgb, var(--accent) 14%, transparent);--on-accent: #1d0d09;--gradient-brand: linear-gradient(90deg, #f0954b, #f0654f, #f0538a);--success: #4cc38a;--warning: var(--warning);--danger: #ff8a8a;--danger-bg: #2a1a1d;--danger-edge: #5a2f33;--axis-x: #ff6b61;--axis-y: #5fd07a;--axis-z: #6aa5ff;--bg-panel: var(--surface-1);--bg-panel-alt: var(--surface-2);--border: var(--line);--text-dim: var(--text-2);--font-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading: "Sora", var(--font-body);--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-lg: 15px;--fs-xl: 18px;--fs-2xl: 24px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--r-sm: 4px;--r-md: 6px;--r-lg: 12px;--shadow-lg: 0 18px 48px rgba(0, 0, 0, .55);--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent-strong);--control-h: 32px;font-family:var(--font-body);font-size:var(--fs-md)}h1,h2,h3,h4,.editor-tabs button{font-family:var(--font-heading)}button:focus-visible,a:focus-visible,[role=switch]:focus-visible,summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border) var(--bg-panel)}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:var(--bg-panel)}*::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--r-md);border:2px solid var(--bg-panel)}*::-webkit-scrollbar-thumb:hover{background:var(--accent)}*::-webkit-scrollbar-corner{background:var(--bg-panel)}button,input,select{font-family:inherit;font-size:var(--fs-md)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}:where(input[type=text],input[type=search],input[type=number],input[type=url],input[type=email],input:not([type]),select,textarea){background:var(--bg);border:1px solid var(--control-edge);border-radius:var(--r-md);color:var(--text)}:where(input,textarea)::placeholder{color:var(--text-3)}.centered-page{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative}.login-page{overflow:hidden}.constellation-backdrop{z-index:0;pointer-events:none;opacity:.2}.login-bg-points{position:absolute;top:-10%;right:-10%;bottom:-10%;left:-10%}.page-bg-points{position:fixed;top:-10%;right:-10%;bottom:-10%;left:-10%}.page-content{position:relative;z-index:1}.constellation-edges line{stroke:url(#constellation-gradient);stroke-width:1.6;opacity:.55;transition:opacity .3s ease}.constellation-dot{fill:url(#constellation-gradient);animation:constellation-dot-pulse 7s ease-in-out infinite}@keyframes constellation-dot-pulse{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.constellation-dot{animation:none}}.login-language{position:absolute;top:24px;right:24px;z-index:1}.page-loading{color:var(--text-3)}.login-logo-wrap{position:absolute;top:24px;left:24px;display:flex;align-items:center;gap:8px;z-index:1}.login-icon{height:28px;width:auto}.app-version{color:var(--text-dim);font-size:var(--fs-xs)}.login-footer{position:absolute;bottom:24px;right:24px;z-index:1;display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:var(--fs-xs)}.login-footer-logo{height:16px;width:auto}.storage-usage{color:var(--text-dim);font-size:var(--fs-sm)}.login-card{position:relative;z-index:1;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:40px;display:flex;flex-direction:column;gap:12px;min-width:320px;text-align:center}.login-card:before{content:"";position:absolute;top:-60px;right:-60px;bottom:-60px;left:-60px;z-index:-1;border-radius:50%;background:var(--gradient-brand);filter:blur(70px);opacity:.22}.login-card p{color:var(--text-dim);margin:0 0 12px}.login-wordmark{display:block;width:240px;height:auto;margin:0 auto}.login-error{color:var(--danger);font-size:var(--fs-md);margin:4px 0 0}.login-divider{border:none;border-top:1px solid var(--border);margin:8px 0}.login-dev-hint{color:var(--text-dim);font-size:var(--fs-xs);margin:4px 0 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--control-h);background:var(--surface-2);border:1px solid var(--control-edge);color:var(--text);border-radius:var(--r-md);padding:4px 12px;font-size:var(--fs-md);font-weight:500;line-height:1.2;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.btn:hover:not(:disabled){background:var(--surface-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.btn-danger{background:var(--danger-bg);border-color:var(--danger-edge);color:var(--danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 18%,var(--danger-bg))}.btn-active{background:var(--accent-tint);border-color:color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent-strong)}.toolbar-icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0}.btn-oauth{display:block;text-decoration:none;background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-md);padding:8px 16px}.btn-oauth:hover{border-color:var(--accent)}.page{padding:24px}.page-header{display:flex;align-items:center;gap:16px;margin-bottom:20px}.page-header h1{font-size:var(--fs-xl);margin:0;flex:1}.editor-icon{height:22px;width:auto;flex-shrink:0}.page-header.dashboard-header{display:grid;grid-template-columns:1fr auto 1fr}.page-wordmark{width:200px;height:auto;justify-self:center}.page-header-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.page-footer{position:fixed;bottom:24px;right:24px;z-index:1;display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:var(--fs-xs)}.page-footer-logo{height:16px;width:auto}.project-name-group{display:flex;flex-direction:column;flex:0 1 360px;min-width:0}.project-slug-hint{color:var(--text-dim);font-size:var(--fs-xs);padding:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.project-slug-hint:hover{color:var(--text)}.slug-edit-affordance{color:var(--text-3)}.slug-edit-row{display:flex;align-items:center;gap:4px;padding:0 8px;position:relative}.slug-edit-prefix{color:var(--text-dim);font-size:var(--fs-xs)}.slug-edit-input{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:2px 6px;font-size:var(--fs-xs);width:140px}.slug-warning,.slug-error{position:absolute;top:100%;left:8px;font-size:var(--fs-xs);margin:2px 0 0;white-space:nowrap;z-index:1}.slug-warning{color:var(--warning)}.slug-error{color:var(--danger)}.id-error{color:var(--danger);font-size:var(--fs-xs);margin:4px 0 0}.scene-output-select{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-md);padding:6px 8px}.project-name-input{background:transparent;border:1px solid transparent;color:var(--text);font-size:var(--fs-lg);font-weight:600;padding:4px 8px;border-radius:var(--r-md);width:100%}.project-name-input:hover,.project-name-input:focus{border-color:var(--border);outline:none}.dashboard-toolbar{margin-bottom:16px}.project-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.project-list-item{display:flex;align-items:center;justify-content:space-between;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);padding:12px 16px}.project-list-item a{color:var(--text);text-decoration:none;font-weight:500}.project-list-item a:hover{color:var(--accent)}.admin-users-table{width:100%;border-collapse:collapse;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.admin-users-table th,.admin-users-table td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--border)}.admin-users-table th{color:var(--text-dim);font-size:var(--fs-sm);text-transform:uppercase;font-weight:600}.admin-users-table tr:last-child td{border-bottom:none}.admin-users-table select{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 6px}.admin-you-hint{color:var(--text-dim);font-size:var(--fs-sm);margin-left:6px}.editor-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px}.editor-tabs button{background:none;border:none;color:var(--text-dim);padding:8px 12px;cursor:pointer;border-bottom:2px solid transparent}.editor-tabs button.active{color:var(--text);border-bottom-color:var(--accent)}.editor-body{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.config-panel{display:flex;height:100%;min-height:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.config-nav{width:220px;flex-shrink:0;border-right:1px solid var(--border);padding:12px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.config-search{display:flex;align-items:center;gap:8px;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--r-md);padding:6px 8px;margin-bottom:12px;color:var(--text-dim)}.config-search input{background:none;border:none;color:var(--text);flex:1;min-width:0;padding:0}.config-search input:focus-visible{outline:none;box-shadow:none}.config-navitem{display:flex;align-items:center;gap:8px;padding:8px;border-radius:var(--r-md);font-size:var(--fs-md);color:var(--text-dim);background:none;border:none;text-align:left;cursor:pointer}.config-navitem:hover{background:var(--bg-panel-alt)}.config-navitem.active{background:var(--accent-tint);color:var(--text)}.config-navicon{display:flex;flex-shrink:0;color:var(--text-dim)}.config-navitem.active .config-navicon{color:var(--accent)}.config-navcount{margin-left:auto;font-size:var(--fs-xs);color:var(--text-dim);font-family:var(--font-mono)}.config-main{flex:1;min-width:0;display:flex;min-height:0}.config-fields{flex:1;min-width:0;overflow-y:auto;padding:24px 32px 40px}.config-docs{width:300px;flex-shrink:0;border-left:1px solid var(--border);padding:24px 24px 40px;overflow-y:auto}.config-docs-label{font-family:var(--font-heading);font-weight:600;font-size:var(--fs-md);margin-bottom:8px}.config-docs-empty{color:var(--text-dim);font-size:var(--fs-sm);line-height:1.7;margin:0}.config-docs-empty code{font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--bg-panel-alt);border-radius:var(--r-sm);padding:1px 4px}.config-docs-markdown{color:var(--text-dim);font-size:var(--fs-sm);line-height:1.7}.config-docs-markdown>*:first-child{margin-top:0}.config-docs-markdown>*:last-child{margin-bottom:0}.config-docs-markdown p{margin:0 0 12px}.config-docs-markdown h1,.config-docs-markdown h2,.config-docs-markdown h3,.config-docs-markdown h4{font-family:var(--font-heading);color:var(--text);font-size:var(--fs-md);font-weight:600;margin:16px 0 6px}.config-docs-markdown ul,.config-docs-markdown ol{margin:0 0 12px;padding-left:16px}.config-docs-markdown li{margin-bottom:4px}.config-docs-markdown a{color:var(--accent)}.config-docs-markdown code{font-family:var(--font-mono);font-size:var(--fs-sm);background:var(--bg-panel-alt);border-radius:var(--r-sm);padding:1px 4px}.config-docs-markdown pre{background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--r-md);padding:8px 12px;overflow-x:auto;margin:0 0 12px}.config-docs-markdown pre code{background:none;padding:0}.config-docs-markdown img{max-width:100%;border-radius:var(--r-md);border:1px solid var(--border);margin:4px 0 12px;display:block}.config-docs-markdown strong{color:var(--text)}.config-header{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px}.config-header-icon{width:34px;height:34px;border-radius:var(--r-md);background:var(--accent-tint);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.config-title{font-family:var(--font-heading);font-weight:600;font-size:var(--fs-xl);margin-bottom:4px}.config-desc{color:var(--text-dim);font-size:var(--fs-sm);line-height:1.6;max-width:560px}.config-section{max-width:640px}.cfg-eyebrow{font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-top:16px}.cfg-field-wrap:first-child .cfg-eyebrow{margin-top:0}.cfg-section-line{height:1px;background:var(--border);margin:6px 0 2px}.field-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0}.field-label{color:var(--text-dim);font-size:var(--fs-sm)}.field-row input[type=text],.field-row input[type=number],.field-row select{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 6px;width:140px}.number-input{display:inline-flex;align-items:stretch;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden}.number-input input{background:transparent;border:none;color:var(--text);padding:4px 4px 4px 6px;width:100%;min-width:0}.number-input input:focus{outline:none}.number-input-spin{display:flex;flex-direction:column;flex-shrink:0;border-left:1px solid var(--border)}.number-input-spin button{flex:1;display:flex;align-items:center;justify-content:center;width:14px;border:none;background:transparent;color:var(--text-dim);cursor:pointer;padding:0}.number-input-spin button:hover{background:color-mix(in srgb,var(--border) 50%,transparent);color:var(--text)}.number-input-spin button:first-child{border-bottom:1px solid var(--border)}.field-row .number-input{width:140px}.config-panel .field-row{padding:8px 0;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.config-panel .cfg-field-wrap:last-child .field-row{border-bottom:none}.config-panel .field-label{color:var(--text);font-size:var(--fs-md)}.config-panel .field-label-help{cursor:pointer;text-decoration-line:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:text-decoration-color .12s ease}.config-panel .field-label-help:hover{text-decoration-color:var(--text-dim)}.config-panel .field-row input[type=text],.config-panel .field-row input[type=number],.config-panel .field-row select{border-radius:var(--r-md);padding:6px 8px;width:190px}.config-panel .field-row .number-input{border-radius:var(--r-md);width:190px}.config-panel .field-row .number-input input{padding:6px 4px 6px 8px}.field-row-column{flex-direction:column;align-items:stretch;gap:6px}.toggle{display:inline-flex;position:relative}.toggle-input{position:absolute;width:1px;height:1px;opacity:0}.toggle-track{position:relative;width:32px;height:18px;border-radius:9px;background:var(--surface-3);border:1px solid var(--control-edge);flex-shrink:0;transition:background .15s ease,border-color .15s ease}.toggle-thumb{position:absolute;top:1px;left:1px;width:14px;height:14px;border-radius:50%;background:var(--text-3);transition:left .15s ease,background .15s ease}.toggle-input:checked+.toggle-track{background:var(--accent);border-color:var(--accent)}.toggle-input:checked+.toggle-track .toggle-thumb{left:15px;background:#fff}.toggle-input:disabled+.toggle-track{opacity:.45}.toggle-input:focus-visible+.toggle-track{box-shadow:var(--focus-ring)}.color-field{display:flex;align-items:center;gap:8px}.color-field input[type=color]{width:34px;height:34px;padding:0;border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg-panel-alt);cursor:pointer}.color-field-hex{width:100px!important;font-family:var(--font-mono);font-size:var(--fs-sm)}.url-list{display:flex;flex-direction:column;gap:6px}.url-list-row{display:flex;align-items:center;gap:6px}.url-list-row input[type=text]{flex:1;width:auto}.vec3-input{display:flex;gap:4px}.vec3-input input{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px;width:56px}.vec3-input .number-input{width:56px}.vec3-input .number-input input{padding:4px 2px 4px 4px}.field-row-set{display:flex;gap:6px;padding:4px 0}.field-row-set-item{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.field-row-set-item input[type=number]{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px;width:100%;min-width:0}.field-row-set-item .number-input{width:100%;min-width:0}.field-row-set-item input[type=color]{width:100%}.workspace-wrap,.scripts-tab-wrap{flex:1;min-height:0;display:flex;flex-direction:column}.scripts-tab-wrap{padding:12px}.scene-panel{flex:1;min-height:0;display:flex;flex-direction:column}.scene-body{flex:1;display:grid;grid-template-columns:264px minmax(0,1fr) 320px;min-height:0}.scene-canvas-wrap{background:var(--viewport);overflow:hidden;position:relative;min-width:0}.scene-canvas-aframe{width:100%;height:100%;border:none;display:block}.scene-canvas-aframe-loading{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--text-3);font-size:var(--fs-md)}.scene-sidebar{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;min-width:0;background:var(--surface-1)}.scene-sidebar-left{border-right:1px solid var(--line)}.scene-sidebar-right{border-left:1px solid var(--line);padding:12px 16px 24px}.scene-sidebar-left .scene-tree-wrap{padding:0 8px;flex:1}.add-object-menu{position:relative}.add-object-menu .btn-primary{display:flex;align-items:center;gap:6px}.add-object-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:8px;min-width:200px;max-height:70vh;overflow-y:auto;box-shadow:0 12px 28px #00000073;display:flex;flex-direction:column;gap:2px}.add-object-group+.add-object-group{margin-top:4px;padding-top:6px;border-top:1px solid var(--border)}.add-object-group-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-dim);padding:4px 8px}.add-object-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r-md);background:none;border:none;color:var(--text);font-size:var(--fs-md);text-align:left;cursor:pointer}.add-object-item:hover:not(:disabled){background:var(--bg-panel-alt)}.add-object-item:disabled{opacity:.4;cursor:not-allowed}.add-object-item svg{color:var(--text-dim);flex-shrink:0}.scene-tree,.scene-tree ul{list-style:none;margin:0;padding:0}.scene-tree-node{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text);padding:4px 6px;border-radius:var(--r-sm);cursor:pointer}.scene-tree-node:hover{background:var(--bg-panel-alt)}.scene-tree-row{display:flex;align-items:center;gap:4px}.scene-tree-row .scene-tree-node{flex:1;min-width:0}.scene-tree-duplicate{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:none;border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);cursor:pointer}.scene-tree-eye{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:none;border:none;border-radius:var(--r-sm);color:var(--text-dim);cursor:pointer;opacity:.45}.scene-tree-row:hover .scene-tree-eye,.scene-tree-eye:focus-visible{opacity:1}.scene-tree-eye.is-off{opacity:1;color:var(--accent)}.scene-tree-eye:hover{background:var(--bg-panel-alt)}.scene-tree-node.is-hidden{opacity:.5}.scene-tree-duplicate:hover:not(:disabled){background:var(--bg-panel-alt);border-color:var(--accent)}.scene-tree-duplicate:disabled{opacity:.4;cursor:not-allowed}.scene-tree-node.selected{background:var(--accent-tint);color:var(--text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}.scene-tree-root{font-weight:600;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--border)}.scene-tree-id{color:var(--text-dim);font-size:var(--fs-xs)}.scene-tree-node.selected .scene-tree-id{color:var(--accent-strong)}.scene-tree-node.dragging{opacity:.4}.scene-tree-node.drag-over{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--bg-panel-alt)}.scene-tree-empty,.properties-empty{color:var(--text-dim);font-size:var(--fs-sm)}.properties-panel h3{margin:0 0 8px;font-size:var(--fs-md)}.properties-hint{margin:0 0 12px;font-size:var(--fs-sm);color:var(--text-dim)}.properties-panel .field-row{flex-direction:column;align-items:stretch;gap:4px}.properties-panel .vec3-input{width:100%}.properties-panel .vec3-input>input,.properties-panel .vec3-input .number-input{flex:1;min-width:0;width:auto}.properties-panel .field-row input[type=text],.properties-panel .field-row select{width:100%}.properties-panel>.btn-danger{margin-top:8px;width:100%}.advanced-toggle{width:100%;margin-top:6px;font-size:var(--fs-sm);color:var(--text-dim)}.advanced-section,.custom-section{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.field-row-inline{flex-direction:row!important;align-items:center!important;justify-content:space-between!important}.component-props-block{display:flex;flex-direction:column;gap:2px;margin:6px 0}.component-props-heading{font-size:var(--fs-xs);font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--text-dim);margin-bottom:2px}.custom-row{display:flex;align-items:center;gap:6px}.custom-row input,.custom-add-row input{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 6px;min-width:0;flex:1}.custom-key{color:var(--text-dim);font-size:var(--fs-xs);flex-shrink:0;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-add-row{display:flex;gap:6px}.btn-icon{min-height:28px;padding:2px 8px;line-height:1;flex-shrink:0}.scripts-panel{height:100%;display:grid;grid-template-columns:260px 1fr;gap:12px;min-height:0}.scripts-sidebar{display:flex;flex-direction:column;gap:8px;min-height:0}.scripts-list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md)}.scripts-list .scene-tree-empty{padding:8px}.scripts-add-row{display:flex;flex-direction:column;gap:6px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);padding:8px}.scripts-add-row input,.scripts-add-row select{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 6px}.scripts-editor-wrap{min-height:0;display:flex}.scripts-editor-wrap>.properties-empty{align-self:flex-start;margin-top:8px}.scripts-editor{flex:1;display:flex;flex-direction:column;min-height:0;gap:8px}.scripts-editor-toolbar{display:flex;align-items:center;gap:8px}.scripts-name-input{flex:1;background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:6px 8px}.scripts-editor-toolbar select{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:6px 8px}.scripts-code-wrap{flex:1;min-height:0;position:relative;border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.scripts-codemirror{position:absolute;top:0;right:0;bottom:0;left:0}.scripts-code-wrap .cm-editor{height:100%}.assets-panel{height:100%;display:grid;grid-template-columns:260px 1fr;gap:12px;min-height:0}.assets-sidebar{display:flex;flex-direction:column;gap:8px;min-height:0}.assets-list{overflow-y:auto;flex:1;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);padding:4px}.assets-list .scene-tree-empty{padding:8px}.assets-detail-wrap{min-height:0;display:flex}.assets-detail-wrap>.properties-empty{align-self:flex-start;margin-top:8px}.assets-detail{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.asset-preview{flex:1;min-height:0;background:var(--viewport);display:flex;align-items:center;justify-content:center;overflow:hidden}.asset-preview canvas{width:100%!important;height:100%!important}.asset-preview-image{width:100%;height:100%;object-fit:contain;border:none}.asset-preview-audio-wrap{width:100%;padding:0 16px}.asset-preview-audio{width:100%}.asset-preview-generic{color:var(--text-dim);font-size:var(--fs-sm);letter-spacing:.05em}.asset-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-top:1px solid var(--border)}.asset-card-name{font-size:var(--fs-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.asset-card-info{display:flex;flex-direction:column;gap:2px;min-width:0}.asset-card-link{font-size:var(--fs-xs);color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asset-upload-progress{display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md)}.asset-upload-row{display:flex;justify-content:space-between;gap:8px;font-size:var(--fs-sm)}.asset-upload-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.asset-upload-percent{color:var(--text-dim);font-variant-numeric:tabular-nums}.asset-upload-bar{height:4px;border-radius:var(--r-sm);background:var(--border);overflow:hidden}.asset-upload-bar-fill{height:100%;background:var(--accent);transition:width .15s linear}.asset-add-actions{display:flex;gap:6px}.asset-add-actions .btn{flex:1}.asset-link-form{display:flex;flex-direction:column;gap:8px;padding:8px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md)}.asset-link-form input{width:100%}.asset-link-hint{margin:0;font-size:var(--fs-xs);line-height:1.4;color:var(--text-dim)}.asset-link-actions{display:flex;justify-content:flex-end;gap:6px}.preview-wrap{height:100%;display:flex;flex-direction:column}.preview-hint{color:var(--text-dim);font-size:var(--fs-sm);margin:0 0 8px}.preview-frame{flex:1;width:100%;border:0;background:#fff}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0506089e;display:flex;align-items:center;justify-content:center;z-index:100}.modal-box{position:relative;background:var(--surface-1);border:1px solid var(--control-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:24px;max-width:min(90vw,360px)}.modal-box h3{margin:0 0 16px;font-size:var(--fs-lg);text-align:center}.modal-close{position:absolute;top:8px;right:8px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-dim);font-size:var(--fs-xl);line-height:1;cursor:pointer;border-radius:var(--r-md)}.modal-close:hover{color:var(--text);background:var(--bg-panel-alt)}.qr-modal-code{display:flex;justify-content:center;padding:16px;background:#fff;border-radius:var(--r-md)}.qr-modal-link{display:block;margin-top:16px;text-align:center;color:var(--accent);font-size:var(--fs-md);word-break:break-all}.qr-modal-link:hover{color:var(--accent-strong)}.model-inspector{display:flex;flex-direction:column;gap:6px;margin:6px 0}.model-inspector-tools{display:flex;gap:6px}.model-inspector-tools input{flex:1;min-width:0;background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 6px}.model-inspector-actions{display:flex;gap:6px}.model-inspector-actions .btn{flex:1;font-size:var(--fs-xs);padding:4px 6px}.model-part-list{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-panel);padding:2px 0}.model-part-row{display:flex;align-items:center;gap:4px;padding-right:4px;min-height:24px}.model-part-row:hover{background:var(--bg-panel-alt)}.model-part-row.is-picked{outline:1px solid var(--accent);outline-offset:-1px}.model-part-row.is-hidden .model-part-name{opacity:.45;text-decoration:line-through}.model-part-chevron{width:16px;flex-shrink:0;background:none;border:none;color:var(--text-dim);padding:0;cursor:pointer;font-size:var(--fs-xs);text-align:center}.model-part-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm)}.model-part-mesh{color:var(--text-dim)}.model-part-eye{width:20px;flex-shrink:0;background:none;border:none;color:var(--text);padding:0;cursor:pointer;font-size:var(--fs-sm)}.model-part-eye:disabled,.model-part-xray:disabled{opacity:.3;cursor:not-allowed}.animation-section{display:flex;flex-direction:column;gap:6px;margin:8px 0}.scripts-panel.with-snippets{grid-template-columns:260px 1fr 340px}.scripts-empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.snippets-drawer{display:flex;flex-direction:column;gap:8px;min-height:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);padding:8px}.snippets-header{display:flex;align-items:center;justify-content:space-between}.snippets-header h4{margin:0}.snippets-tabs{display:flex;gap:4px}.snippets-tabs button{flex:1;background:none;border:1px solid var(--border);color:var(--text-dim);border-radius:var(--r-sm);padding:4px 6px;cursor:pointer;font-size:var(--fs-sm)}.snippets-tabs button.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.snippets-search{background:var(--bg-panel-alt);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:6px 8px}.snippets-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.snippets-new{align-self:flex-start}.snippet-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.snippet-item{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-panel-alt);padding:6px 8px}.snippet-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:6px;background:none;border:none;color:var(--text);padding:0;cursor:pointer;text-align:left}.snippet-title{font-weight:600;font-size:var(--fs-md)}.snippet-chevron{color:var(--text-dim);font-size:var(--fs-xs)}.snippet-desc{margin:4px 0 6px;color:var(--text-dim);font-size:var(--fs-sm);line-height:1.4}.snippet-actions{display:flex;flex-wrap:wrap;gap:4px}.snippet-actions .btn{font-size:var(--fs-xs);padding:2px 8px}.snippet-code{margin:8px 0 0;max-height:260px;overflow:auto;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px;font-size:var(--fs-xs);line-height:1.45;white-space:pre}.snippet-form{width:min(680px,92vw);display:flex;flex-direction:column;gap:8px}.snippet-form h3{margin:0 0 4px}.snippet-code-input{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-sm);resize:vertical}.snippet-form-actions{display:flex;justify-content:flex-end;gap:8px}.behaviors-section{display:flex;flex-direction:column;gap:6px;margin:8px 0}.behavior-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:8px 24px 8px 8px;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--r-md)}.behavior-half{display:flex;flex-direction:column;gap:6px}.behavior-half+.behavior-half{padding-top:6px;border-top:1px dashed var(--border)}.behavior-remove{position:absolute;top:4px;right:4px}.behaviors-add{display:flex;flex-direction:column;gap:4px}.behaviors-add .btn{font-size:var(--fs-xs);text-align:left}.bus-monitor{position:absolute;left:8px;right:8px;bottom:8px;max-height:40%;display:flex;flex-direction:column;background:color-mix(in srgb,var(--bg-panel) 92%,transparent);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-xs)}.bus-monitor-head{display:flex;align-items:center;gap:6px;padding:4px 6px;border-bottom:1px solid var(--border)}.bus-monitor-head input{flex:1;min-width:0}.bus-monitor-count{opacity:.6;white-space:nowrap}.bus-monitor-list{overflow-y:auto;padding:2px 0;font-family:ui-monospace,monospace}.bus-monitor-row{display:flex;gap:8px;padding:1px 8px}.bus-monitor-topic{font-weight:600}.bus-monitor-payload{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.75}.bus-monitor-recv{margin-left:auto;opacity:.6}.bus-monitor-unheard .bus-monitor-recv,.bus-monitor-unheard .bus-monitor-topic{color:var(--warning);opacity:1}.bus-monitor-empty{padding:6px 8px;opacity:.6}.audio-asset-field{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.cfg-field-note{margin:2px 0 6px;color:var(--warning)}.audio-mixer{margin:8px 0}.audio-mixer-row{gap:8px;align-items:center}.audio-mixer-row input[type=range]{flex:1;min-width:0}.audio-mixer-value{width:36px;text-align:right;font-size:var(--fs-xs);opacity:.7}.conflict-banner{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;padding:8px 12px;border:1px solid var(--warning);border-radius:var(--r-md);background:color-mix(in srgb,var(--warning) 12%,var(--bg-panel));font-size:var(--fs-md)}.conflict-banner span{flex:1;min-width:240px}.api-tokens{width:min(560px,calc(100vw - 32px));text-align:left}.api-token-new{display:flex;gap:8px;margin:8px 0}.api-token-new input{flex:1;min-width:0}.api-token-created{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--warning);border-radius:var(--r-md);margin:8px 0}.api-token-created code{word-break:break-all;-webkit-user-select:all;user-select:all}.api-token-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.api-token-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--r-md)}.api-token-meta{font-size:var(--fs-xs);opacity:.65}.api-token-mcp{margin:8px 0;font-size:var(--fs-sm)}.api-token-mcp pre{white-space:pre-wrap;word-break:break-all;padding:6px 8px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-panel-alt);font-size:var(--fs-xs);-webkit-user-select:all;user-select:all}.assistant-drawer{display:flex;flex-direction:column;min-height:0}.assistant-header{gap:6px}.assistant-header h4{flex:1}.assistant-settings{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:8px}.assistant-messages{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px 0;font-size:var(--fs-md)}.assistant-msg{padding:6px 8px;border-radius:var(--r-md);overflow-wrap:anywhere}.assistant-msg p{margin:0 0 6px}.assistant-msg pre{white-space:pre-wrap;font-size:var(--fs-sm)}.assistant-user{background:var(--bg-panel-alt);border:1px solid var(--border)}.assistant-thinking summary{cursor:pointer;opacity:.6;font-size:var(--fs-sm)}.assistant-thinking p{opacity:.7;font-size:var(--fs-sm);white-space:pre-wrap}.assistant-tools{list-style:none;padding:0;margin:0 0 6px;font-size:var(--fs-sm);opacity:.8}.assistant-tool-failed,.assistant-error{color:var(--warning)}.assistant-input{display:flex;gap:6px;align-items:flex-end;padding-top:6px}.assistant-input textarea{flex:1;min-width:0;resize:vertical}.variants-section{display:flex;flex-direction:column;gap:6px;margin:8px 0}.variant-group{display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--r-md)}.variant-group-head{display:flex;gap:4px;align-items:center}.variant-group-name,.variant-label{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 6px}.variant-group-name{flex:1;min-width:0;font-weight:600}.variant-choice{border-top:1px dashed var(--border);padding-top:6px}.variant-choice-row{display:flex;gap:4px;align-items:center}.variant-choice-row .btn-icon{flex:none}.variant-label{flex:1;min-width:0}.variant-swatch{flex:none;width:14px;height:14px;border-radius:50%;border:1px solid var(--border)}.variant-editor{display:flex;flex-direction:column;gap:6px;margin:6px 0 2px 16px}.variant-inline{display:inline-flex;gap:6px;align-items:center}.variant-chips{display:flex;flex-wrap:wrap;gap:4px}.variant-chip{font-size:var(--fs-xs);padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:transparent;color:inherit;cursor:pointer}.variant-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.variant-add-choice{font-size:var(--fs-xs);align-self:flex-start}.configurator-controls,.net-feed-controls{display:flex;flex-direction:column;gap:6px;margin:8px 0}.configurator-embed-code{margin:0;padding:8px;max-height:220px;overflow:auto;font-size:var(--fs-xs);line-height:1.4;white-space:pre;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--r-sm)}.new-project-modal{width:min(90vw,460px);max-width:none;display:flex;flex-direction:column;gap:12px}.new-project-modal .field-row input[type=text]{width:100%}.template-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.template-choice{display:flex;flex-direction:column;gap:4px;text-align:left;padding:8px 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg-panel-alt);color:var(--text);cursor:pointer;font:inherit}.template-choice span{font-size:var(--fs-sm);color:var(--text-dim)}.template-choice.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.new-project-actions{display:flex;justify-content:flex-end;gap:8px}.kbd{font:500 var(--fs-xs) var(--font-mono);color:var(--text-3);border:1px solid var(--line);border-radius:var(--r-sm);padding:1px 6px}.tooltip{position:fixed;z-index:1000;transform:translate(-50%,-100%);display:inline-flex;align-items:center;gap:var(--sp-2);padding:4px 8px;background:var(--surface-3);border:1px solid var(--control-edge);border-radius:var(--r-md);box-shadow:0 6px 18px #00000073;color:var(--text);font-size:var(--fs-sm);white-space:nowrap;pointer-events:none}.tooltip-below{transform:translate(-50%)}.tooltip .kbd{color:var(--text-2)}.toast-region{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:900;display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--sp-3);min-width:280px;max-width:min(560px,calc(100vw - 32px));padding:8px 8px 8px 12px;background:var(--surface-3);border:1px solid var(--control-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);font-size:var(--fs-md);animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.toast-icon{display:inline-flex;flex-shrink:0}.toast-success .toast-icon{color:var(--success)}.toast-error .toast-icon{color:var(--danger)}.toast-info .toast-icon{color:var(--text-2)}.toast-message{flex:1;min-width:0;overflow-wrap:anywhere}.toast-action{flex-shrink:0;background:none;border:0;padding:4px 8px;border-radius:var(--r-md);color:var(--accent-strong);font:600 var(--fs-md) var(--font-body);text-decoration:none;cursor:pointer}.toast-action:hover{background:var(--accent-tint)}.toast-close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;background:none;border:0;border-radius:var(--r-md);color:var(--text-3);cursor:pointer}.toast-close:hover{background:var(--surface-2);color:var(--text)}.confirm-overlay{z-index:950}.confirm-box{width:min(440px,calc(100vw - 32px));max-width:none}.confirm-box h3{margin:0 0 8px;font-size:var(--fs-lg)}.confirm-message{margin:0;color:var(--text-2);line-height:1.5}.confirm-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-6)}.language-select{min-height:var(--control-h);padding:0 8px;font-size:var(--fs-sm)}@media (prefers-reduced-motion: reduce){.toast{animation:none}}.editor-shell{height:100vh;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.scripts-tab-wrap>.scripts-panel{flex:1;height:auto}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--control-h);height:var(--control-h);flex-shrink:0;padding:0;border:0;border-radius:var(--r-md);background:transparent;color:var(--text-2);cursor:pointer}.icon-btn:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn.is-on{background:var(--accent-tint);color:var(--accent-strong)}.btn-small{min-height:28px;padding:2px 10px;font-size:var(--fs-sm);gap:6px}.link-btn{background:none;border:0;padding:0;color:var(--accent-strong);font:inherit;cursor:pointer}.link-btn:hover:not(:disabled){text-decoration:underline}.chip{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:0 10px;border-radius:13px;border:1px solid var(--line);background:var(--surface-2);color:var(--text-2);font:500 var(--fs-sm) var(--font-body);cursor:pointer}.chip:hover{color:var(--text)}.chip.is-on{background:var(--accent-tint);border-color:color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent-strong)}.chip-count{color:var(--text-3);font-size:var(--fs-xs)}.chip.is-on .chip-count{color:inherit}.editor-topbar{height:52px;flex-shrink:0;display:flex;align-items:center;gap:8px;padding:0 12px 0 10px;background:var(--surface-1);border-bottom:1px solid var(--line);position:relative;z-index:20}.editor-logo{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;border-radius:var(--r-md);background:transparent;cursor:pointer}.editor-logo:hover{background:var(--surface-3)}.editor-logo img{height:22px;width:auto}.editor-crumb{display:flex;align-items:center;gap:4px;min-width:0;color:var(--text-3)}.editor-crumb>a{color:var(--text-3);text-decoration:none;padding:4px 6px;border-radius:var(--r-sm)}.editor-crumb>a:hover{color:var(--text);background:var(--surface-3)}.editor-crumb .project-name-group{flex:0 1 auto;min-width:0}.editor-crumb .project-name-input{font-family:var(--font-heading);font-size:var(--fs-md);padding:1px 6px;width:auto;max-width:360px}.editor-crumb .project-slug-hint{background:none;border:0;text-align:left;font-family:var(--font-body);line-height:1.3;padding:0 7px;color:var(--text-3)}.save-status{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:4px 8px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text-3);font:var(--fs-sm) var(--font-body);white-space:nowrap;cursor:default}.save-status:not(:disabled){cursor:pointer}.save-status:not(:disabled):hover{background:var(--surface-3);color:var(--text)}.save-status-dot{width:7px;height:7px;border-radius:50%;background:var(--success)}.save-status.is-dirty .save-status-dot,.save-status.is-saving .save-status-dot{background:var(--warning)}.save-status.is-saving .save-status-dot{animation:save-pulse .9s ease-in-out infinite alternate}.save-status.is-error,.save-status.is-conflict{color:var(--danger)}.save-status.is-error .save-status-dot,.save-status.is-conflict .save-status-dot{background:var(--danger)}@keyframes save-pulse{to{opacity:.3}}.editor-topbar-spacer{flex:1}.editor-topbar-sep{width:1px;height:20px;background:var(--line);margin:0 4px}.publish-menu-wrap{position:relative}.publish-menu{position:absolute;top:calc(100% + 8px);right:0;width:380px;max-height:calc(100vh - 80px);overflow-y:auto;padding:8px;background:var(--surface-2);border:1px solid var(--control-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:2px;z-index:30}.publish-menu-status{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 8px 6px}.publish-menu-status strong{font:600 var(--fs-md) var(--font-heading)}.publish-menu-badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);white-space:nowrap}.publish-menu-badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.publish-menu-badge.is-live{color:var(--success)}.publish-menu-badge.is-changed{color:var(--warning)}.publish-menu-url{display:flex;align-items:center;gap:4px;margin:2px 8px 8px;padding:0 2px 0 10px;height:34px;background:var(--bg);border:1px solid var(--control-edge);border-radius:var(--r-md)}.publish-menu-url a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--fs-sm) var(--font-mono);color:var(--text-2);text-decoration:none}.publish-menu-url a:hover{color:var(--text)}.publish-menu-url .icon-btn{width:28px;height:28px}.publish-menu-main{margin:0 8px 6px;min-height:36px}.publish-menu-sep{height:1px;background:var(--line);margin:6px 4px}.publish-menu-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text);font:var(--fs-md) var(--font-body);text-align:left;cursor:pointer}.publish-menu-item:hover:not(:disabled){background:var(--surface-3)}.publish-menu-item:disabled{opacity:.45;cursor:not-allowed}.publish-menu-item>svg{flex-shrink:0;color:var(--text-2)}.publish-menu-item>span{flex:1;min-width:0}.publish-menu-item small{display:block;color:var(--text-3);font-size:var(--fs-sm);margin-top:2px}.publish-menu-expert{cursor:default}.publish-menu-expert select{min-height:28px;font-size:var(--fs-sm);padding:0 6px}.publish-history{margin:0 4px 4px 40px}.publish-history ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.publish-history li{display:flex;align-items:center;gap:8px;padding:2px 0;font-size:var(--fs-sm)}.publish-history-version{font:500 var(--fs-sm) var(--font-mono);width:32px}.publish-history-meta{flex:1;min-width:0;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.publish-history .btn-small{min-height:24px;padding:0 8px;text-decoration:none}.editor-main{flex:1;min-height:0;display:flex}.editor-rail{width:52px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;background:var(--surface-1);border-right:1px solid var(--line)}.rail-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text-2);cursor:pointer}.rail-btn:hover{background:var(--surface-3);color:var(--text)}.rail-btn.is-on{background:var(--accent-tint);color:var(--accent-strong)}.editor-rail-spacer{flex:1}.editor-rail-lang{width:44px;padding:0 2px;font:600 var(--fs-xs) var(--font-mono);text-align:center;text-transform:uppercase;background:transparent;border-color:transparent;color:var(--text-2);cursor:pointer}.editor-rail-lang:hover{background:var(--surface-3)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 8px}.panel-head h2{margin:0;font:600 var(--fs-md) var(--font-heading)}.panel-head-actions{display:flex;gap:4px}.panel-head-actions .add-object-popover{right:auto;left:0}.panel-search{display:flex;align-items:center;gap:8px;margin:0 12px 8px;padding:0 10px;height:var(--control-h);background:var(--bg);border:1px solid var(--control-edge);border-radius:var(--r-md);color:var(--text-3)}.panel-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.panel-search input{flex:1;min-width:0;border:0;background:transparent;padding:0;outline:none;box-shadow:none}.panel-search input:focus-visible{box-shadow:none}.panel-empty{margin:8px 12px;color:var(--text-3);font-size:var(--fs-sm);line-height:1.5}.panel-hint{color:var(--text-3);font-size:var(--fs-sm);line-height:1.45}.scene-tree-hint{margin:0;padding:12px;border-top:1px solid var(--line)}.viewport-tools{position:absolute;top:12px;display:flex;align-items:center;gap:2px;padding:4px;background:color-mix(in srgb,var(--surface-1) 92%,transparent);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 8px 24px #00000059;z-index:5}.viewport-tools-left{left:12px}.viewport-tools-right{right:12px;flex-wrap:wrap;justify-content:flex-end;max-width:calc(100% - 180px)}.viewport-tools-sep{width:1px;height:20px;background:var(--line);margin:0 4px}.viewport-drop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;display:flex;align-items:flex-end;justify-content:center;padding-bottom:32px;background:#f0654f0f;outline:2px dashed color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:-10px}.viewport-drop.is-over{background:#f0654f1f}.viewport-drop-label{padding:6px 12px;border-radius:var(--r-md);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:var(--fs-sm);pointer-events:none}.viewport-hint{position:absolute;left:14px;bottom:14px;z-index:4;color:var(--text-3);font-size:var(--fs-sm);pointer-events:none}.asset-library{display:flex;flex-direction:column;min-height:100%}.asset-filters{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 12px}.asset-grid-scroll{flex:1;padding:0 12px}.asset-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.asset-card{display:flex;flex-direction:column;width:100%;padding:0;overflow:hidden;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);color:var(--text);text-align:left;cursor:pointer}.asset-card[draggable=true]{cursor:grab}.asset-card:hover{border-color:var(--control-edge)}.asset-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}.asset-thumb{height:84px;display:flex;align-items:center;justify-content:center;background:var(--viewport);color:var(--text-3)}.asset-thumb-model{color:#8fb3ff}.asset-thumb-audio{color:var(--accent-strong)}.asset-thumb-pdf{color:#f2c94c}.asset-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.asset-card-meta{display:flex;flex-direction:column;gap:2px;padding:6px 8px 8px;min-width:0}.asset-card-title{font-size:var(--fs-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-card-kind{font-size:var(--fs-xs);color:var(--text-3)}.asset-library .asset-upload-progress{margin:12px 12px 0}.asset-dropzone{margin:12px;padding:14px 12px;border:1.5px dashed var(--control-edge);border-radius:var(--r-md);display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;color:var(--text-2);font-size:var(--fs-sm)}.asset-dropzone.is-active{border-color:var(--accent);background:var(--accent-tint)}.asset-library .asset-link-form,.asset-library form{margin:12px}.asset-library-error{margin:0 12px 12px}.asset-details{display:flex;flex-direction:column;gap:12px}.asset-details-preview{height:220px;border-radius:var(--r-md);overflow:hidden;background:var(--viewport);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}.asset-details-preview>*{max-width:100%;max-height:100%}.asset-details-preview canvas{width:100%!important;height:100%!important}.asset-details-name{margin:0;font:600 var(--fs-lg) var(--font-heading);overflow-wrap:anywhere}.asset-details-body .panel-hint{margin:4px 0 0}.asset-details-actions{display:flex;gap:8px;margin-top:12px}.settings-dialog{width:min(1180px,calc(100vw - 32px));height:min(780px,calc(100vh - 32px));max-width:none;padding:0;display:flex;flex-direction:column;overflow:hidden}.settings-dialog-head{display:flex;align-items:center;gap:12px;padding:14px 16px 14px 20px;border-bottom:1px solid var(--line)}.settings-dialog-head h2{margin:0;font:600 var(--fs-xl) var(--font-heading)}.settings-dialog-note{flex:1;color:var(--text-3);font-size:var(--fs-sm)}.settings-dialog-body{flex:1;min-height:0;display:flex}.settings-dialog-body>.config-panel{flex:1;border:0;border-radius:0}.preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;flex-direction:column;background:var(--bg)}.preview-overlay-bar{height:52px;flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 12px 0 16px;background:var(--surface-1);border-bottom:1px solid var(--line)}.preview-overlay-bar strong{font:600 var(--fs-md) var(--font-heading)}.preview-overlay-hint{color:var(--text-3);font-size:var(--fs-sm)}.preview-overlay-body{flex:1;min-height:0;display:flex}.preview-overlay-msg{margin:auto}.shortcuts-dialog{width:min(640px,calc(100vw - 32px));max-width:none}.shortcuts-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px}.shortcuts-groups h4{margin:0 0 8px;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-3)}.shortcuts-groups dl{margin:0}.shortcuts-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 0;border-bottom:1px solid var(--line)}.shortcuts-row dt{color:var(--text-2)}.shortcuts-row dd{margin:0;display:flex;gap:4px;flex-shrink:0}.editor-shell .conflict-banner{border-radius:0;border-width:0 0 1px}@media (prefers-reduced-motion: reduce){.save-status.is-saving .save-status-dot{animation:none}}.scene-sidebar.scene-sidebar-left{overflow:visible;position:relative;z-index:6;min-height:0}.scene-sidebar-left .scene-tree-wrap{flex:1;min-height:0;overflow-y:auto}.scene-sidebar-left .asset-library{height:100%;min-height:0}.scene-sidebar-left .asset-grid-scroll{min-height:0;overflow-y:auto}.segmented{display:inline-flex;padding:2px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md)}.segmented button{min-height:24px;padding:0 12px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--text-3);font:500 var(--fs-sm) var(--font-body);cursor:pointer}.segmented button:hover{color:var(--text)}.segmented button.is-on{background:var(--surface-3);color:var(--text)}.properties-panel{display:flex;flex-direction:column}.insp-header{display:flex;align-items:center;gap:10px;padding-bottom:10px}.insp-header-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:var(--r-md);background:var(--accent-tint);color:var(--accent-strong)}.insp-header-text{flex:1;min-width:0;display:flex;flex-direction:column}.insp-header-text h3{margin:0;font:600 var(--fs-lg) var(--font-heading)}.insp-header-type{color:var(--text-3);font-size:var(--fs-sm)}.properties-panel .insp-name-input{width:100%;padding:1px 6px;margin-left:-6px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--text);font:600 var(--fs-lg) var(--font-heading)}.properties-panel .insp-name-input:hover{border-color:var(--line)}.properties-panel .insp-name-input:focus{border-color:var(--accent);background:var(--bg)}.insp-delete:hover:not(:disabled){color:var(--danger);background:var(--danger-bg)}.insp-level{padding-bottom:12px;margin-bottom:4px;border-bottom:1px solid var(--line)}.insp-section{border-bottom:1px solid var(--line)}.insp-section-head{display:flex;align-items:center;gap:4px}.insp-section-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:12px 0;border:0;background:none;color:var(--text);text-align:left;cursor:pointer}.insp-section-toggle svg{flex-shrink:0;color:var(--text-3)}.insp-section-title{font:600 var(--fs-sm) var(--font-heading);letter-spacing:.02em}.insp-section-summary{margin-left:auto;color:var(--text-3);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insp-section-body{padding:0 0 14px;display:flex;flex-direction:column;gap:2px}.insp-expert-note,.cfg-expert-note{margin:12px 0 0}.axis-number{display:inline-flex;align-items:stretch;min-width:0;flex:1}.axis-label{display:inline-flex;align-items:center;justify-content:center;width:18px;flex-shrink:0;border:1px solid var(--control-edge);border-right:0;border-radius:var(--r-md) 0 0 var(--r-md);background:var(--surface-2);color:var(--text-3);font:600 10px var(--font-mono);cursor:ew-resize;-webkit-user-select:none;user-select:none;touch-action:none}.axis-label.axis-x{color:var(--axis-x);background:color-mix(in srgb,var(--axis-x) 12%,var(--bg))}.axis-label.axis-y{color:var(--axis-y);background:color-mix(in srgb,var(--axis-y) 12%,var(--bg))}.axis-label.axis-z{color:var(--axis-z);background:color-mix(in srgb,var(--axis-z) 12%,var(--bg))}.axis-number .number-input{flex:1;min-width:0;border-radius:0 var(--r-md) var(--r-md) 0}.properties-panel .vec3-input .axis-number .number-input input{width:100%;min-width:0}.properties-panel .vec3-input{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.number-input{background:var(--bg);border-color:var(--control-edge);border-radius:var(--r-md)}.scene-tree-node{display:flex;align-items:center;gap:8px;min-height:28px;padding:2px 8px;border-radius:var(--r-md);color:var(--text-2)}.scene-tree-node:hover{color:var(--text)}.scene-tree-icon{display:inline-flex;color:var(--text-3);flex-shrink:0}.scene-tree-node.selected .scene-tree-icon{color:var(--accent-strong)}.scene-tree-name{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.scene-tree-node .scene-tree-id{margin-left:auto;padding-left:8px;color:var(--text-3);font-size:var(--fs-xs);white-space:nowrap}.scene-tree-root{gap:8px}.scene-tree-search{margin:0 0 6px}.config-docs-lang{margin:0 0 8px;color:var(--text-3);font-size:var(--fs-sm);font-style:italic}.settings-dialog-head .segmented{margin-right:8px}.new-project-modal{width:min(640px,calc(100vw - 32px))}.template-choice{padding:0 0 10px;overflow:hidden;gap:2px}.template-choice strong,.template-choice>span:not(.template-choice-art){padding:0 12px}.template-choice strong{margin-top:8px;font:600 var(--fs-md) var(--font-heading)}.template-choice-art{display:block;height:84px;overflow:hidden;border-bottom:1px solid var(--line)}.template-choice-art svg,.dash-template-art svg,.dash-card-pic svg{display:block;width:100%;height:100%}.template-choice.selected{box-shadow:0 0 0 2px var(--accent-tint)}.menu-popover{position:absolute;z-index:40;min-width:220px;padding:6px;background:var(--surface-2);border:1px solid var(--control-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.menu-item{display:flex;align-items:center;width:100%;min-height:32px;padding:6px 10px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text);font:var(--fs-md) var(--font-body);text-align:left;text-decoration:none;cursor:pointer}.menu-item:hover{background:var(--surface-3)}.menu-item.is-danger{color:var(--danger)}.menu-sep{height:1px;background:var(--line);margin:4px 2px}.menu-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 10px;color:var(--text-2)}.dash{min-height:100vh;display:flex;flex-wrap:wrap;background:var(--bg)}.dash-side{flex:1 1 220px;max-width:248px;min-height:100vh;position:sticky;top:0;align-self:flex-start;display:flex;flex-direction:column;gap:2px;padding:16px 12px;background:var(--surface-1);border-right:1px solid var(--line)}.dash-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 20px;font:600 var(--fs-lg) var(--font-heading)}.dash-brand img{height:24px}.dash-nav{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 10px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text-2);font:500 var(--fs-md) var(--font-body);text-align:left;cursor:pointer}.dash-nav:hover{background:var(--surface-2);color:var(--text)}.dash-nav.is-on{background:var(--accent-tint);color:var(--text)}.dash-nav.is-on svg{color:var(--accent-strong)}.dash-nav-count{margin-left:auto;color:var(--text-3);font:var(--fs-xs) var(--font-mono)}.dash-side-spacer{flex:1}.dash-plan{display:flex;flex-direction:column;gap:8px;padding:12px;margin-bottom:8px;border:1px solid var(--line);border-radius:var(--r-lg);font-size:var(--fs-sm)}.dash-plan-row{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text-2)}.dash-plan-value{color:var(--text);font-family:var(--font-mono)}.dash-plan-badge{padding:2px 8px;border-radius:10px;background:var(--surface-3);color:var(--text);font-size:var(--fs-xs)}.account-menu{position:relative}.dash-account{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;border:0;border-radius:var(--r-md);background:transparent;color:var(--text);font:var(--fs-md) var(--font-body);cursor:pointer}.dash-account:hover{background:var(--surface-2)}.dash-account img,.dash-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0}.dash-avatar{display:inline-flex;align-items:center;justify-content:center;background:#3b4a6b;color:#dfe6f5;font-size:var(--fs-sm);font-weight:600}.dash-account-name{flex:1;min-width:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-popover{bottom:calc(100% + 6px);left:0;right:0}.dash-main{flex:999 1 560px;min-width:0;padding:28px 40px 24px;display:flex;flex-direction:column}.dash-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:24px}.dash-head h1{flex:1;margin:0;font:600 var(--fs-2xl) var(--font-heading)}.dash-search{margin:0;width:260px}.dash-welcome{max-width:640px;margin:-8px 0 24px;color:var(--text-2);line-height:1.5}.dash-h2{margin:0 0 12px;font:600 var(--fs-md) var(--font-heading);color:var(--text-2)}.dash-templates{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:32px}.dash-template{display:flex;flex-direction:column;padding:0;overflow:hidden;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--text);text-align:left;cursor:pointer}.dash-template:hover{border-color:var(--control-edge)}.dash-template-art{height:92px;display:block}.dash-templates.is-hero .dash-template-art{height:140px}.dash-template-text{display:flex;flex-direction:column;gap:2px;padding:10px 12px 12px}.dash-template-text strong{font-weight:500}.dash-template-text span{color:var(--text-3);font-size:var(--fs-sm)}.dash-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.dash-bar .dash-h2{flex:1;margin:0}.dash-sort{min-height:30px;font-size:var(--fs-sm);padding:0 8px}.dash-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.dash-card{display:flex;flex-direction:column;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-lg)}.dash-card:hover{border-color:var(--control-edge)}.dash-card.is-loading{height:210px;background:linear-gradient(90deg,var(--surface-1),var(--surface-2),var(--surface-1));background-size:200% 100%;animation:dash-shimmer 1.4s ease-in-out infinite}@keyframes dash-shimmer{to{background-position:-200% 0}}.dash-card-pic{position:relative;display:block;aspect-ratio:16 / 9;overflow:hidden;border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--viewport)}.dash-card-pic img{width:100%;height:100%;object-fit:cover;display:block}.dash-badge{position:absolute;top:10px;left:10px;display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:11px;background:#0f1115d9;color:var(--text);font-size:var(--fs-xs);font-weight:500}.dash-badge .dot{width:6px;height:6px;border-radius:50%;background:var(--text-3)}.dash-badge.is-live .dot{background:var(--success)}.dash-badge.is-changed .dot{background:var(--warning)}.dash-card-text{display:flex;align-items:center;gap:8px;padding:10px 8px 10px 14px}.dash-card-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.dash-card-title strong{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-card-title small{color:var(--text-3);font-size:var(--fs-sm)}.dash-card-title input{width:100%;min-height:28px;padding:0 6px}.card-menu{position:relative}.card-menu .menu-popover{right:0;top:calc(100% + 4px)}.dash-footer{margin-top:auto;padding-top:32px;display:flex;gap:8px;color:var(--text-3);font-size:var(--fs-xs)}.tour{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500}.tour-spot{position:fixed;border-radius:var(--r-lg);box-shadow:0 0 0 9999px #050608a8;outline:2px solid var(--accent-strong);pointer-events:none;transition:all .2s ease}.tour-bubble{position:fixed;padding:16px 16px 12px;background:var(--surface-2);border:1px solid var(--control-edge);border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}.tour-step{color:var(--accent-strong);font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.tour-bubble h3{margin:6px 0;font:600 var(--fs-lg) var(--font-heading)}.tour-bubble p{margin:0 0 14px;color:var(--text-2);line-height:1.5}.tour-actions{display:flex;align-items:center;gap:6px}.shortcuts-tour{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;padding:10px 12px;border-radius:var(--r-md);background:var(--accent-tint);color:var(--text)}@media (prefers-reduced-motion: reduce){.dash-card.is-loading{animation:none}.tour-spot{transition:none}}.field-label-wrap{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}button.field-label-help{align-self:flex-start;padding:0;border:0;background:none;font:inherit;text-align:left}.field-desc{color:var(--text-3);font-size:var(--fs-sm);line-height:1.4;max-width:460px}.config-panel .field-row{gap:24px;padding:10px 0}.env-picker{padding-bottom:12px;margin-bottom:4px;border-bottom:1px solid var(--line)}.env-picker>.properties-hint{margin:0 0 12px;max-width:560px}.env-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}.env-card{display:flex;flex-direction:column;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);color:var(--text);text-align:left;cursor:pointer}.env-card:hover{border-color:var(--control-edge)}.env-card.is-on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}.env-art{display:block;height:56px}.env-sky{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.env-ground{position:absolute;left:0;right:0;bottom:0;height:36%}.env-off-mark{color:var(--text-3);font-size:var(--fs-xl)}.env-label{padding:6px 8px 7px;font-size:var(--fs-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
