Kinfolk is the definitive editorial aesthetic of intentional living, born from the influential Portland-based magazine founded in 2011 that Vanity Fair described as “a magazine that helped define a generation’s aesthetic.” At its core, Kinfolk design is about restraint, warmth, and the quiet confidence that comes from removing everything unnecessary. The visual language centers on airy, soft-focus photography bathed in natural daylight, vast expanses of whitespace that function as an active compositional element rather than empty filler, and a muted palette of warm neutrals – cream, sand, mushroom grey, and faded terracotta – that evoke linen tablecloths, handmade ceramics, and sun-warmed wood surfaces.
Kinfolk’s approach to design was revolutionary precisely because it rejected the conventional magazine wisdom that pages must be busy to hold attention. Instead, it proved that generous margins, small headline sizes, limited color usage, and swathes of breathing room could create a more compelling and authoritative visual experience. The underlying philosophy is that if you are championing a slow, responsible, quality-over-quantity approach to life, your design must embody those same values. Every layout choice – from the asymmetric placement of photography (often top-right) against a block of text (bottom-left) to the disciplined two-typeface pairing of a refined serif with a humanist sans-serif – communicates intentionality.
In web and UI design, the Kinfolk aesthetic translates into clean editorial layouts with generous padding, restrained typographic scales, desaturated earth-tone photography, and a disciplined absence of ornamentation. Navigation is understated. Animations, if present, are slow and subtle. The grid structure is felt rather than seen – pages have a controlled, architectural quality that feels as though they started busier and were slowly reduced and refined until only the essential remained. It is the visual opposite of maximalism: every pixel earns its place through purpose, and the empty space speaks as loudly as the content.
The Kinfolk palette is drawn from the natural world of slow living: sun-bleached linen, unglazed ceramics, dried botanicals, stone, and warm shadow. Color is deliberately restrained – the only vivid hues typically appear within photography itself, where they are slightly muted and desaturated. The surrounding design operates in a narrow tonal range of warm whites, sand, mushroom grey, and a single quiet accent (often a muted terracotta, dusty rose, or faded olive). This restraint ensures that photography remains the primary source of visual interest while the layout maintains its calm, editorial authority.
| Swatch | Hex | Role/Usage |
|---|---|---|
| Warm White | #FAF8F5 |
Primary page background, base surface |
| Natural Cream | #F3EDE4 |
Secondary background, card surfaces, alternate sections |
| Raw Linen | #EBE3D7 |
Tertiary surface, pull-quote backgrounds, subtle banding |
| Parchment | #E2D8C8 |
Image placeholder backgrounds, muted containers |
| Sand | #D4C8B5 |
Border treatments, horizontal rules, divider lines |
| Mushroom Grey | #B5ADA2 |
Secondary text, captions, metadata, timestamps |
| Warm Stone | #9A917F |
Tertiary text, muted labels, navigation inactive states |
| Driftwood | #7A7062 |
Mid-tone accent, icon fills, subtle emphasis |
| Charcoal Brown | #3B332D |
Primary body text, high-readability content |
| Deep Espresso | #2A2320 |
Headings, display text, strongest foreground |
| Dusty Terracotta | #C4907A |
Primary warm accent, links, interactive highlights |
| Faded Rose | #D4A99A |
Secondary accent, hover states, soft callouts |
| Dried Sage | #A3AA8E |
Tertiary accent, category tags, nature-referencing elements |
| Soft Clay | #C9B099 |
Warm mid-accent, button backgrounds, subtle emphasis |
| Ink Black | #1A1714 |
Sparing use for maximum contrast moments, logo weight |
:root {
/* Backgrounds */
--kf-white: #faf8f5;
--kf-cream: #f3ede4;
--kf-linen: #ebe3d7;
--kf-parchment: #e2d8c8;
/* Neutrals */
--kf-sand: #d4c8b5;
--kf-mushroom: #b5ada2;
--kf-stone: #9a917f;
--kf-driftwood: #7a7062;
/* Foregrounds */
--kf-charcoal: #3b332d;
--kf-espresso: #2a2320;
--kf-ink: #1a1714;
/* Accents */
--kf-terracotta: #c4907a;
--kf-rose: #d4a99a;
--kf-sage: #a3aa8e;
--kf-clay: #c9b099;
/* Functional mappings */
--kf-bg-primary: var(--kf-white);
--kf-bg-secondary: var(--kf-cream);
--kf-bg-tertiary: var(--kf-linen);
--kf-bg-surface: var(--kf-parchment);
--kf-text-primary: var(--kf-charcoal);
--kf-text-heading: var(--kf-espresso);
--kf-text-muted: var(--kf-mushroom);
--kf-text-caption: var(--kf-stone);
--kf-accent: var(--kf-terracotta);
--kf-accent-soft: var(--kf-rose);
--kf-border: var(--kf-sand);
--kf-border-light: var(--kf-linen);
--kf-rule: var(--kf-sand);
}
Kinfolk’s typographic identity is built on the classic editorial pairing of a refined serif with a clean humanist sans-serif. The magazine itself uses custom typefaces designed by Schick Toikka – a complete family of six styles consisting of serif and sans-serif counterparts with matching italics. The serif features small flared details and varying transitional contrast flow that create a lively texture, while the sans serves as a quiet, functional companion for captions and body text. For web implementations, the following Google Fonts capture the same spirit: a transitional serif with subtle personality for headings and a clean, warm sans-serif for body copy.
| Font | Weight(s) | Style | Usage |
|---|---|---|---|
| DM Serif Display | 400 | Refined transitional serif with warm character | Hero headlines, article titles, pull quotes |
| DM Serif Text | 400 | Text-optimized serif companion | Subheadings, large body text, editorial introductions |
| DM Sans | 300, 400, 500 | Clean humanist sans-serif, warm and readable | Body text, navigation, UI elements |
| Cormorant Garamond | 300, 400, 500, 600 | Elegant, high-contrast editorial serif | Alternative display headings, magazine-style titles |
| Source Serif 4 | 300, 400, 600 | Sturdy, readable transitional serif | Long-form body text, article content |
| Outfit | 300, 400, 500 | Geometric sans with warm, approachable feel | Captions, labels, metadata, navigation |
| IBM Plex Sans | 300, 400, 500 | Neutral humanist sans with editorial authority | Body text alternative, form labels |
| Spectral | 300, 400, 500 | Transitional serif designed for screen | Body text in serif-heavy editorial layouts |
| Heading | Body | Mood |
|---|---|---|
| DM Serif Display 400 | DM Sans 400 | Core Kinfolk: warm editorial serif with clean sans companion |
| Cormorant Garamond 400 | Outfit 300 | Elevated literary magazine with modern captions |
| DM Serif Display 400 | Source Serif 4 300 | All-serif editorial, traditional and warm |
| Cormorant Garamond 300 | IBM Plex Sans 300 | Refined, intellectual, slightly cooler editorial |
| Source Serif 4 600 | DM Sans 300 | Sturdy headings with airy, light body text |
@import url('https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&family=Outfit:wght@300;400;500&display=swap');
body {
font-family: 'DM Sans', 'Outfit', sans-serif;
font-weight: 400;
font-size: 1.05rem;
line-height: 1.85;
letter-spacing: 0.01em;
color: var(--kf-text-primary);
-webkit-font-smoothing: antialiased;
}
h1, h2, h3 {
font-family: 'DM Serif Display', 'Cormorant Garamond', Georgia, serif;
font-weight: 400;
letter-spacing: -0.01em;
line-height: 1.2;
color: var(--kf-text-heading);
}
h1 {
font-size: clamp(2rem, 4.5vw, 3.5rem);
line-height: 1.15;
}
h2 {
font-size: clamp(1.5rem, 3vw, 2.25rem);
line-height: 1.2;
}
h3 {
font-size: clamp(1.15rem, 2vw, 1.5rem);
line-height: 1.3;
}
/* Editorial uppercase label -- captions, categories, dates */
.kf-label {
font-family: 'DM Sans', 'Outfit', sans-serif;
font-size: 0.7rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.18em;
color: var(--kf-text-caption);
}
/* Pull quote styling */
.kf-pullquote {
font-family: 'Cormorant Garamond', Georgia, serif;
font-size: clamp(1.4rem, 3vw, 2rem);
font-weight: 300;
font-style: italic;
line-height: 1.5;
color: var(--kf-driftwood);
}
/* Caption text */
.kf-caption {
font-family: 'DM Sans', sans-serif;
font-size: 0.8rem;
font-weight: 300;
color: var(--kf-text-muted);
line-height: 1.6;
}
.kf-card {
background: var(--kf-bg-secondary);
border: none;
border-radius: 0;
padding: 0;
overflow: hidden;
transition: opacity 0.4s ease;
}
.kf-card__image {
width: 100%;
aspect-ratio: 4 / 5;
object-fit: cover;
display: block;
filter: saturate(0.85) contrast(0.95);
transition: filter 0.6s ease;
}
.kf-card:hover .kf-card__image {
filter: saturate(0.95) contrast(1);
}
.kf-card__body {
padding: 1.75rem 1.5rem 2rem;
}
.kf-card__category {
font-family: 'DM Sans', sans-serif;
font-size: 0.65rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--kf-text-caption);
margin-bottom: 0.75rem;
display: block;
}
.kf-card__title {
font-family: 'DM Serif Display', serif;
font-size: 1.25rem;
font-weight: 400;
color: var(--kf-text-heading);
line-height: 1.3;
margin-bottom: 0.75rem;
}
.kf-card__excerpt {
font-family: 'DM Sans', sans-serif;
font-size: 0.9rem;
font-weight: 300;
line-height: 1.7;
color: var(--kf-text-primary);
}
.kf-card__meta {
margin-top: 1.25rem;
font-family: 'DM Sans', sans-serif;
font-size: 0.75rem;
color: var(--kf-text-muted);
letter-spacing: 0.05em;
}
/* Primary -- quiet, warm, understated */
.kf-button {
display: inline-block;
padding: 0.8rem 2.25rem;
border: 1px solid var(--kf-charcoal);
border-radius: 0;
background: transparent;
color: var(--kf-charcoal);
font-family: 'DM Sans', sans-serif;
font-size: 0.72rem;
font-weight: 500;
letter-spacing: 0.18em;
text-transform: uppercase;
text-decoration: none;
cursor: pointer;
transition: background 0.4s ease, color 0.4s ease;
}
.kf-button:hover {
background: var(--kf-charcoal);
color: var(--kf-white);
}
/* Secondary -- lighter, softer edge */
.kf-button--secondary {
border-color: var(--kf-sand);
color: var(--kf-driftwood);
}
.kf-button--secondary:hover {
background: var(--kf-linen);
border-color: var(--kf-driftwood);
color: var(--kf-charcoal);
}
/* Terracotta accent variant */
.kf-button--accent {
border-color: var(--kf-terracotta);
color: var(--kf-terracotta);
}
.kf-button--accent:hover {
background: var(--kf-terracotta);
color: var(--kf-white);
}
/* Text-only link button */
.kf-button--text {
border: none;
padding: 0.5rem 0;
position: relative;
}
.kf-button--text::after {
content: '';
position: absolute;
bottom: 0.35rem;
left: 0;
width: 100%;
height: 1px;
background: var(--kf-charcoal);
transform: scaleX(0.3);
transform-origin: left;
transition: transform 0.4s ease;
}
.kf-button--text:hover::after {
transform: scaleX(1);
}
.kf-nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.75rem 5%;
background: var(--kf-bg-primary);
border-bottom: 1px solid var(--kf-border-light);
position: sticky;
top: 0;
z-index: 100;
}
.kf-nav__brand {
font-family: 'DM Serif Display', serif;
font-size: 1.3rem;
color: var(--kf-text-heading);
text-decoration: none;
letter-spacing: 0.02em;
}
.kf-nav__links {
display: flex;
align-items: center;
gap: 2.5rem;
list-style: none;
margin: 0;
padding: 0;
}
.kf-nav__links a {
font-family: 'DM Sans', sans-serif;
font-size: 0.7rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.18em;
color: var(--kf-text-caption);
text-decoration: none;
transition: color 0.3s ease;
}
.kf-nav__links a:hover {
color: var(--kf-text-heading);
}
/* Active state -- understated underline */
.kf-nav__links a.active {
color: var(--kf-text-heading);
position: relative;
}
.kf-nav__links a.active::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 100%;
height: 1px;
background: var(--kf-text-heading);
}
.kf-hero {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0;
min-height: 85vh;
background: var(--kf-bg-primary);
}
.kf-hero__image {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
filter: saturate(0.8) contrast(0.95);
}
.kf-hero__content {
display: flex;
flex-direction: column;
justify-content: center;
padding: 6rem 8%;
max-width: 560px;
}
.kf-hero__label {
font-family: 'DM Sans', sans-serif;
font-size: 0.65rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.22em;
color: var(--kf-text-caption);
margin-bottom: 1.5rem;
}
.kf-hero__title {
font-family: 'DM Serif Display', serif;
font-size: clamp(2.2rem, 4vw, 3.2rem);
font-weight: 400;
line-height: 1.15;
color: var(--kf-text-heading);
margin-bottom: 1.5rem;
}
.kf-hero__body {
font-family: 'DM Sans', sans-serif;
font-size: 1rem;
font-weight: 300;
line-height: 1.85;
color: var(--kf-text-primary);
margin-bottom: 2.5rem;
}
/* Full-bleed centered variant */
.kf-hero--centered {
grid-template-columns: 1fr;
text-align: center;
place-items: center;
padding: 10rem 2rem 8rem;
min-height: 70vh;
}
.kf-hero--centered .kf-hero__content {
align-items: center;
max-width: 640px;
}
@media (max-width: 768px) {
.kf-hero {
grid-template-columns: 1fr;
min-height: auto;
}
.kf-hero__image {
height: 55vh;
}
.kf-hero__content {
padding: 3rem 1.5rem 4rem;
}
}
/* Asymmetric image-text split -- the signature Kinfolk layout */
.kf-split {
display: grid;
grid-template-columns: 1.2fr 1fr;
gap: 0;
align-items: center;
margin: 6rem 0;
}
.kf-split--reverse {
grid-template-columns: 1fr 1.2fr;
}
.kf-split__image {
width: 100%;
height: 100%;
min-height: 500px;
object-fit: cover;
display: block;
filter: saturate(0.85) contrast(0.95);
}
.kf-split__content {
padding: 4rem 8%;
max-width: 480px;
}
.kf-split__content h2 {
font-family: 'DM Serif Display', serif;
font-size: clamp(1.5rem, 2.5vw, 2rem);
font-weight: 400;
color: var(--kf-text-heading);
margin-bottom: 1.25rem;
}
.kf-split__content p {
font-size: 0.95rem;
line-height: 1.85;
color: var(--kf-text-primary);
margin-bottom: 1rem;
}
@media (max-width: 768px) {
.kf-split,
.kf-split--reverse {
grid-template-columns: 1fr;
}
.kf-split__image {
min-height: 350px;
}
.kf-split__content {
padding: 2.5rem 1.5rem;
max-width: 100%;
}
}
.kf-quote {
max-width: 640px;
margin: 6rem auto;
padding: 0 2rem;
text-align: center;
}
.kf-quote blockquote {
font-family: 'Cormorant Garamond', Georgia, serif;
font-size: clamp(1.3rem, 2.5vw, 1.8rem);
font-weight: 300;
font-style: italic;
line-height: 1.6;
color: var(--kf-driftwood);
margin: 0;
padding: 0;
border: none;
}
.kf-quote cite {
display: block;
margin-top: 1.5rem;
font-family: 'DM Sans', sans-serif;
font-size: 0.7rem;
font-weight: 500;
font-style: normal;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--kf-text-caption);
}
/* Thin rule accent above and below */
.kf-quote::before,
.kf-quote::after {
content: '';
display: block;
width: 40px;
height: 1px;
background: var(--kf-sand);
margin: 2.5rem auto;
}
.kf-divider {
border: none;
height: 1px;
background: var(--kf-border-light);
margin: 4rem auto;
max-width: 120px;
}
/* Full-width variant */
.kf-divider--full {
max-width: 100%;
margin-left: 5%;
margin-right: 5%;
}
/* Sand-toned variant for darker sections */
.kf-divider--sand {
background: var(--kf-sand);
}
/* Kinfolk photographic treatment: slightly desaturated, soft contrast */
.kf-image {
display: block;
width: 100%;
height: auto;
filter: saturate(0.82) contrast(0.94) brightness(1.02);
transition: filter 0.6s ease;
}
.kf-image:hover {
filter: saturate(0.92) contrast(0.98) brightness(1.01);
}
/* Soft warm overlay for images */
.kf-image-wrap {
position: relative;
overflow: hidden;
}
.kf-image-wrap::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
180deg,
transparent 60%,
rgba(250, 248, 245, 0.15) 100%
);
pointer-events: none;
}
| Aesthetic | Relationship to Kinfolk |
|---|---|
| Organic Modern | Closest sibling; shares warm neutrals, natural materials, and calm minimalism, but Organic Modern is interior-design oriented with more tactile texture, while Kinfolk is editorial and photographic |
| Japandi | Shares disciplined minimalism, quiet restraint, and natural palettes; Japandi blends Japanese and Scandinavian influences with more deliberate asymmetry and darker wood tones |
| Scandinavian Minimalism | Shares the love of whitespace and clean lines; Scandinavian tends cooler and more geometric, while Kinfolk maintains warmer tones and editorial asymmetry |
| Wabi-Sabi | Shares appreciation for imperfection, natural materials, and quiet beauty; Wabi-Sabi embraces visible aging and roughness more than Kinfolk’s polished editorial restraint |
| Cottagecore | Both celebrate slow, intentional living, but Cottagecore is rustic, romantic, and maximalist with floral patterns, while Kinfolk is urban-refined and minimal |
| Editorial / Magazine | Kinfolk is a subset of editorial design; it shares grid-based layouts and typographic hierarchy but distinguishes itself through its specific warm-neutral palette and slow-living philosophy |
| Muji / No-Brand | Shares extreme restraint and the belief that packaging should disappear; Muji is more product-focused and neutral, while Kinfolk maintains editorial warmth and photographic richness |
| Hygge | Both reference warmth, comfort, and intentional living; Hygge is cozier, more domestic, and texture-heavy, while Kinfolk is more refined, spacious, and visually spare |
| Clean / Swiss | Shares structural grid discipline and typographic clarity; Swiss design is more rigid, rational, and cool, while Kinfolk is warmer, more organic, and narrative-driven |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kinfolk</title>
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@300;400;500&family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300;1,400&family=Outfit:wght@300;400;500&display=swap" rel="stylesheet">
<style>
:root {
--kf-white: #faf8f5;
--kf-cream: #f3ede4;
--kf-linen: #ebe3d7;
--kf-parchment: #e2d8c8;
--kf-sand: #d4c8b5;
--kf-mushroom: #b5ada2;
--kf-stone: #9a917f;
--kf-driftwood: #7a7062;
--kf-charcoal: #3b332d;
--kf-espresso: #2a2320;
--kf-ink: #1a1714;
--kf-terracotta: #c4907a;
--kf-rose: #d4a99a;
--kf-sage: #a3aa8e;
--kf-clay: #c9b099;
}
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: var(--kf-white);
color: var(--kf-charcoal);
font-family: 'DM Sans', 'Outfit', sans-serif;
font-weight: 400;
font-size: 1.05rem;
line-height: 1.85;
letter-spacing: 0.01em;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
}
h1, h2, h3 {
font-family: 'DM Serif Display', Georgia, serif;
font-weight: 400;
color: var(--kf-espresso);
letter-spacing: -0.01em;
}
img {
display: block;
width: 100%;
height: auto;
}
/* ---- Navigation ---- */
.nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.75rem 5%;
background: var(--kf-white);
border-bottom: 1px solid var(--kf-linen);
position: sticky;
top: 0;
z-index: 100;
}
.nav__brand {
font-family: 'DM Serif Display', serif;
font-size: 1.35rem;
color: var(--kf-espresso);
text-decoration: none;
letter-spacing: 0.03em;
}
.nav__links {
display: flex;
align-items: center;
gap: 2.5rem;
list-style: none;
}
.nav__links a {
font-family: 'DM Sans', sans-serif;
font-size: 0.68rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--kf-stone);
text-decoration: none;
transition: color 0.3s ease;
}
.nav__links a:hover {
color: var(--kf-espresso);
}
/* ---- Hero ---- */
.hero {
display: grid;
grid-template-columns: 1.1fr 1fr;
min-height: 85vh;
}
.hero__image-wrap {
overflow: hidden;
position: relative;
}
.hero__image-wrap img {
width: 100%;
height: 100%;
object-fit: cover;
filter: saturate(0.82) contrast(0.94) brightness(1.02);
}
.hero__content {
display: flex;
flex-direction: column;
justify-content: center;
padding: 5rem 8%;
max-width: 540px;
}
.hero__label {
font-family: 'DM Sans', sans-serif;
font-size: 0.65rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.22em;
color: var(--kf-stone);
margin-bottom: 1.75rem;
}
.hero h1 {
font-size: clamp(2.2rem, 4.5vw, 3.2rem);
line-height: 1.15;
margin-bottom: 1.5rem;
}
.hero p {
font-size: 1rem;
font-weight: 300;
line-height: 1.85;
color: var(--kf-charcoal);
margin-bottom: 2.5rem;
max-width: 420px;
}
.btn {
display: inline-block;
padding: 0.8rem 2.25rem;
border: 1px solid var(--kf-charcoal);
background: transparent;
color: var(--kf-charcoal);
font-family: 'DM Sans', sans-serif;
font-size: 0.7rem;
font-weight: 500;
letter-spacing: 0.18em;
text-transform: uppercase;
text-decoration: none;
cursor: pointer;
transition: background 0.4s ease, color 0.4s ease;
}
.btn:hover {
background: var(--kf-charcoal);
color: var(--kf-white);
}
.btn--secondary {
border-color: var(--kf-sand);
color: var(--kf-driftwood);
}
.btn--secondary:hover {
background: var(--kf-linen);
border-color: var(--kf-driftwood);
color: var(--kf-charcoal);
}
/* ---- Divider ---- */
.divider {
border: none;
height: 1px;
background: var(--kf-linen);
margin: 5rem auto;
max-width: 100px;
}
.divider--full {
max-width: 90%;
}
/* ---- About / Split Section ---- */
.split {
display: grid;
grid-template-columns: 1fr 1.15fr;
align-items: center;
margin: 0;
}
.split--reverse {
grid-template-columns: 1.15fr 1fr;
}
.split__image {
width: 100%;
height: 100%;
min-height: 480px;
object-fit: cover;
filter: saturate(0.82) contrast(0.94) brightness(1.02);
}
.split__content {
padding: 4rem 8%;
max-width: 460px;
}
.split__content .label {
font-family: 'DM Sans', sans-serif;
font-size: 0.65rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--kf-stone);
margin-bottom: 1.25rem;
display: block;
}
.split__content h2 {
font-size: clamp(1.5rem, 2.5vw, 2rem);
line-height: 1.2;
margin-bottom: 1.25rem;
}
.split__content p {
font-size: 0.95rem;
font-weight: 300;
line-height: 1.85;
margin-bottom: 1rem;
}
/* ---- Quote ---- */
.quote-section {
max-width: 620px;
margin: 6rem auto;
padding: 0 2rem;
text-align: center;
}
.quote-section::before,
.quote-section::after {
content: '';
display: block;
width: 40px;
height: 1px;
background: var(--kf-sand);
margin: 0 auto 2.5rem;
}
.quote-section::after {
margin: 2.5rem auto 0;
}
.quote-section blockquote {
font-family: 'Cormorant Garamond', Georgia, serif;
font-size: clamp(1.3rem, 2.5vw, 1.75rem);
font-weight: 300;
font-style: italic;
line-height: 1.6;
color: var(--kf-driftwood);
border: none;
padding: 0;
}
.quote-section cite {
display: block;
margin-top: 1.5rem;
font-family: 'DM Sans', sans-serif;
font-size: 0.68rem;
font-weight: 500;
font-style: normal;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--kf-stone);
}
/* ---- Featured Cards ---- */
.featured {
padding: 5rem 5%;
background: var(--kf-cream);
}
.featured__header {
text-align: center;
margin-bottom: 4rem;
}
.featured__header .label {
font-family: 'DM Sans', sans-serif;
font-size: 0.65rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.22em;
color: var(--kf-stone);
margin-bottom: 1rem;
display: block;
}
.featured__header h2 {
font-size: clamp(1.6rem, 3vw, 2.2rem);
line-height: 1.2;
}
.card-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2.5rem;
max-width: 1100px;
margin: 0 auto;
}
.card {
background: var(--kf-white);
overflow: hidden;
}
.card__image {
width: 100%;
aspect-ratio: 4 / 5;
object-fit: cover;
filter: saturate(0.82) contrast(0.94) brightness(1.02);
transition: filter 0.6s ease;
}
.card:hover .card__image {
filter: saturate(0.92) contrast(0.98) brightness(1.01);
}
.card__body {
padding: 1.75rem 1.5rem 2rem;
}
.card__category {
font-family: 'DM Sans', sans-serif;
font-size: 0.6rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--kf-stone);
margin-bottom: 0.75rem;
display: block;
}
.card__title {
font-family: 'DM Serif Display', serif;
font-size: 1.2rem;
font-weight: 400;
color: var(--kf-espresso);
line-height: 1.3;
margin-bottom: 0.75rem;
}
.card__excerpt {
font-size: 0.88rem;
font-weight: 300;
line-height: 1.7;
color: var(--kf-charcoal);
}
.card__meta {
margin-top: 1.25rem;
font-family: 'DM Sans', sans-serif;
font-size: 0.72rem;
color: var(--kf-mushroom);
letter-spacing: 0.05em;
}
/* ---- Footer ---- */
.footer {
border-top: 1px solid var(--kf-linen);
padding: 3rem 5% 2rem;
}
.footer__inner {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1100px;
margin: 0 auto;
}
.footer__brand {
font-family: 'DM Serif Display', serif;
font-size: 1.15rem;
color: var(--kf-espresso);
}
.footer__links {
display: flex;
gap: 2rem;
list-style: none;
}
.footer__links a {
font-family: 'DM Sans', sans-serif;
font-size: 0.68rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--kf-stone);
text-decoration: none;
transition: color 0.3s ease;
}
.footer__links a:hover {
color: var(--kf-espresso);
}
.footer__copy {
text-align: center;
margin-top: 2.5rem;
font-size: 0.78rem;
color: var(--kf-mushroom);
}
/* ---- Responsive ---- */
@media (max-width: 768px) {
.nav { padding: 1.25rem 1.5rem; }
.nav__links { gap: 1.5rem; }
.hero { grid-template-columns: 1fr; min-height: auto; }
.hero__image-wrap img { height: 55vh; object-fit: cover; }
.hero__content { padding: 3rem 1.5rem 4rem; max-width: 100%; }
.split, .split--reverse { grid-template-columns: 1fr; }
.split__image { min-height: 350px; }
.split__content { padding: 2.5rem 1.5rem; max-width: 100%; }
.card-grid { grid-template-columns: 1fr; gap: 2rem; }
.footer__inner { flex-direction: column; gap: 1.5rem; text-align: center; }
}
</style>
</head>
<body>
<!-- ====== Navigation ====== -->
<nav class="nav">
<a href="#" class="nav__brand">Kinfolk</a>
<ul class="nav__links">
<li><a href="#about">About</a></li>
<li><a href="#stories">Stories</a></li>
<li><a href="#philosophy">Philosophy</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<!-- ====== Hero ====== -->
<section class="hero">
<div class="hero__image-wrap">
<img
src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=900&h=1100&fit=crop&crop=faces"
alt="Sunlit table with ceramic bowl and dried flowers"
>
</div>
<div class="hero__content">
<span class="hero__label">Volume 48 -- Slow Living</span>
<h1>The Art of<br>Intentional Living</h1>
<p>
A guide to finding beauty in simplicity, meaning in
stillness, and connection through the rituals of
everyday life.
</p>
<a href="#stories" class="btn">Explore This Issue</a>
</div>
</section>
<!-- ====== Divider ====== -->
<hr class="divider">
<!-- ====== About / Split ====== -->
<div class="split" id="about">
<div class="split__content">
<span class="label">Our Approach</span>
<h2>Design That Breathes</h2>
<p>
We believe that beautiful spaces, meaningful meals, and
considered objects do not require complexity. By removing
the unnecessary, we reveal the essential -- the warmth
of morning light on a wooden table, the comfort of a
hand-thrown cup, the quiet satisfaction of a day
lived with intention.
</p>
<p>
Every story we tell is an invitation to slow down,
look more carefully, and find the extraordinary within
the ordinary.
</p>
</div>
<img
class="split__image"
src="https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?w=800&h=900&fit=crop"
alt="Minimalist interior with natural light"
>
</div>
<!-- ====== Quote ====== -->
<section class="quote-section">
<blockquote>
"The things that matter most are not things at all,
but the light that falls across a table, the silence
between words, and the care we bring to the smallest
of gestures."
</blockquote>
<cite>On Intentional Living</cite>
</section>
<!-- ====== Split Reverse ====== -->
<div class="split split--reverse" id="philosophy">
<img
class="split__image"
src="https://images.unsplash.com/photo-1513519245088-0e12902e35ca?w=800&h=900&fit=crop"
alt="Handmade ceramic vessels on linen cloth"
>
<div class="split__content">
<span class="label">Philosophy</span>
<h2>Less, but Better</h2>
<p>
Our editorial philosophy mirrors the principles of the
lives we document. We pair disciplined restraint with
warmth, allowing each photograph, each word, and each
margin to serve a clear purpose.
</p>
<p>
A page with generous whitespace is not empty. It is
full of intention.
</p>
<a href="#contact" class="btn btn--secondary">Learn More</a>
</div>
</div>
<!-- ====== Divider ---- -->
<hr class="divider">
<!-- ====== Featured Cards ====== -->
<section class="featured" id="stories">
<div class="featured__header">
<span class="label">Recent Stories</span>
<h2>From the Archive</h2>
</div>
<div class="card-grid">
<article class="card">
<img
class="card__image"
src="https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=500&h=625&fit=crop"
alt="Morning coffee ritual"
>
<div class="card__body">
<span class="card__category">Ritual</span>
<h3 class="card__title">The Morning Hour</h3>
<p class="card__excerpt">
How the first sixty minutes of your day can set the
tone for everything that follows.
</p>
<span class="card__meta">12 min read</span>
</div>
</article>
<article class="card">
<img
class="card__image"
src="https://images.unsplash.com/photo-1556909172-54557c7e4fb7?w=500&h=625&fit=crop"
alt="Handmade ceramics workshop"
>
<div class="card__body">
<span class="card__category">Craft</span>
<h3 class="card__title">Made by Hand</h3>
<p class="card__excerpt">
A ceramicist in rural Japan on the beauty of
imperfection and the patience of clay.
</p>
<span class="card__meta">8 min read</span>
</div>
</article>
<article class="card">
<img
class="card__image"
src="https://images.unsplash.com/photo-1506126613408-eca07ce68773?w=500&h=625&fit=crop"
alt="Person sitting quietly in nature"
>
<div class="card__body">
<span class="card__category">Stillness</span>
<h3 class="card__title">The Case for Doing Nothing</h3>
<p class="card__excerpt">
In a culture of constant productivity, rest is
a radical act of self-preservation.
</p>
<span class="card__meta">10 min read</span>
</div>
</article>
</div>
</section>
<!-- ====== Footer ====== -->
<footer class="footer">
<div class="footer__inner">
<span class="footer__brand">Kinfolk</span>
<ul class="footer__links">
<li><a href="#about">About</a></li>
<li><a href="#stories">Stories</a></li>
<li><a href="#philosophy">Philosophy</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<p class="footer__copy">Designed with quiet intention.</p>
</footer>
</body>
</html>
background: #FAF8F5 on body and color: #3B332D for text before adding anything else; this single step immediately establishes the Kinfolk atmosphere and ensures you never accidentally use pure white or pure black#000, #fff, #000000, and #ffffff and replace them with the warm charcoal-brown (#3B332D) and warm off-white (#FAF8F5) equivalents; even small amounts of pure black or white feel cold and break the tonal cohesion--kf- tokens so that adjusting warmth, saturation, or accent colors propagates globally without hunting through individual rulesfilter: saturate(0.82) contrast(0.94) brightness(1.02) to all editorial images as a default; this subtle desaturation ensures photographs integrate tonally with the warm-neutral page rather than jarring against itclamp() typography – expressions like font-size: clamp(2rem, 4vw, 3.2rem) with line-height: 1.15-1.2 for headings ensure the restrained scale feels proportional across all viewport sizes without abrupt breakpoint changes