/* =========================================================
   JHARŌKHA ESTATES — design tokens
   Sandstone red / Stone beige / Ink / Blueprint teal / Brass
   Display: Bricolage Grotesque · Body: Work Sans · Labels: IBM Plex Mono
========================================================= */
:root{
  --sandstone:   #A8492F;
  --sandstone-d: #7E351F;
  --stone:       #E4D6C3;
  --stone-paper: #EFE6D6;
  --ink:         #201C1A;
  --blueprint:   #2B4C56;
  --blueprint-d: #1B333B;
  --brass:       #A8873E;
  --line:        rgba(32,28,26,0.16);
  --line-light:  rgba(228,214,195,0.22);

  --font-display: "Bricolage Grotesque", sans-serif;
  --font-body: "Work Sans", sans-serif;
  --font-mono: "IBM Plex Mono", monospace;

  --container: 1180px;
  --radius: 3px;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0; background: var(--stone); color: var(--ink);
  font-family: var(--font-body); font-size: 16px; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
h1,h2,h3{ font-family: var(--font-display); font-weight: 600; margin:0; color: var(--ink); letter-spacing: -0.01em; }
p{ margin:0; }
a{ color: inherit; text-decoration: none; }
button{ font-family: inherit; cursor:pointer; }

.dim-label{
  font-family: var(--font-mono); font-size: 0.7rem; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--sandstone); margin: 0 0 0.9rem;
}

/* =============== NAV =============== */
.nav{
  position: sticky; top:0; z-index: 100;
  background: rgba(228,214,195,0.9); backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.nav__inner{
  max-width: var(--container); margin:0 auto; padding: 1.1rem 1.5rem;
  display:flex; align-items:center; justify-content: space-between;
}
.nav__mark{
  font-family: var(--font-display); font-weight: 700; font-size: 1.2rem; letter-spacing: 0.01em;
}
.nav__links{ display:flex; align-items:center; gap: 2rem; }
.nav__links a{ font-size: 0.86rem; color: var(--blueprint); transition: color 0.2s var(--ease); }
.nav__links a:hover{ color: var(--sandstone); }
.nav__cta{
  border: 1px solid var(--ink); padding: 0.5rem 1.05rem; border-radius: var(--radius);
  color: var(--ink) !important;
}
.nav__cta:hover{ background: var(--ink); color: var(--stone) !important; }
.nav__burger{ display:none; background:none; border:none; flex-direction:column; gap:5px; padding:0.4rem; }
.nav__burger span{ width:22px; height:2px; background: var(--ink); display:block; transition: transform .25s var(--ease), opacity .25s var(--ease); }
.nav__burger.is-open span:nth-child(1){ transform: translateY(7px) rotate(45deg); }
.nav__burger.is-open span:nth-child(2){ opacity:0; }
.nav__burger.is-open span:nth-child(3){ transform: translateY(-7px) rotate(-45deg); }
.nav__mobile{ display:none; flex-direction:column; border-top: 1px solid var(--line); background: var(--stone); }
.nav__mobile a{ padding: 1rem 1.5rem; border-bottom: 1px solid var(--line); font-size: 0.95rem; }
.nav__mobile.is-open{ display:flex; }

/* =============== HERO =============== */
.hero{
  max-width: var(--container); margin: 0 auto; padding: 4.5rem 1.5rem 3rem;
  display:grid; grid-template-columns: 1fr 0.85fr; gap: 2rem; align-items:center;
  min-height: 78vh;
}
.hero__title{
  font-size: clamp(2.7rem, 5.6vw, 4.4rem); line-height: 0.98; letter-spacing: -0.02em;
  margin-bottom: 1.5rem;
}
.hero__title em{ font-style: normal; color: var(--sandstone); }
.hero__sub{ max-width: 440px; color: var(--blueprint-d); font-size: 1.03rem; margin-bottom: 2.2rem; }
.hero__actions{ display:flex; gap: 1rem; flex-wrap: wrap; }

.btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding: 0.85rem 1.7rem; border-radius: var(--radius);
  font-size: 0.9rem; font-weight: 500; letter-spacing: 0.01em;
  transition: transform .25s var(--ease), background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease);
  border: 1px solid transparent;
}
.btn--primary{ background: var(--ink); color: var(--stone); }
.btn--primary:hover{ background: var(--sandstone); transform: translateY(-2px); }
.btn--ghost{ border-color: var(--ink); color: var(--ink); }
.btn--ghost:hover{ background: var(--ink); color: var(--stone); transform: translateY(-2px); }
.btn--wide{ width:100%; padding: 0.95rem; }

.hero__blueprint{ color: var(--blueprint); }
.plan-svg{ width: 100%; height: auto; }
.plan-line{
  fill:none; stroke: currentColor; stroke-width: 1.6;
  stroke-dasharray: 1600; stroke-dashoffset: 1600;
  animation: planDraw 0.9s var(--ease) forwards;
  animation-delay: calc(var(--d) * 0.15s);
}
.plan-line--main{ stroke-width: 2.2; }
.plan-line--accent{ stroke: var(--sandstone); }
.plan-line--dim{ stroke: var(--brass); stroke-width: 1; }
@keyframes planDraw{ to{ stroke-dashoffset: 0; } }
.plan-text{
  font-family: var(--font-mono); font-size: 11px; fill: var(--brass);
  opacity: 0; animation: fadeIn 0.6s ease forwards; animation-delay: calc(var(--d) * 0.15s);
}
.plan-text--courtyard{ font-size: 13px; fill: var(--blueprint); letter-spacing: 0.1em; }
@keyframes fadeIn{ to{ opacity: 1; } }

/* =============== PHILOSOPHY STRIP =============== */
.philosophy{ background: var(--blueprint-d); color: var(--stone); padding: 4.5rem 1.5rem; }
.philosophy p{
  max-width: 780px; margin: 0 auto; text-align:center;
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(1.25rem, 2.4vw, 1.7rem); line-height: 1.5;
}
.philosophy em{ font-style: normal; color: var(--brass); }

/* =============== SECTION HEAD =============== */
.section-head{ max-width: var(--container); margin: 0 auto; padding: 5rem 1.5rem 2.6rem; }
.section-head h2{ font-size: clamp(1.75rem, 3.2vw, 2.4rem); max-width: 620px; }
.section-head--light .dim-label{ color: var(--brass); }
.section-head--light h2{ color: var(--stone); }

/* =============== LISTINGS =============== */
.listings{ max-width: var(--container); margin: 0 auto; padding: 0 1.5rem 5.5rem; }
.listing-grid{ display:grid; grid-template-columns: repeat(4,1fr); gap: 1.2rem; }

.listing-card{
  background: var(--stone-paper); border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; display:flex; flex-direction:column;
  transition: transform 0.35s var(--ease), border-color 0.35s var(--ease);
  opacity:0; transform: translateY(18px);
}
.listing-card.is-visible{ animation: rise 0.7s var(--ease) forwards; }
@keyframes rise{ to{ opacity:1; transform: translateY(0);} }
.listing-card:hover{ transform: translateY(-4px); border-color: var(--sandstone); }

.listing-card__plan{
  height: 130px; position: relative;
  background-color: var(--blueprint-d);
  background-image:
    linear-gradient(90deg, rgba(228,214,195,0.08) 1px, transparent 1px),
    linear-gradient(rgba(228,214,195,0.08) 1px, transparent 1px);
  background-size: 14px 14px;
}
.listing-card__plan::after{
  content:""; position:absolute; inset: 18px;
  border: 1.5px solid var(--brass);
}
.listing-card__plan--a::before{ content:""; position:absolute; top:38px; left:38px; right:38px; bottom:38px; border: 1px solid var(--sandstone); }
.listing-card__plan--b::before{ content:""; position:absolute; top:30px; left:50%; bottom:30px; width:1px; background: var(--sandstone); }
.listing-card__plan--c::before{ content:""; position:absolute; top:50%; left:30px; right:30px; height:1px; background: var(--sandstone); }
.listing-card__plan--d::before{ content:""; position:absolute; top:30px; left:30px; right:30px; bottom:30px; border: 1px dashed var(--sandstone); }

.listing-card__body{ padding: 1.4rem 1.3rem 1.5rem; display:flex; flex-direction:column; gap: 0.55rem; flex-grow:1; }
.listing-card h3{ font-size: 1.1rem; }
.listing-card__loc{ font-size: 0.8rem; color: var(--blueprint); font-family: var(--font-mono); }
.listing-card__specs{
  display:flex; flex-wrap: wrap; gap: 0.5rem;
  font-family: var(--font-mono); font-size: 0.68rem; color: var(--ink); opacity: 0.75;
}
.listing-card__specs span{ border: 1px solid var(--line); padding: 0.2rem 0.5rem; border-radius: 2px; }
.listing-card__foot{
  display:flex; justify-content:space-between; align-items:baseline;
  border-top: 1px solid var(--line); padding-top: 0.8rem; margin-top: auto;
}
.price{ font-weight: 700; font-size: 0.95rem; }
.status{ font-size: 0.7rem; font-family: var(--font-mono); color: var(--sandstone); }

/* =============== PROCESS =============== */
.process{ background: var(--blueprint-d); color: var(--stone); padding-bottom: 5.5rem; }
.process-line{
  max-width: var(--container); margin: 0 auto; padding: 0 1.5rem;
  display:grid; grid-template-columns: repeat(4,1fr); border-top: 1px solid var(--line-light);
}
.process-step{ padding: 2rem 1.5rem 0 0; border-left: 1px solid var(--line-light); opacity:0; transform: translateY(14px); }
.process-step.is-visible{ animation: rise 0.7s var(--ease) forwards; }
.process-step__num{ font-family: var(--font-mono); color: var(--brass); font-size: 0.8rem; }
.process-step h3{ font-size: 1.35rem; margin: 0.6rem 0 0.7rem; color: var(--stone); }
.process-step p{ font-size: 0.88rem; color: var(--stone); opacity: 0.75; max-width: 240px; }

/* =============== CITIES =============== */
.cities{ max-width: var(--container); margin: 0 auto; padding: 0 1.5rem 5.5rem; }
.city-grid{ display:grid; grid-template-columns: repeat(4,1fr); gap: 1.1rem; }
.city-card{
  background: var(--stone-paper); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 1.5rem 1.3rem; opacity:0; transform: translateY(18px);
  display:flex; flex-direction:column; gap: 0.5rem;
}
.city-card.is-visible{ animation: rise 0.7s var(--ease) forwards; }
.city-card__coord{ font-family: var(--font-mono); font-size: 0.66rem; color: var(--brass); letter-spacing: 0.02em; }
.city-card h3{ font-size: 1.15rem; }
.city-card p{ font-size: 0.86rem; color: var(--ink); opacity: 0.75; }

/* =============== VOICES / TESTIMONIALS =============== */
.voices{ background: var(--ink); color: var(--stone); padding-bottom: 5.5rem; }
.voices .section-head h2{ color: var(--stone); }
.voice-grid{
  max-width: var(--container); margin: 0 auto; padding: 0 1.5rem;
  display:grid; grid-template-columns: repeat(3,1fr); gap: 1.2rem;
}
.voice-card{
  margin:0; background: #2A2523; border: 1px solid rgba(228,214,195,0.14);
  border-radius: var(--radius); padding: 1.7rem;
  display:flex; flex-direction:column; gap:1.1rem; justify-content: space-between;
  min-height: 170px; opacity:0; transform: translateY(18px);
}
.voice-card.is-visible{ animation: rise 0.7s var(--ease) forwards; }
.voice-card blockquote{ margin:0; font-family: var(--font-display); font-size: 1.02rem; line-height: 1.5; font-weight: 400; }
.voice-card figcaption{ font-family: var(--font-mono); font-size: 0.72rem; color: var(--brass); }

/* =============== ENQUIRE / FORM =============== */
.enquire{ padding: 5.5rem 1.5rem; }
.enquire__inner{ max-width: 660px; margin: 0 auto; }
.enquire h2{ font-size: clamp(1.75rem,3.2vw,2.3rem); margin-bottom: 0.7rem; }
.enquire__sub{ color: var(--blueprint-d); margin-bottom: 2.4rem; }
.enquire__form{ display:grid; grid-template-columns: 1fr 1fr; gap: 1.2rem 1rem; }
.field{ display:flex; flex-direction:column; gap:0.45rem; }
.field--full{ grid-column: 1 / -1; }
.field label{ font-size: 0.76rem; font-family: var(--font-mono); color: var(--blueprint); }
.field input, .field select, .field textarea{
  border: 1px solid var(--line); background: var(--stone-paper); border-radius: var(--radius);
  padding: 0.75rem 0.85rem; font-family: var(--font-body); font-size: 0.95rem; color: var(--ink);
  transition: border-color 0.2s var(--ease);
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color: var(--sandstone); }
.field textarea{ resize: vertical; }
.enquire__form .btn{ grid-column: 1 / -1; margin-top: 0.5rem; }
.enquire__confirm{ margin-top: 1.2rem; font-family: var(--font-mono); font-size: 0.84rem; color: var(--blueprint); min-height: 1.2em; }

/* =============== FOOTER =============== */
.footer{ border-top: 1px solid var(--line); padding: 2.4rem 1.5rem; }
.footer__inner{
  max-width: var(--container); margin:0 auto;
  display:flex; flex-wrap:wrap; gap:1.2rem; justify-content: space-between; align-items:center;
}
.footer__mark{ font-family: var(--font-display); font-weight: 700; font-size: 1rem; letter-spacing: 0.02em; }
.footer__links{ display:flex; gap: 1.5rem; }
.footer__links a{ font-size: 0.85rem; color: var(--blueprint); }
.footer__links a:hover{ color: var(--sandstone); }
.footer__meta{ font-family: var(--font-mono); font-size: 0.7rem; color: var(--blueprint); }

/* =============== RESPONSIVE =============== */
@media (max-width: 980px){
  .listing-grid{ grid-template-columns: repeat(2,1fr); }
  .process-line{ grid-template-columns: repeat(2,1fr); }
  .process-step{ border-bottom: 1px solid var(--line-light); padding-bottom: 2rem; }
  .city-grid{ grid-template-columns: repeat(2,1fr); }
  .voice-grid{ grid-template-columns: 1fr; }
}

@media (max-width: 760px){
  .nav__links{ display:none; }
  .nav__burger{ display:flex; }
  .hero{ grid-template-columns: 1fr; padding-top: 3rem; min-height: auto; }
  .hero__blueprint{ order: -1; max-width: 320px; margin: 0 auto 1.5rem; }
  .listing-grid{ grid-template-columns: 1fr; }
  .process-line{ grid-template-columns: 1fr; }
  .city-grid{ grid-template-columns: 1fr; }
  .enquire__form{ grid-template-columns: 1fr; }
  .footer__inner{ flex-direction:column; align-items:flex-start; }
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .plan-line, .plan-text, .listing-card, .process-step, .city-card, .voice-card{
    animation:none !important; opacity:1 !important; transform:none !important; stroke-dashoffset:0 !important;
  }
}
