Dreamcore is a surrealist internet aesthetic defined by liminal spaces, uncanny emptiness, VHS distortion, and the eerie nostalgia of places that feel familiar yet deeply wrong. It draws from half-remembered dreams, abandoned architecture, and the glitchy imperfection of degraded analog media. In digital design, Dreamcore manifests as unsettling layouts with washed-out palettes, off-kilter typography, static noise overlays, and compositions that provoke a sense of disorientation and vague unease – as if the viewer has wandered into a space that exists between waking and sleep.
| Swatch | Hex | Role |
|---|---|---|
| Void White | #F0EDE4 |
Primary background, empty liminal space |
| Fluorescent Yellow | #E8E4A0 |
Uncanny lighting, ambient wash |
| Static Grey | #A8A8A0 |
Noise texture, muted surfaces |
| Pool Blue | #7BA7BC |
Desaturated water, sky tones |
| Liminal Green | #8B9E72 |
Sickly institutional surfaces |
| VHS Purple | #7B6B8A |
Chromatic aberration accent |
| Faded Pink | #C8A8A8 |
Warm distortion, skin tones |
| Monitor Black | #1A1A1E |
Deep shadows, text |
| Hallway Beige | #CCC4B0 |
Institutional walls, carpet tones |
| Error Red | #A04040 |
Warning, glitch accent |
:root {
--dream-void: #F0EDE4;
--dream-fluorescent: #E8E4A0;
--dream-static: #A8A8A0;
--dream-pool: #7BA7BC;
--dream-liminal: #8B9E72;
--dream-vhs: #7B6B8A;
--dream-faded-pink: #C8A8A8;
--dream-monitor: #1A1A1E;
--dream-hallway: #CCC4B0;
--dream-error: #A04040;
}
| Font | Weight(s) | Usage | Link |
|---|---|---|---|
| Space Mono | 400, 700 | Primary text; monospaced, system-terminal feel | Space Mono |
| Courier Prime | 400, 700 | Body text; typewriter-quality mono with a worn texture | Courier Prime |
| Inter | 300, 400, 500 | System UI text, labels, interface elements | Inter |
| Creepster | 400 | Decorative accent for unsettling headers (use sparingly) | Creepster |
| VT323 | 400 | Pixel-style monospace for retro terminal and error messages | VT323 |
| Heading | Body | Mood |
|---|---|---|
| Space Mono 700 | Courier Prime 400 | Terminal log, institutional signage |
| VT323 400 | Inter 300 | Retro CRT meets modern liminal |
| Inter 500 | Space Mono 400 | Clean but off: corporate unreality |
@import url('https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Courier+Prime:wght@400;700&family=VT323&display=swap');
body {
font-family: 'Space Mono', 'Courier New', monospace;
font-size: 0.95rem;
line-height: 1.7;
color: var(--dream-monitor);
-webkit-font-smoothing: auto;
}
h1, h2, h3 {
font-family: 'Space Mono', monospace;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--dream-static);
}
.system-text {
font-family: 'VT323', monospace;
font-size: 1.25rem;
color: var(--dream-liminal);
}
.dream-card {
background: var(--dream-void);
border: 1px solid var(--dream-static);
padding: 48px;
max-width: 500px;
position: relative;
box-shadow: 0 0 40px rgba(26, 26, 30, 0.04);
}
.dream-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(168, 168, 160, 0.03) 2px,
rgba(168, 168, 160, 0.03) 4px
);
pointer-events: none;
}
.dream-vhs-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
z-index: 1000;
background: repeating-linear-gradient(
0deg,
rgba(0, 0, 0, 0.02) 0px,
rgba(0, 0, 0, 0.02) 1px,
transparent 1px,
transparent 3px
);
}
.dream-vhs-overlay::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(
ellipse at center,
transparent 60%,
rgba(26, 26, 30, 0.08) 100%
);
}
.dream-button {
background: transparent;
color: var(--dream-monitor);
border: 1px solid var(--dream-static);
padding: 12px 32px;
font-family: 'Space Mono', monospace;
font-size: 0.85rem;
letter-spacing: 0.1em;
text-transform: uppercase;
cursor: pointer;
position: relative;
transition: all 0.3s ease;
}
.dream-button:hover {
background: var(--dream-fluorescent);
border-color: var(--dream-monitor);
color: var(--dream-monitor);
text-shadow:
2px 0 var(--dream-error),
-2px 0 var(--dream-pool);
}
.dream-hero {
background: var(--dream-hallway);
min-height: 80vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
}
.dream-hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
linear-gradient(180deg, rgba(240,237,228,0.3) 0%, transparent 30%, transparent 70%, rgba(240,237,228,0.3) 100%);
pointer-events: none;
}
.dream-hero h1 {
font-family: 'Space Mono', monospace;
font-size: 1.5rem;
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.3em;
color: var(--dream-static);
position: relative;
}
.dream-hero .subtitle {
font-family: 'VT323', monospace;
font-size: 1rem;
color: var(--dream-liminal);
margin-top: 24px;
position: relative;
}
.dream-system {
font-family: 'VT323', monospace;
font-size: 1.1rem;
color: var(--dream-liminal);
background: rgba(26, 26, 30, 0.03);
border-left: 2px solid var(--dream-static);
padding: 12px 20px;
margin: 32px 0;
}
.dream-system::before {
content: '> ';
color: var(--dream-error);
}
.dream-nav {
background: var(--dream-void);
border-bottom: 1px solid rgba(168, 168, 160, 0.3);
padding: 24px 40px;
display: flex;
justify-content: space-between;
align-items: center;
}
.dream-nav a {
font-family: 'Space Mono', monospace;
font-size: 0.75rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--dream-static);
text-decoration: none;
transition: color 0.3s ease;
}
.dream-nav a:hover {
color: var(--dream-monitor);
text-shadow:
1px 0 var(--dream-error),
-1px 0 var(--dream-pool);
}
| Aesthetic | Relationship |
|---|---|
| Weirdcore | Close sibling; both use surreal, unsettling imagery but Weirdcore is more aggressively distorted and chaotic |
| Vaporwave | Shares VHS nostalgia and surreal digital spaces; Vaporwave is more colorful, ironic, and consumer-culture-focused |
| Liminal Space | Overlapping category; liminal spaces are the primary subject matter of Dreamcore photography |
| Y2K | Both reference late-90s/early-2000s digital aesthetics; Y2K is optimistic and glossy while Dreamcore is eerie and degraded |
| Dark Academia | Both mine nostalgia for old institutional spaces; Dark Academia is scholarly and warm while Dreamcore is cold and empty |
| Brutalism (web) | Shares raw, uncomfortable design choices and rejection of UX conventions; Brutalism is aggressive while Dreamcore is passively unsettling |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dreamcore Layout</title>
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=VT323&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Space Mono', 'Courier New', monospace;
font-size: 0.95rem;
line-height: 1.7;
color: #1A1A1E;
background: #F0EDE4;
min-height: 100vh;
position: relative;
}
/* Scanline overlay */
body::after {
content: '';
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
pointer-events: none;
z-index: 1000;
background: repeating-linear-gradient(
0deg,
rgba(0,0,0,0.015) 0px,
rgba(0,0,0,0.015) 1px,
transparent 1px,
transparent 3px
);
}
.nav {
background: #F0EDE4;
border-bottom: 1px solid rgba(168,168,160,0.3);
padding: 24px 40px;
display: flex;
justify-content: space-between;
}
.nav a {
font-size: 0.75rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: #A8A8A0;
text-decoration: none;
}
.hero {
background: #CCC4B0;
min-height: 70vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
position: relative;
}
.hero::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background: linear-gradient(180deg,
rgba(240,237,228,0.3) 0%, transparent 30%,
transparent 70%, rgba(240,237,228,0.3) 100%);
}
.hero h1 {
font-size: 1.4rem;
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.3em;
color: #A8A8A0;
position: relative;
}
.hero .sub {
font-family: 'VT323', monospace;
font-size: 1rem;
color: #8B9E72;
margin-top: 24px;
position: relative;
}
.content {
max-width: 600px;
margin: 100px auto;
padding: 0 40px;
}
.card {
background: #F0EDE4;
border: 1px solid #A8A8A0;
padding: 48px;
margin-bottom: 60px;
position: relative;
}
.card::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background: repeating-linear-gradient(
0deg, transparent, transparent 2px,
rgba(168,168,160,0.03) 2px,
rgba(168,168,160,0.03) 4px
);
pointer-events: none;
}
.card h2 {
font-size: 0.85rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.15em;
color: #A8A8A0;
margin-bottom: 16px;
}
.card p {
color: rgba(26,26,30,0.6);
font-size: 0.9rem;
}
.system {
font-family: 'VT323', monospace;
font-size: 1.1rem;
color: #8B9E72;
border-left: 2px solid #A8A8A0;
padding: 12px 20px;
margin: 40px 0;
}
.system::before {
content: '> ';
color: #A04040;
}
.button {
display: inline-block;
margin-top: 20px;
background: transparent;
color: #1A1A1E;
border: 1px solid #A8A8A0;
padding: 10px 28px;
font-family: 'Space Mono', monospace;
font-size: 0.8rem;
letter-spacing: 0.1em;
text-transform: uppercase;
text-decoration: none;
}
</style>
</head>
<body>
<nav class="nav">
<a href="#">room_0x00</a>
<div>
<a href="#">corridor</a>
<a href="#" style="margin-left:24px;">exit</a>
</div>
</nav>
<header class="hero">
<h1>You are here</h1>
<div class="sub">location unknown . . . do you remember this place?</div>
</header>
<main class="content">
<div class="system">this room should not exist</div>
<div class="card">
<h2>Room 14</h2>
<p>The fluorescent lights hum at a frequency you cannot name.
The carpet smells like 1997. No one else is here.</p>
<a href="#" class="button">enter</a>
</div>
<div class="card">
<h2>The Pool</h2>
<p>Still water reflects a ceiling that should not be this high.
The clock on the wall reads a time that has not happened yet.</p>
<a href="#" class="button">enter</a>
</div>
</main>
</body>
</html>