Pure TailwindMIT licensed

Thick Vertical Accent Rail Tailwind Blockquote

A 14px gradient rail in its own grid column, carrying vertical label text ([writing-mode:vertical-rl] rotate-180), beside a large quote with a gradient-clipped author name. The port makes the rail draw in on load with starting:scale-y-0 and fixes the rail label, which was near-invisible dark text on the orange-to-magenta gradient.

Live Demo
Plain CSSTailwind v4
Try it

Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time

Untitled UI React · Affiliate link

Get Untitled UI Pro

The code

<section class="tbq-13 w-full min-h-svh grid place-items-center bg-linear-200 from-tbq13-top to-tbq13-bg to-60% px-5 py-14 font-tbq13-sans text-tbq13-ink" aria-label="Thick vertical accent rail blockquote demo">
  <div class="grid w-full justify-items-center gap-9">
    <figure class="grid w-full max-w-[620px] grid-cols-[14px_1fr] gap-6.5">
      <div aria-hidden="true" class="grid origin-top place-items-end justify-center bg-linear-to-b from-tbq13-a via-tbq13-b via-55% to-tbq13-c py-3.5 transition-transform duration-700 ease-[cubic-bezier(0.2,0.7,0.2,1)] starting:scale-y-0 motion-reduce:transition-none"><span class="rotate-180 font-tbq13-mono text-[10px] font-bold tracking-[0.22em] whitespace-nowrap text-tbq13-railink [writing-mode:vertical-rl]">FIELD NOTES — VOL 7</span></div>
      <div class="transition-opacity delay-300 duration-700 starting:opacity-0 motion-reduce:transition-none">
        <blockquote>
          <p class="text-[clamp(21px,2.9vw,30px)] leading-[1.38] font-semibold tracking-[-0.02em] text-pretty">We didn't set out to build infrastructure. We set out to answer one support ticket properly, and infrastructure is what answering it properly turned out to require.</p>
        </blockquote>
        <figcaption class="mt-5 text-sm text-tbq13-mut"><strong class="bg-linear-to-r from-tbq13-a to-tbq13-b bg-clip-text font-semibold text-transparent">Yusuf Adeyemi</strong> · Founding Engineer, Cachet</figcaption>
      </div>
    </figure>
    <p aria-hidden="true" class="rounded-full border border-white/14 px-3.5 py-2 font-tbq13-mono text-[11.5px] text-tbq13-mut">grid-cols-[14px_1fr] · [writing-mode:vertical-rl] · starting:scale-y-0</p>
  </div>
</section>
@import "tailwindcss";

@theme {
  --color-tbq13-bg: #12161d;
  --color-tbq13-bg: oklch(0.2 0.015 260);
  --color-tbq13-top: #1b1f29;
  --color-tbq13-top: oklch(0.24 0.02 270);
  --color-tbq13-ink: #eef2f7;
  --color-tbq13-ink: oklch(0.96 0.008 250);
  --color-tbq13-mut: #a9b2be;
  --color-tbq13-mut: oklch(0.76 0.02 255);
  --color-tbq13-a: #e7b643;
  --color-tbq13-a: oklch(0.8 0.14 85);
  --color-tbq13-b: #f35c49;
  --color-tbq13-b: oklch(0.67 0.19 30);
  --color-tbq13-c: #be47b8;
  --color-tbq13-c: oklch(0.6 0.2 330);
  --color-tbq13-railink: #050911;
  --color-tbq13-railink: oklch(0.14 0.02 260);
  --font-tbq13-sans: 'Geist', system-ui, sans-serif;
  --font-tbq13-mono: 'Geist Mono', ui-monospace, monospace;
}
/* 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-13 {
  width: 100%;
  min-height: 100svh;
}

Setup — do this once per project

Skip this if your project already runs Tailwind v4.

1Load Tailwind
<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.

2Add the stylesheetRequiredthe @theme block is what makes the custom utilities exist
@import "tailwindcss";

@theme {
  --color-tbq13-bg: #12161d;
  --color-tbq13-bg: oklch(0.2 0.015 260);
  --color-tbq13-top: #1b1f29;
  --color-tbq13-top: oklch(0.24 0.02 270);
  --color-tbq13-ink: #eef2f7;
  --color-tbq13-ink: oklch(0.96 0.008 250);
  --color-tbq13-mut: #a9b2be;
  --color-tbq13-mut: oklch(0.76 0.02 255);
  --color-tbq13-a: #e7b643;
  --color-tbq13-a: oklch(0.8 0.14 85);
  --color-tbq13-b: #f35c49;
  --color-tbq13-b: oklch(0.67 0.19 30);
  --color-tbq13-c: #be47b8;
  --color-tbq13-c: oklch(0.6 0.2 330);
  --color-tbq13-railink: #050911;
  --color-tbq13-railink: oklch(0.14 0.02 260);
  --font-tbq13-sans: 'Geist', system-ui, sans-serif;
  --font-tbq13-mono: 'Geist Mono', ui-monospace, monospace;
}
/* 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-13 {
  width: 100%;
  min-height: 100svh;
}
3Fonts used by this demooptional — skip if you have your own type stack
<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=Geist:wght@400..800&family=Geist+Mono:wght@400..600&display=swap">

What changed in the port

Which parts became utilities, which stayed CSS, and why.

  • writing-mode has no Tailwind utility and became [writing-mode:vertical-rl]; the original's rotate:180deg is the rotate-180 utility.
  • The gradient name used four declarations (including -webkit-text-fill-color) in CSS; bg-clip-text text-transparent covers them.
  • UI upgrade from the CSS original: the rail label used 85%-alpha dark ink, which dropped below 3:1 where the rail turns magenta; it's now solid oklch(0.14), above 4.5:1 along the whole gradient.
  • UI upgrade: the rail draws down on load (starting:scale-y-0, 700ms) and the quote fades in after it, so the eye travels rail → quote → name. Muted copy raised 0.66 → 0.76.
Paste this into ChatGPT, Claude, Cursor, or any coding assistant. The block below is pre-framed with everything the AI needs to integrate this demo into your project — markup, styles, scoping notes, and the source URL. Hit Copy and paste straight into your chat.
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: Thick Vertical Accent Rail Tailwind Blockquote
Source: https://codefronts.com/snippets/tailwind-css-blockquotes/thick-vertical-accent-rail-tailwind-blockquote/

A 14px gradient rail in its own grid column, carrying vertical label text ([writing-mode:vertical-rl] rotate-180), beside a large quote with a gradient-clipped author name. The port makes the rail draw in on load with starting:scale-y-0 and fixes the rail label, which was near-invisible dark text on the orange-to-magenta gradient.
## HTML
```html
<section class="tbq-13 w-full min-h-svh grid place-items-center bg-linear-200 from-tbq13-top to-tbq13-bg to-60% px-5 py-14 font-tbq13-sans text-tbq13-ink" aria-label="Thick vertical accent rail blockquote demo">
  <div class="grid w-full justify-items-center gap-9">
    <figure class="grid w-full max-w-[620px] grid-cols-[14px_1fr] gap-6.5">
      <div aria-hidden="true" class="grid origin-top place-items-end justify-center bg-linear-to-b from-tbq13-a via-tbq13-b via-55% to-tbq13-c py-3.5 transition-transform duration-700 ease-[cubic-bezier(0.2,0.7,0.2,1)] starting:scale-y-0 motion-reduce:transition-none"><span class="rotate-180 font-tbq13-mono text-[10px] font-bold tracking-[0.22em] whitespace-nowrap text-tbq13-railink [writing-mode:vertical-rl]">FIELD NOTES — VOL 7</span></div>
      <div class="transition-opacity delay-300 duration-700 starting:opacity-0 motion-reduce:transition-none">
        <blockquote>
          <p class="text-[clamp(21px,2.9vw,30px)] leading-[1.38] font-semibold tracking-[-0.02em] text-pretty">We didn't set out to build infrastructure. We set out to answer one support ticket properly, and infrastructure is what answering it properly turned out to require.</p>
        </blockquote>
        <figcaption class="mt-5 text-sm text-tbq13-mut"><strong class="bg-linear-to-r from-tbq13-a to-tbq13-b bg-clip-text font-semibold text-transparent">Yusuf Adeyemi</strong> · Founding Engineer, Cachet</figcaption>
      </div>
    </figure>
    <p aria-hidden="true" class="rounded-full border border-white/14 px-3.5 py-2 font-tbq13-mono text-[11.5px] text-tbq13-mut">grid-cols-[14px_1fr] · [writing-mode:vertical-rl] · starting:scale-y-0</p>
  </div>
</section>
```
## CSS
```css
@import "tailwindcss";

@theme {
  --color-tbq13-bg: #12161d;
  --color-tbq13-bg: oklch(0.2 0.015 260);
  --color-tbq13-top: #1b1f29;
  --color-tbq13-top: oklch(0.24 0.02 270);
  --color-tbq13-ink: #eef2f7;
  --color-tbq13-ink: oklch(0.96 0.008 250);
  --color-tbq13-mut: #a9b2be;
  --color-tbq13-mut: oklch(0.76 0.02 255);
  --color-tbq13-a: #e7b643;
  --color-tbq13-a: oklch(0.8 0.14 85);
  --color-tbq13-b: #f35c49;
  --color-tbq13-b: oklch(0.67 0.19 30);
  --color-tbq13-c: #be47b8;
  --color-tbq13-c: oklch(0.6 0.2 330);
  --color-tbq13-railink: #050911;
  --color-tbq13-railink: oklch(0.14 0.02 260);
  --font-tbq13-sans: 'Geist', system-ui, sans-serif;
  --font-tbq13-mono: 'Geist Mono', ui-monospace, monospace;
}
/* 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-13 {
  width: 100%;
  min-height: 100svh;
}
```

How this works

A rail, not a border. border-image can paint a gradient but can't hold text. A 14px grid track can:

<figure class="grid grid-cols-[14px_1fr] gap-6.5">
  <div class="bg-linear-to-b from-tbq13-a via-tbq13-b to-tbq13-c
    origin-top starting:scale-y-0 transition-transform duration-700">
    <span class="rotate-180 [writing-mode:vertical-rl]">FIELD NOTES — VOL 7</span>

Why rotate after vertical-rl? vertical-rl reads top-to-bottom; the 180° turn makes it read bottom-to-top like a book spine on a shelf.

Make it yours

  • Thinner rail without the label: grid-cols-[6px_1fr] and delete the span.
  • Horizontal variant: swap to grid-rows-[6px_auto] and bg-linear-to-r.
  • Match the brand: change the three --color-tbq13-a/b/c stops.

Gotchas — read before shipping

  • The rail stretches to the quote's height only because grid items default to align-self: stretch — don't add items-center to the figure.
  • Long labels overflow a short quote; keep the text under ~24 characters or allow it to clip.
  • bg-clip-text text-transparent on the name needs a solid colour fallback in Windows High Contrast; add forced-colors:text-[CanvasText] if you support it.

Browser support

ChromeSafariFirefoxEdge
111+16.4+128+111+

writing-mode is universal; the starting: draw-in is progressive (Chrome 117 / Safari 17.5 / Firefox 129).

Techniques used in this demo

Search CodeFronts

Loading…