feat: stone-warm OKLCH palette + Fraunces/Inter typography

Replace the boilerplate's neutral-gray HSL tokens with a stone-warm
OKLCH palette in both light and dark variants. Drop --radius to 0.25rem
for the clean architectural feel the brief asks for ("clean lines,
matte black accents, layered textures").

Pair Fraunces (display) with Inter (UI/body) via Bunny Fonts, exposed
through Tailwind 4 @theme inline as --font-serif / --font-sans. h1-h3
default to Fraunces; everything else uses Inter. Adds an `eyebrow`
utility for the uppercase tracked labels used across editorial portfolio
layouts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-05-27 11:11:01 +02:00
commit 2d75a40d7d
2 changed files with 73 additions and 43 deletions

View file

@ -4,7 +4,16 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Boilerplate Website</title>
<meta
name="description"
content="Earth Walker Design — grounded, architectural, restorative interior design."
/>
<link rel="preconnect" href="https://fonts.bunny.net" crossorigin />
<link
rel="stylesheet"
href="https://fonts.bunny.net/css?family=fraunces:300,400,500,600|inter:300,400,500,600&display=swap"
/>
<title>Earth Walker Design</title>
</head>
<body>
<div id="app"></div>

View file

@ -4,48 +4,48 @@
@custom-variant dark (&:is(.dark *));
:root {
--background: hsl(0 0% 100%);
--foreground: hsl(0 0% 3.9%);
--card: hsl(0 0% 100%);
--card-foreground: hsl(0 0% 3.9%);
--popover: hsl(0 0% 100%);
--popover-foreground: hsl(0 0% 3.9%);
--primary: hsl(0 0% 9%);
--primary-foreground: hsl(0 0% 98%);
--secondary: hsl(0 0% 96.1%);
--secondary-foreground: hsl(0 0% 9%);
--muted: hsl(0 0% 96.1%);
--muted-foreground: hsl(0 0% 45.1%);
--accent: hsl(0 0% 96.1%);
--accent-foreground: hsl(0 0% 9%);
--destructive: hsl(0 84.2% 60.2%);
--destructive-foreground: hsl(0 0% 98%);
--border: hsl(0 0% 89.8%);
--input: hsl(0 0% 89.8%);
--ring: hsl(0 0% 3.9%);
--radius: 0.5rem;
--background: oklch(0.985 0.005 80);
--foreground: oklch(0.2 0.012 60);
--card: oklch(0.985 0.005 80);
--card-foreground: oklch(0.2 0.012 60);
--popover: oklch(0.985 0.005 80);
--popover-foreground: oklch(0.2 0.012 60);
--primary: oklch(0.18 0.008 60);
--primary-foreground: oklch(0.97 0.008 80);
--secondary: oklch(0.94 0.008 75);
--secondary-foreground: oklch(0.2 0.012 60);
--muted: oklch(0.94 0.008 75);
--muted-foreground: oklch(0.5 0.015 60);
--accent: oklch(0.92 0.018 65);
--accent-foreground: oklch(0.2 0.012 60);
--destructive: oklch(0.55 0.18 25);
--destructive-foreground: oklch(0.97 0.008 80);
--border: oklch(0.88 0.01 70);
--input: oklch(0.88 0.01 70);
--ring: oklch(0.2 0.012 60);
--radius: 0.25rem;
}
.dark {
--background: hsl(0 0% 3.9%);
--foreground: hsl(0 0% 98%);
--card: hsl(0 0% 3.9%);
--card-foreground: hsl(0 0% 98%);
--popover: hsl(0 0% 3.9%);
--popover-foreground: hsl(0 0% 98%);
--primary: hsl(0 0% 98%);
--primary-foreground: hsl(0 0% 9%);
--secondary: hsl(0 0% 14.9%);
--secondary-foreground: hsl(0 0% 98%);
--muted: hsl(0 0% 14.9%);
--muted-foreground: hsl(0 0% 63.9%);
--accent: hsl(0 0% 14.9%);
--accent-foreground: hsl(0 0% 98%);
--destructive: hsl(0 62.8% 30.6%);
--destructive-foreground: hsl(0 0% 98%);
--border: hsl(0 0% 14.9%);
--input: hsl(0 0% 14.9%);
--ring: hsl(0 0% 83.1%);
--background: oklch(0.16 0.008 60);
--foreground: oklch(0.95 0.01 80);
--card: oklch(0.18 0.008 60);
--card-foreground: oklch(0.95 0.01 80);
--popover: oklch(0.18 0.008 60);
--popover-foreground: oklch(0.95 0.01 80);
--primary: oklch(0.95 0.01 80);
--primary-foreground: oklch(0.18 0.008 60);
--secondary: oklch(0.24 0.012 60);
--secondary-foreground: oklch(0.95 0.01 80);
--muted: oklch(0.24 0.012 60);
--muted-foreground: oklch(0.7 0.012 70);
--accent: oklch(0.3 0.022 65);
--accent-foreground: oklch(0.95 0.01 80);
--destructive: oklch(0.45 0.18 25);
--destructive-foreground: oklch(0.95 0.01 80);
--border: oklch(0.28 0.012 60);
--input: oklch(0.28 0.012 60);
--ring: oklch(0.85 0.012 75);
}
@theme inline {
@ -69,15 +69,36 @@
--color-input: var(--input);
--color-ring: var(--ring);
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 1px);
--radius-sm: calc(var(--radius) - 2px);
--font-sans:
'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
'Helvetica Neue', Arial, sans-serif;
--font-serif: 'Fraunces', ui-serif, Georgia, 'Times New Roman', serif;
}
@layer base {
* {
@apply border-border;
}
html {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body {
@apply bg-background text-foreground;
@apply bg-background text-foreground font-sans;
font-feature-settings:
'ss01',
'cv11';
}
h1,
h2,
h3 {
@apply font-serif;
font-feature-settings: 'ss01';
}
}
@utility eyebrow {
@apply text-xs uppercase tracking-[0.18em] text-muted-foreground;
}