Pages Medium
Real Estate — Light Minimal
Light-mode architectural property site with warm grey palette, Fraunces italic display and Inter body fonts, split hero with parallax image stack, listings grid with filter bar, and dark contact section.
gsapscrolltriggerlenisfrauncesinter
Targets: JS HTML
Code
/* ── Demo 46: Real Estate — Light Minimal ── */
/* Palette: White / Warm Gray / Charcoal / Soft Terracotta accent */
/* Fonts: Fraunces (display serif italic) + Inter (clean UI/body) */
:root {
--white: #ffffff;
--off-white: #fafaf8;
--light: #f2f0ed;
--mid: #e4e1db;
--stone: #b8b4ad;
--muted: #8a8680;
--charcoal: #2a2825;
--black: #1a1816;
--accent: #c4856a; /* warm terracotta */
--accent-light: #f0e6e0; /* blush tint */
--accent-dark: #9c5c45;
--green: #5a7a65; /* sage */
}
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--white);
color: var(--charcoal);
line-height: 1.6;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
/* ── Typography Utilities ── */
.serif {
font-family: 'Fraunces', Georgia, serif;
}
.serif-italic {
font-family: 'Fraunces', Georgia, serif;
font-style: italic;
}
/* ── Navigation ── */
.nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.5rem 3rem;
background: transparent;
transition: background 0.4s ease, padding 0.4s ease, border-bottom 0.4s ease;
}
.nav.scrolled {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
padding: 1rem 3rem;
border-bottom: 1px solid var(--mid);
}
.nav-brand {
display: flex;
align-items: center;
gap: 0.75rem;
text-decoration: none;
color: var(--charcoal);
}
.nav-mark {
width: 28px;
height: 28px;
background: var(--charcoal);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
.nav-name {
font-family: 'Fraunces', serif;
font-size: 1.1rem;
font-weight: 400;
letter-spacing: 0.05em;
color: var(--charcoal);
}
.nav-links {
display: flex;
align-items: center;
gap: 2.5rem;
list-style: none;
}
.nav-links a {
text-decoration: none;
color: var(--charcoal);
font-size: 0.85rem;
font-weight: 500;
letter-spacing: 0.04em;
transition: color 0.2s;
}
.nav-links a:hover {
color: var(--accent);
}
.nav-cta {
display: inline-block;
padding: 0.65rem 1.5rem;
background: var(--charcoal);
color: var(--white);
text-decoration: none;
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
border-radius: 2px;
transition: background 0.2s, transform 0.2s;
}
.nav-cta:hover {
background: var(--accent);
transform: translateY(-1px);
}
/* ── Hero ── */
.hero {
display: grid;
grid-template-columns: 1fr 1fr;
min-height: 100vh;
padding-top: 5rem;
}
.hero-left {
display: flex;
flex-direction: column;
justify-content: center;
padding: 5rem 3rem 5rem 3rem;
background: var(--off-white);
}
.hero-label {
font-size: 0.72rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--muted);
margin-bottom: 2rem;
}
.hero-h1 {
font-family: 'Fraunces', serif;
font-size: clamp(2.8rem, 5vw, 4.5rem);
font-weight: 300;
line-height: 1.15;
color: var(--black);
margin-bottom: 1.5rem;
}
.hero-h1 .h1-italic {
font-style: italic;
color: var(--accent);
}
.hero-body {
font-size: 1rem;
color: var(--muted);
line-height: 1.8;
max-width: 400px;
margin-bottom: 2.5rem;
}
.hero-btns {
display: flex;
gap: 1rem;
align-items: center;
margin-bottom: 4rem;
}
.btn-dark {
display: inline-block;
padding: 0.85rem 2rem;
background: var(--charcoal);
color: var(--white);
text-decoration: none;
font-size: 0.82rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
border-radius: 2px;
transition: background 0.2s, transform 0.2s;
}
.btn-dark:hover {
background: var(--accent);
transform: translateY(-2px);
}
.btn-line {
display: inline-block;
color: var(--charcoal);
text-decoration: none;
font-size: 0.85rem;
font-weight: 500;
border-bottom: 1px solid var(--charcoal);
padding-bottom: 2px;
transition: color 0.2s, border-color 0.2s;
}
.btn-line:hover {
color: var(--accent);
border-color: var(--accent);
}
.hero-metric-row {
display: flex;
align-items: center;
gap: 2rem;
padding-top: 2rem;
border-top: 1px solid var(--mid);
}
.hero-metric {
display: flex;
flex-direction: column;
gap: 0.25rem;
}
.hm-num {
font-family: 'Fraunces', serif;
font-size: 2rem;
font-weight: 300;
color: var(--black);
line-height: 1;
}
.hm-label {
font-size: 0.72rem;
font-weight: 500;
color: var(--stone);
letter-spacing: 0.05em;
}
.hero-metric-div {
width: 1px;
height: 40px;
background: var(--mid);
}
/* Hero right — image stack */
.hero-right {
position: relative;
background: var(--light);
overflow: hidden;
}
.hero-img {
position: absolute;
border-radius: 4px;
overflow: hidden;
}
.hero-img--main {
top: 10%;
left: 10%;
right: 15%;
bottom: 25%;
background: linear-gradient(
145deg,
#d6cec4 0%,
#c8bfb2 30%,
#b8a99a 60%,
#a89486 100%
);
}
.hero-img--sub {
bottom: 8%;
right: 8%;
width: 45%;
height: 35%;
background: linear-gradient(
135deg,
#e8e2d8 0%,
#d4c9bc 40%,
#c5b8aa 100%
);
box-shadow: 0 20px 60px rgba(0,0,0,0.12);
}
/* ── Section shared ── */
.section-eyebrow {
display: inline-block;
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 1rem;
}
/* ── Listings Section ── */
.listings-section {
padding: 6rem 3rem;
background: var(--white);
border-top: 1px solid var(--mid);
}
.listings-header {
display: flex;
align-items: baseline;
justify-content: space-between;
flex-wrap: wrap;
gap: 1.5rem;
margin-bottom: 3rem;
}
.listings-header h2 {
font-family: 'Fraunces', serif;
font-size: clamp(1.8rem, 3vw, 2.5rem);
font-weight: 300;
color: var(--black);
}
.filter-bar {
display: flex;
gap: 0.5rem;
}
.filter-btn {
padding: 0.45rem 1rem;
border: 1px solid var(--mid);
background: transparent;
color: var(--muted);
font-family: 'Inter', sans-serif;
font-size: 0.78rem;
font-weight: 500;
letter-spacing: 0.04em;
border-radius: 2px;
cursor: pointer;
transition: all 0.2s;
}
.filter-btn:hover,
.filter-btn.active {
background: var(--charcoal);
color: var(--white);
border-color: var(--charcoal);
}
.listings-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto;
gap: 1.5rem;
}
.listing-card--large {
grid-column: 1 / 2;
grid-row: 1 / 3;
}
.listing-card {
background: var(--off-white);
border: 1px solid var(--mid);
border-radius: 4px;
overflow: hidden;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.listing-card:hover {
transform: translateY(-4px);
box-shadow: 0 20px 60px rgba(0,0,0,0.08);
}
.lc-img {
position: relative;
overflow: hidden;
}
.listing-card--large .lc-img {
height: 320px;
}
.lc-img--1 {
background: linear-gradient(145deg, #b8b0a4 0%, #9a9088 40%, #7c7068 100%);
}
.lc-img--2 {
height: 180px;
background: linear-gradient(135deg, #c0bdb8 0%, #a8a49e 50%, #8a8680 100%);
}
.lc-img--3 {
height: 180px;
background: linear-gradient(125deg, #c8c2ba 0%, #b0aa9e 50%, #948e86 100%);
}
.lc-badge {
position: absolute;
top: 1rem;
left: 1rem;
padding: 0.3rem 0.7rem;
background: var(--accent);
color: var(--white);
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
border-radius: 2px;
}
.lc-info {
padding: 1.5rem;
}
.lc-info--sm {
padding: 1.25rem;
}
.lc-type {
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--stone);
margin-bottom: 0.5rem;
}
.lc-info h3 {
font-family: 'Fraunces', serif;
font-size: 1.3rem;
font-weight: 300;
color: var(--black);
margin-bottom: 0.6rem;
}
.lc-info--sm h3 {
font-size: 1.1rem;
}
.lc-info p {
font-size: 0.85rem;
color: var(--muted);
line-height: 1.7;
margin-bottom: 1rem;
}
.lc-details {
display: flex;
gap: 1rem;
margin-bottom: 1rem;
}
.lc-details span {
font-size: 0.78rem;
color: var(--stone);
font-weight: 500;
}
.lc-price {
font-family: 'Fraunces', serif;
font-size: 1.4rem;
font-weight: 300;
color: var(--charcoal);
}
.lc-info--sm .lc-price {
font-size: 1.2rem;
}
.listings-more {
margin-top: 2.5rem;
text-align: center;
}
/* ── Process Section ── */
.process-section {
padding: 6rem 3rem;
background: var(--off-white);
border-top: 1px solid var(--mid);
}
.process-inner {
max-width: 1100px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5rem;
align-items: start;
}
.process-left h2 {
font-family: 'Fraunces', serif;
font-size: clamp(2rem, 3.5vw, 3rem);
font-weight: 300;
line-height: 1.25;
color: var(--black);
margin-bottom: 1.2rem;
}
.process-left h2 em {
font-style: italic;
color: var(--accent);
}
.process-left p {
font-size: 0.95rem;
color: var(--muted);
line-height: 1.8;
}
.process-steps {
display: flex;
flex-direction: column;
gap: 0;
}
.step {
display: flex;
gap: 1.5rem;
padding: 1.5rem 0;
border-bottom: 1px solid var(--mid);
}
.step:first-child {
padding-top: 0;
}
.step-num {
font-family: 'Fraunces', serif;
font-size: 0.85rem;
font-weight: 300;
color: var(--accent);
flex-shrink: 0;
width: 28px;
padding-top: 2px;
}
.step-content h4 {
font-size: 0.95rem;
font-weight: 600;
color: var(--charcoal);
margin-bottom: 0.4rem;
letter-spacing: 0.01em;
}
.step-content p {
font-size: 0.85rem;
color: var(--muted);
line-height: 1.7;
}
/* ── About Section ── */
.about-section {
padding: 6rem 3rem;
background: var(--white);
border-top: 1px solid var(--mid);
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5rem;
align-items: center;
max-width: 100%;
}
.about-img-block {
position: relative;
height: 500px;
}
.ab-img {
position: absolute;
border-radius: 4px;
}
.ab-img--main {
top: 0;
left: 0;
right: 20%;
bottom: 20%;
background: linear-gradient(145deg, #d0c8c0 0%, #b8b0a4 50%, #a0988c 100%);
}
.ab-img--secondary {
bottom: 0;
right: 0;
width: 50%;
height: 45%;
background: linear-gradient(135deg, #c4bdb6 0%, #a89e95 100%);
box-shadow: 0 15px 50px rgba(0,0,0,0.1);
}
.about-content {
max-width: 440px;
}
.about-content h2 {
font-family: 'Fraunces', serif;
font-size: clamp(2.5rem, 4vw, 3.5rem);
font-weight: 300;
line-height: 1.15;
color: var(--black);
margin-bottom: 1.5rem;
}
.about-content p {
font-size: 0.95rem;
color: var(--muted);
line-height: 1.85;
margin-bottom: 1.2rem;
}
/* ── Contact Section ── */
.contact-section {
padding: 6rem 3rem;
background: var(--charcoal);
border-top: 1px solid rgba(255,255,255,0.05);
}
.contact-inner {
max-width: 1100px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5rem;
align-items: start;
}
.contact-section .section-eyebrow {
color: var(--accent);
}
.contact-left h2 {
font-family: 'Fraunces', serif;
font-size: clamp(2rem, 3.5vw, 3rem);
font-weight: 300;
color: var(--white);
line-height: 1.2;
margin-bottom: 2.5rem;
}
.contact-details {
display: flex;
flex-direction: column;
gap: 1.2rem;
}
.cd-item {
display: flex;
flex-direction: column;
gap: 0.2rem;
}
.cd-label {
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--stone);
}
.cd-item span:last-child {
font-size: 0.9rem;
color: rgba(255,255,255,0.7);
}
.contact-form {
display: flex;
flex-direction: column;
gap: 1.2rem;
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.form-field {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.form-field label {
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--stone);
}
.form-input-mock {
height: 48px;
background: rgba(255,255,255,0.06);
border: 1px solid rgba(255,255,255,0.12);
border-radius: 2px;
transition: border-color 0.2s;
}
.form-input-mock:hover {
border-color: rgba(255,255,255,0.25);
}
.form-input-mock--tall {
height: 120px;
}
/* ── Footer ── */
.footer {
padding: 2rem 3rem;
background: var(--black);
border-top: 1px solid rgba(255,255,255,0.05);
display: flex;
align-items: center;
justify-content: space-between;
}
.footer-brand {
display: flex;
align-items: center;
gap: 0.75rem;
}
.footer-brand .nav-mark {
background: var(--stone);
width: 20px;
height: 20px;
}
.footer-brand span {
font-family: 'Fraunces', serif;
font-size: 0.9rem;
font-weight: 300;
color: var(--stone);
}
.footer p {
font-size: 0.78rem;
color: var(--muted);
}
/* ── Responsive ── */
@media (max-width: 1024px) {
.hero { grid-template-columns: 1fr; min-height: auto; }
.hero-right { height: 50vw; min-height: 300px; }
.hero-left { padding: 6rem 2rem 3rem; }
.process-inner { grid-template-columns: 1fr; gap: 3rem; }
.about-section { grid-template-columns: 1fr; }
.about-img-block { height: 350px; }
.contact-inner { grid-template-columns: 1fr; gap: 3rem; }
.listings-grid { grid-template-columns: 1fr 1fr; }
.listing-card--large { grid-column: 1 / 3; grid-row: auto; }
}
@media (max-width: 768px) {
.nav { padding: 1.25rem 1.5rem; }
.nav.scrolled { padding: 0.85rem 1.5rem; }
.nav-links { display: none; }
.listings-section, .process-section, .about-section, .contact-section { padding: 4rem 1.5rem; }
.footer { padding: 1.5rem; flex-direction: column; gap: 1rem; text-align: center; }
.listings-grid { grid-template-columns: 1fr; }
.listing-card--large { grid-column: auto; }
.form-row { grid-template-columns: 1fr; }
.filter-bar { flex-wrap: wrap; }
}
/* ── Reduced Motion ── */
html.reduced-motion * {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
html.reduced-motion .listing-card:hover {
transform: none;
}Real Estate — Light Minimal
Light-mode architectural property site with warm grey palette, Fraunces italic display and Inter body fonts, split hero with parallax image stack, listings grid with filter bar, and dark contact section.
Source
- Repository:
libs-genclaude - Original demo id:
46-real-estate
Notes
Light-mode architectural property site with warm grey palette, Fraunces italic display and Inter body fonts, split hero with parallax image stack, listings grid with filter bar, and dark contact section.