/* Shared type roles. Keep all size decisions here. */
:root{
 --type-display:clamp(48px,7.2vw,112px);
 --type-photo:var(--type-subheading);
 --type-heading:clamp(32px,3vw,46px);
 --type-subheading:clamp(24px,2.1vw,32px);
 --type-body:16px;
 --type-detail:14px;
}
body{font-family:Manrope,Arial,sans-serif;font-size:var(--type-body);font-weight:400;line-height:1.7;letter-spacing:normal}
h1,h2,h3,blockquote{font-family:Poppins,Arial,sans-serif;font-weight:300;letter-spacing:-.035em}
em{font-family:inherit;font-weight:inherit;font-style:normal}
h1{font-size:var(--type-display);line-height:1.06;letter-spacing:-.055em}
h1 em{letter-spacing:inherit}
h2,.overview-main h2,.why-editorial-heading h2,.why-editorial-heading #why-title,.contact h2,.contracting-heading h2{font-size:var(--type-heading);line-height:1.22}
.story-overlay h2,#owners .story-overlay h2,#management .story-overlay h2,#bim .story-overlay h2,#assets .story-overlay h2{font-size:var(--type-photo);line-height:1.15}
h3,.overview-copy h3,.overview-service-layout h3,.why-reasons h3,.story-text h3,#owners .story-text h3,#management .story-text h3,#bim .story-text h3,#assets .story-text h3,.contracting-content h3,.mission-interlude>blockquote{font-size:var(--type-subheading);line-height:1.3}
p,.company-definition,.overview-copy p,.why-reasons p,.story-text p,#owners .story-text p,#management .story-text p,#bim .story-text p,#assets .story-text p,.contact>div>p,footer>div>p{font-size:var(--type-body);line-height:1.7;letter-spacing:normal}
.eyebrow,.hero-top,.hero-top>span,.hero-top>span:last-child,.hero-bottom,.hero-bottom>span,.hero-bottom a,.hero-side p,.hero-side a,.overview-services>.eyebrow,.why-brand .eyebrow,.mission-interlude>.eyebrow,.contracting-heading .eyebrow,.contact>div>.eyebrow,.company-lifecycle,.story>.story-image>.service-label,.overview-index a,.story .photo-caption,#owners .photo-caption{font-size:var(--type-body);line-height:1.6;letter-spacing:.07em}
.story>.story-image>.service-label,.overview-index a{font-family:Manrope,Arial,sans-serif;font-weight:600}
.company-about .overview-kicker>.eyebrow{font-family:Manrope,Arial,sans-serif;font-size:var(--type-subheading);font-weight:600;line-height:1.3;letter-spacing:.06em}
.scope,#owners .scope,#management .scope,#bim .scope,#assets .scope,#owners .story-text .scope,#management .story-text .scope,#bim .story-text .scope,#assets .story-text .scope{font-size:var(--type-body);line-height:1.7;letter-spacing:normal}
.story-text a,#owners .story-text a,#management .story-text a,#bim .story-text a,#assets .story-text a,.contracting-link,.contact>div>a,.contact>div>a+a{font-size:var(--type-body);line-height:1.6;letter-spacing:normal}
button,input,select,textarea{font:inherit;font-size:var(--type-body);line-height:1.6;letter-spacing:normal}
label{font-size:var(--type-body);line-height:1.6}
header nav,footer small,footer>a,.contact .form-note,#status,.motion-toggle,.project-video-toggle{font-size:var(--type-detail);line-height:1.6;letter-spacing:normal}
.naics-list dt{font-family:Manrope,Arial,sans-serif;font-size:var(--type-body);font-weight:600;line-height:1.6;letter-spacing:normal}
.naics-list dt>span,.naics-list dd{font-size:var(--type-detail);font-weight:400;line-height:1.6;letter-spacing:normal}
.overview-number,.overview-index .overview-number{font:inherit;letter-spacing:inherit}
.overview-index .overview-arrow{font-size:var(--type-body);line-height:1}
/* Let navigation wrap instead of shrinking its type. */
header nav{flex-wrap:wrap;justify-content:flex-end;min-width:0;gap:12px 28px}
header nav a{line-height:1.6}
.hero-bottom{flex-wrap:wrap;gap:14px 24px}
.hero-bottom>span{max-width:none}
.hero-side{max-width:100%}
.story .photo-caption{max-width:calc(100% - 12%)}
@media(max-width:800px){
 header{gap:20px}header nav{gap:8px 16px}
 .hero-side a{max-width:100%}
 .story>.story-image>.service-label{max-width:calc(100% - 40px)}
 #management .project-video-toggle{top:120px}
 #bim .story-overlay,#assets .story-overlay{bottom:145px}
 #owners .story-image>.story-overlay{bottom:125px}
}
@media(max-width:450px){
 .hero-top>span,.hero-top>span:last-child{max-width:100%}
 .hero-bottom{gap:12px}
 .hero-bottom>span{max-width:100%}
 .story .photo-caption{letter-spacing:.03em}
 #bim .story-overlay{bottom:170px}
}

/* Service image headlines match the service overview subheading scale. */
.story-overlay h2,#owners .story-overlay h2,#management .story-overlay h2,#bim .story-overlay h2,#assets .story-overlay h2,.service-top-copy h3{font-size:var(--type-subheading);line-height:1.3}
.story-overlay h2,.service-top-copy h3{color:#C99383;background:linear-gradient(135deg,#C99383,#B17A50);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.service-caption-row .photo-caption,.service-caption-row .caption-link{font-size:var(--type-body);line-height:1.6;letter-spacing:.03em}
/* Owner representation headline: bold white, with the established size retained. */
#owners .owner-heading .story-overlay h2,#owners .owner-heading .story-overlay h2 em{color:#fff;background:none;-webkit-text-fill-color:#fff;font-weight:700}

/* Both Project Management headlines and supporting caption are bold white. */
#management .service-top-copy h3,#management .service-top-copy h2,#management .service-top-copy h2 em,#management .service-top-copy .photo-caption,#management .service-top-copy .caption-link{color:#fff;background:none;-webkit-text-fill-color:#fff;font-weight:700}
@media(min-width:1000px){.mission-interlude>blockquote{font-size:clamp(16px,1.6vw,24px);line-height:1.5;white-space:nowrap}}
/* Company introduction matches the service overview heading size. */
.company-about .overview-kicker>.eyebrow,
.company-about .company-intro>h2{font-size:var(--type-subheading);line-height:1.3}

/* Contracting title follows the hero strapline scale with one consistent color. */
.contracting-heading h2{font-family:Manrope,Arial,sans-serif;font-size:var(--type-body);font-weight:600;line-height:1.6;letter-spacing:.07em;color:#364f6b;white-space:nowrap}
@media(max-width:600px){.contracting-heading h2{white-space:normal}}

/* Editorial rhythm: one spacing scale for headings, copy and supporting links. */
:root{--copy-gap:12px;--group-gap:24px;--copy-leading:1.65}
p,.overview-copy p,.company-definition,.story-text p,
#owners .owner-service-details p,
#management.service-panorama .panorama-lead p,
#management.service-panorama .panorama-tile p,
#assets.service-panorama .panorama-lead p,
#assets.service-panorama .panorama-tile p,
#contact>div>p{font-size:var(--type-body);line-height:var(--copy-leading);letter-spacing:normal}
.overview-main h2 em{margin-top:0}
.company-intro .company-definition{margin-top:var(--copy-gap)}
.overview-copy h3{margin:var(--group-gap) 0 var(--copy-gap)}
.overview-copy p+p{margin-top:var(--copy-gap)}
#perspective .overview-service-layout h3{margin:0 0 var(--copy-gap)}
#owners .owner-detail-panel>.story-overlay{margin-bottom:var(--group-gap)}
#owners .owner-tabs{margin-bottom:var(--group-gap)}
#owners .owner-service-details h3,
#management.service-panorama .panorama-tile h3,
#assets.service-panorama .panorama-tile h3{font-family:Poppins,Arial,sans-serif;font-size:20px;font-weight:500;line-height:1.4;letter-spacing:-.02em}
#owners .owner-service-details h3{margin:0 0 var(--copy-gap)}
#owners .owner-service-details article{min-height:0}
.service-panorama .panorama-kicker{margin-bottom:var(--copy-gap)}
.service-panorama .panorama-lead h2{margin:0 0 var(--copy-gap)}
.service-reveal-inner>p{padding-top:var(--copy-gap)}
.service-example{margin:var(--copy-gap) 0 0}
.service-example figcaption{margin-top:var(--copy-gap)}
.service-example figcaption a{margin-top:0}
.story-text .scope,#owners .story-text .scope,#bim .story-text .scope{margin-top:var(--copy-gap);line-height:var(--copy-leading)}
.story-text a,#owners .story-text a,#bim .story-text a{margin-top:var(--copy-gap)}
.contracting-heading h2{margin-top:var(--copy-gap)}
.contracting-content h3{margin-bottom:var(--copy-gap)}
.naics-list dl{margin:0}
.naics-list dd{margin:4px 0 0;line-height:var(--copy-leading)}
#contact h2{margin:var(--copy-gap) 0}
#contact>div>p{margin-bottom:var(--group-gap)}
#contact>div>a{margin-top:var(--copy-gap)}
#contact label{margin-bottom:var(--group-gap)}
#contact .form-note,#contact #status:not(:empty){margin-top:var(--copy-gap)}
#contact #status:empty{display:none}
@media(max-width:800px){.story-text{gap:var(--group-gap)}}
