Ваша проблема здесь:
.clearfix:after {
clear:both;
content:" ";
display:block;
font-size:0;
height:0;
visibility:hidden;
}
Firefox не всегда нравится это правило, вместо этого я бы сделал это:
.clearfix {
overflow: auto;
}
Или, в качестве альтернативы, просто задайте ему высоту, чтобы он не выводил высоту строки:
.clearfix:after {
clear:both;
content:" ";
display:block;
font-size:0;
height:1px;
visibility:hidden;
}