It seems to work off-line, although a reload in Opera 7.54 causes a change in the width of #middle.
Probable cause is the use of em units in 'belts' (margin, border and padding)
It is advisable to use absolute units for these, generally, small values to avoid rounding errors.
The page now validates; the menu was still wrong and some other errors have been corrected.
The menu is now positioned absolute to resolve another problem in Opera.
Quite a few changes have been made to the CSS; compare it to original.
The basic problem with the menu was in balancing #navlist dt a, #navlist dd a with the pseudo-classes, same borders etc.