Для того, чтобы ваш селектор работал, класс .menu должен быть дочерним элементом вашего флажка.
Если вы хотите выбрать элемент .menu, и этот элемент является соседним / соседним с флажком, тогда вам все еще нужен символ тильды.
checkbox:checked ~ .menu {
visibility: visible;
}