: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;
}