:root {
  --forest:#23452B;
  --emerald:#2F6540;
  --sage:#8FAF83;
  --eucalyptus:#B6C9A6;
  --olive:#6F8D57;
  --linen:#F8F4EC;
  --cream:#FFFDF8;
  --taupe:#B5A58F;
  --warm-taupe:#E7DDD0;
  --charcoal:#2B2B2B;
  --muted:#6E665E;
  --border:rgba(35,69,43,.18);
  --shadow:0 24px 60px rgba(35,69,43,.11);
  --display:'Cormorant Garamond', Georgia, serif;
  --body:'DM Sans', Arial, sans-serif;
}

* { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; }
body {
  font-family:var(--body);
  background:var(--linen);
  color:var(--charcoal);
  line-height:1.65;
}
a { color:inherit; }
.site-header {
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(248,244,236,.92);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
}
.nav {
  max-width:1180px;
  margin:0 auto;
  padding:16px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.brand {
  font-family:var(--display);
  font-weight:700;
  color:var(--forest);
  letter-spacing:.06em;
  text-transform:uppercase;
  text-decoration:none;
  font-size:1rem;
  line-height:1.05;
}
.brand small {
  display:block;
  font-family:var(--body);
  font-size:.62rem;
  letter-spacing:.16em;
  color:var(--muted);
  margin-top:3px;
  font-weight:500;
}
.nav-links {
  display:flex;
  align-items:center;
  gap:28px;
  list-style:none;
}
.nav-links a {
  text-decoration:none;
  text-transform:uppercase;
  letter-spacing:.11em;
  font-size:.74rem;
  font-weight:600;
  color:var(--muted);
}
.nav-links a:hover { color:var(--forest); }
.nav-links .nav-button {
  background:var(--forest);
  color:white;
  padding:10px 16px;
  border-radius:999px;
}
.menu-toggle {
  display:none;
  width:42px;
  height:42px;
  border:1px solid var(--border);
  border-radius:50%;
  background:var(--cream);
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:5px;
  cursor:pointer;
}
.menu-toggle span {
  display:block;
  width:18px;
  height:2px;
  background:var(--forest);
  border-radius:2px;
}

.section {
  padding:86px 24px;
}
.inner {
  max-width:1180px;
  margin:0 auto;
}

.hero {
  padding:42px 24px 82px;
  background:
    radial-gradient(circle at 10% 10%, rgba(182,201,166,.35), transparent 32%),
    radial-gradient(circle at 90% 20%, rgba(143,175,131,.18), transparent 28%),
    var(--linen);
}
.hero-inner {
  max-width:1080px;
  margin:0 auto;
  text-align:center;
}
.banner-wrap {
  background:var(--cream);
  border:1px solid var(--border);
  box-shadow:var(--shadow);
  padding:18px;
  border-radius:18px;
  margin:0 auto 44px;
  max-width:920px;
}
.banner-wrap img {
  display:block;
  width:100%;
  height:auto;
  border-radius:10px;
}
.hero h1 {
  font-family:var(--display);
  color:var(--forest);
  font-size:clamp(2.3rem,5vw,4.6rem);
  line-height:.98;
  margin-bottom:14px;
  letter-spacing:.01em;
}
.hero .service-line {
  color:var(--forest);
  font-size:clamp(1.3rem,2.4vw,2rem);
  font-family:var(--display);
  font-weight:600;
  margin-bottom:18px;
}
.hero p {
  max-width:760px;
  margin:0 auto 30px;
  color:var(--muted);
  font-size:1.08rem;
}
.btn-row {
  display:flex;
  justify-content:center;
  gap:14px;
  flex-wrap:wrap;
}
.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:48px;
  padding:13px 24px;
  border-radius:999px;
  text-decoration:none;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-size:.78rem;
  transition:transform .2s, background .2s, border-color .2s;
}
.btn:hover { transform:translateY(-2px); }
.btn.primary { background:var(--forest); color:white; }
.btn.primary:hover { background:var(--emerald); }
.btn.secondary { border:1.5px solid var(--forest); color:var(--forest); background:transparent; }
.btn.secondary:hover { border-color:var(--emerald); color:var(--emerald); }

.label {
  text-transform:uppercase;
  letter-spacing:.18em;
  font-weight:700;
  color:var(--olive);
  font-size:.74rem;
  margin-bottom:14px;
}
h2 {
  font-family:var(--display);
  color:var(--forest);
  font-size:clamp(2rem,4vw,3.35rem);
  line-height:1.08;
  font-weight:600;
  margin-bottom:22px;
}
.lead {
  font-size:1.05rem;
  color:var(--muted);
  max-width:760px;
}

.welcome {
  background:var(--cream);
}
.welcome-grid {
  display:grid;
  grid-template-columns:1.08fr .92fr;
  gap:54px;
  align-items:start;
}
.text-card {
  background:var(--linen);
  border:1px solid var(--border);
  border-radius:18px;
  padding:34px;
}
.text-card p + p { margin-top:18px; }
.quote-card {
  background:var(--forest);
  color:white;
  border-radius:18px;
  padding:38px;
  box-shadow:var(--shadow);
}
.quote-card blockquote {
  font-family:var(--display);
  font-size:clamp(1.55rem,2.4vw,2.3rem);
  line-height:1.24;
  font-style:italic;
  color:var(--linen);
}
.quote-card p {
  margin-top:22px;
  color:rgba(255,255,255,.72);
}

.services {
  background:linear-gradient(180deg, var(--linen), #EFE8DD);
}
.section-head {
  text-align:center;
  max-width:760px;
  margin:0 auto 48px;
}
.section-head .lead { margin:0 auto; }
.cards {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:22px;
}
.card {
  background:var(--cream);
  border:1px solid var(--border);
  border-radius:18px;
  padding:32px;
  box-shadow:0 16px 36px rgba(35,69,43,.06);
}
.card-number {
  font-family:var(--display);
  font-size:3rem;
  line-height:1;
  color:var(--eucalyptus);
  margin-bottom:20px;
}
.card h3 {
  font-family:var(--display);
  color:var(--forest);
  font-size:1.8rem;
  line-height:1.05;
  margin-bottom:8px;
}
.focus {
  color:var(--olive);
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-weight:700;
  margin-bottom:18px;
}
.card p {
  color:var(--muted);
  font-size:.97rem;
}

.about {
  background:var(--cream);
}
.about-grid {
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:50px;
  align-items:center;
}
.headshot-placeholder {
  min-height:460px;
  border-radius:22px;
  background:
    linear-gradient(145deg, rgba(35,69,43,.08), rgba(143,175,131,.2)),
    var(--linen);
  border:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:32px;
  color:var(--muted);
}
.headshot-placeholder strong {
  display:block;
  font-family:var(--display);
  color:var(--forest);
  font-size:2rem;
  margin-bottom:6px;
}
.credentials {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:24px;
}
.credential {
  border:1px solid var(--border);
  background:var(--linen);
  color:var(--forest);
  border-radius:999px;
  padding:8px 13px;
  font-size:.78rem;
  font-weight:700;
}

.contact {
  background:var(--forest);
  color:white;
}
.contact h2, .contact .label { color:white; }
.contact .label { opacity:.75; }
.contact-grid {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:42px;
  align-items:start;
}
.contact-text p {
  color:rgba(255,255,255,.75);
  margin-bottom:22px;
}
.contact-note {
  border-left:3px solid var(--sage);
  padding-left:18px;
  color:rgba(255,255,255,.68);
  font-size:.92rem;
}
.office-location {
  margin-top:28px;
  color:rgba(255,255,255,.76);
}
.office-location h3 {
  font-family:var(--display);
  color:white;
  font-size:1.45rem;
  line-height:1.1;
  margin-bottom:8px;
}
.office-location address {
  font-style:normal;
  line-height:1.7;
}
.map-links {
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:14px;
}
.map-links a {
  color:white;
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.1em;
  text-transform:uppercase;
  text-decoration:none;
  border-bottom:1px solid rgba(255,255,255,.45);
  padding-bottom:3px;
}
.map-links a:hover {
  border-color:white;
}
.form {
  background:var(--cream);
  color:var(--charcoal);
  border-radius:20px;
  padding:32px;
  box-shadow:var(--shadow);
}
.form-row {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}
.form-group {
  margin-bottom:16px;
}
label {
  display:block;
  font-size:.74rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--forest);
  font-weight:800;
  margin-bottom:6px;
}
input, select, textarea {
  width:100%;
  border:1px solid var(--border);
  border-radius:10px;
  padding:13px 14px;
  font-family:var(--body);
  font-size:.95rem;
  background:white;
  color:var(--charcoal);
}
textarea { min-height:120px; resize:vertical; }
.radio-row {
  display:flex;
  gap:18px;
  flex-wrap:wrap;
  padding:8px 0 4px;
}
.radio-row label {
  display:flex;
  align-items:center;
  gap:8px;
  white-space:nowrap;
  text-transform:none;
  letter-spacing:0;
  color:var(--muted);
  font-size:.93rem;
  font-weight:600;
  margin:0;
}
.submit {
  width:100%;
  border:0;
  background:var(--forest);
  color:white;
  border-radius:999px;
  padding:15px 18px;
  font-weight:800;
  letter-spacing:.1em;
  text-transform:uppercase;
  cursor:pointer;
}
.submit:hover { background:var(--emerald); }

.footer {
  background:#202320;
  color:rgba(255,255,255,.72);
  padding:42px 24px 28px;
}
.footer-grid {
  max-width:1180px;
  margin:0 auto;
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr;
  gap:32px;
}
.footer h4 {
  color:var(--linen);
  font-family:var(--display);
  font-size:1.35rem;
  margin-bottom:10px;
}
.footer a {
  display:block;
  text-decoration:none;
  color:rgba(255,255,255,.68);
  margin-bottom:8px;
}
.legal {
  max-width:1180px;
  margin:30px auto 0;
  border-top:1px solid rgba(255,255,255,.12);
  padding-top:20px;
  color:rgba(255,255,255,.45);
  font-size:.78rem;
}
.copyright {
  margin-top:12px;
}

@media (max-width:850px) {
  .nav {
    align-items:flex-start;
    flex-wrap:wrap;
    gap:14px;
  }
  .brand { max-width:calc(100% - 60px); }
  .menu-toggle { display:flex; }
  .nav-links {
    display:none;
    flex-basis:100%;
    width:100%;
    gap:0;
    padding-top:8px;
    border-top:1px solid var(--border);
  }
  .nav-links.is-open {
    display:flex;
    flex-direction:column;
    align-items:stretch;
  }
  .nav-links a {
    display:block;
    padding:12px 0;
  }
  .nav-links .nav-button {
    display:inline-flex;
    justify-content:center;
    margin-top:6px;
  }
  .hero { padding-top:24px; }
  .banner-wrap { padding:10px; border-radius:12px; }
  .welcome-grid, .cards, .about-grid, .contact-grid, .footer-grid {
    grid-template-columns:1fr;
  }
  .form-row { grid-template-columns:1fr; }
  .section { padding:62px 20px; }
  .text-card, .quote-card, .card, .form { padding:25px; }
  .headshot-placeholder { min-height:300px; }
}

.headshot {
  border-radius:22px;
  border:1px solid var(--border);
  box-shadow:var(--shadow);
  overflow:hidden;
  background:var(--linen);
}
.headshot img {
  width:100%;
  height:520px;
  object-fit:cover;
  object-position:center top;
  display:block;
}
@media (max-width:850px) {
  .headshot img { height:auto; }
}
