*{box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background-color:#1e1e1e;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{margin:0;padding:0;height:100%;width:100%;overflow:hidden}.file-tree{display:flex;flex-direction:column;height:100%;background:#1e1e2e;border-right:1px solid #333;min-width:180px;max-width:250px}.file-tree-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid #333;background:#252536}.file-tree-title{font-size:11px;font-weight:600;color:#888;letter-spacing:.5px}.file-tree-add{background:transparent;border:none;color:#888;font-size:18px;cursor:pointer;padding:0 4px;line-height:1;transition:color .2s}.file-tree-add:hover{color:#4a9eff}.file-tree-content{flex:1;overflow-y:auto;padding:4px 0}.file-tree-empty{padding:12px;color:#666;font-size:12px;text-align:center}.file-tree-item-container{-webkit-user-select:none;user-select:none}.file-tree-item{display:flex;align-items:center;padding:4px 8px;cursor:pointer;transition:background .1s;gap:6px}.file-tree-item:hover{background:#4a9eff1a}.file-tree-item.active{background:#4a9eff33}.file-tree-icon{font-size:12px;flex-shrink:0}.file-tree-name{font-size:13px;color:#ccc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.file-tree-delete{background:transparent;border:none;color:#666;font-size:14px;cursor:pointer;padding:0 2px;line-height:1;opacity:0;transition:opacity .2s,color .2s}.file-tree-item:hover .file-tree-delete{opacity:1}.file-tree-delete:hover{color:#ff6b6b}.file-tree-active-checkbox{width:14px;height:14px;margin:0;cursor:pointer;accent-color:#4a9eff;flex-shrink:0}.file-tree-item.inactive{opacity:.5}.file-tree-item.inactive .file-tree-name{text-decoration:line-through;color:#888}.file-tabs{display:flex;background:#1e1e2e;border-bottom:1px solid #333;overflow-x:auto;flex-shrink:0}.file-tabs::-webkit-scrollbar{height:4px}.file-tabs::-webkit-scrollbar-track{background:#1e1e2e}.file-tabs::-webkit-scrollbar-thumb{background:#444;border-radius:2px}.file-tab{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#252536;border-right:1px solid #333;cursor:pointer;transition:background .1s;white-space:nowrap;min-width:80px;max-width:180px}.file-tab:hover{background:#2a2a3e}.file-tab.active{background:#2d2d44;border-bottom:2px solid #4a9eff;margin-bottom:-1px}.tab-name{font-size:12px;color:#aaa;overflow:hidden;text-overflow:ellipsis}.file-tab.active .tab-name{color:#fff}.dirty-indicator{color:#f0a030;font-size:8px}.tab-close{background:transparent;border:none;color:#666;font-size:14px;cursor:pointer;padding:0;line-height:1;opacity:0;transition:opacity .2s,color .2s;margin-left:auto}.file-tab:hover .tab-close,.file-tab.active .tab-close{opacity:1}.tab-close:hover{color:#ff6b6b}.error-panel{position:absolute;bottom:0;left:0;right:0;background:#1e1e2e;border-top:1px solid #ff6b6b;max-height:150px;display:flex;flex-direction:column;z-index:100}.error-panel-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#252536;border-bottom:1px solid #333;flex-shrink:0}.error-panel-title{font-size:12px;font-weight:600;color:#ff6b6b}.error-panel-close{background:transparent;border:none;color:#888;font-size:16px;cursor:pointer;padding:0 4px;line-height:1}.error-panel-close:hover{color:#fff}.error-panel-content{flex:1;overflow-y:auto;padding:4px 0}.error-item{display:flex;align-items:flex-start;gap:8px;padding:6px 12px;border-bottom:1px solid #2a2a3e}.error-item:last-child{border-bottom:none}.error-icon{font-size:14px;flex-shrink:0;margin-top:2px}.error-details{display:flex;flex-direction:column;gap:2px;min-width:0}.error-type{font-size:11px;font-weight:600;color:#ff6b6b;text-transform:uppercase}.error-message{font-size:12px;color:#ccc;word-break:break-word}.error-file{font-size:11px;color:#666;font-family:monospace}.error-missing_file .error-type{color:#f0a030}.error-circular_reference .error-type{color:#ff6b6b}.error-invalid_prim_path .error-type{color:#f0a030}.error-parse_error .error-type{color:#ff6b6b}.dialog-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:#252536;border-radius:8px;box-shadow:0 4px 20px #0006;min-width:320px;max-width:90vw}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #333}.dialog-header h3{margin:0;font-size:14px;font-weight:600;color:#fff}.dialog-close{background:transparent;border:none;color:#888;font-size:20px;cursor:pointer;padding:0;line-height:1}.dialog-close:hover{color:#fff}.dialog-content{padding:16px;display:flex;flex-direction:column;gap:8px}.dialog-content label{font-size:12px;color:#aaa}.dialog-content input{padding:8px 12px;background:#1e1e2e;border:1px solid #444;border-radius:4px;color:#fff;font-size:13px;outline:none;transition:border-color .2s}.dialog-content input:focus{border-color:#4a9eff}.dialog-error{font-size:12px;color:#ff6b6b}.dialog-hint{font-size:11px;color:#666}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid #333}.dialog-actions button{padding:8px 16px;border-radius:4px;font-size:13px;cursor:pointer;transition:background .2s}.btn-cancel{background:transparent;border:1px solid #444;color:#aaa}.btn-cancel:hover{background:#333;color:#fff}.btn-create{background:#4a9eff;border:none;color:#fff}.btn-create:hover{background:#3a8eef}.stage-hierarchy{display:flex;flex-direction:column;height:100%;background:#1e1e2e;border-left:1px solid #333;min-width:180px;max-width:280px}.stage-hierarchy-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid #333;background:#252536}.stage-hierarchy-title{font-size:11px;font-weight:600;color:#888;letter-spacing:.5px}.stage-hierarchy-content{flex:1;overflow-y:auto;padding:4px 0}.stage-hierarchy-empty{padding:12px;color:#666;font-size:12px;text-align:center}.prim-item-container{-webkit-user-select:none;user-select:none}.prim-item{display:flex;align-items:center;padding:4px 8px;cursor:pointer;transition:background .1s;gap:6px}.prim-item:hover{background:#4a9eff1a}.prim-item.selected{background:#4a9eff33}.prim-expand{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:10px;color:#888;flex-shrink:0}.prim-expand.expandable{cursor:pointer}.prim-expand.expandable:hover{color:#4a9eff}.prim-icon{font-size:12px;flex-shrink:0;width:16px;text-align:center}.prim-icon.xform{color:#f0a040}.prim-icon.sphere{color:#4a9eff}.prim-icon.cube{color:#50c878}.prim-icon.cylinder{color:orchid}.prim-icon.cone{color:#ff6b6b}.prim-icon.reference{color:gold}.prim-info{display:flex;flex-direction:column;min-width:0;flex:1}.prim-name{font-size:13px;color:#ccc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prim-type{font-size:10px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prim-badge{font-size:9px;padding:1px 4px;border-radius:3px;background:#ffd70033;color:gold;flex-shrink:0}.prim-badge.ref{background:#ffd70033;color:gold}.prim-badge.payload{background:#4a9eff33;color:#4a9eff}.prim-item.unresolved{opacity:.7}.prim-name.unresolved-name{font-style:italic;color:#999}.prim-badge.unresolved{background:#ff6b6b33;color:#ff6b6b}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.app-header{flex-shrink:0;height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background-color:#252526;border-bottom:1px solid #3c3c3c}.app-header h1{margin:0;font-size:16px;font-weight:500;color:#ccc}.file-toolbar{display:flex;gap:8px;align-items:center}.toolbar-button{background:#3c3c3c;border:1px solid #555555;color:#ccc;padding:6px 12px;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .2s,border-color .2s}.toolbar-button:hover:not(:disabled){background:#4a4a4a;border-color:#666}.toolbar-button:active:not(:disabled){background:#555}.toolbar-button:disabled{opacity:.5;cursor:not-allowed}.toolbar-button.recording{background:#c33;border-color:#f44;color:#fff;animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.main-container{flex:1;display:flex;overflow:hidden}.sidebar{flex-shrink:0;width:200px;min-width:150px;max-width:300px;overflow:hidden;display:flex;flex-direction:column;background:#1e1e2e;border-right:1px solid #3c3c3c}.workspace{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.workspace-content{flex:1;display:flex;overflow:hidden}.editor-panel{flex:1;min-width:300px;overflow:hidden;border-right:1px solid #3c3c3c;display:flex;flex-direction:column}.viewer-panel{flex:1;min-width:300px;overflow:hidden;position:relative;display:flex}.viewer-content{flex:1;position:relative;overflow:hidden}.no-file-message{display:flex;align-items:center;justify-content:center;height:100%;color:#666;font-size:14px;text-align:center;padding:20px;background:#1e1e1e}.app.loading{display:flex;align-items:center;justify-content:center;background:#1e1e1e}.loading-message{color:#888;font-size:16px}.toolbar-button.reset-button{background:#4a3030;border-color:#6a4040}.toolbar-button.reset-button:hover:not(:disabled){background:#5a3838;border-color:#7a5050}
