:root{
  --sand:#EDE7D3;
  --paper:#FAF7EC;
  --karri:#1C2A1E;
  --karri-soft:#28372A;
  --olive:#4C5C39;
  --olive-light:#7C8C63;
  --ocean:#2C6E76;
  --ocean-deep:#1F4F55;
  --sun:#D3852E;
  --sun-deep:#B96C1E;
  --ink:#22261C;
  --ink-soft:#565F4C;
  --line:rgba(28,42,30,0.14);
  --line-soft:rgba(28,42,30,0.08);
  --radius:14px;
  --shadow:0 20px 45px -25px rgba(20,30,20,0.45);
  --display:"Fraunces", Georgia, serif;
  --body:"Public Sans", -apple-system, BlinkMacSystemFont, sans-serif;
  --mono:"IBM Plex Mono", monospace;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto;} *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}}
body{
  margin:0;
  font-family:var(--body);
  color:var(--ink);
  background:var(--sand);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
}
img,svg{max-width:100%; display:block;}
a{color:inherit;}
h1,h2,h3,h4{font-family:var(--display); margin:0; font-weight:600; letter-spacing:-0.01em; color:var(--karri);}
p{margin:0;}
.wrap{max-width:1180px; margin:0 auto; padding:0 24px;}
section{padding:96px 0;}
@media (max-width:720px){ section{padding:64px 0;} }

.eyebrow{
  font-family:var(--mono); font-size:12px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--ocean-deep); display:inline-flex; align-items:center; gap:8px; margin-bottom:14px;
}
.hero-art {
    width: 100%;
    max-width: 520px;
    height: 440px;
    overflow: hidden;
    border-radius: 24px;
  }
  .hero-art img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
  .ba-layer.ba-before-img,
  .ba-after img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
.eyebrow::before{content:""; width:18px; height:1px; background:var(--sun-deep);}

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--body); font-weight:700; font-size:15px;
  padding:15px 26px; border-radius:999px; text-decoration:none; cursor:pointer;
  border:1px solid transparent; transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
  white-space:nowrap;
}
.btn:focus-visible{outline:3px solid var(--ocean); outline-offset:3px;}
.btn-primary{background:var(--sun); color:#1a1204; box-shadow:0 12px 24px -12px rgba(211,133,46,0.7);}
.btn-primary:hover{background:var(--sun-deep); transform:translateY(-1px);}
.btn-outline{background:transparent; color:var(--paper); border-color:rgba(250,247,236,0.4);}
.btn-outline:hover{border-color:var(--paper); background:rgba(250,247,236,0.08);}
.btn-dark{background:var(--karri); color:var(--paper);}
.btn-dark:hover{background:var(--karri-soft);}
.btn-block{width:100%;}

/* ============ TOP BAR ============ */
.topbar{background:var(--karri); color:rgba(250,247,236,0.85); font-size:13px;}
.topbar .wrap{display:flex; justify-content:space-between; align-items:center; padding:9px 24px; gap:16px; flex-wrap:wrap;}
.topbar a{text-decoration:none; color:var(--paper); font-weight:600;}
.topbar-left{display:flex; gap:20px; flex-wrap:wrap;}
@media (max-width:640px){ .topbar-left span:nth-child(2){display:none;} }

/* ============ HEADER ============ */
header.site{background:var(--paper); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:50;}
.nav{display:flex; align-items:center; justify-content:space-between; padding:16px 24px; gap:16px;}
.logo{display:flex; align-items:center; gap:10px; text-decoration:none; font-family:var(--display); font-weight:700; font-size:20px; color:var(--karri);}
.logo-mark{width:34px; height:34px; flex:none;}
.nav-links{display:flex; gap:30px; list-style:none; margin:0; padding:0; font-size:15px; font-weight:600;}
.nav-links a{text-decoration:none; color:var(--ink-soft); padding:6px 0; border-bottom:2px solid transparent;}
.nav-links a:hover{color:var(--karri); border-color:var(--sun);}
.nav-cta{display:flex; align-items:center; gap:12px;}
.call-chip{display:flex; align-items:center; gap:8px; font-weight:700; text-decoration:none; color:var(--karri); font-size:15px;}
.call-chip svg{width:18px; height:18px;}
.menu-toggle{display:none; background:none; border:1px solid var(--line); border-radius:10px; padding:9px; cursor:pointer;}
.menu-toggle svg{width:22px; height:22px;}
@media (max-width:940px){
  .nav-links{display:none;}
  .menu-toggle{display:inline-flex;}
  .call-chip span{display:none;}
}
@media (max-width:520px){
  .nav-cta .btn-primary span.full{display:none;}
  .logo{font-size:16px; white-space:nowrap;}
  .logo-mark{width:28px; height:28px;}
}
.mobile-panel{display:none; flex-direction:column; gap:2px; padding:8px 24px 20px; border-top:1px solid var(--line); background:var(--paper);}
.mobile-panel.open{display:flex;}
.mobile-panel a{padding:12px 4px; text-decoration:none; color:var(--ink); font-weight:600; border-bottom:1px solid var(--line-soft);}

/* ============ HERO ============ */
.hero{background:var(--karri); color:var(--paper); position:relative; overflow:hidden; padding:0;}
.hero-grid{display:grid; grid-template-columns:1.05fr 0.95fr; gap:40px; align-items:center; padding:88px 24px 70px; max-width:1180px; margin:0 auto;}
@media (max-width:940px){ .hero-grid{grid-template-columns:1fr; padding:56px 24px 36px; gap:36px;} }
.hero h1{font-size:clamp(38px, 5.2vw, 64px); line-height:1.03; color:var(--paper); font-weight:600;}
.hero h1 em{font-style:normal; color:var(--sun);}
.hero-sub{margin-top:22px; font-size:18px; color:rgba(250,247,236,0.82); max-width:46ch; line-height:1.6;}
.hero-actions{display:flex; gap:14px; margin-top:34px; flex-wrap:wrap;}
.trust-row{display:flex; gap:28px; margin-top:46px; flex-wrap:wrap; padding-top:30px; border-top:1px solid rgba(250,247,236,0.14);}
.trust-item{display:flex; flex-direction:column; gap:2px;}
.trust-item strong{font-family:var(--display); font-size:26px; color:var(--paper);}
.trust-item span{font-size:12.5px; color:rgba(250,247,236,0.62); font-family:var(--mono); letter-spacing:0.03em;}
.hero-art{position:relative;}

/* ============ SERVICES ============ */
.section-head{max-width:640px; margin-bottom:52px;}
.section-head h2{font-size:clamp(28px,3.4vw,40px);}
.section-head p{margin-top:14px; color:var(--ink-soft); font-size:16.5px; line-height:1.6;}
.services-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
@media (max-width:900px){ .services-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:600px){ .services-grid{grid-template-columns:1fr;} }
.service-card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); padding:28px; display:flex; flex-direction:column; gap:14px; transition:transform .15s ease, box-shadow .15s ease;}
.service-card:hover{transform:translateY(-3px); box-shadow:var(--shadow);}
.service-icon{width:44px; height:44px; border-radius:10px; background:var(--olive); display:flex; align-items:center; justify-content:center;}
.service-icon svg{width:24px; height:24px; stroke:var(--paper);}
.service-card h3{font-size:19px;}
.service-card p{color:var(--ink-soft); font-size:14.5px; line-height:1.55;}
.service-meta{display:flex; justify-content:space-between; align-items:center; margin-top:auto; padding-top:14px; border-top:1px solid var(--line-soft);}
.service-price{font-family:var(--mono); font-size:12.5px; color:var(--ocean-deep);}
.service-link{font-size:13.5px; font-weight:700; text-decoration:none; color:var(--sun-deep);}

/* ============ BEFORE/AFTER GALLERY ============ */
.gallery-band{background:var(--karri);}
.gallery-band .section-head h2, .gallery-band .eyebrow{color:var(--paper);}
.gallery-band .eyebrow{color:#E7CBA0;}
.gallery-band .section-head p{color:rgba(250,247,236,0.68);}
.ba-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
@media (max-width:980px){ .ba-grid{grid-template-columns:1fr; max-width:520px; margin:0 auto;} }
.ba-card{background:var(--karri-soft); border-radius:var(--radius); overflow:hidden; border:1px solid rgba(250,247,236,0.12);}
.ba-frame{position:relative; aspect-ratio:4/3; overflow:hidden; cursor:ew-resize; -webkit-user-select:none; user-select:none;}
.ba-frame img, .ba-frame .ba-layer{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.ba-after{position:absolute; inset:0; width:100%; height:100%;}
.ba-before{clip-path:inset(0 0 0 0);}
.ba-divider{position:absolute; top:0; bottom:0; width:0; left:50%; pointer-events:none;}
.ba-divider::before{content:""; position:absolute; top:0; bottom:0; left:-1px; width:2px; background:var(--paper);}
.ba-handle{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:42px; height:42px; border-radius:50%; background:var(--sun); display:flex; align-items:center; justify-content:center; box-shadow:0 6px 16px rgba(0,0,0,0.35); pointer-events:none;}
.ba-handle svg{width:20px; height:20px; stroke:#1a1204;}
.ba-tag{position:absolute; top:12px; font-family:var(--mono); font-size:10.5px; letter-spacing:0.08em; text-transform:uppercase; background:rgba(20,26,17,0.72); color:var(--paper); padding:5px 10px; border-radius:999px; pointer-events:none;}
.ba-tag.before{left:12px;}
.ba-tag.after{right:12px;}
.ba-slider-input{position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:ew-resize; margin:0;}
.ba-caption{padding:16px 20px 20px;}
.ba-caption h3{color:var(--paper); font-size:17px;}
.ba-caption p{color:rgba(250,247,236,0.6); font-size:13px; margin-top:4px; font-family:var(--mono);}
.ba-hint{text-align:center; margin-top:26px; font-size:13px; color:rgba(250,247,236,0.5); font-family:var(--mono);}

/* ============ PROCESS ============ */
.process-list{display:grid; grid-template-columns:repeat(5,1fr); gap:18px; counter-reset:step;}
@media (max-width:980px){ .process-list{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .process-list{grid-template-columns:1fr;} }
.process-step{position:relative; padding:26px 20px 20px; background:var(--paper); border:1px solid var(--line); border-radius:var(--radius);}
.process-num{font-family:var(--mono); font-size:13px; color:var(--sun-deep); font-weight:700;}
.process-step h3{font-size:16.5px; margin-top:10px;}
.process-step p{margin-top:8px; font-size:13.8px; color:var(--ink-soft); line-height:1.5;}
.process-connector{display:none;}
@media (min-width:981px){
  .process-step:not(:last-child)::after{content:""; position:absolute; top:38px; right:-19px; width:18px; height:1px; background:var(--line); border-top:2px dashed var(--olive-light);}
}

/* ============ TESTIMONIALS ============ */
.testi-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
@media (max-width:900px){ .testi-grid{grid-template-columns:1fr; max-width:560px; margin:0 auto;} }
.testi-card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); padding:26px;}
.stars{display:flex; gap:3px; margin-bottom:14px;}
.stars svg{width:16px; height:16px; fill:var(--sun);}
.testi-card p.quote{font-size:15.5px; line-height:1.6; color:var(--ink);}
.testi-foot{display:flex; align-items:center; gap:10px; margin-top:18px;}
.testi-avatar{width:38px; height:38px; border-radius:50%; background:var(--olive-light); display:flex; align-items:center; justify-content:center; font-family:var(--display); font-weight:700; color:var(--karri); font-size:15px;}
.testi-foot strong{font-size:14px; display:block;}
.testi-foot span{font-size:12.5px; color:var(--ink-soft);}

/* ============ LOCAL SEO / AREAS ============ */
.areas{background:var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.areas-inner{display:grid; grid-template-columns:1.1fr 0.9fr; gap:56px; align-items:start;}
@media (max-width:900px){ .areas-inner{grid-template-columns:1fr; gap:32px;} }
.areas h2{font-size:clamp(26px,3vw,34px);}
.areas p.body-copy{margin-top:16px; color:var(--ink-soft); font-size:15.5px; line-height:1.7;}
.chip-cloud{display:flex; flex-wrap:wrap; gap:9px; margin-top:22px;}
.chip{font-size:13px; font-weight:600; padding:8px 14px; border-radius:999px; background:var(--sand); border:1px solid var(--line); color:var(--ink);}

/* ============ FAQ ============ */
.faq-list{max-width:820px; margin:0 auto;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{width:100%; text-align:left; background:none; border:none; padding:22px 4px; font-family:var(--display); font-size:18px; font-weight:600; color:var(--karri); display:flex; justify-content:space-between; align-items:center; gap:16px; cursor:pointer;}
.faq-q svg{width:20px; height:20px; flex:none; transition:transform .2s ease; stroke:var(--olive);}
.faq-item[open] .faq-q svg{transform:rotate(45deg);}
.faq-a{padding:0 4px 22px; color:var(--ink-soft); font-size:15px; line-height:1.65; max-width:70ch;}
.faq-q::-webkit-details-marker{display:none;}

/* ============ CONTACT ============ */
.contact{background:var(--karri); color:var(--paper);}
.contact-grid{display:grid; grid-template-columns:0.85fr 1.15fr; gap:48px;}
@media (max-width:940px){ .contact-grid{grid-template-columns:1fr; gap:36px;} }
.contact-info h2{color:var(--paper); font-size:clamp(28px,3.4vw,38px);}
.contact-info p.lead{margin-top:16px; color:rgba(250,247,236,0.72); font-size:16px; line-height:1.6; max-width:42ch;}
.contact-methods{margin-top:34px; display:flex; flex-direction:column; gap:16px;}
.contact-method{display:flex; gap:14px; align-items:flex-start; text-decoration:none; color:var(--paper);}
.contact-method .ic{width:38px; height:38px; border-radius:10px; background:rgba(250,247,236,0.1); display:flex; align-items:center; justify-content:center; flex:none;}
.contact-method .ic svg{width:19px; height:19px; stroke:var(--sun);}
.contact-method strong{display:block; font-size:15px;}
.contact-method span{font-size:13.5px; color:rgba(250,247,236,0.6);}
.chat-note{margin-top:30px; padding:16px 18px; border:1px dashed rgba(250,247,236,0.28); border-radius:12px; font-size:13.3px; color:rgba(250,247,236,0.68); line-height:1.55;}

.quote-form{background:var(--paper); border-radius:18px; padding:32px; color:var(--ink); box-shadow:var(--shadow);}
.quote-form h3{font-size:20px;}
.quote-form p.sub{color:var(--ink-soft); font-size:13.8px; margin-top:6px;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:18px;}
@media (max-width:520px){ .form-row{grid-template-columns:1fr;} }
.field{display:flex; flex-direction:column; gap:6px;}
.field.full{grid-column:1/-1;}
.field label{font-size:12.5px; font-weight:700; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.04em; font-family:var(--mono); font-weight:500;}
.field input, .field select, .field textarea{
  font-family:var(--body); font-size:15px; padding:12px 14px; border-radius:10px; border:1px solid var(--line);
  background:var(--sand); color:var(--ink); width:100%;
}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--ocean); outline-offset:1px; background:var(--paper);}
.field textarea{resize:vertical; min-height:88px;}
.form-foot{margin-top:22px; display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;}
.form-note{font-size:12px; color:var(--ink-soft); max-width:30ch;}
.form-success{display:none; margin-top:18px; padding:14px 16px; background:#EAF3E4; border:1px solid #B9D4A6; border-radius:10px; font-size:14px; color:#2E4A1F;}
.form-success.show{display:block;}

/* ============ FOOTER ============ */
footer.site{background:#141C15; color:rgba(250,247,236,0.65); padding:60px 0 26px;}
.footer-grid{display:grid; grid-template-columns:1.4fr 0.8fr 0.8fr 1fr; gap:36px;}
@media (max-width:820px){ .footer-grid{grid-template-columns:1fr 1fr; gap:32px;} }
@media (max-width:520px){ .footer-grid{grid-template-columns:1fr;} }
.footer-logo{display:flex; align-items:center; gap:10px; font-family:var(--display); font-weight:700; font-size:19px; color:var(--paper); margin-bottom:12px;}
.footer-col h4{font-size:13px; text-transform:uppercase; letter-spacing:0.06em; color:rgba(250,247,236,0.9); font-family:var(--mono); font-weight:500; margin-bottom:14px;}
.footer-col ul{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:9px; font-size:14px;}
.footer-col a{text-decoration:none; color:rgba(250,247,236,0.65);}
.footer-col a:hover{color:var(--paper);}
.footer-bottom{margin-top:48px; padding-top:22px; border-top:1px solid rgba(250,247,236,0.1); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:12.5px;}

.skip-link{position:absolute; left:-999px; top:0; background:var(--sun); color:#1a1204; padding:10px 16px; z-index:200; font-weight:700;}
.skip-link:focus{left:16px; top:16px;}