CSS und Logik lässt sich nicht immer sinnvoll vereinbaren
Daher habe ich schon mehr oder weniger aufgegeben, über saubere Lösungen nachzudenken. Vor allem das, was du hier gerade präsentierst ist ein Paradebeispiel, dass irgendwas schief gelaufen ist...
Das mit der Reset-Datei war nur ein allgemein Hinweis, da du erwähnt hattest, dass du die margin- und padding-Werte von body etc. auf 0 gesetzt hast. So eine reset-Datei macht das eben für alles Element von vorn herein automatisch.
Oha, hatte da doch glatt nur den border für
top angegeben. Du kannst ihn für das header-div ohne top setzen, also
border: 1px solid transparent;. Hatte leider eher selten diese Problem, weswegen ich dir wohl nur diese eine Lösung anbieten kann.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)