#reconnect-handles{position:absolute;inset:0;pointer-events:none;z-index:10;overflow:clip}
.edge-hit{fill:none;stroke:transparent;pointer-events:stroke;cursor:pointer}
.reconnect-handle{position:absolute;transform:translate(-50%,-50%);width:19px;height:19px;border:2px solid var(--ink);border-radius:50%;background:var(--paper);color:var(--ink);font:9px var(--mono);padding:0;pointer-events:auto;touch-action:none;cursor:grab;box-shadow:0 0 0 3px var(--paper)}
.reconnect-handle:hover,.reconnect-handle:focus-visible{outline:2px solid var(--tone-6);outline-offset:3px;background:var(--ink);color:var(--paper)}
.is-reconnecting{cursor:grabbing}.is-reconnecting .edge.selected{opacity:.2}.is-reconnecting .reconnect-handle{pointer-events:none;opacity:.35}
#reconnect-preview{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:12;pointer-events:none;color:var(--ink)}
#reconnect-preview path{stroke:currentColor;stroke-width:2;fill:none;stroke-dasharray:6 4}#reconnect-preview circle{stroke:currentColor;stroke-width:2;fill:var(--paper)}#reconnect-preview.is-invalid{color:var(--error)}
.reconnect-target{outline:2px solid var(--ink)!important;outline-offset:3px}.reconnect-invalid{outline:2px solid var(--error)!important;outline-offset:3px}
#reconnect-feedback{position:absolute;left:50%;bottom:76px;transform:translateX(-50%);max-width:min(500px,90%);padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 3px 12px #0001;color:var(--ink);font-size:11px;line-height:1.6;pointer-events:none;z-index:13}#reconnect-feedback.is-invalid{color:var(--error);border-color:var(--error)}
.reconnect-actions{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px}.reconnect-actions .btn{font-size:10px;padding:8px}.reconnect-warning{font-size:11px;line-height:1.7;color:var(--warning);padding:9px 11px;border:1px solid var(--line);border-radius:6px;margin-bottom:10px}
