Neon Nights — a shadcn/ui theme for Tailwind v4
Electric accents on near-black for nightlife, gaming, and launch pages.
Neon Nights is a dark theme with the volume up: saturated magenta and cyan brand roles on a near-black surface, tuned so the accents pass contrast against the background instead of merely glowing. It is built for event pages, game launchers, and anything that wants to feel like a screen in a dark room.
The Tech Dashboard pairing gives it a mono-flavored heading voice over a clean sans body — type that reads as instrumentation. The radius stays modest so panels feel like hardware rather than pills.
The eight color roles
Every shadcn/ui variable in the export derives from these eight. The dark values are not a second theme: they are the light roles with lightness moved, hue and saturation held, and each pair repaired until it meets its WCAG threshold.
| Role | Light | Dark |
|---|---|---|
| primary | #1af2ff | #29f3ff |
| secondary | #ff1a66 | #ff1a66 |
| accent | #b026ff | #b83dff |
| background | #0b0c10 | #111218 |
| surface | #13151c | #1b1e27 |
| text | #f4f4f5 | #f4f4f5 |
| muted | #a1a3ab | #2e2f33 |
| border | #2d2e36 | #5f6272 |
Typography
Plus Jakarta Sans for headings, IBM Plex Mono for body copy and IBM Plex Mono for code, on a 16px base with a 1.2 modular ratio.
Shape and elevation
A 0.375rem base radius derives the --radius-sm/md/lg/xl steps; the base shadow derives the four-step elevation scale.
Extended tokens
Foregrounds, destructive, a five-step chart ramp and the sidebar set are derived from the roles — exactly the variables a Tailwind v4 shadcn/ui project reads.
The exported globals.css
This is the stylesheet the generator downloads for this preset — a Tailwind v4 @theme block that any shadcn/ui project can replace its own app/globals.css with. Open the preset in the generator to change anything, preview it on a full landing page, and add the derived .dark block or the W3C design-tokens export.
/* Neon Nights — Tailwind v4 theme (generated from the styling step) */
@import "tailwindcss";
@theme {
--color-primary: #1af2ff;
--color-secondary: #ff1a66;
--color-accent: #b026ff;
--color-background: #0b0c10;
--color-surface: #13151c;
--color-text: #f4f4f5;
--color-muted: #a1a3ab;
--color-border: #2d2e36;
--color-primary-foreground: #0b0c10;
--color-secondary-foreground: #f4f4f5;
--color-accent-foreground: #f4f4f5;
--color-destructive: oklch(0.577 0.245 27.325);
--color-chart-1: #1af2ff;
--color-chart-2: #ff1a66;
--color-chart-3: #b026ff;
--color-chart-4: #a1a3ab;
--color-chart-5: #2d2e36;
--color-sidebar: #13151c;
--color-sidebar-foreground: #f4f4f5;
--color-sidebar-primary: #1af2ff;
--color-sidebar-primary-foreground: #0b0c10;
--color-sidebar-accent: #b026ff;
--color-sidebar-accent-foreground: #f4f4f5;
--color-sidebar-border: #2d2e36;
--color-sidebar-ring: #1af2ff;
--font-heading: 'Plus Jakarta Sans', 'Segoe UI', sans-serif;
--font-body: 'IBM Plex Mono', Consolas, monospace;
--font-mono: 'IBM Plex Mono', Consolas, monospace;
--radius-sm: calc(0.375rem * 0.5);
--radius-md: 0.375rem;
--radius-lg: calc(0.375rem * 1.5);
--radius-xl: calc(0.375rem * 2);
--text-xs: 0.6875rem;
--text-sm: 0.84375rem;
--text-base: 1rem;
--text-lg: 1.1875rem;
--text-xl: 1.4375rem;
--text-2xl: 1.71875rem;
--text-3xl: 2.0625rem;
--text-4xl: 2.5rem;
--shadow-sm: 0 2.667px 4px rgba(0, 0, 0, 0.2);
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.2);
--shadow-lg: 0 6px 9px rgba(0, 0, 0, 0.2);
--shadow-xl: 0 9px 13.5px rgba(0, 0, 0, 0.2);
--scrollbar-size: 10px;
--scrollbar-radius: 999px;
--scrollbar-track: transparent;
--scrollbar-thumb: #2d2e36;
--scrollbar-thumb-hover: #1af2ff;
--scrollbar-thumb-border: #0b0c10;
--animate-marquee: marquee 25s linear infinite;
}
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@layer base {
:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.dark { color-scheme: dark; }
html {
scrollbar-width: thin;
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
*::-webkit-scrollbar { width: var(--scrollbar-size); height: var(--scrollbar-size); }
*::-webkit-scrollbar-track { background: var(--scrollbar-track); }
*::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb);
border-radius: var(--scrollbar-radius);
border: 2px solid var(--scrollbar-thumb-border);
}
*::-webkit-scrollbar-thumb:hover { background-color: var(--scrollbar-thumb-hover); }
*::-webkit-scrollbar-corner { background: var(--scrollbar-track); }
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
}
/* Generated with Nodlume — https://nodlume.dev/theme-generator/neon-nights */
Make it yours
A preset is a starting point, not a decision. The shadcn/ui theme generator opens this one with every control live — swap the palette, try another of the 67 font pairings, tune the radius — and exports the result. For the thinking behind the roles, read how to build a semantic UI color palette; for how the whole system is generated, read generating custom themes.
Open in the theme generator