Como dijiste en un comentario que cuantas más opciones tengas, mejor, aquí tienes otra.
En CSS3, hay dos "modelos de caja" diferentes. Uno agrega el borde y el relleno al ancho de un elemento de bloque, mientras que el otro no. Puede utilizar este último especificando
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
Luego, en los navegadores modernos, el elemento siempre tendrá el mismo ancho. Es decir, si le aplica un borde al pasar el mouse, el ancho del borde no se agregará al ancho total del elemento; el borde se agregará "dentro" del elemento, por así decirlo. Sin embargo, si recuerdo correctamente, debe especificar width
explícitamente para que esto funcione. Lo cual probablemente no sea una opción para usted en este caso particular, pero puede tenerlo en cuenta para situaciones futuras.