:root{--background:#1a1a1a;--background-secondary:#242424;--text:#fff;--text-muted:#888;--border:#333}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif}#root{width:100%;height:100vh}#app-shell{color:#fff;background:#111;grid-template-rows:40px minmax(0,1fr) 24px;height:100vh;display:grid;overflow:hidden}#shell-toolbar{background:#1a1a1a;border-bottom:1px solid #2e2e2e}.shell-toolbar-content{align-items:center;gap:8px;height:100%;padding:0 12px;display:flex}.toolbar-left{align-items:center;gap:8px;min-width:0;display:flex}.toolbar-wordmark{margin:0;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:16px;font-weight:600;line-height:1}.toolbar-group{align-items:center;gap:2px;display:flex}.toolbar-button{color:#fff;cursor:pointer;background:#2e2e2e;border:0;border-radius:4px;justify-content:center;align-items:center;gap:4px;height:28px;font-family:Geist,Segoe UI,sans-serif;font-size:12px;display:inline-flex}.toolbar-button:hover{background:#383838}.toolbar-button:disabled{cursor:not-allowed;opacity:.45}.toolbar-pill{border-radius:14px;padding:0 10px}.toolbar-gizmo-button{width:28px;padding:0}.toolbar-gizmo-button.is-active{color:#4a90d9;background:#4a90d926}.toolbar-add-button{padding:0 10px}.toolbar-separator{background:#2e2e2e;width:1px;height:20px;margin:0 4px}.toolbar-right{align-items:center;gap:8px;margin-left:auto;display:flex}.toolbar-dirty-indicator{align-items:center;gap:6px;display:inline-flex}.toolbar-dirty-label{color:#b8b9b6;font-family:Geist,Segoe UI,sans-serif;font-size:11px}.dirty-dot{background:#ff9800;border-radius:50%;width:6px;height:6px}#shell-body{grid-template-columns:220px 8px minmax(0,1fr) 8px 280px;min-height:0;display:grid}#shell-hierarchy{background:#141414;min-width:0}#shell-viewport{background:#111;min-width:0;min-height:0}#shell-inspector{background:#141414;min-width:0}.shell-resize-slot{background:#141414;display:flex}.shell-resize-handle{cursor:col-resize;touch-action:none;background:0 0;border:0;width:100%;margin:0;padding:0;position:relative}.shell-resize-handle:before{content:"";background:#2e2e2e;width:1px;transition:background .12s;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.shell-resize-handle:hover:before,.shell-resize-handle:focus-visible:before,#app-shell[data-panel-resizing=true] .shell-resize-handle:before{background:#4a90d9}.shell-resize-handle:focus-visible{outline:none}#app-shell[data-panel-resizing=true]{cursor:col-resize}#app-shell[data-panel-resizing=true],#app-shell[data-panel-resizing=true] *{-webkit-user-select:none;user-select:none}body.is-shell-resizing-panels{cursor:col-resize}#app-shell[data-panel-resizing=true] #meshflow-editor-canvas,#app-shell[data-panel-resizing=true] .viewport-overlay-controls>*{pointer-events:none}.shell-panel{flex-direction:column;height:100%;display:flex}.shell-panel-header{justify-content:space-between;align-items:center;height:36px;padding:0 12px;display:flex}.shell-panel-title{color:#888;letter-spacing:1px;font-family:Geist,Segoe UI,sans-serif;font-size:11px;font-weight:600}.shell-panel-chevron{color:#888;font-size:11px}.shell-panel-divider{background:#2e2e2e;height:1px}.hierarchy-tree{flex-direction:column;gap:0;padding:4px 0;display:flex}.hierarchy-row{color:#b8b9b6;align-items:center;gap:6px;height:28px;padding:0 12px 0 28px;font-family:Geist,Segoe UI,sans-serif;font-size:12px;display:flex}.hierarchy-row-button{text-align:left;cursor:pointer;background:0 0;border:0;width:100%}.hierarchy-row-button:disabled{opacity:.55;cursor:default}.hierarchy-row-button:focus-visible{outline-offset:-1px;outline:1px solid #4a90d9}.hierarchy-row.is-root{color:#fff;padding-left:12px}.hierarchy-row.is-selected{background:#4a90d926}.hierarchy-icon{color:#888;width:10px}.hierarchy-empty-state{color:#555;padding:12px;font-family:Geist,Segoe UI,sans-serif;font-size:12px}.inspector-body{flex-direction:column;min-height:0;display:flex;overflow:auto}.inspector-entity-header{align-items:center;gap:8px;padding:12px;display:flex}.inspector-entity-icon{color:#4a90d9}.inspector-entity-name{font-family:Geist,Segoe UI,sans-serif;font-size:14px;font-weight:600}.inspector-entity-badge{color:#b8b9b6;background:#2e2e2e;border-radius:10px;margin-left:auto;padding:0 8px;font-family:Geist,Segoe UI,sans-serif;font-size:11px;line-height:20px}.inspector-section{padding:0 12px}.inspector-section-header,.inspector-collapsed-row{align-items:center;gap:6px;height:32px;display:flex}.inspector-section-title{color:#fff;font-family:Geist,Segoe UI,sans-serif;font-size:12px;font-weight:600}.inspector-section-chevron{color:#888;font-size:10px}.inspector-transform-group{gap:6px;padding-bottom:8px;display:grid}.inspector-transform-label{color:#888;letter-spacing:.6px;text-transform:uppercase;font-family:Geist,Segoe UI,sans-serif;font-size:10px;font-weight:600}.inspector-transform-row{grid-template-columns:16px minmax(0,1fr);align-items:center;gap:6px;display:grid}.inspector-axis{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.inspector-transform-input:disabled{cursor:not-allowed;opacity:.65}.axis-x{color:#e57373}.axis-y{color:#81c784}.axis-z{color:#64b5f6}.inspector-transform-input{color:#fff;background:#1a1a1a;border:1px solid #2e2e2e;border-radius:4px;width:100%;height:24px;padding:0 8px;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.inspector-empty-state{color:#555;text-align:center;justify-content:center;align-items:center;min-height:120px;padding:16px;font-family:Geist,Segoe UI,sans-serif;font-size:12px;display:flex}#shell-viewport-panel{width:100%;height:100%;position:relative}#meshflow-editor-canvas{display:block;width:100%!important;height:100%!important}.viewport-overlay{text-align:center;pointer-events:none;z-index:2;place-items:center;display:grid;position:absolute;inset:0}.viewport-overlay--blocking{pointer-events:auto;background:#11111159}.viewport-overlay-layer{pointer-events:none;z-index:3;position:absolute;inset:0}.viewport-overlay-controls{pointer-events:none;align-items:center;gap:8px;display:inline-flex;position:absolute;top:12px;left:12px}.viewport-overlay-controls>*{pointer-events:auto}#placeholder p{color:#888;margin:0;font-family:Geist,Segoe UI,sans-serif;font-size:13px}#error-state p{color:#ff6b6b;margin:0;font-family:Geist,Segoe UI,sans-serif;font-size:13px}#shell-status-bar{background:#1a1a1a;border-top:1px solid #2e2e2e;align-items:center;padding:0 12px;display:flex}.shell-status-content{align-items:center;gap:12px;width:100%;min-width:0;display:flex}.shell-status-left{color:#81c784;white-space:nowrap;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.shell-status-right{color:#b8b9b6;white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-family:Geist,Segoe UI,sans-serif;font-size:10px;overflow:hidden}#shell-toolbar .save-load-ui{gap:6px}#shell-toolbar .save-load-button{color:#b8b9b6;background:#2e2e2e;border:1px solid #2e2e2e;border-radius:4px;height:28px;padding:0 10px;font-family:Geist,Segoe UI,sans-serif;font-size:11px}#shell-toolbar .save-load-button:hover:not(:disabled){background:#363636;border-color:#3d3d3d}#shell-toolbar .save-load-button:disabled{opacity:.45}#shell-toolbar .loading-indicator{color:#888;margin-left:4px;font-size:11px}.save-load-ui{align-items:center;gap:8px;display:flex}.save-load-button{cursor:pointer;background:#f5f5f5;border:1px solid #ccc;border-radius:4px;padding:6px 12px;font-size:13px;transition:all .2s}.save-load-button:hover:not(:disabled){background:#e5e5e5;border-color:#999}.save-load-button:disabled{opacity:.5;cursor:not-allowed}.save-button{border-color:#4caf50}.save-button:hover:not(:disabled){background:#e8f5e9;border-color:#4caf50}.load-button{border-color:#2196f3}.load-button:hover:not(:disabled){background:#e3f2fd;border-color:#2196f3}.loading-indicator{color:#666;margin-left:8px;font-size:12px}.dirty-indicator{background:#ff9800;border-radius:50%;width:8px;height:8px;margin-right:6px;animation:2s infinite pulse;display:inline-block}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}
