How can I have different margins on first page vs. subsequent pages?

There is a new very similar topic on which there are a few relevant answers.

For the top margin, OP points out that newlines or #v(...) would do the trick. My proposed solution still does basically that, but I think in a bit of a cleaner way. Crucially, it also works for the bottom margin, so that Typst automatically inserts a page break earlier than it would – i.e. what a top/bottom margin causes:

The basic trick is to insert a floating element at the top or bottom:

// `clearance: 0pt` is so that the `v` element controls the height exactly
#place(bottom, float: true, clearance: 0pt, v(2.5cm))

The height of the v element can even be negative, making the regular page margin smaller.