I have to say that this is a problem that I had for a while, and one of the things that I did not like, eventually solved this problem ... float: right .
In my case, it was an input[type='radio'] + label element, and since CSS moves forward and not backward, ~ input[type='radio'] + label will select all siblings after the element being checked.
Since float: right is responsible for accepting "A, B, C" and positions them as "C, B, A" - I changed the order of radio elements from 1-6 to 6-1 in HTML, and made them float: right with CSS
What it did turned them back to order 1-6 when rendering to the browser.
Now that I used ~ input[type='radio'] + label , it still defined the styles in the same way (which in my case was the color of the label), however, the styles from the siblings were now - visually - the previous ones.
This stream is older than a year, but if someone needs an example, I will create and publish a pen if asked.
source share