Почему ширина width больше чем указано?
Стандартно width задает ширину контентной области блока. При формировании блока поля padding приплюсовываются дополнительно. А также границы border.
 В вашем случае имеем дело с padding.
Если в двух словах, то общая ширина элемента у вас получается так: ширина = width + padding
Тут можно подробнее почитать CSS3: свойство Box-Sizing