It sounds like what you need is to add an OnAfterChange handler to the root node. Then when a field changes, the event will bubble up from that field to the root node, where you can catch it, identify the field that has changed, and then sent a property on that field to identify that it has been changed.
Once the field property has been set, you can use conditional formatting to check that property and change the field color.
The following article is about a different subject, but can be used to assist you in figuring out how to set the field property (i.e. using SetNamedNodeProperty) so that your conditional formatting will work:
Highlight the Active Field