Sunset Glow — a shadcn/ui theme for Tailwind v4
Warm coral and amber — a dashboard palette with a readable chart ramp.
Sunset Glow is tagged for dashboards because its brand roles are far enough apart to work as a chart ramp: a coral primary, an amber secondary, and a violet accent that all stay distinguishable in a bar chart and a legend. The neutrals are warm so the data does not sit on clinical gray.
The Startup Vibes pairing — a geometric heading over a clean sans body — keeps the product voice confident. Rounded corners and a soft shadow make KPI cards feel like tiles rather than table cells.
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 | #ff1aa1 | #ff29a7 |
| secondary | #ff1a6b | #ff1a6b |
| accent | #ff4a4a | #ff4a4a |
| background | #2d112c | #1e0b1d |
| surface | #3c173a | #30122e |
| text | #f6f3f6 | #f6f3f6 |
| muted | #b29ab1 | #372a36 |
| border | #523451 | #80517e |
Typography
Poppins for headings, Open Sans for body copy and ui-monospace for code, on a 16px base with a 1.25 modular ratio.
Shape and elevation
A 0.75rem 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.
/* Sunset Glow — Tailwind v4 theme (generated from the styling step) */
@import "tailwindcss";
@theme {
--color-primary: #ff1aa1;
--color-secondary: #ff1a6b;
--color-accent: #ff4a4a;
--color-background: #2d112c;
--color-surface: #3c173a;
--color-text: #f6f3f6;
--color-muted: #b29ab1;
--color-border: #523451;
--color-primary-foreground: #2d112c;
--color-secondary-foreground: #f6f3f6;
--color-accent-foreground: #f6f3f6;
--color-destructive: oklch(0.577 0.245 27.325);
--color-chart-1: #ff1aa1;
--color-chart-2: #ff1a6b;
--color-chart-3: #ff4a4a;
--color-chart-4: #b29ab1;
--color-chart-5: #523451;
--color-sidebar: #3c173a;
--color-sidebar-foreground: #f6f3f6;
--color-sidebar-primary: #ff1aa1;
--color-sidebar-primary-foreground: #2d112c;
--color-sidebar-accent: #ff4a4a;
--color-sidebar-accent-foreground: #f6f3f6;
--color-sidebar-border: #523451;
--color-sidebar-ring: #ff1aa1;
--font-heading: Poppins, 'Century Gothic', sans-serif;
--font-body: 'Open Sans', 'Segoe UI', sans-serif;
--font-mono: ui-monospace, SFMono-Regular, monospace;
--radius-sm: calc(0.75rem * 0.5);
--radius-md: 0.75rem;
--radius-lg: calc(0.75rem * 1.5);
--radius-xl: calc(0.75rem * 2);
--text-xs: 0.625rem;
--text-sm: 0.8125rem;
--text-base: 1rem;
--text-lg: 1.25rem;
--text-xl: 1.5625rem;
--text-2xl: 1.96875rem;
--text-3xl: 2.4375rem;
--text-4xl: 3.0625rem;
--shadow-sm: 0 2.667px 4px -0.667px rgba(0, 0, 0, 0.1), 0 1.333px 2.667px -0.667px rgba(0, 0, 0, 0.06);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
--shadow-lg: 0 6px 9px -1.5px rgba(0, 0, 0, 0.1), 0 3px 6px -1.5px rgba(0, 0, 0, 0.06);
--shadow-xl: 0 9px 13.5px -2.25px rgba(0, 0, 0, 0.1), 0 4.5px 9px -2.25px rgba(0, 0, 0, 0.06);
--scrollbar-size: 10px;
--scrollbar-radius: 999px;
--scrollbar-track: transparent;
--scrollbar-thumb: #523451;
--scrollbar-thumb-hover: #ff1aa1;
--scrollbar-thumb-border: #2d112c;
--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/sunset-glow */
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