Here’s the layout rendered into SVG with JS, with some intersection testing.