20 / 20
All 20 in 20 Tailwind CSS Minimalist UI
- 01Tailwind Modular Type Scale with a Ratio Variable
- 02Tailwind Type Hierarchy Without Any Color Change
- 03Tailwind System Font Stack That Needs No Webfont
- 04Tailwind Optical Alignment vs Mathematical Centering
- 05Tailwind Spacing Scale from a Single Base Unit
- 06Tailwind Whitespace That Groups Instead of Separates
- 07Tailwind Vertical Rhythm with a Consistent Baseline
- 08Tailwind Minimal Layout with CSS Grid and No Divs
- 09Tailwind One Accent Color Restraint Budget
- 10Tailwind Grayscale Palette with Enough Contrast
- 11Tailwind Borders and Dividers You Can Actually Remove
- 12Tailwind Elevation Without Shadows or Gradients
- 13Tailwind Why Minimal Interfaces Fail Accessibility
- 14Tailwind Minimalist and Brutalist Side by Side
- 15Tailwind Minimalist Dashboard Card and Metric
- 16Tailwind Minimalist Product Card for Ecommerce
- 17Tailwind Minimalist Portfolio Project Listing
- 18Tailwind Minimalist Article Layout and Typography
- 19Tailwind Minimalist Mobile App Screen in a Frame
- 20Tailwind Minimalist Landing Page Section
Tailwind Minimalist Landing Page Section
A landing section that sells with a sentence, not a scene: kicker, a balanced headline at a fluid clamp() size, one paragraph, one filled call to action and one underlined secondary link, then three proof points. A 3px accent bar is the only decoration — everything else is type, space and the restraint of a single colour.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tmu-20 relative w-full min-h-svh bg-tmu20-bg font-tmu20-ui text-tmu20-ink antialiased" aria-labelledby="tmu20-title">
<div class="absolute top-4 right-4 z-10">
<input id="tmu20-theme" type="checkbox" class="peer sr-only">
<label for="tmu20-theme" class="grid size-11 cursor-pointer place-items-center rounded-full border border-tmu20-line bg-tmu20-surface text-tmu20-ink-2 shadow-[0_1px_2px_rgb(0_0_0/0.06)] transition-[color,rotate] duration-300 hover:text-tmu20-ink peer-checked:rotate-180 peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-tmu20-acc motion-reduce:transition-none">
<svg class="size-5" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M12 4a8 8 0 0 0 0 16Z" fill="currentColor"/></svg>
<span class="sr-only">Switch colour theme</span>
</label>
</div>
<div class="mx-auto grid min-h-svh max-w-[76rem] content-start gap-12 px-5 py-20 lg:place-content-center lg:px-12 lg:py-28">
<div class="grid min-w-0 max-w-[44rem] content-start gap-5 border-l-[3px] border-tmu20-acc pl-5 lg:pl-7">
<p class="font-tmu20-mono text-xs uppercase tracking-[0.12em] text-tmu20-ink-2">Meridian</p>
<h2 id="tmu20-title" class="text-[clamp(2.25rem,1.6rem+3.4vw,4rem)] font-semibold leading-[1.02] tracking-[-0.036em] text-balance">Ship the release, not the release notes</h2>
<p class="max-w-[52ch] text-[clamp(1.0625rem,1rem+0.5vw,1.25rem)] leading-[1.45] text-tmu20-ink-2 text-pretty">Meridian turns your deploy pipeline into one reviewable timeline, so the person on call can see what changed without reading nine dashboards.</p>
<div class="flex flex-wrap items-center gap-x-6 gap-y-3 pt-2">
<button type="button" class="group inline-flex min-h-12 min-w-11 items-center justify-center gap-2 rounded-md bg-tmu20-acc px-6 text-[0.9375rem] font-semibold text-tmu20-acc-ink cursor-pointer shadow-[0_1px_2px_rgb(0_0_0/0.1)] transition-[translate,box-shadow] duration-150 hover:-translate-y-px hover:shadow-[0_8px_20px_-10px_var(--color-tmu20-acc)] active:translate-y-0 focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-ink motion-reduce:transition-none motion-reduce:hover:translate-y-0">Start a 14-day trial<svg class="size-[18px] transition-transform duration-150 group-hover:translate-x-0.5 motion-reduce:transition-none" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 12h13m0 0-5-5m5 5-5 5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></button>
<a href="#tmu20-title" class="inline-flex min-h-11 items-center text-[0.9375rem] font-medium text-tmu20-ink underline decoration-1 underline-offset-[3px] hover:decoration-2 focus-visible:rounded-sm focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-acc">Read the documentation</a>
<p class="basis-full text-xs text-tmu20-ink-2">No card required · cancel in one click</p>
</div>
<dl class="grid gap-4 border-t border-tmu20-line pt-6 grid-cols-[repeat(auto-fit,minmax(min(100%,11rem),1fr))]">
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Median time to first deploy</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">11 minutes</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Teams running Meridian</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">Basalt, Fern, Orbit, Prism</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Compliance</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">SOC 2 Type II, ISO 27001</dd></div>
</dl>
</div>
</div>
</section><section class="tmu-20 relative w-full min-h-svh bg-tmu20-bg font-tmu20-ui text-tmu20-ink antialiased" aria-labelledby="tmu20-title">
<div class="absolute top-4 right-4 z-10">
<input id="tmu20-theme" type="checkbox" class="peer sr-only">
<label for="tmu20-theme" class="grid size-11 cursor-pointer place-items-center rounded-full border border-tmu20-line bg-tmu20-surface text-tmu20-ink-2 shadow-[0_1px_2px_rgb(0_0_0/0.06)] transition-[color,rotate] duration-300 hover:text-tmu20-ink peer-checked:rotate-180 peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-tmu20-acc motion-reduce:transition-none">
<svg class="size-5" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M12 4a8 8 0 0 0 0 16Z" fill="currentColor"/></svg>
<span class="sr-only">Switch colour theme</span>
</label>
</div>
<div class="mx-auto grid min-h-svh max-w-[76rem] content-start gap-12 px-5 py-20 lg:place-content-center lg:px-12 lg:py-28">
<div class="grid min-w-0 max-w-[44rem] content-start gap-5 border-l-[3px] border-tmu20-acc pl-5 lg:pl-7">
<p class="font-tmu20-mono text-xs uppercase tracking-[0.12em] text-tmu20-ink-2">Meridian</p>
<h2 id="tmu20-title" class="text-[clamp(2.25rem,1.6rem+3.4vw,4rem)] font-semibold leading-[1.02] tracking-[-0.036em] text-balance">Ship the release, not the release notes</h2>
<p class="max-w-[52ch] text-[clamp(1.0625rem,1rem+0.5vw,1.25rem)] leading-[1.45] text-tmu20-ink-2 text-pretty">Meridian turns your deploy pipeline into one reviewable timeline, so the person on call can see what changed without reading nine dashboards.</p>
<div class="flex flex-wrap items-center gap-x-6 gap-y-3 pt-2">
<button type="button" class="group inline-flex min-h-12 min-w-11 items-center justify-center gap-2 rounded-md bg-tmu20-acc px-6 text-[0.9375rem] font-semibold text-tmu20-acc-ink cursor-pointer shadow-[0_1px_2px_rgb(0_0_0/0.1)] transition-[translate,box-shadow] duration-150 hover:-translate-y-px hover:shadow-[0_8px_20px_-10px_var(--color-tmu20-acc)] active:translate-y-0 focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-ink motion-reduce:transition-none motion-reduce:hover:translate-y-0">Start a 14-day trial<svg class="size-[18px] transition-transform duration-150 group-hover:translate-x-0.5 motion-reduce:transition-none" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 12h13m0 0-5-5m5 5-5 5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></button>
<a href="#tmu20-title" class="inline-flex min-h-11 items-center text-[0.9375rem] font-medium text-tmu20-ink underline decoration-1 underline-offset-[3px] hover:decoration-2 focus-visible:rounded-sm focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-acc">Read the documentation</a>
<p class="basis-full text-xs text-tmu20-ink-2">No card required · cancel in one click</p>
</div>
<dl class="grid gap-4 border-t border-tmu20-line pt-6 grid-cols-[repeat(auto-fit,minmax(min(100%,11rem),1fr))]">
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Median time to first deploy</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">11 minutes</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Teams running Meridian</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">Basalt, Fern, Orbit, Prism</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Compliance</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">SOC 2 Type II, ISO 27001</dd></div>
</dl>
</div>
</div>
</section>@import "tailwindcss";
@theme {
--color-tmu20-bg: light-dark(#f8f6f1, #131215);
--color-tmu20-bg: light-dark(oklch(97% 0.007 85), oklch(18% 0.006 285));
--color-tmu20-surface: light-dark(#ffffff, #1c1b20);
--color-tmu20-surface: light-dark(oklch(100% 0 0), oklch(23% 0.008 285));
--color-tmu20-ink: light-dark(#17161a, #f2f1f4);
--color-tmu20-ink: light-dark(oklch(19.5% 0.006 285), oklch(96% 0.004 285));
--color-tmu20-ink-2: light-dark(#55535c, #aaa7b3);
--color-tmu20-ink-2: light-dark(oklch(45% 0.012 285), oklch(74% 0.012 285));
--color-tmu20-line: light-dark(#d8d4ca, #363441);
--color-tmu20-line: light-dark(oklch(86% 0.011 85), oklch(33% 0.014 285));
--color-tmu20-acc: light-dark(#3a2ea8, #a99cff);
--color-tmu20-acc: light-dark(oklch(40% 0.19 285), oklch(76% 0.15 285));
--color-tmu20-acc-ink: light-dark(#ffffff, #14112b);
--color-tmu20-acc-ink: light-dark(oklch(100% 0 0), oklch(18% 0.04 285));
--font-tmu20-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-tmu20-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
/* Root rule: the full-bleed contract, restated so the stage is sized before the browser build
compiles. color-scheme drives every light-dark() token above. */
.tmu-20 {
width: 100%;
min-height: 100vh;
min-height: 100svh;
color-scheme: light dark;
}
/* Theme toggle: flip the scheme and every token follows. Mirrored for a dark OS. */
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: light;
}
}@import "tailwindcss";
@theme {
--color-tmu20-bg: light-dark(#f8f6f1, #131215);
--color-tmu20-bg: light-dark(oklch(97% 0.007 85), oklch(18% 0.006 285));
--color-tmu20-surface: light-dark(#ffffff, #1c1b20);
--color-tmu20-surface: light-dark(oklch(100% 0 0), oklch(23% 0.008 285));
--color-tmu20-ink: light-dark(#17161a, #f2f1f4);
--color-tmu20-ink: light-dark(oklch(19.5% 0.006 285), oklch(96% 0.004 285));
--color-tmu20-ink-2: light-dark(#55535c, #aaa7b3);
--color-tmu20-ink-2: light-dark(oklch(45% 0.012 285), oklch(74% 0.012 285));
--color-tmu20-line: light-dark(#d8d4ca, #363441);
--color-tmu20-line: light-dark(oklch(86% 0.011 85), oklch(33% 0.014 285));
--color-tmu20-acc: light-dark(#3a2ea8, #a99cff);
--color-tmu20-acc: light-dark(oklch(40% 0.19 285), oklch(76% 0.15 285));
--color-tmu20-acc-ink: light-dark(#ffffff, #14112b);
--color-tmu20-acc-ink: light-dark(oklch(100% 0 0), oklch(18% 0.04 285));
--font-tmu20-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-tmu20-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
/* Root rule: the full-bleed contract, restated so the stage is sized before the browser build
compiles. color-scheme drives every light-dark() token above. */
.tmu-20 {
width: 100%;
min-height: 100vh;
min-height: 100svh;
color-scheme: light dark;
}
/* Theme toggle: flip the scheme and every token follows. Mirrored for a dark OS. */
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: light;
}
}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-tmu20-bg: light-dark(#f8f6f1, #131215);
--color-tmu20-bg: light-dark(oklch(97% 0.007 85), oklch(18% 0.006 285));
--color-tmu20-surface: light-dark(#ffffff, #1c1b20);
--color-tmu20-surface: light-dark(oklch(100% 0 0), oklch(23% 0.008 285));
--color-tmu20-ink: light-dark(#17161a, #f2f1f4);
--color-tmu20-ink: light-dark(oklch(19.5% 0.006 285), oklch(96% 0.004 285));
--color-tmu20-ink-2: light-dark(#55535c, #aaa7b3);
--color-tmu20-ink-2: light-dark(oklch(45% 0.012 285), oklch(74% 0.012 285));
--color-tmu20-line: light-dark(#d8d4ca, #363441);
--color-tmu20-line: light-dark(oklch(86% 0.011 85), oklch(33% 0.014 285));
--color-tmu20-acc: light-dark(#3a2ea8, #a99cff);
--color-tmu20-acc: light-dark(oklch(40% 0.19 285), oklch(76% 0.15 285));
--color-tmu20-acc-ink: light-dark(#ffffff, #14112b);
--color-tmu20-acc-ink: light-dark(oklch(100% 0 0), oklch(18% 0.04 285));
--font-tmu20-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-tmu20-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
/* Root rule: the full-bleed contract, restated so the stage is sized before the browser build
compiles. color-scheme drives every light-dark() token above. */
.tmu-20 {
width: 100%;
min-height: 100vh;
min-height: 100svh;
color-scheme: light dark;
}
/* Theme toggle: flip the scheme and every token follows. Mirrored for a dark OS. */
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: light;
}
}@import "tailwindcss";
@theme {
--color-tmu20-bg: light-dark(#f8f6f1, #131215);
--color-tmu20-bg: light-dark(oklch(97% 0.007 85), oklch(18% 0.006 285));
--color-tmu20-surface: light-dark(#ffffff, #1c1b20);
--color-tmu20-surface: light-dark(oklch(100% 0 0), oklch(23% 0.008 285));
--color-tmu20-ink: light-dark(#17161a, #f2f1f4);
--color-tmu20-ink: light-dark(oklch(19.5% 0.006 285), oklch(96% 0.004 285));
--color-tmu20-ink-2: light-dark(#55535c, #aaa7b3);
--color-tmu20-ink-2: light-dark(oklch(45% 0.012 285), oklch(74% 0.012 285));
--color-tmu20-line: light-dark(#d8d4ca, #363441);
--color-tmu20-line: light-dark(oklch(86% 0.011 85), oklch(33% 0.014 285));
--color-tmu20-acc: light-dark(#3a2ea8, #a99cff);
--color-tmu20-acc: light-dark(oklch(40% 0.19 285), oklch(76% 0.15 285));
--color-tmu20-acc-ink: light-dark(#ffffff, #14112b);
--color-tmu20-acc-ink: light-dark(oklch(100% 0 0), oklch(18% 0.04 285));
--font-tmu20-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-tmu20-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
/* Root rule: the full-bleed contract, restated so the stage is sized before the browser build
compiles. color-scheme drives every light-dark() token above. */
.tmu-20 {
width: 100%;
min-height: 100vh;
min-height: 100svh;
color-scheme: light dark;
}
/* Theme toggle: flip the scheme and every token follows. Mirrored for a dark OS. */
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: light;
}
}What changed in the port
Which parts became utilities, which stayed CSS, and why.
--headline,--barand--maxhad one consumer each, so they became the bracket values directly:text-[clamp(…)],border-l-[3px],max-w-[44rem].- UI upgrade: the CTA gained an arrow that slides on hover and a
active:translate-y-0press, the proof values gained small icons-free separators, and a "No card required" note sits beside the actions so the trial terms are read at the moment of decision.
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 Minimalist Landing Page Section
Source: https://codefronts.com/design-styles/tailwind-css-minimalist-ui/tailwind-minimalist-landing-page-section/
A landing section that sells with a sentence, not a scene: kicker, a balanced headline at a fluid clamp() size, one paragraph, one filled call to action and one underlined secondary link, then three proof points. A 3px accent bar is the only decoration — everything else is type, space and the restraint of a single colour.
## HTML
```html
<section class="tmu-20 relative w-full min-h-svh bg-tmu20-bg font-tmu20-ui text-tmu20-ink antialiased" aria-labelledby="tmu20-title">
<div class="absolute top-4 right-4 z-10">
<input id="tmu20-theme" type="checkbox" class="peer sr-only">
<label for="tmu20-theme" class="grid size-11 cursor-pointer place-items-center rounded-full border border-tmu20-line bg-tmu20-surface text-tmu20-ink-2 shadow-[0_1px_2px_rgb(0_0_0/0.06)] transition-[color,rotate] duration-300 hover:text-tmu20-ink peer-checked:rotate-180 peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-tmu20-acc motion-reduce:transition-none">
<svg class="size-5" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M12 4a8 8 0 0 0 0 16Z" fill="currentColor"/></svg>
<span class="sr-only">Switch colour theme</span>
</label>
</div>
<div class="mx-auto grid min-h-svh max-w-[76rem] content-start gap-12 px-5 py-20 lg:place-content-center lg:px-12 lg:py-28">
<div class="grid min-w-0 max-w-[44rem] content-start gap-5 border-l-[3px] border-tmu20-acc pl-5 lg:pl-7">
<p class="font-tmu20-mono text-xs uppercase tracking-[0.12em] text-tmu20-ink-2">Meridian</p>
<h2 id="tmu20-title" class="text-[clamp(2.25rem,1.6rem+3.4vw,4rem)] font-semibold leading-[1.02] tracking-[-0.036em] text-balance">Ship the release, not the release notes</h2>
<p class="max-w-[52ch] text-[clamp(1.0625rem,1rem+0.5vw,1.25rem)] leading-[1.45] text-tmu20-ink-2 text-pretty">Meridian turns your deploy pipeline into one reviewable timeline, so the person on call can see what changed without reading nine dashboards.</p>
<div class="flex flex-wrap items-center gap-x-6 gap-y-3 pt-2">
<button type="button" class="group inline-flex min-h-12 min-w-11 items-center justify-center gap-2 rounded-md bg-tmu20-acc px-6 text-[0.9375rem] font-semibold text-tmu20-acc-ink cursor-pointer shadow-[0_1px_2px_rgb(0_0_0/0.1)] transition-[translate,box-shadow] duration-150 hover:-translate-y-px hover:shadow-[0_8px_20px_-10px_var(--color-tmu20-acc)] active:translate-y-0 focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-ink motion-reduce:transition-none motion-reduce:hover:translate-y-0">Start a 14-day trial<svg class="size-[18px] transition-transform duration-150 group-hover:translate-x-0.5 motion-reduce:transition-none" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 12h13m0 0-5-5m5 5-5 5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></button>
<a href="#tmu20-title" class="inline-flex min-h-11 items-center text-[0.9375rem] font-medium text-tmu20-ink underline decoration-1 underline-offset-[3px] hover:decoration-2 focus-visible:rounded-sm focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-acc">Read the documentation</a>
<p class="basis-full text-xs text-tmu20-ink-2">No card required · cancel in one click</p>
</div>
<dl class="grid gap-4 border-t border-tmu20-line pt-6 grid-cols-[repeat(auto-fit,minmax(min(100%,11rem),1fr))]">
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Median time to first deploy</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">11 minutes</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Teams running Meridian</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">Basalt, Fern, Orbit, Prism</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Compliance</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">SOC 2 Type II, ISO 27001</dd></div>
</dl>
</div>
</div>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tmu20-bg: light-dark(#f8f6f1, #131215);
--color-tmu20-bg: light-dark(oklch(97% 0.007 85), oklch(18% 0.006 285));
--color-tmu20-surface: light-dark(#ffffff, #1c1b20);
--color-tmu20-surface: light-dark(oklch(100% 0 0), oklch(23% 0.008 285));
--color-tmu20-ink: light-dark(#17161a, #f2f1f4);
--color-tmu20-ink: light-dark(oklch(19.5% 0.006 285), oklch(96% 0.004 285));
--color-tmu20-ink-2: light-dark(#55535c, #aaa7b3);
--color-tmu20-ink-2: light-dark(oklch(45% 0.012 285), oklch(74% 0.012 285));
--color-tmu20-line: light-dark(#d8d4ca, #363441);
--color-tmu20-line: light-dark(oklch(86% 0.011 85), oklch(33% 0.014 285));
--color-tmu20-acc: light-dark(#3a2ea8, #a99cff);
--color-tmu20-acc: light-dark(oklch(40% 0.19 285), oklch(76% 0.15 285));
--color-tmu20-acc-ink: light-dark(#ffffff, #14112b);
--color-tmu20-acc-ink: light-dark(oklch(100% 0 0), oklch(18% 0.04 285));
--font-tmu20-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-tmu20-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
/* Root rule: the full-bleed contract, restated so the stage is sized before the browser build
compiles. color-scheme drives every light-dark() token above. */
.tmu-20 {
width: 100%;
min-height: 100vh;
min-height: 100svh;
color-scheme: light dark;
}
/* Theme toggle: flip the scheme and every token follows. Mirrored for a dark OS. */
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: light;
}
}
```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 Minimalist Landing Page Section
Source: https://codefronts.com/design-styles/tailwind-css-minimalist-ui/tailwind-minimalist-landing-page-section/
A landing section that sells with a sentence, not a scene: kicker, a balanced headline at a fluid clamp() size, one paragraph, one filled call to action and one underlined secondary link, then three proof points. A 3px accent bar is the only decoration — everything else is type, space and the restraint of a single colour.
## HTML
```html
<section class="tmu-20 relative w-full min-h-svh bg-tmu20-bg font-tmu20-ui text-tmu20-ink antialiased" aria-labelledby="tmu20-title">
<div class="absolute top-4 right-4 z-10">
<input id="tmu20-theme" type="checkbox" class="peer sr-only">
<label for="tmu20-theme" class="grid size-11 cursor-pointer place-items-center rounded-full border border-tmu20-line bg-tmu20-surface text-tmu20-ink-2 shadow-[0_1px_2px_rgb(0_0_0/0.06)] transition-[color,rotate] duration-300 hover:text-tmu20-ink peer-checked:rotate-180 peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-tmu20-acc motion-reduce:transition-none">
<svg class="size-5" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M12 4a8 8 0 0 0 0 16Z" fill="currentColor"/></svg>
<span class="sr-only">Switch colour theme</span>
</label>
</div>
<div class="mx-auto grid min-h-svh max-w-[76rem] content-start gap-12 px-5 py-20 lg:place-content-center lg:px-12 lg:py-28">
<div class="grid min-w-0 max-w-[44rem] content-start gap-5 border-l-[3px] border-tmu20-acc pl-5 lg:pl-7">
<p class="font-tmu20-mono text-xs uppercase tracking-[0.12em] text-tmu20-ink-2">Meridian</p>
<h2 id="tmu20-title" class="text-[clamp(2.25rem,1.6rem+3.4vw,4rem)] font-semibold leading-[1.02] tracking-[-0.036em] text-balance">Ship the release, not the release notes</h2>
<p class="max-w-[52ch] text-[clamp(1.0625rem,1rem+0.5vw,1.25rem)] leading-[1.45] text-tmu20-ink-2 text-pretty">Meridian turns your deploy pipeline into one reviewable timeline, so the person on call can see what changed without reading nine dashboards.</p>
<div class="flex flex-wrap items-center gap-x-6 gap-y-3 pt-2">
<button type="button" class="group inline-flex min-h-12 min-w-11 items-center justify-center gap-2 rounded-md bg-tmu20-acc px-6 text-[0.9375rem] font-semibold text-tmu20-acc-ink cursor-pointer shadow-[0_1px_2px_rgb(0_0_0/0.1)] transition-[translate,box-shadow] duration-150 hover:-translate-y-px hover:shadow-[0_8px_20px_-10px_var(--color-tmu20-acc)] active:translate-y-0 focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-ink motion-reduce:transition-none motion-reduce:hover:translate-y-0">Start a 14-day trial<svg class="size-[18px] transition-transform duration-150 group-hover:translate-x-0.5 motion-reduce:transition-none" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 12h13m0 0-5-5m5 5-5 5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></button>
<a href="#tmu20-title" class="inline-flex min-h-11 items-center text-[0.9375rem] font-medium text-tmu20-ink underline decoration-1 underline-offset-[3px] hover:decoration-2 focus-visible:rounded-sm focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-tmu20-acc">Read the documentation</a>
<p class="basis-full text-xs text-tmu20-ink-2">No card required · cancel in one click</p>
</div>
<dl class="grid gap-4 border-t border-tmu20-line pt-6 grid-cols-[repeat(auto-fit,minmax(min(100%,11rem),1fr))]">
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Median time to first deploy</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">11 minutes</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Teams running Meridian</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">Basalt, Fern, Orbit, Prism</dd></div>
<div class="grid min-w-0 gap-0.5"><dt class="text-xs uppercase tracking-[0.06em] text-tmu20-ink-2">Compliance</dt><dd class="text-[0.9375rem] font-semibold tabular-nums text-pretty">SOC 2 Type II, ISO 27001</dd></div>
</dl>
</div>
</div>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tmu20-bg: light-dark(#f8f6f1, #131215);
--color-tmu20-bg: light-dark(oklch(97% 0.007 85), oklch(18% 0.006 285));
--color-tmu20-surface: light-dark(#ffffff, #1c1b20);
--color-tmu20-surface: light-dark(oklch(100% 0 0), oklch(23% 0.008 285));
--color-tmu20-ink: light-dark(#17161a, #f2f1f4);
--color-tmu20-ink: light-dark(oklch(19.5% 0.006 285), oklch(96% 0.004 285));
--color-tmu20-ink-2: light-dark(#55535c, #aaa7b3);
--color-tmu20-ink-2: light-dark(oklch(45% 0.012 285), oklch(74% 0.012 285));
--color-tmu20-line: light-dark(#d8d4ca, #363441);
--color-tmu20-line: light-dark(oklch(86% 0.011 85), oklch(33% 0.014 285));
--color-tmu20-acc: light-dark(#3a2ea8, #a99cff);
--color-tmu20-acc: light-dark(oklch(40% 0.19 285), oklch(76% 0.15 285));
--color-tmu20-acc-ink: light-dark(#ffffff, #14112b);
--color-tmu20-acc-ink: light-dark(oklch(100% 0 0), oklch(18% 0.04 285));
--font-tmu20-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--font-tmu20-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}
/* Root rule: the full-bleed contract, restated so the stage is sized before the browser build
compiles. color-scheme drives every light-dark() token above. */
.tmu-20 {
width: 100%;
min-height: 100vh;
min-height: 100svh;
color-scheme: light dark;
}
/* Theme toggle: flip the scheme and every token follows. Mirrored for a dark OS. */
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
.tmu-20:has(#tmu20-theme:checked) {
color-scheme: light;
}
}
```How this works
A landing section fails from addition, not from a lack of ideas. The pattern is familiar: sales wants a logo wall, product wants a feature list, growth wants a second CTA, legal wants the compliance line, and each request is individually reasonable. The result is a section with nine elements where none is primary, and a conversion rate that quietly falls. The budget is the defence: one headline, one sub, one action, one supporting element.
Rank the four before you style them. The headline carries the promise and takes the largest step on the scale. The sub qualifies it in one sentence and takes one step above body. The action gets the accent — the only accent in the section. The supporting element proves the claim and is deliberately quiet, because proof works by being checkable, not by being loud.
The second action is a link, not a button. Two buttons side by side is the most common way a section loses its primary. If a secondary path genuinely matters — docs, pricing, a demo — make it a text link with a visible underline, keep it at 44px tall, and let the visual weight difference do the ranking. A user who wants the secondary path will find it; a user who wants the primary one does not have to choose.
Where restraint is the wrong instinct. An unknown brand selling a considered purchase needs proof visible above the fold: named customers, real numbers, a security posture. Deleting all of it in the name of calm is not restraint, it is withholding the information the visitor came for. The rule is to remove elements that compete, not elements that inform — and to be honest about which is which.
Make it yours
- Centre the section with
mx-auto text-centerand move the bar to the top withborder-l-0 border-t-[3px] pt-6. - Replace the proof list with a logo row — keep it to four marks and one tone.
- Retheme via
--color-tmu20-acc; the bar, CTA and focus ring read it.
Gotchas — read before shipping
- Two buttons of equal weight means the section has no primary action. Make the secondary a text link.
- A headline over about 12 words stops being a promise and becomes a paragraph. If it needs a comma and a subordinate clause, it belongs in the sub.
- Deleting proof in the name of calm withholds what the visitor came for. Remove elements that compete, not elements that inform.
text-wrap: balanceonly applies to short blocks and is ignored past a few lines, so it is a refinement on a real headline, not a fix for a long one.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 123+ | 17.5+ | 128+ | 123+ |
The floor is set by light-dark() on the colour tokens (Chrome 123 / Safari 17.5 / Firefox 120) and by Tailwind v4's own generated sheet (cascade layers, @property, color-mix()). The technique itself works far further back.