I can sympathise with your terrain dilemma – at least the lack of vertical part, with one local ski hill with 48 m vertical (<2 min). A similar thread came up under Mountain running: https://uphillathlete.com/forums/topic/z3-training-in-a-city/
Most will likely recommend treadmill workouts, which Scott J did in that thread. I just can’t manage mentally doing treadmill running or any running indoors, so I have always done tempo runs/longer intervals outdoors. For me I find the ability to maintain speed and rapid leg turnover valuable; consequently I often have done harder sessions on a nearby rolling 3.2 km x-c ski trail, which at least also gives some slight uphill/downhill benefits. Maybe because uphills have been my stronger side, but I find speedwork transfers for me (always a caveat) both for mountain/trail running and now also coming back into skiing (skimo (not racing) and skijoring).