Layouts

FDS resuelve el layout en tres niveles: el <section> como contenedor inteligente, .content-flex para posicionar contenido en una rejilla de nueve puntos y un set de grids proporcionales con auto-fill. Sin media queries en la mayoría de casos.


Secciones

Cada <section> es automáticamente un contenedor con padding fluido y max-width. El primer hijo directo recibe mx-auto, max-w-container y flex-col, así no hay que pensar en wrappers.

Estructura base

El patrón fundamental es section > div > div. La sección establece padding horizontal y vertical, el primer div centra el contenido y los hijos ocupan el ancho disponible.

<main>
  <section>
    <div>
      <h1 class="heading">Título</h1>
      <p class="text-large">Intro...</p>
    </div>
  </section>

  <section class="has-background bg-primary-50">
    <div>
      <h2 class="subheading">Sección con fondo</h2>
    </div>
  </section>
</main>

Modificadores de spacing

Las secciones detectan si son la primera o última, si tienen fondo o si están adyacentes a otra sección con fondo, y ajustan el padding solas. Los modificadores fuerzan comportamientos puntuales.

ClaseEfecto
.has-backgroundPadding vertical completo (--ft-padding-content-y) arriba y abajo. Para secciones con color o imagen de fondo.
.half-topReduce el padding superior al 50 %. Acerca al contenido anterior.
.half-bottomReduce el padding inferior al 50 %. Acerca al siguiente.

Block Bleed

.block-bleed rompe el contenedor y se extiende al ancho completo del viewport. Útil para imágenes o fondos full-width dentro de una sección contenida.

<section>
  <div>
    <p>Contenido normal limitado por max-w-container.</p>
    <img class="block-bleed" src="hero.jpg" alt="">
    <p>Vuelve al ancho contenido.</p>
  </div>
</section>

Internamente usa width: 100vw con left: 50%; transform: translateX(-50%). Funciona dentro de la estructura section > div.


Content Flex — 9 puntos

.content-flex posiciona contenido en una de nueve casillas dentro de su contenedor. Útil para heroes con overlay de texto.

<div class="content-flex bottom-left">
  <h2 class="display-sm">Abajo a la izquierda</h2>
  <p>Subtítulo alineado coherentemente.</p>
</div>

Posiciones: top-left, top, top-right, left, center, right, bottom-left, bottom, bottom-right.

Ver Content-flex para la referencia completa, ejemplos y variables relacionadas.


Grids proporcionales

Utilities @utility para grids con proporciones predefinidas. Usan spacing semántico vía gap-columns y cada celda emplea minmax(0, Xfr) para evitar overflow.

2 columnas

<div class="grid grid-cols-1-2"> <!-- 1fr 2fr -->
<div class="grid grid-cols-2-1"> <!-- 2fr 1fr -->

3 columnas

<div class="grid grid-cols-1-2-1"> <!-- centro pesado -->
<div class="grid grid-cols-2-1-1"> <!-- peso a la izquierda -->
<div class="grid grid-cols-1-1-2"> <!-- peso a la derecha -->
<div class="grid grid-cols-1-3">   <!-- sidebar + main -->
<div class="grid grid-cols-3-1">   <!-- main + sidebar -->

Referencia

ClaseProporción
.grid-cols-1-2 / .grid-cols-2-11fr + 2fr (y viceversa)
.grid-cols-1-3 / .grid-cols-3-11fr + 3fr (y viceversa)
.grid-cols-1-2-11fr + 2fr + 1fr
.grid-cols-2-1-1 / .grid-cols-1-1-2Tres columnas con un lado pesado

Auto-fill / Auto-fit

Grids que se adaptan al ancho disponible. Defines un mínimo por celda y CSS Grid calcula cuántas columnas caben. Sin breakpoints.

<div class="grid grid-auto-fit-md">  <!-- min: token card-md -->
<div class="grid grid-auto-fill-sm">
VarianteComportamiento
auto-fillMantiene columnas vacías invisibles. Las celdas no se estiran más allá del máximo. Ideal para grids de cards con anchos consistentes.
auto-fitColapsa columnas vacías y expande las celdas existentes para llenar todo el ancho. Ideal cuando hay pocas celdas.

Tamaños: xs, sm, md, lg, xl — alineados con los anchos de card-*.