/* =========================================================================
   Carpentry By Allen — Martha's Vineyard coastal-craftsman theme
   ========================================================================= */

:root{
  /* Brand + coastal palette */
  --green:        #234d30;   /* logo forest green */
  --green-deep:   #17331f;
  --green-soft:   #3a6b48;
  --sea:          #3f6f8a;   /* harbor blue */
  --sea-light:    #6f9cb4;
  --sand:         #f4eee1;   /* warm paper / sand */
  --sand-deep:    #e9e0cd;
  --shingle:      #8d8b82;   /* weathered cedar gray */
  --brass:        #b58a4b;   /* warm accent */
  --ink:          #26302b;
  --ink-soft:     #56605a;
  --paper:        #ffffff;
  --paper-warm:   #faf7f0;
  --line:         #e6ddcb;

  --maxw: 1180px;
  --gap: clamp(1rem, 3vw, 2.25rem);
  --radius: 14px;
  --radius-lg: 22px;
  --shadow-sm: 0 2px 10px rgba(30,40,32,.06);
  --shadow:    0 14px 40px rgba(28,45,34,.12);
  --shadow-lg: 0 30px 70px rgba(20,40,28,.22);

  --serif: "Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
  --sans:  system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper-warm);
  line-height:1.65;
  font-size:clamp(16px,1.05vw,17.5px);
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:var(--green); text-decoration:none; }
h1,h2,h3,h4{ font-family:var(--serif); font-weight:600; line-height:1.12; color:var(--green-deep); letter-spacing:-.01em; }
p{ margin:0 0 1rem; }

.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:clamp(1.1rem,4vw,2.2rem); }

.skip{ position:absolute; left:-999px; top:0; background:var(--green); color:#fff; padding:.6rem 1rem; z-index:200; border-radius:0 0 8px 0; }
.skip:focus{ left:0; }

/* ── Buttons ─────────────────────────────────────────────────────────────── */
.btn{
  --btn-bg:var(--green); --btn-fg:#fff;
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  font-family:var(--sans); font-weight:600; font-size:.98rem; letter-spacing:.01em;
  padding:.85rem 1.6rem; border-radius:999px; border:1.5px solid transparent;
  cursor:pointer; transition:transform .25s var(--ease), box-shadow .25s var(--ease), background .2s, color .2s, border-color .2s;
  background:var(--btn-bg); color:var(--btn-fg); white-space:nowrap;
}
.btn:hover{ transform:translateY(-2px); box-shadow:0 12px 26px rgba(28,45,34,.25); }
.btn:active{ transform:translateY(0); }
.btn--primary{ --btn-bg:var(--green); }
.btn--primary:hover{ background:var(--green-soft); }
.btn--outline{ background:transparent; color:var(--green); border-color:var(--green); }
.btn--outline:hover{ background:var(--green); color:#fff; }
.btn--ghost{ background:rgba(255,255,255,.12); color:#fff; border-color:rgba(255,255,255,.6); backdrop-filter:blur(4px); }
.btn--ghost:hover{ background:#fff; color:var(--green-deep); border-color:#fff; }
.btn--block{ width:100%; }

.eyebrow{ font-family:var(--sans); text-transform:uppercase; letter-spacing:.22em; font-size:.74rem; font-weight:700; color:var(--brass); margin:0 0 .7rem; }

/* ── Header / nav ────────────────────────────────────────────────────────── */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(250,247,240,.82);
  backdrop-filter:saturate(140%) blur(12px);
  border-bottom:1px solid transparent;
  transition:box-shadow .3s var(--ease), background .3s, border-color .3s;
}
.site-header.is-scrolled{ box-shadow:var(--shadow-sm); border-bottom-color:var(--line); background:rgba(250,247,240,.94); }
.header__inner{ display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-block:.7rem; }
.brand__logo{ height:clamp(34px,4.4vw,46px); width:auto; transition:transform .3s var(--ease); }
.brand:hover .brand__logo{ transform:scale(1.02); }

.nav{ display:flex; align-items:center; }
.nav__menu{ display:flex; align-items:center; gap:clamp(1rem,2.2vw,2rem); }
.nav__link{
  font-family:var(--sans); font-weight:600; font-size:.96rem; color:var(--ink);
  position:relative; padding:.35rem 0; transition:color .2s;
}
.nav__link::after{
  content:""; position:absolute; left:0; right:100%; bottom:-2px; height:2px;
  background:var(--brass); transition:right .3s var(--ease);
}
.nav__link:hover{ color:var(--green); }
.nav__link:hover::after,.nav__link.is-active::after{ right:0; }
.nav__link.is-active{ color:var(--green); }
.nav__cta{
  font-weight:700; color:var(--green); border:1.5px solid var(--green);
  padding:.45rem 1rem; border-radius:999px; font-size:.92rem; transition:all .2s var(--ease);
}
.nav__cta:hover{ background:var(--green); color:#fff; transform:translateY(-1px); }

.nav__toggle{ display:none; flex-direction:column; gap:5px; background:none; border:0; cursor:pointer; padding:.4rem; }
.nav__toggle span{ width:26px; height:2.5px; background:var(--green-deep); border-radius:2px; transition:transform .3s var(--ease), opacity .2s; }
.nav__toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7.5px) rotate(45deg); }
.nav__toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.nav__toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7.5px) rotate(-45deg); }

/* ── Hero ────────────────────────────────────────────────────────────────── */
.hero{ position:relative; min-height:min(88vh,760px); display:flex; align-items:center; overflow:hidden; }
.hero__bg{
  position:absolute; inset:0; background-size:cover; background-position:right center;
  transform:scale(1.08); transform-origin:right center;
  animation:kenburns 22s ease-in-out infinite alternate; will-change:transform;
}
@keyframes kenburns{ from{ transform:scale(1.08);} to{ transform:scale(1.16);} }
.hero__scrim{
  position:absolute; inset:0;
  background:linear-gradient(105deg, rgba(23,51,31,.82) 0%, rgba(23,51,31,.55) 42%, rgba(23,51,31,.12) 78%, rgba(23,51,31,0) 100%),
             linear-gradient(0deg, rgba(20,40,28,.45), rgba(20,40,28,0) 40%);
}
.hero__inner{ position:relative; padding-block:clamp(3rem,9vw,6rem); max-width:760px; }
.hero__eyebrow{ color:#e8d9b6; text-transform:uppercase; letter-spacing:.24em; font-size:.78rem; font-weight:700; margin:0 0 1rem; }
.hero__title{ color:#fff; font-size:clamp(2.4rem,6vw,4.4rem); margin:0 0 1.1rem; text-shadow:0 2px 24px rgba(0,0,0,.28); }
.hero__sub{ color:rgba(255,255,255,.94); font-size:clamp(1.05rem,1.7vw,1.32rem); max-width:34em; margin:0 0 2rem; text-shadow:0 1px 12px rgba(0,0,0,.25); }
.hero__actions{ display:flex; flex-wrap:wrap; gap:.9rem; }
.hero__scroll{ position:absolute; left:50%; bottom:1.6rem; translate:-50% 0; width:26px; height:42px; border:2px solid rgba(255,255,255,.7); border-radius:14px; }
.hero__scroll span{ position:absolute; left:50%; top:8px; translate:-50% 0; width:4px; height:8px; background:#fff; border-radius:2px; animation:scrolldot 1.7s ease-in-out infinite; }
@keyframes scrolldot{ 0%{opacity:0; top:8px;} 40%{opacity:1;} 80%{opacity:0; top:22px;} 100%{opacity:0;} }

/* ── Trust strip ─────────────────────────────────────────────────────────── */
.trust{ background:var(--green); color:#fff; }
.trust__inner{ display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; padding-block:1.5rem; }
.trust__item{ text-align:center; padding:.4rem; position:relative; }
.trust__item + .trust__item::before{ content:""; position:absolute; left:0; top:15%; height:70%; width:1px; background:rgba(255,255,255,.18); }
.trust__item strong{ display:block; font-family:var(--serif); font-size:1.28rem; letter-spacing:.01em; }
.trust__item span{ font-size:.82rem; color:rgba(255,255,255,.78); letter-spacing:.02em; }

/* ── Sections ────────────────────────────────────────────────────────────── */
.section{ padding-block:clamp(3.5rem,8vw,6.5rem); }
.section__head{ max-width:720px; margin:0 auto clamp(2rem,4vw,3.2rem); text-align:center; }
.section__title{ font-size:clamp(1.9rem,3.6vw,2.9rem); margin:0 0 .8rem; }
.section__lead{ color:var(--ink-soft); font-size:1.1rem; margin:0; }
.section__cta{ display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; margin-top:clamp(2rem,4vw,3rem); }

/* 404 */
.notfound{ text-align:center; min-height:56vh; display:flex; align-items:center; }
.notfound .section__lead{ margin-inline:auto; max-width:38em; }

.services-section{ background:
  linear-gradient(var(--paper-warm),var(--paper-warm)); }
.featured-section{ background:var(--paper); }

/* Services grid */
.services-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1rem,2vw,1.6rem); }
.service{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--radius);
  padding:2rem 1.6rem; text-align:center; box-shadow:var(--shadow-sm);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s;
}
.service:hover{ transform:translateY(-6px); box-shadow:var(--shadow); border-color:var(--sand-deep); }
.service__icon{ width:64px; height:64px; object-fit:contain; margin:0 auto 1rem; transition:transform .35s var(--ease); }
.service:hover .service__icon{ transform:scale(1.08) rotate(-2deg); }
.service__name{ font-size:1.22rem; margin:0 0 .5rem; }
.service__blurb{ color:var(--ink-soft); font-size:.96rem; margin:0; }

/* Featured tiles */
.featured-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(.7rem,1.4vw,1.1rem); }
.tile{ position:relative; overflow:hidden; border-radius:var(--radius); aspect-ratio:4/3; box-shadow:var(--shadow-sm); }
.tile img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.tile:hover img{ transform:scale(1.08); }
.tile::after{ content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(20,40,28,.75), rgba(20,40,28,0) 55%); }
.tile__label{ position:absolute; left:1rem; bottom:.85rem; right:1rem; z-index:2; color:#fff; font-family:var(--serif); font-size:1.05rem; text-shadow:0 1px 8px rgba(0,0,0,.4); transform:translateY(4px); opacity:.95; transition:transform .35s var(--ease); }
.tile:hover .tile__label{ transform:translateY(0); }

/* About */
.about-section{ background:var(--paper); position:relative; }
.about__grid{ display:grid; grid-template-columns:0.9fr 1.1fr; gap:clamp(1.6rem,4vw,3.5rem); align-items:center; }
.about__media{ position:relative; }
.about__media img{ width:100%; border-radius:var(--radius-lg); box-shadow:var(--shadow); aspect-ratio:4/3; object-fit:cover; }
.about__media::before{ content:""; position:absolute; inset:14px -14px -14px 14px; border:2px solid var(--brass); border-radius:var(--radius-lg); z-index:-1; opacity:.5; }
.about__body .section__title{ margin-top:.3rem; }
.about__body p{ color:var(--ink-soft); }
.about__body .btn{ margin-top:.6rem; }

/* Testimonials */
.quotes-section{ background:linear-gradient(180deg,var(--sand) 0%, var(--paper-warm) 100%); }
.quotes-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1rem,2vw,1.6rem); }
.quote{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--radius);
  padding:2rem 1.8rem; box-shadow:var(--shadow-sm); position:relative; margin:0;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.quote:hover{ transform:translateY(-4px); box-shadow:var(--shadow); }
.quote::before{ content:"\201C"; font-family:var(--serif); font-size:4.5rem; line-height:1; color:var(--sand-deep); position:absolute; top:.4rem; right:1.1rem; }
.quote blockquote{ margin:0 0 1.2rem; font-size:1.03rem; color:var(--ink); font-style:italic; }
.quote figcaption{ display:flex; flex-direction:column; border-top:1px solid var(--line); padding-top:.9rem; }
.quote__name{ font-family:var(--serif); font-weight:600; color:var(--green-deep); font-size:1.05rem; }
.quote__town{ font-size:.85rem; color:var(--brass); letter-spacing:.03em; text-transform:uppercase; }

/* ── CTA band (branded forest-green) ─────────────────────────────────────── */
.cta-band{ position:relative; overflow:hidden; background:linear-gradient(135deg, var(--green-soft) 0%, var(--green) 45%, var(--green-deep) 100%); }
.cta-band::before{ content:""; position:absolute; inset:0; background:url('/images/site/cba-seamless-wood-bg.webp') repeat; background-size:440px; opacity:.06; mix-blend-mode:overlay; pointer-events:none; }
.cta-band::after{ content:""; position:absolute; inset:0; background:radial-gradient(130% 110% at 50% -10%, rgba(255,255,255,.08), rgba(255,255,255,0) 55%); pointer-events:none; }
.cta-band__inner{ position:relative; z-index:1; text-align:center; padding-block:clamp(3.5rem,7vw,5.5rem); }
.cta-band__inner h2{ color:#fff; font-size:clamp(1.8rem,3.6vw,2.8rem); margin:0 0 .8rem; }
.cta-band__inner p{ color:rgba(255,255,255,.92); font-size:1.12rem; max-width:34em; margin:0 auto 1.8rem; }
.cta-band__actions{ display:flex; gap:.9rem; justify-content:center; flex-wrap:wrap; }
/* Warm cream primary so the main CTA pops off the green band. */
.cta-band .btn--primary{ background:var(--sand); color:var(--green-deep); }
.cta-band .btn--primary:hover{ background:#fff; color:var(--green-deep); }

/* ── Page hero (portfolio + contact) ─────────────────────────────────────── */
.page-hero{ position:relative; overflow:hidden; display:flex; align-items:center; min-height:min(58vh,460px); }
.page-hero--short{ min-height:min(48vh,380px); }
.page-hero__bg{ position:absolute; inset:0; background-size:cover; background-position:center; transform:scale(1.05); }
.page-hero__scrim{ position:absolute; inset:0; background:linear-gradient(100deg, rgba(23,51,31,.86), rgba(23,51,31,.5) 60%, rgba(23,51,31,.2)); }
.page-hero__inner{ position:relative; padding-block:clamp(3rem,7vw,5rem); max-width:820px; }
.page-hero__title{ color:#fff; font-size:clamp(2rem,4.6vw,3.5rem); margin:0 0 1rem; text-shadow:0 2px 20px rgba(0,0,0,.3); }
.page-hero__sub{ color:rgba(255,255,255,.94); font-size:clamp(1.02rem,1.5vw,1.22rem); max-width:40em; margin:0; text-shadow:0 1px 10px rgba(0,0,0,.25); }

/* ── Portfolio grid ──────────────────────────────────────────────────────── */
.portfolio-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1.1rem,2.2vw,1.9rem); }
.card{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--radius);
  overflow:hidden; box-shadow:var(--shadow-sm); display:flex; flex-direction:column;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
.card__media{ position:relative; aspect-ratio:4/3; overflow:hidden; cursor:zoom-in; }
.card__media img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.card:hover .card__media img{ transform:scale(1.07); }
.card__badge{ position:absolute; top:.75rem; left:.75rem; background:var(--brass); color:#fff; font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; padding:.3rem .6rem; border-radius:999px; }
.card__body{ padding:1.3rem 1.4rem 1.5rem; flex:1; display:flex; flex-direction:column; }
.card__title{ font-size:1.2rem; margin:0 0 .2rem; }
.card__loc{ font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:var(--brass); font-weight:700; margin-bottom:.6rem; }
.card__desc{ color:var(--ink-soft); font-size:.95rem; margin:0; }

/* ── Lightbox ────────────────────────────────────────────────────────────── */
.lightbox{ position:fixed; inset:0; z-index:200; background:rgba(16,28,20,.92); display:none; align-items:center; justify-content:center; padding:clamp(1rem,4vw,3rem); opacity:0; transition:opacity .3s; }
.lightbox.is-open{ display:flex; opacity:1; }
.lightbox__figure{ margin:0; max-width:min(1000px,92vw); max-height:88vh; text-align:center; }
.lightbox__figure img{ max-width:100%; max-height:80vh; border-radius:10px; box-shadow:var(--shadow-lg); margin:0 auto; }
.lightbox__figure figcaption{ color:#fff; margin-top:1rem; font-family:var(--serif); font-size:1.1rem; }
.lightbox__close{ position:absolute; top:1rem; right:1.4rem; background:none; border:0; color:#fff; font-size:2.6rem; line-height:1; cursor:pointer; opacity:.85; transition:opacity .2s, transform .2s; }
.lightbox__close:hover{ opacity:1; transform:scale(1.1); }
.lightbox__nav{ position:absolute; top:50%; translate:0 -50%; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.3); color:#fff; font-size:2rem; width:52px; height:52px; border-radius:50%; cursor:pointer; transition:background .2s, transform .2s; }
.lightbox__nav:hover{ background:rgba(255,255,255,.22); transform:translateY(-50%) scale(1.05); }
.lightbox__prev{ left:clamp(.5rem,2vw,2rem); }
.lightbox__next{ right:clamp(.5rem,2vw,2rem); }

/* ── Contact ─────────────────────────────────────────────────────────────── */
.contact-section{ background:var(--paper); }
.contact__grid{ display:grid; grid-template-columns:0.9fr 1.1fr; gap:clamp(1.5rem,3.5vw,3rem); align-items:start; }
.contact__card{ background:var(--paper-warm); border:1px solid var(--line); border-radius:var(--radius); padding:1.6rem 1.7rem; margin-bottom:1.2rem; box-shadow:var(--shadow-sm); }
.contact__card h2{ font-size:1.5rem; margin:0 0 1rem; }
.contact__card h3{ font-size:1.15rem; margin:0 0 .9rem; }
.contact__line{ display:flex; flex-direction:column; padding:.7rem 0; border-top:1px solid var(--line); }
.contact__line:first-of-type{ border-top:0; }
.contact__label{ font-size:.78rem; text-transform:uppercase; letter-spacing:.1em; color:var(--brass); font-weight:700; }
.contact__line strong{ font-size:1.28rem; color:var(--green-deep); font-family:var(--serif); font-weight:600; }
.contact__line--call strong{ font-size:1.55rem; }
.contact__muted{ color:var(--ink-soft); font-size:.95rem; }
.check-list,.town-list{ list-style:none; padding:0; margin:0; }
.check-list li{ position:relative; padding:.4rem 0 .4rem 1.9rem; color:var(--ink-soft); }
.check-list li::before{ content:""; position:absolute; left:0; top:.7rem; width:1.15rem; height:.6rem; border-left:2.5px solid var(--green-soft); border-bottom:2.5px solid var(--green-soft); transform:rotate(-45deg); }
.town-list{ display:grid; grid-template-columns:1fr 1fr; gap:.35rem .8rem; margin-top:.3rem; }
.town-list li{ position:relative; padding-left:1.1rem; color:var(--ink); font-size:.95rem; }
.town-list li::before{ content:""; position:absolute; left:0; top:.62rem; width:6px; height:6px; border-radius:50%; background:var(--brass); }

/* Form */
.contact__card--form{ background:var(--paper); border-color:var(--sand-deep); }
.form{ margin-top:.4rem; }
.form__row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.field{ display:block; margin-bottom:1rem; }
.field > span{ display:block; font-weight:600; font-size:.9rem; margin-bottom:.35rem; color:var(--green-deep); }
.field input,.field select,.field textarea{
  width:100%; font:inherit; color:var(--ink); background:var(--paper-warm);
  border:1.5px solid var(--line); border-radius:10px; padding:.72rem .9rem; transition:border-color .2s, box-shadow .2s, background .2s;
}
.field input:focus,.field select:focus,.field textarea:focus{ outline:0; border-color:var(--green-soft); background:#fff; box-shadow:0 0 0 3px rgba(58,107,72,.14); }
.field textarea{ resize:vertical; }
.form__status{ margin:.9rem 0 0; font-weight:600; font-size:.95rem; min-height:1.2em; }
.form__status.is-ok{ color:var(--green-soft); }
.form__status.is-err{ color:#b4472e; }
.form__fineprint{ margin:1rem 0 0; font-size:.9rem; color:var(--ink-soft); }

/* ── Footer ──────────────────────────────────────────────────────────────── */
.site-footer{ background:var(--green-deep); color:rgba(255,255,255,.82); margin-top:0; }
.footer__inner{ display:grid; grid-template-columns:1.4fr 1fr 1.2fr; gap:clamp(1.5rem,4vw,3rem); padding-block:clamp(2.6rem,5vw,3.6rem); }
.footer__logo{ width:min(275px,100%); height:auto; background:#fff; padding:.5rem .8rem; border-radius:8px; margin-bottom:1rem; }
.footer__tag{ color:rgba(255,255,255,.7); max-width:30ch; font-size:.95rem; }
.footer__col h4{ color:#fff; font-family:var(--sans); text-transform:uppercase; letter-spacing:.14em; font-size:.78rem; margin:0 0 1rem; }
.footer__col a{ display:block; color:rgba(255,255,255,.82); padding:.28rem 0; transition:color .2s, padding-left .2s; }
.footer__col a:hover{ color:#fff; padding-left:.25rem; }
.footer__area{ color:rgba(255,255,255,.6); font-size:.88rem; margin-top:.8rem; }
.footer__bar{ border-top:1px solid rgba(255,255,255,.12); }
.footer__bar p{ margin:0; padding-block:1.2rem; font-size:.82rem; color:rgba(255,255,255,.55); text-align:center; }

/* ── Reveal on scroll ────────────────────────────────────────────────────── */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-in{ opacity:1; transform:none; }

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width:920px){
  .services-grid,.quotes-grid,.portfolio-grid,.featured-grid{ grid-template-columns:repeat(2,1fr); }
  .about__grid,.contact__grid{ grid-template-columns:1fr; }
  .about__media{ max-width:520px; margin-inline:auto; }
  .about__media::before{ inset:10px -10px -10px 10px; }
  .footer__inner{ grid-template-columns:1fr 1fr; }

  /* Full nav collapses to a slide-in menu before it would wrap. */
  .nav__toggle{ display:flex; position:relative; z-index:95; }
  .nav__menu{
    position:fixed; top:0; right:0; left:auto; width:min(82vw,320px);
    height:100vh; height:100dvh; overflow-y:auto;
    flex-direction:column; align-items:flex-start; gap:.3rem;
    background:var(--paper-warm); padding:5.5rem 1.8rem 2rem; box-shadow:var(--shadow-lg);
    transform:translateX(105%); transition:transform .35s var(--ease); z-index:90;
  }
  .nav__menu.is-open{ transform:translateX(0); }
  .nav__link{ font-size:1.15rem; padding:.6rem 0; width:100%; border-bottom:1px solid var(--line); }
  .nav__link::after{ display:none; }
  .nav__cta{ margin-top:1rem; }
}
@media (max-width:720px){
  .trust__inner{ grid-template-columns:1fr 1fr; gap:1.2rem; }
  .trust__item:nth-child(3)::before,.trust__item:nth-child(1)::before{ display:none; }
  .form__row{ grid-template-columns:1fr; }
  /* Full-width text needs an overall darker wash for legibility on phones. */
  .hero__scrim{ background:linear-gradient(180deg, rgba(23,51,31,.5) 0%, rgba(23,51,31,.72) 55%, rgba(20,40,28,.92) 100%); }
  .page-hero__scrim{ background:linear-gradient(180deg, rgba(23,51,31,.52) 0%, rgba(23,51,31,.82) 100%); }
  .hero{ min-height:min(92vh,760px); }
  .hero__actions .btn{ width:100%; }
}
@media (max-width:460px){
  .services-grid,.quotes-grid,.portfolio-grid,.featured-grid{ grid-template-columns:1fr; }
  .footer__inner{ grid-template-columns:1fr; }
  .town-list{ grid-template-columns:1fr; }
}

/* ── Reduced motion ──────────────────────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *{ animation:none !important; scroll-behavior:auto !important; }
  .reveal{ opacity:1; transform:none; transition:none; }
  .hero__bg{ animation:none; transform:scale(1.08); }
}
