var i, j, sel = /a:hover/;
for(i = 0; i < document.styleSheets.length; ++i){
try{
var rules = document.styleSheets[i].cssRules;
for(j = 0; j < rules.length; ++j){
if(sel.test(rules[j].selectorText)){
console.log( rules[j].selectorText, rules[j].style.cssText);
}
}
}catch(e){
console.log('Error ', i);
}
}
var st = document.createElement('style'),
tn = document.createTextNode(`
.elem:hover,
.elem.hover {
background: blue;
}
`);
document.getElementsByTagName('head')[0].appendChild(st);
st.appendChild(tn);
<style>
можно использовать где угодно на странице и это не нарушит её валидность. Не вводите в заблуждение словом "необходимо". Даже "рекомендуется" здесь подходит меньше.
Эт где такая? Все браузеры облазил.