*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg-body: #1a1a2e;--bg-sidebar: #16213e;--bg-header: #0f3460;--bg-input: #0d1b2a;--bg-hover: #1a3a5c;--bg-selected: #1e4976;--bg-toolbar: #121f3b;--text-primary: #e0e0e0;--text-secondary: #a0a0b0;--text-muted: #707080;--accent-blue: #4488cc;--accent-orange: #ff8800;--accent-green: #44cc44;--accent-red: #cc4444;--border: #2a2a4a;--border-light: #3a3a5a;--radius: 4px;--transition: .15s ease}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:13px;background:var(--bg-body);color:var(--text-primary);overflow:hidden;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.app-body{display:flex;flex:1;overflow:hidden;position:relative}.toolbar{display:flex;align-items:center;height:40px;min-height:40px;background:var(--bg-toolbar);border-bottom:1px solid var(--border);padding:0 8px;gap:2px;overflow-x:auto}.toolbar-group{display:flex;align-items:center;gap:2px;padding:0 4px}.toolbar-group+.toolbar-group{border-left:1px solid var(--border)}.toolbar-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:var(--radius);background:transparent;color:var(--text-primary);font-size:16px;cursor:pointer;transition:background var(--transition),color var(--transition)}.toolbar-button:hover{background:var(--bg-hover)}.toolbar-button:active{background:var(--bg-selected)}.toolbar-button.active{background:var(--accent-blue);color:#fff}.toolbar-button:disabled{opacity:.35;cursor:default}.toolbar-button:disabled:hover{background:transparent}.toolbar-separator{width:1px;height:24px;background:var(--border);margin:0 4px}.sidebar{display:flex;flex-direction:column;background:var(--bg-sidebar);border-right:1px solid var(--border);overflow:hidden;flex-shrink:0}.resize-handle{width:5px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background var(--transition);z-index:10}.resize-handle:hover,.resize-handle:active{background:var(--accent-blue)}.feature-tree{display:flex;flex-direction:column;flex:1;overflow-y:auto;overflow-x:hidden;font-size:13px;-webkit-user-select:none;user-select:none;outline:none}.tree-header{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background:var(--bg-header);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;position:sticky;top:0;z-index:2}.tree-title{font-weight:600;font-size:13px;letter-spacing:.3px}.brep-stats{font-size:11px;color:var(--text-muted);font-family:SF Mono,Menlo,monospace}.tree-empty{padding:24px 12px;color:var(--text-muted);text-align:center;font-style:italic}.tree-items{padding:4px 0}.tree-item-row{position:relative}.tree-item{display:flex;align-items:center;height:28px;padding:0 8px 0 12px;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;transition:background var(--transition),border-color var(--transition);border-left:3px solid transparent;min-height:28px}.tree-item:hover,.tree-item.hovered{background:var(--bg-hover)}.tree-item.selected{background:var(--bg-selected);border-left-color:var(--accent-blue)}.tree-item.selected:hover{background:#3b82f63d}.tree-item.error,.tree-item.error .tree-icon,.tree-item.error .tree-item-icon{color:var(--accent-red)}.tree-item.suppressed{opacity:.4;font-style:italic;text-decoration:line-through;text-decoration-color:#fff3}.tree-item.dimmed{opacity:.35;cursor:default}.tree-item.renaming{cursor:text}.tree-icon,.tree-item-icon{flex-shrink:0;width:18px;text-align:center;font-size:14px;color:var(--text-secondary)}.tree-name,.tree-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4}.tree-badge,.tree-item-badge{flex-shrink:0;font-size:10px;font-weight:700;padding:1px 5px;border-radius:8px;background:var(--border);color:var(--text-secondary)}.tree-badge--error{background:#dc2626;color:#fff}.tree-badge--suppressed{background:#6b7280;color:#fff}.tree-separator{height:1px;margin:4px 12px;background:#ffffff14}.rollback-bar{height:3px;background:var(--accent-orange);cursor:ns-resize;margin:2px 8px;border-radius:2px;opacity:.5;transition:opacity var(--transition),height var(--transition)}.rollback-bar:hover,.rollback-bar.active{height:4px;opacity:1}.rollback-bar.active{background:var(--accent-orange)}.rename-input{flex:1;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--accent-blue);border-radius:3px;padding:2px 6px;font-size:13px;font-family:inherit;outline:none}.rename-input:focus{border-color:#60a5fa;box-shadow:0 0 0 2px #4488cc40}.sketch-panel{display:flex;flex-direction:column;border-top:1px solid var(--border);overflow-y:auto;max-height:50%}.sketch-panel-header{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background:var(--bg-header);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}.sketch-tools,.constraint-tools{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px}.sketch-tools .toolbar-button,.constraint-tools .toolbar-button{width:30px;height:30px;font-size:14px;border-radius:var(--radius)}.sketch-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:6px 10px 2px}.dof-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dof-badge.fully-constrained{background:#44cc4426;color:var(--accent-green)}.dof-badge.under-constrained{background:#4488cc26;color:var(--accent-blue)}.dof-badge.over-constrained{background:#cc444426;color:var(--accent-red)}.viewport-container{flex:1;position:relative;overflow:hidden;background:var(--bg-body)}.viewport{width:100%;height:100%;position:relative}.viewport canvas{display:block;width:100%;height:100%}.status-bar{display:flex;align-items:center;height:24px;min-height:24px;padding:0 12px;font-size:11px;color:var(--text-muted);background:var(--bg-toolbar);border-top:1px solid var(--border);gap:16px;-webkit-user-select:none;user-select:none}.error-bar{display:flex;align-items:center;padding:8px 16px;font-size:12px;font-weight:500;background:#cc444426;color:var(--accent-red);border-top:1px solid var(--accent-red);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.context-menu,.ctx-menu{position:fixed;z-index:1000;min-width:160px;background:var(--bg-sidebar);border:1px solid var(--border-light);border-radius:6px;box-shadow:0 8px 24px #00000080;padding:4px 0;font-size:12px}.context-menu-item,.ctx-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;height:28px;padding:0 14px;cursor:pointer;color:var(--text-primary);background:none;border:none;font-size:13px;font-family:inherit;transition:background var(--transition)}.context-menu-item:hover,.ctx-item:hover{background:var(--bg-hover)}.context-menu-item.danger,.ctx-item--danger{color:var(--accent-red)}.context-menu-item.danger:hover,.ctx-item--danger:hover{background:#cc444426}.context-menu-item.disabled{opacity:.35;cursor:default}.context-menu-item.disabled:hover{background:transparent}.context-menu-separator,.ctx-separator{height:1px;background:var(--border);margin:4px 8px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#4a4a6a}::-webkit-scrollbar-corner{background:transparent}*{scrollbar-width:thin;scrollbar-color:var(--border-light) transparent}input[type=text],input[type=number]{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:12px;padding:4px 8px;outline:none;transition:border-color var(--transition)}input[type=text]:focus,input[type=number]:focus{border-color:var(--accent-blue)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 8px;font-size:11px;white-space:nowrap;background:#222;color:#ddd;border-radius:var(--radius);pointer-events:none;opacity:0;transition:opacity var(--transition)}[data-tooltip]:hover:after{opacity:1}.task-pane{display:flex;flex-shrink:0;height:100%;transition:width .2s ease;border-left:1px solid var(--border);position:relative}.tp-tab-bar{display:flex;flex-direction:column;width:32px;min-width:32px;background:#333337;border-left:1px solid var(--border);padding:4px 0;gap:2px;z-index:1}.tp-tab-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition);border-left:2px solid transparent;padding:0}.tp-tab-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.tp-tab-btn.active{background:#3a3a3e;color:var(--text-primary);border-left-color:var(--accent-blue)}.tp-content{flex:1;background:#252526;overflow:hidden;transition:width .2s ease,opacity .2s ease;display:flex;flex-direction:column}.tp-tab-content{display:flex;flex-direction:column;height:100%;overflow-y:auto;overflow-x:hidden}.tp-resize-handle{width:5px;min-width:5px;cursor:col-resize;display:flex;align-items:center;justify-content:center;background:transparent;color:transparent;transition:background var(--transition),color var(--transition);flex-shrink:0;z-index:10}.tp-resize-handle:hover,.tp-resize-handle:active{background:var(--accent-blue);color:#fff}.tp-section-header{display:flex;align-items:center;height:28px;padding:0 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background:#333337;border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;flex-shrink:0}.tp-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:8px 10px 4px;-webkit-user-select:none;user-select:none}.tp-tree{padding:4px 0}.tp-tree-item{display:flex;align-items:center;height:26px;gap:4px;cursor:pointer;font-size:12px;color:var(--text-primary);transition:background var(--transition);-webkit-user-select:none;user-select:none}.tp-tree-item:hover{background:var(--bg-hover)}.tp-tree-chevron{display:flex;align-items:center;justify-content:center;width:14px;flex-shrink:0;color:var(--text-secondary)}.tp-tree-icon{display:flex;align-items:center;justify-content:center;width:18px;flex-shrink:0;color:var(--accent-blue)}.tp-tree-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-hint{padding:12px 10px;font-size:11px;color:var(--text-muted);font-style:italic;text-align:center;border-top:1px solid var(--border);margin-top:auto;flex-shrink:0}.tp-button-row{display:flex;gap:6px;padding:8px 10px}.tp-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:26px;padding:0 12px;border:1px solid var(--border-light);border-radius:var(--radius);background:#333337;color:var(--text-primary);font-size:12px;font-family:inherit;cursor:pointer;transition:background var(--transition),border-color var(--transition)}.tp-btn:hover{background:var(--bg-hover);border-color:var(--accent-blue)}.tp-btn-add{margin:8px 10px;width:calc(100% - 20px)}.tp-file-list{display:flex;flex-direction:column}.tp-file-item{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;transition:background var(--transition)}.tp-file-item:hover{background:var(--bg-hover)}.tp-file-icon{display:flex;align-items:center;justify-content:center;width:20px;flex-shrink:0;color:var(--text-secondary)}.tp-file-info{display:flex;flex-direction:column;flex:1;overflow:hidden}.tp-file-name{font-size:12px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-file-meta{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--text-muted);margin-top:1px}.tp-appearance-category{margin-bottom:4px}.tp-swatch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px;padding:4px 10px 8px}.tp-swatch{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;padding:4px 2px;border-radius:var(--radius);transition:background var(--transition)}.tp-swatch:hover{background:var(--bg-hover)}.tp-swatch-circle{width:32px;height:32px;border-radius:50%;border:2px solid rgba(255,255,255,.1);transition:border-color var(--transition)}.tp-swatch:hover .tp-swatch-circle{border-color:var(--accent-blue)}.tp-swatch-name{font-size:9px;color:var(--text-muted);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:56px}.tp-props-table-wrap{padding:0 10px;overflow-x:auto}.tp-props-table{width:100%;border-collapse:collapse;font-size:11px}.tp-props-table th{text-align:left;font-weight:600;color:var(--text-secondary);padding:6px;border-bottom:1px solid var(--border);background:#333337;white-space:nowrap;position:sticky;top:0}.tp-props-table td{padding:5px 6px;color:var(--text-primary);border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px}.tp-props-table tr:hover td{background:var(--bg-hover)}.tp-recovery-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--text-muted);text-align:center;gap:8px}.tp-recovery-empty p{font-size:12px}.tp-recovery-sub{font-size:11px;color:var(--text-muted);opacity:.7;max-width:180px}.vc-wrap{position:absolute;top:8px;right:8px;z-index:100;display:flex;flex-direction:column;align-items:center;gap:3px;pointer-events:auto;-webkit-user-select:none;user-select:none;transform:none}.vc-btns{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;max-width:140px}.vc-btn{width:28px;height:20px;border:none;border-radius:3px;background:#ffffff14;color:#ffffff8c;font-size:9px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .12s ease,color .12s ease;display:flex;align-items:center;justify-content:center;text-transform:uppercase;letter-spacing:.3px}.vc-btn:hover{background:#ffffff2e;color:#ffffffd9}.vc-btn--active{background:#4488cc59;color:#8cc4ff}.vc-triad{position:absolute;bottom:12px;left:12px;z-index:100;width:60px;height:60px;pointer-events:none}.vc-triad canvas{display:block}*:focus-visible{outline:2px solid #007acc;outline-offset:-2px}*:focus:not(:focus-visible){outline:none}.hidden{display:none!important}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
