This is neat. If you do look at beziers you'll run into some difficulty with offsetting them / creating parallel curves.
But you can find a solution for that with this crate: https://crates.io/crates/kurbo
And a nifty article on the topic: https://raphlinus.github.io/curves/2022/09/09/parallel-beziers.html