Rustic Modern is a design aesthetic that harmonizes the warmth and character of traditional rustic craftsmanship with the clean lines and restrained geometry of contemporary modernism. At its core, the style is defined by the juxtaposition of raw, natural materials – reclaimed wood, exposed brick, rough-hewn stone, hand-forged iron – against sleek, minimal forms: flat planes, open floor plans, and deliberate negative space. The result is a visual language that feels simultaneously grounded and refined, aged and current, tactile and composed.
The aesthetic emerged from the broader farmhouse and industrial revival movements of the 2010s, but distinguishes itself through restraint. Where pure rustic design can lean toward clutter and nostalgia, and pure modernism can feel sterile and cold, Rustic Modern occupies the tension between the two. Every weathered beam is set against a clean white wall. Every steel bracket is hand-finished. Every imperfect grain pattern is framed by precise geometry. The interplay of textures – rough woods juxtaposed with sleek metals, soft leathers against coarse fabrics, matte stone beside polished concrete – creates depth and visual interest without relying on ornament.
In web and UI design, Rustic Modern translates into warm, earthy color palettes drawn from natural materials (walnut, clay, sandstone, charcoal, iron), combined with generous whitespace, strong typographic hierarchy, and subtle texture overlays that reference wood grain, linen weave, and raw concrete. Typography pairs sturdy, characterful serif or slab-serif headings with clean, humanist sans-serif body text – legible and modern, but never cold. Layouts are open and grid-based, with cards and containers that suggest the honest construction of a well-built cabinet: visible structure, functional beauty, no decorative excess. Photography and imagery lean toward muted, desaturated tones with warm light, capturing the feeling of morning sun on a barn door or the patina of a hand-worn leather surface.
The philosophy behind Rustic Modern is material honesty. Surfaces look like what they are. Wood is wood, not a glossy veneer. Metal is brushed and raw, not chrome-polished to a mirror shine. This extends to digital design: avoid excessive gradients, artificial gloss, or hyperreal effects. Let the warmth come from color, texture, and spacing. Let the modernity come from structure, restraint, and clarity. The best Rustic Modern designs feel like a well-renovated farmhouse – every original imperfection preserved with intention, every modern intervention seamlessly integrated.
The Rustic Modern palette draws directly from its material vocabulary: warm browns from walnut, oak, and reclaimed timber; deep reds and oranges from exposed brick and terracotta; cool grays from brushed steel, concrete, and river stone; and muted greens from weathered copper, moss, and natural foliage. The palette is earthy, desaturated, and layered – never bright or synthetic. Pure black and pure white are avoided in favor of charcoal and warm cream, keeping the overall tone organic and inviting.
| Swatch | Hex | Role/Usage |
|---|---|---|
| Reclaimed Walnut | #5C4033 |
Primary dark accent, headings, deep containers |
| Barn Wood | #8B6F4E |
Secondary warm brown, card accents, borders |
| Weathered Oak | #A68B6B |
Mid-tone warm neutral, interactive elements |
| Sandstone | #C4A882 |
Surface backgrounds, card fills, warm panels |
| Raw Linen | #E8DCC8 |
Light backgrounds, content areas |
| Warm Cream | #F5EDE0 |
Page backgrounds, primary surface color |
| Exposed Brick | #9E5A42 |
Accent color, call-to-action, emphasis |
| Fired Clay | #B87353 |
Secondary accent, hover states, warm highlights |
| Brushed Steel | #6B7B86 |
Cool accent, metallic UI elements, icons |
| Iron Gray | #4A5259 |
Cool dark tone, navigation, structural borders |
| Patina Green | #6B7F5E |
Tertiary accent, success states, organic touches |
| Aged Copper | #7A8E6D |
Secondary green, subtle highlights |
| Raw Concrete | #B0A99F |
Neutral mid-tone, disabled states, subtle borders |
| Poured Cement | #D5CEC4 |
Light neutral, dividers, secondary surfaces |
| Deep Charcoal | #2C2A28 |
Primary text, near-black for maximum readability |
:root {
/* Warm woods */
--rustic-walnut: #5C4033;
--rustic-barn-wood: #8B6F4E;
--rustic-oak: #A68B6B;
--rustic-sandstone: #C4A882;
/* Light neutrals */
--rustic-linen: #E8DCC8;
--rustic-cream: #F5EDE0;
--rustic-parchment: #FAF6F0;
/* Brick and clay */
--rustic-brick: #9E5A42;
--rustic-clay: #B87353;
--rustic-terracotta: #C67B5C;
/* Steel and iron */
--rustic-steel: #6B7B86;
--rustic-iron: #4A5259;
--rustic-iron-dark: #363D42;
/* Greens */
--rustic-patina: #6B7F5E;
--rustic-copper: #7A8E6D;
/* Concrete and stone */
--rustic-concrete: #B0A99F;
--rustic-cement: #D5CEC4;
--rustic-stone: #9A9590;
/* Text */
--rustic-text: #2C2A28;
--rustic-text-light: #6B6560;
--rustic-text-muted: #8A847E;
/* Functional mappings */
--rustic-bg-primary: var(--rustic-cream);
--rustic-bg-secondary: var(--rustic-linen);
--rustic-bg-dark: var(--rustic-walnut);
--rustic-bg-card: var(--rustic-parchment);
--rustic-accent: var(--rustic-brick);
--rustic-accent-secondary: var(--rustic-clay);
--rustic-border: var(--rustic-cement);
--rustic-border-strong: var(--rustic-sandstone);
--rustic-heading: var(--rustic-walnut);
}
Rustic Modern typography pairs the warmth and character of serif or slab-serif headings with the clarity and readability of clean, humanist sans-serif body text. Heading fonts should feel sturdy and grounded – like a hand-painted sign on a barn or the engraving on a cast-iron tool – without being overly decorative. Body fonts should be warm, open, and highly legible, with generous x-heights and comfortable letter spacing. The overall typographic rhythm is unhurried, spacious, and confident.
| Font | Weight(s) | Style | Usage |
|---|---|---|---|
| Playfair Display | 400, 700, 900 | High-contrast transitional serif | Hero headlines, editorial display |
| Lora | 400, 500, 600, 700 | Warm calligraphic serif | Headlines, subheadings, pull quotes |
| Merriweather | 300, 400, 700 | Sturdy, readable slab-influenced serif | Headlines, long-form headings |
| Roboto Slab | 300, 400, 500, 700 | Geometric slab serif | Display headings, bold accents |
| Source Sans 3 | 300, 400, 600 | Clean humanist sans-serif | Body text, UI elements |
| Work Sans | 300, 400, 500, 600 | Warm geometric sans-serif | Body text, navigation, labels |
| Inter | 300, 400, 500 | Neutral, highly legible sans | Body text, small text, captions |
| Cabin | 400, 500, 600, 700 | Warm humanist sans-serif | Buttons, navigation, UI elements |
| Heading | Body | Mood |
|---|---|---|
| Playfair Display 700 | Source Sans 3 400 | Refined editorial, modern warmth |
| Lora 600 | Work Sans 400 | Organic warmth, approachable craft |
| Merriweather 700 | Inter 400 | Sturdy and grounded, maximum readability |
| Roboto Slab 500 | Cabin 400 | Bold structural headings, friendly body |
| Lora 500 Italic | Source Sans 3 300 | Gentle, artisanal, contemplative |
@import url('https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Source+Sans+3:wght@300;400;600&family=Cabin:wght@400;500;600;700&display=swap');
body {
font-family: 'Source Sans 3', 'Cabin', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
letter-spacing: 0.01em;
color: var(--rustic-text);
-webkit-font-smoothing: antialiased;
}
h1, h2, h3 {
font-family: 'Lora', Georgia, serif;
font-weight: 600;
line-height: 1.25;
color: var(--rustic-heading);
letter-spacing: 0.01em;
}
h1 {
font-size: clamp(2.25rem, 5vw, 4rem);
font-weight: 700;
letter-spacing: -0.01em;
}
h2 {
font-size: clamp(1.5rem, 3vw, 2.25rem);
}
h3 {
font-size: clamp(1.125rem, 2vw, 1.5rem);
}
/* Rustic label -- small caps, wide tracking */
.rustic-label {
font-family: 'Cabin', 'Source Sans 3', sans-serif;
font-size: 0.72rem;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--rustic-text-muted);
}
/* Display text with hand-crafted character */
.rustic-display {
font-family: 'Lora', Georgia, serif;
font-size: clamp(2.5rem, 6vw, 5rem);
font-weight: 700;
line-height: 1.1;
color: var(--rustic-walnut);
}
.rustic-card {
background: var(--rustic-parchment);
border: 1px solid var(--rustic-cement);
border-radius: 4px;
padding: 2rem;
position: relative;
box-shadow:
0 2px 4px rgba(44, 42, 40, 0.06),
0 4px 12px rgba(44, 42, 40, 0.04);
transition: box-shadow 0.3s ease, transform 0.3s ease;
}
/* Subtle wood-grain top accent */
.rustic-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(
90deg,
var(--rustic-barn-wood),
var(--rustic-oak),
var(--rustic-barn-wood)
);
border-radius: 4px 4px 0 0;
}
.rustic-card:hover {
box-shadow:
0 4px 8px rgba(44, 42, 40, 0.08),
0 8px 24px rgba(44, 42, 40, 0.06);
transform: translateY(-2px);
}
/* Card variant with steel-frame left accent */
.rustic-card--steel {
border-left: 3px solid var(--rustic-iron);
border-radius: 0 4px 4px 0;
}
.rustic-card--steel::before {
display: none;
}
/* Primary button -- warm, solid, grounded */
.rustic-btn {
display: inline-block;
font-family: 'Cabin', 'Source Sans 3', sans-serif;
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
text-decoration: none;
padding: 0.8rem 2rem;
border: none;
border-radius: 3px;
cursor: pointer;
transition: all 0.25s ease;
}
.rustic-btn--primary {
background: var(--rustic-brick);
color: var(--rustic-cream);
box-shadow: 0 2px 6px rgba(158, 90, 66, 0.25);
}
.rustic-btn--primary:hover {
background: var(--rustic-walnut);
box-shadow: 0 4px 12px rgba(92, 64, 51, 0.3);
transform: translateY(-1px);
}
/* Secondary button -- steel outline */
.rustic-btn--secondary {
background: transparent;
color: var(--rustic-iron);
border: 2px solid var(--rustic-iron);
}
.rustic-btn--secondary:hover {
background: var(--rustic-iron);
color: var(--rustic-cream);
}
/* Tertiary button -- warm understated */
.rustic-btn--tertiary {
background: var(--rustic-linen);
color: var(--rustic-walnut);
border: 1px solid var(--rustic-sandstone);
}
.rustic-btn--tertiary:hover {
background: var(--rustic-sandstone);
color: var(--rustic-walnut);
}
.rustic-nav {
background: var(--rustic-walnut);
padding: 1rem 2rem;
display: flex;
align-items: center;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 100;
border-bottom: 3px solid var(--rustic-iron);
}
.rustic-nav__brand {
font-family: 'Lora', Georgia, serif;
font-size: 1.25rem;
font-weight: 700;
color: var(--rustic-cream);
text-decoration: none;
letter-spacing: 0.02em;
}
.rustic-nav__links {
display: flex;
align-items: center;
gap: 2rem;
list-style: none;
margin: 0;
padding: 0;
}
.rustic-nav__links a {
color: var(--rustic-linen);
font-family: 'Cabin', sans-serif;
font-size: 0.8rem;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
text-decoration: none;
transition: color 0.25s ease;
position: relative;
}
.rustic-nav__links a::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 2px;
background: var(--rustic-clay);
transition: width 0.25s ease;
}
.rustic-nav__links a:hover {
color: var(--rustic-sandstone);
}
.rustic-nav__links a:hover::after {
width: 100%;
}
.rustic-hero {
position: relative;
padding: 8rem 2rem 6rem;
text-align: center;
background: var(--rustic-linen);
overflow: hidden;
}
/* Subtle wood-grain texture overlay */
.rustic-hero::before {
content: '';
position: absolute;
inset: 0;
opacity: 0.03;
background-image:
repeating-linear-gradient(
90deg,
transparent,
transparent 2px,
rgba(92, 64, 51, 0.3) 2px,
rgba(92, 64, 51, 0.3) 3px
),
repeating-linear-gradient(
0deg,
transparent,
rgba(139, 111, 78, 0.15) 60px,
transparent 120px
);
pointer-events: none;
}
/* Warm gradient wash */
.rustic-hero::after {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(
ellipse at 50% 80%,
rgba(196, 168, 130, 0.15) 0%,
transparent 60%
);
pointer-events: none;
}
.rustic-hero h1 {
font-family: 'Lora', Georgia, serif;
font-size: clamp(2.5rem, 6vw, 5rem);
font-weight: 700;
color: var(--rustic-walnut);
position: relative;
z-index: 1;
line-height: 1.1;
}
.rustic-hero p {
font-family: 'Source Sans 3', sans-serif;
font-size: 1.15rem;
color: var(--rustic-text-light);
max-width: 600px;
margin: 1.5rem auto 2rem;
position: relative;
z-index: 1;
}
/* Subtle wood grain applied to any surface */
.rustic-wood-texture {
position: relative;
}
.rustic-wood-texture::after {
content: '';
position: absolute;
inset: 0;
opacity: 0.035;
background-image:
repeating-linear-gradient(
85deg,
transparent,
transparent 1px,
rgba(92, 64, 51, 0.4) 1px,
rgba(92, 64, 51, 0.4) 2px
),
repeating-linear-gradient(
0deg,
transparent,
rgba(139, 111, 78, 0.12) 50px,
transparent 100px
);
pointer-events: none;
}
/* Brick-pattern background using SVG */
.rustic-brick-bg {
background-color: var(--rustic-walnut);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='42' height='22'%3E%3Crect width='42' height='22' fill='%235C4033'/%3E%3Crect x='1' y='1' width='18' height='9' rx='1' fill='%23704D3A' opacity='0.5'/%3E%3Crect x='22' y='1' width='18' height='9' rx='1' fill='%23654536' opacity='0.45'/%3E%3Crect x='11' y='12' width='18' height='9' rx='1' fill='%236B4A38' opacity='0.48'/%3E%3Crect x='32' y='12' width='9' height='9' rx='1' fill='%23704D3A' opacity='0.42'/%3E%3Crect x='0' y='12' width='8' height='9' rx='1' fill='%23654536' opacity='0.44'/%3E%3C/svg%3E");
background-size: 42px 22px;
}
/* Steel-beam horizontal divider */
.rustic-divider {
border: none;
height: 2px;
background: linear-gradient(
90deg,
transparent 0%,
var(--rustic-iron) 15%,
var(--rustic-steel) 50%,
var(--rustic-iron) 85%,
transparent 100%
);
margin: 4rem auto;
max-width: 60%;
}
/* Rivet-accented divider */
.rustic-divider--rivets {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
margin: 3rem auto;
max-width: 300px;
}
.rustic-divider--rivets::before,
.rustic-divider--rivets::after {
content: '';
flex: 1;
height: 2px;
background: var(--rustic-iron);
}
.rustic-divider--rivets span {
width: 8px;
height: 8px;
background: radial-gradient(
circle at 35% 35%,
var(--rustic-steel),
var(--rustic-iron)
);
border-radius: 50%;
box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.15);
}
:root {
--rustic-walnut: #5C4033;
--rustic-barn-wood: #8B6F4E;
--rustic-oak: #A68B6B;
--rustic-sandstone: #C4A882;
--rustic-linen: #E8DCC8;
--rustic-cream: #F5EDE0;
--rustic-parchment: #FAF6F0;
--rustic-brick: #9E5A42;
--rustic-clay: #B87353;
--rustic-steel: #6B7B86;
--rustic-iron: #4A5259;
--rustic-patina: #6B7F5E;
--rustic-concrete: #B0A99F;
--rustic-cement: #D5CEC4;
--rustic-text: #2C2A28;
--rustic-text-light: #6B6560;
--rustic-text-muted: #8A847E;
--rustic-border: var(--rustic-cement);
--rustic-radius: 4px;
}
* {
box-sizing: border-box;
}
body {
font-family: 'Source Sans 3', 'Inter', sans-serif;
background-color: var(--rustic-cream);
color: var(--rustic-text);
line-height: 1.75;
margin: 0;
-webkit-font-smoothing: antialiased;
}
h1, h2, h3 {
font-family: 'Lora', Georgia, serif;
font-weight: 600;
line-height: 1.25;
color: var(--rustic-walnut);
}
h1 { font-size: clamp(2.25rem, 5vw, 4rem); font-weight: 700; }
h2 { font-size: clamp(1.5rem, 3vw, 2.25rem); }
h3 { font-size: clamp(1.125rem, 2vw, 1.5rem); }
p {
max-width: 40em;
margin-bottom: 1.5em;
}
a {
color: var(--rustic-brick);
text-decoration: underline;
text-decoration-color: var(--rustic-cement);
text-underline-offset: 3px;
transition: color 0.2s ease, text-decoration-color 0.2s ease;
}
a:hover {
color: var(--rustic-walnut);
text-decoration-color: var(--rustic-walnut);
}
.container {
max-width: 1100px;
margin: 0 auto;
padding: 0 2rem;
}
section {
padding: 5rem 0;
}
| Aesthetic | Relationship to Rustic Modern |
|---|---|
| Earth Tones | Shares the warm, brown-dominant color palette and natural material references; Earth Tones is more retro-1970s in character while Rustic Modern is contemporary |
| Industrial Gothic | Shares exposed steel, iron, and raw construction elements; Industrial Gothic is darker, grittier, and more urban while Rustic Modern adds warmth through wood and brick |
| Japandi | Both value material honesty, restraint, and craft; Japandi is lighter, more minimal, and influenced by Japanese aesthetics while Rustic Modern is warmer and more textured |
| Craftcore | Shares the celebration of handmade quality and visible construction; Craftcore is more colorful, pattern-heavy, and folk-art influenced |
| Cottagecore | Both reference rural, pastoral materials; Cottagecore is softer, more romantic, and more decorative while Rustic Modern maintains modern restraint |
| Hygge | Shares the emphasis on warmth, comfort, and natural materials; Hygge is cozier and more textile-focused while Rustic Modern is more structured and architectural |
| Arts and Crafts | Shares the philosophy of material honesty and visible craftsmanship; Arts and Crafts is more ornamental and pattern-rich while Rustic Modern is cleaner |
| Minimalism | Shares the clean lines, generous whitespace, and structural clarity; Minimalism is cooler and more austere while Rustic Modern adds warmth through material textures |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rustic Modern</title>
<link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Source+Sans+3:wght@300;400;600&family=Cabin:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root {
/* Warm woods */
--rustic-walnut: #5C4033;
--rustic-barn-wood: #8B6F4E;
--rustic-oak: #A68B6B;
--rustic-sandstone: #C4A882;
/* Light neutrals */
--rustic-linen: #E8DCC8;
--rustic-cream: #F5EDE0;
--rustic-parchment: #FAF6F0;
/* Brick and clay */
--rustic-brick: #9E5A42;
--rustic-clay: #B87353;
--rustic-terracotta: #C67B5C;
/* Steel and iron */
--rustic-steel: #6B7B86;
--rustic-iron: #4A5259;
/* Greens */
--rustic-patina: #6B7F5E;
--rustic-copper: #7A8E6D;
/* Concrete and stone */
--rustic-concrete: #B0A99F;
--rustic-cement: #D5CEC4;
/* Text */
--rustic-text: #2C2A28;
--rustic-text-light: #6B6560;
--rustic-text-muted: #8A847E;
}
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: var(--rustic-cream);
color: var(--rustic-text);
font-family: 'Source Sans 3', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
letter-spacing: 0.01em;
-webkit-font-smoothing: antialiased;
}
h1, h2, h3 {
font-family: 'Lora', Georgia, serif;
font-weight: 600;
line-height: 1.25;
color: var(--rustic-walnut);
}
/* ===================== */
/* NAVIGATION */
/* ===================== */
nav {
background: var(--rustic-walnut);
border-bottom: 3px solid var(--rustic-iron);
padding: 0 2rem;
display: flex;
align-items: center;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 100;
height: 60px;
}
.nav-brand {
font-family: 'Lora', Georgia, serif;
font-size: 1.2rem;
font-weight: 700;
color: var(--rustic-cream);
text-decoration: none;
}
.nav-links {
display: flex;
align-items: center;
gap: 2rem;
list-style: none;
}
.nav-links a {
color: var(--rustic-linen);
font-family: 'Cabin', sans-serif;
font-size: 0.78rem;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
text-decoration: none;
position: relative;
transition: color 0.25s ease;
}
.nav-links a::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 2px;
background: var(--rustic-clay);
transition: width 0.25s ease;
}
.nav-links a:hover {
color: var(--rustic-sandstone);
}
.nav-links a:hover::after {
width: 100%;
}
/* ===================== */
/* HERO SECTION */
/* ===================== */
.hero {
position: relative;
padding: 7rem 2rem 5rem;
text-align: center;
background: var(--rustic-linen);
overflow: hidden;
}
/* Subtle wood grain texture */
.hero::before {
content: '';
position: absolute;
inset: 0;
opacity: 0.03;
background-image:
repeating-linear-gradient(
90deg,
transparent,
transparent 2px,
rgba(92, 64, 51, 0.3) 2px,
rgba(92, 64, 51, 0.3) 3px
),
repeating-linear-gradient(
0deg,
transparent,
rgba(139, 111, 78, 0.15) 60px,
transparent 120px
);
pointer-events: none;
}
/* Warm radial glow */
.hero::after {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(
ellipse at 50% 80%,
rgba(196, 168, 130, 0.15) 0%,
transparent 60%
);
pointer-events: none;
}
.hero .label {
font-family: 'Cabin', sans-serif;
font-size: 0.72rem;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--rustic-text-muted);
position: relative;
z-index: 1;
margin-bottom: 1rem;
display: block;
}
.hero h1 {
font-size: clamp(2.5rem, 6vw, 4.5rem);
font-weight: 700;
color: var(--rustic-walnut);
position: relative;
z-index: 1;
line-height: 1.1;
}
.hero p {
font-size: 1.15rem;
color: var(--rustic-text-light);
max-width: 580px;
margin: 1.25rem auto 2rem;
position: relative;
z-index: 1;
}
.hero .btn-group {
display: flex;
gap: 1rem;
justify-content: center;
position: relative;
z-index: 1;
}
/* ===================== */
/* BUTTONS */
/* ===================== */
.btn {
display: inline-block;
font-family: 'Cabin', sans-serif;
font-size: 0.82rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
text-decoration: none;
padding: 0.8rem 2rem;
border: none;
border-radius: 3px;
cursor: pointer;
transition: all 0.25s ease;
}
.btn--primary {
background: var(--rustic-brick);
color: var(--rustic-cream);
box-shadow: 0 2px 6px rgba(158, 90, 66, 0.25);
}
.btn--primary:hover {
background: var(--rustic-walnut);
box-shadow: 0 4px 12px rgba(92, 64, 51, 0.3);
transform: translateY(-1px);
}
.btn--secondary {
background: transparent;
color: var(--rustic-iron);
border: 2px solid var(--rustic-iron);
}
.btn--secondary:hover {
background: var(--rustic-iron);
color: var(--rustic-cream);
}
/* ===================== */
/* DIVIDER */
/* ===================== */
.divider {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
margin: 3rem auto;
max-width: 260px;
}
.divider::before,
.divider::after {
content: '';
flex: 1;
height: 2px;
background: var(--rustic-iron);
}
.divider .rivet {
width: 8px;
height: 8px;
background: radial-gradient(
circle at 35% 35%,
var(--rustic-steel),
var(--rustic-iron)
);
border-radius: 50%;
box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.15);
}
/* ===================== */
/* CONTENT SECTION */
/* ===================== */
.content-section {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2rem;
}
.content-section h2 {
text-align: center;
margin-bottom: 0.5rem;
}
.content-section .subtitle {
text-align: center;
color: var(--rustic-text-muted);
font-size: 0.95rem;
margin-bottom: 3rem;
}
/* ===================== */
/* CARD GRID */
/* ===================== */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.card {
background: var(--rustic-parchment);
border: 1px solid var(--rustic-cement);
border-radius: 4px;
padding: 2rem;
position: relative;
box-shadow:
0 2px 4px rgba(44, 42, 40, 0.06),
0 4px 12px rgba(44, 42, 40, 0.04);
transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(
90deg,
var(--rustic-barn-wood),
var(--rustic-oak),
var(--rustic-barn-wood)
);
border-radius: 4px 4px 0 0;
}
.card:hover {
box-shadow:
0 4px 8px rgba(44, 42, 40, 0.08),
0 8px 24px rgba(44, 42, 40, 0.06);
transform: translateY(-2px);
}
.card .card-icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 44px;
height: 44px;
background: var(--rustic-linen);
border: 1px solid var(--rustic-cement);
border-radius: 3px;
color: var(--rustic-brick);
font-size: 1.25rem;
margin-bottom: 1rem;
}
.card h3 {
font-size: 1.15rem;
margin-bottom: 0.75rem;
}
.card p {
color: var(--rustic-text-light);
font-size: 0.92rem;
line-height: 1.7;
}
/* ===================== */
/* SPLIT SECTION */
/* ===================== */
.split {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
.split__image {
width: 100%;
aspect-ratio: 4 / 3;
background: var(--rustic-linen);
border: 1px solid var(--rustic-cement);
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
color: var(--rustic-text-muted);
font-family: 'Cabin', sans-serif;
font-size: 0.85rem;
letter-spacing: 0.08em;
text-transform: uppercase;
position: relative;
overflow: hidden;
}
/* Subtle grain on image placeholder */
.split__image::after {
content: '';
position: absolute;
inset: 0;
opacity: 0.04;
background-image:
repeating-linear-gradient(
85deg,
transparent,
transparent 1px,
rgba(92, 64, 51, 0.4) 1px,
rgba(92, 64, 51, 0.4) 2px
);
pointer-events: none;
}
.split__content h2 {
text-align: left;
margin-bottom: 1rem;
}
.split__content p {
color: var(--rustic-text-light);
margin-bottom: 1.5rem;
}
/* ===================== */
/* MATERIALS STRIP */
/* ===================== */
.materials {
background: var(--rustic-walnut);
padding: 4rem 2rem;
color: var(--rustic-linen);
}
.materials h2 {
text-align: center;
color: var(--rustic-cream);
margin-bottom: 2.5rem;
}
.materials-grid {
max-width: 1100px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1.5rem;
}
.material-swatch {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 4px;
padding: 1.5rem;
text-align: center;
transition: background 0.3s ease;
}
.material-swatch:hover {
background: rgba(255, 255, 255, 0.1);
}
.material-swatch .swatch-color {
width: 48px;
height: 48px;
border-radius: 3px;
margin: 0 auto 1rem;
border: 1px solid rgba(255, 255, 255, 0.12);
}
.material-swatch .swatch-name {
font-family: 'Cabin', sans-serif;
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--rustic-cream);
margin-bottom: 0.25rem;
}
.material-swatch .swatch-hex {
font-family: 'Source Sans 3', monospace;
font-size: 0.78rem;
color: var(--rustic-concrete);
}
/* ===================== */
/* TESTIMONIAL / QUOTE */
/* ===================== */
.quote-section {
max-width: 750px;
margin: 0 auto;
padding: 4rem 2rem;
text-align: center;
}
blockquote {
font-family: 'Lora', Georgia, serif;
font-size: 1.4rem;
font-style: italic;
font-weight: 400;
color: var(--rustic-walnut);
line-height: 1.6;
position: relative;
padding: 0 2rem;
}
blockquote::before {
content: '\201C';
font-size: 4rem;
color: var(--rustic-sandstone);
position: absolute;
top: -1.5rem;
left: -0.5rem;
line-height: 1;
}
.quote-attribution {
font-family: 'Cabin', sans-serif;
font-size: 0.82rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--rustic-text-muted);
margin-top: 1.5rem;
}
/* ===================== */
/* FOOTER */
/* ===================== */
footer {
background: var(--rustic-iron);
border-top: 3px solid var(--rustic-walnut);
color: var(--rustic-concrete);
padding: 3rem 2rem;
text-align: center;
}
footer .footer-brand {
font-family: 'Lora', Georgia, serif;
font-size: 1.1rem;
font-weight: 700;
color: var(--rustic-cream);
margin-bottom: 0.5rem;
}
footer p {
font-size: 0.85rem;
color: var(--rustic-concrete);
margin: 0 auto;
}
footer a {
color: var(--rustic-sandstone);
text-decoration: none;
transition: color 0.25s ease;
}
footer a:hover {
color: var(--rustic-cream);
}
/* ===================== */
/* RESPONSIVE */
/* ===================== */
@media (max-width: 768px) {
nav {
flex-direction: column;
height: auto;
padding: 1rem;
gap: 0.75rem;
}
.nav-links {
gap: 1.25rem;
}
.hero {
padding: 5rem 1.5rem 3.5rem;
}
.hero .btn-group {
flex-direction: column;
align-items: center;
}
.split {
grid-template-columns: 1fr;
gap: 2rem;
}
.card-grid {
grid-template-columns: 1fr;
}
.materials-grid {
grid-template-columns: repeat(2, 1fr);
}
}
</style>
</head>
<body>
<!-- Navigation -->
<nav>
<a href="#" class="nav-brand">Timber & Steel</a>
<ul class="nav-links">
<li><a href="#">Home</a></li>
<li><a href="#">Work</a></li>
<li><a href="#">Materials</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<!-- Hero Section -->
<section class="hero">
<span class="label">Crafted with care</span>
<h1>Where Raw Meets Refined</h1>
<p>
We build at the intersection of reclaimed warmth and modern precision.
Honest materials, clean forms, lasting quality.
</p>
<div class="btn-group">
<a href="#" class="btn btn--primary">Explore Our Work</a>
<a href="#" class="btn btn--secondary">Learn More</a>
</div>
</section>
<!-- Divider -->
<div class="divider">
<span class="rivet"></span>
<span class="rivet"></span>
<span class="rivet"></span>
</div>
<!-- Cards Section -->
<section class="content-section">
<h2>What We Do</h2>
<p class="subtitle">Honest craft meets modern clarity in every detail</p>
<div class="card-grid">
<div class="card">
<div class="card-icon">▸</div>
<h3>Reclaimed Timber</h3>
<p>
Every board has a story. We source weathered wood from old barns,
warehouses, and bridges, giving each piece a second life within
modern, purpose-driven designs.
</p>
</div>
<div class="card">
<div class="card-icon">◆</div>
<h3>Steel Framework</h3>
<p>
Brushed and blackened steel provides the structural backbone.
Clean lines, exposed fasteners, and honest joinery reveal the
strength behind the surface.
</p>
</div>
<div class="card">
<div class="card-icon">◉</div>
<h3>Natural Stone</h3>
<p>
From rough-cut fieldstone to honed concrete counters, mineral
surfaces anchor every space with permanence and quiet gravity.
</p>
</div>
</div>
</section>
<!-- Split Section -->
<section class="split">
<div class="split__image">
Image Placeholder
</div>
<div class="split__content">
<h2>Built to Last</h2>
<p>
We believe the best design ages gracefully. Our approach draws from
materials that develop character over time -- wood that patinas, steel
that weathers, stone that smooths with wear. Each project is built
with longevity as the first principle.
</p>
<p>
Modern construction techniques meet time-tested materials. The result
is spaces that feel both fresh and familiar, precise and warm.
</p>
<a href="#" class="btn btn--primary">Our Process</a>
</div>
</section>
<!-- Materials Strip -->
<section class="materials">
<h2>Material Palette</h2>
<div class="materials-grid">
<div class="material-swatch">
<div class="swatch-color" style="background: #5C4033;"></div>
<div class="swatch-name">Walnut</div>
<div class="swatch-hex">#5C4033</div>
</div>
<div class="material-swatch">
<div class="swatch-color" style="background: #9E5A42;"></div>
<div class="swatch-name">Brick</div>
<div class="swatch-hex">#9E5A42</div>
</div>
<div class="material-swatch">
<div class="swatch-color" style="background: #6B7B86;"></div>
<div class="swatch-name">Steel</div>
<div class="swatch-hex">#6B7B86</div>
</div>
<div class="material-swatch">
<div class="swatch-color" style="background: #C4A882;"></div>
<div class="swatch-name">Sandstone</div>
<div class="swatch-hex">#C4A882</div>
</div>
<div class="material-swatch">
<div class="swatch-color" style="background: #6B7F5E;"></div>
<div class="swatch-name">Patina</div>
<div class="swatch-hex">#6B7F5E</div>
</div>
</div>
</section>
<!-- Quote Section -->
<section class="quote-section">
<blockquote>
The beauty of wood is that it tells you its own history.
Every crack, every ring, every change in color is a chapter
in a story that only time could write.
</blockquote>
<div class="quote-attribution">-- A builder's reflection</div>
</section>
<!-- Divider -->
<div class="divider">
<span class="rivet"></span>
<span class="rivet"></span>
<span class="rivet"></span>
</div>
<!-- Footer -->
<footer>
<div class="footer-brand">Timber & Steel</div>
<p>
Honest materials. Clean forms. Lasting craft.<br>
<a href="#">Contact us</a> · <a href="#">Our story</a>
</p>
</footer>
</body>
</html>
#F5EDE0) and build outward; this single decision anchors the entire Rustic Modern feel and prevents the coldness of pure whitebox-shadow that suggests resting weight, not floating elevation: short vertical offsets (2-4px), moderate blur (8-16px), and warm-tinted RGBA values rather than pure black