:root {
  --forest:#173c2a;
  --forest-dark:#0d2b1d;
  --sage:#9eae96;
  --cream:#f5f1e8;
  --paper:#fffdf8;
  --ink:#172b20;
  --muted:#667266;
  --line:#d9dfd3;
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Lato",Arial,sans-serif;
  --max-width:1240px;
  --header-height:112px;
  --ease:cubic-bezier(.22,1,.36,1);
}

* {
  box-sizing:border-box
}

html {
  scroll-behavior:smooth
}

body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  line-height:1.7;
  -webkit-font-smoothing:antialiased
}

::selection {
  background:#c7d2ba;
  color:var(--forest-dark)
}

a {
  color:inherit
}

button {
  font:inherit
}

img {
  max-width:100%
}

p,h1,h2,h3 {
  margin-top:0
}

p {
  margin-bottom:1.25rem
}

em {
  font-weight:400
}

h1,h2,h3 {
  font-family:var(--serif);
  font-weight:400;
  line-height:1.05
}

h2 {
  font-size:clamp(3rem,5.4vw,5.4rem);
  letter-spacing:-.035em;
  margin-bottom:28px
}

h2 em {
  color:#718169
}

a:focus-visible,button:focus-visible {
  outline:3px solid #899f79;
  outline-offset:6px
}

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

.skip-link {
  position:fixed;
  top:12px;
  left:12px;
  transform:translateY(-180%);
  padding:12px 20px;
  background:var(--paper);
  z-index:100
}

.skip-link:focus {
  transform:translateY(0)
}

.contact-bar {
  background:var(--forest-dark);
  color:#e8eee3;
  font-size:.67rem;
  letter-spacing:.14em;
  text-transform:uppercase
}

.contact-bar__inner {
  display:flex;
  justify-content:space-between;
  gap:18px;
  padding-block:9px
}

.contact-bar a {
  text-decoration:none
}

.site-header {
  position:sticky;
  top:0;
  z-index:30;
  background:rgba(255,253,248,.97);
  border-bottom:1px solid rgba(23,60,42,.1);
  backdrop-filter:blur(16px);
  transition:box-shadow .3s
}

.site-header.is-scrolled {
  box-shadow:0 8px 28px rgba(10,36,22,.07)
}

.header-inner {
  min-height:112px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  position:relative
}

.brand {
  display:flex;
  align-items:center;
  gap:9px;
  color:var(--forest);
  text-decoration:none;
  flex-shrink:0;
  line-height:1;
  min-width:0
}

.brand-logo {
  display:block;
  width:108px;
  height:108px;
  object-fit:contain;
  flex-shrink:0
}

.brand-text {
  display:flex;
  flex-direction:column;
  gap:10px
}

.brand-name {
  font-family:var(--serif);
  font-weight:400;
  font-size:2.75rem;
  letter-spacing:.035em
}

.brand-subtitle {
  font-family:Georgia,"Times New Roman",serif;
  font-size:.79rem;
  font-weight:600;
  letter-spacing:.12em;
  line-height:1.2;
  color:var(--forest)
}

nav {
  display:flex;
  align-items:center;
  gap:29px
}

nav a {
  position:relative;
  text-decoration:none;
  font-size:.75rem;
  text-transform:uppercase;
  letter-spacing:.11em;
  padding:14px 0
}

nav a:not(.nav-cta)::after {
  content:"";
  position:absolute;
  left:0;
  bottom:7px;
  width:100%;
  height:1px;
  background:var(--forest);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .35s var(--ease)
}

nav a:hover::after,nav a[aria-current]::after {
  transform:scaleX(1)
}

.nav-cta {
  background:var(--forest);
  color:var(--paper);
  padding:15px 20px;
  transition:background .25s,transform .3s
}

.nav-cta:hover {
  background:#2b5139;
  transform:translateY(-2px)
}

.menu-toggle,.menu-toggle[hidden] {
  display:none
}

.site-header::after {
  content:"";
  position:absolute;
  bottom:-1px;
  left:0;
  width:100%;
  height:2px;
  background:var(--sage);
  transform:scaleX(var(--scroll-progress,0));
  transform-origin:left;
  pointer-events:none
}

main>section[id] {
  scroll-margin-top:var(--header-height)
}

.eyebrow {
  display:flex;
  align-items:center;
  gap:12px;
  font-size:.67rem;
  font-weight:700;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:#697f64;
  margin-bottom:24px
}

.eyebrow::before {
  content:"";
  width:26px;
  height:1px;
  background:currentColor;
  flex-shrink:0
}

.hero {
  position:relative;
  isolation:isolate;
  min-height:calc(100svh - 148px);
  display:flex;
  align-items:center;
  background:var(--forest-dark);
  color:var(--paper);
  overflow:hidden;
  padding:90px 0 130px
}

.hero::before {
  content:"";
  position:absolute;
  inset:-3%;
  z-index:-2;
  background:url("images/hero.jpg") center/cover no-repeat;
  background-image:image-set(url("images/hero.webp") type("image/webp"),url("images/hero.jpg") type("image/jpeg"));
  transform:scale(1.035);
  animation:hero-settle 2.5s var(--ease) both
}

.hero::after {
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(90deg,rgba(7,27,16,.84),rgba(7,27,16,.53) 60%,rgba(7,27,16,.2)),linear-gradient(0deg,rgba(7,27,16,.45),transparent 45%)
}

.hero-content {
  padding:0
}

.hero .eyebrow {
  color:#d3dec9
}

.hero h1 {
  font-size:clamp(3.7rem,6.8vw,7rem);
  max-width:1120px;
  letter-spacing:-.045em;
  margin-bottom:28px;
  line-height:1.03
}

.hero h1>span:not(.hero-divider) {
  display:block
}

.hero h1 em {
  color:#d2debf
}

.hero-divider {
  display:block;
  height:1px;
  width:min(720px,80%);
  background:rgba(227,237,214,.35);
  margin:24px 0
}

.hero-intro {
  max-width:520px;
  color:#e0e7db;
  font-size:1.05rem;
  line-height:1.8;
  margin-bottom:35px
}

.button-row {
  display:flex;
  flex-wrap:wrap;
  gap:14px
}

.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:28px;
  min-height:54px;
  padding:15px 26px;
  font-size:.73rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  text-decoration:none;
  border:1px solid transparent;
  transition:background .25s,color .25s,transform .35s var(--ease)
}

.button--primary {
  background:var(--cream);
  color:var(--forest-dark)
}

.button--primary:hover {
  background:#e2e8d6;
  transform:translateY(-3px)
}

.button--outline {
  color:var(--paper);
  border-color:rgba(255,253,248,.45)
}

.button--outline:hover {
  background:rgba(255,253,248,.12);
  transform:translateY(-3px)
}

.button span {
  font-size:1.2rem
}

.hero-note {
  display:flex;
  align-items:center;
  gap:15px;
  font-size:.72rem;
  letter-spacing:.03em;
  color:#d6dfce;
  margin-top:36px
}

.hero-note>span {
  height:5px;
  width:5px;
  background:var(--sage);
  border-radius:50%;
  box-shadow:0 0 0 5px rgba(158,174,150,.12)
}

.scroll-cue {
  position:absolute;
  left:40px;
  bottom:32px;
  display:flex;
  align-items:center;
  gap:24px;
  text-decoration:none;
  text-transform:uppercase;
  font-size:.6rem;
  letter-spacing:.16em
}

.scroll-cue>span:last-child {
  font-size:1.4rem;
  animation:cue-float 3s ease-in-out infinite
}

.hero-index {
  position:absolute;
  right:40px;
  bottom:40px;
  font-size:.6rem;
  letter-spacing:.15em;
  text-transform:uppercase;
  opacity:.7
}

.about-section {
  padding:115px 0 125px;
  position:relative
}

.about-layout {
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:100px;
  align-items:center
}

.about-content {
  max-width:510px
}

.about-copy {
  color:var(--muted);
  font-size:1.05rem;
  line-height:1.9
}

.about-image {
  position:relative;
  height:600px;
  background:var(--cream)
}

.about-image::before {
  content:"";
  position:absolute;
  inset:24px -22px -24px 22px;
  border:1px solid #c9d1bf;
  z-index:-1
}

.about-image img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover
}

.about-signature {
  display:flex;
  align-items:center;
  gap:20px;
  border-top:1px solid var(--line);
  padding-top:26px;
  margin-top:34px
}

.about-signature>span {
  font-size:2.7rem;
  color:#819376;
  line-height:1
}

.about-signature p {
  font-family:var(--serif);
  font-style:italic;
  font-size:1.55rem;
  line-height:1.1;
  margin:0;
  color:var(--forest)
}

.care-strip {
  background:#e9eddf;
  border-block:1px solid #d9dfcf;
  padding:24px 0
}

.care-strip__inner {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px
}

.care-strip__inner>span {
  font-size:.67rem;
  text-transform:uppercase;
  letter-spacing:.13em
}

.care-strip__inner>span[aria-hidden] {
  font-size:1.3rem;
  color:#8a9b7d
}

.services-section {
  padding:110px 0 120px;
  background:var(--cream)
}

.services-heading {
  max-width:760px;
  margin:0 auto 55px;
  text-align:center
}

.services-heading .eyebrow {
  justify-content:center
}

.services-heading>p:last-child {
  max-width:580px;
  margin:0 auto;
  color:var(--muted)
}

.service-tabs {
  display:flex;
  justify-content:center;
  gap:8px;
  flex-wrap:wrap;
  margin:0 0 70px
}

.service-tabs a {
  text-decoration:none;
  padding:12px 17px;
  border:1px solid #cbd4c1;
  font-size:.65rem;
  text-transform:uppercase;
  letter-spacing:.1em;
  transition:background .25s,color .25s
}

.service-tabs a:hover {
  background:var(--forest);
  color:var(--paper)
}

.service-list {
  display:flex;
  flex-direction:column;
  gap:110px
}

.service-row {
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:90px;
  align-items:center;
  scroll-margin-top:calc(var(--header-height) + 24px)
}

.service-row--reverse .service-copy {
  order:2
}

.service-row--reverse .service-image {
  order:1
}

.service-copy {
  max-width:480px
}

.service-number {
  font-size:.7rem;
  letter-spacing:.18em;
  color:#7b8e71;
  display:flex;
  gap:14px;
  align-items:center;
  margin-bottom:20px
}

.service-number::after {
  content:"";
  height:1px;
  width:60px;
  background:#c8d1bd
}

.service-copy h3 {
  font-size:clamp(2.6rem,4.3vw,4.3rem);
  letter-spacing:-.03em;
  margin-bottom:24px
}

.service-copy>p:not(.service-number) {
  font-size:.95rem;
  color:var(--muted);
  line-height:1.85
}

.service-features {
  list-style:none;
  padding:24px 0 0;
  border-top:1px solid #d5dccb;
  margin:27px 0 0;
  display:grid;
  gap:10px
}

.service-features li {
  position:relative;
  padding-left:20px;
  font-size:.8rem
}

.service-features li::before {
  content:"";
  position:absolute;
  left:0;
  top:.65em;
  width:5px;
  height:5px;
  border:1px solid #91a184;
  transform:rotate(45deg)
}

.service-image {
  position:relative;
  height:490px;
  overflow:hidden;
  background:#e3e8d9
}

.service-image img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 1.4s var(--ease)
}

.service-image:hover img {
  transform:scale(1.045)
}

.service-image::after {
  content:"";
  position:absolute;
  inset:14px;
  border:1px solid rgba(255,253,248,.45);
  pointer-events:none
}

.service-enquiry {
  display:inline-flex;
  gap:22px;
  align-items:center;
  margin-top:25px;
  padding-bottom:5px;
  border-bottom:1px solid #9caf90;
  color:var(--forest);
  font-size:.74rem;
  font-weight:700;
  text-decoration:none
}

.service-enquiry>span {
  font-size:1.2rem;
  transition:transform .3s
}

.service-enquiry:hover>span {
  transform:translate(3px,-3px)
}

.work-section {
  padding:100px 0 75px;
  background:var(--forest-dark);
  color:var(--paper);
  position:relative;
  overflow:hidden
}

.work-heading {
  text-align:center;
  max-width:870px;
  margin:0 auto 50px
}

.work-heading .eyebrow {
  justify-content:center;
  color:#b7c9a8
}

.work-heading h2 em {
  color:#bcccae
}

.work-heading>p:last-child {
  max-width:650px;
  margin:0 auto;
  color:#c7d3c1;
  font-size:.95rem
}

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

.work-photo {
  margin:0
}

.work-image {
  position:relative;
  aspect-ratio:4/3;
  background:#244531;
  overflow:hidden
}

.work-image img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 1.3s var(--ease)
}

.work-image:hover img {
  transform:scale(1.035)
}

.work-label {
  position:absolute;
  left:20px;
  bottom:20px;
  padding:9px 20px;
  background:var(--cream);
  color:var(--forest-dark);
  font-size:.67rem;
  letter-spacing:.15em;
  text-transform:uppercase
}

.work-caption {
  display:flex;
  justify-content:space-between;
  gap:20px;
  font-size:.63rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  margin:24px 0 0;
  color:#a8bba1
}

.comparison-switch {
  display:flex;
  justify-content:center;
  gap:8px;
  margin-bottom:28px
}

.comparison-switch button {
  padding:10px 20px;
  background:transparent;
  border:1px solid #58704f;
  color:#d3dec9;
  font-size:.65rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  cursor:pointer
}

.comparison-switch button[aria-pressed="true"] {
  background:var(--cream);
  color:var(--forest-dark);
  border-color:var(--cream)
}

.before-after-grid.is-single {
  grid-template-columns:1fr;
  max-width:900px;
  margin-inline:auto
}

.work-photo[hidden] {
  display:none
}

.approach-section {
  padding:100px 0 110px;
  background:var(--paper)
}

.approach-heading {
  text-align:center;
  margin-bottom:60px
}

.approach-heading .eyebrow {
  justify-content:center
}

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

.approach-grid article {
  padding-top:25px;
  border-top:1px solid var(--line)
}

.step-number {
  display:block;
  color:#92a283;
  font-size:.7rem;
  letter-spacing:.15em;
  margin-bottom:25px
}

.approach-grid h3 {
  font-size:2rem;
  max-width:300px;
  margin-bottom:17px
}

.approach-grid p {
  font-size:.91rem;
  color:var(--muted);
  max-width:320px;
  margin-bottom:0
}

.contact-section {
  padding:100px 0;
  background:var(--forest);
  color:var(--paper);
  position:relative;
  overflow:hidden
}

.contact-section::before {
  content:"";
  position:absolute;
  width:600px;
  height:600px;
  border:1px solid rgba(198,217,180,.1);
  border-radius:50%;
  right:-320px;
  top:-120px;
  pointer-events:none
}

.contact-section::after {
  content:"";
  position:absolute;
  width:720px;
  height:720px;
  border:1px solid rgba(198,217,180,.07);
  border-radius:50%;
  right:-380px;
  top:-180px;
  pointer-events:none
}

.contact-panel {
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  gap:100px;
  align-items:center
}

.contact-intro .eyebrow {
  color:#bdcfaf
}

.contact-intro h2 em {
  color:#c4d3b8
}

.contact-intro>p:not(.eyebrow) {
  max-width:460px;
  color:#d2ddcb;
  font-size:.96rem
}

.contact-details {
  display:flex;
  flex-direction:column;
  gap:5px;
  margin-top:32px
}

.contact-details>span {
  text-transform:uppercase;
  letter-spacing:.13em;
  font-size:.64rem;
  color:#b4c9a6
}

.contact-details>a {
  text-decoration:none;
  font-family:var(--serif);
  font-size:2rem
}

.contact-card {
  background:var(--cream);
  color:var(--ink);
  padding:48px 42px;
  box-shadow:18px 18px 0 rgba(0,0,0,.08)
}

.contact-card .eyebrow {
  font-size:.6rem;
  letter-spacing:.15em
}

.contact-card h3 {
  font-size:4.4rem;
  letter-spacing:-.04em;
  margin-bottom:20px
}

.contact-card>p:not(.eyebrow) {
  color:var(--muted);
  font-size:.93rem;
  max-width:310px
}

.contact-phone {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  text-decoration:none;
  font-family:var(--serif);
  font-size:2.3rem;
  border-bottom:1px solid #b7c3ac;
  padding:15px 0 12px;
  color:var(--forest);
  white-space:nowrap
}

.contact-phone>span {
  font-family:var(--sans);
  font-size:1.5rem;
  transition:transform .3s
}

.contact-phone:hover>span {
  transform:translate(4px,-4px)
}

.contact-card__note {
  display:block;
  font-size:.65rem;
  letter-spacing:.04em;
  color:var(--muted);
  margin-top:12px
}

.contact-card__area {
  font-size:.67rem;
  border-top:1px solid #d4dccb;
  margin-top:35px;
  padding-top:20px;
  display:flex;
  align-items:center;
  gap:12px
}

.contact-card__area>span {
  font-size:1.4rem;
  color:#839477
}

footer {
  padding:40px 0;
  background:#081d13;
  color:#a9b8a0;
  font-size:.67rem
}

.footer-inner {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:30px
}

.footer-inner>div {
  max-width:330px
}

.footer-inner strong {
  font-family:var(--serif);
  font-weight:400;
  font-size:1.45rem;
  color:#e0e7d8;
  line-height:1.1
}

.footer-inner p {
  margin:0;
  max-width:270px
}

.back-top {
  text-decoration:none;
  text-transform:uppercase;
  font-size:.59rem;
  letter-spacing:.13em;
  white-space:nowrap
}

.back-top span {
  margin-left:12px
}

.mobile-contact {
  display:none
}

/* Content remains visible if animation support is unavailable. */ .reveal {
  opacity:1;
  transform:none
}

.motion-ready .reveal {
  opacity:0;
  transform:translateY(24px);
  transition:opacity .9s var(--ease),transform 1s var(--ease);
  transition-delay:var(--reveal-delay,0ms)
}

.motion-ready .reveal.is-visible {
  opacity:1;
  transform:none
}

.hero-content>* {
  animation:hero-enter 1.1s var(--ease) both
}

.hero-content>:nth-child(2) {
  animation-delay:.1s
}

.hero-content>:nth-child(3) {
  animation-delay:.2s
}

.hero-content>:nth-child(4) {
  animation-delay:.3s
}

.hero-content>:nth-child(5) {
  animation-delay:.4s
}

@keyframes hero-enter {
  from {
    opacity:0;
    transform:translateY(18px)
  }
  to {
    opacity:1;
    transform:none
  }
}

@keyframes hero-settle {
  from {
    transform:scale(1.09)
  }
  to {
    transform:scale(1.035)
  }
}

@keyframes cue-float {
  0%,100% {
    transform:translateY(0)
  }
  50% {
    transform:translateY(5px)
  }
}

@media(min-width:1500px) {
  .hero {
    padding-block:130px 160px
  }
  .about-image {
    height:650px
  }
}

@media(max-width:1100px) {
  .container {
    width:calc(100% - 56px)
  }
  nav {
    gap:20px
  }
  nav a {
    font-size:.68rem
  }
  .brand-logo {
    width:94px;
    height:94px
  }
  .brand-name {
    font-size:2.4rem
  }
  .brand-subtitle {
    font-size:.7rem
  }
  .header-inner {
    min-height:102px
  }
  .about-layout,.service-row {
    gap:55px
  }
  .about-image {
    height:530px
  }
  .contact-panel {
    gap:55px
  }
  .contact-card {
    padding:36px 30px
  }
  .contact-phone {
    font-size:2rem
  }
  .hero h1 {
    font-size:clamp(3.6rem,7vw,6rem)
  }
}

@media(max-width:900px) {
  .header-inner {
    min-height:98px;
    flex-wrap:wrap;
    padding:4px 0;
    gap:0
  }
  .brand-logo {
    width:90px;
    height:90px
  }
  .brand-name {
    font-size:2.5rem
  }
  .brand-subtitle {
    font-size:.73rem
  }
  .has-menu .menu-toggle {
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:5px;
    width:46px;
    height:46px;
    background:transparent;
    border:1px solid var(--line);
    margin-left:auto;
    color:var(--forest);
    cursor:pointer
  }
  .menu-toggle span {
    width:21px;
    height:2px;
    background:currentColor;
    transition:transform .3s,opacity .2s
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(1) {
    transform:translateY(7px) rotate(45deg)
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(2) {
    opacity:0
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(3) {
    transform:translateY(-7px) rotate(-45deg)
  }
  nav {
    width:100%;
    flex-basis:100%;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    padding:14px 0 20px
  }
  nav a {
    font-size:.8rem;
    padding:14px;
    min-height:48px
  }
  .has-menu nav {
    display:none;
    position:absolute;
    left:-28px;
    right:-28px;
    top:100%;
    width:auto;
    background:var(--paper);
    padding:18px 28px 24px;
    border-bottom:1px solid var(--line);
    box-shadow:0 15px 25px rgba(15,35,22,.1);
    max-height:calc(100dvh - var(--header-height));
    overflow-y:auto
  }
  .has-menu nav.is-open {
    display:flex
  }
  .nav-cta {
    text-align:center;
    margin-top:8px
  }
  nav a:not(.nav-cta)::after {
    bottom:9px;
    left:14px;
    width:30px
  }
  .hero {
    min-height:700px;
    padding:85px 0 120px
  }
  .hero h1 {
    font-size:clamp(3.3rem,8.5vw,5.5rem)
  }
  .hero-index {
    display:none
  }
  .about-section {
    padding:80px 0 95px
  }
  .about-layout {
    grid-template-columns:1fr 1fr;
    gap:40px
  }
  .about-copy {
    font-size:.94rem
  }
  .about-image {
    height:480px
  }
  .about-signature p {
    font-size:1.3rem
  }
  .services-section {
    padding:80px 0
  }
  .service-row {
    gap:40px;
    grid-template-columns:1fr 1fr
  }
  .service-image {
    height:440px
  }
  .service-copy h3 {
    font-size:2.8rem
  }
  .service-copy>p:not(.service-number) {
    font-size:.88rem
  }
  .service-features li {
    font-size:.74rem
  }
  .service-list {
    gap:85px
  }
  .contact-panel {
    grid-template-columns:1fr 1fr;
    gap:35px
  }
  .contact-card {
    padding:32px 25px
  }
  .contact-phone {
    font-size:1.75rem
  }
  .contact-card h3 {
    font-size:3.5rem
  }
  .approach-grid {
    gap:28px
  }
  .care-strip__inner {
    flex-wrap:wrap;
    justify-content:center;
    gap:16px 24px
  }
  .footer-inner {
    flex-wrap:wrap
  }
}

@media(max-width:700px) {
  .container {
    width:calc(100% - 40px)
  }
  .contact-bar {
    font-size:.58rem;
    letter-spacing:.08em
  }
  .contact-bar__inner {
    align-items:center;
    gap:14px;
    padding-block:8px
  }
  .contact-bar__inner>span {
    max-width:50%
  }
  .contact-bar a {
    white-space:nowrap
  }
  .header-inner {
    min-height:88px
  }
  .brand-logo {
    width:80px;
    height:80px
  }
  .brand-name {
    font-size:2.15rem
  }
  .brand-text {
    gap:8px
  }
  .brand-subtitle {
    font-size:.67rem;
    letter-spacing:.065em
  }
  .has-menu nav {
    left:-20px;
    right:-20px;
    padding-inline:20px
  }
  .hero {
    min-height:calc(100svh - 130px);
    padding:75px 0 100px
  }
  .hero::before {
    background-position:60% center
  }
  .hero::after {
    background:linear-gradient(90deg,rgba(7,27,16,.83),rgba(7,27,16,.43)),linear-gradient(0deg,rgba(7,27,16,.3),transparent)
  }
  .hero h1 {
    font-size:clamp(3.1rem,9.5vw,4.5rem)
  }
  .hero-intro {
    font-size:.94rem
  }
  .hero-divider {
    margin:20px 0;
    width:100%
  }
  .hero-note {
    font-size:.65rem;
    margin-top:28px
  }
  .scroll-cue {
    left:20px;
    bottom:24px
  }
  .button {
    padding:14px 20px;
    font-size:.67rem;
    gap:18px
  }
  .about-layout,.service-row {
    grid-template-columns:1fr;
    gap:40px
  }
  .about-content {
    max-width:none
  }
  .about-copy {
    font-size:1rem
  }
  .about-image {
    height:auto;
    aspect-ratio:4/5;
    max-height:620px;
    margin-right:14px
  }
  .about-image::before {
    inset:18px -14px -18px 14px
  }
  .about-signature {
    margin-top:25px
  }
  .service-row--reverse .service-copy,.service-row--reverse .service-image {
    order:initial
  }
  .service-image {
    height:auto;
    aspect-ratio:4/3
  }
  .service-copy {
    max-width:none
  }
  .service-copy>p:not(.service-number) {
    font-size:.95rem
  }
  .service-features {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px 20px
  }
  .service-features li {
    font-size:.8rem
  }
  .services-heading {
    margin-bottom:35px
  }
  .service-tabs {
    gap:6px;
    margin-bottom:50px
  }
  .service-tabs a {
    padding:10px 11px;
    font-size:.57rem;
    letter-spacing:.05em
  }
  .service-list {
    gap:70px
  }
  .service-row {
    gap:28px
  }
  .service-number {
    margin-bottom:14px
  }
  .service-copy h3 {
    font-size:3.1rem
  }
  .care-strip {
    padding:20px 0
  }
  .care-strip__inner>span {
    font-size:.58rem
  }
  .care-strip__inner>span[aria-hidden] {
    font-size:1rem
  }
  .work-section {
    padding:75px 0 60px
  }
  .work-heading {
    margin-bottom:35px
  }
  .before-after-grid {
    grid-template-columns:1fr;
    gap:20px
  }
  .work-label {
    left:15px;
    bottom:15px
  }
  .work-caption {
    flex-direction:column;
    gap:6px;
    margin-top:20px
  }
  .approach-section {
    padding:75px 0
  }
  .approach-heading {
    margin-bottom:40px
  }
  .approach-grid {
    grid-template-columns:1fr;
    gap:30px
  }
  .approach-grid article {
    display:grid;
    grid-template-columns:40px 1fr;
    column-gap:15px;
    padding-top:22px
  }
  .step-number {
    grid-row:1/3;
    margin:9px 0 0
  }
  .approach-grid h3 {
    font-size:2.1rem;
    max-width:none;
    margin-bottom:12px
  }
  .approach-grid p {
    max-width:none
  }
  .contact-section {
    padding:75px 0
  }
  .contact-panel {
    grid-template-columns:1fr;
    gap:40px
  }
  .contact-intro>p:not(.eyebrow) {
    max-width:none
  }
  .contact-card {
    padding:32px;
    box-shadow:10px 10px 0 rgba(0,0,0,.08);
    margin-right:10px
  }
  .contact-phone {
    font-size:2.3rem
  }
  .contact-card h3 {
    font-size:3.9rem
  }
  .footer-inner {
    align-items:flex-start;
    flex-direction:column;
    gap:22px
  }
  footer {
    padding:35px 0 100px
  }
  .footer-inner p {
    max-width:none
  }
  .mobile-contact {
    display:flex;
    position:fixed;
    bottom:0;
    left:0;
    right:0;
    z-index:25;
    align-items:center;
    justify-content:space-between;
    gap:15px;
    min-height:62px;
    padding:14px 20px calc(14px + env(safe-area-inset-bottom));
    background:var(--cream);
    border-top:1px solid #d1dbc6;
    color:var(--forest);
    text-decoration:none;
    box-shadow:0 -5px 25px rgba(10,35,20,.08);
    transform:translateY(110%);
    transition:transform .4s var(--ease)
  }
  .mobile-contact.is-visible {
    transform:translateY(0)
  }
  .mobile-contact>span {
    font-family:var(--serif);
    font-size:1.1rem
  }
  .mobile-contact strong {
    font-size:.7rem;
    font-weight:700;
    white-space:nowrap;
    letter-spacing:.06em
  }
  .mobile-contact strong span {
    margin-left:10px;
    font-size:1rem
  }
}

@media(max-width:400px) {
  .container {
    width:calc(100% - 32px)
  }
  .brand-logo {
    width:67px;
    height:67px
  }
  .brand {
    gap:4px
  }
  .brand-name {
    font-size:1.9rem
  }
  .brand-subtitle {
    font-size:.61rem;
    letter-spacing:.03em
  }
  .brand-text {
    gap:7px
  }
  .header-inner {
    min-height:80px
  }
  .has-menu nav {
    left:-16px;
    right:-16px;
    padding-inline:16px
  }
  .hero h1 {
    font-size:2.85rem
  }
  .hero {
    padding:55px 0 90px
  }
  .hero .eyebrow {
    font-size:.6rem
  }
  .button-row {
    gap:10px
  }
  .button {
    min-height:49px;
    padding:13px 17px;
    font-size:.62rem
  }
  .button--outline {
    gap:15px
  }
  .hero-note {
    font-size:.6rem
  }
  .contact-card {
    padding:27px 22px
  }
  .contact-phone {
    font-size:2rem
  }
  .service-features {
    grid-template-columns:1fr
  }
  h2 {
    font-size:2.9rem
  }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important
  }
  .motion-ready .reveal {
    opacity:1;
    transform:none
  }
}

/* Keep intrinsic image dimensions from widening tablet columns. */ .about-image,.service-image,.service-copy,.about-content,.contact-card,.contact-intro {
  min-width:0
}

@media(min-width:701px) and (max-width:900px) {
  .about-layout,.service-row,.contact-panel {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
}

@media(max-width:360px) {
  .brand-logo {
    width:60px;
    height:60px
  }
  .brand-name {
    font-size:1.65rem
  }
  .brand-subtitle {
    font-size:.55rem;
    letter-spacing:.015em
  }
  .has-menu .menu-toggle {
    width:42px;
    height:42px
  }
  .hero h1 {
    font-size:2.55rem
  }
}

.faq-section {
  padding:0 0 100px;
  background:var(--paper)
}

.faq-layout {
  display:grid;
  grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:90px
}

.faq-heading h2 {
  font-size:clamp(2.8rem,4vw,4rem)
}

.faq-heading>p:last-child {
  font-size:.9rem;
  color:var(--muted);
  max-width:330px
}

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

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

.faq-list summary {
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:23px 0;
  font-family:var(--serif);
  font-size:1.65rem;
  line-height:1.2;
  cursor:pointer
}

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

.faq-list summary::after {
  content:"+";
  color:#7d9270;
  font-family:var(--sans);
  font-size:1.25rem;
  flex-shrink:0
}

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

.faq-list details p {
  margin:0;
  padding:0 35px 25px 0;
  color:var(--muted);
  font-size:.9rem;
  max-width:550px
}

@media(max-width:900px) {
  .faq-layout {
    gap:40px
  }
  .faq-list summary {
    font-size:1.4rem
  }
}

@media(max-width:700px) {
  .faq-section {
    padding-bottom:65px
  }
  .faq-layout {
    grid-template-columns:1fr;
    gap:25px
  }
  .faq-heading h2 {
    margin-bottom:20px
  }
  .faq-list summary {
    font-size:1.5rem;
    padding:20px 0
  }
}

/* Give the last section enough height to align under the header too. */ .contact-section {
  min-height:calc(100svh - var(--header-height));
  display:grid;
  align-items:center
}


/* A precisely aligned two-line wordmark, using the original Georgia font. */
.brand-wordmark {
  display: block;
  width: 310px;
  height: auto;
  overflow: visible;
  flex-shrink: 0;
  fill: var(--forest);
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 400;
}
.wordmark-name { font-size: 44px; }
.wordmark-description { font-size: 16px; font-weight: 400; }
@media (max-width: 1100px) and (min-width: 901px) {
  .brand-wordmark { width: 265px; }
}
@media (max-width: 900px) { .brand-wordmark { width: 290px; } }
@media (max-width: 700px) { .brand-wordmark { width: 245px; } }
@media (max-width: 450px) { .brand-wordmark { width: 220px; } }
@media (max-width: 400px) { .brand-wordmark { width: 195px; } }
@media (max-width: 360px) { .brand-wordmark { width: 175px; } }
/* GARDEN & STONE — limestone, ivory and forest green */
:root {
  --cream: #f0ece3;
  --paper: #faf9f4;
  --stone: #e4dfd3;
  --stone-dark: #c1b9a7;
  --sage: #9ca68f;
  --muted: #626b5f;
  --line: #d9d5c9;
  --panel-height: calc(100svh - var(--header-height));
  --topbar-height: 36px;
}
.line-icon { display:inline-block; width:20px; height:20px; flex-shrink:0; vertical-align:middle; }
.stone-divider { display:block; width:5px; height:5px; border:1px solid #a79d86; transform:rotate(45deg); }
.brand-wordmark { overflow:visible; }
.brand { gap:12px; }
.hero { min-height:calc(100svh - var(--header-height) - var(--topbar-height)); padding:clamp(25px,4svh,50px) 0 82px; }
.hero h1 { font-size:clamp(3rem,min(6.8vw,9svh),6.5rem); margin-bottom:clamp(16px,2.5svh,26px); }
.hero .eyebrow { margin-bottom:clamp(14px,2.5svh,24px); }
.hero-divider { margin:clamp(14px,2.5svh,24px) 0; }
.hero-intro { margin-bottom:24px; }
.hero-note { margin-top:22px; }
.scroll-cue { bottom:24px; }
.scroll-cue .line-icon { width:24px; height:24px; animation:cue-float 3s ease-in-out infinite; }
.scroll-cue>span:last-child { animation:none; }
.hero-index { bottom:29px; }
.about-section { min-height:var(--panel-height); display:grid; grid-template-rows:minmax(0,1fr) auto; padding:0; }
.about-layout { width:min(calc(100% - 80px),var(--max-width)); padding:clamp(24px,4svh,44px) 0; gap:clamp(40px,6vw,85px); }
.about-content h2 { font-size:clamp(2.8rem,min(5vw,7.5svh),4.8rem); margin-bottom:22px; }
.about-copy { font-size:clamp(.92rem,1.1vw,1.05rem); line-height:1.8; }
.about-copy p:last-child { margin-bottom:0; }
.about-image { height:clamp(250px,calc(100svh - var(--header-height) - 145px),580px); }
.about-image::before { inset:15px -15px -15px 15px; border-color:var(--stone-dark); }
.care-strip { padding:20px 0; background:var(--stone); border-color:#d6d0c2; }
.care-strip__inner { min-height:22px; }
.services-section { padding:0 0 70px; background:var(--cream); }
.services-intro { min-height:var(--panel-height); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:clamp(30px,5svh,65px) 0; }
.services-heading { margin-bottom:40px; }
.services-heading h2 { font-size:clamp(3rem,min(5.4vw,8svh),5.2rem); }
.services-heading>p:last-child { max-width:600px; }
.service-choices { width:100%; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; max-width:980px; }
.service-choice { display:flex; align-items:center; gap:22px; min-height:108px; padding:24px 28px; text-decoration:none; border:1px solid #cfc7b6; background:rgba(255,253,248,.35); transition:background .3s,transform .3s; }
.service-choice:hover { background:var(--paper); transform:translateY(-2px); }
.choice-number { color:#89836f; font-size:.67rem; letter-spacing:.12em; }
.service-choice>span:nth-child(2) { flex:1; }
.service-choice strong { display:block; font-family:var(--serif); font-weight:500; font-size:1.9rem; line-height:1.1; }
.service-choice small { display:block; color:var(--muted); font-size:.75rem; line-height:1.5; margin-top:8px; }
.service-detail-shell[hidden],.service-row[hidden] { display:none!important; }
.service-detail-shell { padding:30px 0 15px; }
.service-detail-top { display:flex; flex-direction:column; gap:20px; margin-bottom:38px; }
.services-back { align-self:flex-start; font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; text-decoration:none; padding:9px 0; border-bottom:1px solid #aca38e; }
.detail-service-nav { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.detail-service-nav a { min-height:48px; padding:12px 14px; display:flex; align-items:center; justify-content:center; text-align:center; font-size:.68rem; text-decoration:none; border:1px solid #cdc5b4; }
.detail-service-nav a:hover { background:#e7e1d4; }
.detail-service-nav a[aria-current] { background:var(--forest); color:var(--paper); border-color:var(--forest); }
.service-list { gap:70px; }
.service-row { min-height:calc(var(--panel-height) - 180px); }
.service-image { height:clamp(300px,calc(100svh - var(--header-height) - 260px),490px); background:var(--stone); }
.service-copy h3:focus { outline:none; }
.service-row--reverse .service-copy,.service-row--reverse .service-image { order:initial; }
.service-enquiry { gap:20px; }
.before-after-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.work-section { padding:clamp(35px,5svh,70px) 0; }
.work-heading { margin-bottom:30px; }
.work-heading h2 { font-size:clamp(2.8rem,min(5vw,7svh),4.7rem); margin-bottom:22px; }
.contact-panel { grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(35px,6vw,90px); }
.contact-section { padding:clamp(40px,6svh,80px) 0; }
.contact-intro h2 { font-size:clamp(3rem,4.7vw,4.8rem); }
.contact-intro>p:not(.eyebrow) { max-width:430px; }
.enquiry-form { padding:32px; background:var(--cream); color:var(--ink); box-shadow:12px 12px 0 rgba(0,0,0,.08); min-width:0; }
.form-heading .eyebrow { font-size:.58rem; margin-bottom:12px; letter-spacing:.14em; }
.form-heading h3 { font-size:2.45rem; letter-spacing:-.02em; margin-bottom:12px; }
.form-heading>p:last-child { color:var(--muted); font-size:.83rem; margin-bottom:22px; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.form-field { display:flex; flex-direction:column; gap:6px; min-width:0; }
.form-field label { font-size:.7rem; font-weight:700; }
.form-field label span { font-size:.62rem; color:var(--muted); font-weight:400; }
.form-field input,.form-field select,.form-field textarea { width:100%; max-width:100%; min-width:0; padding:10px 12px; border:1px solid #c7c0b0; border-radius:0; background:var(--paper); color:var(--ink); font:inherit; font-size:1rem; }
.form-field input,.form-field select { min-height:45px; }
.form-field textarea { resize:vertical; min-height:85px; }
.form-field input:focus,.form-field select:focus,.form-field textarea:focus { outline:2px solid #8e9c80; outline-offset:2px; }
.form-field--full,.contact-method-note { grid-column:1/-1; }
.contact-method-note { font-size:.66rem; color:var(--muted); margin:-4px 0 0; }
.form-trap { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.form-status { font-size:.74rem; margin:20px 0 16px; color:var(--muted); line-height:1.5; }
.form-status.is-error { color:#843b2b; }
.enquiry-submit { display:flex; width:100%; min-height:48px; align-items:center; justify-content:space-between; gap:20px; padding:13px 18px; border:0; border-radius:0; background:var(--forest); color:var(--paper); font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; cursor:pointer; transition:background .25s; }
.enquiry-submit:hover { background:#2b5139; }
.enquiry-submit:disabled { opacity:.65; cursor:wait; }
.form-small-print { font-size:.64rem; color:var(--muted); margin:13px 0 0; }
.mobile-contact strong { display:flex; align-items:center; gap:10px; }
.mobile-contact { background:var(--stone); }
.back-top { display:flex; gap:15px; align-items:center; }
.back-top .line-icon { width:16px; height:16px; }
@media(max-width:1100px){ .about-layout{width:calc(100% - 56px)} .brand{gap:9px} .service-choice{padding:22px;gap:15px} .service-choice strong{font-size:1.7rem} .contact-panel{gap:35px} .enquiry-form{padding:26px} }
@media(max-width:900px){ .brand-wordmark{width:270px} .about-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:35px} .about-content h2{font-size:3.3rem} .service-detail-top{margin-bottom:28px} .service-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:35px} .contact-panel{grid-template-columns:1fr;gap:35px} .contact-intro{max-width:650px} .contact-intro>p:not(.eyebrow){max-width:600px} .contact-intro h2{font-size:3.7rem} .enquiry-form{max-width:700px;width:100%} }
@media(max-width:700px){
 .brand{gap:7px} .brand-wordmark{width:235px}
 .hero{padding:clamp(22px,4svh,40px) 0 70px;min-height:calc(100svh - var(--header-height) - var(--topbar-height))}
 .hero h1{font-size:clamp(2.2rem,min(9vw,6.3svh),3.8rem);line-height:1.03}
 .hero .eyebrow{font-size:.6rem;margin-bottom:16px}
 .hero-intro{font-size:.91rem;line-height:1.65;max-width:480px;margin-bottom:20px}
 .hero-note{font-size:.63rem;margin-top:20px}
 .button{min-height:48px;padding:12px 16px;font-size:.61rem}
 .button-row{gap:10px}.button--outline{gap:15px}
 .scroll-cue{bottom:19px;font-size:.57rem}
 .hero-divider{margin:16px 0}
 .about-layout{width:calc(100% - 40px);grid-template-columns:1fr;gap:20px;padding:24px 0;align-content:center}
 .about-content{max-width:none}.about-content .eyebrow{margin-bottom:12px;font-size:.6rem}
 .about-content h2{font-size:clamp(2.2rem,5.5svh,3rem);margin-bottom:15px}
 .about-copy{font-size:.92rem;line-height:1.6}.about-copy p{margin-bottom:12px}
 .about-image{height:clamp(100px,22svh,210px);aspect-ratio:auto;margin-right:8px;max-height:none}
 .about-image::before{inset:8px -8px -8px 8px}
 .care-strip{padding:14px 0}.care-strip__inner{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;justify-items:center}
 .care-strip__inner .stone-divider{display:none}.care-strip__inner>span{font-size:.54rem;letter-spacing:.08em;text-align:center}
 .services-intro{padding:30px 0}.services-heading{margin-bottom:26px}.services-heading .eyebrow{margin-bottom:16px}
 .services-heading h2{font-size:clamp(2.5rem,6.5svh,3.7rem);margin-bottom:20px}.services-heading>p:last-child{font-size:.87rem}
 .service-choices{grid-template-columns:1fr;gap:9px}.service-choice{min-height:76px;padding:15px 18px;gap:16px}.service-choice strong{font-size:1.6rem}.service-choice small{font-size:.68rem;margin-top:4px}.choice-number{font-size:.6rem}
 .service-detail-shell{padding:22px 0 10px}.service-detail-top{gap:15px;margin-bottom:27px}.detail-service-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.detail-service-nav a{font-size:.65rem;padding:10px;min-height:45px}
 .service-row{grid-template-columns:1fr;gap:28px;min-height:0}.service-image{height:clamp(190px,30svh,320px);aspect-ratio:auto}.service-copy h3{font-size:2.8rem}
 .service-list{gap:55px}.service-features{grid-template-columns:repeat(2,minmax(0,1fr))}
 .before-after-grid{grid-template-columns:1fr;gap:20px}.work-heading h2{font-size:clamp(2.6rem,6svh,3.5rem)}
 .contact-section{padding:45px 0 65px}.contact-intro h2{font-size:3.2rem}.enquiry-form{padding:25px;box-shadow:8px 8px 0 rgba(0,0,0,.08);width:calc(100% - 8px)}
 .form-heading h3{font-size:2.3rem}.mobile-contact>span{font-size:1rem}.mobile-contact strong{font-size:.65rem}
}
@media(max-width:450px){.brand-wordmark{width:210px}}
@media(max-width:400px){.brand{gap:6px}.brand-wordmark{width:190px}.about-layout{width:calc(100% - 32px);gap:14px;padding:18px 0}.about-image{height:clamp(95px,18svh,150px)}.about-copy{font-size:.87rem}.form-grid{gap:13px 10px}.enquiry-form{padding:22px}.form-field label{font-size:.65rem}.form-field label span{font-size:.58rem}.form-heading h3{font-size:2.15rem}}
@media(max-width:360px){.brand{gap:4px}.brand-wordmark{width:175px}.hero h1{font-size:clamp(2rem,5.8svh,2.5rem)}.hero-intro{font-size:.85rem}.hero-note{font-size:.57rem}.button{padding:11px 13px;font-size:.56rem;min-height:44px}.button--outline{gap:9px}.about-content h2{font-size:2.05rem}.about-image{height:100px}.about-layout{gap:12px;padding:16px 0}.care-strip{padding:12px 0}.service-choice strong{font-size:1.4rem}.service-choice small{font-size:.63rem}.services-heading h2{font-size:2.5rem}.service-choice{padding:13px 14px;min-height:70px}.form-grid{grid-template-columns:1fr}.contact-intro h2{font-size:2.9rem}.service-features{grid-template-columns:1fr}}
@media(max-height:700px) and (min-width:701px){.hero{padding-top:24px;padding-bottom:65px}.hero h1{font-size:clamp(2.8rem,8svh,4rem)}.hero-intro{font-size:.9rem;margin-bottom:18px}.hero-note{margin-top:18px}.hero .eyebrow{margin-bottom:14px}.hero-divider{margin:14px 0}.about-layout{padding:24px 0}.about-image{height:calc(100svh - var(--header-height) - 130px);min-height:220px}.about-content h2{font-size:clamp(2.4rem,6.5svh,3.6rem);margin-bottom:18px}.about-copy{font-size:.9rem}.care-strip{padding:14px 0}.services-heading h2{font-size:clamp(2.6rem,7svh,4rem)}.services-heading{margin-bottom:25px}.service-choice{min-height:86px;padding:17px 22px}.services-intro{padding:28px 0}}
@media(prefers-reduced-motion:reduce){.scroll-cue .line-icon{animation:none}}
@media(max-width:700px) and (max-height:700px){
  .services-intro{padding:16px 0}
  .services-heading{margin-bottom:18px}
  .services-heading .eyebrow{font-size:.57rem;margin-bottom:12px}
  .services-heading h2{font-size:2rem;margin-bottom:12px}
  .services-heading>p:last-child{font-size:.8rem;line-height:1.55}
  .service-choices{gap:7px}
  .service-choice{min-height:60px;padding:13px 16px}
  .service-choice strong{font-size:1.4rem}
  .service-choice small{display:none}
}
/* A closed service chooser occupies one screen, with no empty detail padding. */
.has-services .services-section{padding-bottom:0}
.has-services .service-detail-shell{padding-bottom:65px}

/* Light / dark switch: evergreen charcoal and warm ivory. */
.theme-toggle { display:grid; place-items:center; width:44px; height:44px; flex:0 0 44px; padding:10px; border:1px solid var(--line); background:transparent; color:var(--forest); cursor:pointer; border-radius:50%; }
.theme-toggle[hidden] { display:none; }
.theme-toggle svg { width:22px; height:22px; }
.theme-toggle:hover { background:var(--stone); }
.theme-sun { display:none; }
[data-theme="dark"] { color-scheme:dark; --paper:#141c18; --cream:#1c2520; --stone:#27312b; --stone-dark:#536057; --ink:#f0ece3; --forest:#e6ebdf; --forest-dark:#111a15; --muted:#bdc5ba; --line:#475249; --sage:#b1bea4; }
[data-theme="dark"] .theme-moon { display:none; }
[data-theme="dark"] .theme-sun { display:block; }
[data-theme="dark"] .site-header { background:rgba(20,28,24,.98); }
[data-theme="dark"] .brand-logo { filter:brightness(0) invert(94%) sepia(10%) saturate(190%); }
[data-theme="dark"] h2 em, [data-theme="dark"] .eyebrow, [data-theme="dark"] .choice-number { color:#b1bea4; }
[data-theme="dark"] .nav-cta, [data-theme="dark"] .enquiry-submit, [data-theme="dark"] .detail-service-nav a[aria-current] { background:#dfe6d7; color:#172b20; border-color:#dfe6d7; }
[data-theme="dark"] .nav-cta:hover, [data-theme="dark"] .enquiry-submit:hover { background:#c3cfb8; }
[data-theme="dark"] .care-strip, [data-theme="dark"] .service-choice, [data-theme="dark"] .detail-service-nav a, [data-theme="dark"] .form-field input, [data-theme="dark"] .form-field select, [data-theme="dark"] .form-field textarea { border-color:var(--line); }
[data-theme="dark"] .service-choice { background:#202a23; }
[data-theme="dark"] .service-choice:hover, [data-theme="dark"] .detail-service-nav a:hover { background:#354239; }
[data-theme="dark"] .contact-section { background:#17271e; color:#f0ece3; }
[data-theme="dark"] .work-section { background:#111c15; color:#f0ece3; }
[data-theme="dark"] .form-status.is-error { color:#f0b3a2; }
/* Photograph overlay keeps its original contrast in both themes. */
.hero { --paper:#faf9f4; --cream:#f0ece3; --forest-dark:#0d2b1d; --sage:#9ca68f; }
[data-theme="dark"] .hero .eyebrow { color:#d3dec9; }
@media(min-width:901px) { .header-inner { gap:18px; } .header-inner nav { margin-left:auto; gap:24px; } }
@media(max-width:900px) {
  .theme-toggle { order:2; width:36px; height:36px; flex-basis:36px; padding:7px; margin-left:auto; margin-right:8px; }
  .menu-toggle { order:3; }
  .header-inner nav { order:4; }
  .brand-wordmark { width:250px; }
}
@media(max-width:700px) { .brand-wordmark { width:205px; } }
@media(max-width:450px) { .brand-wordmark { width:185px; } }
@media(max-width:400px) { .brand-wordmark { width:160px; } }
@media(max-width:360px) { .brand-wordmark { width:140px; } }
@media(max-width:360px) { .brand-wordmark { width:120px; } }

/* Photographs appear immediately; text keeps its gentle movement. */
.service-image picture, .about-image picture, .work-photo picture { display:block; width:100%; height:100%; }
.motion-ready .service-image, .motion-ready .work-photo { opacity:1; transform:none; transition:none; }
@media(max-width:700px) { .hero::before { background-image:image-set(url("images/hero-800.webp") type("image/webp"),url("images/hero.jpg") type("image/jpeg")); } }
