a occhio solito problema dei float senza il clearing

prova ad applicarlo direttamente al footer
#footer {
clear: both;
}