/* Custom Node Styling */ .custom-node { background: rgba(30, 30, 40, 0.95); border-radius: 10px; padding: 5px 10px; box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3); width: 120px; border: 1px solid transparent; backdrop-filter: blur(8px); transition: all 0.2s ease; position: relative; overflow: visible; } .custom-node::before { content: ''; position: absolute; inset: -1px; background: linear-gradient(45deg, transparent, currentColor, transparent); border-radius: 11px; z-index: -1; opacity: 0.3; } .custom-node:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.4); } .custom-node:hover::before { opacity: 0.4; } .node-content { display: flex; flex-direction: column; gap: 6px; } .node-header { display: flex; align-items: center; gap: 10px; } .node-icon { display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 8px; color: white; font-size: 16px; } .node-title { flex: 1; font-weight: 600; font-size: 10px; color: white; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; } .node-description { font-size: 7px; color: rgba(255, 255, 255, 0.7); max-height: 30px; overflow: hidden; margin-left: 1.9rem; line-height: 1.3; text-align: left; } /* Custom Handle Styling */ .custom-handle { width: 10px !important; height: 10px !important; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.6) !important; z-index: 10; transition: all 0.2s ease; top: 50%; transform: translateY(-50%); } .custom-handle:hover { width: 12px !important; height: 12px !important; box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.15); } /* Node type-specific styling */ .input-node { color: #6366F1; background: rgba(30, 30, 40, 0.95); } /* Remove the pseudo-element background for input and publish nodes */ .input-node::before, .publish-node::before { background: none; opacity: 0; } .input-node.has-prompt { box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.5); } .node-prompt { margin-top: 5px; font-size: 9px; text-align: center; } .prompt-indicator { display: inline-block; background-color: rgba(99, 102, 241, 0.2); color: #6366F1; padding: 2px 5px; border-radius: 4px; font-weight: 500; } /* Light theme adjustments */ :root[data-theme="light"] .custom-node { background: rgba(255, 255, 255, 0.95); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15); } :root[data-theme="light"] .node-title { color: #333; } :root[data-theme="light"] .node-description { color: rgba(0, 0, 0, 0.6); } :root[data-theme="light"] .custom-handle { border: 1px solid rgba(0, 0, 0, 0.3) !important; } :root[data-theme="light"] .prompt-indicator { background-color: rgba(99, 102, 241, 0.1); } /* Execution Status Styling */ .custom-node.pending { opacity: 0.8; } .custom-node.in-progress { animation: node-pulse 1.5s infinite; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.5); } .custom-node.in-progress::before { opacity: 0.6; background: linear-gradient(45deg, transparent, #6366f1, transparent); animation: border-pulse 1.5s infinite; } .custom-node.completed { box-shadow: 0 0 12px rgba(16, 185, 129, 0.5); } .custom-node.completed::before { opacity: 0.6; background: linear-gradient(45deg, transparent, #10B981, transparent); } .custom-node.error { box-shadow: 0 0 12px rgba(239, 68, 68, 0.6); } .custom-node.error::before { opacity: 0.6; background: linear-gradient(45deg, transparent, #EF4444, transparent); } @keyframes node-pulse { 0% { transform: translateY(0); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.5); } 50% { transform: translateY(-3px); box-shadow: 0 0 15px rgba(99, 102, 241, 0.7); } 100% { transform: translateY(0); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.5); } } @keyframes border-pulse { 0% { opacity: 0.4; } 50% { opacity: 0.8; } 100% { opacity: 0.4; } } /* Light theme adjustments */ :root[data-theme="light"] .custom-node.in-progress { box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.4); } :root[data-theme="light"] .custom-node.completed { box-shadow: 0 0 12px rgba(16, 185, 129, 0.3); } :root[data-theme="light"] .custom-node.error { box-shadow: 0 0 12px rgba(239, 68, 68, 0.4); } .researcher-node { color: #4C1D95; } .agent-node { color: #10B981; } .insights-node { color: #F59E0B; } .notify-node { color: #EF4444; } .publish-node { color: #DC2626; background: rgba(30, 30, 40, 0.95); } .default-node { color: #8B5CF6; }