Вопрос решился очень просто
После каждого div создаём ещё контейнер .hoverHelper
.hoverHelper {display: none;
width: 0;
height: 0;
top: 0;
left: 0;
margin-right: 0!important;
transition-delay: .5s;}
.div:hover + .hoverHelper {display: unset;
width: 40px;
margin-left:-40px;
height: 40px;
top: 0;
transition-delay: .5s;
z-index: 10;
}
Всё решилось очень просто на css
Получается, что этот .hoverHelper перекрывает div с отсрочкой полсекунды, и когда мы второй раз жмём на div, ты мы уже жмём на невидимый .hoverHelper, и поэтому эффект .div:hover снимается.