:root{--bg-primary:#0a0e27;--bg-secondary:#151933;--bg-tertiary:#1e2139;--bg-hover:#252a45;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--accent-primary:#6366f1;--accent-secondary:#8b5cf6;--accent-hover:#4f46e5;--accent-glow:rgba(99,102,241,0.3);--success:#10b981;--warning:#f59e0b;--error:#ef4444;--border-color:rgba(148,163,184,0.12);--shadow-sm:0 1px 3px rgba(0,0,0,0.3);--shadow-md:0 4px 12px rgba(0,0,0,0.4);--shadow-lg:0 10px 30px rgba(0,0,0,0.5);--shadow-xl:0 20px 50px rgba(0,0,0,0.6);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--transition:all 0.3s cubic-bezier(0.4,0,0.2,1)}body.light-mode{--bg-primary:#f8fafc;--bg-secondary:#fff;--bg-tertiary:#f1f5f9;--bg-hover:#e2e8f0;--text-primary:#1e293b;--text-secondary:#475569;--text-muted:#94a3b8;--accent-primary:#6366f1;--accent-secondary:#8b5cf6;--accent-hover:#4f46e5;--accent-glow:rgba(99,102,241,0.2);--border-color:rgba(15,23,42,0.08);--shadow-sm:0 1px 3px rgba(0,0,0,0.08);--shadow-md:0 4px 12px rgba(0,0,0,0.1);--shadow-lg:0 10px 30px rgba(0,0,0,0.12);--shadow-xl:0 20px 50px rgba(0,0,0,0.15)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica','Arial',sans-serif;background:var(--bg-primary);color:var(--text-primary);transition:var(--transition)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:4px;transition:var(--transition)}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}.flow-container{display:flex;flex-direction:column;height:100vh}#flowComponent{display:flex;flex-direction:column;height:100%}.top-menu{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);gap:12px;box-shadow:0 2px 12px rgba(0,0,0,0.15);position:relative;z-index:100}.menu-section{display:flex;align-items:center;gap:8px}.menu-section-left{flex:0 0 auto}.menu-section-center{flex:0 0 auto}.menu-section-right{flex:0 0 auto;margin-left:auto}.menu-divider{width:1px;height:24px;background:rgba(255,255,255,0.25);margin:0 4px}.menu-group{display:flex;gap:4px;align-items:center;padding:2px;border-radius:6px;transition:all 0.3s ease;position:relative}.menu-group:hover{background:rgba(255,255,255,0.08)}.menu-btn{padding:8px 14px;background:rgba(255,255,255,0.95);border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;color:#667eea;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);white-space:nowrap;position:relative;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,0.08)}.menu-btn::before{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(102,126,234,0.15);transform:translate(-50%,-50%);transition:width 0.5s,height 0.5s}.menu-btn:hover::before{width:300px;height:300px}.menu-btn:hover{background:#fff;transform:translateY(-2px) scale(1.02);box-shadow:0 4px 12px rgba(0,0,0,0.15)}.menu-btn:active{transform:translateY(0) scale(0.98)}.menu-btn.primary{background:rgba(255,255,255,0.95);color:#667eea;font-weight:600;border:1px solid rgba(255,255,255,0.4)}.menu-btn.primary:hover{background:#fff;box-shadow:0 4px 12px rgba(255,255,255,0.3)}.menu-btn.secondary{background:rgba(255,255,255,0.15);color:#fff;border:1px solid rgba(255,255,255,0.25)}.menu-btn.secondary:hover{background:rgba(255,255,255,0.25);border-color:rgba(255,255,255,0.4)}.menu-btn.success{background:linear-gradient(135deg,#10b981 0,#059669 100%);color:white;font-weight:600;border:none}.menu-btn.success:hover{background:linear-gradient(135deg,#059669 0,#047857 100%);box-shadow:0 4px 12px rgba(16,185,129,0.4)}.menu-btn.info{background:linear-gradient(135deg,#3b82f6 0,#2563eb 100%);color:white;font-weight:600;border:none;box-shadow:0 2px 8px rgba(59,130,246,0.3)}.menu-btn.info:hover{background:linear-gradient(135deg,#2563eb 0,#1d4ed8 100%);box-shadow:0 4px 14px rgba(59,130,246,0.5)}.menu-btn:disabled{opacity:0.5;cursor:not-allowed;transform:none !important}.menu-btn.small{padding:0 12px;height:32px;line-height:32px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:4px;box-sizing:border-box}.menu-btn.zoom-menu-btn{padding:0;width:36px;height:36px;font-size:16px;background:linear-gradient(135deg,#10b981 0,#059669 100%);color:white;font-weight:700;border:2px solid rgba(255,255,255,0.3);border-radius:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(16,185,129,0.3)}.menu-btn.zoom-menu-btn:hover{background:linear-gradient(135deg,#059669 0,#047857 100%);box-shadow:0 4px 16px rgba(16,185,129,0.5);border-color:rgba(255,255,255,0.5)}.menu-group.zoom-group{display:flex;gap:4px;background:rgba(16,185,129,0.1);padding:4px;border-radius:10px;border:1px solid rgba(16,185,129,0.3);box-shadow:inset 0 1px 3px rgba(0,0,0,0.1)}.menu-btn.grid-hidden{opacity:0.6}.menu-btn.grid-hidden:hover{opacity:0.8}.workspace{display:flex;flex:1;overflow:hidden;position:relative}.left-panel{width:280px;background:linear-gradient(135deg,rgba(102,126,234,0.05) 0,rgba(118,75,162,0.05) 100%);border-right:2px solid rgba(102,126,234,0.2);overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:20px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.panel-section{background:linear-gradient(135deg,rgba(255,255,255,0.08) 0,rgba(255,255,255,0.03) 100%);border-radius:12px;padding:18px;border:2px solid rgba(102,126,234,0.15);transition:all 0.3s cubic-bezier(0.4,0,0.2,1);box-shadow:0 2px 8px rgba(0,0,0,0.1);position:relative;overflow:hidden}.panel-section::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#667eea 0,#764ba2 100%);opacity:0;transition:opacity 0.3s ease}.panel-section:hover{transform:translateY(-3px) scale(1.01);box-shadow:0 8px 24px rgba(102,126,234,0.2);border-color:rgba(102,126,234,0.4)}.panel-section:hover::before{opacity:1}.panel-section h3{font-size:16px;margin-bottom:14px;color:var(--text-primary);font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:0.3px}.panel-section h3::before{content:'';width:4px;height:20px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);border-radius:3px;box-shadow:0 2px 8px rgba(102,126,234,0.4)}.panel-section p{font-size:13px;color:var(--text-secondary);margin-bottom:14px;line-height:1.6;opacity:0.95}.shape-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.shape-item{padding:16px 12px;background:linear-gradient(135deg,rgba(255,255,255,0.12) 0,rgba(255,255,255,0.05) 100%);border:2px solid rgba(102,126,234,0.2);border-radius:8px;text-align:center;font-size:13px;font-weight:600;color:var(--text-primary);cursor:grab;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);position:relative;overflow:hidden;box-shadow:0 2px 6px rgba(0,0,0,0.08);letter-spacing:0.2px}.shape-item::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,rgba(102,126,234,0.15),rgba(118,75,162,0.15));opacity:0;transition:opacity 0.3s ease}.shape-item::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(102,126,234,0.2);transform:translate(-50%,-50%);transition:width 0.5s,height 0.5s}.shape-item:hover{transform:translateY(-4px) scale(1.03);border-color:#667eea;box-shadow:0 8px 24px rgba(102,126,234,0.3);color:#667eea;background:linear-gradient(135deg,rgba(102,126,234,0.2) 0,rgba(118,75,162,0.15) 100%)}.shape-item:hover::before{opacity:1}.shape-item:hover::after{width:300px;height:300px}.shape-item:active{cursor:grabbing;transform:scale(0.97);box-shadow:0 3px 10px rgba(102,126,234,0.2)}.canvas-container{flex:1;position:relative;background:var(--bg-primary);overflow:hidden}#flowCanvas{width:100%;height:100%;display:block;cursor:default;background-image:radial-gradient(circle,var(--border-color) 1px,transparent 1px);background-size:20px 20px}#flowCanvas.grid-hidden{background-image:none}.cursor-nw-resize{cursor:nw-resize !important}.cursor-ne-resize{cursor:ne-resize !important}.cursor-sw-resize{cursor:sw-resize !important}.cursor-se-resize{cursor:se-resize !important}.cursor-n-resize{cursor:n-resize !important}.cursor-s-resize{cursor:s-resize !important}.cursor-w-resize{cursor:w-resize !important}.cursor-e-resize{cursor:e-resize !important}#propertyPanel{position:absolute;bottom:20px;right:20px;width:260px;max-height:520px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);overflow:hidden;backdrop-filter:blur(20px);animation:slideInRight 0.3s ease}@keyframes slideInRight{from{transform:translateX(100px);opacity:0}to{transform:translateX(0);opacity:1}}#propertyPanel > div:first-child{padding:10px 12px;background:linear-gradient(135deg,rgba(102,126,234,0.15),rgba(118,75,162,0.15));border-bottom:1px solid var(--border-color)}#propertyPanel h3{font-size:14px;margin:0}.close-btn,.collapse-btn{background:var(--bg-hover);border:none;color:var(--text-primary);cursor:pointer;width:24px;height:24px;border-radius:4px;transition:var(--transition);display:flex;align-items:center;justify-content:center;font-size:16px}.close-btn:hover,.collapse-btn:hover{background:var(--accent-primary);color:white;transform:scale(1.1)}.property-reopen-btn{position:absolute;bottom:130px;right:20px;width:48px;height:48px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);border:none;border-radius:50%;color:white;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);transition:var(--transition);z-index:100}.property-reopen-btn:hover{transform:translateY(-3px) scale(1.1);box-shadow:0 12px 40px rgba(102,126,234,0.5)}.property-reopen-btn:active{transform:translateY(-1px) scale(1.05)}#propertyPanelContent{padding:12px;max-height:460px;overflow-y:auto}.property-item{margin-bottom:12px}.property-item:last-child{margin-bottom:0}.property-item label{display:block;margin-bottom:5px;font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.5px}.property-item input,.property-item textarea{width:100%;padding:7px 9px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:12px;transition:var(--transition);font-family:inherit}.property-item input:focus,.property-item textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-glow)}.property-item textarea{resize:vertical;min-height:50px;line-height:1.4}.collapsible-header{display:flex;justify-content:space-between;align-items:center;padding:10px;background:var(--bg-tertiary);border-radius:var(--radius-sm);cursor:pointer;margin-bottom:8px;transition:var(--transition)}.collapsible-header:hover{background:var(--bg-hover)}.collapsible-header label{margin:0;cursor:pointer}.collapse-indicator{transition:transform 0.3s ease}.collapsible-header.collapsed .collapse-indicator{transform:rotate(180deg)}.collapsible-content{overflow:hidden;transition:max-height 0.3s ease,opacity 0.3s ease}.collapsible-content.collapsed{max-height:0 !important;opacity:0}.color-picker-group{display:flex;gap:6px;align-items:center;margin-bottom:6px}.color-picker{width:36px;height:36px;border:2px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);flex-shrink:0}.color-picker:hover{transform:scale(1.05);border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-glow)}.color-picker-text{flex:1;padding:6px 8px !important;font-size:11px !important;font-family:'Courier New',monospace !important}.color-swatches{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.color-swatch{width:100%;aspect-ratio:1;border-radius:4px;cursor:pointer;border:2px solid transparent;transition:var(--transition);box-shadow:var(--shadow-sm);position:relative}.color-swatch:hover{transform:scale(1.1);border-color:var(--accent-primary);box-shadow:0 0 8px rgba(99,102,241,0.5);z-index:1}.color-swatch:active{transform:scale(0.95)}.context-menu{position:fixed;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);padding:6px;min-width:180px;z-index:10000;display:none;backdrop-filter:blur(20px);animation:contextMenuAppear 0.2s ease}@keyframes contextMenuAppear{from{transform:scale(0.9);opacity:0}to{transform:scale(1);opacity:1}}.context-menu-item{padding:10px 14px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);font-size:13px}.context-menu-item:hover{background:var(--accent-primary);color:white;transform:translateX(4px)}.context-menu-divider{height:1px;background:var(--border-color);margin:6px 0}.modal{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.7);z-index:10001;align-items:center;justify-content:center;backdrop-filter:blur(8px)}.modal.active{display:flex}.modal-content{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:28px;max-width:700px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:modalSlideIn 0.3s ease;border:1px solid var(--border-color)}@keyframes modalSlideIn{from{transform:translateY(-30px) scale(0.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border-color)}.modal-header h2{font-size:20px;font-weight:600}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.template-item{padding:20px;background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);position:relative;overflow:hidden}.template-item::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));opacity:0;transition:var(--transition)}.template-item:hover{transform:translateY(-4px);border-color:var(--accent-primary);box-shadow:0 12px 30px var(--accent-glow)}.template-item:hover::before{opacity:0.1}.template-item h4{font-size:16px;margin-bottom:8px;position:relative}.template-item p{font-size:13px;color:var(--text-secondary);line-height:1.5;position:relative}.shortcut-list{display:grid;gap:10px}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-tertiary);border-radius:var(--radius-sm);transition:var(--transition)}.shortcut-item:hover{background:var(--bg-hover);transform:translateX(4px)}.shortcut-key{background:var(--bg-primary);padding:6px 12px;border-radius:var(--radius-sm);font-family:'Courier New',monospace;font-size:12px;border:1px solid var(--border-color);color:var(--accent-primary)}.connection-status{position:fixed;top:80px;right:24px;background:var(--accent-primary);color:white;padding:12px 24px;border-radius:30px;font-size:14px;font-weight:500;box-shadow:0 8px 24px var(--accent-glow);z-index:1001;display:none;animation:pulse 2s infinite}@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}.zoom-level-widget{position:fixed;bottom:20px;right:20px;z-index:1000;animation:slideInRight 0.3s ease}.zoom-display{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(16,185,129,0.3);border-radius:20px;padding:8px 16px;cursor:pointer;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);box-shadow:0 4px 16px rgba(0,0,0,0.1),0 0 0 1px rgba(16,185,129,0.1);user-select:none}.zoom-display:hover{background:rgba(16,185,129,0.1);border-color:rgba(16,185,129,0.5);box-shadow:0 6px 24px rgba(16,185,129,0.2),0 0 0 2px rgba(16,185,129,0.2);transform:translateY(-2px)}.zoom-display:active{transform:translateY(0);box-shadow:0 2px 8px rgba(16,185,129,0.15)}.zoom-icon{font-size:14px;display:flex;align-items:center;justify-content:center}.zoom-value{font-size:13px;font-weight:700;color:#059669;min-width:42px;text-align:center;letter-spacing:0.5px}.zoom-dropdown{position:absolute;bottom:calc(100% + 8px);right:0;background:rgba(255,255,255,0.98);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(16,185,129,0.2);border-radius:12px;padding:6px;min-width:140px;box-shadow:0 8px 32px rgba(0,0,0,0.12),0 0 0 1px rgba(16,185,129,0.1);animation:zoomDropdownFadeIn 0.2s ease;overflow:hidden}@keyframes zoomDropdownFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.zoom-dropdown-item{padding:8px 14px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;color:#374151;transition:all 0.15s ease;white-space:nowrap}.zoom-dropdown-item:hover{background:rgba(16,185,129,0.15);color:#059669;transform:translateX(3px)}.zoom-dropdown-item.active{background:linear-gradient(135deg,#10b981 0,#059669 100%);color:white;box-shadow:0 2px 8px rgba(16,185,129,0.3)}.zoom-dropdown-item.active:hover{transform:translateX(0) scale(1.02)}.zoom-dropdown-divider{height:1px;background:linear-gradient(90deg,transparent,rgba(16,185,129,0.2),transparent);margin:6px 0}.dark-mode .zoom-display{background:rgba(31,41,55,0.95);border-color:rgba(16,185,129,0.3)}.dark-mode .zoom-display:hover{background:rgba(16,185,129,0.15);border-color:rgba(16,185,129,0.5)}.dark-mode .zoom-value{color:#10b981}.dark-mode .zoom-dropdown{background:rgba(31,41,55,0.98);border-color:rgba(16,185,129,0.3)}.dark-mode .zoom-dropdown-item{color:#d1d5db}.dark-mode .zoom-dropdown-item:hover{background:rgba(16,185,129,0.2);color:#10b981}.zoom-level-indicator{display:none}.zoom-controls{position:fixed;bottom:24px;left:24px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:8px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-xl);z-index:1000;backdrop-filter:blur(20px);animation:slideInLeft 0.3s ease}.zoom-btn{width:40px;height:40px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-size:20px;font-weight:bold;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.zoom-btn:hover{background:var(--accent-primary);color:white;transform:scale(1.1);box-shadow:0 4px 12px var(--accent-glow)}.zoom-btn:active{transform:scale(0.95)}.zoom-level{text-align:center;font-size:12px;font-weight:600;color:var(--text-primary);padding:4px 8px;background:var(--bg-primary);border-radius:var(--radius-sm);border:1px solid var(--border-color)}.toast{position:fixed;bottom:24px;right:24px;background:var(--bg-secondary);padding:16px 24px;border-radius:var(--radius-md);box-shadow:var(--shadow-xl);border:1px solid var(--border-color);border-left:4px solid var(--accent-primary);z-index:10002;animation:toastSlideIn 0.3s ease;backdrop-filter:blur(20px)}@keyframes toastSlideIn{from{transform:translateX(400px);opacity:0}to{transform:translateX(0);opacity:1}}.toolbar-toggle-btn{position:fixed;top:100px;left:20px;width:48px;height:48px;background:linear-gradient(135deg,rgba(102,126,234,0.95) 0,rgba(118,75,162,0.95) 100%);border:2px solid rgba(255,255,255,0.3);border-radius:12px;color:white;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(102,126,234,0.4);z-index:999;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:pulseGlow 2s ease-in-out infinite}.toolbar-toggle-btn:hover{transform:scale(1.1);box-shadow:0 8px 24px rgba(102,126,234,0.6);border-color:rgba(255,255,255,0.6)}.toolbar-toggle-btn:active{transform:scale(0.95)}@keyframes pulseGlow{0%,100%{box-shadow:0 4px 16px rgba(102,126,234,0.4)}50%{box-shadow:0 4px 24px rgba(102,126,234,0.6)}}body.light-mode .toolbar-toggle-btn{background:linear-gradient(135deg,rgba(255,255,255,0.95) 0,rgba(248,250,252,0.95) 100%);border-color:rgba(102,126,234,0.4);color:#667eea;box-shadow:0 4px 16px rgba(102,126,234,0.3)}body.light-mode .toolbar-toggle-btn:hover{box-shadow:0 8px 24px rgba(102,126,234,0.5);border-color:#667eea}body:not(.light-mode) .toolbar-toggle-btn{background:linear-gradient(135deg,rgba(74,85,104,0.95) 0,rgba(45,55,72,0.95) 100%);border-color:rgba(255,255,255,0.2)}body:not(.light-mode) .toolbar-toggle-btn:hover{border-color:rgba(255,255,255,0.4)}.floating-toolbar{position:absolute;top:80px;left:20px;background:linear-gradient(135deg,rgba(102,126,234,0.95) 0,rgba(118,75,162,0.95) 100%);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,0.3);border:2px solid rgba(255,255,255,0.2);z-index:1000;max-width:320px;min-width:280px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);animation:slideInLeft 0.3s ease;transition:box-shadow 0.3s cubic-bezier(0.4,0,0.2,1),border-color 0.3s ease;cursor:move;user-select:none}.floating-toolbar.dragging{box-shadow:0 16px 48px rgba(102,126,234,0.5);border-color:rgba(255,255,255,0.6);transition:none;opacity:0.95}.floating-toolbar.collapsed .toolbar-content{max-height:0;overflow:hidden;padding:0;opacity:0}.toolbar-header{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:2px solid rgba(255,255,255,0.2);background:rgba(255,255,255,0.1);border-radius:10px 10px 0 0;cursor:move}.toolbar-title{font-size:16px;font-weight:700;color:white;margin:0;display:flex;align-items:center;gap:8px;letter-spacing:0.5px;pointer-events:none}.toolbar-controls{display:flex;gap:6px;align-items:center}.toolbar-control-btn{width:28px;height:28px;border:1px solid rgba(255,255,255,0.3);border-radius:6px;background:rgba(255,255,255,0.15);color:white;font-size:14px;cursor:pointer;transition:all 0.3s ease;display:flex;align-items:center;justify-content:center;padding:0}.toolbar-control-btn:hover{background:rgba(255,255,255,0.25);border-color:rgba(255,255,255,0.5);transform:scale(1.1)}.toolbar-control-btn:active{transform:scale(0.95)}.toolbar-control-btn .move-icon{font-size:16px;cursor:move}.toolbar-control-btn .collapse-icon{font-size:18px;font-weight:bold;transition:transform 0.3s ease}.floating-toolbar.collapsed .collapse-icon{transform:rotate(180deg)}.toolbar-content{padding:0;max-height:600px;overflow-y:auto;transition:all 0.3s cubic-bezier(0.4,0,0.2,1)}.toolbar-section{padding:0;margin:0}.toolbar-section.collapsible-section .section-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;cursor:pointer;background:rgba(255,255,255,0.08);border-bottom:1px solid rgba(255,255,255,0.1);transition:all 0.3s ease;user-select:none}.toolbar-section.collapsible-section .section-header:hover{background:rgba(255,255,255,0.15)}.toolbar-section.collapsible-section .section-header h4{font-size:14px;font-weight:600;color:white;margin:0;display:flex;align-items:center;gap:6px}.section-toggle{font-size:18px;font-weight:bold;color:white;transition:transform 0.3s ease;display:inline-block}.toolbar-section.collapsed .section-toggle{transform:rotate(180deg)}.section-content{max-height:500px;overflow:hidden;transition:max-height 0.3s ease,padding 0.3s ease,opacity 0.3s ease;opacity:1;padding:16px 18px}.toolbar-section.collapsed .section-content{max-height:0;padding:0 18px;opacity:0}@keyframes slideInLeft{from{transform:translateX(-100px);opacity:0}to{transform:translateX(0);opacity:1}}.toolbar-section h3{font-size:14px;font-weight:600;color:white;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,0.2)}.toolbar-section .shape-grid{gap:8px}.toolbar-section .shape-item{background:rgba(255,255,255,0.15);border-color:rgba(255,255,255,0.3);color:white}.toolbar-section .shape-item:hover{background:rgba(255,255,255,0.25);border-color:white;transform:translateY(-2px) scale(1.05)}.toolbar-section:last-child{margin-bottom:0}.alignment-section{background:rgba(102,126,234,0.1);border-bottom:2px solid rgba(102,126,234,0.3)}.alignment-section .section-header h4{color:#667eea;font-weight:700}.alignment-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.align-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 8px;background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.25);border-radius:8px;color:white;cursor:pointer;font-size:11px;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);position:relative;overflow:hidden}.align-btn::before{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(102,126,234,0.3);transform:translate(-50%,-50%);transition:width 0.4s,height 0.4s}.align-btn:hover::before{width:200px;height:200px}.align-btn:hover{background:rgba(102,126,234,0.3);border-color:rgba(102,126,234,0.5);transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px rgba(102,126,234,0.3)}.align-btn:active{transform:translateY(0) scale(0.98)}.align-icon{font-size:18px;font-weight:bold;position:relative;z-index:1}.align-label{font-size:10px;font-weight:500;text-align:center;position:relative;z-index:1;white-space:nowrap}body.light-mode .alignment-section{background:rgba(102,126,234,0.05);border-bottom:2px solid rgba(102,126,234,0.15)}body.light-mode .alignment-section .section-header h4{color:#667eea}body.light-mode .align-btn{background:rgba(102,126,234,0.08);border-color:rgba(102,126,234,0.2);color:#667eea}body.light-mode .align-btn:hover{background:rgba(102,126,234,0.2);border-color:rgba(102,126,234,0.4);box-shadow:0 4px 12px rgba(102,126,234,0.2)}.alignment-grid-compact{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.align-btn-compact{display:flex;align-items:center;justify-content:center;padding:10px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);cursor:pointer;font-size:18px;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);position:relative;overflow:hidden}.align-btn-compact::before{content:'';position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(102,126,234,0.2);transform:translate(-50%,-50%);transition:width 0.4s,height 0.4s}.align-btn-compact:hover::before{width:150px;height:150px}.align-btn-compact:hover{background:var(--bg-hover);border-color:var(--accent-primary);transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px var(--accent-glow)}.align-btn-compact:active{transform:translateY(0) scale(0.98)}.align-btn-compact .align-icon{position:relative;z-index:1}.close-toolbar-btn{width:28px;height:28px;background:rgba(239,68,68,0.2);border:1px solid rgba(239,68,68,0.4);color:white;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all 0.3s ease;font-size:18px;font-weight:bold;padding:0}.close-toolbar-btn:hover{background:rgba(239,68,68,0.8);border-color:#ef4444;transform:scale(1.1) rotate(90deg)}.history-list{max-height:60vh;overflow-y:auto}.history-item{padding:14px;background:var(--bg-tertiary);border-radius:var(--radius-sm);margin-bottom:10px;border-left:3px solid var(--accent-primary);transition:var(--transition)}.history-item:hover{transform:translateX(6px);box-shadow:var(--shadow-md)}.history-item-time{font-size:11px;color:var(--text-muted);margin-bottom:4px}.history-item-action{font-size:13px;font-weight:500}#flowComponent.fullscreen-active{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:flex;flex-direction:column;background:var(--bg-primary)}#flowComponent.fullscreen-active .top-menu{flex-shrink:0;position:relative;z-index:10000;width:100%}#flowComponent.fullscreen-active .workspace{flex:1;display:flex}#flowComponent.fullscreen-active .left-panel{display:none}#flowComponent.fullscreen-active .canvas-container{flex:1}#flowComponent.fullscreen-active .floating-toolbar{position:fixed;top:80px;left:20px;z-index:9999}#flowComponent.fullscreen-active ~ .modal{z-index:10001}.modal.active{z-index:10001}@media (max-width:768px){.left-panel{width:240px}.menu-btn{padding:6px 12px;font-size:12px}.template-grid{grid-template-columns:1fr}#propertyPanel{width:260px;max-height:400px}}@media (max-width:480px){.top-menu{padding:8px 12px;gap:6px}.left-panel{position:absolute;left:-100%;transition:var(--transition);z-index:200}.left-panel.active{left:0}}.layout-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;padding:20px}.layout-item{background:var(--bg-tertiary);border:2px solid var(--border-color);border-radius:var(--radius-md);padding:24px;text-align:center;cursor:pointer;transition:all 0.3s ease;position:relative;overflow:hidden}.layout-item::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,transparent,rgba(59,130,246,0.1));opacity:0;transition:var(--transition)}.layout-item:hover{transform:translateY(-4px) scale(1.02);border-color:#3b82f6;box-shadow:0 12px 30px rgba(59,130,246,0.2)}.layout-item:hover::before{opacity:1}.layout-item:active{transform:translateY(-2px) scale(1.0)}.layout-icon{font-size:48px;margin-bottom:12px;opacity:0.8;transition:var(--transition)}.layout-item:hover .layout-icon{opacity:1;transform:scale(1.1)}.layout-item h4{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.layout-item p{font-size:13px;color:var(--text-secondary);line-height:1.5;margin:0}@media (max-width:768px){.layout-grid{grid-template-columns:1fr}}@media (max-width:1024px){.top-menu{padding:8px 10px;gap:8px}.menu-section{gap:6px}.menu-divider{display:none}.menu-btn.small{padding:0 10px;height:30px;font-size:11px}.menu-btn.zoom-menu-btn{width:32px;height:32px;font-size:14px}.left-panel{width:240px;padding:16px;gap:16px}.panel-section{padding:14px}.panel-section h3{font-size:14px}.panel-section p{font-size:12px}.shape-item{padding:12px 10px;font-size:12px}}@media (max-width:768px){.top-menu{flex-direction:column;padding:8px;gap:8px;align-items:stretch}.menu-section{width:100%;justify-content:space-between}.menu-section-left,.menu-section-center,.menu-section-right{width:100%;margin-left:0}.menu-group{flex:1;justify-content:center}.menu-btn.small{padding:0 8px;height:28px;font-size:10px;flex:1;min-width:0}.menu-btn.zoom-menu-btn{width:30px;height:30px;font-size:13px;flex:0 0 30px}.workspace{flex-direction:column}.left-panel{width:100%;max-height:200px;border-right:none;border-bottom:2px solid rgba(102,126,234,0.2);padding:12px;gap:12px;flex-direction:row;overflow-x:auto;overflow-y:hidden}.panel-section{min-width:200px;padding:12px}.panel-section h3{font-size:13px;margin-bottom:10px}.panel-section p{font-size:11px;margin-bottom:10px}.shape-grid{gap:6px}.shape-item{padding:10px 8px;font-size:11px}#propertyPanel{width:calc(100% - 40px);max-width:100%;left:20px;right:20px}}@media (max-width:480px){.top-menu{padding:6px}.menu-section{gap:4px}.menu-btn.small{padding:0 6px;height:26px;font-size:9px}.menu-btn.zoom-menu-btn{width:28px;height:28px;font-size:12px;flex:0 0 28px}.left-panel{max-height:150px;padding:10px;gap:10px}.panel-section{min-width:180px;padding:10px}.panel-section h3{font-size:12px;margin-bottom:8px}.panel-section h3::before{width:3px;height:16px}.panel-section p{font-size:10px;margin-bottom:8px}.shape-grid{gap:5px}.shape-item{padding:8px 6px;font-size:10px}#propertyPanel{width:calc(100% - 20px);left:10px;right:10px;bottom:10px}.zoom-level-widget{bottom:10px;right:10px}.zoom-display{padding:6px 12px;font-size:11px}}@media (max-width:768px) and (orientation:landscape){.left-panel{max-height:120px}.panel-section{min-width:160px}}body:not(.light-mode) .top-menu{background:linear-gradient(135deg,#4a5568 0,#2d3748 100%)}body:not(.light-mode) .menu-btn{background:rgba(255,255,255,0.1);color:#e0e0e0}body:not(.light-mode) .menu-btn:hover{background:rgba(255,255,255,0.2)}body:not(.light-mode) .menu-btn.primary{background:rgba(255,255,255,0.15);color:#a0aec0;border-color:rgba(255,255,255,0.3)}body:not(.light-mode) .menu-btn.primary:hover{background:rgba(255,255,255,0.25)}body:not(.light-mode) .menu-btn.secondary{background:rgba(255,255,255,0.1);color:#e0e0e0;border-color:rgba(255,255,255,0.15)}body:not(.light-mode) .menu-btn.secondary:hover{background:rgba(255,255,255,0.2)}body:not(.light-mode) .menu-btn.success{background:linear-gradient(135deg,rgba(16,185,129,0.3) 0,rgba(5,150,105,0.3) 100%);color:#6ee7b7}body:not(.light-mode) .menu-btn.success:hover{background:linear-gradient(135deg,rgba(16,185,129,0.4) 0,rgba(5,150,105,0.4) 100%)}body:not(.light-mode) .left-panel{background:linear-gradient(135deg,rgba(74,85,104,0.1) 0,rgba(45,55,72,0.1) 100%);border-right-color:rgba(74,85,104,0.3)}body:not(.light-mode) .panel-section{background:linear-gradient(135deg,rgba(255,255,255,0.05) 0,rgba(255,255,255,0.02) 100%);border-color:rgba(74,85,104,0.2)}body:not(.light-mode) .panel-section:hover{border-color:rgba(74,85,104,0.4);box-shadow:0 8px 24px rgba(0,0,0,0.3)}body:not(.light-mode) .panel-section::before{background:linear-gradient(90deg,#4a5568 0,#2d3748 100%)}body:not(.light-mode) .panel-section h3::before{background:linear-gradient(135deg,#4a5568 0,#2d3748 100%);box-shadow:0 2px 8px rgba(74,85,104,0.4)}body:not(.light-mode) .shape-item{background:linear-gradient(135deg,rgba(255,255,255,0.08) 0,rgba(255,255,255,0.03) 100%);border-color:rgba(74,85,104,0.25)}body:not(.light-mode) .shape-item:hover{border-color:#4a5568;color:#a0aec0;background:linear-gradient(135deg,rgba(74,85,104,0.3) 0,rgba(45,55,72,0.25) 100%);box-shadow:0 8px 24px rgba(0,0,0,0.3)}body:not(.light-mode) .shape-item::before{background:linear-gradient(135deg,rgba(74,85,104,0.2),rgba(45,55,72,0.2))}body:not(.light-mode) .shape-item::after{background:rgba(74,85,104,0.25)}body:not(.light-mode) .menu-divider{background:rgba(255,255,255,0.15)}body.light-mode .top-menu{background:linear-gradient(135deg,#667eea 0,#764ba2 100%)}body.light-mode .menu-btn{background:rgba(255,255,255,0.95);color:#667eea}body.light-mode .menu-btn:hover{background:#fff}body.light-mode .menu-btn.primary{background:rgba(255,255,255,0.95);color:#667eea;border-color:rgba(255,255,255,0.4)}body.light-mode .menu-btn.primary:hover{background:#fff}body.light-mode .menu-btn.secondary{background:rgba(255,255,255,0.15);color:#fff;border:1px solid rgba(255,255,255,0.25)}body.light-mode .menu-btn.secondary:hover{background:rgba(255,255,255,0.25)}body.light-mode .menu-btn.success{background:linear-gradient(135deg,#10b981 0,#059669 100%);color:white}body.light-mode .menu-btn.success:hover{background:linear-gradient(135deg,#059669 0,#047857 100%)}body.light-mode .left-panel{background:linear-gradient(135deg,rgba(102,126,234,0.05) 0,rgba(118,75,162,0.05) 100%);border-right-color:rgba(102,126,234,0.2)}body.light-mode .panel-section{background:linear-gradient(135deg,rgba(255,255,255,0.8) 0,rgba(255,255,255,0.5) 100%);border-color:rgba(102,126,234,0.15)}body.light-mode .panel-section:hover{border-color:rgba(102,126,234,0.4)}body.light-mode .shape-item{background:linear-gradient(135deg,rgba(255,255,255,0.9) 0,rgba(255,255,255,0.7) 100%);border-color:rgba(102,126,234,0.2)}body.light-mode .shape-item:hover{border-color:#667eea;color:#667eea;background:linear-gradient(135deg,rgba(102,126,234,0.2) 0,rgba(118,75,162,0.15) 100%)}body.light-mode .menu-divider{background:rgba(255,255,255,0.25)}body:not(.light-mode) .floating-toolbar{background:linear-gradient(135deg,rgba(74,85,104,0.95) 0,rgba(45,55,72,0.95) 100%);border-color:rgba(255,255,255,0.15)}body:not(.light-mode) .floating-toolbar.dragging{box-shadow:0 16px 48px rgba(0,0,0,0.6);border-color:rgba(255,255,255,0.3)}body:not(.light-mode) .toolbar-header{background:rgba(255,255,255,0.05);border-bottom-color:rgba(255,255,255,0.1)}body:not(.light-mode) .toolbar-title{color:#e0e0e0}body:not(.light-mode) .toolbar-control-btn{background:rgba(255,255,255,0.1);border-color:rgba(255,255,255,0.2);color:#e0e0e0}body:not(.light-mode) .toolbar-control-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3)}body:not(.light-mode) .toolbar-section.collapsible-section .section-header{background:rgba(255,255,255,0.05);border-bottom-color:rgba(255,255,255,0.08)}body:not(.light-mode) .toolbar-section.collapsible-section .section-header:hover{background:rgba(255,255,255,0.1)}body:not(.light-mode) .toolbar-section.collapsible-section .section-header h4{color:#e0e0e0}body:not(.light-mode) .section-toggle{color:#e0e0e0}body:not(.light-mode) .toolbar-section h3{color:#e0e0e0;border-bottom-color:rgba(255,255,255,0.15)}body:not(.light-mode) .toolbar-section .shape-item{background:rgba(255,255,255,0.1);border-color:rgba(255,255,255,0.2);color:#e0e0e0}body:not(.light-mode) .toolbar-section .shape-item:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.4)}body:not(.light-mode) .close-toolbar-btn{background:rgba(239,68,68,0.15);border-color:rgba(239,68,68,0.3)}body:not(.light-mode) .close-toolbar-btn:hover{background:rgba(239,68,68,0.6)}body.light-mode .floating-toolbar{background:linear-gradient(135deg,rgba(255,255,255,0.95) 0,rgba(248,250,252,0.95) 100%);border:2px solid rgba(102,126,234,0.25);box-shadow:0 8px 32px rgba(102,126,234,0.15)}body.light-mode .floating-toolbar.dragging{box-shadow:0 16px 48px rgba(102,126,234,0.3);border-color:rgba(102,126,234,0.5)}body.light-mode .toolbar-header{background:linear-gradient(135deg,rgba(102,126,234,0.08) 0,rgba(118,75,162,0.08) 100%);border-bottom:2px solid rgba(102,126,234,0.15)}body.light-mode .toolbar-title{color:#667eea;font-weight:700}body.light-mode .toolbar-control-btn{background:rgba(255,255,255,0.8);border:1px solid rgba(102,126,234,0.25);color:#667eea}body.light-mode .toolbar-control-btn:hover{background:#fff;border-color:#667eea;color:#764ba2}body.light-mode .toolbar-section.collapsible-section .section-header{background:linear-gradient(135deg,rgba(102,126,234,0.05) 0,rgba(118,75,162,0.05) 100%);border-bottom:1px solid rgba(102,126,234,0.1)}body.light-mode .toolbar-section.collapsible-section .section-header:hover{background:linear-gradient(135deg,rgba(102,126,234,0.12) 0,rgba(118,75,162,0.12) 100%)}body.light-mode .toolbar-section.collapsible-section .section-header h4{color:#667eea;font-weight:600}body.light-mode .section-toggle{color:#667eea}body.light-mode .toolbar-section h3{color:#667eea;border-bottom-color:rgba(102,126,234,0.2)}body.light-mode .toolbar-section .shape-item{background:rgba(255,255,255,0.9);border:1.5px solid rgba(102,126,234,0.2);color:#334155}body.light-mode .toolbar-section .shape-item:hover{background:linear-gradient(135deg,rgba(102,126,234,0.15) 0,rgba(118,75,162,0.12) 100%);border-color:#667eea;color:#667eea}body.light-mode .close-toolbar-btn{background:rgba(239,68,68,0.1);border-color:rgba(239,68,68,0.25);color:#dc2626}body.light-mode .close-toolbar-btn:hover{background:rgba(239,68,68,0.2);border-color:#dc2626;color:#b91c1c}