:root { /* Цвета темы (совпадают с editor.html) */ color-scheme: dark; --bg: #0b0d10; --panel: #11151a; --muted: #a7b0bf; --border: #1f2937; --accent: #6ee7b7; /* зелёный */ --accent-2: #60a5fa; /* синий */ --node: #0e1116; --node-border: #334155; --node-selected: #1f2937; --connector: #7aa2f7; --connector-muted: #3b82f6; } /* Узлы: аккуратные контейнеры + предотвращение вылезания текста */ .drawflow .drawflow-node { background: transparent !important; box-shadow: none !important; } .drawflow .drawflow-node .title-box { background: var(--node); border: 1px solid var(--node-border); color: #e5e7eb; border-radius: 12px 12px 0 0; padding: 6px 10px; } .drawflow .drawflow-node .box { background: var(--node); border: 1px solid var(--node-border); border-top: 0; color: #e5e7eb; border-radius: 0 0 12px 12px; overflow: hidden; /* не даём контенту вылезать за края */ } .drawflow .drawflow-node .box textarea, .drawflow .drawflow-node .box pre, .drawflow .drawflow-node .box input[type="text"] { background: #0f141a; border: 1px solid #2b3646; border-radius: 8px; color: #e5e7eb; width: 100%; max-width: 100%; box-sizing: border-box; } .df-node .box textarea { white-space: pre-wrap; word-break: break-word; overflow: auto; max-height: 180px; /* предотвращаем бесконечную высоту */ } /* Выделение выбранного узла — мягкое */ .drawflow .drawflow-node.selected .title-box, .drawflow .drawflow-node.selected .box { border-color: var(--accent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); } /* Порты: более аккуратные, без «оранжевого» */ .drawflow .drawflow-node .inputs .input, .drawflow .drawflow-node .outputs .output { background: var(--accent-2) !important; border: 2px solid color-mix(in srgb, var(--accent-2) 70%, white 0%) !important; width: 12px !important; height: 12px !important; box-shadow: 0 0 0 2px rgba(0,0,0,.25); } /* Линии соединений: плавные, аккуратные цвета */ .drawflow .connection .main-path { stroke: var(--connector) !important; stroke-width: 2.5px !important; opacity: 0.95 !important; } .drawflow .connection .main-path.selected, .drawflow .connection:hover .main-path { stroke: var(--accent-2) !important; stroke-width: 3px !important; } /* Точки изгибов/ручки */ .drawflow .connection .point { stroke: var(--connector-muted) !important; fill: var(--panel) !important; } /* Убираем «уродливый крестик» удаления соединений (оставляем удаление через контекст-меню/клавиши) */ .drawflow .connection .delete, .drawflow .connection .remove, .drawflow .connection .connection-remove, .drawflow .connection [class*="remove"], .drawflow .connection [class*="delete"] { display: none !important; } /* Сайдбар: выравнивание и аккуратные подсказки */ .group-title { font-size: 12px; text-transform: uppercase; color: var(--muted); margin: 12px 0 6px; letter-spacing: .08em; } .hint { color: var(--muted); font-size: 12px; margin-top: 4px; } details.help { margin: 6px 0; } details.help summary { list-style: none; cursor: pointer; display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: #334155; color: #e5e7eb; font-weight: 700; border: 1px solid #2b3646; } details.help summary::-webkit-details-marker { display: none; } details.help .panel { margin-top: 8px; background: #0f141a; border: 1px solid #2b3646; padding: 10px; border-radius: 8px; } /* Инпуты/тексты внутри нод — одинаковые отступы и скругления */ textarea, input[type=text] { width: 100%; background: #0f141a; color: #e5e7eb; border: 1px solid #2b3646; border-radius: 8px; padding: 8px; } /* Кнопки */ button { background: #1f2937; border: 1px solid #334155; color: #e5e7eb; padding: 6px 10px; border-radius: 8px; cursor: pointer; } button:hover { background: #273246; } /* Внутренние заголовки в блоке ноды */ #inspector label { font-size: 12px; color: var(--muted); display: block; margin: 8px 0 4px; } /* Мелкие фиксы */ .drawflow .drawflow-node .input, .drawflow .drawflow-node .output { color: var(--muted); } /* Connection delete control — show and restyle (kept functional) */ .drawflow .connection foreignObject, .drawflow .connection [class*="remove"], .drawflow .connection [class*="delete"], .drawflow .connection .connection-remove { display: inline-flex !important; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 999px; background: #0f141a; color: #e5e7eb; border: 1px solid #334155; box-shadow: 0 2px 6px rgba(0,0,0,.35); cursor: pointer; opacity: .85; transition: transform .12s ease, opacity .12s ease, box-shadow .12s ease, border-color .12s ease, background-color .12s ease; } .drawflow .connection:hover foreignObject, .drawflow .connection:hover [class*="remove"], .drawflow .connection:hover [class*="delete"], .drawflow .connection:hover .connection-remove { opacity: 1; transform: scale(1.05); border-color: var(--accent-2); box-shadow: 0 0 0 3px rgba(96,165,250,.20), 0 4px 10px rgba(0,0,0,.35); } /* If delete control is rendered inside foreignObject, normalize inner box */ .drawflow .connection foreignObject div, .drawflow .connection foreignObject span { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 999px; background: #0f141a; color: #e5e7eb; border: 1px solid #334155; } /* If delete control is rendered as SVG text "x" */ .drawflow .connection text { font-family: Inter, system-ui, Arial, sans-serif; font-size: 12px; font-weight: 700; fill: #e5e7eb; } /* Subtle canvas background (lightweight dot grid) */ #canvas { background-color: var(--bg); background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,0.06) 1px, transparent 0); background-size: 24px 24px; } /* Port hover affordance (no heavy effects) */ .drawflow .drawflow-node .inputs .input, .drawflow .drawflow-node .outputs .output { transition: transform .08s ease; will-change: transform; } .drawflow .drawflow-node .inputs .input:hover, .drawflow .drawflow-node .outputs .output:hover { transform: scale(1.25); box-shadow: 0 0 0 3px rgba(96,165,250,.25); } /* Node delete "X" — minimal, clean, consistent with theme (kept functional) */ .drawflow .drawflow-node .close { position: absolute !important; /* stays in node corner */ top: -8px !important; right: -8px !important; width: 18px !important; height: 18px !important; display: grid !important; place-items: center !important; border-radius: 999px !important; font-size: 12px !important; line-height: 1 !important; font-weight: 700 !important; background: #0f141a !important; /* dark chip */ color: #e5e7eb !important; border: 1px solid #334155 !important; /* subtle border */ box-shadow: 0 2px 6px rgba(0,0,0,.35) !important; cursor: pointer !important; z-index: 10 !important; transition: transform .12s ease, box-shadow .12s ease, background-color .12s ease, border-color .12s ease, color .12s ease !important; } .drawflow .drawflow-node .close:hover { transform: scale(1.06) !important; background: #1f2937 !important; border-color: var(--accent-2) !important; color: #f8fafc !important; box-shadow: 0 0 0 3px rgba(96,165,250,.22), 0 4px 10px rgba(0,0,0,.35) !important; } .drawflow .drawflow-node .close:active { transform: scale(0.98) !important; box-shadow: 0 0 0 2px rgba(96,165,250,.20), 0 2px 6px rgba(0,0,0,.35) !important; } /* Drawflow floating delete handle (class: .drawflow-delete) — restyle but keep behavior */ #drawflow .drawflow-delete, .drawflow-delete { position: absolute !important; transform: translate(-50%, -50%) !important; width: 20px !important; height: 20px !important; display: grid !important; place-items: center !important; border-radius: 999px !important; background: #0f141a !important; border: 1px solid #334155 !important; color: transparent !important; /* hide default "x" text to avoid double symbol */ box-shadow: 0 2px 6px rgba(0,0,0,.35) !important; cursor: pointer !important; z-index: 1000 !important; transition: transform .12s ease, box-shadow .12s ease, background-color .12s ease, border-color .12s ease !important; } #drawflow .drawflow-delete::before, .drawflow-delete::before { content: "×"; font-family: Inter, system-ui, Arial, sans-serif; font-size: 13px; font-weight: 700; line-height: 1; color: #e5e7eb; } #drawflow .drawflow-delete:hover, .drawflow-delete:hover { transform: translate(-50%, -50%) scale(1.06) !important; background: #1f2937 !important; border-color: var(--accent-2) !important; box-shadow: 0 0 0 3px rgba(96,165,250,.22), 0 4px 10px rgba(0,0,0,.35) !important; } #drawflow .drawflow-delete:active, .drawflow-delete:active { transform: translate(-50%, -50%) scale(0.97) !important; }