And one more detail about Ch difficulities. The main problem in Gtk is that when the styling engine renders the widget, it has the pointer to the real widget.
Styling engine then can alter behaviour based on the settings of the widget, and they DO, including such subtle things like "button is now child of menubar". So in order to get something meaningful, you have to emulate all these things, create all hierarchies and hope for the best (that is, that another engine will not do something you have not accounted for yet).