10 / 25
All 25 in 25 Tailwind CSS Blockquotes
- 01Tailwind Blockquote with Large Decorative Quotation Marks
- 02Tailwind CSS Blockquote Testimonial Component
- 03Tailwind Callout Box / Admonition Blockquote
- 04Responsive Tailwind Center-Aligned Quote Banner
- 05Modern Minimalist Left Border Tailwind Blockquote
- 06Animated Tailwind Gradient Border Blockquote
- 07Classic Left Border Tailwind Blockquote Snippet
- 08Brutalist Tailwind Blockquote Design
- 09Glassmorphism Tailwind Blockquote Card
- 10Glowing Neon Border Tailwind Quote Box
- 11Article Pull Quote Tailwind Design with Wrap Text
- 12Speech Bubble Tailwind Blockquote
- 13Thick Vertical Accent Rail Tailwind Blockquote
- 14Customer Testimonial Blockquote Card in Tailwind CSS
- 15Inline Highlighted Text Tailwind Blockquote
- 16Marker Highlight Underline Tailwind Blockquote
- 17Floating Tailwind Blockquote with Drop Shadow
- 18Aurora Gradient Background Tailwind Blockquote
- 19Twitter / X Post Card Style Tailwind Blockquote
- 20Multi-Column Newspaper Editorial Blockquote in Tailwind
- 21IDE Code Comment Style Blockquote in Tailwind
- 22Markdown Compatible HTML Blockquote in Tailwind
- 23JavaScript Testimonial Quote Slider with Tailwind CSS
- 24Expandable Read More Tailwind Blockquote
- 25Tailwind Blockquote with One-Click Copy Button
Glowing Neon Border Tailwind Quote Box
A neon sign: a 4-layer cyan box-shadow falloff (tight core → wide bloom → inner cast), matching text-shadow on the quote, a pink pill for the author, and an occasional flicker. The port sets the quote in Tilt Neon — a typeface drawn as bent tubing — and lets hover "turn the power up" with a brighter shadow stack.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tbq-10 w-full min-h-svh grid place-items-center bg-tbq10-bg bg-[radial-gradient(80%_60%_at_50%_30%,var(--color-tbq10-wall),transparent_75%)] px-6 py-16 font-tbq10-sans text-tbq10-ink" aria-label="Neon border quote box demo">
<div class="grid w-full justify-items-center gap-9">
<figure class="group grid w-full max-w-[560px] justify-items-center gap-6">
<div class="w-full animate-tbq10-flicker rounded-[18px] border-2 border-tbq10-cyan bg-tbq10-panel p-[clamp(26px,4.5vw,40px)] shadow-[0_0_6px_oklch(0.8_0.16_195/0.9),0_0_18px_oklch(0.75_0.17_195/0.5),0_0_46px_oklch(0.7_0.18_195/0.3),inset_0_0_14px_oklch(0.8_0.16_195/0.22)] transition-shadow duration-500 group-hover:shadow-[0_0_8px_oklch(0.88_0.15_195),0_0_26px_oklch(0.8_0.17_195/0.7),0_0_72px_oklch(0.72_0.18_195/0.45),inset_0_0_24px_oklch(0.8_0.16_195/0.32)] motion-reduce:animate-none">
<p aria-hidden="true" class="mb-4 flex items-center gap-2.5 font-tbq10-mono text-[11px] font-bold tracking-[0.34em] text-tbq10-cyan [text-shadow:0_0_8px_oklch(0.8_0.16_195/0.8)]"><span class="size-1.5 rounded-full bg-tbq10-cyan shadow-[0_0_8px_var(--color-tbq10-cyan)]"></span>OPEN · EST 2026</p>
<blockquote>
<p class="font-tbq10-neon text-[clamp(26px,3.6vw,38px)] leading-[1.22] tracking-[-0.005em] text-balance [text-shadow:0_0_4px_oklch(0.9_0.1_195/0.9),0_0_14px_oklch(0.8_0.16_195/0.55),0_0_34px_oklch(0.75_0.17_195/0.3)]">The future is already here — it's just not evenly distributed.</p>
</blockquote>
</div>
<figcaption class="rounded-full border-[1.5px] border-tbq10-pink px-4.5 py-2.5 font-tbq10-neon text-sm tracking-[0.3em] text-tbq10-pink shadow-[0_0_6px_oklch(0.75_0.17_350/0.7),0_0_20px_oklch(0.7_0.18_350/0.35),inset_0_0_10px_oklch(0.75_0.17_350/0.18)] [text-shadow:0_0_8px_oklch(0.75_0.17_350/0.8)]">WILLIAM GIBSON</figcaption>
</figure>
<p aria-hidden="true" class="rounded-full border border-white/12 px-3.5 py-2 font-tbq10-mono text-[11.5px] text-tbq10-mut">4-layer shadow falloff · [text-shadow:…] · hover powers up</p>
</div>
</section><section class="tbq-10 w-full min-h-svh grid place-items-center bg-tbq10-bg bg-[radial-gradient(80%_60%_at_50%_30%,var(--color-tbq10-wall),transparent_75%)] px-6 py-16 font-tbq10-sans text-tbq10-ink" aria-label="Neon border quote box demo">
<div class="grid w-full justify-items-center gap-9">
<figure class="group grid w-full max-w-[560px] justify-items-center gap-6">
<div class="w-full animate-tbq10-flicker rounded-[18px] border-2 border-tbq10-cyan bg-tbq10-panel p-[clamp(26px,4.5vw,40px)] shadow-[0_0_6px_oklch(0.8_0.16_195/0.9),0_0_18px_oklch(0.75_0.17_195/0.5),0_0_46px_oklch(0.7_0.18_195/0.3),inset_0_0_14px_oklch(0.8_0.16_195/0.22)] transition-shadow duration-500 group-hover:shadow-[0_0_8px_oklch(0.88_0.15_195),0_0_26px_oklch(0.8_0.17_195/0.7),0_0_72px_oklch(0.72_0.18_195/0.45),inset_0_0_24px_oklch(0.8_0.16_195/0.32)] motion-reduce:animate-none">
<p aria-hidden="true" class="mb-4 flex items-center gap-2.5 font-tbq10-mono text-[11px] font-bold tracking-[0.34em] text-tbq10-cyan [text-shadow:0_0_8px_oklch(0.8_0.16_195/0.8)]"><span class="size-1.5 rounded-full bg-tbq10-cyan shadow-[0_0_8px_var(--color-tbq10-cyan)]"></span>OPEN · EST 2026</p>
<blockquote>
<p class="font-tbq10-neon text-[clamp(26px,3.6vw,38px)] leading-[1.22] tracking-[-0.005em] text-balance [text-shadow:0_0_4px_oklch(0.9_0.1_195/0.9),0_0_14px_oklch(0.8_0.16_195/0.55),0_0_34px_oklch(0.75_0.17_195/0.3)]">The future is already here — it's just not evenly distributed.</p>
</blockquote>
</div>
<figcaption class="rounded-full border-[1.5px] border-tbq10-pink px-4.5 py-2.5 font-tbq10-neon text-sm tracking-[0.3em] text-tbq10-pink shadow-[0_0_6px_oklch(0.75_0.17_350/0.7),0_0_20px_oklch(0.7_0.18_350/0.35),inset_0_0_10px_oklch(0.75_0.17_350/0.18)] [text-shadow:0_0_8px_oklch(0.75_0.17_350/0.8)]">WILLIAM GIBSON</figcaption>
</figure>
<p aria-hidden="true" class="rounded-full border border-white/12 px-3.5 py-2 font-tbq10-mono text-[11.5px] text-tbq10-mut">4-layer shadow falloff · [text-shadow:…] · hover powers up</p>
</div>
</section>@import "tailwindcss";
@theme {
--color-tbq10-bg: #06060f;
--color-tbq10-bg: oklch(0.13 0.02 280);
--color-tbq10-wall: #101125;
--color-tbq10-wall: oklch(0.19 0.04 280);
--color-tbq10-panel: #060b16a6;
--color-tbq10-panel: oklch(0.15 0.025 265 / 0.65);
--color-tbq10-ink: #eef7f7;
--color-tbq10-ink: oklch(0.97 0.01 195);
--color-tbq10-cyan: #00ebec;
--color-tbq10-cyan: oklch(0.85 0.15 195);
--color-tbq10-pink: #ff90cc;
--color-tbq10-pink: oklch(0.8 0.16 350);
--color-tbq10-mut: #94a8b6;
--color-tbq10-mut: oklch(0.72 0.03 240);
--font-tbq10-neon: 'Tilt Neon', system-ui, sans-serif;
--font-tbq10-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-tbq10-mono: 'JetBrains Mono', ui-monospace, monospace;
--animate-tbq10-flicker: tbq10-flicker 8s linear infinite;
@keyframes tbq10-flicker {
0%,
41%,
43%,
78%,
80%,
100% {
opacity: 1;
}
42% {
opacity: 0.62;
}
79% {
opacity: 0.74;
}
}
}
/* Root rule: the full-bleed contract, stated in CSS as well as in the markup's utilities, so the
stage is sized before the browser build compiles. */
.tbq-10 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbq10-bg: #06060f;
--color-tbq10-bg: oklch(0.13 0.02 280);
--color-tbq10-wall: #101125;
--color-tbq10-wall: oklch(0.19 0.04 280);
--color-tbq10-panel: #060b16a6;
--color-tbq10-panel: oklch(0.15 0.025 265 / 0.65);
--color-tbq10-ink: #eef7f7;
--color-tbq10-ink: oklch(0.97 0.01 195);
--color-tbq10-cyan: #00ebec;
--color-tbq10-cyan: oklch(0.85 0.15 195);
--color-tbq10-pink: #ff90cc;
--color-tbq10-pink: oklch(0.8 0.16 350);
--color-tbq10-mut: #94a8b6;
--color-tbq10-mut: oklch(0.72 0.03 240);
--font-tbq10-neon: 'Tilt Neon', system-ui, sans-serif;
--font-tbq10-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-tbq10-mono: 'JetBrains Mono', ui-monospace, monospace;
--animate-tbq10-flicker: tbq10-flicker 8s linear infinite;
@keyframes tbq10-flicker {
0%,
41%,
43%,
78%,
80%,
100% {
opacity: 1;
}
42% {
opacity: 0.62;
}
79% {
opacity: 0.74;
}
}
}
/* Root rule: the full-bleed contract, stated in CSS as well as in the markup's utilities, so the
stage is sized before the browser build compiles. */
.tbq-10 {
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-tbq10-bg: #06060f;
--color-tbq10-bg: oklch(0.13 0.02 280);
--color-tbq10-wall: #101125;
--color-tbq10-wall: oklch(0.19 0.04 280);
--color-tbq10-panel: #060b16a6;
--color-tbq10-panel: oklch(0.15 0.025 265 / 0.65);
--color-tbq10-ink: #eef7f7;
--color-tbq10-ink: oklch(0.97 0.01 195);
--color-tbq10-cyan: #00ebec;
--color-tbq10-cyan: oklch(0.85 0.15 195);
--color-tbq10-pink: #ff90cc;
--color-tbq10-pink: oklch(0.8 0.16 350);
--color-tbq10-mut: #94a8b6;
--color-tbq10-mut: oklch(0.72 0.03 240);
--font-tbq10-neon: 'Tilt Neon', system-ui, sans-serif;
--font-tbq10-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-tbq10-mono: 'JetBrains Mono', ui-monospace, monospace;
--animate-tbq10-flicker: tbq10-flicker 8s linear infinite;
@keyframes tbq10-flicker {
0%,
41%,
43%,
78%,
80%,
100% {
opacity: 1;
}
42% {
opacity: 0.62;
}
79% {
opacity: 0.74;
}
}
}
/* Root rule: the full-bleed contract, stated in CSS as well as in the markup's utilities, so the
stage is sized before the browser build compiles. */
.tbq-10 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbq10-bg: #06060f;
--color-tbq10-bg: oklch(0.13 0.02 280);
--color-tbq10-wall: #101125;
--color-tbq10-wall: oklch(0.19 0.04 280);
--color-tbq10-panel: #060b16a6;
--color-tbq10-panel: oklch(0.15 0.025 265 / 0.65);
--color-tbq10-ink: #eef7f7;
--color-tbq10-ink: oklch(0.97 0.01 195);
--color-tbq10-cyan: #00ebec;
--color-tbq10-cyan: oklch(0.85 0.15 195);
--color-tbq10-pink: #ff90cc;
--color-tbq10-pink: oklch(0.8 0.16 350);
--color-tbq10-mut: #94a8b6;
--color-tbq10-mut: oklch(0.72 0.03 240);
--font-tbq10-neon: 'Tilt Neon', system-ui, sans-serif;
--font-tbq10-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-tbq10-mono: 'JetBrains Mono', ui-monospace, monospace;
--animate-tbq10-flicker: tbq10-flicker 8s linear infinite;
@keyframes tbq10-flicker {
0%,
41%,
43%,
78%,
80%,
100% {
opacity: 1;
}
42% {
opacity: 0.62;
}
79% {
opacity: 0.74;
}
}
}
/* Root rule: the full-bleed contract, stated in CSS as well as in the markup's utilities, so the
stage is sized before the browser build compiles. */
.tbq-10 {
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=Tilt+Neon&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono: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=Tilt+Neon&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap">What changed in the port
Which parts became utilities, which stayed CSS, and why.
- Both shadow stacks ported verbatim as arbitrary
shadow-[…]and[text-shadow:…]values — oklch with/alpha works inside brackets unchanged. @keyframes bq10-flickeris now emitted from@themevia--animate-tbq10-flicker.- UI upgrade from the CSS original: the quote and author pill are set in Tilt Neon, a single-stroke face that looks like bent glass tubing, replacing the generic bold sans.
- UI upgrade: hover now brightens the whole sign (
group-hover:shadow-[…], 500ms), the kicker has a lit indicator dot, and the chip text went from0.65to0.72for legibility on the near-black stage.
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: Glowing Neon Border Tailwind Quote Box
Source: https://codefronts.com/snippets/tailwind-css-blockquotes/glowing-neon-border-tailwind-quote-box/
A neon sign: a 4-layer cyan box-shadow falloff (tight core → wide bloom → inner cast), matching text-shadow on the quote, a pink pill for the author, and an occasional flicker. The port sets the quote in Tilt Neon — a typeface drawn as bent tubing — and lets hover "turn the power up" with a brighter shadow stack.
## HTML
```html
<section class="tbq-10 w-full min-h-svh grid place-items-center bg-tbq10-bg bg-[radial-gradient(80%_60%_at_50%_30%,var(--color-tbq10-wall),transparent_75%)] px-6 py-16 font-tbq10-sans text-tbq10-ink" aria-label="Neon border quote box demo">
<div class="grid w-full justify-items-center gap-9">
<figure class="group grid w-full max-w-[560px] justify-items-center gap-6">
<div class="w-full animate-tbq10-flicker rounded-[18px] border-2 border-tbq10-cyan bg-tbq10-panel p-[clamp(26px,4.5vw,40px)] shadow-[0_0_6px_oklch(0.8_0.16_195/0.9),0_0_18px_oklch(0.75_0.17_195/0.5),0_0_46px_oklch(0.7_0.18_195/0.3),inset_0_0_14px_oklch(0.8_0.16_195/0.22)] transition-shadow duration-500 group-hover:shadow-[0_0_8px_oklch(0.88_0.15_195),0_0_26px_oklch(0.8_0.17_195/0.7),0_0_72px_oklch(0.72_0.18_195/0.45),inset_0_0_24px_oklch(0.8_0.16_195/0.32)] motion-reduce:animate-none">
<p aria-hidden="true" class="mb-4 flex items-center gap-2.5 font-tbq10-mono text-[11px] font-bold tracking-[0.34em] text-tbq10-cyan [text-shadow:0_0_8px_oklch(0.8_0.16_195/0.8)]"><span class="size-1.5 rounded-full bg-tbq10-cyan shadow-[0_0_8px_var(--color-tbq10-cyan)]"></span>OPEN · EST 2026</p>
<blockquote>
<p class="font-tbq10-neon text-[clamp(26px,3.6vw,38px)] leading-[1.22] tracking-[-0.005em] text-balance [text-shadow:0_0_4px_oklch(0.9_0.1_195/0.9),0_0_14px_oklch(0.8_0.16_195/0.55),0_0_34px_oklch(0.75_0.17_195/0.3)]">The future is already here — it's just not evenly distributed.</p>
</blockquote>
</div>
<figcaption class="rounded-full border-[1.5px] border-tbq10-pink px-4.5 py-2.5 font-tbq10-neon text-sm tracking-[0.3em] text-tbq10-pink shadow-[0_0_6px_oklch(0.75_0.17_350/0.7),0_0_20px_oklch(0.7_0.18_350/0.35),inset_0_0_10px_oklch(0.75_0.17_350/0.18)] [text-shadow:0_0_8px_oklch(0.75_0.17_350/0.8)]">WILLIAM GIBSON</figcaption>
</figure>
<p aria-hidden="true" class="rounded-full border border-white/12 px-3.5 py-2 font-tbq10-mono text-[11.5px] text-tbq10-mut">4-layer shadow falloff · [text-shadow:…] · hover powers up</p>
</div>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbq10-bg: #06060f;
--color-tbq10-bg: oklch(0.13 0.02 280);
--color-tbq10-wall: #101125;
--color-tbq10-wall: oklch(0.19 0.04 280);
--color-tbq10-panel: #060b16a6;
--color-tbq10-panel: oklch(0.15 0.025 265 / 0.65);
--color-tbq10-ink: #eef7f7;
--color-tbq10-ink: oklch(0.97 0.01 195);
--color-tbq10-cyan: #00ebec;
--color-tbq10-cyan: oklch(0.85 0.15 195);
--color-tbq10-pink: #ff90cc;
--color-tbq10-pink: oklch(0.8 0.16 350);
--color-tbq10-mut: #94a8b6;
--color-tbq10-mut: oklch(0.72 0.03 240);
--font-tbq10-neon: 'Tilt Neon', system-ui, sans-serif;
--font-tbq10-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-tbq10-mono: 'JetBrains Mono', ui-monospace, monospace;
--animate-tbq10-flicker: tbq10-flicker 8s linear infinite;
@keyframes tbq10-flicker {
0%,
41%,
43%,
78%,
80%,
100% {
opacity: 1;
}
42% {
opacity: 0.62;
}
79% {
opacity: 0.74;
}
}
}
/* Root rule: the full-bleed contract, stated in CSS as well as in the markup's utilities, so the
stage is sized before the browser build compiles. */
.tbq-10 {
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: Glowing Neon Border Tailwind Quote Box
Source: https://codefronts.com/snippets/tailwind-css-blockquotes/glowing-neon-border-tailwind-quote-box/
A neon sign: a 4-layer cyan box-shadow falloff (tight core → wide bloom → inner cast), matching text-shadow on the quote, a pink pill for the author, and an occasional flicker. The port sets the quote in Tilt Neon — a typeface drawn as bent tubing — and lets hover "turn the power up" with a brighter shadow stack.
## HTML
```html
<section class="tbq-10 w-full min-h-svh grid place-items-center bg-tbq10-bg bg-[radial-gradient(80%_60%_at_50%_30%,var(--color-tbq10-wall),transparent_75%)] px-6 py-16 font-tbq10-sans text-tbq10-ink" aria-label="Neon border quote box demo">
<div class="grid w-full justify-items-center gap-9">
<figure class="group grid w-full max-w-[560px] justify-items-center gap-6">
<div class="w-full animate-tbq10-flicker rounded-[18px] border-2 border-tbq10-cyan bg-tbq10-panel p-[clamp(26px,4.5vw,40px)] shadow-[0_0_6px_oklch(0.8_0.16_195/0.9),0_0_18px_oklch(0.75_0.17_195/0.5),0_0_46px_oklch(0.7_0.18_195/0.3),inset_0_0_14px_oklch(0.8_0.16_195/0.22)] transition-shadow duration-500 group-hover:shadow-[0_0_8px_oklch(0.88_0.15_195),0_0_26px_oklch(0.8_0.17_195/0.7),0_0_72px_oklch(0.72_0.18_195/0.45),inset_0_0_24px_oklch(0.8_0.16_195/0.32)] motion-reduce:animate-none">
<p aria-hidden="true" class="mb-4 flex items-center gap-2.5 font-tbq10-mono text-[11px] font-bold tracking-[0.34em] text-tbq10-cyan [text-shadow:0_0_8px_oklch(0.8_0.16_195/0.8)]"><span class="size-1.5 rounded-full bg-tbq10-cyan shadow-[0_0_8px_var(--color-tbq10-cyan)]"></span>OPEN · EST 2026</p>
<blockquote>
<p class="font-tbq10-neon text-[clamp(26px,3.6vw,38px)] leading-[1.22] tracking-[-0.005em] text-balance [text-shadow:0_0_4px_oklch(0.9_0.1_195/0.9),0_0_14px_oklch(0.8_0.16_195/0.55),0_0_34px_oklch(0.75_0.17_195/0.3)]">The future is already here — it's just not evenly distributed.</p>
</blockquote>
</div>
<figcaption class="rounded-full border-[1.5px] border-tbq10-pink px-4.5 py-2.5 font-tbq10-neon text-sm tracking-[0.3em] text-tbq10-pink shadow-[0_0_6px_oklch(0.75_0.17_350/0.7),0_0_20px_oklch(0.7_0.18_350/0.35),inset_0_0_10px_oklch(0.75_0.17_350/0.18)] [text-shadow:0_0_8px_oklch(0.75_0.17_350/0.8)]">WILLIAM GIBSON</figcaption>
</figure>
<p aria-hidden="true" class="rounded-full border border-white/12 px-3.5 py-2 font-tbq10-mono text-[11.5px] text-tbq10-mut">4-layer shadow falloff · [text-shadow:…] · hover powers up</p>
</div>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbq10-bg: #06060f;
--color-tbq10-bg: oklch(0.13 0.02 280);
--color-tbq10-wall: #101125;
--color-tbq10-wall: oklch(0.19 0.04 280);
--color-tbq10-panel: #060b16a6;
--color-tbq10-panel: oklch(0.15 0.025 265 / 0.65);
--color-tbq10-ink: #eef7f7;
--color-tbq10-ink: oklch(0.97 0.01 195);
--color-tbq10-cyan: #00ebec;
--color-tbq10-cyan: oklch(0.85 0.15 195);
--color-tbq10-pink: #ff90cc;
--color-tbq10-pink: oklch(0.8 0.16 350);
--color-tbq10-mut: #94a8b6;
--color-tbq10-mut: oklch(0.72 0.03 240);
--font-tbq10-neon: 'Tilt Neon', system-ui, sans-serif;
--font-tbq10-sans: 'Plus Jakarta Sans', system-ui, sans-serif;
--font-tbq10-mono: 'JetBrains Mono', ui-monospace, monospace;
--animate-tbq10-flicker: tbq10-flicker 8s linear infinite;
@keyframes tbq10-flicker {
0%,
41%,
43%,
78%,
80%,
100% {
opacity: 1;
}
42% {
opacity: 0.62;
}
79% {
opacity: 0.74;
}
}
}
/* Root rule: the full-bleed contract, stated in CSS as well as in the markup's utilities, so the
stage is sized before the browser build compiles. */
.tbq-10 {
width: 100%;
min-height: 100svh;
}
```How this works
Real neon has a gradient of light. One shadow looks like a coloured blur; four look like a glowing tube:
shadow-[0_0_6px_oklch(0.8_0.16_195/0.9), /* core */
0_0_18px_oklch(0.75_0.17_195/0.5), /* glow */
0_0_46px_oklch(0.7_0.18_195/0.3), /* bloom */
inset_0_0_14px_oklch(0.8_0.16_195/0.22)] /* cast on the wall */Flicker is opacity only. Two single-frame dips (42%, 79%) break the rhythm enough to feel electrical without being distracting — and motion-reduce:animate-none removes it entirely.
Make it yours
- Colour: swap every
195hue for350(pink) or135(acid green). - No flicker: delete
animate-tbq10-flicker. - Tube text only: remove the box shadows and keep the text-shadow for a sign-without-frame look.
Gotchas — read before shipping
- Large blurred shadows repaint on every animation frame; the flicker animates
opacity, which is compositor-only, so the shadow is never re-rasterised. - Flicker faster than 3 flashes per second can trigger photosensitive seizures (WCAG 2.3.1) — keep dips rare and brief.
- The glow extends ~50px beyond the box; leave room or it clips inside
overflow-hiddenparents.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 16.4+ | 128+ | 111+ |
Multi-layer box/text shadows are universal; the floor is Tailwind v4's sheet.