Вот часть спецификации, которая описывает, как рассчитывается ширина элемента блока: https://www.w3.org/TR/CSS21/visudet.html#blockwidth.
Формула:
Следующие ограничения должны соблюдаться среди используемых значений других свойств:
'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = width of containing block
Вы также можете прочитать, что:
Если для 'width' установлено значение 'auto', любые другие значения 'auto' становятся равными '0', а из полученного равенства следует 'width'.
Так что отступы и границы у нас будут 0 и у нас будет:
'margin-left' + 'width' + 'margin-right' = width of containing block
тогда
'width' = width of containing block - 'margin-left' - 'margin-right'
Теперь ясно, что если поле будет отрицательным, ширина элемента увеличится за ширину содержащего блока.