, 100)
        .attr("height", 60)
        .attr("rx", 6);

      // Add input/output ports
      nodeGroups
        .filter((d) => d.id !== "input")
        .append("circle")
        .attr("class", "port")
        .attr("cx", -50)
        .attr("cy", 0)
        .attr("r", 4);

      nodeGroups
        .filter((d) => d.id !== "output")
        .append("circle")
        .attr("class", "port")
        .attr("cx", 50)
        .attr("cy", 0)
        .attr("r", 4);

      // Animate messages
      function anima