:root {
  --ink:#17221d;
  --muted:#56605a;
  --green:#7ed957;
  --green-dark:#285b31;
  --paper:#f5f6f1;
  --line:#dce2d9;
  --white:#fff;
  --max:1240px;
  --radius:10px
}

* {
  box-sizing:border-box
}

[hidden] {
  display:none!important
}

html {
  scroll-behavior:smooth;
  scroll-padding-top:120px
}

body {
  margin:0;
  font-family:Arial,"Helvetica Neue",sans-serif;
  color:var(--ink);
  background:var(--white);
  line-height:1.65;
  -webkit-font-smoothing:antialiased
}

button,input,select,textarea {
  font:inherit
}

button,a,input,select,textarea {
  -webkit-tap-highlight-color:transparent
}

button {
  cursor:pointer
}

img {
  display:block;
  max-width:100%;
  height:auto
}

a {
  color:inherit;
  text-underline-offset:.22em
}

a:hover {
  text-decoration-thickness:2px
}

a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible {
  outline:3px solid #348046;
  outline-offset:4px
}

h1,h2,h3,p,figure {
  margin:0
}

h1,h2,h3 {
  line-height:1.1;
  text-wrap:balance
}

h1 {
  font-size:clamp(2.8rem,4.65vw,4.75rem);
  letter-spacing:-.052em;
  font-weight:800
}

h2 {
  font-size:clamp(2rem,3.2vw,3.1rem);
  letter-spacing:-.042em;
  font-weight:800
}

h3 {
  font-size:1.3rem;
  letter-spacing:-.025em
}

p {
  max-width:76ch
}

ul {
  padding-left:1.2rem
}

svg {
  flex-shrink:0
}

.wrap {
  width:min(var(--max),calc(100% - 72px));
  margin-inline:auto
}

.section {
  padding-block:94px
}

.paper {
  background:var(--paper)
}

.dark {
  background:var(--ink);
  color:#fff
}

.eyebrow {
  display:block;
  font-size:0.72rem;
  font-weight:800;
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--green-dark);
  margin-bottom:16px
}

.dark .eyebrow {
  color:var(--green)
}

.lead {
  font-size:1.08rem;
  color:var(--muted);
  line-height:1.7;
  max-width:62ch
}

.dark .lead {
  color:#d2dbd3
}

.section-top {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:36px;
  margin-bottom:40px
}

.section-top>div {
  max-width:760px
}

.section-top .lead {
  margin-top:18px
}

.section-top>.text-link {
  flex-shrink:0;
  margin-bottom:6px
}

.text-link {
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-weight:700;
  color:var(--green-dark);
  text-decoration:none;
  line-height:1.4
}

.text-link svg {
  width:18px;
  height:18px
}

.text-link:hover {
  gap:15px
}

.dark .text-link {
  color:var(--green)
}

.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:50px;
  padding:13px 22px;
  font-weight:700;
  border-radius:5px;
  background:var(--green);
  color:var(--ink);
  border:1px solid var(--green);
  text-decoration:none;
  text-align:center;
  font-size:.93rem;
  line-height:1.45
}

.button:hover {
  background:#6dc747;
  border-color:#6dc747
}

.button.outline {
  background:transparent;
  border-color:#72816f;
  color:inherit
}

.button.outline:hover {
  background:#edf2ea;
  color:var(--ink)
}

.dark .button.outline:hover {
  background:#273c2f;
  color:#fff
}

.button.small {
  min-height:44px;
  font-size:.86rem;
  padding:10px 17px
}

.actions {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:28px
}

.skip-link {
  position:fixed;
  top:-100px;
  left:20px;
  z-index:100;
  padding:12px 20px;
  background:#fff;
  border:2px solid var(--green-dark)
}

.skip-link:focus {
  top:12px
}

/* One shared header on every page. Sticky positioning reserves its own space. */
.topline {
  background:var(--ink);
  color:#d3ddce;
  font-size:.76rem;
  padding-block:7px
}

.topline .wrap {
  display:flex;
  justify-content:space-between;
  gap:16px
}

.topline a {
  color:#fff;
  text-decoration:none
}

.site-header {
  position:sticky;
  top:0;
  z-index:30;
  background:rgba(255,255,255,.98);
  border-bottom:1px solid var(--line)
}

.nav-wrap {
  min-height:96px;
  display:flex;
  align-items:center;
  gap:28px
}

.brand {
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  flex-shrink:0
}

.brand img {
  width:64px;
  height:64px;
  border-radius:5px
}

.brand-name {
  font-size:1.06rem;
  font-weight:800;
  letter-spacing:-.025em;
  line-height:1.2;
  display:block
}

.brand-location {
  font-size:0.68rem;
  color:var(--muted);
  display:block;
  margin-top:5px;
  line-height:1.4
}

.desktop-nav {
  margin-left:auto
}

.desktop-nav ul {
  display:flex;
  align-items:center;
  gap:24px;
  list-style:none;
  padding:0;
  margin:0
}

.desktop-nav a {
  font-size:0.85rem;
  font-weight:700;
  text-decoration:none;
  padding:14px 0;
  white-space:nowrap
}

.desktop-nav a:hover,.desktop-nav a[aria-current] {
  color:var(--green-dark)
}

.language-switch {
  display:flex;
  align-items:center;
  gap:2px;
  border:1px solid var(--line);
  border-radius:5px;
  padding:3px;
  flex-shrink:0
}

.language-switch a {
  justify-content:center;
  min-width:36px;
  padding:6px 8px;
  font-size:.72rem;
  text-decoration:none;
  font-weight:800;
  border-radius:3px;
  line-height:1.2;
  min-height:44px;
  display:flex;
  align-items:center
}

.language-switch a[aria-current=true] {
  background:var(--ink);
  color:#fff
}

.language-switch a:hover {
  background:#e4eddf;
  color:var(--ink)
}

.header-cta {
  white-space:nowrap
}

.menu-toggle {
  display:none;
  align-items:center;
  justify-content:center;
  background:#fff;
  border:1px solid var(--line);
  border-radius:5px;
  width:44px;
  height:44px;
  padding:10px;
  color:var(--ink)
}

.mobile-nav {
  border-top:1px solid var(--line);
  background:#fff;
  padding:16px 0 24px;
  max-height:calc(100dvh - 86px);
  overflow-y:auto
}

.mobile-nav[hidden] {
  display:none
}

.mobile-nav ul {
  list-style:none;
  margin:0;
  padding:0
}

.mobile-nav li a {
  display:block;
  text-decoration:none;
  font-weight:700;
  padding:12px 4px;
  border-bottom:1px solid #edf0e9
}

.mobile-nav .actions {
  margin-top:16px
}

.mobile-nav .button {
  width:100%
}

.nojs-nav {
  display:none
}

/* Main photographic opening. */
.home-hero {
  background:var(--paper);
  overflow:hidden
}

.hero-grid {
  display:grid;
  grid-template-columns:1.02fr 1fr;
  align-items:center;
  gap:54px;
  min-height:650px;
  padding-block:62px
}

.hero-copy .lead {
  margin-top:26px;
  font-size:1.06rem;
  max-width:47ch
}

.hero-copy h1 .line {
  display:block
}

.hero-image {
  position:relative;
  align-self:stretch;
  display:flex;
  align-items:center
}

.hero-image>img {
  width:100%;
  height:100%;
  min-height:520px;
  max-height:680px;
  object-fit:cover;
  object-position:center;
  border-radius:3px
}

.hero-image figcaption {
  position:absolute;
  bottom:18px;
  left:18px;
  right:18px;
  background:rgba(23,34,29,.9);
  color:#fff;
  padding:12px 16px;
  font-size:0.75rem;
  line-height:1.4;
  border-left:3px solid var(--green)
}

.proof-list {
  display:flex;
  gap:14px 20px;
  flex-wrap:wrap;
  margin-top:30px;
  font-size:.76rem;
  font-weight:700;
  list-style:none;
  padding:0
}

.proof-list li {
  display:flex;
  gap:7px;
  align-items:center
}

.proof-list svg {
  color:var(--green-dark);
  width:15px;
  height:15px
}

.service-strip {
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:#fff
}

.service-strip .wrap {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:10px 28px;
  padding-block:19px
}

.service-strip a {
  text-decoration:none;
  font-size:.8rem;
  font-weight:700;
  display:flex;
  align-items:center;
  gap:9px
}

.service-strip a:before {
  content:"";
  background:var(--green);
  width:6px;
  height:6px;
  border-radius:50%
}

.statement {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  align-items:center
}

.statement h2 {
  max-width:20ch
}

.statement p {
  font-size:1.08rem;
  color:var(--muted)
}

.service-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px
}

.service-card {
  position:relative;
  padding:30px 26px 26px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:#fff;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  min-height:264px;
  text-decoration:none;
  transition:border-color .15s,box-shadow .15s
}

.service-card:hover {
  border-color:#619651;
  box-shadow:0 8px 28px rgba(23,34,29,.06)
}

.service-card .icon {
  width:32px;
  height:32px;
  color:var(--green-dark);
  margin-bottom:22px
}

.service-card .number {
  position:absolute;
  right:24px;
  top:25px;
  color:#657262;
  font-size:0.72rem;
  font-weight:800
}

.service-card h3 {
  font-size:1.28rem;
  max-width:23ch
}

.service-card p {
  color:var(--muted);
  font-size:.9rem;
  line-height:1.6;
  margin-top:14px;
  margin-bottom:22px
}

.service-card .text-link {
  font-size:.8rem;
  margin-top:auto
}

.service-card-wide {
  grid-column:span 2;
  background:var(--ink);
  color:#fff;
  flex-direction:row;
  align-items:center;
  gap:32px;
  min-height:230px
}

.service-card-wide .icon {
  color:var(--green);
  width:52px;
  height:52px;
  margin:0
}

.service-card-wide p {
  color:#d3dbcf;
  max-width:55ch
}

.service-card-wide .button {
  flex-shrink:0;
  margin-left:auto
}

.feature-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:30px
}

.feature-grid article {
  padding-top:24px;
  border-top:1px solid #536452
}

.feature-grid h3 {
  font-size:1.19rem;
  margin-bottom:16px
}

.feature-grid p {
  font-size:.9rem;
  line-height:1.7;
  color:#d2dbd3
}

.dark .section-top {
  margin-bottom:52px
}

.types-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)
}

.type-item {
  padding:32px 24px 32px 0;
  text-decoration:none
}

.type-item+.type-item {
  border-left:1px solid var(--line);
  padding-left:24px
}

.type-item .type-num {
  font-size:.75rem;
  font-weight:800;
  color:var(--green-dark);
  display:block;
  margin-bottom:20px
}

.type-item h3 {
  font-size:1.15rem
}

.type-item p {
  font-size:.88rem;
  color:var(--muted);
  margin-top:14px
}

.type-item svg {
  margin-top:24px;
  color:var(--green-dark)
}

.process-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:32px;
  list-style:none;
  margin:0;
  padding:0
}

.process-grid .step-number {
  display:flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  background:var(--green);
  font-size:.8rem;
  font-weight:800;
  border-radius:50%;
  margin-bottom:24px
}

.process-grid h3 {
  font-size:1.12rem;
  max-width:22ch
}

.process-grid p {
  font-size:0.88rem;
  color:var(--muted);
  margin-top:14px
}

.process-section h2 {
  margin-bottom:42px
}

/* Real project imagery; filters and lightbox are optional enhancements. */
.project-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:28px 22px
}

.project-card {
  min-width:0
}

.project-card[hidden] {
  display:none
}

.project-photo {
  display:block;
  border:0;
  padding:0;
  background:#e0e5db;
  width:100%;
  text-align:left;
  border-radius:6px;
  overflow:hidden;
  position:relative;
  aspect-ratio:4/3;
  cursor:zoom-in
}

.project-photo img {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .2s
}

.project-photo:hover img {
  transform:scale(1.035)
}

.project-photo .photo-open {
  position:absolute;
  right:12px;
  bottom:12px;
  background:#fff;
  border-radius:50%;
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--ink);
  box-shadow:0 2px 8px #0002
}

.project-photo .photo-open svg {
  width:16px;
  height:16px
}

.project-category {
  font-size:.68rem;
  font-weight:800;
  color:var(--green-dark);
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-top:20px;
  margin-bottom:8px
}

.project-card h3 {
  font-size:1.12rem;
  line-height:1.35
}

.project-card p.project-desc {
  font-size:.86rem;
  color:var(--muted);
  margin-top:11px
}

.project-card .text-link {
  font-size:0.76rem;
  margin-top:16px
}

.filter-bar {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-bottom:28px
}

.filter-button {
  padding:9px 18px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:4px;
  font-weight:700;
  font-size:.85rem;
  color:var(--ink);
  min-height:44px
}

.filter-button[aria-pressed=true] {
  background:var(--ink);
  color:#fff;
  border-color:var(--ink)
}

.filter-count {
  font-size:.8rem;
  color:var(--muted);
  margin-bottom:24px
}

.lightbox {
  border:0;
  padding:0;
  background:var(--ink);
  color:#fff;
  width:min(1000px,calc(100% - 32px));
  max-height:calc(100dvh - 32px);
  border-radius:8px;
  overflow:auto
}

.lightbox::backdrop {
  background:rgba(0,0,0,.84)
}

.lightbox-frame {
  padding:64px 24px 24px;
  position:relative
}

.lightbox img {
  max-height:65dvh;
  object-fit:contain;
  width:100%;
  background:#101611
}

.lightbox h3 {
  font-size:1.15rem;
  margin-top:20px;
  line-height:1.4
}

.lightbox p {
  font-size:.9rem;
  color:#d7dfd5;
  margin-top:8px
}

.lightbox-close {
  position:absolute;
  top:8px;
  right:10px;
  min-height:44px;
  background:#fff;
  color:var(--ink);
  border:0;
  border-radius:4px;
  padding:8px 12px;
  display:flex;
  align-items:center;
  gap:6px;
  font-size:.8rem;
  font-weight:700
}

.lightbox-control {
  display:flex;
  justify-content:space-between;
  gap:20px;
  margin-top:20px
}

.lightbox-control button {
  padding:10px 16px;
  border:1px solid #8f9e8b;
  border-radius:4px;
  background:transparent;
  color:#fff;
  font-size:.83rem;
  min-height:44px
}

.lightbox-control button:disabled {
  opacity:.4;
  cursor:default
}

.lightbox-index {
  font-size:.85rem;
  align-self:center;
  color:#d2dbd3
}

.photo-note {
  font-size:.8rem;
  color:var(--muted);
  margin-top:24px
}

/* People, questions and estimates. */
.team-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:28px
}

.team-card {
  display:grid;
  grid-template-columns:180px 1fr;
  border:1px solid var(--line);
  border-radius:8px;
  overflow:hidden;
  background:#fff;
  align-items:start
}

.team-card>img {
  width:100%;
  height:100%;
  min-height:300px;
  object-fit:cover;
  object-position:50% 20%;
  background:#18221c
}

.team-copy {
  padding:26px
}

.team-copy h3 {
  font-size:1.3rem
}

.team-role {
  font-size:0.8rem;
  color:var(--green-dark);
  font-weight:700;
  line-height:1.4;
  margin-top:8px
}

.team-detail {
  font-size:.72rem;
  font-weight:700;
  color:var(--muted);
  margin-top:8px
}

.team-bio {
  font-size:.85rem;
  color:var(--muted);
  line-height:1.75;
  margin-top:16px
}

.team-contacts {
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:20px;
  font-size:0.78rem
}

.team-contacts a {
  overflow-wrap:anywhere
}

.faq-layout {
  display:grid;
  grid-template-columns:.85fr 1.3fr;
  gap:78px;
  align-items:start
}

.faq-heading p {
  margin-top:20px;
  font-size:.94rem;
  color:var(--muted)
}

.faq-list {
  border-top:1px solid var(--line)
}

.faq-list details {
  border-bottom:1px solid var(--line);
  padding-block:20px
}

.faq-list summary {
  list-style:none;
  font-weight:700;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px;
  line-height:1.5;
  font-size:.98rem
}

.faq-list summary::-webkit-details-marker {
  display:none
}

.faq-list summary:after {
  content:"+";
  font-size:1.5rem;
  color:var(--green-dark);
  font-weight:400;
  flex-shrink:0;
  line-height:1
}

.faq-list details[open] summary:after {
  content:"−"
}

.faq-list details p {
  font-size:.9rem;
  color:var(--muted);
  padding-top:16px;
  padding-right:25px;
  line-height:1.75
}

.estimate-banner {
  padding:40px 0;
  background:var(--green)
}

.estimate-banner .wrap {
  display:flex;
  justify-content:space-between;
  gap:36px;
  align-items:center
}

.estimate-banner h2 {
  font-size:clamp(1.8rem,2.4vw,2.5rem)
}

.estimate-banner p {
  margin-top:8px;
  font-size:0.94rem
}

.estimate-banner .button {
  background:var(--ink);
  color:#fff;
  border-color:var(--ink);
  flex-shrink:0
}

.contact-grid {
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:70px;
  align-items:start
}

.contact-copy .lead {
  margin-top:20px
}

.contact-list {
  display:flex;
  flex-direction:column;
  gap:18px;
  margin:30px 0
}

.contact-list a {
  display:flex;
  gap:15px;
  align-items:center;
  text-decoration:none;
  font-size:1.02rem;
  font-weight:700;
  overflow-wrap:anywhere
}

.contact-list a svg {
  width:21px;
  height:21px;
  color:var(--green-dark)
}

.contact-small {
  font-size:.83rem;
  color:var(--muted);
  margin-top:24px
}

.estimate-form {
  background:var(--paper);
  padding:34px;
  border:1px solid var(--line);
  border-radius:8px
}

.estimate-form h3 {
  font-size:1.4rem;
  margin-bottom:12px
}

.form-intro {
  font-size:.85rem;
  color:var(--muted);
  margin-bottom:24px
}

.form-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:17px
}

.field {
  display:flex;
  flex-direction:column;
  gap:7px;
  font-size:.8rem;
  font-weight:700
}

.field.full {
  grid-column:1/-1
}

.field input,.field select,.field textarea {
  width:100%;
  min-width:0;
  border:1px solid #72816f;
  background:#fff;
  border-radius:4px;
  padding:11px 12px;
  color:var(--ink);
  font-size:1rem;
  min-height:48px
}

.field textarea {
  min-height:105px;
  resize:vertical
}

.field small {
  font-size:.72rem;
  color:var(--muted);
  font-weight:400;
  line-height:1.5
}

.form-actions {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:22px
}

.form-actions .button {
  flex:1;
  font-size:0.8rem;
  padding-inline:13px;
  min-width:145px
}

.form-privacy {
  font-size:.72rem;
  color:var(--muted);
  margin-top:16px;
  line-height:1.6
}

.request-ready {
  margin-top:22px;
  padding:18px;
  border:1px solid #779b6a;
  border-radius:4px;
  background:#fff
}

.request-ready[hidden] {
  display:none
}

.request-ready p {
  font-size:.85rem;
  margin-bottom:14px
}

.request-ready .actions {
  margin-top:12px
}

.request-ready .text-link {
  font-size:.8rem
}

.request-copy {
  padding:8px 14px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:4px;
  font-size:.8rem;
  min-height:44px
}

.request-message {
  display:block;
  width:100%;
  min-width:0;
  white-space:pre-wrap;
  font-family:inherit;
  font-size:.78rem;
  padding:14px;
  background:#f5f6f1;
  border:1px solid var(--line);
  overflow-wrap:anywhere;
  max-height:200px;
  overflow:auto
}

.js-only {
  display:none
}

.js .js-only {
  display:block
}

.nojs-only {
  display:block
}

.js .nojs-only {
  display:none
}

.service-area-grid {
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:80px;
  align-items:start
}

.town-list {
  display:flex;
  gap:9px;
  flex-wrap:wrap;
  list-style:none;
  margin:22px 0 0;
  padding:0
}

.town-list li {
  font-size:.83rem;
  padding:8px 13px;
  border:1px solid var(--line);
  border-radius:4px;
  background:#fff
}

.area-copy .lead {
  margin-top:20px
}

.hours-card {
  padding:32px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:8px
}

.hours-card h3 {
  margin-bottom:20px
}

.hours-row {
  display:flex;
  gap:24px;
  justify-content:space-between;
  padding:12px 0;
  border-bottom:1px solid #e8ede3;
  font-size:.86rem
}

.hours-row:last-of-type {
  border:0
}

.hours-card .text-link {
  font-size:.83rem;
  margin-top:22px
}

.google-card {
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:28px;
  padding:34px 38px;
  border:1px solid var(--line);
  border-radius:8px
}

.google-mark {
  width:50px;
  height:50px;
  background:var(--paper);
  border-radius:50%;
  display:grid;
  place-items:center;
  font-size:1.5rem;
  font-weight:800;
  color:var(--green-dark)
}

.google-card h3 {
  margin-bottom:9px
}

.google-card p {
  font-size:.9rem;
  color:var(--muted)
}

.google-card .text-link {
  font-size:.85rem;
  max-width:25ch
}

.social-links {
  display:flex;
  gap:12px 22px;
  flex-wrap:wrap;
  list-style:none;
  margin:0;
  padding:0
}

.social-links a {
  font-size:0.8rem;
  text-decoration:none;
  min-height:44px;
  display:flex;
  align-items:center
}

/* Dedicated service and supporting pages. */
.breadcrumb {
  display:flex;
  gap:8px;
  align-items:center;
  font-size:0.72rem;
  flex-wrap:wrap;
  margin-bottom:24px;
  color:var(--muted)
}

.breadcrumb a {
  text-decoration:none
}

.breadcrumb svg {
  width:12px;
  height:12px;
  color:#90a08d
}

.page-hero {
  padding-block:58px;
  background:var(--paper)
}

.page-hero h1 {
  max-width:21ch;
  font-size:clamp(2.5rem,4.3vw,4.2rem)
}

.page-hero .lead {
  margin-top:22px
}

.page-hero .hero-grid {
  min-height:0;
  padding:0;
  grid-template-columns:1.05fr 1fr;
  gap:58px
}

.page-hero .hero-image>img {
  min-height:410px;
  max-height:520px
}

.page-hero.text-hero {
  padding-block:64px
}

.text-hero .lead {
  max-width:72ch
}

.service-title {
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.08em;
  color:var(--green-dark);
  margin-bottom:18px;
  text-transform:uppercase
}

.scope-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:25px
}

.scope-card {
  border-top:2px solid var(--green);
  padding:26px 30px;
  background:var(--paper);
  border-radius:0 0 6px 6px
}

.scope-card h3 {
  font-size:1.21rem;
  margin-bottom:14px
}

.scope-card p {
  font-size:0.93rem;
  color:var(--muted)
}

.service-note {
  padding:22px 26px;
  border-left:3px solid var(--green-dark);
  margin-top:34px;
  background:var(--paper);
  font-size:0.93rem;
  line-height:1.7;
  color:var(--muted)
}

.finish-panel {
  align-self:stretch;
  min-height:390px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  background:var(--ink);
  color:#fff;
  padding:36px;
  overflow:hidden;
  border-radius:6px
}

.finish-panel .big-icon {
  width:90px;
  height:90px;
  color:var(--green);
  opacity:.9
}

.finish-panel .panel-title {
  font-size:2.15rem;
  letter-spacing:-.04em;
  line-height:1.1;
  font-weight:800;
  max-width:16ch
}

.finish-panel p {
  font-size:.86rem;
  color:#d3ddce;
  margin-top:18px;
  max-width:40ch
}

.finish-swatches {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin-top:30px
}

.finish-swatches span {
  display:block;
  height:76px;
  background:#ece4d5
}

.finish-swatches span:nth-child(2) {
  background:#d9cfc0
}

.finish-swatches span:nth-child(3) {
  background:#bdb6a5
}

.builder-links {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:12px;
  margin-top:24px
}

.builder-links a {
  border:1px solid var(--line);
  border-radius:4px;
  padding:16px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:.9rem;
  font-weight:700;
  text-decoration:none
}

.builder-links a:hover {
  background:var(--paper)
}

.builder-links svg {
  width:16px;
  height:16px;
  color:var(--green-dark)
}

.prose {
  max-width:830px
}

.prose h2 {
  font-size:1.65rem;
  margin:36px 0 18px
}

.prose p,.prose li {
  font-size:.98rem;
  color:var(--muted);
  line-height:1.8
}

.prose p+p {
  margin-top:18px
}

.prose .eyebrow {
  margin-top:0
}

.about-statement {
  max-width:850px
}

.about-statement .lead {
  margin-top:22px
}

.directory-intro {
  margin-bottom:34px;
  display:flex;
  gap:16px;
  flex-wrap:wrap
}

.directory-intro a {
  font-size:.85rem
}

.site-footer {
  padding:60px 0 26px;
  background:var(--ink);
  color:#d3ddce
}

.footer-grid {
  display:grid;
  grid-template-columns:1.25fr 1fr 1.2fr 1fr;
  gap:38px
}

.footer-brand .brand-name {
  color:#fff;
  font-size:1.21rem
}

.footer-brand .brand-location {
  color:#ccd5c6
}

.footer-brand img {
  width:72px;
  height:72px
}

.footer-brand p {
  font-size:0.83rem;
  line-height:1.7;
  margin-top:22px;
  max-width:31ch
}

.footer-col h2,.footer-col h3 {
  font-size:.83rem;
  color:#fff;
  letter-spacing:.01em;
  margin-bottom:18px
}

.footer-col ul {
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:12px
}

.footer-col a {
  font-size:0.76rem;
  text-decoration:none;
  line-height:1.5
}

.footer-col a:hover {
  color:var(--green)
}

.footer-col .contact-link {
  overflow-wrap:anywhere
}

.footer-col .social-links {
  gap:8px 18px
}

.footer-bottom {
  border-top:1px solid #3d4c3c;
  display:flex;
  justify-content:space-between;
  gap:20px;
  flex-wrap:wrap;
  margin-top:44px;
  padding-top:24px;
  font-size:.72rem
}

.footer-bottom a {
  color:#fff
}

.mobile-contact {
  display:none
}

.not-found {
  padding:110px 0;
  text-align:center
}

.not-found h1 {
  margin-inline:auto;
  font-size:clamp(3rem,5vw,5rem)
}

.not-found p {
  margin:22px auto;
  max-width:50ch
}

.not-found .actions {
  justify-content:center
}

.not-found .eyebrow {
  color:var(--green-dark)
}

@media(min-width:1500px) {
  .hero-grid {
    gap:72px
  }

  .hero-image>img {
    min-height:570px
  }

}

@media(max-width:1180px) {
  .nav-wrap {
    gap:18px
  }

  .desktop-nav ul {
    gap:18px
  }

  .header-cta {
    display:none
  }

  .team-card {
    grid-template-columns:145px 1fr
  }

  .team-copy {
    padding:22px
  }

  .hero-grid {
    gap:36px
  }

  .footer-grid {
    gap:24px
  }

}

@media(max-width:980px) {
  .wrap {
    width:calc(100% - 48px)
  }

  .section {
    padding-block:72px
  }

  .desktop-nav {
    display:none
  }

  .menu-toggle {
    display:flex;
    margin-left:auto
  }

  .nav-wrap {
    min-height:88px
  }

  .header-cta {
    display:inline-flex
  }

  .nav-wrap .language-switch {
    order:2
  }

  .menu-toggle {
    order:3;
    margin-left:0
  }

  .header-cta {
    margin-left:auto
  }

  .hero-grid {
    grid-template-columns:1fr 1fr;
    min-height:600px;
    gap:32px
  }

  .hero-image>img {
    min-height:470px
  }

  .service-grid {
    grid-template-columns:repeat(2,1fr)
  }

  .service-card-wide {
    grid-column:span 1;
    display:block
  }

  .service-card-wide .icon {
    width:35px;
    height:35px;
    margin-bottom:18px
  }

  .service-card-wide .button {
    margin-top:4px
  }

  .feature-grid {
    grid-template-columns:repeat(2,1fr);
    gap:34px
  }

  .types-grid {
    grid-template-columns:repeat(2,1fr)
  }

  .type-item:nth-child(3) {
    border-left:0;
    border-top:1px solid var(--line);
    padding-left:0
  }

  .type-item:nth-child(4) {
    border-top:1px solid var(--line)
  }

  .process-grid {
    grid-template-columns:repeat(2,1fr);
    gap:36px
  }

  .statement {
    gap:40px
  }

  .project-grid {
    grid-template-columns:repeat(2,1fr)
  }

  .team-card {
    grid-template-columns:1fr
  }

  .team-card>img {
    aspect-ratio:4/3;
    max-height:320px;
    min-height:0;
    object-position:50% 20%
  }

  .team-copy {
    padding:28px
  }

  .faq-layout {
    gap:36px;
    grid-template-columns:.8fr 1.2fr
  }

  .contact-grid {
    gap:34px;
    grid-template-columns:.85fr 1.15fr
  }

  .estimate-form {
    padding:26px
  }

  .service-area-grid {
    gap:36px
  }

  .google-card {
    grid-template-columns:auto 1fr;
    padding:28px
  }

  .google-card>.text-link {
    grid-column:2
  }

  .footer-grid {
    grid-template-columns:1fr 1fr;
    gap:38px
  }

  .page-hero .hero-grid {
    gap:36px
  }

  .page-hero .hero-image>img {
    min-height:400px
  }

  .finish-panel {
    padding:28px;
    min-height:380px
  }

  .builder-links {
    grid-template-columns:repeat(2,1fr)
  }

}

@media(max-width:700px) {
  html {
    scroll-padding-top:92px
  }

  .wrap {
    width:calc(100% - 36px)
  }

  .topline {
    font-size:0.66rem
  }

  .topline .wrap span {
    max-width:23ch
  }

  .topline .wrap {
    align-items:center
  }

  .nav-wrap {
    min-height:78px;
    gap:12px
  }

  .brand {
    gap:9px
  }

  .brand img {
    width:52px;
    height:52px
  }

  .brand-name {
    font-size:.94rem
  }

  .brand-location {
    font-size:.62rem;
    max-width:24ch;
    line-height:1.25
  }

  .header-cta {
    display:none
  }

  .nav-wrap .language-switch {
    margin-left:auto
  }

  .language-switch a {
    padding:7px;
    font-size:.68rem
  }

  .menu-toggle {
    width:44px;
    height:44px
  }

  .section {
    padding-block:56px
  }

  .section-top {
    display:block;
    margin-bottom:30px
  }

  .section-top>.text-link {
    margin-top:22px
  }

  .eyebrow {
    font-size:.68rem;
    margin-bottom:13px
  }

  h1 {
    font-size:clamp(2.65rem,9.6vw,3.7rem)
  }

  h2 {
    font-size:clamp(2.1rem,7.7vw,2.8rem)
  }

  .lead {
    font-size:1rem
  }

  .hero-grid {
    grid-template-columns:1fr;
    min-height:0;
    gap:30px;
    padding-block:36px
  }

  .hero-copy .lead {
    margin-top:23px;
    font-size:1rem
  }

  .hero-copy h1 .line {
    display:inline
  }

  .hero-copy h1 .line+.line:before {
    content:" "
  }

  .hero-image {
    min-height:0;
    display:block
  }

  .hero-image>img {
    min-height:0;
    width:100%;
    height:350px;
    max-height:none;
    object-position:center
  }

  .hero-image figcaption {
    font-size:.66rem;
    bottom:12px;
    left:12px;
    right:12px;
    padding:10px 12px
  }

  .proof-list {
    font-size:.72rem;
    gap:12px 17px;
    margin-top:23px
  }

  .actions {
    gap:10px;
    margin-top:25px
  }

  .hero-copy .actions .button {
    font-size:.83rem;
    padding:12px 16px
  }

  .service-strip .wrap {
    justify-content:flex-start;
    gap:9px 18px;
    padding-block:16px
  }

  .service-strip a {
    font-size:0.72rem
  }

  .statement {
    grid-template-columns:1fr;
    gap:24px
  }

  .statement p {
    font-size:1rem
  }

  .service-grid {
    gap:13px
  }

  .service-card {
    padding:24px 20px;
    min-height:268px
  }

  .service-card h3 {
    font-size:1.08rem
  }

  .service-card p {
    font-size:0.83rem;
    margin-top:12px
  }

  .service-card .text-link {
    font-size:.72rem
  }

  .service-card .icon {
    width:27px;
    height:27px;
    margin-bottom:18px
  }

  .service-card .number {
    font-size:.66rem;
    top:22px;
    right:18px
  }

  .service-card-wide .button {
    font-size:0.72rem;
    padding:11px 12px
  }

  .service-card-wide .icon {
    width:30px;
    height:30px
  }

  .feature-grid {
    gap:26px 24px
  }

  .feature-grid h3 {
    font-size:1.04rem
  }

  .feature-grid p {
    font-size:0.85rem
  }

  .dark .section-top {
    margin-bottom:30px
  }

  .types-grid {
    grid-template-columns:1fr 1fr
  }

  .type-item {
    padding:24px 17px 24px 0
  }

  .type-item+.type-item {
    padding-left:17px
  }

  .type-item:nth-child(3) {
    padding-left:0
  }

  .type-item h3 {
    font-size:1.04rem
  }

  .type-item p {
    font-size:0.83rem
  }

  .type-item .type-num {
    margin-bottom:14px
  }

  .process-grid {
    gap:28px 22px
  }

  .process-grid .step-number {
    margin-bottom:17px
  }

  .process-grid h3 {
    font-size:1.02rem
  }

  .process-grid p {
    font-size:0.85rem
  }

  .project-grid {
    gap:28px 16px
  }

  .project-card h3 {
    font-size:.98rem
  }

  .project-card p.project-desc {
    font-size:0.8rem
  }

  .project-category {
    font-size:.59rem;
    margin-top:15px
  }

  .project-card .text-link {
    font-size:0.68rem
  }

  .team-grid {
    grid-template-columns:1fr;
    gap:22px
  }

  .team-card {
    grid-template-columns:130px 1fr
  }

  .team-card>img {
    height:100%;
    max-height:none;
    aspect-ratio:auto;
    min-height:290px;
    object-position:50% 18%
  }

  .team-copy {
    padding:22px
  }

  .team-copy h3 {
    font-size:1.21rem
  }

  .team-bio {
    font-size:0.83rem
  }

  .team-role {
    font-size:.76rem
  }

  .team-contacts {
    font-size:.75rem
  }

  .faq-layout {
    grid-template-columns:1fr;
    gap:28px
  }

  .faq-list summary {
    font-size:.93rem
  }

  .faq-list details p {
    font-size:.86rem
  }

  .estimate-banner {
    padding-block:32px
  }

  .estimate-banner .wrap {
    display:block
  }

  .estimate-banner .button {
    margin-top:24px
  }

  .contact-grid {
    grid-template-columns:1fr;
    gap:30px
  }

  .contact-copy .lead {
    margin-top:20px
  }

  .contact-list {
    gap:15px
  }

  .contact-list a {
    font-size:.98rem
  }

  .estimate-form {
    padding:24px 20px
  }

  .form-grid {
    gap:15px
  }

  .form-actions .button {
    font-size:0.78rem
  }

  .service-area-grid {
    grid-template-columns:1fr;
    gap:30px
  }

  .hours-card {
    padding:26px
  }

  .google-card {
    padding:24px;
    gap:20px
  }

  .google-card h3 {
    font-size:1.15rem
  }

  .google-card p {
    font-size:0.85rem
  }

  .google-card>.text-link {
    max-width:none;
    font-size:0.8rem
  }

  .page-hero {
    padding-block:32px
  }

  .page-hero .hero-grid {
    grid-template-columns:1fr;
    gap:30px
  }

  .page-hero h1 {
    font-size:clamp(2.5rem,9vw,3.7rem)
  }

  .page-hero .hero-image>img {
    min-height:0;
    height:330px
  }

  .page-hero.text-hero {
    padding-block:40px
  }

  .scope-grid {
    gap:18px
  }

  .scope-card {
    padding:23px 21px
  }

  .scope-card h3 {
    font-size:1.08rem
  }

  .scope-card p {
    font-size:.85rem
  }

  .service-note {
    font-size:.85rem;
    padding:20px 22px
  }

  .finish-panel {
    min-height:270px;
    gap:20px
  }

  .finish-panel .big-icon {
    width:55px;
    height:55px
  }

  .finish-panel .panel-title {
    font-size:1.9rem;
    max-width:24ch
  }

  .finish-panel p {
    font-size:0.83rem
  }

  .finish-swatches {
    margin-top:20px
  }

  .finish-swatches span {
    height:55px
  }

  .builder-links {
    grid-template-columns:1fr 1fr
  }

  .builder-links a {
    font-size:.8rem;
    padding:14px
  }

  .footer-grid {
    gap:30px 25px
  }

  .footer-brand {
    grid-column:1/-1
  }

  .footer-brand p {
    max-width:50ch
  }

  .footer-col h2,.footer-col h3 {
    font-size:.8rem
  }

  .footer-col a {
    font-size:.75rem
  }

  .site-footer {
    padding:44px 0 92px
  }

  .footer-bottom {
    font-size:.68rem;
    gap:15px;
    margin-top:30px
  }

  .mobile-contact {
    position:fixed;
    bottom:0;
    left:0;
    right:0;
    z-index:25;
    display:grid;
    grid-template-columns:1fr 1fr;
    background:#fff;
    border-top:1px solid var(--line);
    padding-bottom:env(safe-area-inset-bottom);
    box-shadow:0 -3px 16px #17221d0b
  }

  .mobile-contact a {
    min-height:55px;
    text-decoration:none;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:9px;
    font-size:0.83rem;
    font-weight:700
  }

  .mobile-contact a:first-child {
    background:var(--green)
  }

  .mobile-contact a svg {
    width:18px;
    height:18px
  }

  .lightbox-frame {
    padding-inline:16px
  }

  .filter-bar {
    gap:7px
  }

  .filter-button {
    padding:9px 13px;
    font-size:.78rem
  }

}

@media(max-width:420px) {
  .brand-location {
    display:none
  }

  .brand-name {
    font-size:.86rem
  }

  .brand {
    gap:8px
  }

  .nav-wrap {
    gap:9px
  }

  .language-switch {
    padding:2px
  }

  .language-switch a {
    padding:7px 6px
  }

  .hero-copy .actions {
    flex-direction:column;
    align-items:stretch
  }

  .hero-copy .actions .button {
    font-size:0.9rem
  }

  .hero-image>img {
    height:300px
  }

  .service-grid {
    grid-template-columns:1fr
  }

  .service-card {
    min-height:215px
  }

  .service-card h3 {
    font-size:1.24rem
  }

  .service-card p {
    font-size:.88rem
  }

  .service-card .text-link {
    font-size:0.8rem
  }

  .service-card-wide .button {
    font-size:0.85rem
  }

  .feature-grid {
    grid-template-columns:1fr
  }

  .team-card {
    grid-template-columns:1fr
  }

  .team-card>img {
    height:300px;
    min-height:0;
    object-position:50% 18%
  }

  .team-copy {
    padding:26px
  }

  .project-grid {
    grid-template-columns:1fr
  }

  .project-card h3 {
    font-size:1.15rem
  }

  .project-card p.project-desc {
    font-size:.88rem
  }

  .project-category {
    font-size:.68rem
  }

  .form-grid {
    grid-template-columns:1fr
  }

  .field.full {
    grid-column:auto
  }

  .scope-grid {
    grid-template-columns:1fr
  }

  .google-card {
    grid-template-columns:1fr
  }

  .google-mark {
    width:40px;
    height:40px
  }

  .google-card>.text-link {
    grid-column:auto
  }

  .builder-links {
    grid-template-columns:1fr
  }

  .hours-row {
    font-size:0.83rem
  }

  .footer-col:last-child {
    grid-column:1/-1
  }

}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }

  *,*:before,*:after {
    transition:none!important;
    animation:none!important
  }

}

@media print {
  .site-header,.topline,.mobile-contact,.filter-bar,.estimate-form,.lightbox,.site-footer,.menu-toggle {
    display:none!important
  }

  .section {
    padding-block:30px
  }

  .wrap {
    width:100%
  }

  .hero-grid {
    min-height:0
  }

  .hero-image>img {
    min-height:0;
    height:250px
  }

  .button {
    border:1px solid #444;
    background:#fff;
    color:#000
  }

  .dark {
    background:#fff;
    color:#000
  }

  .dark p,.dark .lead {
    color:#444
  }

  .project-card,.scope-card {
    break-inside:avoid
  }

}

.footer-col .social-heading {
  margin-top:26px
}

.footer-col .social-links {
  flex-direction:row;
  flex-wrap:wrap
}

@media(max-width:980px) {
  .nojs-nav {
    display:block
  }

}

.service-card-wide {
  grid-column:span 1;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:0;
  min-height:264px
}

.service-card-wide .icon {
  width:32px;
  height:32px;
  margin-bottom:22px
}

.service-card-wide .button {
  margin-left:0;
  margin-top:auto
}

.service-card-wide p {
  margin-bottom:22px
}

@media(max-width:420px) {
  .service-card-wide {
    min-height:215px
  }

}

@media(max-width:380px) {
  .brand-name {
    font-size:.78rem
  }

}

/* In-page navigation keeps long service pages easy to scan without JavaScript. */
.page-sections {
  border-block:1px solid var(--line);
  background:#fff
}

.page-sections .wrap {
  display:flex;
  gap:10px 14px;
  align-items:center;
  flex-wrap:wrap;
  padding-block:16px
}

.page-sections span {
  font-size:.75rem;
  font-weight:700;
  color:var(--muted);
  margin-right:8px
}

.page-sections a {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding:9px 14px;
  border-radius:4px;
  background:var(--paper);
  font-size:.85rem;
  font-weight:700;
  text-decoration:none;
  color:var(--green-dark)
}

.page-sections a:hover {
  background:#e4eddf
}

.service-group+.service-group {
  padding-top:0
}

.form-required {
  font-size:.8rem;
  color:var(--muted);
  margin-bottom:22px
}

.request-ready:focus {
  outline:3px solid var(--green-dark);
  outline-offset:4px
}

body.lightbox-open {
  overflow:hidden
}

.hero-copy,.hero-image,.contact-copy,.team-copy {
  min-width:0
}

.service-card .number {
  font-variant-numeric:tabular-nums
}

.footer-col li a {
  display:inline-flex;
  align-items:center;
  min-height:28px
}

.team-contacts a {
  min-height:28px;
  display:inline-flex;
  align-items:center
}

@media(max-width:700px) {
  html {
    scroll-padding-bottom:96px
  }

  .nav-wrap .brand {
    min-width:0;
    flex-shrink:1
  }

  .nav-wrap .brand>span {
    min-width:0
  }

  .brand img {
    width:48px;
    height:48px
  }

  .page-sections .wrap {
    gap:8px;
    padding-block:12px
  }

  .page-sections span {
    flex-basis:100%
  }

  .page-sections a {
    font-size:.8rem;
    padding:9px 12px
  }

  .field {
    font-size:0.86rem
  }

  .field small {
    font-size:.78rem
  }

  .form-intro {
    font-size:0.9rem
  }

  .form-required {
    font-size:0.83rem
  }

  .form-privacy {
    font-size:.78rem
  }

  .request-message {
    font-size:.9rem
  }

}

@media(max-width:600px) {
  .service-grid,.project-grid,.scope-grid {
    grid-template-columns:1fr
  }

  .service-card {
    min-height:230px
  }

  .service-card h3 {
    font-size:1.24rem
  }

  .service-card p {
    font-size:.93rem
  }

  .service-card .text-link {
    font-size:.85rem
  }

  .project-card h3 {
    font-size:1.16rem
  }

  .project-card p.project-desc {
    font-size:.93rem
  }

  .project-category {
    font-size:.7rem
  }

  .project-card .text-link {
    font-size:.83rem
  }

  .scope-card p {
    font-size:.93rem
  }

  .lightbox-control {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px
  }

  .lightbox-index {
    grid-column:1/-1;
    grid-row:1;
    text-align:center
  }

  .lightbox-control button {
    padding:10px
  }

}

@media(max-width:480px) {
  .process-grid {
    grid-template-columns:1fr
  }

  .process-grid li {
    display:grid;
    grid-template-columns:44px 1fr;
    column-gap:16px
  }

  .process-grid .step-number {
    grid-row:1/3;
    margin:0
  }

  .process-grid h3 {
    font-size:1.1rem;
    max-width:none
  }

  .process-grid p {
    font-size:0.9rem;
    margin-top:9px
  }

  .feature-grid {
    grid-template-columns:1fr
  }

  .feature-grid p {
    font-size:0.9rem
  }

  .team-card {
    grid-template-columns:1fr
  }

  .team-card>img {
    height:300px;
    min-height:0;
    object-position:50% 18%
  }

  .team-copy {
    padding:26px
  }

  .team-bio {
    font-size:.93rem
  }

  .team-role {
    font-size:0.86rem
  }

  .team-detail {
    font-size:.8rem
  }

  .team-contacts {
    font-size:.88rem
  }

  .hours-row {
    gap:12px;
    flex-wrap:wrap
  }

  .hours-row strong {
    white-space:nowrap
  }

}

@media(max-width:380px) {
  .nav-wrap .brand-name {
    font-size:.78rem;
    max-width:88px;
    line-height:1.25
  }

}

/* Luxury project presentation and shared motion controls. */
:root {
  --display:Georgia,"Times New Roman",serif;
  --warm-paper:#f4f2eb;
  --warm-ink:#675235;
}

.visually-hidden {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.luxury-hero h1,.luxury-feature h2,.craft-section h2 {
  font-family:var(--display);
  font-weight:400;
  letter-spacing:-.045em;
  line-height:1.06;
}

/* Seamless left-to-right ribbon, with a persistent, separate pause control. */
.motion-band {
  display:flex;
  align-items:stretch;
  background:var(--green);
  color:var(--ink);
  border-block:1px solid #17221d26;
}

.motion-window {
  flex:1;
  min-width:0;
  overflow-x:auto;
  scrollbar-width:thin;
}

.motion-track {
  display:flex;
  width:max-content;
}

.motion-group {
  display:flex;
  align-items:center;
  justify-content:space-around;
  flex-shrink:0;
  min-width:100vw;
  gap:26px;
  padding:20px 26px 20px 0;
  font-size:0.8rem;
  font-weight:700;
  white-space:nowrap;
}

.motion-dot {
  font-size:1.1rem;
}

.motion-copy {
  display:none;
}

.motion-band[data-motion-enabled="true"] .motion-window {
  overflow:hidden;
}

.motion-band[data-motion-enabled="true"] .motion-copy {
  display:block;
}

.motion-band[data-motion-enabled="true"] .motion-track {
  animation:service-drift 48s linear infinite;
}

.motion-band[data-paused="true"] .motion-track,
.motion-band[data-frozen="true"] .motion-track {
  animation-play-state:paused;
}

.motion-toggle {
  flex-shrink:0;
  min-height:56px;
  min-width:125px;
  padding:12px 20px;
  border:0;
  border-left:1px solid #17221d50;
  border-radius:0;
  font-size:.76rem;
  font-weight:700;
  background:var(--green);
  color:var(--ink);
}

.motion-toggle:hover:not(:disabled) {
  background:#b5e99c;
}

.motion-toggle:focus-visible {
  outline:3px solid var(--ink);
  outline-offset:-5px;
}

.motion-toggle:disabled {
  cursor:default;
}

@keyframes service-drift {
  from {transform:translateX(-50%)}
  to {transform:translateX(0)}
}

.service-card {
  padding:0;
  overflow:hidden;
  border-radius:4px;
}

.service-card-copy {
  width:100%;
  flex:1;
  position:relative;
  display:flex;
  flex-direction:column;
  padding:28px;
}

.service-card-image {
  width:100%;
  overflow:hidden;
}

.service-card-image img {
  width:100%;
  aspect-ratio:16/10;
  height:auto;
  object-fit:cover;
  transition:transform .35s ease;
}

.service-card:hover .service-card-image img {
  transform:scale(1.03);
}

.service-card-copy .service-card-title {
  display:block;
  font-size:1.24rem;
  font-weight:700;
  letter-spacing:-.025em;
  line-height:1.25;
}

.service-card-copy .service-card-description {
  display:block;
  color:var(--muted);
  font-size:0.93rem;
  line-height:1.65;
  margin:13px 0 24px;
}

.service-card-copy .text-link {
  margin-top:auto;
}

.service-card-wide {
  padding:32px;
}

/* The homepage luxury feature layers two real, separately captioned projects. */
.luxury-feature {
  padding-block:110px;
}

.luxury-feature-grid {
  display:grid;
  grid-template-columns:minmax(0,1.14fr) minmax(0,1fr);
  align-items:center;
  gap:82px;
}

.luxury-feature-images {
  position:relative;
  padding:0 52px 82px 0;
  min-width:0;
}

.luxury-feature-main>img {
  width:100%;
  height:auto;
}

.luxury-feature-main figcaption {
  color:#d2dbd3;
  font-size:.72rem;
  padding:15px 30% 0 0;
}

.luxury-feature-detail {
  position:absolute;
  width:36%;
  right:0;
  bottom:0;
  border:7px solid var(--ink);
  background:var(--ink);
}

.luxury-feature-detail>img {
  width:100%;
  height:auto;
}

.luxury-feature-detail figcaption {
  font-size:0.64rem;
  line-height:1.4;
  padding-top:8px;
  color:#d2dbd3;
}

.luxury-feature h2,.craft-section h2 {
  font-size:clamp(2.8rem,3.8vw,4rem);
}

.luxury-feature .lead,.craft-section .lead {
  margin-top:24px;
}

.luxury-points {
  list-style:none;
  margin:25px 0 32px;
  padding:0;
}

.luxury-points li {
  display:flex;
  gap:10px;
  align-items:flex-start;
  font-size:.88rem;
  margin-block:10px;
}

.luxury-points svg {
  flex-shrink:0;
  color:var(--green);
  margin-top:5px;
}

/* Full photographs keep ceilings, stairs and architectural details in view. */
.natural-gallery {
  display:block;
  columns:3;
  column-gap:26px;
}

.natural-gallery .project-card {
  display:inline-block;
  width:100%;
  break-inside:avoid;
  vertical-align:top;
  margin:0 0 36px;
}

.natural-gallery .project-photo {
  aspect-ratio:auto;
}

.natural-gallery .project-photo>img {
  height:auto;
}

.project-photo {
  border-radius:3px;
}

.project-photo:hover>img {
  transform:scale(1.02);
}

.project-copy {
  padding:0 2px;
}

/* The custom-home page gets a panoramic opening and a six-home showcase. */
.luxury-hero {
  background:var(--warm-paper);
  padding:34px 0 30px;
}

.luxury-hero-copy {
  display:grid;
  grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);
  gap:70px;
  align-items:center;
  padding:25px 0 48px;
}

.luxury-hero h1 {
  font-size:clamp(3.2rem,4.4vw,4.6rem);
  max-width:20ch;
}

.luxury-hero h1 span {
  display:block;
}

.luxury-hero h1 span:last-child {
  font-style:italic;
}

.luxury-hero .actions {
  gap:18px 22px;
  margin-top:24px;
}

.luxury-hero .text-link {
  font-size:0.86rem;
  min-height:44px;
}

.luxury-panorama {
  width:min(1408px,calc(100% - 72px));
  margin:auto;
}

.luxury-panorama>img {
  width:100%;
  height:auto;
  aspect-ratio:2.2/1;
  object-fit:cover;
  object-position:50% 54%;
}

.luxury-panorama figcaption {
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:10px 24px;
  padding:16px 0;
  color:var(--muted);
  font-size:0.75rem;
  line-height:1.5;
  border-bottom:1px solid var(--line);
}

.luxury-panorama figcaption a {
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:28px;
}

.luxury-hero .proof-list {
  justify-content:center;
  margin-block:18px 0;
}

.builder-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:34px 28px;
}

.builder-card {
  min-width:0;
  display:flex;
  flex-direction:column;
  background:#fff;
  border:1px solid var(--line);
}

.builder-photo {
  aspect-ratio:2/1;
  border-radius:0;
}

.builder-photo>img {
  object-position:50% 55%;
}

.builder-card-copy {
  padding:30px;
  display:flex;
  flex-direction:column;
  flex:1;
}

.builder-card-heading {
  display:flex;
  gap:15px;
  align-items:flex-start;
  justify-content:space-between;
}

.builder-card h3 {
  font-family:var(--display);
  font-size:clamp(1.7rem,2.3vw,2.2rem);
  font-weight:400;
  letter-spacing:-.035em;
  line-height:1.2;
}

.builder-byline {
  color:var(--muted);
  font-size:.66rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:10px;
}

.builder-number {
  font-size:.76rem;
  color:var(--muted);
  font-variant-numeric:tabular-nums;
  margin-top:3px;
}

.builder-scope {
  border-top:1px solid var(--line);
  padding-top:18px;
  margin-top:24px;
}

.builder-scope p {
  font-size:.68rem;
  color:var(--muted);
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:7px;
}

.builder-scope strong,.builder-scope>span {
  display:block;
  font-size:0.93rem;
}

.builder-scope>span {
  font-size:.85rem;
  color:var(--muted);
  margin-top:3px;
}

.project-award {
  display:flex;
  align-items:center;
  gap:13px;
  margin:24px 0;
  padding:13px 15px;
  background:var(--warm-paper);
  color:var(--warm-ink);
  font-size:.78rem;
  line-height:1.5;
}

.project-award>span:first-child {
  font-size:1.5rem;
}

.project-award small {
  display:block;
  font-size:0.66rem;
  margin-bottom:3px;
}

.builder-card-copy>.text-link {
  margin-top:auto;
  min-height:34px;
  font-size:.83rem;
}

.craft-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) repeat(2,minmax(0,.85fr));
  align-items:center;
  gap:28px;
}

.craft-grid>div {
  padding-right:25px;
}

.craft-section h2 {
  font-size:clamp(2.4rem,3vw,3.2rem);
}

.craft-section .lead {
  font-size:0.98rem;
}

.craft-section .text-link {
  margin-top:28px;
  min-height:44px;
  font-size:.9rem;
}

.craft-grid figure>img {
  width:100%;
  height:auto;
}

.craft-grid figcaption {
  color:#d2dbd3;
  font-size:0.72rem;
  line-height:1.5;
  padding-top:14px;
}

.craft-grid figure:last-child {
  margin-top:64px;
}

/* Native scrolling and snap points work with touch, trackpads and no script. */
.types-grid.project-types-rail {
  display:flex;
  overflow-x:auto;
  gap:22px;
  padding:8px 8px 24px;
  border:0;
  scroll-snap-type:x mandatory;
  scroll-padding-inline:8px;
  scrollbar-width:thin;
  scrollbar-color:#72816f var(--paper);
}

.project-types-rail .type-item {
  flex:0 0 calc((100% - 44px)/3);
  min-width:260px;
  padding:30px;
  background:var(--paper);
  border:1px solid var(--line);
  scroll-snap-align:start;
}

.rail-controls {
  display:flex;
  gap:10px;
  flex-shrink:0;
}

.rail-controls button {
  display:flex;
  align-items:center;
  justify-content:center;
  width:48px;
  height:48px;
  border:1px solid #72816f;
  border-radius:50%;
  color:var(--ink);
  background:#fff;
}

.rail-controls button:hover:not(:disabled) {
  background:var(--green);
}

.rail-controls button:disabled {
  opacity:.4;
  cursor:default;
}

.reverse-arrow {
  transform:rotate(180deg);
}

@media(max-width:1180px) {
  .luxury-feature-grid {gap:45px}
}

@media(max-width:980px) {
  .luxury-feature {padding-block:76px}
  .luxury-feature-grid {gap:30px}
  .luxury-feature h2 {font-size:2.9rem}
  .luxury-feature-images {padding-right:30px}
  .luxury-feature-detail {width:44%}
  .natural-gallery {columns:2}
  .luxury-hero-copy {gap:36px}
  .luxury-hero h1 {font-size:3.2rem}
  .luxury-panorama {width:calc(100% - 48px)}
  .craft-grid {grid-template-columns:1fr 1fr}
  .craft-grid>div {grid-column:1/-1;max-width:700px;padding:0}
  .craft-grid figure:last-child {margin-top:40px}
  .project-types-rail .type-item {flex-basis:calc((100% - 22px)/2)}
}

@media(max-width:700px) {
  .motion-group {gap:20px;font-size:.76rem;padding-block:17px}
  .motion-toggle {min-width:105px;padding-inline:12px;font-size:.7rem}
  .luxury-feature {padding-block:62px}
  .luxury-feature-grid {grid-template-columns:1fr;gap:38px}
  .luxury-feature-copy {grid-row:1}
  .luxury-feature h2 {font-size:clamp(2.7rem,9vw,3.6rem)}
  .luxury-feature-images {width:100%;max-width:520px;padding:0 65px 65px 0}
  .luxury-feature-detail {width:36%}
  .luxury-feature-main figcaption {font-size:.7rem;padding-right:20%}
  .luxury-feature-detail figcaption {font-size:.64rem}
  .luxury-hero {padding-top:24px}
  .luxury-hero-copy {grid-template-columns:1fr;gap:24px;padding:12px 0 30px}
  .luxury-hero h1 {font-size:clamp(2.8rem,9.5vw,4rem)}
  .luxury-panorama {width:calc(100% - 36px)}
  .luxury-panorama>img {aspect-ratio:3/2}
  .luxury-panorama figcaption {font-size:.72rem}
  .luxury-hero .proof-list {justify-content:flex-start;font-size:.75rem}
  .builder-grid {grid-template-columns:1fr;gap:28px}
  .builder-card-copy {padding:26px}
  .builder-card h3 {font-size:2rem}
  .craft-section h2 {font-size:2.8rem}
  .craft-grid {gap:18px}
  .craft-grid>div {margin-bottom:16px}
  .craft-grid figcaption {font-size:0.68rem}
  .rail-controls {margin-top:24px}
  .project-types-rail .type-item {flex-basis:84%;min-width:0;padding:26px}
}

@media(max-width:600px) {
  .natural-gallery {columns:1}
  .natural-gallery .project-card {margin-bottom:38px}
  .project-copy {padding-inline:1px}
  .project-card h3 {font-size:1.19rem}
  .project-card p.project-desc {font-size:.93rem}
}

@media(prefers-reduced-motion:reduce) {
  .motion-copy {display:none!important}
  .motion-band .motion-window {overflow-x:auto}
  .motion-band .motion-track {animation:none!important;transform:none}
  .project-photo:hover>img,.service-card:hover .service-card-image img {transform:none}
  .project-types-rail {scroll-behavior:auto;scroll-snap-type:none}
}

@media print {
  .motion-band,.rail-controls {display:none!important}
  .luxury-hero-copy,.luxury-feature-grid,.craft-grid {display:block}
  .luxury-feature-detail {display:none}
  .luxury-feature-images {padding:0}
  .luxury-feature-main figcaption {color:#444;padding-right:0}
  .types-grid.project-types-rail {display:grid;grid-template-columns:1fr 1fr;overflow:visible}
}

/* Homepage: preserve the supplied Canva design's bold, centered character. */
body[data-page="home"] {
  --paper:#f7f8f6;
}

.signature-hero {
  position:relative;
  isolation:isolate;
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:clamp(640px,82svh,850px);
  overflow:hidden;
  padding:80px 0 86px;
  text-align:center;
  background:#17221d;
}

.signature-hero-photo,.signature-hero-photo::after {
  position:absolute;
  inset:0;
}

.signature-hero-photo {
  z-index:-2;
}

.signature-hero-photo img {
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 52%;
}

.signature-hero-photo::after {
  content:"";
  /* Even over pure white pixels the 72% ink overlay keeps all hero text legible. */
  background:linear-gradient(180deg,rgba(23,34,29,.80),rgba(23,34,29,.72) 55%,rgba(23,34,29,.78));
}

.signature-watermark {
  position:absolute;
  z-index:-1;
  bottom:-.25em;
  left:50%;
  transform:translateX(-50%);
  font-size:clamp(7rem,20vw,19rem);
  line-height:1;
  font-weight:900;
  letter-spacing:-.07em;
  white-space:nowrap;
  color:#7ed957;
  opacity:.07;
  pointer-events:none;
}

.signature-hero-content {
  max-width:1100px;
}

.signature-hero .eyebrow {
  color:#d8f5cc;
  font-size:clamp(.72rem,1.1vw,.87rem);
  letter-spacing:.13em;
  margin-bottom:24px;
}

.signature-hero h1 {
  font-family:Arial,"Helvetica Neue",sans-serif;
  font-size:clamp(2.5rem,4.8vw,4.4rem);
  font-weight:800;
  line-height:1.12;
  letter-spacing:-.035em;
}

.signature-hero h1 .line {
  display:block;
}

.signature-hero h1 .line:last-child {
  color:var(--green);
}

.signature-hero .lead {
  max-width:64ch;
  margin:26px auto 0;
  color:#fff;
  font-size:clamp(1rem,1.45vw,1.18rem);
  line-height:1.8;
}

.signature-hero .actions {
  justify-content:center;
  gap:16px;
  margin-top:30px;
}

.signature-hero .button {
  min-height:54px;
  padding-inline:26px;
  border-radius:7px;
}

.signature-hero .button.outline {
  background:rgba(23,34,29,.3);
  border-color:#fff;
  color:#fff;
}

.signature-hero .button.outline:hover {
  background:#17221d;
}

.signature-hero .proof-list {
  justify-content:center;
  gap:12px 28px;
  margin:29px 0 0;
  color:#fff;
  font-size:.83rem;
}

.signature-hero .proof-list svg {
  color:var(--green);
}

.signature-work-link,.signature-photo-credit {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:44px;
  color:#fff;
  text-decoration:none;
}

.signature-work-link {
  margin-top:19px;
  font-size:.86rem;
  font-weight:700;
}

.signature-work-link svg {
  transform:rotate(90deg);
}

.signature-photo-credit {
  position:absolute;
  bottom:12px;
  inset-inline:20px;
  font-size:.72rem;
}

.signature-work-link:hover,.signature-photo-credit:hover {
  text-decoration:underline;
}

.signature-hero a:focus-visible {
  outline-color:#fff;
}

.home-numbered {
  display:grid;
  grid-template-columns:110px minmax(0,1fr);
  gap:42px;
  align-items:start;
}

.home-section-number {
  font-size:6rem;
  font-weight:900;
  letter-spacing:-.06em;
  line-height:1;
  color:#709952;
}

.home-numbered h2 {
  font-size:clamp(2rem,3.1vw,2.8rem);
  letter-spacing:-.03em;
  line-height:1.18;
}

.home-numbered .lead {
  margin-top:22px;
  max-width:72ch;
}

.home-statement .wrap {
  max-width:1020px;
}

.home-services .section-top {
  max-width:850px;
  margin:0 auto 48px;
  text-align:center;
}

.home-services .section-top>div,.home-services .lead {
  max-width:none;
}

.home-services .service-grid {
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:24px;
}

.home-services .service-card {
  border-radius:12px;
  border-color:#e5e9e2;
  box-shadow:0 4px 18px #17221d0a;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}

.home-services .service-card:hover {
  transform:translateY(-5px);
  border-color:#7caa70;
  box-shadow:0 12px 26px #17221d14;
}

.home-services .service-card-copy,.home-services .service-card-wide {
  padding:28px 24px;
}

.home-services .service-card .number {
  font-size:1.4rem;
  line-height:1;
  color:var(--green-dark);
}

.home-services .service-card-title {
  font-size:1.16rem;
  line-height:1.3;
}

.home-services .service-card .icon {
  margin-bottom:26px;
}

.home-services .service-card-description {
  font-size:.9rem;
}

.home-services .service-card-wide {
  border-color:var(--ink);
}

.home-why .section-top {
  margin-bottom:0;
}

.home-why .feature-grid {
  margin-top:50px;
}

.home-why .feature-grid article {
  border-color:#c1ddb4;
  border-width:3px;
}

.home-why .feature-grid p {
  color:var(--muted);
}

.home-types .rail-controls {
  justify-content:flex-end;
  margin:28px 0 14px;
  gap:10px;
}

.home-types .rail-motion-toggle {
  width:auto;
  min-width:130px;
  padding-inline:18px;
  border-radius:24px;
  font-size:.78rem;
  font-weight:700;
}

.home-types .project-types-rail {
  scroll-snap-type:x proximity;
}

.home-types[data-rail-running="true"] .project-types-rail {
  scroll-snap-type:none;
  scroll-behavior:auto;
}

.home-types .type-item {
  display:flex;
  flex-direction:column;
  flex:0 0 285px;
  min-width:0;
  background:#fff;
  border:1px solid #e5e9e2;
  border-radius:10px;
  padding:28px;
  box-shadow:0 4px 15px #17221d09;
}

.home-types .type-item h3 {
  line-height:1.3;
  color:var(--green-dark);
}

.home-types .type-item p {
  margin-bottom:24px;
}

.home-types .type-item>svg {
  margin-top:auto;
}

/* The luxury feature retains its photography within the homepage's bold type. */
body[data-page="home"] .luxury-feature h2 {
  font-family:Arial,"Helvetica Neue",sans-serif;
  font-weight:800;
  font-size:clamp(2rem,3.2vw,3rem);
  line-height:1.15;
  letter-spacing:-.035em;
}

@media(max-width:1180px) {
  .home-services .service-grid {grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media(max-width:840px) {
  .home-services .service-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
  .signature-hero {min-height:660px;padding-block:68px 88px}
  .signature-hero h1 {font-size:clamp(2.5rem,6.2vw,3.6rem)}
  .home-numbered {grid-template-columns:75px minmax(0,1fr);gap:28px}
  .home-section-number {font-size:4.5rem}
}

@media(max-width:580px) {
  .signature-hero {min-height:0;padding-block:62px 86px}
  .signature-hero h1 {font-size:clamp(2.1rem,8.7vw,3rem)}
  .signature-hero .eyebrow {max-width:32ch;margin:0 auto 24px;line-height:1.8;letter-spacing:.08em}
  .signature-hero .lead {font-size:1rem;line-height:1.7}
  .signature-hero .actions {flex-direction:column;align-items:stretch;max-width:320px;margin-inline:auto}
  .signature-hero .proof-list {gap:12px 20px;font-size:.76rem;max-width:350px;margin-inline:auto}
  .signature-hero .proof-list li {justify-content:center}
  .signature-photo-credit {font-size:.68rem}
  .home-numbered {grid-template-columns:1fr;gap:20px}
  .home-section-number {font-size:3.6rem}
  .home-numbered h2 {font-size:2rem}
  .home-numbered .lead {margin-top:18px}
  .home-services .service-grid {grid-template-columns:1fr;gap:20px}
  .home-services .section-top {text-align:left;margin-bottom:32px}
  .home-services .service-card-copy,.home-services .service-card-wide {padding:28px}
  .home-services .service-card-title {font-size:1.3rem}
  .home-services .service-card-description {font-size:0.98rem}
  .home-services .service-card .text-link {font-size:.88rem}
  .home-types .rail-controls {justify-content:flex-start}
  .home-types .type-item {flex-basis:85%;padding:26px}
}

@media(prefers-reduced-motion:reduce) {
  .home-services .service-card {transition:none}
  .home-services .service-card:hover {transform:none}
  .home-types .project-types-rail {scroll-snap-type:none}
}

@media print {
  .signature-hero {min-height:0;padding:32px 0;color:#17221d;background:#fff}
  .signature-hero-photo,.signature-watermark,.signature-work-link,.signature-photo-credit {display:none}
  .signature-hero h1 .line:last-child,.signature-hero .lead,.signature-hero .eyebrow,.signature-hero .proof-list {color:#17221d}
  .home-types .project-types-rail {overflow:visible}
  .home-types .type-item {break-inside:avoid;box-shadow:none}
}

/* ---------------------------------------------------------------
   Minimum target size (WCAG 2.2 AA, 2.5.8). Standalone links sat at
   18-22px tall, under the 24px minimum, which makes them awkward to
   tap on a phone. Vertical centring keeps the visual position intact.
   --------------------------------------------------------------- */
.text-link {
  min-height:24px
}

.breadcrumb a,.topline a {
  display:inline-flex;
  align-items:center;
  min-height:24px
}
