El Modelo de Caja: La Base de Todo
learn.cssArchitectureBoxModel.Header.subtitle
Para el navegador, tu sitio web no es una obra de arte, es una colección de cajas rectangulares. En este módulo exhaustivo, desglosamos la geometría del diseño web: desde las propiedades básicas de ancho y alto, pasando por la gestión del contenido que se desborda, hasta las técnicas profesionales para evitar cálculos matemáticos complejos.

La Regla de Oro: Todo es una Caja
El concepto fundacional de CSS es que **todo elemento HTML es una caja rectangular**, incluso si visualmente parece un círculo o un texto irregular. El navegador dibuja un rectángulo invisible alrededor de cada etiqueta (`h1`, `p`, `img`, `div`). Como desarrolladores, nuestro trabajo es manipular el tamaño, el borde y el espacio de estas cajas para crear la composición deseada.

Comportamiento de Cajas: Bloque vs. Línea
No todas las cajas se comportan igual. Existen dos tipos principales por defecto: 1. **Bloque (`display: block`)**: Son 'egoístas'. Ocupan todo el ancho disponible y fuerzan un salto de línea (ej: `div`, `h1`, `p`). 2. **Línea (`display: inline`)**: Son 'sociales'. Ocupan solo el ancho de su contenido y se sitúan junto a otros elementos (ej: `span`, `a`, `strong`).
Anatomía de la Caja (Las 4 Capas)
Cada caja se compone de cuatro capas concéntricas, desde adentro hacia afuera: 1. **Content (Contenido)**: Donde vive el texto, imagen o hijos. 2. **Padding (Relleno)**: Espacio interno respirable. 3. **Border (Borde)**: El límite físico. 4. **Margin (Margen)**: Espacio externo para separar elementos.

Dimensiones: Width y Height
Definimos el tamaño del **área de contenido** con `width` (ancho) y `height` (alto). * Las unidades pueden ser fijas (`px`) o relativas (`%`, `rem`). * **Restricción**: `width` y `height` no funcionan correctamente en elementos de línea (`inline`) a menos que cambies su display. * **Nota**: No existen dimensiones negativas.

Controlando el Overflow
La propiedad `overflow` nos permite decidir cómo manejar el exceso de contenido. Tiene 4 valores clave: 1. **`visible`**: (Default) El contenido se sale. 2. **`hidden`**: (Recomendado para UI estricta) Corta y oculta el excedente. 3. **`scroll`**: Muestra barras de desplazamiento siempre. 4. **`auto`**: Muestra barras de desplazamiento solo si son necesarias.
Padding: El Espacio Interno
El `padding` es el 'aire' entre el contenido y el borde. Es fundamental para la legibilidad. **Características clave:** * Es parte de la caja. * Si la caja tiene color de fondo, el padding se pinta de ese color. * Aumenta el tamaño total visible del elemento (más sobre esto adelante).

Sintaxis de Padding
Puedes definir el relleno lado por lado o usar la forma abreviada (**Shorthand**). La regla del Shorthand sigue las agujas del reloj: **TOP ➔ RIGHT ➔ BOTTOM ➔ LEFT**.
Bordes: El Límite Visible
El borde se sitúa entre el padding y el margen. Para que un borde exista, necesita obligatoriamente 3 valores: 1. **Width**: El grosor (ej: `2px`). 2. **Style**: El tipo de línea (`solid`, `dashed`, `dotted`, `double`). 3. **Color**: El color del trazo.

Sintaxis de Border
Al igual que con padding, podemos ser específicos o generales. La propiedad `border` es un shorthand que aplica los 3 valores a los 4 lados a la vez.
Margin: El Espacio Externo
El `margin` crea distancia entre la caja actual y los elementos vecinos. **Diferencias con Padding:** * Es externo al borde. * Siempre es transparente (no tiene background-color). * Puede tener valores negativos (para superponer elementos).

Matemáticas del Box Model (El Problema)
Aquí es donde muchos principiantes fallan. En el modelo estándar (`content-box`), el `width` que defines SOLO aplica al contenido. **Ancho Total Visible = Width + Padding + Border**. Si defines `width: 300px` y `padding: 20px`, tu caja medirá realmente **340px**. Esto complica los cálculos y rompe grillas.


El Colapso de Márgenes
Un fenómeno extraño pero normal: Cuando dos elementos de bloque se tocan verticalmente, sus márgenes no se suman, se **colapsan** (se fusionan). Si el Elemento A tiene `margin-bottom: 20px` y el Elemento B tiene `margin-top: 30px`, la distancia total NO será 50px. Será **30px** (el mayor de los dos).

Display: Inline-Block
A veces necesitamos un híbrido. `display: inline-block` permite que los elementos se sitúen uno al lado del otro (como texto), pero respetando sus dimensiones de ancho y alto (como bloques). Es ideal para botones, tarjetas en grilla simple o elementos de navegación.
Herramientas de Desarrollador (DevTools)
No intentes adivinar el Box Model a ojo. Usa el inspector de tu navegador. Al hacer clic derecho > Inspeccionar, verás un gráfico de colores en la pestaña 'Computed' o 'Estilos'. Te muestra exactamente cuántos píxeles tiene cada capa (margen, borde, relleno) y es la herramienta definitiva para depurar problemas de espacio.

Resumen: Valores por Defecto
Recuerda que los navegadores aplican estilos por defecto (User Agent Styles). Por ejemplo, el `<body>` suele tener un margen de 8px y los `<h1>` tienen márgenes verticales grandes. Es común usar un 'Reset CSS' o normalizador al inicio del proyecto para poner todos estos valores a cero y tener control total.