Сначала попробуйте расположить свой код CSS, .top: hover :: after должен идти после .top :: after ,
также, трюк, которыйна мобильном устройстве элемент занимает полную ширину, поэтому попробуйте указать конкретную ширину элемента на экранах мобильных устройств.
Попробуйте этот код, он отлично работает.
<div class="top">
Hi
</div>
.top{
position: relative;
color: black;
width: 50px;
}
.top::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0%;
border-bottom: 2px solid rgb(28, 67, 63);
transition: 0.4s;
}
.top:hover{
color: rgb(28, 67, 63);
}
.top:hover::after{
width: 100%;
}