How can I add extra spacing above 'heading 1' on new pages

Page 5 of the hydra manual contains the fix for your exact problem :).

// do
#show heading: it => block(v(8cm) + it
// don't
#show heading: it => v(8cm) + it

You have to wrap the vertical spacing and the heading in a block.

...
pagebreak(weak: true, to: "odd")
block(v(5em) + it)
...
2 Likes