.workflow-designer { height: 100vh; display: flex; flex-direction: column; background: #f5f5f5; .toolbar { height: 50px; background: #fff; border-bottom: 1px solid #e8e8e8; display: flex; align-items: center; justify-content: space-between; padding: 0 16px; .toolbar-left, .toolbar-right { display: flex; align-items: center; } } .main-content { flex: 1; display: flex; overflow: hidden; } .node-panel { width: 220px; background: #fff; border-right: 1px solid #e8e8e8; overflow-y: auto; .panel-title { padding: 12px 16px; font-weight: 600; border-bottom: 1px solid #e8e8e8; } .node-category { .category-title { padding: 8px 16px; font-size: 12px; color: #999; background: #fafafa; } .node-list { padding: 8px; } .node-item { display: flex; align-items: center; padding: 8px 12px; margin-bottom: 8px; background: #fff; border: 1px solid #e8e8e8; border-radius: 4px; cursor: grab; transition: all 0.2s; &:hover { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } i { font-size: 18px; margin-right: 8px; } span { font-size: 13px; } } } } .canvas-container { flex: 1; position: relative; overflow: auto; .canvas-svg { min-width: 100%; min-height: 100%; cursor: grab; &.dragging-canvas { cursor: grabbing; } .node-group { cursor: move; rect { transition: stroke-width 0.2s; &.selected { stroke-width: 3; } } .node-content { display: flex; align-items: center; height: 100%; padding: 0 10px; overflow: hidden; i { font-size: 16px; margin-right: 6px; flex-shrink: 0; } .node-name { font-size: 12px; color: #333; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; } } .anchor { opacity: 0; cursor: crosshair; transition: opacity 0.2s; } &:hover .anchor { opacity: 1; } } .edge-group { cursor: pointer; path { transition: stroke-width 0.2s; &.selected { stroke-width: 3; } } } } } .property-panel { width: 280px; background: #fff; border-left: 1px solid #e8e8e8; overflow-y: auto; .panel-title { padding: 12px 16px; font-weight: 600; border-bottom: 1px solid #e8e8e8; display: flex; justify-content: space-between; align-items: center; .el-icon-close { cursor: pointer; color: #999; &:hover { color: #333; } } } .el-form { padding: 16px; } } }