Варианты:
1. В обычном состоянии задавать прозрачную (transparent) границу той же толщины.
border: 2px solid transparent;
2. Задавать подчеркивание не с помощью border, а с помощью ::after и позиционирования.
3. Задавать
box-sizing: border-box
и высоту. Плохой способ, во-первых, высоту вообще вредно задавать, во-вторых, может плавать вертикальное центрирование.
4. Вместо border задавать фон линейным градиентом с четкой границей.
background: linear-gradient(to top, red 2px, transparent 3px)
В вашем случае, я бы выбрала
1ый или 4ый варианты.