:root{
  --asphalt:#0d0c0a;      /* page base */
  --asphalt-2:#171512;    /* raised surfaces on dark */
  --concrete:#d6d3cc;     /* cured slab grey, light sections */
  --concrete-2:#c7c3bb;   /* deeper grey for surfaces on light */
  --orange:#f5921e;       /* logo orange */
  --orange-deep:#c9700f;  /* orange for text on light */
  --chalk:#f5f3ee;        /* warm white text on dark */
  --chalk-70:rgba(245,243,238,0.72);
  --chalk-45:rgba(245,243,238,0.45);
  --ink:#1c1a16;          /* text on light */
  --ink-70:rgba(28,26,22,0.72);
  --joint-dark:rgba(245,243,238,0.14);  /* saw-cut lines on dark */
  --joint-light:rgba(28,26,22,0.18);    /* saw-cut lines on light */
  --wrap:1280px;
  --gutter:clamp(20px, 4vw, 48px);
  --ease:cubic-bezier(.2,.7,.2,1);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
[id]{scroll-margin-top:96px;}
body{
  font-family:'Archivo', system-ui, sans-serif;
  font-variation-settings:"wdth" 100;
  font-size:17px;
  line-height:1.55;
  background:var(--asphalt);
  color:var(--chalk);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
ul,ol{list-style:none;}
button{font:inherit;cursor:pointer;}
:focus-visible{outline:2px solid var(--orange);outline-offset:3px;}

/* ---------- type scale (1.25 ratio from 17px) ---------- */
.display{
  font-variation-settings:"wdth" 118;
  font-weight:800;
  letter-spacing:-0.025em;
  line-height:0.95;
}
h2.display{font-size:clamp(34px, 4.4vw, 58px);}
h3.display{font-size:clamp(24px, 2.6vw, 33px);letter-spacing:-0.015em;line-height:1.05;}
.lede{font-size:clamp(18px, 1.5vw, 21px);line-height:1.5;max-width:34em;}
.lede a{color:var(--orange);font-weight:600;}
.small{font-size:14px;line-height:1.5;}

.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter);}

/* ---------- saw-cut joint: the one structural device ---------- */
.joint{height:1px;background:var(--joint-dark);width:100%;}
.on-light .joint, .on-light.joint{background:var(--joint-light);}

/* ---------- buttons & text links ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:15px 22px;border-radius:4px;
  font-weight:700;font-size:16px;line-height:1;
  border:1px solid transparent;
  transition:background .18s var(--ease), border-color .18s var(--ease), transform .18s var(--ease);
}
.btn-solid{background:var(--orange);color:var(--ink);}
.btn-solid:hover{background:#ffa43a;}
.btn-ghost{border-color:var(--joint-dark);color:var(--chalk);background:rgba(13,12,10,0.35);backdrop-filter:blur(6px);}
.btn-ghost:hover{border-color:var(--chalk-45);}
.on-light .btn-ghost{border-color:var(--joint-light);color:var(--ink);background:transparent;backdrop-filter:none;}
.btn svg{width:18px;height:18px;flex:none;}
.textlink{display:inline-block;margin-top:26px;font-weight:700;color:var(--orange);border-bottom:2px solid currentColor;padding-bottom:2px;}
.on-light .textlink{color:var(--orange-deep);}

/* ---------- header ---------- */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:50;
  transition:background .3s var(--ease), border-color .3s var(--ease);
  border-bottom:1px solid transparent;
}
.site-header.solid{background:rgba(13,12,10,0.92);backdrop-filter:blur(10px);border-bottom-color:var(--joint-dark);}
.site-header.fixed-solid{background:var(--asphalt);border-bottom-color:var(--joint-dark);}
.nav{display:flex;align-items:center;justify-content:space-between;height:76px;gap:24px;}
.brand img{height:60px;width:auto;}
@media (max-width:900px){.brand img{height:50px;}}
.nav-links{display:flex;gap:30px;font-weight:600;font-size:15px;}
.nav-links a{color:var(--chalk-70);transition:color .15s;padding:6px 0;}
.nav-links a:hover{color:var(--chalk);}
.nav-links a[aria-current="page"]{color:var(--chalk);box-shadow:inset 0 -2px 0 var(--orange);}
.nav-cta{display:inline-flex;}
.nav-phone{display:none;width:44px;height:44px;border-radius:4px;background:var(--orange);color:var(--ink);align-items:center;justify-content:center;margin-left:auto;margin-right:10px;}
.nav-phone svg{width:20px;height:20px;}
.nav-toggle{display:none;background:none;border:1px solid var(--joint-dark);border-radius:4px;color:var(--chalk);width:44px;height:44px;align-items:center;justify-content:center;}
.nav-toggle svg{width:22px;height:22px;}
.nav-toggle .ico-x{display:none;}
.site-header.open .nav-toggle .ico-x{display:block;}
.site-header.open .nav-toggle .ico-bars{display:none;}
.nav-panel{display:none;}
@media (max-width:900px){
  .nav-links, .nav-cta{display:none;}
  .nav-toggle, .nav-phone{display:inline-flex;}
  .site-header.open{background:var(--asphalt);border-bottom-color:var(--joint-dark);}
  .site-header.open .nav-panel{display:block;border-top:1px solid var(--joint-dark);}
  .nav-panel ul{padding:8px 0 20px;}
  .nav-panel li a{display:block;padding:14px 0;font-size:20px;font-weight:700;border-bottom:1px solid var(--joint-dark);}
  .nav-panel li a[aria-current="page"]{color:var(--orange);}
  .nav-panel .btn{margin-top:20px;width:100%;justify-content:center;}
}

/* ---------- hero (home) ---------- */
.hero{position:relative;min-height:clamp(560px, 82svh, 960px);display:flex;flex-direction:column;justify-content:center;overflow:hidden;background:var(--asphalt);}
.hero-media{position:absolute;inset:0;}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 45%;transform:scale(1.06);}
@media (min-width:900px){
  /* anchor the photo to the content column, not the viewport, so the slab
     stays beside the headline on wide monitors instead of drifting right */
  .hero-media{--col:min(100vw, var(--wrap));left:max(0px, calc((100vw - var(--wrap)) / 2));}
  .hero-media img{
    width:calc(var(--col) * 1.25);max-width:none;margin-left:calc(var(--col) * 0.18);object-position:center 42%;
    -webkit-mask-image:linear-gradient(to right, transparent 0%, #000 30%, #000 85%, transparent 100%);
    mask-image:linear-gradient(to right, transparent 0%, #000 30%, #000 85%, transparent 100%);
  }
}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(to right, rgba(13,12,10,0.72) 0%, rgba(13,12,10,0.45) 40%, rgba(13,12,10,0.05) 75%),
    linear-gradient(to top, rgba(13,12,10,0.94) 0%, rgba(13,12,10,0.55) 38%, rgba(13,12,10,0.05) 70%, rgba(13,12,10,0.25) 100%);
}
.hero-stage{position:relative;flex:1;display:flex;flex-direction:column;justify-content:center;}
.hero-body{position:relative;width:100%;display:flex;flex-direction:column;justify-content:center;padding-top:calc(76px + clamp(32px,5vw,64px));padding-bottom:clamp(40px,6vw,64px);}
.hero h1{font-size:clamp(46px, 7.2vw, 92px);max-width:8.6em;color:var(--chalk);}
.hero .lede{margin-top:26px;color:var(--chalk-70);}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px;}
/* trust strip: a slab divided by joints */
.trust{position:relative;border-top:1px solid var(--joint-dark);background:var(--asphalt-2);}
.trust ul{display:grid;grid-template-columns:repeat(3,1fr);}
.trust li{padding:20px var(--gutter);font-weight:600;font-size:15px;color:var(--chalk-70);border-left:1px solid var(--joint-dark);}
.trust li:first-child{border-left:0;}
.trust li span{display:block;color:var(--chalk);font-size:17px;}
@media (max-width:700px){
  .trust ul{grid-template-columns:1fr;}
  .trust li{border-left:0;border-top:1px solid var(--joint-dark);padding:14px var(--gutter);}
  .trust li:first-child{border-top:0;}
}
/* phones: portrait crop of the slab, scoped to the text area so the trust strip never covers it */
@media (max-width:899px){
  .hero{min-height:0;}
  .hero-stage{min-height:540px;}
  .hero-media picture{display:block;height:100%;}
  .hero-media img{object-position:center;}
  .hero-media::after{background:linear-gradient(to top, rgba(13,12,10,0.95) 0%, rgba(13,12,10,0.6) 45%, rgba(13,12,10,0.38) 100%);}
  .hero-body{padding-top:calc(76px + 28px);padding-bottom:32px;}
  .hero h1{font-size:clamp(38px, 10.5vw, 56px);}
  .hero .lede{font-size:17px;margin-top:14px;}
  .hero-actions{margin-top:20px;}
  .hero-actions .btn{padding:14px 18px;font-size:15px;}
}
/* the one orchestrated motion: page load */
@media (prefers-reduced-motion:no-preference){
  .hero-media img{animation:heroZoom 1.8s var(--ease) forwards;}
  .hero h1, .hero .lede, .hero-actions{opacity:0;transform:translateY(22px);animation:rise .9s var(--ease) forwards;}
  .hero .lede{animation-delay:.15s;} .hero-actions{animation-delay:.28s;}
  @keyframes heroZoom{to{transform:scale(1);}}
  @keyframes rise{to{opacity:1;transform:none;}}
}

/* ---------- interior page head: photo hero, shorter than the home one ---------- */
.page-head{position:relative;overflow:hidden;background:var(--asphalt);
  padding:calc(76px + clamp(56px, 8vw, 104px)) 0 clamp(44px, 5vw, 68px);
  /* height grows with width as well as height, so a 27" monitor doesn't
     letterbox the photo down to a narrow strip */
  min-height:clamp(340px, max(46svh, 25vw), 660px);display:flex;align-items:flex-end;}
.page-head-media{position:absolute;inset:0;z-index:0;}
.page-head-media picture{display:block;height:100%;}
.page-head-media img{width:100%;height:100%;object-fit:cover;object-position:center 45%;}  /* per-page focus set inline */
.page-head-media::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(to right, rgba(13,12,10,0.88) 0%, rgba(13,12,10,0.62) 46%, rgba(13,12,10,0.34) 100%),
    linear-gradient(to top, rgba(13,12,10,0.92) 0%, rgba(13,12,10,0.30) 52%, rgba(13,12,10,0.45) 100%);
}
.page-head .wrap{position:relative;z-index:1;width:100%;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:24px 64px;align-items:end;}
.page-head h1{font-size:clamp(40px, 5.6vw, 76px);max-width:9em;}
.page-head h1.long{font-size:clamp(34px, 4.6vw, 60px);max-width:11em;}
.page-head .lede{color:var(--chalk-70);}
@media (max-width:820px){
  .page-head{min-height:clamp(300px, 52svh, 420px);padding-bottom:36px;}
  .page-head .wrap{grid-template-columns:1fr;}
  .page-head h1{font-size:clamp(34px, 8.4vw, 48px);}
  .page-head .lede{font-size:17px;}
  .page-head-media::after{background:linear-gradient(to top, rgba(13,12,10,0.94) 0%, rgba(13,12,10,0.55) 60%, rgba(13,12,10,0.5) 100%);}
}
/* the hero photo settles in on load, matching the home page */
@media (prefers-reduced-motion:no-preference){
  .page-head-media img{transform:scale(1.05);animation:heroZoom 1.8s var(--ease) forwards;}
}

/* ---------- section shells ---------- */
.section{padding:clamp(72px, 9vw, 128px) 0;}
.on-light{background:var(--concrete);color:var(--ink);}
.on-light .lede{color:var(--ink-70);}
.on-light .lede a{color:var(--orange-deep);}
.section-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px 64px;align-items:end;margin-bottom:clamp(40px, 5vw, 72px);}
.section-foot{margin-top:28px;}
@media (max-width:820px){.section-head{grid-template-columns:1fr;}}

/* ---------- "What we pour": a concrete form that fills with wet mix ---------- */
.pour-box{position:relative;overflow:hidden;border:2px solid var(--orange);border-radius:4px;padding:26px 30px 96px;background:var(--concrete);text-align:center;}
/* the heading shrink-wraps so the stream can be anchored just past its last letter */
.pour-head{position:relative;display:inline-block;z-index:2;}
.pour-box h2{position:relative;z-index:2;}
.pour{position:absolute;left:0;right:0;bottom:0;height:82px;z-index:1;}
.pour-fill{position:absolute;inset:0;transform:translateY(100%);}
.wave{position:absolute;bottom:0;left:0;width:200%;height:100%;fill:#a29e93;}
.wave-b{fill:#7f7b72;bottom:18px;transform:translateX(-25%);}
.pour-stream{position:absolute;left:calc(100% + clamp(14px, 2.2vw, 30px));top:-30px;width:14px;height:340px;
  background:#7f7b72;border-radius:0 0 7px 7px;transform:scaleY(0);transform-origin:top;}
@media (max-width:820px){.pour-stream{width:10px;left:calc(100% + 7px);top:-22px;}}
@media (prefers-reduced-motion:no-preference){
  .pour-fill{transition:transform 2.4s cubic-bezier(.2,.7,.2,1) .25s;}
  .pour-box.poured .pour-fill{transform:translateY(0);}
  .wave-a{animation:flow 8s linear infinite;}
  .wave-b{animation:flow 13s linear infinite reverse;}
  @keyframes flow{from{transform:translateX(0);}to{transform:translateX(-50%);}}
  .wave-b{animation-name:flowB;}
  @keyframes flowB{from{transform:translateX(-50%);}to{transform:translateX(0);}}
  .pour-box.poured .pour-stream{animation:stream 2.9s cubic-bezier(.2,.7,.2,1) forwards;}
  @keyframes stream{0%{transform:scaleY(0);}14%{transform:scaleY(1);}72%{transform:scaleY(1);}100%{transform:scaleY(0);transform-origin:bottom;}}
}
@media (prefers-reduced-motion:reduce){.pour-fill{transform:none;}}
@media (max-width:820px){.pour-box{padding:22px 22px 84px;}}

/* ---------- services: three rows, not three cards ---------- */
.service{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px 64px;padding:clamp(36px,4.5vw,64px) 0;align-items:center;}
.service::before,.service:last-child::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--joint-light);transform-origin:left;}
.service::before{top:0;} .service:last-child::after{bottom:0;}
.service:nth-child(even) .service-media{order:2;}
.service-media{aspect-ratio:4/3;overflow:hidden;border-radius:4px;background:var(--concrete-2);}
.service-media img{width:100%;height:100%;object-fit:cover;}
.service p{margin-top:16px;color:var(--ink-70);max-width:32em;}
.service ul{margin-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;font-weight:600;font-size:15px;}
.service li{padding-left:18px;position:relative;}
.service li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:2px;background:var(--orange-deep);}
@media (max-width:820px){
  .service{grid-template-columns:1fr;}
  .service:nth-child(even) .service-media{order:0;}
  .service ul{grid-template-columns:1fr;}
}

/* ---------- gallery ---------- */
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px;}
.filters button{background:none;border:1px solid var(--joint-dark);color:var(--chalk-70);border-radius:4px;padding:10px 14px;font-weight:600;font-size:15px;transition:color .15s, border-color .15s;}
.filters button:hover{color:var(--chalk);border-color:var(--chalk-45);}
.filters button[aria-pressed="true"]{background:var(--chalk);color:var(--ink);border-color:var(--chalk);}
.grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:220px;gap:6px;}
.grid a{position:relative;display:block;overflow:hidden;border-radius:3px;background:var(--asphalt-2);}
.grid a[hidden]{display:none;}
.grid img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease);}
.grid a:hover img{transform:scale(1.03);}
.grid a:focus-visible{outline-offset:-3px;}
.grid video{width:100%;height:100%;object-fit:cover;display:block;}
.grid .play{position:absolute;left:10px;bottom:10px;width:30px;height:30px;border-radius:4px;background:rgba(13,12,10,0.7);}
.grid .play::after{content:"";position:absolute;left:11px;top:8px;border-left:11px solid var(--chalk);border-top:7px solid transparent;border-bottom:7px solid transparent;}
@media (max-width:900px){.grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:190px;}}
@media (max-width:480px){.grid{grid-auto-rows:150px;}}
.gallery-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;margin-top:22px;}
.gallery-note{color:var(--chalk-45);font-size:14px;margin:0;}

/* ---------- about ---------- */
.about-media{border-radius:4px;overflow:hidden;margin-bottom:clamp(40px,5vw,72px);aspect-ratio:21/8;background:var(--asphalt-2);}
.about-media img{width:100%;height:100%;object-fit:cover;object-position:center 60%;}
.about-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:40px 80px;}
.about-grid p + p{margin-top:18px;}
.about-grid p{color:var(--chalk-70);max-width:34em;}
.facts{border-top:1px solid var(--joint-dark);}
.facts li{padding:18px 0;border-bottom:1px solid var(--joint-dark);font-weight:600;font-size:18px;}
.facts li small{display:block;font-weight:400;font-size:15px;color:var(--chalk-45);margin-top:3px;}
@media (max-width:820px){.about-grid{grid-template-columns:1fr;}}
/* home teaser */
.about-teaser{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px 80px;align-items:center;}
.about-teaser p{margin-top:22px;color:var(--chalk-70);max-width:32em;}
.about-teaser .media{aspect-ratio:4/3;overflow:hidden;border-radius:4px;}
.about-teaser .media img{width:100%;height:100%;object-fit:cover;object-position:center 60%;}
@media (max-width:820px){.about-teaser{grid-template-columns:1fr;}}

/* ---------- numbered steps (only where the content really is a sequence) ---------- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--joint-light);border-bottom:1px solid var(--joint-light);}
.steps.three{grid-template-columns:repeat(3,1fr);}
.steps li{padding:28px 28px 32px 24px;border-left:1px solid var(--joint-light);}
.steps li:first-child{border-left:0;padding-left:0;}
.steps .num{display:block;font-variation-settings:"wdth" 118;font-weight:800;font-size:44px;line-height:1;color:var(--orange-deep);}
.steps h3{margin-top:14px;font-size:19px;font-weight:700;line-height:1.25;}
.steps p{margin-top:8px;color:var(--ink-70);font-size:15px;max-width:26em;}
@media (max-width:900px){
  .steps, .steps.three{grid-template-columns:1fr 1fr;}
  .steps li{border-top:1px solid var(--joint-light);}
  .steps li:nth-child(odd){border-left:0;padding-left:0;}
  .steps li:nth-child(-n+2){border-top:0;}
}
@media (max-width:560px){
  .steps, .steps.three{grid-template-columns:1fr;}
  .steps li{border-left:0;padding-left:0;border-top:1px solid var(--joint-light);}
  .steps li:first-child{border-top:0;}
}

/* ---------- areas ---------- */
.county{position:relative;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,2fr);gap:20px 64px;padding:clamp(28px,4vw,44px) 0;}
.county::before,.county:last-of-type::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--joint-light);transform-origin:left;}
.county::before{top:0;} .county:last-of-type::after{bottom:0;}
.county h2{font-size:clamp(22px, 2.4vw, 30px);}
.county p{color:var(--ink-70);font-size:15px;margin-top:8px;max-width:28em;}
.county ul{display:flex;flex-wrap:wrap;gap:8px;align-self:center;align-content:center;}
.county li{border:1px solid var(--joint-light);border-radius:4px;padding:10px 14px;font-weight:600;font-size:16px;}
.county li.hub{background:var(--orange);border-color:var(--orange);color:var(--ink);font-weight:800;}
.areas-note{margin-top:36px;color:var(--ink-70);max-width:40em;}
.areas-note a{color:var(--orange-deep);font-weight:700;}
@media (max-width:820px){.county{grid-template-columns:1fr;}}
/* home pathways band */
.pathways{display:grid;grid-template-columns:1fr 1fr;gap:48px 80px;}
.pathways h2{font-size:clamp(24px, 2.6vw, 33px);}
.pathways p{margin-top:12px;color:var(--ink-70);max-width:30em;}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px;}
.chips li{border:1px solid var(--joint-light);border-radius:4px;padding:8px 12px;font-weight:600;font-size:15px;}
.qlist{margin-top:20px;border-top:1px solid var(--joint-light);}
.qlist li a{display:block;padding:14px 0;border-bottom:1px solid var(--joint-light);font-weight:600;transition:color .15s;}
.qlist li a:hover{color:var(--orange-deep);}
@media (max-width:820px){.pathways{grid-template-columns:1fr;}}

/* ---------- faq ---------- */
.faq-group{position:relative;display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,2fr);gap:16px 64px;padding:clamp(28px,4vw,48px) 0;}
.faq-group + .faq-group::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--joint-dark);transform-origin:left;}
.faq-group h2{font-size:clamp(22px, 2.4vw, 30px);}
.faq{max-width:820px;}
.faq details{border-top:1px solid var(--joint-dark);}
.faq details:last-child{border-bottom:1px solid var(--joint-dark);}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:24px;align-items:center;padding:22px 0;font-weight:700;font-size:19px;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary .plus{flex:none;width:28px;height:28px;border:1px solid var(--joint-dark);border-radius:4px;position:relative;transition:transform .25s var(--ease), background .25s;}
.faq summary .plus::before,.faq summary .plus::after{content:"";position:absolute;background:var(--chalk);left:50%;top:50%;transform:translate(-50%,-50%);}
.faq summary .plus::before{width:12px;height:2px;} .faq summary .plus::after{width:2px;height:12px;transition:opacity .2s;}
.faq details[open] summary .plus{background:var(--orange);border-color:var(--orange);}
.faq details[open] summary .plus::before,.faq details[open] summary .plus::after{background:var(--ink);}
.faq details[open] summary .plus::after{opacity:0;}
.faq .answer{padding:0 0 26px;color:var(--chalk-70);max-width:38em;}
@media (max-width:820px){.faq-group{grid-template-columns:1fr;}}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:48px 80px;}
.field{display:flex;flex-direction:column;gap:8px;}
.field label{font-weight:600;font-size:15px;}
.field input,.field select,.field textarea{
  font:inherit;color:var(--chalk);background:var(--asphalt-2);
  border:1px solid var(--joint-dark);border-radius:4px;padding:13px 14px;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--orange);}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23f5f3ee' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;}
.field select{color-scheme:dark;}
.field select option{color:var(--chalk);background:var(--asphalt-2);}
.field textarea{min-height:130px;resize:vertical;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.form-stack{display:grid;gap:18px;}
.form-foot{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:8px;}
.form-foot .small{color:var(--chalk-45);}
.contact-side{border-top:1px solid var(--joint-dark);}
.contact-side li{padding:20px 0;border-bottom:1px solid var(--joint-dark);}
.contact-side .k{display:block;font-size:14px;color:var(--chalk-45);margin-bottom:4px;}
.contact-side .v{font-size:22px;font-weight:700;overflow-wrap:anywhere;}
.contact-side .v a:hover{color:var(--orange);}
.contact-side .side-note{display:block;margin-top:8px;font-size:15px;color:var(--chalk-45);}
.contact-side .side-note a{color:var(--chalk-70);font-weight:600;}
/* the form and its confirmation share one grid cell, so the panel appears
   exactly where the form was rather than pushing the sidebar around */
.form-col{min-width:0;}
.form-stack[hidden]{display:none;}   /* .form-stack sets display:grid, which would otherwise beat [hidden] */

/* honeypot — off-screen for people, still reachable by bots that fill everything */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}

/* the panel that replaces the form once it has actually sent */
.form-done{border:1px solid var(--joint-dark);border-left:3px solid var(--orange);border-radius:4px;padding:32px 30px;background:var(--asphalt-2);}
.form-done .tick{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--orange);margin-bottom:20px;}
.form-done .tick::after{content:"";width:16px;height:9px;border-left:3px solid var(--ink);border-bottom:3px solid var(--ink);transform:rotate(-45deg) translate(1px,-2px);}
.form-done h2{font-size:clamp(26px, 2.6vw, 34px);}
.form-done p{margin-top:14px;color:var(--chalk-70);max-width:34em;}
.form-done .small{color:var(--chalk-45);}
.form-done .small a{color:var(--chalk);font-weight:600;}
@media (prefers-reduced-motion:no-preference){
  .form-done{animation:rise .5s var(--ease) forwards;}
}

/* inline error, shown in place if the send fails */
.form-error{margin-top:4px;color:#ffb066;font-size:15px;}
.form-error a{color:var(--chalk);font-weight:600;}
.form-stack.sending{opacity:.55;pointer-events:none;}

@media (max-width:820px){.contact-grid{grid-template-columns:1fr;}.form-row{grid-template-columns:1fr;}}

/* ---------- closing call to action ---------- */
.cta-band{padding:clamp(64px, 8vw, 112px) 0;border-top:1px solid var(--joint-dark);}
.cta-band .wrap{display:grid;grid-template-columns:auto minmax(0,1fr);gap:28px 64px;align-items:center;}
.cta-band h2{white-space:nowrap;font-size:clamp(26px, 3.4vw, 46px);}
.cta-band p{color:var(--chalk-70);margin-top:16px;max-width:30em;}
.cta-actions{display:flex;flex-wrap:wrap;gap:12px;justify-self:end;}
@media (max-width:820px){.cta-band .wrap{grid-template-columns:1fr;}.cta-band h2{white-space:normal;font-size:clamp(34px, 4.4vw, 58px);}.cta-actions{justify-self:start;}}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--joint-dark);padding:44px 0;}
.foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;}
.foot img{height:72px;width:auto;}
.foot-links{display:flex;flex-wrap:wrap;gap:22px;font-weight:600;font-size:15px;color:var(--chalk-70);}
.foot-links a:hover{color:var(--chalk);}
.foot-legal{width:100%;margin-top:20px;padding-top:20px;border-top:1px solid var(--joint-dark);display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;color:var(--chalk-45);font-size:14px;}
.foot-legal a{color:var(--chalk-70);}

/* ---------- lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(13,12,10,0.96);display:none;align-items:center;justify-content:center;padding:56px 16px 16px;}
.lightbox.show{display:flex;}
.lightbox img,.lightbox video{max-width:100%;max-height:100%;object-fit:contain;border-radius:3px;}
.lightbox video{background:#000;}
.lb-btn{position:absolute;background:none;border:1px solid var(--joint-dark);border-radius:4px;color:var(--chalk);width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s;}
.lb-btn:hover{border-color:var(--chalk-45);}
.lb-btn svg{width:20px;height:20px;}
.lb-close{top:14px;right:14px;} .lb-prev{left:14px;top:50%;transform:translateY(-50%);} .lb-next{right:14px;top:50%;transform:translateY(-50%);}
.lb-count{position:absolute;top:26px;left:20px;font-size:14px;color:var(--chalk-45);}

/* ---------- scroll motion ----------
   Gated on the reduced-motion setting; each element animates once, as soon as
   it enters the viewport. Kept short so nothing reads as "still loading". */
@media (prefers-reduced-motion:no-preference){
  [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .6s var(--ease), transform .6s var(--ease);transition-delay:var(--d, 0ms);}
  [data-reveal].in{opacity:1;transform:none;}
  /* groups don't move themselves; they only give their joint line and children the cue */
  [data-reveal="group"]{opacity:1;transform:none;transition:none;}
  /* photos: a grey "form" curtain lifts from the bottom edge as the photo settles into place.
     The curtain is a pseudo-element, so the image itself is never clipped (keeps lazy-loading
     and IntersectionObserver working) */
  [data-reveal="pour"]{position:relative;opacity:1;transform:none;transition:none;}
  [data-reveal="pour"]::after{content:"";position:absolute;inset:0;background:var(--asphalt-2);transform-origin:top;transition:transform .75s var(--ease);pointer-events:none;}
  .on-light [data-reveal="pour"]::after{background:var(--concrete-2);}
  [data-reveal="pour"].in::after{transform:scaleY(0);}
  [data-reveal="pour"] img{transform:scale(1.06);transition:transform 1.2s var(--ease);}
  [data-reveal="pour"].in img{transform:none;}
  /* gallery tiles: a quick fade, barely staggered */
  [data-reveal="tile"]{transform:translateY(10px);transition-duration:.4s;}
  /* saw-cut joints draw across as their row arrives */
  .service::before,.service:last-child::after,.county::before,.county:last-of-type::after,.faq-group + .faq-group::before{transform:scaleX(0);transition:transform .9s var(--ease);}
  .service.in::before,.service.in:last-child::after,.county.in::before,.county.in:last-of-type::after,.faq-group.in + .faq-group::before,.faq-group.in::before{transform:scaleX(1);}
  @media (min-width:900px){.hero-media{will-change:transform;}}
}
