Nur ein paar Funde:
CSS: overflow: hidden; ist meistens schlecht. Nutze stattdessen overflow:auto;
Wann immer eine Hintergrund Farbe definiert wird, auch eine color definieren. Das beugt überraschungen vor.
Die Gefahr besteht, dass dein absolut positionierter header Teile des main-Elements überdeckt.