digraph auth {
    nodesep=0.5;
    rankdir="RL";

    C [label="Create (1,1)"];

    BJ [label="Bob's Join (2,1)", color=red];
    BJ2 [label="Bob's Join (2,2)", color=red];
    BJ2 -> BJ [color=red, dir=none];

    subgraph cluster_foo {
        A1 [label="Alice's invite (4,1)", color=blue];
        A2 [label="Alice's Join (4,2)", color=blue];
        A3 [label="Alice's Join (4,3)", color=blue];
        A3 -> A2 -> A1 [color=blue, dir=none];
        color=none;
    }

    PL1 [label="Power Level (3,1)", color=darkgreen];
    PL2 [label="Power Level (3,2)", color=darkgreen];
    PL2 -> PL1 [color=darkgreen, dir=none];

    {rank = same; C; BJ; PL1; A1;}

    A1 -> C [color=grey];
    A1 -> BJ [color=grey];
    PL1 -> C [color=grey];
    BJ2 -> PL1 [penwidth=2];

    A3 -> PL2 [penwidth=2];
    A1 -> PL1 -> BJ -> C [penwidth=2];
}