:root{color-scheme:light;--ink:#171918;--muted:#5d625f;--paper:#fff;--line:#d6d9d6;--accent:#dfbd68}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper);font-size:1rem;line-height:1.6}a{color:inherit;text-underline-offset:.25em}a:focus-visible{outline:3px solid var(--accent);outline-offset:6px}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{line-height:1.06;letter-spacing:-.045em}h2{font-size:clamp(2.5rem,4.3vw,4.25rem)}h3{font-size:2rem}p+p{margin-top:1.2rem}.eyebrow{font-size:.875rem;letter-spacing:.15em;text-transform:uppercase;font-weight:700;line-height:1.6}.muted{color:var(--muted)}.skip{position:absolute;top:-100px;left:1rem;z-index:10;background:white;padding:1rem}.skip:focus{top:1rem}.header{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding:1.2rem 5%;background:#000;color:#fff}.brand{width:235px;flex-shrink:0}.brand img{width:100%}.header nav{display:flex;gap:2.5rem;font-size:.9375rem}.header nav a{text-decoration:none}.header nav a:hover{text-decoration:underline}.hero{min-height:660px;height:calc(100svh - 130px);max-height:1000px;position:relative;color:white;display:flex;flex-direction:column;justify-content:space-between;padding:4rem 5% 1.8rem;background:#1d282d;isolation:isolate}.hero-photo,.hero-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.hero-photo{object-position:center 58%}.hero-shade{z-index:-1;background:linear-gradient(90deg,rgba(0,0,0,.71),rgba(0,0,0,.13) 75%),linear-gradient(0deg,rgba(0,0,0,.6),transparent 45%)}.hero-copy{max-width:700px}.hero h1{font-size:clamp(4.5rem,7.8vw,8.5rem);margin:1.4rem 0 1.5rem;font-weight:800;line-height:.98}.hero-description{max-width:440px;font-size:1.2rem;line-height:1.5}.hero-foot{display:flex;justify-content:space-between;gap:1rem;font-size:.875rem;border-top:1px solid #ffffff55;padding-top:1.1rem;margin-top:3rem}.section-pad{padding:6.5rem 7%}.intro{display:grid;grid-template-columns:1fr 1.05fr;gap:8%;max-width:1600px;margin:auto}.intro h2{margin-top:1.5rem}.intro-copy{padding-top:2.7rem;color:var(--muted);max-width:650px}.intro .large-copy{font-size:1.65rem;line-height:1.45;color:var(--ink);letter-spacing:-.025em}.work{background:#f1f3f2}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:3rem}.section-heading h2{margin-top:1rem}.section-heading>p{color:var(--muted)}.foundation{display:grid;grid-template-columns:1.3fr 1fr;background:var(--ink);color:#fff}.foundation>img{width:100%;height:100%;min-height:400px;object-fit:cover}.foundation>div{padding:4rem 3rem;display:flex;flex-direction:column;justify-content:center}.service-number{display:block;font-size:.875rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:1.2rem;color:var(--muted)}.foundation .service-number{color:var(--accent)}.foundation h3{font-size:clamp(2.5rem,3.3vw,3.75rem)}.foundation p{color:#d2d6d3;max-width:410px;margin-top:1.5rem}.specialties{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:3rem}.specialties img{width:100%;aspect-ratio:1.5;object-fit:cover}.specialties article>div{padding:2rem 0}.specialties p{margin-top:1rem;max-width:540px;color:var(--muted)}.other-services{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;border-top:1px solid var(--line);margin-top:1.5rem;padding-top:2.5rem}.other-services h3{font-size:1.5rem;letter-spacing:-.025em;line-height:1.2}.other-services p{margin-top:1rem;color:var(--muted)}.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem}.gallery img{width:100%;aspect-ratio:1.55;object-fit:cover}.gallery figcaption{font-size:.875rem;padding-top:.8rem;color:var(--muted)}.contact{background:#211f1f;color:#fff;display:grid;grid-template-columns:1.1fr 1.25fr .7fr;gap:3rem;align-items:center}.contact-title h2{font-size:clamp(2.5rem,3.5vw,3.5rem);margin:1rem 0 1.5rem}.contact-title p:last-child{color:#c8c6c6}.contact-details>div+div{margin-top:2.3rem}.contact-details .eyebrow{display:block;color:#c8c6c6;margin-bottom:.7rem}.contact-details a{display:inline-block;overflow-wrap:anywhere;font-size:clamp(1rem,1.5vw,1.4rem);text-decoration:none}.contact-details a:hover{text-decoration:underline}.contact-mark{width:100%;mix-blend-mode:screen}footer{background:#121313;color:#c7cac8;padding:1.6rem 5%;font-size:.875rem;display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}footer a{text-decoration:none}@media(min-width:1800px){.section-pad{padding-left:max(7%,calc((100vw - 1500px)/2));padding-right:max(7%,calc((100vw - 1500px)/2))}}@media(max-width:1000px){.contact{grid-template-columns:1fr 1fr}.contact-mark{display:none}.other-services{grid-template-columns:1fr 1fr}.foundation>div{padding:2.5rem 2rem}.intro{gap:5%}.hero{height:750px;min-height:0}}@media(max-width:640px){.header{padding:1rem 5%;gap:1rem}.brand{width:160px}.header nav{gap:1rem;font-size:.875rem}.header nav a:nth-child(2){display:none}.hero{height:710px;min-height:0;max-height:900px;padding-top:3.5rem}.hero-photo{object-position:60% center}.hero h1{font-size:4.2rem}.hero-description{font-size:1.05rem;max-width:310px}.hero-foot{flex-direction:column;gap:.2rem}.section-pad{padding:4rem 6%}.intro{grid-template-columns:1fr;gap:0}.intro-copy{padding-top:2rem}.intro .large-copy{font-size:1.4rem}.section-heading{display:block}.section-heading>p{margin-top:1.5rem}.foundation{grid-template-columns:1fr}.foundation>img{min-height:0;aspect-ratio:1.3}.foundation>div{padding:2.3rem 1.7rem}.specialties{grid-template-columns:1fr;gap:1.5rem}.other-services{grid-template-columns:1fr;gap:2rem}.other-services article{border-bottom:1px solid var(--line);padding-bottom:1.8rem}.gallery{gap:1.6rem;grid-template-columns:1fr}.contact{grid-template-columns:1fr;gap:2.5rem}.contact-details a{font-size:1.13rem}footer{flex-direction:column;gap:.5rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* A scroll-led opening for the original excavator-arm mark. */
.logo-opening{position:relative;height:62svh;min-height:400px;max-height:720px;background:#211f1f;color:white;display:flex;align-items:center;justify-content:center;overflow:hidden;perspective:1000px;border-bottom:1px solid #ffffff18}
.logo-opening-inner{display:flex;align-items:center;flex-direction:column;gap:1.25rem;transform-origin:center 25%;will-change:transform,opacity;padding:2rem 1.5rem 5rem}
.opening-mark{width:clamp(260px,32vw,440px);max-height:38svh;object-fit:contain;mix-blend-mode:screen}
.opening-name{font-size:.875rem;letter-spacing:.25em;text-align:center;color:#e4e3e3}
.scroll-invitation{position:absolute;bottom:1.5rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:1rem;text-decoration:none;font-size:.875rem;color:#dad8d8;white-space:nowrap;padding:.5rem}
.scroll-invitation span{font-size:1.5rem;line-height:1;transition:transform .2s}
.scroll-invitation:hover span{transform:translateY(4px)}
.logo-opening+.hero{position:relative;z-index:1}
@media(max-width:640px){.logo-opening{height:59svh;min-height:360px}.opening-mark{width:min(75vw,350px);max-height:35svh}.opening-name{font-size:.875rem;letter-spacing:.14em}.logo-opening-inner{gap:1rem}}
@media(prefers-reduced-motion:reduce){.logo-opening-inner{will-change:auto}.scroll-invitation span{transition:none}}
@keyframes logo-arrive{from{opacity:0;transform:translateY(16px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
.opening-mark{animation:logo-arrive .85s cubic-bezier(.2,.7,.2,1) both}
.opening-name{animation:logo-arrive .7s .12s ease-out both}
@media(prefers-reduced-motion:reduce){.opening-mark,.opening-name{animation:none}}

/* Full-screen introduction; the navigation joins the page on scroll. */
html{scroll-padding-top:var(--nav-height,140px)}
.logo-opening{height:100svh;min-height:400px;max-height:none}
.header{position:sticky;top:0;z-index:20;box-shadow:0 2px 12px #0002}
.skip{z-index:30}
@media(max-width:640px){.logo-opening{height:100svh;min-height:360px}.header{flex-wrap:wrap;justify-content:center;gap:.6rem}.header nav{justify-content:center;gap:1.5rem}.header nav a:nth-child(2){display:inline}}
/* Give the opening mark more presence on the full-screen introduction. */
.opening-mark{width:clamp(325px,40vw,550px);max-height:47.5svh}
@media(max-width:640px){.opening-mark{width:min(88vw,438px);max-height:44svh}}
