Sorry, I can’t find a proper and concise way to describe the problem in the title. Let me explain in detail here.
I’m making a poster with many color boxes. I want all boxes aligned and fill up all available vertical space and thus there is no extra blank areas. Here is a simplified version of it:
#set page(width: 300pt, height: 200pt)
#set rect(
inset: 8pt,
fill: rgb("e4e5ea"),
width: 100%,
radius: 5pt,
)
#grid(
columns: (1fr, 1fr, 1fr),
gutter: 3pt,
grid.cell(rowspan: 2, rect[
I don't want to use `fill` provided by `grid` because I can not get nice `radius`.\
This is 2 rows.
]),
rect[How to make this expand?],
rect[I want each cell to take up all available space.],
rect[I don't want to hard code heights of each row.],
rect[How to make this expand?],
)
The result:

The desired layout should look like the following:

It is achieved by using fill provided by grid, but I don’t want to use it because it is much less flexible than rect or other things. For example, it cannot have radius set. Is it possible to make all rect automatically take up all vertical spaces?

