Это не работает, потому что вы устанавливаете переменную только для кнопки, поэтому вы не переопределяете глобальную переменную.
Что вы можете сделать, это переопределить ее значение с помощью javascript при наведении курсора на кнопку. Это исключит любое ограничение css родного брата для работы:
function changeGlobalVariable(visible) {
document.documentElement.style.setProperty('--op', visible ? 'visible' : 'hidden');
}
:root {
--op: hidden;
}
button:hover {
background-color: yellow;
}
div {
visibility: var(--op);
width: 100px;
height: 100px;
background-color: red;
}
<button
onmouseover="changeGlobalVariable(true)"
onmouseout="changeGlobalVariable(false)">Hover</button><div></div>