/* ---------- tokens ---------- */
:root{
  --paper:#EAEBE5;
  --paper-2:#DFE1D9;
  --paper-3:#D2D5CB;
  --slate:#232A24;
  --slate-60:#4B554A;
  --slate-40:#545D53;
  --ivy:#3B4C36;
  --moss:#4F5F40;
  --penny:#9A6A3A;
  --penny-text:#825A31;   /* accent that passes 4.5:1 on the light surfaces */
  --line:rgba(35,42,36,.14);

  --display:"Petrona",Georgia,serif;
  --incise:"Petrona",Georgia,serif;
  --body:"Karla",system-ui,-apple-system,sans-serif;

  --wrap:1080px;
  --gap:clamp(3.5rem,8vw,7rem);
  --r:2px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--slate);
  font-family:var(--body);
  font-size:clamp(1rem,.96rem + .2vw,1.0625rem);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(1.25rem,5vw,2.5rem)}

/* ---------- type ---------- */
h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.12;letter-spacing:-.01em;margin:0}
h1{font-size:clamp(2rem,1.35rem + 3.1vw,4.15rem)}
h2{font-size:clamp(1.85rem,1.35rem + 2.2vw,2.9rem)}
h3{font-size:1.2rem;line-height:1.3}
p{margin:0 0 1.1em}
p:last-child{margin-bottom:0}

.eyebrow{
  font-family:var(--incise);
  font-size:.74rem;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--moss);
  margin:0 0 1.4rem;
  display:flex;
  align-items:center;
  gap:.9rem;
}
.eyebrow::after{content:"";flex:1;height:1px;background:var(--line)}

.lede-gap{margin-top:1rem}
.lede-gap-b{margin-bottom:1.4rem}
.lede{font-size:clamp(1.08rem,1rem + .45vw,1.3rem);color:var(--slate-60);max-width:56ch}

/* ---------- shell ---------- */
.site-head{
  position:sticky;top:0;z-index:50;
  background:var(--paper);
  border-bottom:1px solid var(--line);
}
.site-head .wrap{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:1rem;min-height:72px;
  padding-block:.65rem;
}
.site-head .wordmark{
  justify-self:center;
  text-align:center;
}

.site-head .head-actions{
  justify-self:end;
}

.wordmark{
  display:block;
  padding-block:.45rem;
  font-family:var(--incise);
  font-weight:600;
  font-size:clamp(.8rem,.62rem + .7vw,.94rem);
  letter-spacing:.16em;
  text-transform:uppercase;
  text-decoration:none;
  line-height:1.25;
}

.wordmark span{
  display:block;
  font-family:var(--body);
  font-size:.66rem;
  letter-spacing:.18em;
  color:var(--slate-40);
  font-weight:500;
  margin-top:.2rem;
}

/* Image logo */
.wordmark-logo{
  display:block;
  padding:0;
  text-decoration:none;
}

.wordmark-logo img{
  display:block;
  width:clamp(168px,20vw,240px);
  height:auto;
  aspect-ratio:820/233;
}

.head-actions{
  display:flex;
  align-items:center;
  gap:1.4rem;
}
.head-actions .btn{flex:none;white-space:nowrap}

/* Call button — carries .btn .btn-ghost so size, padding, border, type and
   hover are identical to Enquire. This only adds the icon layout.
   .head-actions prefix needed: .btn also sets display, and wins on a tie. */
.head-actions .head-call{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
}
.head-actions .head-call svg{width:1.05em;height:1.05em;flex:none}

/* both header buttons share a width so the pair reads as a set */
.head-actions .btn{min-width:7.2rem}

/* An icon-only button reads as an empty box at phone size, so below the
   quickbar breakpoint the header drops Call entirely — the sticky bar
   carries WhatsApp and Call there instead. */
@media(max-width:899px){
  .site-head .head-actions .head-call{display:none}
  /* centre the logo between the menu and the button rather than in the
     viewport, so the gaps either side of it are even */
  .site-head .wrap{grid-template-columns:auto 1fr auto}
  /* Call is gone, so Enquire has nothing to match widths with. Keeping the
     shared min-width here left it a wide box with the label stuck to one
     side. It sizes to its own label instead. */
  .site-head .head-actions .btn{min-width:0}
}

@media(max-width:559px){
  .head-actions{gap:.6rem}
  .site-head .wrap{gap:.6rem}
  .wordmark-logo img{
    /* min-width stops the grid squeezing it on narrow phones */
    width:clamp(120px,42vw,172px);
    min-width:120px;
  }
}

.btn{
  display:inline-block;
  font-family:var(--body);font-size:.9rem;font-weight:600;letter-spacing:.04em;
  padding:.78em 1.5em;border-radius:var(--r);border:1px solid var(--ivy);
  background:var(--ivy);color:var(--paper);text-decoration:none;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,opacity .18s ease;
}
.btn:hover,
.btn:focus-visible{background:#2E3B2A;border-color:#2E3B2A}
.btn:disabled{opacity:.45;pointer-events:none}
.btn-ghost{background:transparent;color:var(--ivy)}
.btn-ghost:hover,
.btn-ghost:focus-visible{background:var(--ivy);color:var(--paper)}

section{padding-block:var(--gap);scroll-margin-top:104px}
@media(max-width:899px){section{scroll-margin-top:84px}}
main{scroll-margin-top:0}
.rule{border:0;border-top:1px solid var(--line);margin:0}

/* ---------- hero ---------- */
.hero{padding-top:clamp(3rem,7vw,5.5rem);padding-bottom:clamp(3rem,7vw,5rem)}
.hero-grid{display:grid;gap:clamp(2.5rem,5vw,4rem);grid-template-columns:1fr}
@media(min-width:900px){.hero-grid{grid-template-columns:1.02fr .98fr;align-items:start}}
.hero h1{margin-bottom:1.4rem;text-wrap:balance}
.hero h1 em{font-style:italic;color:var(--ivy)}
.hero-cta{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.8rem}
@media(max-width:559px){
  .hero-cta{display:grid;grid-template-columns:1fr}
  .hero-cta .btn{text-align:center}
}
/* Keep both hero actions calm until the visitor interacts with them. */
.hero-cta .btn{
  background:transparent;
  color:var(--ivy);
  border-color:var(--ivy);
}
.hero-cta .btn:hover,
.hero-cta .btn:focus-visible{
  background:var(--ivy);
  color:var(--paper);
  border-color:var(--ivy);
}
.hero-note{margin-top:1.6rem;font-size:.85rem;color:var(--slate-40);letter-spacing:.02em}

/* ---------- before / after ---------- */
.reveal{
  --pos:50%;
  position:relative;border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;background:var(--paper-2);aspect-ratio:4/3;
  touch-action:none;
}
.reveal-layer{position:absolute;inset:0}
.reveal-layer svg{width:100%;height:100%;display:block}
.reveal-after{clip-path:inset(0 0 0 var(--pos,50%))}
.reveal-handle{
  position:absolute;top:0;bottom:0;left:var(--pos,50%);width:1px;
  background:var(--paper);box-shadow:0 0 0 1px rgba(35,42,36,.25);
  pointer-events:none;
}
.reveal-knob{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:38px;height:38px;border-radius:50%;
  background:var(--paper);border:1px solid var(--line);
  display:grid;place-items:center;
  box-shadow:0 2px 10px rgba(35,42,36,.18);
}
.reveal-knob svg{width:16px;height:16px}
.reveal input[type=range]{
  position:absolute;inset:0;width:100%;height:100%;
  margin:0;opacity:0;cursor:ew-resize;
}
.reveal input[type=range]:focus-visible{
  opacity:0;
  outline:0;
}
.reveal:focus-within{
  outline:2px solid var(--penny);
  outline-offset:3px;
}
.reveal-tag{
  transition:opacity .18s ease;
  position:absolute;bottom:.85rem;font-family:var(--incise);
  font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--slate-60);background:color-mix(in srgb,var(--paper) 82%,transparent);
  padding:.35rem .7rem;border-radius:var(--r);pointer-events:none;
}
.reveal-tag.is-gone{opacity:0}
.reveal-tag.is-before{left:.85rem}
.reveal-tag.is-after{right:.85rem}
.reveal-cap{margin-top:.9rem;font-size:.82rem;color:var(--slate-40)}

/* ---------- promise band ---------- */
.promise{background:var(--ivy);color:var(--paper-2);padding-block:clamp(2rem,4vw,3rem)}
.promise .grid{display:grid;gap:0;grid-template-columns:1fr}
@media(min-width:700px){.promise .grid{grid-template-columns:repeat(4,1fr)}}
.promise-item{padding:clamp(1.6rem,3vw,2.2rem) 0;border-top:1px solid rgba(234,235,229,.2)}
@media(min-width:700px){
  .promise-item{border-top:0;border-left:1px solid rgba(234,235,229,.2);padding-inline:clamp(1rem,2.2vw,1.8rem)}
  .promise-item:first-child{border-left:0;padding-left:0}
  .promise-item:last-child{padding-right:0}
}
.promise-item h3{font-family:var(--display);font-size:1.05rem;color:#fff;margin-bottom:.4rem}
.promise-item p{font-size:.9rem;color:rgba(234,235,229,.72);line-height:1.55}


/* ---------- skip link ---------- */
.skip{
  position:absolute;left:.75rem;top:-4rem;z-index:100;
  background:var(--ivy);color:var(--paper);text-decoration:none;
  padding:.7rem 1.1rem;border-radius:var(--r);font-size:.85rem;
  transition:top .18s ease;
}
.skip:focus{top:.75rem}

/* ---------- header menu ---------- */

.nav-toggle{
  display:flex;align-items:center;gap:.65rem;cursor:pointer;
  background:transparent;border:0;padding:.75rem .5rem .75rem 0;
  margin-left:-.15rem;justify-self:start;min-height:44px;
  color:var(--slate);font-family:var(--body);
}
/* hidden visually but kept as the button's accessible name */
@media(max-width:559px){
  .nav-label{
    position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;
  }
}
.nav-bars{display:grid;gap:4px;width:18px}
.nav-bars i{
  display:block;height:1.5px;background:currentColor;border-radius:1px;
  transition:transform .22s ease,opacity .18s ease;
}
.nav-bars i:nth-child(2){width:12px}
.nav-label{
  font-family:var(--incise);font-size:.72rem;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;
}
.site-head.is-open .nav-bars i:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.site-head.is-open .nav-bars i:nth-child(2){opacity:0}
.site-head.is-open .nav-bars i:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
.nav-toggle:hover,
.nav-toggle:focus-visible{color:var(--ivy)}

.nav-panel{border-top:1px solid var(--line);background:var(--paper)}
.nav-panel[hidden]{display:none}
.nav-panel ul{
  list-style:none;margin:0;padding:.35rem 0 .9rem;
  display:grid;gap:0;
}
@media(min-width:700px){
  .nav-panel ul{grid-template-columns:repeat(4,1fr);column-gap:1rem;padding-block:1.1rem}
}
.nav-panel a{
  display:block;padding:.52rem 0;text-decoration:none;color:var(--slate-60);
  font-family:var(--incise);font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  border-bottom:1px solid transparent;
  transition:color .16s ease,border-color .16s ease;
}
.nav-panel a:hover,
.nav-panel a:focus-visible{color:var(--ivy);border-bottom-color:var(--line)}
.nav-panel a.is-active{color:var(--penny-text)}

@media(max-width:559px){
  .site-head .btn{padding:.7em 1em;font-size:.82rem;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  .site-head .wrap{gap:.6rem;min-height:64px}
}
/* narrowest phones: Enquire drops out, since the hero CTA sits just below
   and the sticky bar carries it on scroll. Call stays — it is the action
   most people want. */

@media(prefers-reduced-motion:reduce){.nav-bars i{transition:none}}

/* ---------- standing commitments ---------- */
.pledge{padding-block:clamp(2.6rem,5vw,3.6rem);background:var(--paper-2);border-bottom:1px solid var(--line)}
.pledge ul{list-style:none;margin:0;padding:0;display:grid;gap:clamp(1.6rem,3.5vw,3rem)}
@media(min-width:800px){.pledge ul{grid-template-columns:1fr 1fr}}
.pledge li{display:grid;gap:.5rem}
.pledge h3{
  font-family:var(--incise);font-size:.75rem;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ivy);
}
.pledge p{font-size:.94rem;color:var(--slate-60);line-height:1.6;max-width:52ch}

/* ---------- generic two-col ---------- */
.split{display:grid;gap:clamp(2rem,5vw,4.5rem);grid-template-columns:1fr}
@media(min-width:860px){.split{grid-template-columns:.85fr 1.15fr}}
.split-head h2{margin-bottom:1rem}

/* ---------- included list ---------- */
.included{display:grid;gap:0;grid-template-columns:1fr}
@media(min-width:600px){.included{grid-template-columns:1fr 1fr;column-gap:clamp(2rem,4vw,3.5rem)}}
.included li{
  list-style:none;padding:.95rem 0;border-bottom:1px solid var(--line);
  display:flex;gap:.85rem;align-items:baseline;font-size:.97rem;
}
.included ul{margin:0;padding:0}
.included li::before{
  content:"";width:5px;height:5px;flex:none;border-radius:50%;
  background:var(--moss);transform:translateY(-3px);
}

/* in-prose links through to the coverage section */
.area-link{
  color:inherit;text-decoration:underline;
  text-underline-offset:.18em;text-decoration-thickness:1px;
  text-decoration-color:var(--line);
  transition:color .18s ease,text-decoration-color .18s ease;
}
.area-link:hover,
.area-link:focus-visible{color:var(--ivy);text-decoration-color:currentColor}

/* ---------- coverage checker ---------- */
.visually-hidden{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.covers-check{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem;max-width:26rem;align-items:stretch}
.covers-check .btn{flex:0 0 auto}
.covers-check:has(.btn[aria-busy="true"]){cursor:progress}
.covers-check input{
  flex:1 1 11rem;min-width:0;
  font-family:var(--body);font-size:1rem;color:var(--slate);
  background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r);
  padding:.72rem .9rem;text-transform:uppercase;
}
.covers-check input::placeholder{color:var(--slate-40);text-transform:none}
.covers-check input:focus{
  border-color:var(--ivy);
  background:var(--paper);
}
.covers-check input:focus-visible{
  outline:2px solid var(--penny);
  outline-offset:3px;
}
.covers-result{margin-top:1.1rem;font-size:.97rem;min-height:1.5em}
.covers-result.is-yes{color:var(--ivy)}
.covers-result.is-maybe{color:var(--penny-text)}
.covers-list{margin-top:1.6rem;font-size:.86rem;color:var(--slate-40)}
.coverage-directory{margin-top:2.6rem}
.coverage-directory>h3{font-size:1.25rem;margin-bottom:.45rem}
.coverage-directory>p{color:var(--slate-60);font-size:.92rem;max-width:68ch}
.coverage-regions{columns:1;column-gap:1rem;margin-top:1.5rem}
@media(min-width:760px){.coverage-regions{columns:2}}
.coverage-region{
  break-inside:avoid;margin-bottom:1rem;
  border:1px solid var(--line);border-radius:var(--r);background:var(--paper-2);
  padding:1.25rem;
}
.coverage-region h4{font-size:1rem;color:var(--ivy);margin-bottom:.8rem}
.coverage-group+.coverage-group{margin-top:1.1rem;padding-top:1.1rem;border-top:1px solid var(--line)}
.coverage-group h5{
  font-family:var(--incise);font-size:.72rem;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;color:var(--penny-text);margin-bottom:.55rem;
}
.coverage-group ul{margin:0;padding-left:1.15rem}
.coverage-group li{margin:.3rem 0;color:var(--slate-60);font-size:.9rem;line-height:1.45}
.coverage-note{margin-top:.7rem;color:var(--slate-40);font-size:.84rem;line-height:1.5}

/* ---------- pricing ---------- */
.plans{display:grid;gap:1.25rem;grid-template-columns:1fr;margin-top:3rem}
@media(min-width:820px){.plans{grid-template-columns:repeat(3,1fr)}}
.plan{
  border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(1.6rem,3vw,2.1rem);background:var(--paper-2);
  display:flex;flex-direction:column;
}
.plan.is-lead{background:var(--paper-3);border-color:rgba(35,42,36,.3)}
.plan-tag{
  font-family:var(--incise);font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--moss);margin-bottom:1.1rem;display:block;
}
.plan.is-lead .plan-tag{color:var(--ivy)}
.plan h3{margin-bottom:.55rem}
.plan-price{font-family:var(--display);font-size:2.1rem;line-height:1;margin:1.2rem 0 .35rem}
.plan-price small{font-family:var(--body);font-size:.8rem;font-weight:500;color:var(--slate-40);letter-spacing:.03em}
.plan-when{font-size:.85rem;color:var(--slate-40);margin-bottom:1.3rem}
.plan p{font-size:.93rem;color:var(--slate-60)}
.plan-foot{margin-top:auto;padding-top:1.4rem;font-size:.85rem;color:var(--slate-40);border-top:1px solid var(--line)}
.plans-note{margin-top:2rem;font-size:.87rem;color:var(--slate-40);max-width:62ch}

/* ---------- steps ---------- */
.steps{counter-reset:s;display:grid;gap:0;grid-template-columns:1fr;margin-top:2.5rem}
@media(min-width:760px){.steps{grid-template-columns:repeat(4,1fr);gap:clamp(1.5rem,3vw,2.5rem)}}
.step{counter-increment:s;padding:1.6rem 0;border-top:1px solid var(--line)}
.step::before{
  content:counter(s,decimal-leading-zero);
  font-family:var(--incise);font-size:.75rem;font-weight:700;letter-spacing:.12em;
  color:var(--penny-text);display:block;margin-bottom:.9rem;
}
.step h3{font-size:1.05rem;margin-bottom:.45rem}
.step p{font-size:.9rem;color:var(--slate-60)}

/* ---------- about ---------- */
.about{
  background:var(--paper-2);
  height:auto;
  min-height:0;
}

.about .split{
  align-items:start;
}

.about .wrap{
  height:auto;
}
.about-photo{
  aspect-ratio:4/5;border:1px solid var(--line);border-radius:var(--r);
  background:var(--paper-3);display:grid;place-items:center;text-align:center;
  padding:2rem;color:var(--slate-40);font-size:.82rem;letter-spacing:.02em;
  overflow:hidden;
}
/* when a real photo is dropped in, it fills the same frame */
.about-photo:has(img){padding:0}
.about-photo img{
  width:100%;height:100%;
  object-fit:cover;object-position:center 30%;
  display:block;
}
.pull{
  font-family:var(--display);font-style:italic;font-size:clamp(1.25rem,1.05rem + .9vw,1.7rem);
  line-height:1.4;color:var(--ivy);border-left:2px solid var(--penny);
  padding-left:1.4rem;margin:2rem 0 0;
}

/* ---------- reviews ---------- */

#reviews{
  position:relative;
  clear:both;
}

.reviews{
  display:grid;
  grid-template-columns:1fr;
  gap:1rem;
  margin-top:2.5rem;
  max-width:760px;
}

.review{
  margin:0;
  padding:1.5rem 0;
  border-top:1px solid var(--line);
}

.review blockquote{
  margin:0;
}

.review blockquote p{
  font-family:var(--display);
  font-size:1.06rem;
  line-height:1.5;
  color:var(--slate);
  max-width:65ch;
}

.review blockquote p::before{
  content:"\201C";
}

.review blockquote p::after{
  content:"\201D";
}

.review figcaption{
  margin-top:1rem;
  font-family:var(--incise);
  font-size:.66rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ivy);
}

.review figcaption span{
  display:block;
  margin-top:.3rem;
  color:var(--slate-40);
  letter-spacing:.14em;
}

/* Google + Trustpilot links */
.reviews-link{
  margin-top:2.2rem;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.35rem;
  font-size:.88rem;
}

.reviews-link a{
  color:var(--ivy);
  display:inline-flex;
  align-items:center;
  min-height:40px;
  text-underline-offset:3px;
  transition:color .18s ease;
}

.reviews-link a:hover,
.reviews-link a:focus-visible{
  color:var(--penny-text);
}

/* ---------- dates ---------- */
.dates{display:grid;gap:0;grid-template-columns:1fr;margin-top:2.5rem}
@media(min-width:700px){.dates{grid-template-columns:1fr 1fr;column-gap:clamp(2rem,4vw,3.5rem)}}
.date-row{display:flex;gap:1.2rem;padding:1.05rem 0;border-bottom:1px solid var(--line);align-items:baseline}
.date-when{font-family:var(--incise);font-size:.68rem;letter-spacing:.14em;color:var(--penny-text);flex:none;width:5.5rem;text-transform:uppercase}
.date-what{font-size:.95rem}
.date-what small{display:block;color:var(--slate-40);font-size:.83rem;margin-top:.15rem}

/* ---------- faq ---------- */
.faq{max-width:none}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  cursor:pointer;list-style:none;padding:1.25rem 2.5rem 1.25rem 0;position:relative;
  font-family:var(--display);font-size:1.1rem;line-height:1.35;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"";position:absolute;right:.4rem;top:1.65rem;
  width:9px;height:9px;border-right:1px solid var(--slate-60);border-bottom:1px solid var(--slate-60);
  transform:rotate(45deg);transition:transform .2s ease;
}
.faq summary:hover,
.faq summary:focus-visible{color:var(--ivy)}
.faq details[open] summary::after{transform:rotate(225deg)}
.faq .answer{padding:0 0 1.5rem;max-width:68ch;color:var(--slate-60);font-size:.97rem}

/* ---------- contact ---------- */
.contact{background:var(--ivy);color:var(--paper)}
.contact h2{color:#fff}
.contact .lede{color:rgba(234,235,229,.75)}
.contact .eyebrow{color:rgba(234,235,229,.72)}
.contact .eyebrow::after{background:rgba(234,235,229,.25)}

.hours{
  margin:1.6rem 0 0;display:grid;grid-template-columns:max-content 1fr;
  column-gap:1.6rem;row-gap:.1rem;max-width:24rem;
}
.hours dt{
  /* stretch so the underline lands on the row baseline even when the
     value beside it wraps to two lines */
  display:flex;align-items:center;
  border-bottom:1px solid rgba(234,235,229,.14);
  font-family:var(--incise);font-size:.64rem;letter-spacing:.15em;text-transform:uppercase;
  color:rgba(234,235,229,.72);padding-block:.5rem;
}
.hours dd{
  margin:0;font-family:var(--display);font-size:1.02rem;color:var(--paper);
  padding-block:.5rem;border-bottom:1px solid rgba(234,235,229,.14);
}
.hours-note{margin-top:1rem;font-size:.84rem;color:rgba(234,235,229,.72);max-width:44ch;line-height:1.55}
.reply-note{
  margin-top:1.2rem;padding:.85rem 1rem;
  border-left:2px solid var(--penny);border-radius:0 var(--r) var(--r) 0;
  background:rgba(234,235,229,.06);
  font-size:.88rem;color:rgba(234,235,229,.82);max-width:46ch;line-height:1.55;
}
.reply-note strong{color:var(--paper);font-weight:600}

.contact-hint{margin-top:1.4rem;font-size:.92rem;color:rgba(234,235,229,.72);max-width:46ch}
.actions{display:grid;gap:.85rem;align-content:start}
.action{
  display:flex;
  gap:1.1rem;
  align-items:center;
  padding:1.15rem 1.3rem;
  border:1px solid rgba(234,235,229,.28);
  border-radius:var(--r);
  text-decoration:none;
  color:var(--paper);
  transition:background .18s ease,border-color .18s ease,color .18s ease;
}

.action:hover,
.action:focus-visible{
  background:var(--paper);
  color:var(--ivy);
  border-color:var(--paper);
}

.action-icon{
  flex:none;
  width:26px;
  height:26px;
  display:grid;
  place-items:center;
}

.action-icon svg{
  width:100%;
  height:100%;
}

.action-text{
  display:grid;
  gap:.15rem;
  min-width:0;
}

.action-text strong{
  font-family:var(--display);
  font-weight:500;
  font-size:1.12rem;
  line-height:1.25;
  overflow-wrap:anywhere;
}

.action-text small{
  font-size:.83rem;
  color:rgba(234,235,229,.72);
  line-height:1.4;
}

.action:hover .action-text small,
.action:focus-visible .action-text small{
  color:rgba(59,76,54,.85);
}

.actions-note{
  margin-top:.9rem;
  font-size:.8rem;
  color:rgba(234,235,229,.72);
  line-height:1.5;
}

.actions-note a{
  color:inherit;
  text-underline-offset:3px;
}

.actions-note a:hover,
.actions-note a:focus-visible{
  color:var(--paper);
}

/* ---------- sticky mobile contact bar ---------- */
/* The bar only ever renders below 900px, and below 900px the header has no
   Call button — so it is up from the first paint rather than revealed on
   scroll. No JavaScript is involved. */
.quickbar{display:none}
@media(max-width:899px){
  .quickbar{
    display:grid;grid-template-columns:1fr 1fr;gap:1px;
    position:fixed;left:0;right:0;bottom:0;z-index:55;
    background:var(--line);
    border-top:1px solid var(--line);
    padding-bottom:env(safe-area-inset-bottom);
  }
  .quickbar-btn{
    display:flex;align-items:center;justify-content:center;gap:.55rem;
    padding:.95rem .5rem;text-decoration:none;
    background:var(--paper);color:var(--ivy);
    font-family:var(--body);font-size:.92rem;font-weight:600;letter-spacing:.03em;
    transition:background .18s ease,color .18s ease;
  }
  .quickbar-btn svg{width:19px;height:19px;flex:none}
  .quickbar-btn:hover,
  .quickbar-btn:focus-visible{background:var(--ivy);color:var(--paper)}
  body:has(.quickbar) .site-foot{padding-bottom:calc(8.2rem + env(safe-area-inset-bottom))}
}

/* ---------- legal pages ---------- */
.legal .wrap{max-width:44rem}
.legal h1{margin-bottom:1.2rem}
.legal h2{
  font-size:1.15rem;margin-top:2.6rem;margin-bottom:.6rem;
  font-family:var(--display);
}
.legal p{color:var(--slate-60);max-width:66ch}
.legal .lede{margin-bottom:.5rem}
.legal a{color:var(--ivy)}

/* ---------- footer ---------- */
.site-foot{padding-block:3rem;font-size:.83rem;color:var(--slate-40)}
.site-foot .wrap{display:block}
.foot-top{display:grid;gap:1rem 3rem;grid-template-columns:1fr}
@media(min-width:760px){.foot-top{grid-template-columns:1fr 1fr}}
.foot-bottom{
  margin-top:2.2rem;padding-top:1.2rem;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;align-items:center;gap:.2rem 2rem;
}
.site-foot p{margin:0;max-width:44ch}
.site-foot .wrap a{color:var(--ivy);display:inline-flex;align-items:center;min-height:44px}
.site-foot .wrap .area-link{display:inline;min-height:0}
.social{display:flex;gap:1.4rem;align-items:center}
.social a{
  display:inline-flex;align-items:center;gap:.45rem;min-height:44px;text-decoration:none;color:var(--slate-60);
  font-family:var(--incise);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;
  transition:color .16s ease;
}
.social a:hover,
.social a:focus-visible{color:var(--ivy)}
.social svg{width:17px;height:17px;flex:none}

.to-top{
  position:fixed;
  right:clamp(1rem,3vw,1.5rem);
  bottom:1.25rem;
  z-index:60;
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:44px;padding:.7rem 1.05rem;
  background:var(--ivy);color:var(--paper);
  border:1px solid var(--ivy);border-radius:var(--r);
  box-shadow:0 8px 24px rgba(35,42,36,.18);
  font-family:var(--incise);font-size:.64rem;letter-spacing:.14em;
  text-transform:uppercase;text-decoration:none;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(12px);
  transition:opacity .2s ease,transform .2s ease,visibility .2s ease,background .18s ease,color .18s ease;
}
.to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:none}
.to-top::before{
  content:"";width:7px;height:7px;
  border-left:1px solid currentColor;border-top:1px solid currentColor;
  transform:rotate(45deg) translate(1px,1px);
}
.to-top:hover,
.to-top:focus-visible{
  background:#2E3B2A;
  color:var(--paper);
  border-color:#2E3B2A;
}

/* Phones already have the contact bar pinned to the bottom. A second
   floating button there sat over the footer links, so below 900px it leaves
   the fixed layer and sits at the end of the footer instead, aligned with
   the footer's own gutter. */
@media(max-width:899px){
  .to-top{
    position:static;
    opacity:1;visibility:visible;pointer-events:auto;transform:none;
    box-shadow:none;
  }
  /* index.html has it as a direct child of the footer, outside .wrap, so it
     needs its own gutter. On privacy.html it already sits inside .wrap. */
  .site-foot > .to-top{margin:2rem clamp(1.25rem,5vw,2.5rem) 0}
}
@media(prefers-reduced-motion:reduce){
  .to-top{transition:none;transform:none}
}

/* ---------- motion ---------- */
.rise{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.rise.is-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
  .rise{opacity:1;transform:none}
}
:focus-visible{outline:2px solid var(--penny-text);outline-offset:3px}
.contact :focus-visible,
.quickbar :focus-visible,
.promise :focus-visible{outline-color:var(--paper)}