The frontend is in pure HTML and CSS. But we can't build the server with HTML and CSS. These are markup languages. We still need a programming language. Now of course you could pick something with a thinner runtime like C instead of js on node.js, but there's no escaping a runtime.
Frameworks and runtimes though very similar technically, are different conceptually. Frameworks dictate a structure (a framwork) for how code is written (think React components) whereas runtimes are more concerned with letting you run the code and interface with the underlying platform (think libc).