Dilettante_Pro, ваш скрипт работает правильно только для этого конкретного случая... попробуйте 
@media all {
  .buttonRED:hover, .test {
    background-color: #ee5f5b;
  }
  .buttonRED {
    background-color: #B61E29;
    border: 1px solid #000;
    width:100px;
  }
  
  .buttonRED:active {
    background: #ff6;
  }
}
UPD 
<style>
.buttonRED {
	background-color: #B61E29;
	border: 1px solid #000;
	width:100px;
}
.buttonRED:hover {
	background-color: #ee5f5b;
}
 
.buttonRED:active {
	background: #ff6;
}
@media all {
	.buttonRED:hover, .test {
		background-color: #ee5f5b;
	}
	.buttonRED {
		background-color: #B61E29;
		border: 1px solid #000;
		width:100px;
	}
	.buttonRED:active {
		background: #ff6;
	}
}
</style>
<div class="buttonRED">Красная кнопка</div>
<button id="clear">Удалить стили</button>
<script>
clear.onclick = function () {
	for(const styleSheet of document.styleSheets) {
		process(styleSheet.cssRules)
	}
	function process(cssRules) {
		for(const rule of cssRules) {
			if(rule instanceof CSSStyleRule) {
				rule.selectorText = rule.selectorText.replace(/\.buttonRED:(hover|active)/g, "#a:not(#b)");
			}
			if(rule instanceof CSSMediaRule) {
				process(rule.cssRules)
			}
		}
	}
}
</script>
Замена на a:not(b)  является способом не поломать составной селектор!
Замена на 
#a:not(#b)  является способом не поломать составной и сложный селекторы!