> completely flies in the face of separating view from the program layer
HTML is the view layer. The "program" layer is JS manipulating JSON (ultimately fetched from a DB).
Separating HTML and CSS made sense when content lived in HTML, and styling lived in CSS. Content hasn't lived in HTML in a long time— it lives in a DB now. (Maybe markdown if you're making a static site.) Separating HTML from CSS is separating view layer from view layer— just an unnecessary and expensive indirection
HTML is the view layer. The "program" layer is JS manipulating JSON (ultimately fetched from a DB).
Separating HTML and CSS made sense when content lived in HTML, and styling lived in CSS. Content hasn't lived in HTML in a long time— it lives in a DB now. (Maybe markdown if you're making a static site.) Separating HTML from CSS is separating view layer from view layer— just an unnecessary and expensive indirection