¿Está mal cambiar un elemento de bloque para que esté en línea con CSS si contiene otro elemento de bloque?

Sé que está mal poner un elemento de bloque dentro de un elemento en línea, pero ¿qué pasa con lo siguiente?

Imagine este marcado válido:

<div><p>This is a paragraph</p></div>

Ahora agregue este CSS:

div {
   display:inline;
}

Esto crea una situación en la que un elemento en línea contiene un elemento de bloque (El div se convierte en línea y la p es bloque por defecto)

¿Los elementos de la página siguen siendo válidos?

¿Cómo y cuándo juzgamos si el HTML es válido, antes o después de aplicar las reglas CSS?

ACTUALIZAR Desde entonces he aprendido que en HTML5 es perfectamente válido colocar elementos de nivel de bloque dentro de etiquetas de enlace, por ejemplo:

<a href="#">
      <h1>Heading</h1>
      <p>Paragraph.</p>
</a>

Esto es realmente muy útil si desea que un gran bloque de HTML sea un enlace.