StealThis .dev
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.

Open in Lab
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.