Hi, neither game instance nor widgets replicate, they only exist locally. Therefore it makes no sense to have replicated variables there or call RPCs there…
If you want to sync widgets you need to do some manual workaround. I currently don’t see any good way to do that, what you could do is reroute the widget clicks to the player controller and from there replicate them to the server. Then use a replicated actor that does exist on the server and all clients that would store the replicated color variable. The server then sets that color variable (I would use repnotify) and then from the repnotify variable you change the color of the widget.
So widget (local client) → player controller (local client) → server (server) → replicated actor (all) → widget (all)
or in more of way like you do it
widget (local client) → game instance (local client) → player character (local client) → server (server) → player character (all) → widget (all)
So widget sets a variable inside the game instance which then calls an event on player character which then calls RunOnServer with the variable, then the server updates a repnotify variable which then executes the repnotify function on all and from there you set the widget variable.