Application shell. Component-library tokens in oklch, one brand hue, neutral everything else.
Reach for it when building an application shell on Tailwind and shadcn/ui. Pick the brand hue deliberately, take the rest from the contract.
A family is a set of token names plus structural rules. A variant is one set of values poured into them. Every variant below satisfies this contract, so swapping between them is a palette change, not a rewrite.
The shadcn/ui contract on Tailwind 4, values in oklch. Do not hand-author these: they come with the component library. Listed here so a new app picks the same contract instead of a ninth bespoke one, and so the brand hue is a deliberate choice rather than a default.
Same contract, different values. Click a swatch to copy it.
Warm terracotta on a warm off-white. Every neutral carries a little of the brand hue.
source: https://geepers.ai/
| --radius | 0.875rem |
The neutrals are hue-shifted toward the brand (76, 74, 55 rather than 0), which is why the greys read warm. Copy that trick, not just the primary.
/* Geepers */
:root {
/* colors */
--radius: 0.875rem;
--background: oklch(98.2% .009 76);
--foreground: oklch(23.5% .018 48);
--card: oklch(99.7% .003 78);
--card-foreground: oklch(22% .02 50);
--popover: oklch(100% 0 0);
--popover-foreground: oklch(22% .02 50);
--primary: oklch(58% .176 35);
--primary-foreground: oklch(99% 0 0);
--secondary: oklch(95% .02 240);
--secondary-foreground: oklch(35% .05 240);
--muted: oklch(95.5% .008 76);
--muted-foreground: oklch(49% .016 55);
--accent: oklch(94% .03 60);
--accent-foreground: oklch(30% .03 50);
--destructive: oklch(58% .22 25);
--border: oklch(91% .012 74);
--input: oklch(91% .012 74);
--ring: oklch(58% .176 35);
/* charts */
--chart-1: oklch(65% .18 35);
--chart-2: oklch(60% .15 240);
--chart-3: oklch(70% .12 150);
--chart-4: oklch(75% .1 60);
--chart-5: oklch(55% .2 300);
}
Amber-gold primary on true neutrals. Brighter and flatter than geepers.
source: https://ideatiles.app/
| --radius | 0.75rem |
| --app-font-family | Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif |
| --font-size-multiplier | 1, user-adjustable |
--primary at 85% lightness needs a dark foreground; --primary-foreground is oklch(15% .02 85) for that reason. Do not pair this primary with white text.
/* Idea Tiles */
:root {
/* colors */
--radius: 0.75rem;
--background: oklch(98% 0 0);
--foreground: oklch(15% .01 0);
--card: oklch(100% 0 0);
--popover: oklch(100% 0 0);
--primary: oklch(85% .15 85);
--primary-foreground: oklch(15% .02 85);
--secondary: oklch(96% .005 0);
--secondary-foreground: oklch(35% .01 0);
--muted: oklch(95% .005 0);
--muted-foreground: oklch(50% .01 0);
--accent: oklch(95% .005 0);
--destructive: oklch(55% .25 25);
--border: oklch(90% .005 0);
--input: oklch(90% .005 0);
--ring: oklch(85% .15 85);
/* charts */
--chart-1: oklch(75% .15 200);
--chart-2: oklch(70% .18 350);
--chart-3: oklch(65% .15 280);
--chart-4: oklch(80% .12 85);
--chart-5: oklch(60% .2 25);
/* structure */
--font-size-multiplier: 1, user-adjustable;
/* typography */
--app-font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
Generated from
themes/tokens.json v2.0.0 by
build-themes.py. Values were read from the live surfaces
on 2026-09-09. Edit the tokens, not this page.