Now that HTML is just a Rust value, we can use normal Rust abstractions for pretty much everything, which is nice. There's still a few parts I'd like to clean up, but this is already a lot nicer.