:root{
  --slab:#E3E4E1;      /* cured concrete */
  --slab-2:#D3D5D1;    /* concrete, shaded */
  --paper:#F2F2EF;     /* trowelled surface */
  --ink:#1E2428;       /* wet asphalt */
  --granite:#4D555B;   /* granite step */
  --rule:#B9BCB8;
  --bronze:#9C5C1C;    /* medallion color release */
  --bronze-ink:#FFFFFF;
  --bronze-soft:#C98A45;
  --focus:#1D6FB8;
  --header-bg:rgba(242,242,239,.92);
  --band:#1E2428;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --slab:#22282C; --slab-2:#2B3237; --paper:#1A1F22; --ink:#E6E7E3; --granite:#AEB4B7;
    --rule:#3C4449; --bronze:#D99A55; --bronze-ink:#1A1F22; --bronze-soft:#D99A55; --focus:#7DB8F0;
    --header-bg:rgba(26,31,34,.92); --band:#121619;
  }
}
:root[data-theme="dark"]{
  --slab:#22282C; --slab-2:#2B3237; --paper:#1A1F22; --ink:#E6E7E3; --granite:#AEB4B7;
  --rule:#3C4449; --bronze:#D99A55; --bronze-ink:#1A1F22; --bronze-soft:#D99A55; --focus:#7DB8F0;
  --header-bg:rgba(26,31,34,.92); --band:#121619;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:76px;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--paper);color:var(--ink);font:400 1.0625rem/1.6 "Public Sans",system-ui,sans-serif}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.wrap{width:min(1180px,100% - 32px);margin-inline:auto}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--paper);padding:10px 14px;z-index:99}
.skip:focus{left:8px}

h1,h2,h3{font-family:"Big Shoulders Display",Impact,sans-serif;font-weight:800;line-height:.95;letter-spacing:.005em;margin:0}
h2{font-size:clamp(2.6rem,5.5vw,4.25rem)}
h3{font-size:1.75rem;font-weight:700}
p{margin:0 0 1em}
.lede{font-size:1.1875rem;max-width:58ch;color:var(--granite)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:.55em;min-height:52px;padding:0 22px;border-radius:4px;font-weight:700;font-size:1.0625rem;text-decoration:none;border:2px solid transparent;cursor:pointer;font-family:inherit}
.btn svg{width:20px;height:20px;flex:none}
.btn-primary{background:var(--bronze);color:var(--bronze-ink)}
.btn-primary:hover{filter:brightness(1.08)}
.btn-ghost{border-color:currentColor;background:transparent;color:var(--ink)}
.btn-ghost:hover{background:var(--slab)}

/* Header */
.site-header{position:sticky;top:0;z-index:20;background:var(--header-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
.site-header .wrap{display:flex;align-items:center;gap:24px;height:68px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto}
.brand-mark{font-family:"Big Shoulders Stencil Display",Impact,sans-serif;font-weight:800;font-size:2.1rem;line-height:1;letter-spacing:.02em}
.brand-name{font-family:"Big Shoulders Display",sans-serif;font-weight:700;font-size:1.05rem;line-height:1;color:var(--granite);border-left:2px solid var(--rule);padding-left:10px}
.nav{display:flex;gap:22px}
.nav a{text-decoration:none;font-weight:600;font-size:.98rem}
.nav a:hover{color:var(--bronze)}
.header-call{min-height:44px;padding:0 16px;font-size:1rem}
@media (max-width:900px){.nav{display:none}}
@media (max-width:520px){.brand-name{display:none}.header-call span.long{display:none}}

/* Hero */
.hero{padding:clamp(28px,5vw,64px) 0 clamp(48px,6vw,88px);background:var(--slab)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,4vw,56px);align-items:center}
.hero h1{font-size:clamp(2.8rem,5.4vw,4.6rem);font-weight:900;margin-bottom:22px;text-wrap:balance}
.hero .lede{margin-bottom:28px}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}
.hero-facts{list-style:none;margin:0;padding:18px 0 0;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr 1fr;gap:14px 24px;font-size:.95rem}
.hero-facts strong{display:block;font-size:1rem}
.hero-facts span{color:var(--granite)}
.hero-photo{position:relative}
.hero-photo img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px}
.seal{position:absolute;left:-46px;bottom:-46px;width:168px;height:168px;color:var(--bronze);background:var(--paper);border-radius:50%;padding:6px;box-shadow:0 0 0 6px var(--slab)}
.seal svg{width:100%;height:100%;overflow:visible}
@media (prefers-reduced-motion: no-preference){
  .seal .ring{stroke-dasharray:540;stroke-dashoffset:540;animation:draw 1.1s .2s ease-out forwards}
  .seal .ringtext{opacity:0;animation:fade .6s 1.2s forwards}
}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes point{to{opacity:1;transform:none}}
@keyframes fade{to{opacity:1}}
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr}
  .hero-photo{order:-1}
  .seal{width:112px;height:112px;left:auto;right:12px;bottom:-36px}
  .hero-photo{margin-bottom:48px}
}

/* Pay strip */
.paystrip{background:var(--band);color:#F2F2EF;border-block:1px solid var(--rule)}
.paystrip .wrap{display:flex;flex-wrap:wrap;gap:8px 28px;align-items:center;justify-content:space-between;padding:16px 0}
.paystrip p{margin:0;font-weight:600}
.paystrip a{font-weight:700;color:var(--bronze-soft)}

/* Sections */
section.block{padding:clamp(64px,8vw,112px) 0}
.block-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:16px 40px;margin-bottom:36px}
.block-head .lede{margin:0}

/* Work gallery */
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.filters button{font:600 .95rem "Public Sans",sans-serif;min-height:42px;padding:0 14px;border-radius:4px;border:1.5px solid var(--rule);background:transparent;color:var(--ink);cursor:pointer}
.filters button:hover{border-color:var(--ink)}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.filters .count{font-weight:400;opacity:.7;margin-left:4px}
@media (max-width:900px){
  .filters{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding:2px 16px 8px;scrollbar-width:none}
  .filters::-webkit-scrollbar{display:none}
  .filters button{flex:none}
}
.gallery{columns:3 280px;column-gap:14px}
.gallery figure{break-inside:avoid;margin:0 0 14px;position:relative}
.gallery figure[hidden]{display:none}
.gallery button.shot{display:block;width:100%;padding:0;border:0;background:var(--slab-2);cursor:zoom-in;border-radius:3px;overflow:hidden}
.gallery img{width:100%;height:auto}
.gallery figcaption{font-size:.85rem;color:var(--granite);padding:6px 2px 0}
.more{margin-top:12px}

/* Lightbox */
dialog.lightbox{border:0;padding:0;background:transparent;max-width:min(1200px,96vw);max-height:94vh;width:100%;color:#fff}
dialog.lightbox::backdrop{background:rgba(12,14,16,.92)}
.lb-inner{display:flex;flex-direction:column;align-items:center;gap:10px}
.lb-inner img{max-height:80vh;width:auto;max-width:100%;border-radius:3px;margin-inline:auto}
.lb-bar{display:flex;align-items:center;gap:12px;width:100%;justify-content:space-between}
.lb-bar p{margin:0;font-size:.95rem;flex:1;text-align:center}
.lb-bar button{min-width:48px;min-height:48px;border-radius:50%;border:1.5px solid rgba(255,255,255,.5);background:transparent;color:#fff;font-size:1.4rem;cursor:pointer}
.lb-close{position:fixed;top:14px;right:14px}

/* Services */
.services{background:var(--slab)}
.svc-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(28px,5vw,72px)}
.svc-list{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.svc-list li{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:14px 0;border-bottom:1px solid var(--rule);align-items:baseline}
.svc-list .name{font-family:"Big Shoulders Display",sans-serif;font-weight:700;font-size:1.5rem;line-height:1.1}
.svc-list .desc{grid-column:1/-1;color:var(--granite);font-size:.97rem}
.svc-list a{font-size:.9rem;font-weight:600;white-space:nowrap}
.svc-col h3{margin-bottom:14px}
.combo{margin-top:24px;padding:20px 22px;border-left:4px solid var(--bronze);background:var(--paper)}
.combo p{margin:0}
@media (max-width:860px){.svc-grid{grid-template-columns:1fr}}

/* About */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,72px);align-items:start}
.about-copy p{max-width:62ch}
.video{position:relative;aspect-ratio:16/9;background:#000;border-radius:4px;overflow:hidden}
.video button{all:unset;position:absolute;inset:0;cursor:pointer;display:grid;place-items:center}
.video button img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.75}
.video .play{position:relative;display:flex;align-items:center;gap:10px;background:var(--bronze);color:var(--bronze-ink);padding:12px 20px;border-radius:4px;font-weight:700}
.video button:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-cap{font-size:.9rem;color:var(--granite);margin-top:8px}
@media (max-width:860px){.about-grid{grid-template-columns:1fr}}

/* Area */
.area{background:var(--band);color:#F2F2EF}
.area .lede{color:#C4C8C6}
.area-grid{display:grid;grid-template-columns:auto 1fr;gap:clamp(28px,5vw,72px);align-items:center}
.area-rose{width:clamp(160px,22vw,260px);color:var(--bronze-soft)}
.towns{list-style:none;margin:24px 0 0;padding:0;columns:3 160px;column-gap:24px}
.towns li{padding:6px 0;border-bottom:1px solid rgba(255,255,255,.14);break-inside:avoid;font-weight:500}
.states{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.states span{border:1.5px solid rgba(255,255,255,.35);border-radius:4px;padding:6px 12px;font-weight:600}
.area h2{color:#F2F2EF;margin-bottom:18px}
.about-copy h2{margin-bottom:18px}
@media (max-width:760px){.area-grid{grid-template-columns:1fr}.area-rose{width:140px}}

/* FAQ */
.faq-list{max-width:820px;border-top:2px solid var(--ink)}
.faq-list details{border-bottom:1px solid var(--rule)}
.faq-list summary{cursor:pointer;list-style:none;padding:18px 40px 18px 0;position:relative;font-weight:700;font-size:1.125rem}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"+";position:absolute;right:6px;top:12px;line-height:1;transition:transform .25s ease;font-size:1.6rem;font-weight:400;color:var(--bronze)}
.faq-list details[open] summary::after{transform:rotate(45deg)}
.faq-list details p{margin:0 0 18px;color:var(--granite);max-width:65ch}

/* Estimate */
.estimate{background:var(--slab)}
.est-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,5vw,64px);align-items:start}
form.quote{background:var(--paper);padding:clamp(20px,3vw,32px);border-radius:4px;border:1px solid var(--rule)}
.field{margin-bottom:16px}
.field label{display:block;font-weight:600;margin-bottom:6px}
.field .opt{font-weight:400;color:var(--granite)}
.field input,.field select,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--paper);border:1.5px solid var(--rule);border-radius:4px;padding:12px}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 35%,transparent)}
.field textarea{min-height:120px;resize:vertical}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:560px){.row2{grid-template-columns:1fr}}
.hp{position:absolute;left:-9999px}
.form-status{margin:14px 0 0;font-weight:600}
.form-status.err{color:#B3261E}
.contact-card dl{margin:0;border-top:2px solid var(--ink)}
.contact-card dl div{padding:14px 0;border-bottom:1px solid var(--rule)}
.contact-card dt{font-size:.9rem;color:var(--granite)}
.contact-card dd{margin:2px 0 0;font-weight:700;font-size:1.2rem}
.contact-card dd a{text-decoration:none}
.contact-card dd a:hover{color:var(--bronze);text-decoration:underline}
.contact-card .small{font-size:1rem;font-weight:600}
@media (max-width:860px){.est-grid{grid-template-columns:1fr}}

/* Footer */
footer{background:var(--band);color:#C4C8C6;padding:40px 0 110px;font-size:.95rem}
footer .wrap{display:flex;flex-wrap:wrap;gap:16px 40px;justify-content:space-between}
footer a{color:#F2F2EF}
footer .brand-mark{color:#F2F2EF}
@media (min-width:761px){footer{padding-bottom:40px}}

/* Mobile action bar */
.actionbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:none;grid-template-columns:1fr 1fr;gap:8px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--header-bg);backdrop-filter:blur(8px);border-top:1px solid var(--rule)}
.actionbar .btn{justify-content:center;min-height:50px}
@media (max-width:760px){.actionbar{display:grid}}

/* ---- Multipage additions ---- */
.nav a[aria-current="page"]{color:var(--bronze);text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:2px}
.page-head{background:var(--slab);padding:clamp(40px,6vw,80px) 0 clamp(32px,4vw,56px);border-bottom:1px solid var(--rule)}
.page-head h1{font-size:clamp(2.8rem,6vw,4.75rem);font-weight:900;margin:10px 0 18px;max-width:18ch;text-wrap:balance}
.page-head .lede{margin:0}
.crumbs{font-size:.92rem;color:var(--granite)}
.crumbs a{color:var(--granite)}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.crumbs li+li::before{content:"/";margin-right:6px;opacity:.6}

/* Home: featured work strip */
.featured{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:clamp(150px,16vw,220px);gap:12px}
.featured figure{margin:0;position:relative;overflow:hidden;border-radius:3px;background:var(--slab-2)}
.featured figure:nth-child(1){grid-column:span 3;grid-row:span 2}
.featured figure:nth-child(2),.featured figure:nth-child(3){grid-column:span 3}
.featured figure:nth-child(n+4){grid-column:span 2}
.featured button.shot{all:unset;display:block;width:100%;height:100%;cursor:zoom-in}
.featured button.shot:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.featured img{width:100%;height:100%;object-fit:cover}
.featured figcaption{position:absolute;left:0;right:0;bottom:0;padding:24px 12px 10px;color:#fff;font-size:.88rem;font-weight:600;background:linear-gradient(transparent,rgba(0,0,0,.7));pointer-events:none}
@media (max-width:760px){
  .featured{grid-template-columns:1fr 1fr;grid-auto-rows:150px}
  .featured figure:nth-child(n){grid-column:span 1;grid-row:span 1}
  .featured figure:nth-child(1){grid-column:span 2;grid-row:span 2}
}
.section-foot{margin-top:28px;display:flex;flex-wrap:wrap;gap:12px}

/* Home: services overview */
.svc-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,24px)}
.svc-card{display:flex;flex-direction:column;text-decoration:none;background:var(--paper);border:1px solid var(--rule);border-radius:4px;overflow:hidden}
.svc-card img{width:100%;aspect-ratio:3/2;object-fit:cover;height:auto}
.svc-card .body{padding:16px 18px 18px}
.svc-card h3{font-size:1.6rem;margin-bottom:6px}
.svc-card p{margin:0;color:var(--granite);font-size:.97rem}
.svc-card:hover h3{color:var(--bronze)}
@media (max-width:900px){.svc-cards{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.svc-cards{grid-template-columns:1fr}}

/* CTA band */
.cta-band{background:var(--band);color:#F2F2EF;padding:clamp(48px,6vw,80px) 0;border-top:1px solid var(--rule)}
.cta-band .wrap{display:flex;flex-wrap:wrap;gap:20px 40px;align-items:center;justify-content:space-between}
.cta-band h2{color:#F2F2EF;font-size:clamp(2.2rem,4.5vw,3.5rem);max-width:20ch}
.cta-band p{margin:10px 0 0;color:#C4C8C6;max-width:52ch}
.cta-band .actions{display:flex;flex-wrap:wrap;gap:12px}
.cta-band .btn-ghost{color:#F2F2EF}
.cta-band .btn-ghost:hover{background:rgba(255,255,255,.08)}

/* Services page detail rows */
.svc-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(24px,4vw,56px);align-items:center;padding:clamp(36px,5vw,64px) 0;border-bottom:1px solid var(--rule)}
.svc-detail:nth-of-type(even) .svc-photo{order:2}
.svc-photo img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px}
.svc-detail h2{font-size:clamp(2.2rem,4vw,3.2rem);margin-bottom:14px}
.svc-detail ul{margin:0 0 20px;padding-left:1.1em;color:var(--granite)}
.svc-detail li{margin:4px 0}
.svc-links{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-weight:600}
@media (max-width:860px){.svc-detail{grid-template-columns:1fr}.svc-detail:nth-of-type(even) .svc-photo{order:0}}

/* Small extras grid on services page */
.extras{display:grid;grid-template-columns:repeat(3,1fr);gap:0 32px;border-top:2px solid var(--ink);margin-top:8px}
.extras div{padding:18px 0;border-bottom:1px solid var(--rule)}
.extras h3{font-size:1.45rem;margin-bottom:4px}
.extras p{margin:0;color:var(--granite);font-size:.97rem}
@media (max-width:860px){.extras{grid-template-columns:1fr}}

/* Footer text + mobile menu */
footer p{margin:8px 0 0}
.menu-btn{display:none;font:700 1rem "Public Sans",sans-serif;min-height:44px;padding:0 14px;border-radius:4px;border:1.5px solid var(--rule);background:transparent;color:var(--ink);cursor:pointer}
@media (max-width:900px){
  .menu-btn{display:inline-flex;align-items:center}
  .site-header .wrap{gap:10px}
  .nav{position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;background:var(--paper);border-bottom:1px solid var(--rule);padding:6px 16px 14px}
  .site-header.open .nav{display:flex}
  .nav a{padding:14px 0;border-bottom:1px solid var(--rule);font-size:1.1rem}
  .nav a:last-child{border-bottom:0}
}
@media (max-width:420px){.header-call svg{display:none}.header-call{padding:0 12px}}

/* About: how a job goes (a real sequence, so numbered) */
.steps-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;counter-reset:step}
.steps-list li{counter-increment:step;border-top:2px solid var(--ink);padding-top:14px}
.steps-list li::before{content:counter(step);font:800 2.4rem/1 "Big Shoulders Display",sans-serif;color:var(--bronze);display:block;margin-bottom:8px}
.steps-list h3{margin-bottom:6px}
.steps-list p{margin:0;color:var(--granite)}
@media (max-width:860px){.steps-list{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.steps-list{grid-template-columns:1fr}}

.lb-close{position:fixed;top:14px;right:14px;min-width:48px;min-height:48px;border-radius:50%;border:1.5px solid rgba(255,255,255,.5);background:rgba(0,0,0,.4);color:#fff;font-size:1.4rem;cursor:pointer}
.page-head + .wrap > .svc-detail:first-child{padding-top:clamp(40px,5vw,64px)}

/* ================= Polish + motion (Nov 2026) ================= */
:root{interpolate-size:allow-keywords;--ease:cubic-bezier(.2,.8,.2,1)}

/* Saw-cut control joints: a faint slab grid behind the hero and page heads */
.hero,.page-head{position:relative;isolation:isolate;overflow:hidden}
.hero::before,.page-head::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    repeating-linear-gradient(90deg,transparent 0 239px,color-mix(in srgb,var(--rule) 70%,transparent) 239px 240px),
    repeating-linear-gradient(0deg,transparent 0 239px,color-mix(in srgb,var(--rule) 70%,transparent) 239px 240px);
  -webkit-mask:linear-gradient(115deg,#000 10%,transparent 75%);mask:linear-gradient(115deg,#000 10%,transparent 75%)}
/* Concrete grain on the grey slabs */
.services{position:relative;isolation:isolate}
.hero::after,.page-head::after,.services::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.35;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* Header gets weight once you scroll */
.site-header{transition:box-shadow .3s ease}
.site-header.scrolled{box-shadow:0 8px 24px -12px rgba(0,0,0,.55)}
.brand-mark{transition:color .2s}
.brand:hover .brand-mark{color:var(--bronze)}
.nav a{position:relative;transition:color .2s}
@media (min-width:901px){
  .nav a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
  .nav a:hover::after{transform:scaleX(1)}
  .nav a[aria-current="page"]{text-decoration:none}
  .nav a[aria-current="page"]::after{transform:scaleX(1)}
}

/* Buttons: press feedback */
.btn{transition:transform .15s ease,filter .2s,background-color .2s,box-shadow .2s}
.btn-primary:hover{box-shadow:0 6px 18px -8px var(--bronze)}
.btn:active{transform:translateY(1px) scale(.98)}

/* Hero: bronze accent on the facts rule, deeper photo */
.hero-facts{border-top:0;position:relative}
.hero-facts::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--rule)}
.hero-facts::after{content:"";position:absolute;top:-1px;left:0;width:72px;height:3px;background:var(--bronze);transform-origin:left}
.hero-photo img{box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}

/* Page heads: a bronze screed line under the title */
.page-head h1{position:relative;padding-bottom:18px}
.page-head h1::after{content:"";position:absolute;left:0;bottom:0;width:88px;height:4px;background:var(--bronze);transform-origin:left}

/* Photos: slow push-in on hover, caption lifts */
.featured img,.svc-card img,.gallery img{transition:transform .7s var(--ease)}
.featured figure:hover img,.svc-card:hover img,.gallery figure:hover img{transform:scale(1.045)}
.svc-card{position:relative;transition:border-color .25s}
.svc-card::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--bronze);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.svc-card:hover{border-color:var(--granite)}
.svc-card:hover::after,.svc-card:focus-visible::after{transform:scaleX(1)}
.svc-card h3{transition:color .2s}
.featured figcaption{transform:translateY(6px);transition:transform .35s var(--ease)}
.featured figure:hover figcaption{transform:none}
.gallery button.shot{overflow:hidden}
.svc-links a{text-underline-offset:4px;text-decoration-thickness:1.5px;transition:color .2s,text-underline-offset .2s}
.svc-links a:hover{color:var(--bronze);text-underline-offset:7px}

/* Filters: active pill in bronze */
.filters button{transition:background-color .2s,border-color .2s,color .2s}
.filters button[aria-pressed="true"]{background:var(--bronze);border-color:var(--bronze);color:var(--bronze-ink)}

/* Steps: outlined display numbers (a real sequence) */
.steps-list li::before{font-size:3.6rem;color:transparent;-webkit-text-stroke:1.5px var(--bronze)}

/* Area band: towns get a small bronze diamond */
.towns li{padding-left:16px;position:relative}
.towns li::before{content:"";position:absolute;left:0;top:50%;width:6px;height:6px;margin-top:-3px;background:var(--bronze-soft);transform:rotate(45deg)}

/* FAQ: smooth open where the browser supports it */
.faq-list details::details-content{block-size:0;overflow:hidden;transition:block-size .3s var(--ease),content-visibility .3s allow-discrete}
.faq-list details[open]::details-content{block-size:auto}
.faq-list summary{transition:color .2s}
.faq-list summary:hover{color:var(--bronze)}

.field input,.field select,.field textarea{transition:border-color .2s,box-shadow .2s}

@media (prefers-reduced-motion: no-preference){
  /* Page load, the one orchestrated moment: text rises, the photo is screeded in left to right, then the seal draws. */
  .hero-grid > div:first-child > *{animation:rise .8s var(--ease) both}
  .hero-grid > div:first-child > :nth-child(2){animation-delay:.08s}
  .hero-grid > div:first-child > :nth-child(3){animation-delay:.16s}
  .hero-grid > div:first-child > :nth-child(4){animation-delay:.24s}
  .hero-facts::after{animation:grow .9s .6s var(--ease) both}
  .hero-photo img{animation:screed 1.1s .15s cubic-bezier(.7,0,.2,1) both}
  .hero-photo::before{content:"";position:absolute;top:-8px;bottom:-8px;width:6px;z-index:2;background:var(--bronze);border-radius:2px;left:0;opacity:0;animation:bar 1.1s .15s cubic-bezier(.7,0,.2,1) both}
  .page-head h1,.page-head .lede{animation:rise .7s var(--ease) both}
  .page-head .lede{animation-delay:.1s}
  .page-head h1::after{animation:grow .8s .35s var(--ease) both}

  /* Responses to actions */
  .gallery figure.pop{animation:pop .45s var(--ease) both;animation-delay:calc(var(--i,0) * 28ms)}
  dialog.lightbox[open]{animation:zoomin .3s var(--ease)}
  dialog.lightbox[open]::backdrop{animation:fadein .3s ease}
  #lbImg.swap{animation:fadein .35s ease}
  .site-header.open .nav{animation:drop .28s var(--ease)}
  .actionbar{animation:up .5s .6s var(--ease) both}

}
@keyframes spinin{from{opacity:0;transform:rotate(-60deg) scale(.6)}to{opacity:1;transform:none}}
@keyframes growpt{from{opacity:0;transform:scale(.15)}to{opacity:1;transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes screed{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes bar{0%{left:0;opacity:1}85%{opacity:1}100%{left:calc(100% - 6px);opacity:0}}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
@keyframes zoomin{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
@keyframes fadein{from{opacity:0}to{opacity:1}}
@keyframes drop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}

/* ---- Compass rose (seal + area band) ---- */
.cmp .ticks,.cmp .pts > g,.seal .ticks,.seal .pts > g{transform-origin:100px 100px}
.area-rose{filter:drop-shadow(0 6px 18px rgba(0,0,0,.35))}
@media (prefers-reduced-motion: no-preference){
  /* Seal: draws in after the hero photo is revealed */
  .seal .ticks{animation:spinin 1s .55s var(--ease) both}
  .seal .p-card{animation:growpt .7s .8s var(--ease) both}
  .seal .p-inter{animation:growpt .7s .95s var(--ease) both}
  .seal .p-minor{animation:growpt .7s 1.1s var(--ease) both}
  .seal .hub{animation:growpt .5s .75s var(--ease) both}
  /* Area band: same build, once it scrolls into view */
  .js .area-rose .ring{stroke-dasharray:620;stroke-dashoffset:620;transition:stroke-dashoffset 1.4s var(--ease)}
  .js .area-rose .ticks{opacity:0;transform:rotate(-60deg) scale(.7);transition:transform 1.2s var(--ease) .15s,opacity .6s .15s}
  .js .area-rose .dots,.js .area-rose .letters{opacity:0;transition:opacity .6s 1s}
  .js .area-rose .pts > g{opacity:0;transform:scale(.15);transition:transform .8s var(--ease),opacity .4s}
  .js .area-rose .hub{transition-delay:.4s}
  .js .area-rose .p-card{transition-delay:.5s}
  .js .area-rose .p-inter{transition-delay:.7s}
  .js .area-rose .p-minor{transition-delay:.85s}
  .js .area-rose.in .ring{stroke-dashoffset:0}
  .js .area-rose.in .ticks,.js .area-rose.in .pts > g{opacity:1;transform:none}
  .js .area-rose.in .dots{opacity:.6}
  .js .area-rose.in .letters{opacity:1}
}

/* ---- Job photos as section backgrounds ---- */
.photo{position:relative;isolation:isolate;background-color:var(--band);color:#F2F2EF}
.photo > .wrap{position:relative;z-index:1}
.page-head.photo,.cta-band.photo,.area.photo,.cta-photo.photo{
  background-image:linear-gradient(100deg,rgba(14,17,19,.94) 0%,rgba(14,17,19,.82) 45%,rgba(14,17,19,.5) 100%),var(--bg);
  background-size:cover;background-position:center}
.area.photo{background-image:linear-gradient(rgba(14,17,19,.86),rgba(14,17,19,.86)),var(--bg)}
.cta-band.photo{background-image:linear-gradient(100deg,rgba(14,17,19,.92) 0%,rgba(14,17,19,.78) 50%,rgba(14,17,19,.55) 100%),var(--bg);padding:clamp(72px,9vw,128px) 0}
@media (min-width:900px){.page-head.photo,.cta-band.photo,.area.photo,.cta-photo.photo{background-attachment:fixed}}
@media (max-width:760px){.page-head.photo,.cta-band.photo,.cta-photo.photo{background-image:linear-gradient(rgba(14,17,19,.84),rgba(14,17,19,.84)),var(--bg)}}
.page-head.photo{padding:clamp(64px,9vw,128px) 0 clamp(48px,6vw,88px);border-bottom:0}
.page-head.photo::before,.page-head.photo::after{display:none}
.page-head.photo .lede,.cta-photo.photo .lede{color:#D3D6D4}
.page-head.photo .crumbs,.page-head.photo .crumbs a{color:#C4C8C6}
.cta-photo.photo h2{color:#F2F2EF}
.cta-photo.photo .btn-ghost{color:#F2F2EF}
.cta-photo.photo .btn-ghost:hover{background:rgba(255,255,255,.08)}
.photo .btn-primary{background:#D99A55;color:#1A1F22}

/* ---- Trustindex review widgets ---- */
.reviews-widget{min-height:240px}
.reviews.photo{background-image:linear-gradient(rgba(14,17,19,.86),rgba(14,17,19,.86)),var(--bg);background-size:cover;background-position:center}
.reviews.photo h2{color:#F2F2EF}
.reviews.photo .lede{color:#D3D6D4}
@media (min-width:900px){.reviews.photo{background-attachment:fixed}}

/* 404: the header is the whole page */
main > .page-head.photo:only-child{min-height:62vh;display:flex;align-items:center}
