06 / 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 Neumorphic Soft UI Breadcrumb with Dual Box Shadows
The soft-UI treatment: crumbs extruded from a single-colour surface by two opposing shadows — one light source, one dark — and the current crumb pressed inward with the same pair inverted. Tailwind's shadow-[...] with token references makes the light/dark pair a single editable value instead of four scattered numbers.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tbc-06 w-full min-h-svh grid place-items-center bg-tbc06-surface font-tbc06-sans px-8 py-10">
<nav aria-label="Breadcrumb">
<ol class="flex flex-wrap items-center gap-4 list-none m-0 p-0">
<li class="flex items-center"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Home</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Apps</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Finance</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" aria-current="page" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-bold no-underline bg-tbc06-surface text-tbc06-pressink shadow-[inset_3px_3px_6px_var(--color-tbc06-dark),inset_-3px_-3px_6px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3">Wallet</a></li>
</ol>
</nav>
</section><section class="tbc-06 w-full min-h-svh grid place-items-center bg-tbc06-surface font-tbc06-sans px-8 py-10">
<nav aria-label="Breadcrumb">
<ol class="flex flex-wrap items-center gap-4 list-none m-0 p-0">
<li class="flex items-center"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Home</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Apps</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Finance</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" aria-current="page" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-bold no-underline bg-tbc06-surface text-tbc06-pressink shadow-[inset_3px_3px_6px_var(--color-tbc06-dark),inset_-3px_-3px_6px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3">Wallet</a></li>
</ol>
</nav>
</section>@import "tailwindcss";
@theme {
--color-tbc06-surface: #dfe3e9;
--color-tbc06-surface: oklch(0.9 0.01 255);
--color-tbc06-dark: #b9bfc9;
--color-tbc06-dark: oklch(0.78 0.02 255);
--color-tbc06-light: #fbfcfe;
--color-tbc06-light: oklch(0.99 0.005 255);
--color-tbc06-link: #4453b8;
--color-tbc06-link: oklch(0.45 0.16 265);
--color-tbc06-pressink: #43474f;
--color-tbc06-pressink: oklch(0.32 0.02 255);
--color-tbc06-acc: #3f4fb0;
--color-tbc06-acc: oklch(0.45 0.17 265);
--font-tbc06-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-06 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbc06-surface: #dfe3e9;
--color-tbc06-surface: oklch(0.9 0.01 255);
--color-tbc06-dark: #b9bfc9;
--color-tbc06-dark: oklch(0.78 0.02 255);
--color-tbc06-light: #fbfcfe;
--color-tbc06-light: oklch(0.99 0.005 255);
--color-tbc06-link: #4453b8;
--color-tbc06-link: oklch(0.45 0.16 265);
--color-tbc06-pressink: #43474f;
--color-tbc06-pressink: oklch(0.32 0.02 255);
--color-tbc06-acc: #3f4fb0;
--color-tbc06-acc: oklch(0.45 0.17 265);
--font-tbc06-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-06 {
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-tbc06-surface: #dfe3e9;
--color-tbc06-surface: oklch(0.9 0.01 255);
--color-tbc06-dark: #b9bfc9;
--color-tbc06-dark: oklch(0.78 0.02 255);
--color-tbc06-light: #fbfcfe;
--color-tbc06-light: oklch(0.99 0.005 255);
--color-tbc06-link: #4453b8;
--color-tbc06-link: oklch(0.45 0.16 265);
--color-tbc06-pressink: #43474f;
--color-tbc06-pressink: oklch(0.32 0.02 255);
--color-tbc06-acc: #3f4fb0;
--color-tbc06-acc: oklch(0.45 0.17 265);
--font-tbc06-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-06 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbc06-surface: #dfe3e9;
--color-tbc06-surface: oklch(0.9 0.01 255);
--color-tbc06-dark: #b9bfc9;
--color-tbc06-dark: oklch(0.78 0.02 255);
--color-tbc06-light: #fbfcfe;
--color-tbc06-light: oklch(0.99 0.005 255);
--color-tbc06-link: #4453b8;
--color-tbc06-link: oklch(0.45 0.16 265);
--color-tbc06-pressink: #43474f;
--color-tbc06-pressink: oklch(0.32 0.02 255);
--color-tbc06-acc: #3f4fb0;
--color-tbc06-acc: oklch(0.45 0.17 265);
--font-tbc06-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-06 {
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&family=JetBrains+Mono:wght@400;500;600&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&family=JetBrains+Mono:wght@400;500;600&display=swap">What changed in the port
Which parts became utilities, which stayed CSS, and why.
- The four-number shadow pair is the demo's entire identity, and as an arbitrary value it now sits next to its own hover variant — the resting depth and the lifted depth are one line apart instead of two rules apart.
- Referencing
var(--color-tbc06-dark)inside the arbitrary shadow is what keeps the pair themeable. Hard-coding the colours would work and would make retheming a four-place edit. - UI change from the CSS original: link and current-crumb ink were darkened to clear 4.5:1 on the surface, and crumbs grew to
min-h-11. Neumorphism's usual failure is contrast; this version passes.
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 Neumorphic Soft UI Breadcrumb with Dual Box Shadows
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-neumorphic-soft-ui-breadcrumb-dual-box-shadows/
The soft-UI treatment: crumbs extruded from a single-colour surface by two opposing shadows — one light source, one dark — and the current crumb pressed inward with the same pair inverted. Tailwind's shadow-[...] with token references makes the light/dark pair a single editable value instead of four scattered numbers.
## HTML
```html
<section class="tbc-06 w-full min-h-svh grid place-items-center bg-tbc06-surface font-tbc06-sans px-8 py-10">
<nav aria-label="Breadcrumb">
<ol class="flex flex-wrap items-center gap-4 list-none m-0 p-0">
<li class="flex items-center"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Home</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Apps</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Finance</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" aria-current="page" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-bold no-underline bg-tbc06-surface text-tbc06-pressink shadow-[inset_3px_3px_6px_var(--color-tbc06-dark),inset_-3px_-3px_6px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3">Wallet</a></li>
</ol>
</nav>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbc06-surface: #dfe3e9;
--color-tbc06-surface: oklch(0.9 0.01 255);
--color-tbc06-dark: #b9bfc9;
--color-tbc06-dark: oklch(0.78 0.02 255);
--color-tbc06-light: #fbfcfe;
--color-tbc06-light: oklch(0.99 0.005 255);
--color-tbc06-link: #4453b8;
--color-tbc06-link: oklch(0.45 0.16 265);
--color-tbc06-pressink: #43474f;
--color-tbc06-pressink: oklch(0.32 0.02 255);
--color-tbc06-acc: #3f4fb0;
--color-tbc06-acc: oklch(0.45 0.17 265);
--font-tbc06-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-06 {
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 Neumorphic Soft UI Breadcrumb with Dual Box Shadows
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-neumorphic-soft-ui-breadcrumb-dual-box-shadows/
The soft-UI treatment: crumbs extruded from a single-colour surface by two opposing shadows — one light source, one dark — and the current crumb pressed inward with the same pair inverted. Tailwind's shadow-[...] with token references makes the light/dark pair a single editable value instead of four scattered numbers.
## HTML
```html
<section class="tbc-06 w-full min-h-svh grid place-items-center bg-tbc06-surface font-tbc06-sans px-8 py-10">
<nav aria-label="Breadcrumb">
<ol class="flex flex-wrap items-center gap-4 list-none m-0 p-0">
<li class="flex items-center"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Home</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Apps</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-semibold text-tbc06-link no-underline bg-tbc06-surface shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)] transition-shadow duration-200 hover:shadow-[7px_7px_14px_var(--color-tbc06-dark),-7px_-7px_14px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3 motion-reduce:transition-none">Finance</a></li>
<li class="flex items-center before:content-[''] before:w-1.5 before:h-1.5 before:mr-4 before:rounded-full before:bg-tbc06-surface before:shadow-[inset_1px_1px_2px_var(--color-tbc06-dark),inset_-1px_-1px_2px_var(--color-tbc06-light)]"><a href="#" aria-current="page" class="inline-flex items-center min-h-11 px-4 rounded-2xl text-[13.5px] font-bold no-underline bg-tbc06-surface text-tbc06-pressink shadow-[inset_3px_3px_6px_var(--color-tbc06-dark),inset_-3px_-3px_6px_var(--color-tbc06-light)] focus-visible:outline-2 focus-visible:outline-tbc06-acc focus-visible:outline-offset-3">Wallet</a></li>
</ol>
</nav>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbc06-surface: #dfe3e9;
--color-tbc06-surface: oklch(0.9 0.01 255);
--color-tbc06-dark: #b9bfc9;
--color-tbc06-dark: oklch(0.78 0.02 255);
--color-tbc06-light: #fbfcfe;
--color-tbc06-light: oklch(0.99 0.005 255);
--color-tbc06-link: #4453b8;
--color-tbc06-link: oklch(0.45 0.16 265);
--color-tbc06-pressink: #43474f;
--color-tbc06-pressink: oklch(0.32 0.02 255);
--color-tbc06-acc: #3f4fb0;
--color-tbc06-acc: oklch(0.45 0.17 265);
--font-tbc06-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-06 {
width: 100%;
min-height: 100svh;
}
```How this works
One surface colour, two mirrored shadows. Neumorphism only works if the element and the page share a background, so --color-tbc06-surface is used by both the stage and every crumb. Depth comes entirely from 5px 5px 10px dark and -5px -5px 10px light, stated as one arbitrary shadow value:
class="bg-tbc06-surface
shadow-[5px_5px_10px_var(--color-tbc06-dark),-5px_-5px_10px_var(--color-tbc06-light)]"The current page presses in. aria-[current=page]:shadow-[inset_3px_3px_6px_...] inverts the same pair. Because it rides the ARIA attribute, the pressed crumb and the announced crumb are the same element by construction.
Contrast is the real work. Soft UI is notorious for failing WCAG: low-contrast shadows on a mid-tone surface. The port darkens the link token to oklch(0.45 0.16 265) and the current-crumb ink to oklch(0.32 0.02 255), both above 4.5:1 on the surface, so the aesthetic survives an audit.
Make it yours
- Depth: the two offsets and blurs. Halve them for a subtler extrusion, double for a pillowy one.
- Light direction: flip the signs to move the light source to the bottom-right.
- Surface hue:
--color-tbc06-surface, with--color-tbc06-darkand--color-tbc06-lightkept within about ±0.1 lightness of it, or the illusion breaks.
Gotchas — read before shipping
- Element and page background MUST be the same colour. A crumb one step lighter than the surface reads as a floating card, not an extrusion.
- Neumorphic borders are invisible to users with low vision. The port compensates with high-contrast label text, which is the only reason this pattern can ship.
- Arbitrary shadow values cannot contain spaces — every space inside the value is an underscore, including those between the four shadow lengths.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 16.4+ | 128+ | 111+ |
Multiple and inset box-shadows are universally supported; the floor is Tailwind v4's own generated sheet. This demo is plain CSS in utility clothing and will not break.