Man sollte nicht krampfhaft versuchen, Webseiten ohne <div> und ohne <table> zu erstellen. Man muss nur begreifen, was "Semantik" bedeutet und dann kommt eigentlich alles von selber.
Ich weiß nicht, ob es bei CSS auch Todsünden gibt, ich denke mal, hier ist das ganze etwa entspannter, weil wenn man was falsch macht, sieht man das Ergebnis sofort auf dem Bildschirm. Bei HTML sehen Sehende das nicht sofort, wenn sie was falsch machen. Dazu müssten sie schon einen Client benutzen, der die Seite nicht visuell darstellt, sondern den HTML-Code interpretiert. Für einen Browser ist das HTML-Code sogar weitestgehend egal, weil es an sich nur darauf ankommt, ob es sich um Inline- oder Block-Elemente handelt.
Wenn ich in CSS etwas als Todsünde bezeichnen müsste, dann sind es absolute Positionierungen mit dem Ziel, Elemente der Seite pixelgenau im Viewport darzustellen, so wie das vielleicht jeder Anfänger von CSS zuerst glaubt. Auch ich dachte anfangs, dass absoloute Positionierung der eigentliche Durchbruch in CSS ist. Aber weit gefehlt. Ist natürlich Käse, da ja jeder Nutzer was anderes eingestellt haben kann - Schriftgröße, Viewport-Größe, Fonts, usw. usf.
Was den aktuellen Stand Deiner Seite angeht - da steht noch ein <img> irgendwo im Nichts. Eine Grafik ist leider auch nicht zu erkennen, so dass man bewerten könnte, wo das hingehört. Images mit Content werden per HTML (das ist ja Content) eingebunden, Images zur Zierde mit CSS (das ist ja Optik). Ist es ein Image mit Inhalt, kommt es vermutlich in <h1> oder <h2> oder in eine Gruppe aus den beiden Überschriften und dem Image. Ist es nur Zierde, wird es als Background-Image für eine der beiden Überschriften oder einer Gruppe draus angegeben.
Deine Einrückungen versteh ich nicht ganz, aber das ist ja eh nur eine Sache der eigenen Lesbarkeit.