Dominando la Jerarquía: El ADN de tus Estilos
Escribir CSS es fácil, pero mantenerlo es difícil si no entiendes las reglas del juego. En este módulo profundizamos en cómo el navegador decide qué estilo aplicar cuando hay conflictos y cómo aprovechar la 'genética' del código para escribir menos y lograr más.

Fundamentos: El Árbol Genealógico (DOM)
Todo empieza con la relación Padre-Hijo. El HTML no es plano; es un árbol de nodos. * **Padre (Parent)**: Contenedor directo. * **Hijo (Child)**: Elemento directo dentro del padre. * **Descendiente**: Cualquier elemento dentro, sin importar el nivel (hijo, nieto, bisnieto). Entender esto es vital porque CSS propaga estilos basándose en estas ramas.
Herencia: Lo que fluye y lo que no
No todas las propiedades se heredan. * **Se Heredan (Tipografía)**: `color`, `font-size`, `font-family`, `text-align`. Si se las das al padre, pasan a los hijos. * **NO se Heredan (Caja)**: `width`, `margin`, `padding`, `border`. Imagina el caos si definieras un borde al `body` y cada párrafo heredara ese borde. Por eso, el modelo de caja no se hereda por defecto.


Selectores Descendentes (Espacio)
El selector `A B` (separado por espacio) selecciona a **todos** los elementos B que estén dentro de A, sin importar la profundidad. Es útil para estilos generales de sección, pero peligroso si tienes una estructura muy profunda, ya que podrías afectar elementos 'nietos' o 'bisnietos' sin querer.
Selector de Hijo Directo (>)
Para mayor precisión, usamos el combinador `>` (mayor que). El selector `A > B` solo selecciona a B si es **hijo inmediato** de A. Si B está dentro de otro contenedor intermedio, el estilo se ignora. Esto reduce la 'contaminación' de estilos en proyectos grandes.

La Cascada: Cuando hay Empate
Si dos reglas tienen **exactamente la misma especificidad**, entra en juego la 'Cascada' (el orden de lectura). El navegador lee de arriba a abajo. La regla que esté escrita al **final** del archivo CSS sobrescribirá a la anterior. Por eso se llaman Hojas de Estilo en Cascada.
El Peligro de !important
Existe una 'bomba nuclear' en CSS: `!important`. Corta cualquier precedencia y se impone sobre todo (incluso sobre estilos inline). **Regla de oro**: Si necesitas más de 5 `!important` en todo tu proyecto, probablemente algo estás haciendo mal en tu arquitectura. Úsalo solo para sobrescribir librerías externas rebeldes, no para arreglar tu propio código.
Buenas Prácticas de Arquitectura
Para mantener la sanidad mental: 1. Mantén la especificidad baja (usa clases, no IDs). 2. Evita anidamientos profundos (no hagas `.a .b .c .d`). Máximo 3 niveles. 3. Aprovecha la herencia para tipografías globales en el `body`. 4. Usa selectores de hijo directo `>` para componentes modulares.

Estilos Inline: El Peso Pesado
Los estilos escritos directamente en la etiqueta HTML (inline) tienen una especificidad altísima (1000 puntos), sobrescribiendo cualquier cosa que pongas en tu hoja de estilos externa. ⚠️ **Advertencia**: Aunque parecen útiles para cambios rápidos, **no se recomienda usarlos**. Ensucian el HTML y hacen imposible mantener el diseño de forma centralizada.
Caso Práctico: Simplificación de Selectores
Observa la diferencia entre un selector ineficiente y uno optimizado. A la izquierda, un selector sobrecalificado que depende de la estructura HTML. A la derecha, una clase directa y reutilizable. Siempre que puedas, crea una clase que describa el componente en lugar de navegar por todo el árbol del DOM para encontrarlo.