You can halve the gutter and add an empty column between the two:
#grid(
columns: (2fr, 0pt, 3fr),
column-gutter: 2em,
block(width: 100%, height: 3em, stroke: 1pt),
grid.vline(stroke: 0.5pt),
[],
block(width: 100%, height: 3em, stroke: 1pt),
v(4em),[],v(3em),
block(width: 100%, height: 3em, stroke: 1pt),
grid.vline(stroke: 3pt),
[],
block(width: 100%, height: 3em, stroke: 1pt),
)
It’s worth mentioning that the first call to grid.vline
, with a stroke thickness of 0.5pt, is redundant and can be safely removed, as the second call, with a stroke thickness of 3pt, also goes through the full height of the grid such that the line with less thickness isn’t visible. But it’s possible this was just an artifact of the process of making a minimal example, in which case you can ignore this.