La tira con coverflow
Los mandos van arriba, junto al titular, y no flotando sobre las tarjetas: encima de una captura tapan justo lo que se quiere ver, y ahí no se sabe si el clic abre el proyecto o mueve el carrusel. Arrástrala con el trackpad y mira cómo giran las celdas de los bordes: eso es view-timeline, no un guion.
Proyectos
Plataforma
Uno
La celda fija el ancho; la tarjeta de dentro es la que gira.
Infraestructura
Dos
El giro es hacia dentro, como se apila una baraja. Al revés parece que se caen.
Producto
Tres
Solo la celda que pasa por el centro está de frente: la meseta es un punto, no un tramo.
Datos
Cuatro
Sin JavaScript la tira se arrastra igual. Lo que faltan son los dos botones.
Interno
Cinco
Al llegar al final el botón no desaparece: se apaga.
Los botones necesitan guion —encender, apagar y desplazar—; el resto es CSS. El de la vitrina está debajo.
El marcado
<div class="mb-4 flex items-end justify-between gap-4">
<h3 class="text-xl font-semibold tracking-[-0.012em]">Proyectos</h3>
<div class="car-mandos" data-car-mandos="tira-demo">
<button type="button" class="car-boton" data-car-prev aria-label="Anterior" disabled>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M15 5l-7 7 7 7"/></svg>
</button>
<button type="button" class="car-boton" data-car-next aria-label="Siguiente">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><path d="M9 5l7 7-7 7"/></svg>
</button>
</div>
</div>
<div class="car" id="tira-demo" role="region" aria-label="Proyectos" tabindex="0">
<div class="car-celda">
<article class="rounded-xl border border-border bg-bg-surface-1 p-5">
<p class="font-mono text-xs uppercase tracking-[0.16em] text-text-muted">Plataforma</p>
<h4 class="mt-2 text-base font-semibold">Uno</h4>
<p class="mt-2 text-sm text-text-secondary">La celda fija el ancho; la tarjeta de dentro es la que gira.</p>
</article>
</div>
<div class="car-celda">
<article class="rounded-xl border border-border bg-bg-surface-1 p-5">
<p class="font-mono text-xs uppercase tracking-[0.16em] text-text-muted">Infraestructura</p>
<h4 class="mt-2 text-base font-semibold">Dos</h4>
<p class="mt-2 text-sm text-text-secondary">El giro es hacia dentro, como se apila una baraja. Al revés parece que se caen.</p>
</article>
</div>
<div class="car-celda">
<article class="rounded-xl border border-border bg-bg-surface-1 p-5">
<p class="font-mono text-xs uppercase tracking-[0.16em] text-text-muted">Producto</p>
<h4 class="mt-2 text-base font-semibold">Tres</h4>
<p class="mt-2 text-sm text-text-secondary">Solo la celda que pasa por el centro está de frente: la meseta es un punto, no un tramo.</p>
</article>
</div>
<div class="car-celda">
<article class="rounded-xl border border-border bg-bg-surface-1 p-5">
<p class="font-mono text-xs uppercase tracking-[0.16em] text-text-muted">Datos</p>
<h4 class="mt-2 text-base font-semibold">Cuatro</h4>
<p class="mt-2 text-sm text-text-secondary">Sin JavaScript la tira se arrastra igual. Lo que faltan son los dos botones.</p>
</article>
</div>
<div class="car-celda">
<article class="rounded-xl border border-border bg-bg-surface-1 p-5">
<p class="font-mono text-xs uppercase tracking-[0.16em] text-text-muted">Interno</p>
<h4 class="mt-2 text-base font-semibold">Cinco</h4>
<p class="mt-2 text-sm text-text-secondary">Al llegar al final el botón no desaparece: se apaga.</p>
</article>
</div>
</div>