.app-shell{display:flex;flex-direction:column;height:100vh;background:var(--surface-body);color:var(--text-primary);animation:fadeIn .5s ease}.app-shell:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;background:repeating-linear-gradient(0deg,rgba(0,0,0,var(--scanline-opacity)) 0px,rgba(0,0,0,var(--scanline-opacity)) 1px,transparent 1px,transparent 3px)}.react-main{flex:1;overflow:hidden;padding:8px 8px 0}.react-placeholder{display:flex;align-items:center;justify-content:center;height:100%;font-family:Rajdhani,sans-serif;font-size:1.2rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:3px}.react-topbar{display:flex;align-items:center;justify-content:space-between;padding:0 16px 6px;margin-bottom:0;border-bottom:1px solid var(--border-subtle);flex-shrink:0;flex-wrap:wrap;background:var(--surface-body)}.react-topbar-left{display:flex;align-items:center;gap:16px}.react-topbar-logo{font-family:Rajdhani,sans-serif;font-size:20px;font-weight:700;letter-spacing:4px;text-transform:uppercase;color:var(--text-heading);white-space:nowrap}.react-topbar-nav{display:flex;gap:0}.react-topbar-nav a{font-family:Rajdhani,sans-serif;font-size:13px;font-weight:600;letter-spacing:3px;text-transform:uppercase;text-decoration:none;color:var(--text-tertiary);padding:10px 14px;border-bottom:2px solid transparent;cursor:pointer;transition:color .2s,border-color .2s}.react-topbar-nav a:hover{color:var(--text-primary)}.react-topbar-nav a.active{color:var(--accent);border-bottom-color:var(--accent);text-shadow:0 0 10px var(--accent-glow)}.react-topbar-right{display:flex;align-items:center;gap:8px}.react-topbar-user{font-family:JetBrains Mono,monospace;font-size:12px;letter-spacing:1px;color:var(--text-tertiary);margin:0 8px}.react-accent-dot{width:16px;height:16px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;opacity:.6;transition:all .2s ease}.react-accent-dot:hover{opacity:1;transform:scale(1.2)}.react-accent-dot.active{opacity:1;border-color:var(--text-heading);box-shadow:0 0 8px currentColor;transform:scale(1.2)}.settings-page{max-width:800px;margin:0 auto}.settings-title{font-family:Rajdhani,sans-serif;font-size:16px;font-weight:700;letter-spacing:4px;text-transform:uppercase;margin-bottom:16px;color:var(--text-secondary)}.settings-sections{display:flex;flex-direction:column;gap:12px}.settings-form{display:flex;flex-direction:column;gap:10px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:2px;z-index:10001;font-family:JetBrains Mono,monospace;font-size:12px;letter-spacing:1px;animation:fadeIn .3s ease;cursor:pointer;border:1px solid var(--border)}.toast-success{background:var(--surface-panel);color:var(--green);border-color:var(--green-dim)}.toast-error{background:var(--surface-panel);color:#ff1a1a;border-color:#8b0000}.toast-info{background:var(--surface-panel);color:var(--accent);border-color:var(--accent-dim)}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;background:#000000b3;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.loading-content{text-align:center}.loading-spinner{width:36px;height:36px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 14px}.loading-message{font-family:Rajdhani,sans-serif;font-size:14px;font-weight:600;letter-spacing:3px;text-transform:uppercase;color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.obj-tree-panel{max-height:50vh;display:flex;flex-direction:column}.obj-tree-content{overflow-y:auto;padding:4px 0}.obj-tree-content::-webkit-scrollbar{width:3px}.obj-tree-content::-webkit-scrollbar-thumb{background:var(--accent-dim);border-radius:2px}.obj-tree-layer{margin-bottom:4px}.obj-tree-layer-header{display:flex;align-items:center;gap:6px;padding:7px 10px;font-family:Rajdhani,sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--text-secondary);cursor:pointer;border-radius:2px;transition:background .1s}.obj-tree-layer-header:hover{background:var(--surface-hover)}.obj-tree-layer-active{background:var(--accent-subtle);border-left:2px solid var(--accent)}.obj-tree-layer-chevron{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:12px;width:14px;padding:0;flex-shrink:0;text-align:center}.obj-tree-layer-color{width:18px;height:18px;padding:0;border:1px solid var(--border);border-radius:2px;cursor:pointer;flex-shrink:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.obj-tree-layer-color::-webkit-color-swatch-wrapper{padding:1px}.obj-tree-layer-color::-webkit-color-swatch{border:none;border-radius:1px}.obj-tree-layer-color-placeholder{width:18px;height:18px;flex-shrink:0}.obj-tree-layer-name{flex:1;cursor:default;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obj-tree-layer-count{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);background:var(--surface-hover);padding:2px 6px;border-radius:2px;flex-shrink:0}.obj-tree-layer-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:13px;padding:0 3px;transition:color .15s;flex-shrink:0;line-height:1}.obj-tree-layer-btn:hover{color:var(--text-primary)}.obj-tree-layer-btn-off{color:var(--text-faint)}.obj-tree-layer-btn-locked{color:var(--yellow, #ffaa00)}.obj-tree-layer-btn-del{color:var(--text-faint);font-size:16px}.obj-tree-layer-btn-del:hover{color:#f44}.obj-tree-layer-items{padding-left:6px}.obj-row{padding:6px 10px;margin:2px 4px;border:1px solid transparent;border-radius:2px;cursor:pointer;transition:all .15s ease}.obj-row:hover{background:var(--surface-hover);border-color:var(--border-subtle)}.obj-row-selected{background:var(--accent-subtle);border-color:var(--accent-dim)}.obj-row-header{display:flex;align-items:center;gap:8px}.obj-row-info{flex:1;min-width:0}.obj-row-name{font-family:Inter,sans-serif;font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obj-row-meta{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);margin-top:1px}.obj-row-btn{background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:13px;padding:0 3px;transition:color .15s;flex-shrink:0;opacity:0}.obj-row:hover .obj-row-btn{opacity:1}.obj-row-btn:hover{color:var(--text-primary)}.obj-row-btn-del:hover{color:#f44}.obj-row-side{font-family:Rajdhani,sans-serif;font-size:10px;font-weight:700;letter-spacing:1px;padding:2px 6px;border-radius:2px;flex-shrink:0}.obj-row-side-top{color:var(--accent);border:1px solid var(--accent-dim)}.obj-row-side-bottom{color:var(--yellow, #ffaa00);border:1px solid var(--yellow-dim, #996600)}.obj-row-toolpaths{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px;padding-left:0}.obj-row-no-tp{margin-top:3px}.tp-badge{display:flex;align-items:center;gap:5px;padding:3px 8px;border-radius:2px;background:var(--surface-hover);border:1px solid var(--border-subtle);cursor:pointer;transition:all .15s ease;font-size:0}.tp-badge:hover{border-color:var(--accent-dim)}.tp-badge-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.tp-badge-name{font-family:Inter,sans-serif;font-size:10px;color:var(--text-primary);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-badge-type{font-family:Rajdhani,sans-serif;font-size:9px;font-weight:700;letter-spacing:1px;color:var(--text-muted)}.tp-badge-pending{border-color:var(--yellow-dim, #996600)}.tp-badge-pending .tp-badge-dot{animation:pulse 1.5s infinite}.obj-row-actions{display:flex;gap:6px;align-items:center;margin-top:5px}.tp-assign-wrap{position:relative}.tp-assign-btn{background:none;border:1px dashed var(--border);color:var(--text-muted);font-family:Rajdhani,sans-serif;font-size:10px;font-weight:600;letter-spacing:1px;padding:3px 10px;border-radius:2px;cursor:pointer;transition:all .15s ease}.tp-assign-btn:hover{border-color:var(--accent-dim);color:var(--accent)}.tp-assign-menu{position:absolute;top:100%;left:0;z-index:100;background:var(--surface-panel);border:1px solid var(--border);border-radius:2px;min-width:160px;padding:4px 0;box-shadow:0 4px 16px #0006}.tp-assign-option{display:flex;align-items:center;gap:8px;width:100%;padding:7px 12px;background:none;border:none;color:var(--text-primary);cursor:pointer;font-family:Rajdhani,sans-serif;font-size:12px;font-weight:600;letter-spacing:1px;text-align:left;transition:background .1s}.tp-assign-option:hover{background:var(--accent-subtle)}.tp-assign-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.design-sidebar .props-form{padding:0 4px}.design-sidebar .props-form .form-input-sm,.design-sidebar .props-form input,.design-sidebar .props-form select,.design-sidebar .prop-grid .form-input-sm,.design-sidebar .prop-grid input,.design-sidebar .prop-grid select{max-width:100%;box-sizing:border-box}.obj-tree-empty{padding:24px;text-align:center;color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:11px}.project-dialog{background:var(--surface-panel);border:1px solid var(--border);border-radius:2px;width:700px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column;animation:fadeIn .2s ease;position:relative}.project-dialog:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:linear-gradient(var(--accent-dim),var(--accent-dim)) 0 0/14px 1px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 0 0/1px 14px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 100% 0/14px 1px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 100% 0/1px 14px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 100% 100%/14px 1px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 100% 100%/1px 14px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 0 100%/14px 1px no-repeat,linear-gradient(var(--accent-dim),var(--accent-dim)) 0 100%/1px 14px no-repeat}.project-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.project-dialog-body{display:grid;grid-template-columns:1fr 260px;flex:1;overflow:hidden}.project-dialog-list{overflow-y:auto;border-right:1px solid var(--border-subtle);padding:4px}.project-dialog-list::-webkit-scrollbar{width:3px}.project-dialog-list::-webkit-scrollbar-thumb{background:var(--accent-dim);border-radius:2px}.project-dialog-loading,.project-dialog-empty{padding:24px;text-align:center;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-tertiary)}.project-dialog-item{padding:10px 12px;margin:2px;border-radius:2px;cursor:pointer;transition:all .15s;border:1px solid transparent}.project-dialog-item:hover{background:var(--surface-hover);border-color:var(--border-subtle)}.project-dialog-item-selected{background:var(--accent-subtle);border-color:var(--accent-dim)}.project-dialog-item-name{font-family:Inter,sans-serif;font-size:13px;font-weight:600;color:var(--text-heading);margin-bottom:3px}.project-dialog-item-meta{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted)}.project-dialog-details{padding:16px;display:flex;flex-direction:column}.project-dialog-detail-name{font-family:Rajdhani,sans-serif;font-size:18px;font-weight:700;letter-spacing:2px;color:var(--text-heading);text-transform:uppercase;margin-bottom:12px}.project-dialog-detail-grid{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:center;flex:1}.project-dialog-detail-actions{display:flex;gap:6px;margin-top:16px}.project-dialog-detail-empty{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-muted)}.project-dialog-tabs{display:flex;gap:0}.project-dialog-tab{background:none;border:none;border-bottom:2px solid transparent;font-family:Rajdhani,sans-serif;font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--text-tertiary);padding:8px 14px;cursor:pointer;transition:all .2s}.project-dialog-tab:hover{color:var(--text-primary)}.project-dialog-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.project-dialog-save{padding:24px}.project-dialog-save-form{display:flex;flex-direction:column;gap:10px;max-width:400px;margin:0 auto}.project-dialog-save-actions{display:flex;gap:6px;margin-top:8px}.project-dialog-save-divider{height:1px;background:var(--border-subtle);margin:12px 0}.project-dialog-new{padding:16px}.project-dialog-new-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.project-dialog-new-option{background:var(--surface-hover);border:1px solid var(--border);border-radius:2px;padding:16px;cursor:pointer;text-align:left;transition:all .15s}.project-dialog-new-option:hover{border-color:var(--accent-dim);background:var(--accent-subtle)}.project-dialog-new-option-name{font-family:Rajdhani,sans-serif;font-size:14px;font-weight:700;letter-spacing:2px;color:var(--text-heading);text-transform:uppercase;margin-bottom:4px}.project-dialog-new-option-desc{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);line-height:1.4}.react-footer{display:flex;align-items:center;gap:8px;height:24px;padding:0 12px;background:var(--surface-panel);border-top:1px solid var(--border-subtle);flex-shrink:0;font-family:JetBrains Mono,monospace;font-size:9px;letter-spacing:1px;color:var(--text-faint);text-transform:uppercase}.react-footer-sep{color:var(--border)}.react-footer-spacer{flex:1}.react-footer-status{color:var(--green)}.toolbar-side-toggle{display:flex;gap:0;margin-right:8px;border:1px solid var(--border);border-radius:2px;overflow:hidden}.toolbar-side-toggle .btn-tiny{padding:4px 12px;font-size:11px;letter-spacing:2px;font-weight:700;border:none;border-radius:0;background:var(--surface-hover);color:var(--text-tertiary);transition:all .15s}.toolbar-side-toggle .btn-tiny:hover{color:var(--text-primary)}.toolbar-side-toggle .btn-tiny.active{background:var(--accent);color:var(--surface-body);box-shadow:0 0 8px var(--accent-glow)}.tp-sidebar-list{padding:4px 0}.tp-sidebar-side-header{font-family:Rajdhani,sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:6px 12px;border-bottom:1px solid var(--border-subtle)}.tp-sidebar-side-top{color:var(--accent)}.tp-sidebar-side-bottom{color:var(--yellow, #ffaa00)}.tp-sidebar-item{display:flex;align-items:center;gap:6px;padding:7px 8px;margin:2px 4px;border-radius:2px;cursor:pointer;transition:all .15s;border:1px solid transparent}.tp-sidebar-item:hover{background:var(--surface-hover);border-color:var(--border-subtle)}.tp-sidebar-item-editing{background:var(--accent-subtle);border-color:var(--accent-dim)}.tp-sidebar-item-disabled{opacity:.4}.tp-sidebar-item-dirty{border-left:2px solid var(--yellow, #ffaa00)}.tp-sidebar-toggle{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:12px;flex-shrink:0;width:16px;text-align:center}.tp-sidebar-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.tp-sidebar-info{flex:1;min-width:0}.tp-sidebar-name{font-family:Inter,sans-serif;font-size:12px;font-weight:600;color:var(--text-primary);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tp-sidebar-meta{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted)}.tp-sidebar-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}.tp-sidebar-item:hover .tp-sidebar-actions{opacity:1}.tp-sidebar-actions button{background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:13px;padding:0 2px;transition:color .15s}.tp-sidebar-actions button:hover{color:var(--text-primary)}.tp-sidebar-del:hover{color:#f44!important}.tp-sidebar-drag{color:var(--text-faint);font-size:12px;cursor:grab;opacity:0;transition:opacity .15s;flex-shrink:0;-webkit-user-select:none;user-select:none}.tp-sidebar-item:hover .tp-sidebar-drag{opacity:.6}.tp-sidebar-item:active .tp-sidebar-drag{cursor:grabbing}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}@keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes scan{0%{transform:translateY(-100%)}to{transform:translateY(100vh)}}
