Es una cuestión de colapsamiento de CSS, una cosa más bien
extraña.
Para solucionarlo hay más de una técnica, la que yo suelo hacer es añadirle al contenedor un
overflow
quedando en tu caso algo así:
Eso forzará a CSS a no colapsar los márgenes y aplicará el margen justo como quieres.