/* A separate decorative world layer: no focusable children or pointer targets. */
.jmc-editor .jmc-connection-flow {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 1px;
  overflow: visible;
  pointer-events: none;
}
.jmc-editor .jmc-connection-flow * { pointer-events: none; }
.jmc-editor .jmc-connection-flow[hidden] { display: none; }
.jmc-editor .jmc-flow-connection.is-inactive { visibility: hidden; }
.jmc-editor .jmc-flow-segment {
  fill: none;
  stroke-width: var(--jmc-flow-core-width, 1px);
  stroke-linecap: butt;
  stroke-linejoin: round;
  animation: jmc-connection-flow-travel var(--jmc-flow-duration, 1s) linear infinite;
}
.jmc-editor .jmc-flow-glow {
  opacity: .4;
  filter: blur(var(--jmc-flow-blur, 1px));
}
.jmc-editor .jmc-flow-glow .jmc-flow-segment { stroke-width: var(--jmc-flow-glow-width, 3px); }
.jmc-editor .jmc-connection-flow.is-paused .jmc-flow-segment,
.jmc-editor .jmc-connection-flow[hidden] .jmc-flow-segment,
.jmc-editor[hidden] .jmc-flow-segment,
.jmc-editor .jmc-flow-connection.is-inactive .jmc-flow-segment { animation-play-state: paused; }
@keyframes jmc-connection-flow-travel {
  from { stroke-dashoffset: var(--jmc-flow-from); }
  to { stroke-dashoffset: var(--jmc-flow-to); }
}
@media (prefers-reduced-motion: reduce) {
  .jmc-editor .jmc-connection-flow { visibility: hidden; }
  .jmc-editor .jmc-flow-segment { animation-play-state: paused; }
}
