New Objectivity (German: Neue Sachlichkeit) is a design and art aesthetic rooted in the cultural upheaval of Weimar-era Germany (1919–1933). Coined by Gustav Friedrich Hartlaub for his 1925 exhibition at the Kunsthalle Mannheim, the term described a sharp turn away from the emotional turbulence of Expressionism toward sober realism, clinical precision, and unflinching social commentary. Where Expressionism distorted form to externalize feeling, New Objectivity stripped away sentimentality to reveal the world as it was – often uncomfortably so.
The movement divided into two distinct tendencies: the Verists (Otto Dix, George Grosz, Max Beckmann), who wielded sharp satirical realism to expose the corruption, inequality, and moral decay of postwar German society; and the Classicists or Magic Realists (Christian Schad, Georg Schrimpf, Alexander Kanoldt), who pursued a more detached, almost clinical precision – smooth surfaces, static compositions, and an eerie stillness that suggested hidden psychological depth beneath outward composure.
In architecture and design, Neue Sachlichkeit overlapped heavily with early Bauhaus functionalism and the International Style. Flat roofs, white plastered walls, long bands of windows, exposed industrial materials (steel, concrete, glass), and the complete rejection of ornament defined the built environment. The architect’s task was to fulfill the object’s function – sachlich, objectively, factually – without emotional attachment or stylistic pretension. This ethos drove large-scale social housing projects addressing Germany’s postwar crisis, including Ernst May’s Neue Frankfurt and the Weissenhofsiedlung directed by Mies van der Rohe.
Translated into contemporary web and interface design, New Objectivity manifests as austere, grid-driven layouts with muted color palettes dominated by grays, cool earth tones, and restrained accent colors. Typography is functional and authoritative – sans-serif faces with strong vertical rhythm. Imagery, when present, is presented with documentary directness rather than decorative gloss. The aesthetic communicates seriousness, intellectual rigor, and a refusal to flatter. It is design that looks you in the eye and tells the truth, however uncomfortable that truth may be.
The New Objectivity palette draws from the muted, often somber tones found in the paintings of Dix, Grosz, and Schad: cool grays, desaturated ochres, subdued blues, and the pale, almost waxy flesh tones of Weimar-era portraiture. Accents are restrained – a deep red for critical emphasis, a steel blue for functional elements. The overall impression is sober, analytical, and stripped of chromatic excess.
| Swatch | Hex | Role / Usage |
|---|---|---|
![]() |
#2C2C2E |
Primary text, headings, structural elements |
![]() |
#4A4A4D |
Secondary text, body copy on light backgrounds |
![]() |
#7A7A7D |
Tertiary text, captions, metadata |
![]() |
#B0AFA8 |
Borders, dividers, subtle structural lines |
![]() |
#D6D3CB |
Secondary backgrounds, card surfaces |
![]() |
#EDEAE3 |
Primary background, warm off-white paper tone |
![]() |
#F5F4F0 |
Lightest background, white-adjacent neutral |
![]() |
#8C3A2B |
Primary accent, critical emphasis, call-to-action |
![]() |
#6B2D22 |
Hover/active state for red accent elements |
![]() |
#4A6670 |
Secondary accent, links, interactive elements |
![]() |
#3A525A |
Hover/active state for blue-gray accent |
![]() |
#C4A96A |
Tertiary accent, muted gold, highlight details |
![]() |
#D8C4A0 |
Warm ochre, background tinting, decorative tone |
![]() |
#1A1A1C |
Dark mode background, footer, high-contrast blocks |
![]() |
#E8D5B7 |
Flesh tone reference, portrait-context backgrounds |
:root {
/* Text hierarchy */
--no-text-primary: #2C2C2E;
--no-text-secondary: #4A4A4D;
--no-text-tertiary: #7A7A7D;
--no-text-inverse: #F5F4F0;
/* Backgrounds */
--no-bg-primary: #EDEAE3;
--no-bg-secondary: #D6D3CB;
--no-bg-light: #F5F4F0;
--no-bg-dark: #1A1A1C;
--no-bg-ochre: #D8C4A0;
/* Accents */
--no-accent-red: #8C3A2B;
--no-accent-red-dark: #6B2D22;
--no-accent-blue: #4A6670;
--no-accent-blue-dark: #3A525A;
--no-accent-gold: #C4A96A;
/* Structural */
--no-border: #B0AFA8;
--no-border-strong: #2C2C2E;
--no-surface: #D6D3CB;
/* Flesh / Portrait reference */
--no-flesh-tone: #E8D5B7;
/* Shadows (minimal, sharp) */
--no-shadow-sm: 2px 2px 0 rgba(44, 44, 46, 0.10);
--no-shadow-md: 4px 4px 0 rgba(44, 44, 46, 0.12);
}
New Objectivity typography is functional, authoritative, and restrained. It favors geometric or grotesque sans-serifs that communicate clarity and rational order. Headings are set in medium-to-bold weights with tight leading, evoking the typography of Weimar-era publications and functionalist posters. Body text is highly legible, with generous line-height and neutral proportions. There is no room for decorative script or playful display faces – every letterform serves the content.
| Font | Style | Best For |
|---|---|---|
| Inter | Humanist sans-serif, highly legible | Body text, UI elements, all-purpose |
| IBM Plex Sans | Neo-grotesque, industrial clarity | Headings and body, editorial layouts |
| Source Sans 3 | Rational sans-serif, neutral | Body text, data-heavy layouts |
| Archivo | Grotesque with geometric leanings | Headlines, navigation, labels |
| DM Sans | Low-contrast geometric | Body text, captions, supporting copy |
| Barlow | Slightly condensed grotesque | Navigation, labels, compact layouts |
| Jost | Geometric sans (Futura-inspired) | Display headings, hero text |
| Libre Franklin | Franklin Gothic reinterpretation | Headings, editorial contexts |
| Space Grotesk | Geometric grotesque | Technical content, modern headings |
| Roboto | Neo-grotesque, mechanical | UI text, forms, data tables |
| Heading Font | Body Font | Character |
|---|---|---|
| Archivo (700) | Inter (400) | Authoritative and precise |
| IBM Plex Sans (600) | Source Sans 3 (400) | Industrial clarity, editorial |
| Jost (700) | DM Sans (400) | Functionalist with Weimar echo |
| Libre Franklin (700) | Inter (400) | Bold editorial, documentary |
| Space Grotesk (600) | IBM Plex Sans (400) | Technical, contemporary Sachlichkeit |
/* Import fonts */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500&display=swap');
/* Headings */
h1, h2, h3, h4, h5, h6 {
font-family: 'Archivo', 'Helvetica Neue', sans-serif;
font-weight: 700;
color: var(--no-text-primary);
line-height: 1.15;
letter-spacing: -0.01em;
}
/* Display / Hero text */
.no-display {
font-family: 'Archivo', sans-serif;
font-size: clamp(2.5rem, 6vw, 4.5rem);
font-weight: 700;
letter-spacing: -0.02em;
line-height: 1.05;
text-transform: uppercase;
}
/* Body text */
body {
font-family: 'Inter', 'Helvetica Neue', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
color: var(--no-text-secondary);
}
/* Labels and captions */
.no-label {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.75rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--no-text-tertiary);
}
/* Block quote -- documentary voice */
.no-blockquote {
font-family: 'Inter', sans-serif;
font-weight: 400;
font-size: 1.15rem;
font-style: italic;
color: var(--no-text-secondary);
border-left: 3px solid var(--no-accent-red);
padding-left: 1.5rem;
margin: 2rem 0;
line-height: 1.7;
}
.no-card {
background: var(--no-bg-light);
border: 1px solid var(--no-border);
padding: 2rem;
position: relative;
transition: border-color 0.2s ease;
}
.no-card:hover {
border-color: var(--no-border-strong);
}
/* Accent stripe along the top */
.no-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: var(--no-accent-red);
}
.no-card__label {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--no-text-tertiary);
margin-bottom: 0.75rem;
}
.no-card__title {
font-family: 'Archivo', sans-serif;
font-weight: 700;
font-size: 1.15rem;
color: var(--no-text-primary);
margin-bottom: 0.75rem;
line-height: 1.3;
}
.no-card__body {
font-size: 0.95rem;
color: var(--no-text-secondary);
line-height: 1.7;
}
.no-card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.no-button {
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--no-accent-red);
color: var(--no-text-inverse);
border: 2px solid var(--no-accent-red);
border-radius: 0;
padding: 12px 32px;
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.8rem;
letter-spacing: 0.08em;
text-transform: uppercase;
cursor: pointer;
transition: background 0.2s ease, border-color 0.2s ease;
text-decoration: none;
}
.no-button:hover {
background: var(--no-accent-red-dark);
border-color: var(--no-accent-red-dark);
}
/* Secondary button -- outline */
.no-button--secondary {
background: transparent;
color: var(--no-text-primary);
border-color: var(--no-border-strong);
}
.no-button--secondary:hover {
background: var(--no-text-primary);
color: var(--no-text-inverse);
border-color: var(--no-text-primary);
}
/* Blue-gray variant */
.no-button--blue {
background: var(--no-accent-blue);
border-color: var(--no-accent-blue);
}
.no-button--blue:hover {
background: var(--no-accent-blue-dark);
border-color: var(--no-accent-blue-dark);
}
/* Minimal / text-only button */
.no-button--minimal {
background: transparent;
color: var(--no-accent-red);
border: none;
padding: 8px 0;
letter-spacing: 0.06em;
border-bottom: 1px solid transparent;
}
.no-button--minimal:hover {
border-bottom-color: var(--no-accent-red);
}
.no-nav {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1100px;
margin: 0 auto;
padding: 1.25rem 2.5rem;
border-bottom: 1px solid var(--no-border);
}
.no-nav__logo {
font-family: 'Archivo', sans-serif;
font-weight: 700;
font-size: 1.1rem;
color: var(--no-text-primary);
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.no-nav__links {
display: flex;
gap: 2rem;
list-style: none;
margin: 0;
padding: 0;
}
.no-nav__links a {
font-family: 'Archivo', sans-serif;
font-weight: 500;
font-size: 0.8rem;
color: var(--no-text-secondary);
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.06em;
transition: color 0.2s ease;
padding-bottom: 2px;
border-bottom: 1px solid transparent;
}
.no-nav__links a:hover {
color: var(--no-accent-red);
border-bottom-color: var(--no-accent-red);
}
.no-nav__links a.active {
color: var(--no-text-primary);
border-bottom-color: var(--no-text-primary);
}
.no-hero {
max-width: 1100px;
margin: 0 auto;
padding: 5rem 2.5rem 4rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: center;
}
.no-hero__content {
max-width: 480px;
}
.no-hero__label {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--no-accent-red);
margin-bottom: 1.25rem;
}
.no-hero__title {
font-family: 'Archivo', sans-serif;
font-size: clamp(2.25rem, 5vw, 3.75rem);
font-weight: 700;
line-height: 1.1;
color: var(--no-text-primary);
margin-bottom: 1.5rem;
text-transform: uppercase;
}
.no-hero__description {
font-size: 1.05rem;
color: var(--no-text-secondary);
line-height: 1.75;
margin-bottom: 2rem;
max-width: 400px;
}
.no-hero__image {
width: 100%;
aspect-ratio: 4 / 3;
background: var(--no-surface);
border: 1px solid var(--no-border);
object-fit: cover;
display: block;
}
@media (max-width: 768px) {
.no-hero {
grid-template-columns: 1fr;
padding: 3rem 1.5rem 2.5rem;
gap: 2rem;
}
}
.no-divider {
border: none;
height: 1px;
background: var(--no-border);
margin: 3rem auto;
max-width: 1100px;
}
.no-divider--strong {
height: 2px;
background: var(--no-border-strong);
}
.no-divider--accent {
height: 3px;
background: var(--no-accent-red);
max-width: 80px;
margin: 2rem 0;
}
.no-features {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2.5rem;
}
.no-features__header {
margin-bottom: 3rem;
}
.no-features__header h2 {
font-size: 1.75rem;
text-transform: uppercase;
margin-bottom: 0.75rem;
}
.no-features__header p {
font-size: 1rem;
color: var(--no-text-tertiary);
max-width: 480px;
}
.no-features__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
}
.no-feature-item {
padding: 2rem 0;
border-top: 2px solid var(--no-border-strong);
}
.no-feature-item__number {
font-family: 'Archivo', sans-serif;
font-weight: 700;
font-size: 0.75rem;
color: var(--no-accent-red);
margin-bottom: 1rem;
letter-spacing: 0.06em;
}
.no-feature-item h3 {
font-size: 1.05rem;
margin-bottom: 0.5rem;
}
.no-feature-item p {
font-size: 0.9rem;
color: var(--no-text-secondary);
line-height: 1.65;
}
.no-quote-block {
background: var(--no-bg-dark);
color: var(--no-text-inverse);
padding: 4rem 2.5rem;
}
.no-quote-block__inner {
max-width: 700px;
margin: 0 auto;
}
.no-quote-block__text {
font-family: 'Inter', sans-serif;
font-size: 1.35rem;
font-weight: 400;
line-height: 1.7;
margin-bottom: 1.5rem;
font-style: italic;
}
.no-quote-block__attribution {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.75rem;
letter-spacing: 0.1em;
text-transform: uppercase;
opacity: 0.7;
}
.no-table {
width: 100%;
border-collapse: collapse;
font-size: 0.9rem;
}
.no-table th {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--no-text-tertiary);
text-align: left;
padding: 0.75rem 1rem;
border-bottom: 2px solid var(--no-border-strong);
}
.no-table td {
padding: 0.75rem 1rem;
border-bottom: 1px solid var(--no-border);
color: var(--no-text-secondary);
}
.no-table tr:hover td {
background: var(--no-bg-secondary);
}
| Aesthetic | Relationship to New Objectivity |
|---|---|
| Bauhaus | Closest sibling; shared the Weimar context and functionalist principles, but Bauhaus embraced primary color and geometric abstraction where Neue Sachlichkeit favored muted realism |
| International Typographic Style | Direct descendant; Swiss designers formalized Neue Sachlichkeit’s grid discipline and objective clarity into a systematic typographic methodology |
| Constructivism | Parallel avant-garde movement; shared the rejection of bourgeois aesthetics but pursued revolutionary dynamism rather than sober detachment |
| Flat Design | Digital descendant; applies the anti-ornament, function-first, flat-surface principles to modern UI without the critical social dimension |
| Brutalism (Web) | Shares the raw honesty and refusal to decorate, but Brutalism embraces deliberate roughness where Neue Sachlichkeit demands precision |
| Minimalism | Philosophical descendant; extends the reductive impulse but often strips away the social commentary that defined the original movement |
| De Stijl | Contemporary sibling; both rejected ornament and embraced geometry, but De Stijl was more abstractly utopian while Neue Sachlichkeit was grounded in observed reality |
| Expressionism | The direct predecessor and foil; Neue Sachlichkeit defined itself as a reaction against Expressionist emotional excess and formal distortion |
| Social Realism | Parallel global movement; shared the commitment to depicting social conditions truthfully, though with different political frameworks |
| Dark Academia | Modern aesthetic descendant; shares the muted palette, intellectual tone, and preference for structured typography, though filtered through nostalgia |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>New Objectivity -- Neue Sachlichkeit</title>
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500&display=swap" rel="stylesheet">
<style>
/* ================================
CSS CUSTOM PROPERTIES
================================ */
:root {
/* Text */
--no-text-primary: #2C2C2E;
--no-text-secondary: #4A4A4D;
--no-text-tertiary: #7A7A7D;
--no-text-inverse: #F5F4F0;
/* Backgrounds */
--no-bg-primary: #EDEAE3;
--no-bg-secondary: #D6D3CB;
--no-bg-light: #F5F4F0;
--no-bg-dark: #1A1A1C;
/* Accents */
--no-accent-red: #8C3A2B;
--no-accent-red-dark: #6B2D22;
--no-accent-blue: #4A6670;
--no-accent-blue-dark: #3A525A;
--no-accent-gold: #C4A96A;
/* Structural */
--no-border: #B0AFA8;
--no-border-strong: #2C2C2E;
--no-surface: #D6D3CB;
}
/* ================================
RESET & BASE
================================ */
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: var(--no-bg-primary);
color: var(--no-text-secondary);
font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
-webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Archivo', 'Helvetica Neue', sans-serif;
font-weight: 700;
color: var(--no-text-primary);
line-height: 1.15;
letter-spacing: -0.01em;
}
a {
color: var(--no-accent-blue);
text-decoration: none;
transition: color 0.2s ease;
}
a:hover {
color: var(--no-accent-red);
}
img {
display: block;
max-width: 100%;
}
/* ================================
NAVIGATION
================================ */
.nav {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1100px;
margin: 0 auto;
padding: 1.25rem 2.5rem;
border-bottom: 1px solid var(--no-border);
}
.nav__logo {
font-family: 'Archivo', sans-serif;
font-weight: 700;
font-size: 1.1rem;
color: var(--no-text-primary);
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.nav__links {
display: flex;
gap: 2rem;
list-style: none;
}
.nav__links a {
font-family: 'Archivo', sans-serif;
font-weight: 500;
font-size: 0.8rem;
color: var(--no-text-secondary);
text-transform: uppercase;
letter-spacing: 0.06em;
padding-bottom: 2px;
border-bottom: 1px solid transparent;
}
.nav__links a:hover {
color: var(--no-accent-red);
border-bottom-color: var(--no-accent-red);
}
/* ================================
HERO SECTION
================================ */
.hero {
max-width: 1100px;
margin: 0 auto;
padding: 5rem 2.5rem 4rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 3rem;
align-items: center;
}
.hero__label {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--no-accent-red);
margin-bottom: 1.25rem;
}
.hero__title {
font-size: clamp(2.25rem, 5vw, 3.75rem);
line-height: 1.08;
text-transform: uppercase;
margin-bottom: 1.5rem;
}
.hero__description {
font-size: 1.05rem;
color: var(--no-text-secondary);
line-height: 1.75;
margin-bottom: 2rem;
max-width: 420px;
}
.hero__visual {
position: relative;
aspect-ratio: 4 / 3;
background: var(--no-surface);
border: 1px solid var(--no-border);
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.hero__visual-inner {
width: 70%;
height: 60%;
position: relative;
}
.hero__visual-rect {
position: absolute;
background: var(--no-accent-blue);
width: 60%;
height: 80%;
top: 10%;
left: 5%;
}
.hero__visual-rect--overlay {
background: var(--no-accent-red);
width: 50%;
height: 60%;
top: 25%;
left: 35%;
opacity: 0.85;
}
.hero__visual-line {
position: absolute;
height: 2px;
width: 90%;
background: var(--no-text-primary);
bottom: 15%;
left: 5%;
}
/* ================================
BUTTONS
================================ */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 12px 32px;
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.8rem;
letter-spacing: 0.08em;
text-transform: uppercase;
text-decoration: none;
border-radius: 0;
cursor: pointer;
transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.btn--primary {
background: var(--no-accent-red);
color: var(--no-text-inverse);
border: 2px solid var(--no-accent-red);
}
.btn--primary:hover {
background: var(--no-accent-red-dark);
border-color: var(--no-accent-red-dark);
color: var(--no-text-inverse);
}
.btn--outline {
background: transparent;
color: var(--no-text-primary);
border: 2px solid var(--no-border-strong);
}
.btn--outline:hover {
background: var(--no-text-primary);
color: var(--no-text-inverse);
}
/* ================================
DIVIDER
================================ */
.divider {
border: none;
height: 1px;
background: var(--no-border);
max-width: 1100px;
margin: 0 auto;
}
/* ================================
PRINCIPLES / FEATURES SECTION
================================ */
.principles {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2.5rem;
}
.principles__header {
margin-bottom: 3rem;
max-width: 480px;
}
.principles__header h2 {
font-size: 1.75rem;
text-transform: uppercase;
margin-bottom: 0.75rem;
}
.principles__header p {
font-size: 0.95rem;
color: var(--no-text-tertiary);
}
.principles__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
.principle-card {
padding: 2rem 0;
border-top: 2px solid var(--no-border-strong);
}
.principle-card__number {
font-family: 'Archivo', sans-serif;
font-weight: 700;
font-size: 0.75rem;
color: var(--no-accent-red);
margin-bottom: 1rem;
letter-spacing: 0.06em;
}
.principle-card h3 {
font-size: 1.05rem;
margin-bottom: 0.5rem;
text-transform: uppercase;
}
.principle-card p {
font-size: 0.9rem;
color: var(--no-text-secondary);
line-height: 1.65;
}
/* ================================
STATEMENT / QUOTE SECTION
================================ */
.statement {
background: var(--no-bg-dark);
color: var(--no-text-inverse);
padding: 5rem 2.5rem;
}
.statement__inner {
max-width: 700px;
margin: 0 auto;
}
.statement__label {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.14em;
text-transform: uppercase;
opacity: 0.5;
margin-bottom: 1.5rem;
}
.statement__text {
font-family: 'Inter', sans-serif;
font-size: 1.35rem;
font-weight: 400;
line-height: 1.75;
margin-bottom: 1.5rem;
}
.statement__attribution {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.75rem;
letter-spacing: 0.1em;
text-transform: uppercase;
opacity: 0.6;
}
/* ================================
CONTENT CARDS SECTION
================================ */
.cards-section {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2.5rem;
}
.cards-section__header {
display: flex;
align-items: flex-end;
justify-content: space-between;
margin-bottom: 2.5rem;
padding-bottom: 1rem;
border-bottom: 1px solid var(--no-border);
}
.cards-section__header h2 {
font-size: 1.5rem;
text-transform: uppercase;
}
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.card {
background: var(--no-bg-light);
border: 1px solid var(--no-border);
padding: 2rem;
position: relative;
transition: border-color 0.2s ease;
}
.card:hover {
border-color: var(--no-border-strong);
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: var(--no-accent-red);
}
.card__label {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.65rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--no-text-tertiary);
margin-bottom: 0.75rem;
}
.card__title {
font-family: 'Archivo', sans-serif;
font-weight: 700;
font-size: 1.1rem;
color: var(--no-text-primary);
margin-bottom: 0.75rem;
line-height: 1.3;
}
.card__body {
font-size: 0.9rem;
color: var(--no-text-secondary);
line-height: 1.7;
}
.card__link {
display: inline-block;
margin-top: 1.25rem;
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--no-accent-red);
border-bottom: 1px solid transparent;
}
.card__link:hover {
border-bottom-color: var(--no-accent-red);
color: var(--no-accent-red);
}
/* ================================
DATA TABLE SECTION
================================ */
.table-section {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2.5rem;
}
.table-section h2 {
font-size: 1.5rem;
text-transform: uppercase;
margin-bottom: 2rem;
}
.data-table {
width: 100%;
border-collapse: collapse;
}
.data-table th {
font-family: 'Archivo', sans-serif;
font-weight: 600;
font-size: 0.7rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--no-text-tertiary);
text-align: left;
padding: 0.75rem 1rem;
border-bottom: 2px solid var(--no-border-strong);
}
.data-table td {
padding: 0.75rem 1rem;
border-bottom: 1px solid var(--no-border);
font-size: 0.9rem;
}
.data-table tr:hover td {
background: var(--no-bg-secondary);
}
.data-table .accent {
color: var(--no-accent-red);
font-weight: 500;
}
/* ================================
CTA SECTION
================================ */
.cta {
background: var(--no-accent-red);
color: var(--no-text-inverse);
padding: 4rem 2.5rem;
text-align: center;
}
.cta h2 {
color: var(--no-text-inverse);
font-size: clamp(1.5rem, 3vw, 2.25rem);
text-transform: uppercase;
margin-bottom: 1rem;
}
.cta p {
font-size: 1rem;
max-width: 480px;
margin: 0 auto 2rem;
opacity: 0.9;
}
.cta .btn--inverse {
background: var(--no-bg-light);
color: var(--no-accent-red);
border: 2px solid var(--no-bg-light);
}
.cta .btn--inverse:hover {
background: var(--no-text-primary);
color: var(--no-text-inverse);
border-color: var(--no-text-primary);
}
/* ================================
FOOTER
================================ */
.footer {
background: var(--no-bg-dark);
padding: 3rem 2.5rem;
}
.footer__inner {
max-width: 1100px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 2rem;
}
.footer__col h4 {
color: var(--no-text-inverse);
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.1em;
margin-bottom: 1rem;
opacity: 0.6;
}
.footer__col ul {
list-style: none;
}
.footer__col ul li {
margin-bottom: 0.5rem;
}
.footer__col ul a {
color: var(--no-text-inverse);
font-size: 0.85rem;
opacity: 0.7;
transition: opacity 0.2s ease;
}
.footer__col ul a:hover {
opacity: 1;
color: var(--no-text-inverse);
}
.footer__bottom {
max-width: 1100px;
margin: 2rem auto 0;
padding-top: 1.5rem;
border-top: 1px solid rgba(245, 244, 240, 0.1);
font-size: 0.8rem;
color: var(--no-text-inverse);
opacity: 0.4;
}
/* ================================
RESPONSIVE
================================ */
@media (max-width: 768px) {
.nav {
padding: 1rem 1.5rem;
}
.nav__links {
gap: 1rem;
}
.hero {
grid-template-columns: 1fr;
padding: 3rem 1.5rem 2.5rem;
gap: 2rem;
}
.principles__grid {
grid-template-columns: 1fr;
}
.card-grid {
grid-template-columns: 1fr;
}
.footer__inner {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.table-section {
padding: 2.5rem 1.5rem;
overflow-x: auto;
}
}
</style>
</head>
<body>
<!-- ======================== NAVIGATION ======================== -->
<nav class="nav">
<a href="#" class="nav__logo">Sachlichkeit</a>
<ul class="nav__links">
<li><a href="#">Archive</a></li>
<li><a href="#">Analysis</a></li>
<li><a href="#">Documents</a></li>
<li><a href="#">About</a></li>
</ul>
</nav>
<!-- ======================== HERO ======================== -->
<section class="hero">
<div class="hero__content">
<p class="hero__label">Neue Sachlichkeit -- 1919-1933</p>
<h1 class="hero__title">Sharp Realism, Clinical Precision</h1>
<p class="hero__description">
The world observed without sentiment. Design stripped to its functional
core, serving truth over comfort, clarity over decoration.
</p>
<div style="display: flex; gap: 1rem;">
<a href="#" class="btn btn--primary">Explore Archive</a>
<a href="#" class="btn btn--outline">Read More</a>
</div>
</div>
<div class="hero__visual">
<div class="hero__visual-inner">
<div class="hero__visual-rect"></div>
<div class="hero__visual-rect hero__visual-rect--overlay"></div>
<div class="hero__visual-line"></div>
</div>
</div>
</section>
<hr class="divider">
<!-- ======================== PRINCIPLES ======================== -->
<section class="principles">
<div class="principles__header">
<h2>Guiding Principles</h2>
<p>Design shaped by objective analysis, social awareness, and the rejection of decorative excess.</p>
</div>
<div class="principles__grid">
<div class="principle-card">
<div class="principle-card__number">01</div>
<h3>Objectivity</h3>
<p>Every design decision is grounded in rational analysis. The object is examined for what it is, not what we wish it to be.</p>
</div>
<div class="principle-card">
<div class="principle-card__number">02</div>
<h3>Function</h3>
<p>Form emerges from purpose. Architecture and design fulfill objective requirements without stylistic pretension.</p>
</div>
<div class="principle-card">
<div class="principle-card__number">03</div>
<h3>Precision</h3>
<p>Clinical attention to detail. Unbroken contour lines, measured proportions, and meticulous execution define every element.</p>
</div>
<div class="principle-card">
<div class="principle-card__number">04</div>
<h3>Social Awareness</h3>
<p>Design exists within society, not above it. The Verist tradition demands that we confront reality, not embellish it.</p>
</div>
<div class="principle-card">
<div class="principle-card__number">05</div>
<h3>Restraint</h3>
<p>Chromatic sobriety. Muted palettes, measured spacing, and the absence of ornament communicate intellectual clarity.</p>
</div>
<div class="principle-card">
<div class="principle-card__number">06</div>
<h3>Honesty</h3>
<p>Materials are what they are. Surfaces do not simulate. The medium is acknowledged, not disguised.</p>
</div>
</div>
</section>
<hr class="divider">
<!-- ======================== STATEMENT ======================== -->
<section class="statement">
<div class="statement__inner">
<p class="statement__label">Documentation</p>
<p class="statement__text">
"The object, the subject matter, was scrutinized in order to fulfill its
function and serve its user as best as possible. The way in which this
was approached was sachlich -- objectively and factually -- without
emotional attachment."
</p>
<p class="statement__attribution">-- On the Principles of Neue Sachlichkeit</p>
</div>
</section>
<!-- ======================== CONTENT CARDS ======================== -->
<section class="cards-section">
<div class="cards-section__header">
<h2>Case Studies</h2>
<a href="#" class="btn btn--outline" style="font-size: 0.7rem; padding: 8px 20px;">View All</a>
</div>
<div class="card-grid">
<article class="card">
<p class="card__label">Verist Approach</p>
<h3 class="card__title">Social Commentary Through Design</h3>
<p class="card__body">
The Verist wing -- Otto Dix, George Grosz -- tore apart the surface
of Weimar society with merciless precision, exposing corruption and
moral decay beneath bourgeois respectability.
</p>
<a href="#" class="card__link">Read Analysis</a>
</article>
<article class="card">
<p class="card__label">Classicist Approach</p>
<h3 class="card__title">Clinical Detachment and Stillness</h3>
<p class="card__body">
Christian Schad and the Classicists pursued an almost photographic
precision -- smooth surfaces, static compositions, and intimate
knowledge rendered with empirical detachment.
</p>
<a href="#" class="card__link">Read Analysis</a>
</article>
<article class="card">
<p class="card__label">Architecture</p>
<h3 class="card__title">Functionalism in the Built Environment</h3>
<p class="card__body">
Flat roofs, white walls, steel-and-glass construction, and long
window bands. Architecture serving objective functions, free from
historical ornament or personal taste.
</p>
<a href="#" class="card__link">Read Analysis</a>
</article>
</div>
</section>
<hr class="divider">
<!-- ======================== DATA TABLE ======================== -->
<section class="table-section">
<h2>Key Figures</h2>
<table class="data-table">
<thead>
<tr>
<th>Name</th>
<th>Role</th>
<th>Contribution</th>
<th>Wing</th>
</tr>
</thead>
<tbody>
<tr>
<td class="accent">Otto Dix</td>
<td>Painter</td>
<td>Merciless portraiture of Weimar society and war</td>
<td>Verist</td>
</tr>
<tr>
<td class="accent">George Grosz</td>
<td>Painter, Satirist</td>
<td>Caricatural social critique of bourgeois decadence</td>
<td>Verist</td>
</tr>
<tr>
<td class="accent">Christian Schad</td>
<td>Painter</td>
<td>Clinical precision and intimate, detached portraiture</td>
<td>Classicist</td>
</tr>
<tr>
<td class="accent">Max Beckmann</td>
<td>Painter</td>
<td>Monumental figures, existential narrative</td>
<td>Independent</td>
</tr>
<tr>
<td class="accent">Ernst May</td>
<td>Architect</td>
<td>Neue Frankfurt social housing program</td>
<td>Architecture</td>
</tr>
</tbody>
</table>
</section>
<!-- ======================== CTA ======================== -->
<section class="cta">
<h2>Design With Clarity</h2>
<p>
The New Objectivity demands that we look at the world as it is.
Build interfaces that inform, not inflate.
</p>
<a href="#" class="btn btn--inverse">Get Started</a>
</section>
<!-- ======================== FOOTER ======================== -->
<footer class="footer">
<div class="footer__inner">
<div class="footer__col">
<h4>Archive</h4>
<ul>
<li><a href="#">Paintings</a></li>
<li><a href="#">Architecture</a></li>
<li><a href="#">Photography</a></li>
<li><a href="#">Typography</a></li>
</ul>
</div>
<div class="footer__col">
<h4>Resources</h4>
<ul>
<li><a href="#">Design Guide</a></li>
<li><a href="#">Color Reference</a></li>
<li><a href="#">Font Pairings</a></li>
<li><a href="#">Component Library</a></li>
</ul>
</div>
<div class="footer__col">
<h4>About</h4>
<ul>
<li><a href="#">Methodology</a></li>
<li><a href="#">Contributors</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
<p class="footer__bottom">
Neue Sachlichkeit. Weimar Republic, 1919--1933. Objectivity in all things.
</p>
</footer>
</body>
</html>