:root{
  --cream:#FAF6EC;
  --paper:#FFFDF8;
  --ink:#17170F;
  --yellow:#F2C230;
  --yellow-deep:#D9A61E;
  --green:#1F4D3A;
  --green-deep:#163A2B;
  --line:rgba(23,23,15,0.12);
  --shadow:0 18px 40px -20px rgba(23,23,15,0.30);
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--cream);
  color:var(--ink);
  font-family:'Inter', sans-serif;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block;}
a{color:inherit;}
.wrap{max-width:1080px; margin:0 auto; padding:0 28px;}
h1,h2,h3{font-family:'Fraunces', serif; font-weight:600; letter-spacing:-0.01em; line-height:1.1;}
.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  text-transform:uppercase;
  letter-spacing:0.14em;
  font-size:12.5px;
  color:var(--green-deep);
  font-weight:500;
  display:inline-block;
}
.mono{font-family:'IBM Plex Mono', monospace;}

/* ---------- Header ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(250,246,236,0.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 28px;
  max-width:1080px; margin:0 auto;
}
.brand{display:flex; align-items:center; gap:10px; font-family:'Fraunces', serif; font-weight:600; font-size:18px; text-decoration:none;}
.brand img{height:38px; width:38px; border-radius:50%;}
.navlinks{display:flex; align-items:center; gap:30px; font-size:14.5px; font-weight:500;}
.navlinks a{text-decoration:none; opacity:0.72; transition:opacity .2s;}
.navlinks a:hover{opacity:1;}
.navlinks a.active{opacity:1; color:var(--green);}
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 22px; border-radius:100px;
  font-weight:600; font-size:14.5px; text-decoration:none;
  border:1.5px solid transparent; cursor:pointer;
  transition:transform .15s ease, background .15s ease;
}
.btn:hover{transform:translateY(-1px);}
.btn-primary{background:var(--green); color:var(--paper); box-shadow:var(--shadow);}
.btn-primary:hover{background:var(--green-deep);}
.btn-yellow{background:var(--yellow); color:var(--ink);}
.btn-yellow:hover{background:var(--yellow-deep);}
.btn-ghost{border-color:var(--ink); color:var(--ink);}
.btn-ghost:hover{background:var(--ink); color:var(--cream);}
.btn-email{border-color:var(--cream); color:var(--cream);}
.btn-email:hover{background:var(--cream); color:var(--ink);}
.btn-sm{padding:10px 18px; font-size:13.5px;}

/* ---------- Page hero (inner pages) ---------- */
.page-hero{padding:56px 0 20px;}
.page-hero .eyebrow{margin-bottom:14px;}
.page-hero h1{font-size:clamp(30px,4vw,44px);}
.page-hero p{margin-top:14px; color:rgba(23,23,15,0.7); font-size:17px; max-width:56ch;}

/* ---------- Hero (home) ---------- */
.hero{padding:70px 0 50px;}
.hero-inner{display:grid; grid-template-columns:1.15fr 0.85fr; gap:48px; align-items:center;}
.hero h1{font-size:clamp(34px,4.6vw,52px); margin:16px 0 20px;}
.hero h1 em{font-style:italic; color:var(--green);}
.hero p.lede{font-size:17.5px; max-width:46ch; color:rgba(23,23,15,0.76);}
.hero-ctas{display:flex; gap:14px; margin-top:28px; flex-wrap:wrap;}
.hero-note{margin-top:20px; font-size:13.5px; color:rgba(23,23,15,0.58); display:flex; align-items:center; gap:8px;}
.dot{width:6px; height:6px; border-radius:50%; background:var(--green); display:inline-block;}
.hero-badge{display:flex; align-items:center; justify-content:center;}
.hero-badge img{
  width:min(300px, 100%);
  border-radius:50%;
  box-shadow:var(--shadow);
}

/* ---------- Trust strip (static, tidy) ---------- */
.trust{background:var(--ink); padding:0;}
.trust-grid{
  display:grid; grid-template-columns:repeat(4,1fr);
  max-width:1080px; margin:0 auto;
}
.trust-item{
  padding:20px 18px; text-align:center;
  font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.02em;
  color:rgba(250,246,236,0.85);
  border-right:1px solid rgba(250,246,236,0.12);
}
.trust-item:last-child{border-right:none;}

/* ---------- Section shell ---------- */
section{padding:80px 0;}
.section-head{max-width:620px; margin-bottom:40px;}
.section-head .eyebrow{margin-bottom:12px;}
.section-head h2{font-size:clamp(26px,3.2vw,34px);}
.section-head p{margin-top:12px; color:rgba(23,23,15,0.68); font-size:16px;}

/* ---------- About ---------- */
.about{background:var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.about-grid{display:grid; grid-template-columns:0.95fr 1.05fr; gap:52px; align-items:start;}
.about p{color:rgba(23,23,15,0.8); font-size:16px; margin-bottom:14px;}
.creds{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
.cred-card{background:var(--cream); border:1px solid var(--line); border-radius:14px; padding:18px;}
.cred-badge{
  width:38px; height:38px; border-radius:50%;
  background:var(--green); color:var(--yellow);
  display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces', serif; font-weight:600; font-size:13px;
  margin-bottom:12px;
}
.cred-card h3{font-family:'Inter',sans-serif; font-size:14.5px; font-weight:600; margin-bottom:5px;}
.cred-card p{font-size:13px; color:rgba(23,23,15,0.62); margin:0;}

/* ---------- Home services teaser ---------- */
.teaser-card{
  display:grid; grid-template-columns:1fr auto; align-items:center; gap:24px;
  background:var(--ink); color:var(--cream); border-radius:20px; padding:36px 40px;
}
.teaser-card h3{color:var(--yellow); font-size:22px; margin-bottom:8px;}
.teaser-card p{color:rgba(250,246,236,0.72); font-size:15px; max-width:52ch;}

/* ---------- Services / pricing ---------- */
.pricing-card{
  background:var(--ink); color:var(--cream);
  border-radius:20px; padding:40px;
  display:grid; grid-template-columns:1.1fr 0.9fr; gap:36px;
  box-shadow:var(--shadow);
}
.pricing-card h3{color:var(--yellow); font-size:22px; margin-bottom:12px;}
.pricing-card p{color:rgba(250,246,236,0.72); font-size:15px;}
.price-lines{margin-top:24px; border-top:1px solid rgba(250,246,236,0.16);}
.price-line{display:flex; justify-content:space-between; align-items:baseline; padding:15px 0; border-bottom:1px solid rgba(250,246,236,0.16);}
.price-line span:first-child{font-size:14.5px; color:rgba(250,246,236,0.85);}
.price-line span:last-child{font-family:'IBM Plex Mono', monospace; font-size:16.5px; font-weight:600; color:var(--yellow);}
.price-note{font-size:12.5px; color:rgba(250,246,236,0.5); margin-top:14px;}
.whats-included{background:rgba(250,246,236,0.06); border-radius:14px; padding:24px;}
.whats-included h4{font-family:'Inter',sans-serif; font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:var(--yellow); margin-bottom:14px;}
.whats-included ul{list-style:none;}
.whats-included li{font-size:14px; color:rgba(250,246,236,0.85); padding-left:20px; position:relative; margin-bottom:11px;}
.whats-included li::before{content:"✓"; position:absolute; left:0; color:var(--yellow); font-weight:700;}

/* ---------- Areas ---------- */
.areas{background:var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.zone-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
.zone{border-radius:16px; padding:24px; border:1px solid var(--line); background:var(--cream);}
.zone.core{background:var(--green); color:var(--paper); border-color:var(--green);}
.zone .eyebrow{color:inherit; opacity:0.75;}
.zone.core .eyebrow{color:var(--yellow);}
.zone h3{font-size:18px; margin:9px 0 7px;}
.zone p{font-size:13.5px; color:rgba(23,23,15,0.6);}
.zone.core p{color:rgba(250,253,248,0.8);}
.zone .fee{font-family:'IBM Plex Mono', monospace; font-weight:600; margin-top:12px; display:block; font-size:14.5px;}

/* ---------- Quote calculator ---------- */
.calc{
  background:var(--ink); border-radius:24px; padding:44px; color:var(--cream);
  display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center;
}
.calc-form label{display:block; font-family:'IBM Plex Mono', monospace; font-size:11.5px; text-transform:uppercase; letter-spacing:0.1em; color:rgba(250,246,236,0.55); margin-bottom:8px; margin-top:20px;}
.calc-form label:first-child{margin-top:0;}
.calc-form input[type=number], .calc-form select{
  width:100%; padding:13px 15px; border-radius:10px; border:1px solid rgba(250,246,236,0.22);
  background:rgba(250,246,236,0.06); color:var(--cream); font-family:'Inter',sans-serif; font-size:15px;
}
.calc-form select option{color:#111;}
.calc-form input:focus, .calc-form select:focus{outline:2px solid var(--yellow); outline-offset:2px;}
.stepper-row{display:flex;}
.stepper-row button{
  width:44px; flex-shrink:0; background:rgba(250,246,236,0.08); border:1px solid rgba(250,246,236,0.22);
  color:var(--yellow); font-size:19px; cursor:pointer; font-family:'Inter',sans-serif;
}
.stepper-row button:first-child{border-radius:10px 0 0 10px; border-right:none;}
.stepper-row button:last-child{border-radius:0 10px 10px 0; border-left:none;}
.stepper-row input{border-radius:0 !important; text-align:center;}
.quick-picks{display:flex; gap:7px; flex-wrap:wrap; margin-top:10px;}
.quick-picks .chip{
  padding:6px 13px; background:rgba(250,246,236,0.06); border:1px solid rgba(250,246,236,0.2);
  border-radius:20px; font-family:'IBM Plex Mono', monospace; font-size:11.5px;
  color:rgba(250,246,236,0.7); cursor:pointer; transition:all .15s;
}
.quick-picks .chip:hover{border-color:var(--yellow); color:var(--yellow);}
.quick-picks .chip.active{background:var(--yellow); border-color:var(--yellow); color:var(--ink); font-weight:600;}
.sticker{
  background:var(--paper); color:var(--ink); border-radius:50%; aspect-ratio:1/1;
  width:100%; max-width:290px; margin:0 auto;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; padding:26px; border:3px dashed var(--green); position:relative;
}
.sticker::before{content:""; position:absolute; inset:13px; border:1px solid rgba(23,23,15,0.16); border-radius:50%;}
.sticker .eyebrow{color:var(--green-deep); font-size:11px;}
.sticker .amount{font-family:'Fraunces', serif; font-weight:700; font-size:40px; margin:8px 0 6px;}
.sticker .breakdown{font-family:'IBM Plex Mono', monospace; font-size:11px; color:rgba(23,23,15,0.6); line-height:1.6;}
.sticker .status{font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--green); font-weight:600; margin-top:10px;}
.calc-actions{display:flex; gap:10px; margin-top:20px; justify-content:center; flex-wrap:wrap;}

/* ---------- Contact ---------- */
.contact-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:52px;}
.contact-item{display:flex; align-items:flex-start; gap:15px; margin-bottom:24px;}
.contact-icon{width:42px; height:42px; border-radius:50%; flex-shrink:0; background:var(--yellow); display:flex; align-items:center; justify-content:center; font-size:17px;}
.contact-item h4{font-size:14.5px; margin-bottom:4px;}
.contact-item a, .contact-item p{font-size:14px; color:rgba(23,23,15,0.68); text-decoration:none;}
form.enquiry{background:var(--paper); border:1px solid var(--line); border-radius:18px; padding:30px;}
form.enquiry label{display:block; font-size:12.5px; font-weight:600; margin:14px 0 6px;}
form.enquiry label:first-child{margin-top:0;}
form.enquiry input, form.enquiry textarea{
  width:100%; padding:12px 14px; border-radius:10px; border:1px solid var(--line);
  background:var(--cream); font-family:'Inter',sans-serif; font-size:14px;
}
form.enquiry textarea{resize:vertical; min-height:88px;}
form.enquiry .btn{margin-top:18px; width:100%; justify-content:center;}

/* ---------- FAQ ---------- */
.faqs{background:var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.faq-list{display:grid; gap:14px; margin-top:32px;}
.faq-item{border:1px solid var(--line); border-radius:14px; overflow:hidden; background:var(--cream);}
.faq-toggle{
  width:100%; padding:18px 20px; text-align:left; background:none; border:none;
  font-family:'Inter',sans-serif; font-size:15px; font-weight:600; color:var(--ink);
  cursor:pointer; display:flex; justify-content:space-between; align-items:center;
  transition:background .2s ease;
}
.faq-toggle:hover{background:rgba(23,23,15,0.04);}
.faq-toggle::after{content:""; width:18px; height:18px; background:var(--green); border-radius:50%; flex-shrink:0; position:relative; display:flex; align-items:center; justify-content:center;}
.faq-item.open .faq-toggle{background:rgba(31,77,58,0.06);}
.faq-item.open .faq-toggle::after{content:""; background:var(--green);}
.faq-answer{max-height:0; overflow:hidden; transition:max-height .3s ease; padding:0 20px;}
.faq-item.open .faq-answer{max-height:500px; padding:0 20px 18px;}
.faq-answer p{font-size:14.5px; color:rgba(23,23,15,0.75); line-height:1.65; margin:0;}
.faq-answer p + p{margin-top:12px;}

/* ---------- CTA banner ---------- */
.cta-banner{background:var(--yellow); border-radius:20px; padding:40px; display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;}
.cta-banner h3{font-size:22px;}
.cta-banner p{color:rgba(23,23,15,0.7); margin-top:6px; font-size:14.5px;}

/* ---------- Footer ---------- */
footer{background:var(--ink); color:rgba(250,246,236,0.6); padding:36px 0;}
.foot-grid{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:14px; font-size:13.5px;}
.foot-grid strong{color:var(--cream);}

/* ---------- Responsive ---------- */
@media (max-width:860px){
  .navlinks{display:none;}
  .hero-inner{grid-template-columns:1fr;}
  .hero-badge{order:-1;}
  .about-grid, .contact-grid, .calc, .pricing-card, .teaser-card{grid-template-columns:1fr;}
  .zone-grid{grid-template-columns:1fr;}
  .creds{grid-template-columns:1fr 1fr;}
  .trust-grid{grid-template-columns:1fr 1fr;}
  .trust-item{border-right:none; border-bottom:1px solid rgba(250,246,236,0.12);}
  section{padding:56px 0;}
  .cta-banner{flex-direction:column; align-items:flex-start;}
  .stats-grid{grid-template-columns:1fr 1fr;}
  .stats-item{border-right:none !important; border-bottom:1px solid rgba(250,246,236,0.12);}
  .steps-grid{grid-template-columns:1fr 1fr;}
  .reviews-grid{grid-template-columns:1fr;}
  .work-grid{grid-template-columns:1fr;}
}

/* ---------- Scrolling ticker ---------- */
.ticker{background:var(--green); overflow:hidden; padding:13px 0;}
.ticker-track{display:flex; gap:40px; white-space:nowrap; width:max-content; animation:ticker-scroll 32s linear infinite;}
.ticker-track span{
  font-family:'IBM Plex Mono', monospace; font-size:12.5px; font-weight:500;
  letter-spacing:0.06em; color:var(--cream); text-transform:uppercase;
}
@keyframes ticker-scroll{from{transform:translateX(0);} to{transform:translateX(-50%);}}

/* ---------- Stat counters ---------- */
.stats{background:var(--ink);}
.stats-grid{display:grid; grid-template-columns:repeat(4,1fr); max-width:1080px; margin:0 auto;}
.stats-item{
  padding:34px 20px; text-align:center;
  border-right:1px solid rgba(250,246,236,0.12);
}
.stats-item:last-child{border-right:none;}
.stats-num{font-family:'Fraunces', serif; font-weight:700; font-size:clamp(30px,4vw,42px); color:var(--yellow); line-height:1;}
.stats-label{font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:rgba(250,246,236,0.6); margin-top:9px;}

/* ---------- 4-step process ---------- */
.steps-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px;}
.step-card{background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:26px 22px; transition:transform .2s ease, box-shadow .2s ease;}
.step-card:hover{transform:translateY(-4px); box-shadow:var(--shadow);}
.step-num{font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--green); letter-spacing:0.1em; margin-bottom:12px; display:block;}
.step-card h3{font-family:'Inter',sans-serif; font-size:16px; font-weight:600; margin-bottom:8px;}
.step-card p{font-size:13.5px; color:rgba(23,23,15,0.62);}

/* ---------- Who I work with ---------- */
.work-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
.work-card{background:var(--cream); border:1px solid var(--line); border-radius:16px; padding:26px;}
.work-card h3{font-family:'Inter',sans-serif; font-size:16px; font-weight:600; margin-bottom:8px; color:var(--green-deep);}
.work-card p{font-size:14px; color:rgba(23,23,15,0.65);}

/* ---------- Google reviews ---------- */
.reviews-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
.review-card{background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:24px;}
.review-stars{color:var(--yellow-deep); font-size:15px; letter-spacing:2px; margin-bottom:12px;}
.review-card p{font-size:14px; color:rgba(23,23,15,0.72); margin-bottom:14px; line-height:1.6;}
.review-card cite{font-family:'IBM Plex Mono', monospace; font-size:11px; font-style:normal; letter-spacing:0.06em; text-transform:uppercase; color:rgba(23,23,15,0.5);}

/* ---------- Reveal on scroll ---------- */
.reveal{opacity:0; transform:translateY(18px); transition:opacity .5s ease, transform .5s ease;}
.reveal.in{opacity:1; transform:none;}
