body.canvas-batch-ready .canvas-toolrail .node-tool:not(.canvas-batch-tool):not(.canvas-module-tool):not(.canvas-edit-tool) {
  display: none !important;
}

.canvas-edit-tool {
  color: #9653c7;
  border-color: #e3d4ef !important;
  background: #fbf6ff !important;
}

.canvas-edit-node,
.canvas-edit-result {
  position: absolute;
  z-index: 27;
  box-sizing: border-box;
  overflow: visible;
  color: #282b31;
  background: rgba(255, 255, 255, 0.99);
  border: 1px solid #dddfe8;
  border-radius: 16px;
  box-shadow: 0 16px 38px rgba(43, 48, 69, 0.15);
  pointer-events: all;
  user-select: none;
  font-family: Inter, "Microsoft YaHei", "PingFang SC", sans-serif;
}

.canvas-edit-node { width: 370px; }
.canvas-edit-result { width: 300px; }

.canvas-edit-node.selected,
.canvas-edit-result.selected,
.canvas-edit-node:focus-within,
.canvas-edit-result:focus-within {
  border-color: #aa72d1;
  box-shadow: 0 0 0 1px rgba(150, 83, 199, 0.18), 0 18px 42px rgba(43, 48, 69, 0.17);
}

.canvas-edit-header {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 0 13px;
  border-bottom: 1px solid #ececf2;
  cursor: grab;
}

.canvas-edit-step {
  width: 27px;
  height: 27px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  color: #8a44bc;
  background: #f4eafd;
  font-size: 11px;
  font-weight: 800;
}

.canvas-edit-title { flex: 1; font-size: 13px; }
.canvas-edit-status { color: #8b68a5; font-size: 9px; font-style: normal; }

.canvas-edit-delete {
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: 7px;
  color: #999ca6;
  background: transparent;
  cursor: pointer;
  font-size: 16px;
}

.canvas-edit-delete:hover { color: #b34d3c; background: #fff1ee; }

.canvas-edit-section { padding: 12px 14px; border-bottom: 1px solid #efeff4; }

.canvas-edit-section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 9px;
}

.canvas-edit-section-heading b { font-size: 10px; }
.canvas-edit-section-heading small { color: #9296a0; font-size: 9px; }

.canvas-edit-source-empty,
.canvas-edit-result-empty {
  display: grid;
  place-items: center;
  min-height: 86px;
  border: 1px dashed #dfd7e6;
  border-radius: 9px;
  padding: 12px;
  color: #92909a;
  background: #fcfaff;
  text-align: center;
  font-size: 9px;
  line-height: 1.55;
}

.canvas-edit-source-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
}

.canvas-edit-source-grid button,
.canvas-edit-result-image {
  position: relative;
  overflow: hidden;
  aspect-ratio: 1;
  border: 2px solid transparent;
  border-radius: 8px;
  padding: 0;
  background: #f1f2f5;
  cursor: pointer;
}

.canvas-edit-source-grid button.is-selected { border-color: #9856c7; }
.canvas-edit-source-grid img,
.canvas-edit-result-image img { width: 100%; height: 100%; display: block; object-fit: cover; }

.canvas-edit-source-grid span,
.canvas-edit-result-image span {
  position: absolute;
  left: 3px;
  bottom: 3px;
  min-width: 17px;
  height: 17px;
  display: grid;
  place-items: center;
  border-radius: 5px;
  color: #fff;
  background: rgba(35, 31, 40, 0.75);
  font-size: 8px;
}

.canvas-edit-form { display: grid; gap: 10px; }
.canvas-edit-field { display: grid; gap: 6px; color: #555963; font-size: 10px; font-weight: 650; }

.canvas-edit-field input,
.canvas-edit-field textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #dfe1e8;
  border-radius: 8px;
  outline: none;
  padding: 9px 10px;
  color: #292c32;
  background: #fff;
  font: 400 10px/1.5 Inter, "Microsoft YaHei", sans-serif;
  resize: vertical;
}

.canvas-edit-field input:focus,
.canvas-edit-field textarea:focus {
  border-color: #aa72d1;
  box-shadow: 0 0 0 3px rgba(150, 83, 199, 0.11);
}

.canvas-edit-preserve {
  display: flex;
  align-items: center;
  gap: 7px;
  color: #656974;
  font-size: 9px;
}

.canvas-edit-preserve input { accent-color: #9653c7; }

.canvas-edit-footer {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 8px;
  padding: 12px 14px 14px;
  background: #fcfbfd;
  border-radius: 0 0 16px 16px;
}

.canvas-edit-secondary,
.canvas-edit-run {
  min-height: 38px;
  border-radius: 9px;
  cursor: pointer;
  font-size: 10px;
  font-weight: 700;
}

.canvas-edit-secondary { border: 1px solid #ddd7e4; color: #75528e; background: #fff; }
.canvas-edit-run { border: 0; color: #fff; background: linear-gradient(135deg, #a15bd0, #8141b0); }
.canvas-edit-run:disabled { opacity: .55; cursor: wait; }

.canvas-edit-result-body { max-height: 470px; overflow-y: auto; padding: 12px; }
.canvas-edit-result-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }

.canvas-edit-port {
  position: absolute;
  z-index: 6;
  top: 50%;
  width: 20px;
  height: 20px;
  transform: translateY(-50%);
  border: 2px solid #9653c7;
  border-radius: 50%;
  padding: 0;
  background: #fff;
  cursor: crosshair;
  box-shadow: 0 0 0 3px rgba(255,255,255,.92);
}

.canvas-edit-port-input { left: -11px; }
.canvas-edit-port-output { right: -11px; }
[data-canvas-batch-results] > .canvas-edit-port-output { top: 50%; }

.canvas-edit-edges {
  position: absolute;
  z-index: 21;
  inset: 0 auto auto 0;
  width: 3200px;
  height: 1900px;
  overflow: visible;
  pointer-events: none;
}

.canvas-edit-edges path { fill: none; stroke: #a66dca; stroke-width: 2.3; stroke-linecap: round; }
.canvas-edit-edges path.is-pair { stroke-dasharray: 5 5; }
.canvas-edit-edges path.is-preview { stroke-dasharray: 7 6; opacity: .72; }

body.canvas-edit-linking [data-canvas-edit-node]:not(.canvas-edit-result) {
  outline: 3px solid rgba(155, 85, 201, .35);
  outline-offset: 4px;
}

body.canvas-edit-linking [data-canvas-edit-node]:not(.canvas-edit-result)::after {
  content: "松开或点击即可接入结果";
  position: absolute;
  z-index: 40;
  inset: 0;
  display: grid;
  place-items: center;
  border-radius: 16px;
  color: #8141b0;
  background: rgba(248, 239, 255, .76);
  font-size: 14px;
  font-weight: 760;
  pointer-events: none;
}

.canvas-edit-notice {
  position: absolute;
  z-index: 95;
  left: 50%;
  bottom: 28px;
  transform: translate(-50%, 12px);
  opacity: 0;
  pointer-events: none;
  border: 1px solid #e0d5e8;
  border-radius: 10px;
  padding: 9px 14px;
  color: #68487e;
  background: rgba(255,255,255,.98);
  box-shadow: 0 10px 28px rgba(45,38,52,.16);
  font-size: 11px;
  transition: .18s ease;
}

.canvas-edit-notice[data-visible="true"] { transform: translate(-50%, 0); opacity: 1; }
.canvas-edit-notice[data-tone="success"] { color: #277a54; border-color: #bfe3d2; }
.canvas-edit-notice[data-tone="error"] { color: #b34b35; border-color: #efc8bf; }
