Но если закрыть меню и расширить масштаб браузера то меню пропадет.
menu.style.display = "none";
Будет приоритетнее, чем медиа, которое срабатывает на изменении размера.
Если нужно только js: Или сделай отдельно мобильное / отдельно десктопное, или делай прверку на ресайзе в js ещё
UPD или делай закрытие через классы, прописав в медиа для них условия тоже
.hide {
display: none;
}
@media screen and(min-width: 992px) {
.hide {
display: block;
}
}
UPD2
@media screen and(min-width: 992px) {
.menu{
display: block !important;
}
}