29 / 30
All 30 in 30 Tailwind CSS Grid Layouts
- 01Tailwind Full-Bleed Article Layout for Long-Form Editorial
- 02Tailwind Docs Layout with Sticky Table of Contents
- 03Tailwind Photo Gallery Grid with auto-fill and Real Images
- 04Tailwind Holy Grail Page Layout for a News Site
- 05Tailwind Data Table with Subgrid Rows and Status Pills
- 06Tailwind Overlapping Card Hero for a Case Study
- 07Tailwind Help Center Layout with Fixed Sidebars
- 08Tailwind 12 Column Grid System for Marketing Pages
- 09Tailwind Bento Grid for a Product Feature Section
- 10Tailwind Magazine Spread Layout with Overlapping Headline
- 11Tailwind Responsive Card Grid for an Integrations Directory
- 12Tailwind CMS Category Grid that Compacts Itself with has()
- 13Tailwind Masonry Layout for a Saved Ideas Board
- 14Tailwind Hexagon Team Grid with clip-path Avatars
- 15Tailwind Subgrid Cards with Perfectly Aligned Buttons
- 16Tailwind Analytics Dashboard Layout with Grid App Shell
- 17Tailwind Pricing Table with Subgrid and a Featured Plan
- 18Tailwind Kanban Board with Scroll Snap Columns
- 19Tailwind Video Thumbnail Grid with Zero Layout Shift
- 20Tailwind Container Query Card for Reusable Article Teasers
- 21Tailwind Diagonal Section Band with skewY Counter-Skew
- 22Tailwind Asymmetric Poster Hero with Layered Grid Regions
- 23Tailwind Mosaic Photo Wall with a Designed Span Sequence
- 24Tailwind Dense Grid Packing for a Mixed-Size Asset Library
- 25Tailwind Onboarding Stepper with CSS Counters
- 26Tailwind macOS Window Layout with Vibrancy Sidebar
- 27Tailwind Scroll Snap Carousel with Peeking Slides
- 28Tailwind Status Map UI with Grid Coordinate Pins
- 29Tailwind Logo Wall with 1px Gap Hairline Dividers
- 30Tailwind Periodic Table Layout with Grid Coordinates
Tailwind Logo Wall with 1px Gap Hairline Dividers
The 'trusted by' band done properly: hairline dividers that come from a 1px gap over a coloured background, so they never double up and keep working at every column count auto-fit produces.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tgx-29 w-full min-h-svh bg-tgx29-paper font-tgx29-sans px-6 py-10 grid content-center gap-6">
<header class="flex flex-col items-center gap-2 text-center">
<h2 class="text-[0.72rem] tracking-[0.2em] uppercase text-tgx29-mut">Powering front-ends at</h2>
<p class="text-[1.15rem] font-semibold text-tgx29-ink tracking-[-0.01em] max-w-[34ch]">1,400 teams ship on Relay every week</p>
</header>
<ul class="list-none grid grid-cols-[repeat(auto-fit,minmax(min(150px,100%),1fr))] gap-px bg-tgx29-hairline border border-tgx29-hairline rounded-xl overflow-hidden w-[min(820px,100%)] mx-auto">
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] tracking-[0.02em] text-tgx29-ink">Meridian</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">hexlab_</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold tracking-[0.08em] text-tgx29-ink">NORTHBEAM</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif italic text-[1.05rem] text-tgx29-ink">Foundry & Co.</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-medium lowercase tracking-[0.04em] text-tgx29-ink">plexus</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">[cadence]</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold text-tgx29-ink">Waypoint</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] text-tgx29-ink">Aurelia</b></a></li>
</ul>
<p class="text-center text-[0.76rem] text-tgx29-mut">Every divider above is a 1px gap over a coloured wall — no borders, no <code class="font-tgx29-mono">:nth-child</code> arithmetic.</p>
</section><section class="tgx-29 w-full min-h-svh bg-tgx29-paper font-tgx29-sans px-6 py-10 grid content-center gap-6">
<header class="flex flex-col items-center gap-2 text-center">
<h2 class="text-[0.72rem] tracking-[0.2em] uppercase text-tgx29-mut">Powering front-ends at</h2>
<p class="text-[1.15rem] font-semibold text-tgx29-ink tracking-[-0.01em] max-w-[34ch]">1,400 teams ship on Relay every week</p>
</header>
<ul class="list-none grid grid-cols-[repeat(auto-fit,minmax(min(150px,100%),1fr))] gap-px bg-tgx29-hairline border border-tgx29-hairline rounded-xl overflow-hidden w-[min(820px,100%)] mx-auto">
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] tracking-[0.02em] text-tgx29-ink">Meridian</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">hexlab_</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold tracking-[0.08em] text-tgx29-ink">NORTHBEAM</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif italic text-[1.05rem] text-tgx29-ink">Foundry & Co.</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-medium lowercase tracking-[0.04em] text-tgx29-ink">plexus</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">[cadence]</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold text-tgx29-ink">Waypoint</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] text-tgx29-ink">Aurelia</b></a></li>
</ul>
<p class="text-center text-[0.76rem] text-tgx29-mut">Every divider above is a 1px gap over a coloured wall — no borders, no <code class="font-tgx29-mono">:nth-child</code> arithmetic.</p>
</section>@import "tailwindcss";
@theme {
--color-tgx29-paper: #faf9f6;
--color-tgx29-paper: oklch(0.975 0.006 90);
--color-tgx29-hairline: #d8d4cb;
--color-tgx29-hairline: oklch(0.86 0.012 90);
--color-tgx29-hover: #f1efe8;
--color-tgx29-hover: oklch(0.94 0.01 90);
--color-tgx29-ink: #40382f;
--color-tgx29-ink: oklch(0.34 0.02 60);
--color-tgx29-mut: #6f6558;
--color-tgx29-mut: oklch(0.5 0.02 60);
--font-tgx29-sans: 'Inter Tight', system-ui, sans-serif;
--font-tgx29-serif: 'Fraunces', Georgia, serif;
--font-tgx29-mono: 'JetBrains Mono', ui-monospace, monospace;
}
.tgx-29 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tgx29-paper: #faf9f6;
--color-tgx29-paper: oklch(0.975 0.006 90);
--color-tgx29-hairline: #d8d4cb;
--color-tgx29-hairline: oklch(0.86 0.012 90);
--color-tgx29-hover: #f1efe8;
--color-tgx29-hover: oklch(0.94 0.01 90);
--color-tgx29-ink: #40382f;
--color-tgx29-ink: oklch(0.34 0.02 60);
--color-tgx29-mut: #6f6558;
--color-tgx29-mut: oklch(0.5 0.02 60);
--font-tgx29-sans: 'Inter Tight', system-ui, sans-serif;
--font-tgx29-serif: 'Fraunces', Georgia, serif;
--font-tgx29-mono: 'JetBrains Mono', ui-monospace, monospace;
}
.tgx-29 {
width: 100%;
min-height: 100svh;
}Setup — do this once per project
Skip this if your project already runs Tailwind v4.
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>Compiles in the browser — perfect for a CodePen or a quick test, not for production.
npm install tailwindcss @tailwindcss/vite
npm install tailwindcss @tailwindcss/vite// vite.config.js ("type": "module" in package.json)
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})// vite.config.js ("type": "module" in package.json)
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})Any v4 setup works — Vite, PostCSS or the CLI. Nothing in this demo is bundler-specific.
@import "tailwindcss";
@theme {
--color-tgx29-paper: #faf9f6;
--color-tgx29-paper: oklch(0.975 0.006 90);
--color-tgx29-hairline: #d8d4cb;
--color-tgx29-hairline: oklch(0.86 0.012 90);
--color-tgx29-hover: #f1efe8;
--color-tgx29-hover: oklch(0.94 0.01 90);
--color-tgx29-ink: #40382f;
--color-tgx29-ink: oklch(0.34 0.02 60);
--color-tgx29-mut: #6f6558;
--color-tgx29-mut: oklch(0.5 0.02 60);
--font-tgx29-sans: 'Inter Tight', system-ui, sans-serif;
--font-tgx29-serif: 'Fraunces', Georgia, serif;
--font-tgx29-mono: 'JetBrains Mono', ui-monospace, monospace;
}
.tgx-29 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tgx29-paper: #faf9f6;
--color-tgx29-paper: oklch(0.975 0.006 90);
--color-tgx29-hairline: #d8d4cb;
--color-tgx29-hairline: oklch(0.86 0.012 90);
--color-tgx29-hover: #f1efe8;
--color-tgx29-hover: oklch(0.94 0.01 90);
--color-tgx29-ink: #40382f;
--color-tgx29-ink: oklch(0.34 0.02 60);
--color-tgx29-mut: #6f6558;
--color-tgx29-mut: oklch(0.5 0.02 60);
--font-tgx29-sans: 'Inter Tight', system-ui, sans-serif;
--font-tgx29-serif: 'Fraunces', Georgia, serif;
--font-tgx29-mono: 'JetBrains Mono', ui-monospace, monospace;
}
.tgx-29 {
width: 100%;
min-height: 100svh;
}<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600&family=Fraunces:opsz,wght@9..144,600&family=JetBrains+Mono:wght@500&display=swap">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600&family=Fraunces:opsz,wght@9..144,600&family=JetBrains+Mono:wght@500&display=swap">What changed in the port
Which parts became utilities, which stayed CSS, and why.
- A headline number above the wall gives the band a reason to exist; a logo wall with no claim attached is decoration.
gap-pxplus a coloured wall reads more obviously as utilities than as CSS: the gap and the background sit side by side, which is exactly the relationship that makes the trick work.- Product upgrade: the focus state now shows a visible ring (the original removed the outline and relied on colour returning, invisible to anyone who cannot perceive the grayscale change), and the section gained a claim line and a caption.
Here's a working CSS demo from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Tailwind Logo Wall with 1px Gap Hairline Dividers
Source: https://codefronts.com/layouts/tailwind-css-grid-layouts/tailwind-logo-wall-1px-gap-hairline-dividers/
The 'trusted by' band done properly: hairline dividers that come from a 1px gap over a coloured background, so they never double up and keep working at every column count auto-fit produces.
## HTML
```html
<section class="tgx-29 w-full min-h-svh bg-tgx29-paper font-tgx29-sans px-6 py-10 grid content-center gap-6">
<header class="flex flex-col items-center gap-2 text-center">
<h2 class="text-[0.72rem] tracking-[0.2em] uppercase text-tgx29-mut">Powering front-ends at</h2>
<p class="text-[1.15rem] font-semibold text-tgx29-ink tracking-[-0.01em] max-w-[34ch]">1,400 teams ship on Relay every week</p>
</header>
<ul class="list-none grid grid-cols-[repeat(auto-fit,minmax(min(150px,100%),1fr))] gap-px bg-tgx29-hairline border border-tgx29-hairline rounded-xl overflow-hidden w-[min(820px,100%)] mx-auto">
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] tracking-[0.02em] text-tgx29-ink">Meridian</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">hexlab_</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold tracking-[0.08em] text-tgx29-ink">NORTHBEAM</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif italic text-[1.05rem] text-tgx29-ink">Foundry & Co.</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-medium lowercase tracking-[0.04em] text-tgx29-ink">plexus</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">[cadence]</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold text-tgx29-ink">Waypoint</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] text-tgx29-ink">Aurelia</b></a></li>
</ul>
<p class="text-center text-[0.76rem] text-tgx29-mut">Every divider above is a 1px gap over a coloured wall — no borders, no <code class="font-tgx29-mono">:nth-child</code> arithmetic.</p>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tgx29-paper: #faf9f6;
--color-tgx29-paper: oklch(0.975 0.006 90);
--color-tgx29-hairline: #d8d4cb;
--color-tgx29-hairline: oklch(0.86 0.012 90);
--color-tgx29-hover: #f1efe8;
--color-tgx29-hover: oklch(0.94 0.01 90);
--color-tgx29-ink: #40382f;
--color-tgx29-ink: oklch(0.34 0.02 60);
--color-tgx29-mut: #6f6558;
--color-tgx29-mut: oklch(0.5 0.02 60);
--font-tgx29-sans: 'Inter Tight', system-ui, sans-serif;
--font-tgx29-serif: 'Fraunces', Georgia, serif;
--font-tgx29-mono: 'JetBrains Mono', ui-monospace, monospace;
}
.tgx-29 {
width: 100%;
min-height: 100svh;
}
```Here's a working CSS demo from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Tailwind Logo Wall with 1px Gap Hairline Dividers
Source: https://codefronts.com/layouts/tailwind-css-grid-layouts/tailwind-logo-wall-1px-gap-hairline-dividers/
The 'trusted by' band done properly: hairline dividers that come from a 1px gap over a coloured background, so they never double up and keep working at every column count auto-fit produces.
## HTML
```html
<section class="tgx-29 w-full min-h-svh bg-tgx29-paper font-tgx29-sans px-6 py-10 grid content-center gap-6">
<header class="flex flex-col items-center gap-2 text-center">
<h2 class="text-[0.72rem] tracking-[0.2em] uppercase text-tgx29-mut">Powering front-ends at</h2>
<p class="text-[1.15rem] font-semibold text-tgx29-ink tracking-[-0.01em] max-w-[34ch]">1,400 teams ship on Relay every week</p>
</header>
<ul class="list-none grid grid-cols-[repeat(auto-fit,minmax(min(150px,100%),1fr))] gap-px bg-tgx29-hairline border border-tgx29-hairline rounded-xl overflow-hidden w-[min(820px,100%)] mx-auto">
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] tracking-[0.02em] text-tgx29-ink">Meridian</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">hexlab_</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold tracking-[0.08em] text-tgx29-ink">NORTHBEAM</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif italic text-[1.05rem] text-tgx29-ink">Foundry & Co.</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-medium lowercase tracking-[0.04em] text-tgx29-ink">plexus</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-mono text-[1.05rem] text-tgx29-ink">[cadence]</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="text-[1.05rem] font-semibold text-tgx29-ink">Waypoint</b></a></li>
<li class="bg-tgx29-paper"><a href="#0" class="grid place-items-center min-h-[86px] p-4 no-underline grayscale opacity-60 transition duration-300 hover:grayscale-0 hover:opacity-100 hover:bg-tgx29-hover focus-visible:grayscale-0 focus-visible:opacity-100 focus-visible:bg-tgx29-hover focus-visible:outline-2 focus-visible:outline-tgx29-ink focus-visible:-outline-offset-2 motion-reduce:transition-none"><b class="font-tgx29-serif text-[1.05rem] text-tgx29-ink">Aurelia</b></a></li>
</ul>
<p class="text-center text-[0.76rem] text-tgx29-mut">Every divider above is a 1px gap over a coloured wall — no borders, no <code class="font-tgx29-mono">:nth-child</code> arithmetic.</p>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tgx29-paper: #faf9f6;
--color-tgx29-paper: oklch(0.975 0.006 90);
--color-tgx29-hairline: #d8d4cb;
--color-tgx29-hairline: oklch(0.86 0.012 90);
--color-tgx29-hover: #f1efe8;
--color-tgx29-hover: oklch(0.94 0.01 90);
--color-tgx29-ink: #40382f;
--color-tgx29-ink: oklch(0.34 0.02 60);
--color-tgx29-mut: #6f6558;
--color-tgx29-mut: oklch(0.5 0.02 60);
--font-tgx29-sans: 'Inter Tight', system-ui, sans-serif;
--font-tgx29-serif: 'Fraunces', Georgia, serif;
--font-tgx29-mono: 'JetBrains Mono', ui-monospace, monospace;
}
.tgx-29 {
width: 100%;
min-height: 100svh;
}
```How this works
The dividers are absences. The wall paints hairline colour, the cells paint paper, and the 1px gaps let the wall show through as perfect rules between every pair — no :nth-child(4n) border surgery.
Monochrome by default keeps two dozen competing brand colours from shouting over the page; colour returns on hover or keyboard focus.
Make it yours
- The divider colour is the wall's background — one token.
- Keep the outer hairlines by padding the wall 1px instead of clipping them.
- Swap wordmarks for
<img>/<svg>capped atmax-w-[60%] max-h-7.
Gotchas — read before shipping
- Cells MUST be opaque; a transparent cell reveals the hairline colour as a full block.
grayscale(1)on low-contrast marks can fall below visible contrast — check each at 60% opacity.- Do not animate
filteracross hundreds of cells; it repaints.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 16.4+ | 128+ | 111+ |
Original grid plus filters — universally deployable.