23 / 39
All 39 in 39 Tailwind CSS Breadcrumbs
- 01Tailwind Accessible Breadcrumb with Schema.org Microdata & ARIA
- 02Tailwind Responsive Collapsing Breadcrumb Bar with Container Queries
- 03Tailwind Adaptive Light & Dark Mode Breadcrumb Bar with Theme Tokens
- 04Tailwind E-Commerce Filter & Facet Breadcrumb with Removable Chips
- 05Tailwind Glassmorphism Floating Breadcrumb Pill with Shimmer Sweep
- 06Tailwind Neumorphic Soft UI Breadcrumb with Dual Box Shadows
- 07Tailwind Sticky Scroll-Shrink Breadcrumb Header with Scroll-Driven Animation
- 08Tailwind Material Design Flat Breadcrumb Bar with Ink Ripple
- 09Tailwind Isometric 3D Layered Breadcrumb with Extruded Tiles
- 10Tailwind Breadcrumb Bar with Built-In Dropdown Sibling Menus
- 11Tailwind Full-Width Block-Style Segmented Breadcrumb Bar
- 12Tailwind Accent-Colour Toggle Breadcrumb with Persisted Theme
- 13Tailwind Seamless Arrow-Cutout Breadcrumb Trail with clip-path
- 14Tailwind Compact Icon-Only Home Node Breadcrumb Bar
- 15Tailwind Segmented Rounded-Outline Pill Breadcrumb
- 16Tailwind Neumorphic Soft Inset-Shadow Breadcrumb Channel
- 17Tailwind CSS Grid Auto-Fitting Responsive Breadcrumb Trail
- 18Tailwind Holographic Shimmer Web3 Breadcrumb with Animated @property
- 19Tailwind SaaS Gradient-Text Breadcrumb Bar with Animated Clip
- 20Tailwind Marketplace Filter-Chip Breadcrumb with Icon Chips
- 21Tailwind Editorial Breadcrumb with Animated SVG Wave Underline
- 22Tailwind Developer Docs Breadcrumb with One-Click Path Copy
- 23Tailwind Modern Arrow Breadcrumb Bar using clip-path Polygons
- 24Tailwind Multi-Line Aligned Breadcrumb Layout with CSS Subgrid
- 25Tailwind Breadcrumb Links with Animated Underline Glow
- 26Tailwind Minimalist Breadcrumb with Swappable Masked SVG Separators
- 27Tailwind Multi-Step Checkout & Wizard Breadcrumb Indicator
- 28Tailwind Ribbon-Style Chevron Breadcrumb Trail
- 29Tailwind Pill-Shape Badge Breadcrumb Bar
- 30Tailwind Clean Line-Separator Minimalist Breadcrumbs
- 31Tailwind Gradient Background Glow Breadcrumb Bar
- 32Tailwind Floating Card Shadow Breadcrumb Navigation
- 33Tailwind Truncated Ellipsis Compact Mobile Breadcrumb
- 34Tailwind Inline Bullet-Dot Separator Breadcrumb
- 35Tailwind Skewed Parallelogram Breadcrumb Bar
- 36Tailwind Outline Border-Only Geometric Breadcrumbs
- 37Tailwind Circular Icon & Numbered Step Breadcrumbs
- 38Tailwind Frosted Glass Dark UI Breadcrumb Component
- 39Tailwind Micro-Interaction Animated Hover Breadcrumbs
Tailwind Modern Arrow Breadcrumb Bar using clip-path Polygons
The interlocking-arrow bar with a tunable point: one --tbc23-depth property drives every polygon and every overlap, so the chevron angle is a one-line edit across a five-step trail. The list carries a drop-shadow filter, which is the only way to shadow a clipped shape.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tbc-23 w-full min-h-svh flex items-center justify-center bg-tbc23-bg font-tbc23-sans px-7 py-7 [--tbc23-depth:16px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0 [filter:drop-shadow(0_2px_4px_oklch(0_0_0/0.12))]">
<li class="flex"><a href="#" class="flex items-center h-10 pl-5 pr-4.5 text-[13.5px] font-semibold text-white no-underline bg-tbc23-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Home</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step2 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Electronics</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step3 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Audio</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step4 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Headphones</a></li>
<li class="flex"><a href="#" aria-current="page" class="flex items-center h-10 pl-6.5 pr-5.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc23-acc [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc23-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-ring)]">Wireless Over-Ear</a></li>
</ol>
</nav>
</section><section class="tbc-23 w-full min-h-svh flex items-center justify-center bg-tbc23-bg font-tbc23-sans px-7 py-7 [--tbc23-depth:16px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0 [filter:drop-shadow(0_2px_4px_oklch(0_0_0/0.12))]">
<li class="flex"><a href="#" class="flex items-center h-10 pl-5 pr-4.5 text-[13.5px] font-semibold text-white no-underline bg-tbc23-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Home</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step2 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Electronics</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step3 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Audio</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step4 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Headphones</a></li>
<li class="flex"><a href="#" aria-current="page" class="flex items-center h-10 pl-6.5 pr-5.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc23-acc [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc23-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-ring)]">Wireless Over-Ear</a></li>
</ol>
</nav>
</section>@import "tailwindcss";
@theme {
--color-tbc23-bg: #f2f3f6;
--color-tbc23-bg: oklch(0.96 0.005 260);
--color-tbc23-step1: #8f929d;
--color-tbc23-step1: oklch(0.6 0.02 260);
--color-tbc23-step2: #82868f;
--color-tbc23-step2: oklch(0.56 0.03 260);
--color-tbc23-step3: #757985;
--color-tbc23-step3: oklch(0.52 0.04 260);
--color-tbc23-step4: #686d7d;
--color-tbc23-step4: oklch(0.48 0.05 260);
--color-tbc23-acc: #5a63cf;
--color-tbc23-acc: oklch(0.55 0.17 265);
--color-tbc23-ring: #2b2f66;
--color-tbc23-ring: oklch(0.3 0.1 265);
--font-tbc23-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-23 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbc23-bg: #f2f3f6;
--color-tbc23-bg: oklch(0.96 0.005 260);
--color-tbc23-step1: #8f929d;
--color-tbc23-step1: oklch(0.6 0.02 260);
--color-tbc23-step2: #82868f;
--color-tbc23-step2: oklch(0.56 0.03 260);
--color-tbc23-step3: #757985;
--color-tbc23-step3: oklch(0.52 0.04 260);
--color-tbc23-step4: #686d7d;
--color-tbc23-step4: oklch(0.48 0.05 260);
--color-tbc23-acc: #5a63cf;
--color-tbc23-acc: oklch(0.55 0.17 265);
--color-tbc23-ring: #2b2f66;
--color-tbc23-ring: oklch(0.3 0.1 265);
--font-tbc23-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-23 {
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-tbc23-bg: #f2f3f6;
--color-tbc23-bg: oklch(0.96 0.005 260);
--color-tbc23-step1: #8f929d;
--color-tbc23-step1: oklch(0.6 0.02 260);
--color-tbc23-step2: #82868f;
--color-tbc23-step2: oklch(0.56 0.03 260);
--color-tbc23-step3: #757985;
--color-tbc23-step3: oklch(0.52 0.04 260);
--color-tbc23-step4: #686d7d;
--color-tbc23-step4: oklch(0.48 0.05 260);
--color-tbc23-acc: #5a63cf;
--color-tbc23-acc: oklch(0.55 0.17 265);
--color-tbc23-ring: #2b2f66;
--color-tbc23-ring: oklch(0.3 0.1 265);
--font-tbc23-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-23 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbc23-bg: #f2f3f6;
--color-tbc23-bg: oklch(0.96 0.005 260);
--color-tbc23-step1: #8f929d;
--color-tbc23-step1: oklch(0.6 0.02 260);
--color-tbc23-step2: #82868f;
--color-tbc23-step2: oklch(0.56 0.03 260);
--color-tbc23-step3: #757985;
--color-tbc23-step3: oklch(0.52 0.04 260);
--color-tbc23-step4: #686d7d;
--color-tbc23-step4: oklch(0.48 0.05 260);
--color-tbc23-acc: #5a63cf;
--color-tbc23-acc: oklch(0.55 0.17 265);
--color-tbc23-ring: #2b2f66;
--color-tbc23-ring: oklch(0.3 0.1 265);
--font-tbc23-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-23 {
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=Space+Grotesk:wght@400;500;600;700&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=Space+Grotesk:wght@400;500;600;700&display=swap">What changed in the port
Which parts became utilities, which stayed CSS, and why.
- Reading
--tbc23-depthfrom inside arbitrary values is what makes this the tunable version of demo 13: one property, and the polygons plus the overlaps stay in sync by construction. [filter:drop-shadow(...)]rather than ashadow-*utility is the non-obvious requirement of every clipped trail — box shadows draw the un-clipped rectangle.- UI change from the CSS original: the accent step darkened for AA with white bold text, and the current crumb's focus ring uses a darker inner accent so it stays visible against the accent fill itself.
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 Modern Arrow Breadcrumb Bar using clip-path Polygons
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-modern-arrow-breadcrumb-bar-clip-path-polygons/
The interlocking-arrow bar with a tunable point: one --tbc23-depth property drives every polygon and every overlap, so the chevron angle is a one-line edit across a five-step trail. The list carries a drop-shadow filter, which is the only way to shadow a clipped shape.
## HTML
```html
<section class="tbc-23 w-full min-h-svh flex items-center justify-center bg-tbc23-bg font-tbc23-sans px-7 py-7 [--tbc23-depth:16px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0 [filter:drop-shadow(0_2px_4px_oklch(0_0_0/0.12))]">
<li class="flex"><a href="#" class="flex items-center h-10 pl-5 pr-4.5 text-[13.5px] font-semibold text-white no-underline bg-tbc23-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Home</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step2 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Electronics</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step3 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Audio</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step4 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Headphones</a></li>
<li class="flex"><a href="#" aria-current="page" class="flex items-center h-10 pl-6.5 pr-5.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc23-acc [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc23-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-ring)]">Wireless Over-Ear</a></li>
</ol>
</nav>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbc23-bg: #f2f3f6;
--color-tbc23-bg: oklch(0.96 0.005 260);
--color-tbc23-step1: #8f929d;
--color-tbc23-step1: oklch(0.6 0.02 260);
--color-tbc23-step2: #82868f;
--color-tbc23-step2: oklch(0.56 0.03 260);
--color-tbc23-step3: #757985;
--color-tbc23-step3: oklch(0.52 0.04 260);
--color-tbc23-step4: #686d7d;
--color-tbc23-step4: oklch(0.48 0.05 260);
--color-tbc23-acc: #5a63cf;
--color-tbc23-acc: oklch(0.55 0.17 265);
--color-tbc23-ring: #2b2f66;
--color-tbc23-ring: oklch(0.3 0.1 265);
--font-tbc23-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-23 {
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 Modern Arrow Breadcrumb Bar using clip-path Polygons
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-modern-arrow-breadcrumb-bar-clip-path-polygons/
The interlocking-arrow bar with a tunable point: one --tbc23-depth property drives every polygon and every overlap, so the chevron angle is a one-line edit across a five-step trail. The list carries a drop-shadow filter, which is the only way to shadow a clipped shape.
## HTML
```html
<section class="tbc-23 w-full min-h-svh flex items-center justify-center bg-tbc23-bg font-tbc23-sans px-7 py-7 [--tbc23-depth:16px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0 [filter:drop-shadow(0_2px_4px_oklch(0_0_0/0.12))]">
<li class="flex"><a href="#" class="flex items-center h-10 pl-5 pr-4.5 text-[13.5px] font-semibold text-white no-underline bg-tbc23-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Home</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step2 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Electronics</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step3 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Audio</a></li>
<li class="flex"><a href="#" class="flex items-center h-10 pl-6.5 pr-4.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-semibold text-white no-underline bg-tbc23-step4 [clip-path:polygon(0_0,calc(100%-var(--tbc23-depth))_0,100%_50%,calc(100%-var(--tbc23-depth))_100%,0_100%,var(--tbc23-depth)_50%)] transition-[filter] duration-200 hover:brightness-112 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-acc)] motion-reduce:transition-none">Headphones</a></li>
<li class="flex"><a href="#" aria-current="page" class="flex items-center h-10 pl-6.5 pr-5.5 -ms-[var(--tbc23-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc23-acc [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc23-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white,inset_0_0_0_4px_var(--color-tbc23-ring)]">Wireless Over-Ear</a></li>
</ol>
</nav>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbc23-bg: #f2f3f6;
--color-tbc23-bg: oklch(0.96 0.005 260);
--color-tbc23-step1: #8f929d;
--color-tbc23-step1: oklch(0.6 0.02 260);
--color-tbc23-step2: #82868f;
--color-tbc23-step2: oklch(0.56 0.03 260);
--color-tbc23-step3: #757985;
--color-tbc23-step3: oklch(0.52 0.04 260);
--color-tbc23-step4: #686d7d;
--color-tbc23-step4: oklch(0.48 0.05 260);
--color-tbc23-acc: #5a63cf;
--color-tbc23-acc: oklch(0.55 0.17 265);
--color-tbc23-ring: #2b2f66;
--color-tbc23-ring: oklch(0.3 0.1 265);
--font-tbc23-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-23 {
width: 100%;
min-height: 100svh;
}
```How this works
One property, six references. Every crumb's polygon and its negative margin read --tbc23-depth, declared once on the section. Change 16px to 24px and the whole trail resharpens with no mismatch — the failure mode of demo 13's literal values.
Clipped shapes cannot be shadowed. A shadow-* utility paints the rectangular border box, which then gets clipped away. drop-shadow() follows the alpha of the rendered shape, so it goes on the list and shadows the whole chevron run at once.
Focus is two inset rings — white inside accent — visible on every step of the ramp, and unaffected by the clip because insets paint within the padding box.
Make it yours
- Point angle:
--tbc23-depth. Values above about 24px start eating the label's left padding. - Height:
h-10plus the ramp's four tokens. - For a wizard, add
aria-current="step"and style witharia-[current=step]:.
Gotchas — read before shipping
- The negative margin and the polygon depth must both read the same property, or the shapes gap.
drop-shadowon the list is cheap; on each crumb it would composite five separate layers.- Do not add
overflow-hiddento the list — it clips the drop shadow to the border box and undoes the effect.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 16.4+ | 128+ | 111+ |
Polygon clip-path and drop-shadow() are Baseline; the floor is Tailwind v4's own generated sheet.