Hi Aaron,
Regarding your CSS comments, ID attributes as namespaces is a possible solution, but it raises the CSS specificity a lot. It’s doable on a new project, but it would probably not be feasible on an existing project.

I think a (not “the”) fundamental reason for the complaints about the CSS global cascade is that CSS isn’t a “full” programming language, where a runtime can simply throw errors when there are syntax or scope errors.

I definitely don’t like the idea of putting every CSS as inline. Elements that change little can still exist in separate CSS files. Elements that have a lot of state changes may necessitate inline styles, but as you said, careful use of CSS to manage state changes can go a long way.