shadcn/ui theme · light original
Forest Floor
Mossy greens and bark browns over a paper base — organic, grounded, and easy on the eyes.
Install
npx shadcn@latest add https://csscreme.com/r/forest-floor.json Requires a project with shadcn/ui set up. Prefer to paste? The CSS variables are below.
Revenue
Last 30 days across all workspaces.
Total
$48,210+12.4%Active
1,204+3.1%Churn
0.8%-0.2%:root {
--background: oklch(96.4% 0.010 93.6);
--foreground: oklch(27.2% 0.020 132.9);
--card: oklch(100.0% 0.000 89.9);
--card-foreground: oklch(27.2% 0.020 132.9);
--popover: oklch(100.0% 0.000 89.9);
--popover-foreground: oklch(27.2% 0.020 132.9);
--primary: oklch(48.7% 0.070 152.5);
--primary-foreground: oklch(100.0% 0.000 89.9);
--secondary: oklch(98.8% 0.004 91.4);
--secondary-foreground: oklch(27.2% 0.020 132.9);
--muted: oklch(98.8% 0.004 91.4);
--muted-foreground: oklch(55.2% 0.023 128.9);
--accent: oklch(63.3% 0.100 82.4);
--accent-foreground: oklch(15.2% 0.009 285.3);
--destructive: oklch(62.6% 0.193 23.0);
--destructive-foreground: oklch(15.2% 0.009 285.3);
--border: oklch(82.6% 0.014 111.3);
--input: oklch(82.6% 0.014 111.3);
--ring: oklch(48.7% 0.070 152.5);
--radius: 12px;
}
.dark {
--background: oklch(19.1% 0.006 91.7);
--foreground: oklch(96.6% 0.002 145.6);
--card: oklch(25.2% 0.000 89.9);
--card-foreground: oklch(96.6% 0.002 145.6);
--popover: oklch(25.2% 0.000 89.9);
--popover-foreground: oklch(96.6% 0.002 145.6);
--primary: oklch(48.7% 0.070 152.5);
--primary-foreground: oklch(100.0% 0.000 89.9);
--secondary: oklch(23.0% 0.002 106.5);
--secondary-foreground: oklch(96.6% 0.002 145.6);
--muted: oklch(23.0% 0.002 106.5);
--muted-foreground: oklch(71.1% 0.004 121.6);
--accent: oklch(63.3% 0.100 82.4);
--accent-foreground: oklch(15.2% 0.009 285.3);
--destructive: oklch(62.6% 0.193 23.0);
--destructive-foreground: oklch(15.2% 0.009 285.3);
--border: oklch(35.5% 0.005 106.7);
--input: oklch(35.5% 0.005 106.7);
--ring: oklch(48.7% 0.070 152.5);
} @theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--radius: var(--radius);
} Colors are OKLCH. Contrast is checked in both modes: foreground on background, on cards, and button labels on the primary fill.
Where this came from
Themes here aren't randomised swatches — they start life as a palette in our design layer, studied against real interfaces. See the Forest Floor palette for the full role breakdown, font pairing and spacing scale, or browse the showcase and breakdowns the palettes are drawn from.
Font pairing Fraunces headings · Inter body · Radius 12px