:root {
  --ink:#171a19;
  --muted:#60655f;
  --yellow:#f5ce45;
  --paper:#fafbf8;
  --line:#dfe2dc
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:100px
}
body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font-family:Arial,Helvetica,sans-serif;
  font-size:16px;
  line-height:1.65
}
a {
  color:inherit;
  text-decoration:none
}
button {
  font:inherit
}
img {
  display:block;
  max-width:100%;
  height:auto
}
h1,h2,h3,p {
  margin-top:0
}
h1,h2 {
  font-weight:500;
  line-height:1.06;
  letter-spacing:-.055em
}
h1 {
  font-size:clamp(3.3rem,5.7vw,5.5rem);
  margin-bottom:26px
}
h2 {
  font-size:clamp(2.5rem,4.1vw,4rem);
  margin-bottom:24px
}
h3 {
  font-size:1.35rem;
  line-height:1.3;
  letter-spacing:-.025em
}
em {
  font-family:Georgia,'Times New Roman',serif;
  font-weight:400
}
p {
  color:var(--muted)
}
.wrap {
  width:min(1280px,calc(100% - 96px));
  margin:auto
}
.section {
  padding-top:110px;
  padding-bottom:110px
}
.eyebrow {
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.15em;
  color:inherit;
  margin-bottom:25px
}
.skip {
  position:absolute;
  top:-80px;
  z-index:20;
  background:var(--yellow);
  padding:16px
}
.skip:focus {
  top:0
}
header {
  background:rgba(250,251,248,.98);
  position:sticky;
  top:0;
  z-index:10;
  border-bottom:1px solid var(--line)
}
.nav {
  min-height:94px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px
}
.brand {
  display:flex;
  align-items:center;
  gap:12px;
  font-size:.76rem;
  line-height:1.3;
  font-weight:800;
  letter-spacing:-.015em;
  flex-shrink:0
}
.brand small {
  display:block;
  font-size:.7rem;
  letter-spacing:.28em;
  margin-top:4px
}
.brand-mark {
  background:var(--yellow);
  width:43px;
  height:45px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:24px;
  letter-spacing:-.12em;
  border-radius:2px
}
.brand-mark span {
  font-size:19px;
  margin-top:10px;
  margin-right:3px
}
nav {
  display:flex;
  align-items:center;
  gap:27px;
  font-size:.875rem
}
nav a {
  position:relative
}
nav a:hover {
  color:#75600b
}
.nav-contact {
  border-bottom:1px solid var(--ink);
  padding:9px 0
}
.menu-toggle {
  display:none
}
.hero {
  padding:64px 0 70px
}
.hero-grid {
  display:grid;
  grid-template-columns:1fr 1.08fr;
  gap:48px;
  align-items:center
}
.hero .eyebrow {
  display:flex;
  align-items:center;
  gap:12px
}
.line {
  height:2px;
  width:27px;
  background:#9c7b06
}
.hero-description {
  max-width:475px;
  font-size:1.08rem;
  line-height:1.75
}
.hero-actions {
  display:flex;
  gap:28px;
  align-items:center;
  margin:30px 0 35px
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:28px;
  background:var(--yellow);
  color:var(--ink);
  padding:16px 24px;
  font-size:.94rem;
  font-weight:700;
  border:1px solid transparent;
  transition:background .2s,transform .2s
}
.button:hover {
  background:#ffdf67;
  transform:translateY(-3px)
}
.text-link {
  font-size:.94rem;
  font-weight:700;
  border-bottom:1px solid #8c9187;
  padding-bottom:6px;
  display:inline-block
}
.text-link:hover {
  border-color:var(--ink)
}
.hero-proof {
  display:flex;
  gap:13px;
  align-items:center;
  font-size:.78rem
}
.stars {
  color:#816507;
  letter-spacing:.12em;
  white-space:nowrap
}
.hero-proof a {
  text-decoration:underline;
  text-underline-offset:4px
}
.hero-visual {
  background:#e9ede4;
  border:1px solid #dce0d7;
  position:relative;
  overflow:hidden
}
.image-label {
  display:flex;
  justify-content:space-between;
  padding:22px 25px;
  font-size:.65rem;
  font-weight:700;
  letter-spacing:.14em
}
.hero-visual .van {
  width:100%;
  aspect-ratio:1.5;
  object-fit:contain
}
.visual-bottom {
  padding:26px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px
}
.visual-bottom p {
  line-height:1.5;
  margin:0;
  font-size:.9rem
}
.visual-bottom strong {
  color:var(--ink)
}
.experience {
  display:flex;
  align-items:center;
  gap:12px
}
.experience>strong {
  font-size:3.6rem;
  line-height:1;
  font-weight:500;
  letter-spacing:-.06em
}
.experience>span {
  font-size:.63rem;
  line-height:1.5;
  letter-spacing:.04em
}
.trust-strip {
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)
}
.trust-strip>.wrap {
  display:flex;
  justify-content:space-between;
  gap:24px;
  padding-top:20px;
  padding-bottom:20px;
  font-size:.85rem
}
.trust-strip span:before {
  content:'✓';
  margin-right:13px;
  color:#76610c
}
.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:50px;
  margin-bottom:50px
}
.section-heading h2 {
  margin-bottom:0
}
.section-heading>p {
  max-width:365px;
  margin-bottom:3px
}
.services {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--line);
  border-left:1px solid var(--line)
}
.service {
  padding:34px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transition:background .25s
}
.service:hover {
  background:#f0f2ea
}
.service-no {
  display:block;
  color:#70766b;
  font-size:.8rem;
  margin-bottom:40px
}
.service p {
  font-size:.94rem;
  margin-bottom:28px
}
.service a {
  font-size:.84rem;
  font-weight:700;
  display:flex;
  justify-content:space-between;
  gap:12px
}
.service a:hover {
  text-decoration:underline
}
.work,.reviews {
  background:#f0f2eb
}
.project-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:25px
}
.project {
  border:0;
  padding:0;
  text-align:left;
  background:none;
  color:inherit;
  cursor:pointer;
  width:100%
}
.project-image {
  position:relative;
  overflow:hidden;
  background:#d7d9d2;
  aspect-ratio:4/5
}
.project-image img {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .5s ease
}
.project:hover img {
  transform:scale(1.045)
}
.expand {
  position:absolute;
  bottom:15px;
  right:15px;
  background:var(--paper);
  border-radius:50%;
  height:40px;
  width:40px;
  display:grid;
  place-items:center
}
.project-caption {
  display:block;
  padding-top:18px
}
.project-caption strong {
  display:block;
  font-weight:500;
  font-size:1.22rem
}
.project-caption small {
  display:block;
  color:var(--muted);
  font-size:.875rem;
  margin-top:3px
}
.facilities {
  background:var(--ink);
  color:white
}
.facilities p {
  color:#bbc0b9
}
.facilities .eyebrow,.facilities em {
  color:var(--yellow)
}
.facilities-grid {
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:100px;
  align-items:center
}
.facilities-grid>div>p:not(.eyebrow) {
  max-width:475px;
  margin-bottom:32px
}
.facility-list>div {
  position:relative;
  padding:25px 0 20px 55px;
  border-bottom:1px solid #414641
}
.facility-list span {
  position:absolute;
  left:0;
  top:27px;
  color:var(--yellow);
  font-size:.78rem
}
.facility-list h3 {
  margin-bottom:7px
}
.facility-list p {
  margin:0;
  font-size:.94rem
}
.team {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:90px;
  align-items:center
}
.team-image {
  position:relative
}
.team-image img {
  width:100%;
  aspect-ratio:1/1.06;
  object-fit:cover
}
.team-image>span {
  display:block;
  background:var(--yellow);
  padding:14px 20px;
  font-size:.68rem;
  font-weight:700;
  letter-spacing:.1em
}
.team-copy h3 {
  margin-top:30px
}
.team-quote {
  border-left:3px solid var(--yellow);
  padding-left:22px;
  color:var(--ink);
  font-family:Georgia,serif;
  font-style:italic;
  font-size:1.25rem;
  margin:27px 0
}
.review-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px
}
.review {
  background:var(--paper);
  padding:30px;
  display:flex;
  flex-direction:column;
  transition:transform .25s
}
.review:hover {
  transform:translateY(-5px)
}
blockquote {
  margin:24px 0 32px;
  font-size:1.13rem;
  line-height:1.65;
  flex:1
}
.review>div {
  display:flex;
  align-items:center;
  gap:12px
}
.avatar {
  height:38px;
  width:38px;
  flex-shrink:0;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#e9ebe4
}
.review strong,.review small {
  display:block;
  font-size:.83rem
}
.review small {
  color:var(--muted);
  font-size:.75rem
}
.review-arrow {
  margin-left:auto
}
.contact {
  padding:110px 0;
  background:var(--yellow)
}
.contact-grid {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  gap:110px;
  align-items:center
}
.contact p {
  color:#494522;
  max-width:440px
}
.contact .button {
  background:var(--ink);
  color:white
}
.contact .button:hover {
  background:#353b35
}
.contact-detail {
  border-top:1px solid #a58c34;
  padding-top:30px
}
.phone {
  font-size:clamp(2rem,3vw,3rem);
  letter-spacing:-.05em
}
.contact-detail dl {
  margin:25px 0
}
.contact-detail dl>div {
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding:13px 0;
  border-bottom:1px solid #c4a73b;
  font-size:.9rem
}
.contact-detail dd {
  margin:0;
  text-align:right
}
.contact-detail p:last-child {
  font-size:.85rem
}
footer {
  background:var(--ink);
  color:white;
  padding:45px 0 20px
}
.footer-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:30px;
  padding-bottom:35px
}
.footer-top .brand-mark {
  color:var(--ink)
}
.footer-top p {
  font-size:.85rem;
  margin:0;
  color:#b7beb5
}
.footer-top>a:last-child {
  font-size:.84rem
}
.footer-bottom {
  border-top:1px solid #3b403b;
  display:flex;
  justify-content:space-between;
  padding-top:20px;
  color:#b7beb5;
  font-size:.75rem
}
.mobile-contact {
  display:none
}
.subhero {
  padding-top:45px;
  padding-bottom:70px
}
.breadcrumb {
  display:block;
  font-size:.84rem;
  color:var(--muted);
  margin-bottom:60px
}
.subhero h1 {
  max-width:850px
}
.subhero>p:not(.eyebrow) {
  max-width:620px;
  font-size:1.12rem
}
.subhero+.section {
  padding-top:20px
}
.gallery-page {
  padding-bottom:100px
}
.gallery-page .project-grid {
  row-gap:48px
}
.process {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:50px;
  margin-top:50px
}
.process span {
  color:var(--yellow);
  font-size:.85rem
}
.process h3 {
  margin-top:18px
}
.prose {
  max-width:850px
}
.prose h2 {
  font-size:2rem;
  margin-top:45px
}
.prose a {
  text-decoration:underline
}
dialog {
  border:0;
  padding:55px 20px 20px;
  background:#171a19;
  color:white;
  max-width:94vw;
  max-height:94dvh
}
dialog::backdrop {
  background:rgba(0,0,0,.85)
}
dialog img {
  max-height:75dvh;
  max-width:85vw;
  object-fit:contain;
  margin:auto
}
dialog p {
  color:white;
  margin:10px 0 0
}
.dialog-close {
  position:absolute;
  top:9px;
  right:14px;
  background:transparent;
  color:white;
  border:1px solid #727970;
  padding:5px 12px;
  cursor:pointer
}
body.modal-open {
  overflow:hidden
}
:focus-visible {
  outline:3px solid #2774c2;
  outline-offset:5px
}
@media(min-width:1500px) {
  .hero {
  padding-top:80px;
  padding-bottom:90px
}

}
@media(max-width:1050px) {
  .wrap {
  width:calc(100% - 48px)
}
nav {
  gap:17px;
  font-size:.8rem
}
.brand {
  font-size:.65rem
}
.hero-grid {
  gap:25px
}
.hero-actions {
  gap:16px
}
.hero-proof {
  flex-wrap:wrap;
  gap:4px 10px
}
.team,.facilities-grid,.contact-grid {
  gap:45px
}
.service {
  padding:25px
}
.visual-bottom {
  padding:20px
}
.experience>strong {
  font-size:2.8rem
}
.review {
  padding:23px
}

}
@media(max-width:780px) {
  html {
  scroll-padding-top:85px
}
.wrap {
  width:calc(100% - 40px)
}
.nav {
  min-height:78px
}
.brand {
  font-size:.64rem
}
.brand-mark {
  width:35px;
  height:39px
}
.brand small {
  font-size:.62rem
}
.menu-toggle {
  display:flex;
  gap:12px;
  align-items:center;
  background:transparent;
  border:1px solid var(--line);
  padding:8px 12px;
  font-size:.84rem
}
nav {
  display:none;
  position:absolute;
  top:78px;
  left:0;
  right:0;
  padding:20px;
  background:var(--paper);
  border-bottom:1px solid var(--line);
  font-size:1rem
}
nav.open {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:0
}
nav a {
  padding:12px
}
.hero {
  padding:38px 0
}
.hero-grid {
  grid-template-columns:1fr;
  gap:32px
}
.hero h1 {
  font-size:clamp(3.2rem,11vw,4.8rem)
}
.hero-description {
  font-size:1rem;
  max-width:560px
}
.hero .eyebrow {
  font-size:.65rem;
  margin-bottom:20px
}
.hero-actions {
  margin:26px 0
}
.hero-proof {
  font-size:.75rem
}
.hero-visual .van {
  aspect-ratio:1.5
}
.image-label {
  padding:17px;
  font-size:.6rem
}
.visual-bottom {
  padding:20px
}
.experience>strong {
  font-size:3rem
}
.trust-strip>.wrap {
  flex-wrap:wrap;
  justify-content:center;
  gap:8px 20px;
  text-align:center;
  font-size:.75rem
}
.section {
  padding-top:65px;
  padding-bottom:65px
}
.section-heading {
  display:block;
  margin-bottom:30px
}
.section-heading>p {
  margin-top:25px;
  max-width:550px
}
.section-heading>.text-link {
  margin-top:22px
}
h2 {
  font-size:2.75rem
}
.services {
  grid-template-columns:repeat(2,1fr)
}
.service {
  padding:23px
}
.service-no {
  margin-bottom:25px
}
.service h3 {
  font-size:1.2rem
}
.project-grid {
  gap:16px;
  grid-template-columns:repeat(2,1fr)
}
.work .project:last-child {
  grid-column:1/-1
}
.work .project:last-child .project-image {
  aspect-ratio:1.5
}
.project-caption strong {
  font-size:1.1rem
}
.facilities-grid,.team,.contact-grid {
  grid-template-columns:1fr;
  gap:40px
}
.team-image {
  max-width:520px
}
.team-copy h3 {
  margin-top:22px
}
.review-grid {
  grid-template-columns:1fr
}
.review {
  padding:28px
}
.review blockquote {
  margin:17px 0 24px
}
.contact {
  padding:65px 0
}
.footer-top {
  flex-direction:column;
  align-items:flex-start;
  gap:25px
}
footer {
  padding-bottom:95px
}
.footer-bottom {
  gap:20px
}
.mobile-contact {
  display:grid;
  grid-template-columns:1fr 1.3fr;
  position:fixed;
  bottom:0;
  left:0;
  right:0;
  z-index:11;
  border-top:1px solid #4b514b;
  background:var(--ink);
  padding:9px 14px calc(9px + env(safe-area-inset-bottom));
  gap:10px
}
.mobile-contact a {
  text-align:center;
  color:white;
  padding:9px;
  font-size:.9rem;
  font-weight:700
}
.mobile-contact .mobile-wa {
  background:var(--yellow);
  color:var(--ink);
  display:flex;
  justify-content:center;
  gap:20px
}
.subhero {
  padding-top:30px;
  padding-bottom:45px
}
.breadcrumb {
  margin-bottom:38px
}
.subhero h1 {
  font-size:clamp(3rem,10vw,4.5rem)
}
.process {
  grid-template-columns:1fr;
  gap:15px
}
.gallery-page {
  padding-bottom:60px
}
.eyebrow {
  font-size:.7rem
}

}
@media(max-width:400px) {
  .services {
  grid-template-columns:1fr
}
.hero-actions {
  gap:17px;
  flex-wrap:wrap
}
.hero-actions .button {
  padding:14px 20px
}
.visual-bottom p {
  font-size:.75rem
}
.experience>span {
  font-size:.57rem
}
.experience>strong {
  font-size:2.7rem
}
.project-grid {
  grid-template-columns:1fr
}
.work .project:last-child .project-image {
  aspect-ratio:4/5
}
.contact-detail dl>div {
  font-size:.8rem
}

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

}

/* Quote enquiries, gallery navigation and page controls */
#quote-form {
  scroll-margin-top:110px
}
.quote-wrap {
  margin-top:55px
}
.quote-form {
  background:var(--paper);
  padding:40px;
  color:var(--ink);
  max-width:860px;
  margin:auto;
  border:1px solid #c2a541
}
.quote-form h3 {
  font-size:2rem;
  margin-bottom:28px
}
.form-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:22px
}
.field-wide {
  grid-column:1/-1
}
.quote-form label {
  display:block;
  font-size:.9rem;
  font-weight:700;
  margin-bottom:7px
}
.quote-form label span {
  font-weight:400;
  color:var(--muted)
}
.quote-form input,.quote-form select,.quote-form textarea {
  display:block;
  width:100%;
  min-width:0;
  font:inherit;
  font-size:1rem;
  background:white;
  color:var(--ink);
  border:1px solid #9fa69a;
  border-radius:0;
  padding:13px 14px
}
.quote-form textarea {
  resize:vertical;
  min-height:130px
}
.quote-form .form-note {
  max-width:none;
  color:var(--muted);
  font-size:.86rem;
  margin:24px 0 20px
}
.quote-form button {
  cursor:pointer
}
.section-cta {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  border-top:1px solid var(--line);
  padding-top:28px;
  margin-top:35px
}
.section-cta p {
  margin:0
}
.back-top {
  position:fixed;
  right:25px;
  bottom:25px;
  z-index:9;
  display:flex;
  align-items:center;
  gap:9px;
  background:var(--ink);
  color:white;
  border:1px solid #6b7268;
  padding:11px 15px;
  font-size:.84rem;
  opacity:0;
  visibility:hidden;
  transform:translateY(8px);
  transition:opacity .2s,transform .2s,visibility .2s
}
.back-top.is-visible {
  opacity:1;
  visibility:visible;
  transform:none
}
.back-top:hover {
  background:#353b35
}
.lightbox-stage {
  position:relative;
  display:flex;
  justify-content:center;
  align-items:center;
  min-width:min(75vw,700px)
}
.gallery-arrow {
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  z-index:1;
  display:grid;
  place-items:center;
  width:48px;
  height:52px;
  font-size:2.5rem;
  line-height:1;
  border:1px solid #8c9289;
  background:#171a19e8;
  color:white;
  cursor:pointer
}
.gallery-arrow:hover {
  background:var(--yellow);
  color:var(--ink)
}
.gallery-prev {
  left:0
}
.gallery-next {
  right:0
}
.gallery-info {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  margin-top:12px
}
.gallery-info p {
  margin:0;
  font-size:.9rem
}
.gallery-info span {
  white-space:nowrap;
  font-size:.85rem;
  color:#c6cdc2
}
#full-photo {
  touch-action:pan-y pinch-zoom;
  min-height:150px
}
.modal-open .back-top {
  visibility:hidden
}
.modal-open .mobile-contact {
  visibility:hidden
}
@media(max-width:780px) {
  .quote-wrap {
  margin-top:35px
}
.quote-form {
  padding:25px 20px
}
.form-grid {
  grid-template-columns:1fr;
  gap:18px
}
.quote-form h3 {
  font-size:1.7rem
}
.quote-form .button {
  width:100%;
  font-size:.85rem;
  gap:12px
}
.back-top {
  bottom:calc(83px + env(safe-area-inset-bottom));
  right:15px;
  padding:9px 12px;
  font-size:.75rem
}
.section-cta {
  align-items:flex-start;
  flex-direction:column;
  gap:16px
}
.gallery-arrow {
  width:44px;
  height:48px
}
.lightbox-stage {
  min-width:80vw
}
dialog {
  padding-left:8px;
  padding-right:8px
}
dialog img {
  max-width:85vw;
  max-height:70dvh
}
#quote-form {
  scroll-margin-top:95px
}

}

/* Richer tonal rhythm and lightweight atmospheric gradients */
body {
  background:#e9ece6
}
.hero {
  color:#fff;
  background:radial-gradient(ellipse at 88% 0%,#4e482c 0%,transparent 48%),linear-gradient(125deg,#161a18 15%,#242c26 100%);
  position:relative;
  padding-bottom:85px
}
.hero-description {
  color:#c5cdc4
}
.hero h1 em {
  color:#f5ce45
}
.hero .line {
  background:var(--yellow)
}
.hero .text-link {
  border-color:#7e897b
}
.hero-proof .stars {
  color:var(--yellow)
}
.hero-proof a {
  color:#d5dbd1
}
.hero-visual {
  background:#e5e8df;
  border:1px solid #68705d;
  color:var(--ink);
  border-radius:6px;
  box-shadow:0 25px 65px #0003
}
.hero .image-label {
  background:#dfe4d7
}
.hero-visual .van {
  border-radius:0
}
.hero .visual-bottom {
  background:linear-gradient(130deg,#edf0e5,#d4dbc8)
}
.quick-quote {
  background:linear-gradient(155deg,#242c26,#141917);
  color:white;
  padding:70px 0 85px;
  border-top:1px solid #414b3b;
  position:relative
}
.quick-quote-grid {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:75px;
  align-items:center
}
.quick-quote-copy .eyebrow {
  color:var(--yellow)
}
.quick-quote-copy h2 {
  font-size:clamp(2.5rem,3.7vw,3.7rem)
}
.quick-quote-copy h2 em {
  color:#f5ce45
}
.quick-quote-copy>p:not(.eyebrow) {
  color:#bdc7b9;
  max-width:400px
}
.quote-steps {
  display:grid;
  gap:19px;
  margin:34px 0
}
.quote-steps span {
  font-size:.9rem;
  color:#d9dfd4;
  display:flex;
  gap:16px;
  align-items:center
}
.quote-steps b {
  font-size:.7rem;
  font-weight:400;
  color:var(--yellow);
  border:1px solid #647050;
  border-radius:50%;
  width:33px;
  height:33px;
  display:grid;
  place-items:center;
  flex-shrink:0
}
.quick-quote-copy>.text-link {
  color:#fff;
  border-color:#87937e;
  font-size:.85rem
}
.quick-quote .quote-form {
  width:100%;
  background:linear-gradient(145deg,#fafbf5,#e9edde);
  padding:32px;
  border:1px solid #f3ce4566;
  border-radius:6px;
  box-shadow:0 20px 60px #0003
}
.quick-quote .quote-form .eyebrow {
  font-size:.65rem;
  margin-bottom:10px
}
.quick-quote .quote-form h3 {
  margin-bottom:22px
}
.quick-quote .form-grid {
  gap:16px
}
.quick-quote .quote-form input,.quick-quote .quote-form select,.quick-quote .quote-form textarea {
  background:#ffffffb8;
  border-color:#a4ad9a;
  border-radius:3px;
  padding:11px 12px
}
.quick-quote .quote-form textarea {
  min-height:95px
}
.quick-quote .form-note {
  margin:17px 0;
  font-size:.8rem
}
.quick-quote .button {
  width:100%;
  cursor:pointer
}
.trust-strip {
  background:#dce3d4;
  border-color:#c0cbb8
}
.service {
  background:#f5f7f0;
  position:relative;
  transition:background .25s,box-shadow .25s
}
.service:hover {
  background:#fffdf1;
  box-shadow:inset 0 3px var(--yellow)
}
.service-no {
  color:#5d6854
}
.work {
  background:radial-gradient(ellipse at 0% 0%,#e1dac0 0%,transparent 60%),linear-gradient(180deg,#e5e9dd,#d6dfd0)
}
.project-image {
  border-radius:5px
}
.project-caption {
  border-bottom:1px solid #bbc5b3;
  padding-bottom:15px
}
.facilities {
  background:radial-gradient(ellipse at 0% 100%,#394936 0%,transparent 65%),#171d19;
  border-top:1px solid #58624b
}
.team-image img {
  border-radius:5px 5px 0 0
}
.team-image {
  box-shadow:16px 16px 0 #d2dbc9
}
.reviews {
  background:linear-gradient(145deg,#dce2d3,#ece8d6)
}
.review {
  border:1px solid #c9d1be;
  border-radius:5px;
  background:linear-gradient(150deg,#fffef8,#edf1e6)
}
.contact {
  background:radial-gradient(ellipse at 100% 100%,#ffeaa3 0%,transparent 70%),linear-gradient(115deg,#ebbd31,#f5ce45)
}
.subhero {
  position:relative
}
.subhero:after {
  content:'';
  display:block;
  height:1px;
  background:linear-gradient(90deg,#9aab86,transparent);
  margin-top:45px
}
.button {
  border-radius:3px;
  box-shadow:0 6px 18px #0000000b
}
.button span {
  transition:transform .2s
}
.button:hover span {
  transform:translate(2px,-2px)
}
.quote-form input:focus,.quote-form select:focus,.quote-form textarea:focus {
  border-color:#736013;
  outline:2px solid #bc941f;
  outline-offset:2px
}
.reveal-arrived {
  animation:section-arrive .7s ease-out both
}
@keyframes section-arrive {
  from {
  opacity:.35;
  transform:translateY(16px)
}
to {
  opacity:1;
  transform:translateY(0)
}

}
@media(max-width:1050px) {
  .quick-quote-grid {
  gap:35px;
  grid-template-columns:.8fr 1.2fr
}

}
@media(max-width:780px) {
  .hero {
  padding-bottom:45px
}
.quick-quote {
  padding:45px 0 55px
}
.quick-quote-grid {
  grid-template-columns:1fr;
  gap:30px
}
.quick-quote-copy h2 {
  font-size:2.7rem
}
.quick-quote-copy>p:not(.eyebrow) {
  max-width:540px
}
.quote-steps {
  gap:12px;
  margin:23px 0
}
.quick-quote .quote-form {
  padding:25px 20px
}
.team-image {
  box-shadow:8px 8px 0 #d2dbc9
}
.hero-visual {
  box-shadow:0 15px 30px #0003
}
.quick-quote-copy .eyebrow {
  margin-bottom:20px
}

}
@media(prefers-reduced-motion:reduce) {
  .reveal-arrived {
  animation:none
}

}

/* Locally served brand marks, with reserved dimensions to avoid layout shifts. */
.brand-icon {
  display:inline-block;
  width:22px;
  height:22px;
  min-width:22px;
  object-fit:contain;
  vertical-align:middle;
  flex-shrink:0
}
.brand-icon-google {
  background:#fff;
  border-radius:50%;
  padding:2px
}
.brand-action {
  display:inline-flex;
  align-items:center;
  gap:10px
}
.button.brand-action,.quote-form .button {
  justify-content:center;
  gap:12px
}
.button.brand-action>span:last-child,.quote-form .button>span:last-child {
  margin-left:auto
}
.service a.brand-action {
  justify-content:flex-start;
  font-size:.82rem
}
.service a.brand-action>span:last-child {
  margin-left:auto
}
.review .google-review-label {
  display:flex;
  align-items:center;
  gap:5px;
  margin-top:3px
}
.google-review-label .brand-icon {
  width:17px;
  height:17px;
  min-width:17px
}
.hero-proof .brand-action {
  gap:7px
}
.hero-proof .brand-icon {
  width:19px;
  height:19px;
  min-width:19px
}
.mobile-contact .mobile-wa {
  align-items:center;
  gap:10px
}
.quote-form .button {
  white-space:normal;
  text-align:left
}
@media(max-width:400px) {
  .quote-form .button {
  gap:8px;
  font-size:.8rem;
  padding-left:13px;
  padding-right:13px
}
.hero-actions .button.brand-action {
  gap:10px
}

}

/* Compact brand header: mobile first, with matching navigation/anchor offsets. */
:root {
  --header-height:68px
}

.site-header {
  background:#111610;
  border-bottom:1px solid #444d3e;
  color:#fff
}

.site-header .nav {
  min-height:var(--header-height);
  gap:18px
}

.brand-custom {
  display:inline-flex;
  line-height:0;
  flex-shrink:0;
  background:#000;
  border-radius:3px
}

.company-logo {
  display:block;
  width:87px;
  height:58px;
  object-fit:contain
}

.site-header nav {
  top:var(--header-height);
  background:#111610;
  max-height:calc(100dvh - var(--header-height));
  overflow-y:auto
}

.site-header nav a {
  min-height:44px;
  display:flex;
  align-items:center
}

.site-header nav a:hover,.site-header nav a[aria-current="page"] {
  color:var(--yellow)
}

.site-header .nav-contact {
  border-color:#9ca58f
}

.site-header .menu-toggle {
  color:#fff;
  border-color:#68705f;
  min-height:44px
}

.footer-top .company-logo {
  width:138px;
  height:92px
}

.footer-top .brand-custom {
  padding:0
}

.skip {
  color:var(--ink)
}

html {
  scroll-padding-top:calc(var(--header-height) + 18px)
}

#quote-form {
  scroll-margin-top:calc(var(--header-height) + 18px)
}

@media(min-width:781px) {
  :root {
  --header-height:76px
}
.company-logo {
  width:96px;
  height:64px
}
.site-header nav {
  overflow:visible;
  max-height:none;
  gap:25px
}
.hero {
  padding-top:50px;
  padding-bottom:60px
}

}

/* Request a preferred visit without implying a confirmed booking. */
.appointment-options {
  border-top:1px solid #bac4ad;
  border-bottom:1px solid #bac4ad;
  margin-top:21px;
  padding:14px 0
}

.appointment-options summary {
  cursor:pointer;
  font-size:.94rem;
  font-weight:700;
  min-height:30px
}

.appointment-options summary span {
  font-weight:400;
  color:#59634f
}

.appointment-options>p {
  font-size:.85rem;
  line-height:1.6;
  margin:14px 0 18px
}

.appointment-options .form-grid {
  margin-bottom:6px
}

.appointment-options input[type="date"] {
  min-height:48px
}

@media(max-width:780px) {
  .hero {
  padding-top:30px;
  padding-bottom:38px
}
.hero h1 {
  font-size:clamp(3rem,10.5vw,4.5rem)
}
.hero-grid {
  gap:26px
}
.section {
  padding-top:58px;
  padding-bottom:58px
}
.brand-custom {
  max-width:100%
}

}

@media(min-width:781px) and (max-width:950px) {
  .site-header nav {
  gap:17px;
  font-size:.82rem
}

}

/* Image-led service collections. Mobile first; motion never hides content. */
:root { --surface-dark:#181d19; --surface-card:#222923; --gold:#f5ce45; }
.reading-progress { position:fixed;top:var(--header-height);left:0;right:0;height:2px;pointer-events:none;z-index:12; }
.reading-progress span { display:block;width:100%;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:left; }
.home-services { display:grid;grid-template-columns:1fr;gap:24px; }
.home-service { background:#f8f9f2;border:1px solid #c4cebb;border-radius:8px;overflow:hidden;box-shadow:0 8px 25px #18211608;transition:box-shadow .3s,border-color .3s; }
.home-service-image { position:relative;aspect-ratio:16/10;overflow:hidden;background:#35412f; }
.home-service-image img { width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.3,1); }
.home-service-image>span { position:absolute;top:16px;left:16px;color:#171a19;background:var(--gold);border:1px solid #ffeda4;border-radius:50%;width:38px;height:38px;display:grid;place-items:center;font-size:.8rem;font-weight:700; }
.home-service-body { padding:25px; }
.home-service-body h3 { font-size:1.35rem;margin-bottom:13px; }
.home-service-body p { font-size:.94rem;margin-bottom:23px; }
.home-service-body>a { display:flex;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid #cbd4c2;padding-top:18px;font-size:.86rem;font-weight:700;min-height:44px; }
.home-service-body>a span { font-size:1.2rem;transition:transform .3s; }
.facility-hero { padding:30px 0 0;background:radial-gradient(ellipse at 80% 10%,#44442c 0,transparent 52%),linear-gradient(135deg,#171c18,#252e26);color:#fff;overflow:hidden; }
.facility-hero .breadcrumb { color:#bbc6b4;margin-bottom:35px; }
.facility-hero-grid { display:grid;grid-template-columns:1fr;gap:35px;align-items:center; }
.facility-hero-copy h1 { font-size:clamp(3rem,10.5vw,5.4rem); }
.facility-hero-copy .eyebrow { color:var(--gold);font-size:.7rem;line-height:1.8; }
.facility-hero-copy h1 em { color:var(--gold); }
.facility-hero-copy>p:not(.eyebrow) { color:#c6d0c0;max-width:480px;font-size:1.08rem; }
.facility-hero .hero-actions { flex-wrap:wrap;gap:25px; }
.facility-hero .text-link { color:#e7ecdf; }
.facility-hero-image { position:relative;aspect-ratio:5/4;overflow:hidden;border-radius:8px;border:1px solid #778064; }
.facility-hero-image>img { width:100%;height:100%;object-fit:cover; }
.facility-hero-image:after { content:'';position:absolute;inset:0;background:linear-gradient(transparent 40%,#081008d9);pointer-events:none; }
.facility-hero-caption { position:absolute;bottom:25px;left:25px;right:20px;z-index:1; }
.facility-hero-caption>span { display:block;color:#e4e9d7;font-size:.65rem;letter-spacing:.12em;margin-bottom:10px; }
.facility-hero-caption>strong { font-size:1.6rem;font-weight:500;line-height:1.15;letter-spacing:-.035em; }
.facility-credentials { display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid #667158;margin-top:40px;padding:15px 0; }
.facility-credentials>span { color:#bdc7b5;font-size:.85rem;padding:12px 0; }
.facility-credentials strong { color:#fff;font-weight:500;font-size:1.05rem;margin-right:8px; }
.facilities-catalog { background:radial-gradient(ellipse at 100% 25%,#273124,transparent 60%),#151b16;color:#f6f8ef; }
.facilities-catalog .eyebrow { color:var(--gold); }
.facilities-catalog h2 em { color:#dccb89; }
.facilities-catalog .section-heading>p { color:#bcc8b6; }
.visual-services { display:grid;grid-template-columns:1fr;gap:24px;align-items:stretch; }
.visual-service { display:flex;flex-direction:column;min-width:0;background:linear-gradient(130deg,#252e26,#1e271e);border:1px solid #4b5744;border-radius:8px;overflow:hidden;box-shadow:0 14px 35px #0002;transition:border-color .3s,box-shadow .3s; }
.visual-service-image { flex-shrink:0;position:relative;aspect-ratio:1.75;overflow:hidden;background:#394732; }
.visual-service-image>img { width:100%;height:100%;object-fit:cover;transition:transform .75s cubic-bezier(.2,.7,.3,1),filter .5s; }
.visual-service-image:after { content:'';position:absolute;inset:0;background:linear-gradient(180deg,#0d18092b 0%,transparent 25%,#071006e6 100%);pointer-events:none; }
.visual-service-number { position:absolute;top:18px;left:20px;background:#111a10e8;color:#f6d968;border:1px solid #b7c79e66;border-radius:25px;padding:6px 12px;font-size:.65rem;letter-spacing:.08em;z-index:1; }
.visual-service-title { position:absolute;bottom:23px;left:23px;right:23px;z-index:1; }
.visual-service-title>p { color:#e1dcc4;font-size:.81rem;margin-bottom:9px; }
.visual-service-title h3 { font-size:clamp(1.7rem,5.8vw,2.1rem);color:#fff;letter-spacing:-.045em;line-height:1.15;margin:0; }
.visual-service-body { display:flex;flex-direction:column;flex:1;padding:22px; }
.visual-service-body>p { color:#cad4c2;font-size:.94rem;line-height:1.65;margin-bottom:18px; }
.service-details { margin-top:auto;border-top:1px solid #526148;border-bottom:1px solid #526148; }
.service-details>summary { list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:52px;font-size:.9rem;color:#f0f3e7; }
.service-details>summary::-webkit-details-marker { display:none; }
.service-details>summary span { color:var(--gold);font-size:1.4rem;transition:transform .25s; }
.service-details[open]>summary span { transform:rotate(45deg); }
.service-details ul { list-style:none;margin:0;padding:0 0 20px; }
.service-details li { position:relative;padding:6px 0 6px 20px;font-size:.86rem;color:#c7d3bd; }
.service-details li:before { content:'✓';color:var(--gold);position:absolute;left:0; }
.service-enquire { display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--gold);font-weight:700;font-size:.9rem;padding-top:20px;min-height:48px; }
.service-enquire>span { display:grid;place-items:center;border:1px solid #7c865d;border-radius:50%;width:35px;height:35px;transition:background .3s,color .3s,transform .3s; }
.imagery-note { font-size:.78rem;color:#a9b99c;margin:25px 0 0; }
.imagery-note a { text-decoration:underline;text-underline-offset:4px;color:#dce6cc; }
.facilities-catalog + .facilities { background:linear-gradient(130deg,#e3e8da,#f2f0df);color:#1e271d;border-top:0; }
.facilities-catalog + .facilities p { color:#4b5944; }
.facilities-catalog + .facilities .eyebrow,.facilities-catalog + .facilities h2 em { color:#686021; }
.process>div { position:relative;padding:25px 0;border-top:1px solid #9cae8c; }
.process>div>span { display:grid;place-items:center;background:var(--gold);border-radius:50%;width:40px;height:40px;color:#171e15;font-size:.9rem; }
.service-selected { animation:form-highlight 1.1s ease-out; }
@keyframes form-highlight { 0%,100%{box-shadow:0 20px 60px #0003}35%{box-shadow:0 0 0 4px #f5ce45,0 20px 60px #0003} }
@keyframes content-arrive { from { opacity:.35;transform:translateY(22px) } to {opacity:1;transform:translateY(0)} }
.reveal-arrived { animation:content-arrive .7s cubic-bezier(.2,.7,.3,1) both; }
@media(min-width:620px){
 .home-services { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .facility-credentials { grid-template-columns:repeat(3,minmax(0,1fr));gap:22px; }
 .facility-credentials strong { display:block;margin-bottom:3px; }
}
@media(min-width:900px){
 .visual-services { grid-template-columns:repeat(2,minmax(0,1fr));gap:26px; }
 .visual-service-image { aspect-ratio:1.85; }
 .visual-service-title h3 { font-size:2.1rem; }
 .visual-service-body { padding:23px; }
 .facility-hero-grid { grid-template-columns:1.08fr 1fr;gap:60px; }
 .facility-hero { padding-top:40px; }
 .facility-hero-image { aspect-ratio:1.1; }
 .facility-hero-copy h1 { font-size:clamp(3.4rem,5.3vw,5.3rem); }
 .facility-credentials { padding:20px 0;margin-top:50px; }
 .facility-credentials strong { display:inline; }
}
@media(min-width:1100px){.home-services { grid-template-columns:repeat(3,minmax(0,1fr)); }.home-service-body { padding:28px; }.visual-service-image { aspect-ratio:1.95; }}
@media(hover:hover) and (pointer:fine){
 .home-service:hover { border-color:#998441;box-shadow:0 16px 35px #18211617; }
 .home-service:hover .home-service-image img { transform:scale(1.055); }
 .home-service:hover .home-service-body>a span { transform:translate(3px,-3px); }
 .visual-service:hover { border-color:#e3c451;box-shadow:0 22px 45px #0004; }
 .visual-service:hover .visual-service-image>img { transform:scale(1.06); }
 .visual-service:hover .service-enquire>span { background:var(--gold);color:#152012;transform:rotate(4deg); }
 .service-enquire:hover { color:#fff0ae; }
 .facility-hero-image>img { animation:hero-settle 1.2s ease-out both; }
 @keyframes hero-settle { from {transform:scale(1.04)} to {transform:scale(1)} }
}
@media(prefers-reduced-motion:reduce){
 .service-selected,.reveal-arrived,.facility-hero-image>img { animation:none!important; }
 .home-service:hover .home-service-image img,.visual-service:hover .visual-service-image>img { transform:none; }
}
