/* Every value here is Er-Con Brand Standards. Names follow the guide's, minus
   its brand-/neutral-/earth- prefixes. Only what the site actually uses is
   declared: the earth accents and status colours are chart colours, and this
   site has no charts. Their values live in the standards, not here, so nothing
   is lost by leaving them out - and nothing goes stale by carrying them. */
:root{
/* Navy - authority, and the Reverse ground */
--navy:#0B2D5B;--navy-deep:#061A36;--navy-lift:#173F75;--navy-edge:#2F527F;
/* Signal - the accent. Navy's own hue lifted. Light grounds take Signal,
   dark grounds Signal Light. Neither goes on a photograph: type there is white. */
--signal:#0067D0;--signal-light:#4794FF;
/* Neutrals - concrete. True neutrals, chroma under 1.5. Silver is the reverse
   partner; it is NOT a light Slate, which is a warm earth tone and unrelated. */
--ink:#1D1D1B;--graphite:#4A4949;--fog:#8C8B8A;--silver:#ABAAA9;
--haze:#D8D7D6;--frost:#EAE9E8;--mist:#F4F4F3;
/* Signal Amber - caution and the one highlighted stat. The only earth accent
   the site uses. */
--amber:#EAA21A;
/* Layout */
--max:1240px;--shadow:0 18px 50px rgba(6,26,54,.15)}
.projects-page-hero{background:linear-gradient(135deg,var(--navy-deep),var(--navy-lift));color:white}.projects-page-hero-inner{max-width:var(--max);min-height:500px;margin:auto;display:grid;grid-template-columns:.9fr 1.1fr;align-items:stretch}.projects-page-hero-copy{padding:78px 58px 78px 24px;align-self:center}.projects-page-hero-copy h1{margin:10px 0 24px;font-size:clamp(50px,5.8vw,78px);line-height:.94;letter-spacing:-.04em}.projects-page-hero-copy h1 span{color:var(--signal-light)}.projects-page-hero-copy>p:last-child{max-width:570px;color:var(--haze);font-size:18px}.projects-page-hero-image{min-height:500px;background:linear-gradient(90deg,rgba(6,26,54,.45),transparent 32%),url('assets/project_pipeline.jpg') center/cover no-repeat}.project-showcase-intro{max-width:840px;margin-bottom:46px}.project-showcase-intro h2{color:var(--navy);font-size:clamp(38px,4vw,58px);line-height:1.03;margin:8px 0 18px}.project-showcase-intro>p:last-child{color:var(--graphite);font-size:18px}.project-case-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.project-case{background:white;border:1px solid var(--haze);border-top:5px solid var(--signal);box-shadow:0 12px 34px rgba(6,26,54,.09);overflow:hidden}.project-case-featured{grid-column:1/-1;display:grid;grid-template-columns:1.25fr .75fr}.project-case img{width:100%;height:300px;object-fit:cover}.project-case-featured img{height:100%;min-height:390px}.project-case-copy{padding:30px}.project-case-copy h3{color:var(--navy);font-size:clamp(26px,3vw,36px);line-height:1.08;margin:8px 0 14px}.project-case-copy>p:last-child{color:var(--graphite);font-size:17px;margin-bottom:0}.project-environments{background:linear-gradient(125deg,var(--navy-deep),var(--navy-lift));color:white;padding:82px 24px}.project-environments-inner{max-width:var(--max);margin:auto;display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;align-items:center}.project-environments h2{font-size:clamp(36px,4vw,54px);line-height:1.04;margin:8px 0 18px}.project-environments p{color:var(--haze);font-size:18px}.project-environments ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.project-environments li{background:linear-gradient(145deg,var(--navy-edge),var(--navy-lift));border:1px solid rgba(71,148,255,.48);padding:20px;color:white;font-weight:800}.project-preview-link{text-align:center;margin-top:34px}.project-preview-link .text-link{font-size:16px}.project-case-grid+*{margin-top:34px}@media (max-width:900px){.projects-page-hero-inner,.project-environments-inner{grid-template-columns:1fr}.projects-page-hero-image{min-height:300px}.project-case-featured{grid-template-columns:1fr}.project-case-featured img{min-height:300px;height:300px}}@media (max-width:600px){.projects-page-hero-copy{padding:62px 20px}.projects-page-hero-copy h1{font-size:46px}.project-showcase{padding-left:20px;padding-right:20px}.project-case-grid{grid-template-columns:1fr}.project-case-featured{grid-column:auto}.project-case img,.project-case-featured img{height:240px;min-height:240px}.project-case-copy{padding:25px}.project-environments{padding:60px 20px}.project-environments ul{grid-template-columns:1fr}}
.openings-intro>p:not(.eyebrow){color:var(--graphite);font-size:18px}.talent-invite{margin-top:54px;padding:30px 28px;background:var(--frost);border-top:5px solid var(--navy);box-shadow:var(--shadow)}.talent-invite h3{margin:8px 0 16px;color:var(--navy);font-size:clamp(26px,2.4vw,34px);line-height:1.08}.talent-invite>p:not(.eyebrow){margin:0 0 24px;color:var(--graphite);font-size:16px;line-height:1.65}.talent-invite .btn{display:flex;width:100%;text-align:center}.talent-invite small{display:block;margin-top:14px;color:var(--graphite);font-size:13px;line-height:1.45}
.section-heading.light h1{color:white}.solutions-framework-first{padding-top:58px}.solutions-framework-first .framework-heading{max-width:900px;margin-bottom:38px}.framework-heading h1{font-size:clamp(42px,5vw,68px);line-height:1.02;letter-spacing:-.035em;margin:0 0 18px}.framework-heading h1 span{color:var(--signal-light)}.solutions-framework-first .framework-flow{grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr) 34px minmax(0,1.2fr) 34px minmax(0,1fr) 34px minmax(0,1fr);align-items:center}.solutions-framework-first .framework-step{background:linear-gradient(145deg,var(--navy-edge),var(--navy-lift));border-color:rgba(71,148,255,.48);box-shadow:0 14px 30px rgba(6,26,54,.24)}.solutions-framework-first .framework-step p{color:var(--frost)}.solutions-framework-first .framework-gate{min-height:280px;clip-path:none;border:2px solid var(--signal-light);border-top-width:6px;border-bottom-width:6px;box-shadow:0 18px 38px rgba(6,26,54,.34);z-index:2}.dark .service-card{background:linear-gradient(145deg,var(--navy-edge),var(--navy-lift));border-color:rgba(71,148,255,.48);box-shadow:0 14px 30px rgba(6,26,54,.24)}.dark .service-card p{color:var(--frost)}.dark .service-card span{color:rgba(71,148,255,.18)}.local-partnerships{background:linear-gradient(90deg,var(--mist) 0 43%,#fff 43%);padding:82px 24px}.local-partnerships-inner{max-width:var(--max);margin:auto;display:grid;grid-template-columns:.82fr 1.18fr;gap:85px;align-items:start}.local-partnerships h2{color:var(--navy);font-size:clamp(38px,4vw,56px);line-height:1.04;letter-spacing:-.025em;margin:8px 0 0}.local-partnerships h2 span{color:var(--signal)}.local-partnerships-copy{border-left:5px solid var(--signal);padding:8px 0 8px 34px}.local-partnerships-copy p{color:var(--graphite);font-size:18px;margin:0}.local-partnerships-copy p+p{margin-top:20px}@media (max-width:900px){.solutions-framework-first .framework-flow{grid-template-columns:1fr}.solutions-framework-first .framework-gate{min-height:unset}.local-partnerships{background:var(--mist)}.local-partnerships-inner{grid-template-columns:1fr;gap:36px}}@media (max-width:600px){.local-partnerships{padding:60px 20px}.local-partnerships-copy{padding-left:24px}}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:#fff;line-height:1.5}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.site-header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid rgba(211,218,226,.82)}.nav-wrap{max-width:var(--max);margin:auto;min-height:82px;padding:10px 24px;display:flex;align-items:center;justify-content:space-between}.brand img{width:205px}.main-nav{display:flex;align-items:center;gap:34px;font-weight:700;font-size:14px;letter-spacing:.04em;text-transform:uppercase}.main-nav a:hover{color:var(--signal)}.menu-btn{display:none;border:0;background:var(--navy);color:white;padding:10px 14px;border-radius:4px;font-weight:700}
.hero{position:relative;min-height:690px;background:url('assets/hero.jpg') center 58%/cover no-repeat;color:white;overflow:hidden}.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.98) 0%,rgba(255,255,255,.94) 37%,rgba(255,255,255,.30) 59%,rgba(6,26,54,.42) 100%)}.hero-inner{position:relative;z-index:2;max-width:var(--max);min-height:690px;margin:auto;padding:68px 24px;display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}.hero-copy{color:var(--ink);max-width:640px}.hero-logo{width:240px;margin-bottom:38px}.eyebrow{text-transform:uppercase;font-weight:800;letter-spacing:.085em;font-size:15px;margin:0 0 8px}.hero-copy>.eyebrow{color:var(--signal);margin-bottom:3px}.hero h1{color:var(--navy);font-size:clamp(44px,5vw,72px);line-height:.98;text-transform:uppercase;letter-spacing:-.025em;margin:0 0 18px}.accent-line{display:block;width:92px;height:4px;background:var(--signal);margin:24px 0}.lead{font-size:20px;max-width:590px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:3px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:13px}.primary{background:var(--signal);color:#fff}.primary:hover{background:var(--navy)}.ghost{color:var(--navy);border:2px solid var(--navy);background:rgba(255,255,255,.84)}.hero-proof{justify-self:end;max-width:390px;text-shadow:0 1px 2px rgba(0,0,0,.55);font-size:18px}.hero-proof strong{color:var(--signal-light)}.years{width:210px;height:210px;border-radius:50%;border:9px solid rgba(255,255,255,.94);background:rgba(6,26,54,.88);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-bottom:25px;box-shadow:var(--shadow)}.years strong{font-size:78px;line-height:.85;color:white}.years span:not(.small){font-size:24px;font-weight:800;text-transform:uppercase}.years .small{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}
.stats{background:linear-gradient(100deg,var(--navy-deep),var(--navy-lift));color:white;display:grid;grid-template-columns:repeat(3,1fr);padding:28px max(24px,calc((100vw - var(--max))/2));gap:0}.stat{padding:14px 38px;border-left:1px solid rgba(255,255,255,.35);display:flex;flex-direction:column}.stat:first-child{border-left:0}.stat-num{display:flex;align-items:flex-start;min-height:48px;font-size:42px;font-weight:900;color:#fff;line-height:1}.stat span:last-child{text-transform:uppercase;font-weight:700;font-size:13px;line-height:1.35;letter-spacing:.06em;margin-top:8px}
.section{padding:90px 24px;max-width:var(--max);margin:auto}.section-heading{text-align:center;max-width:780px;margin:0 auto 48px}.section-heading h2,.engineering-copy h2,.cta h2{font-size:clamp(34px,4vw,54px);line-height:1.05;color:var(--navy);margin:8px 0 14px}.section-heading p{color:var(--graphite);font-size:18px}.blue{color:var(--signal)!important}.intro-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:60px;align-items:start}.intro-copy{font-size:18px;color:var(--graphite)}.text-link{display:inline-block;margin-top:10px;color:var(--signal);font-weight:800}.application-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.application-card{padding:24px;border:1px solid var(--haze);border-radius:8px;background:#fff;box-shadow:0 8px 26px rgba(6,26,54,.06);display:flex;flex-direction:column;overflow:hidden;color:inherit;transition:transform .2s ease,box-shadow .2s ease}.application-card:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(6,26,54,.13)}.application-card:focus-visible{outline:4px solid var(--signal);outline-offset:4px}.application-grid h3{color:var(--navy);margin:0 0 7px}.application-grid p{margin:0;color:var(--graphite)}.application-photo{margin:auto -24px -24px;padding-top:22px}.application-photo img{width:100%;height:155px;object-fit:cover}.application-photo-river img{object-position:center 52%}.application-photo-pipeline img{object-position:center 50%}.application-photo-bridge img{object-position:center 55%}.application-photo-installed img{object-position:center 58%}
.dark{max-width:none;background:linear-gradient(135deg,var(--navy-deep),var(--navy-lift));color:white;padding-left:max(24px,calc((100vw - var(--max))/2));padding-right:max(24px,calc((100vw - var(--max))/2))}.section-heading.light h2,.section-heading.light p{color:white}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;max-width:var(--max);margin:auto}.service-card{position:relative;min-height:245px;padding:30px;border:1px solid rgba(255,255,255,.17);background:rgba(255,255,255,.07);border-radius:8px;overflow:hidden}.service-card span{position:absolute;right:22px;top:14px;font-size:52px;font-weight:900;color:rgba(255,255,255,.08)}.service-card h3{font-size:24px;margin:45px 0 10px}.service-card p{color:var(--haze);margin:0}.service-card:before{content:"";position:absolute;left:30px;top:31px;width:42px;height:4px;background:var(--signal)}
.engineering-callout{display:grid;grid-template-columns:1.1fr .9fr;max-width:var(--max);gap:55px;align-items:center}.engineering-image{min-height:470px;border-radius:9px;background:url('assets/engineering-plans-collage-v2.jpg') center/cover no-repeat;box-shadow:var(--shadow)}.engineering-copy p{font-size:18px;color:var(--graphite)}.engineering-copy ul{padding-left:19px;font-weight:700;color:var(--navy);line-height:2}
.projects{padding-top:70px}.project-grid{display:grid;grid-template-columns:1.4fr .8fr;grid-template-rows:1fr 1fr;gap:18px}.project-card{margin:0;position:relative;overflow:hidden;border-radius:9px;min-height:265px;background:var(--haze)}.project-card.large{grid-row:1/span 2;min-height:548px}.project-selector{width:100%;padding:0;border:0;cursor:pointer;text-align:left;font:inherit;color:inherit}.project-selector:focus-visible{outline:4px solid var(--signal);outline-offset:4px}.project-card img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:transform .5s ease}.project-selector:hover img{transform:scale(1.035)}.project-card:after{content:"";position:absolute;inset:40% 0 0;background:linear-gradient(transparent,rgba(6,26,54,.87));pointer-events:none}.project-caption{position:absolute;z-index:2;left:25px;right:25px;bottom:23px;color:#fff}.project-caption span{display:block;color:var(--signal-light);text-transform:uppercase;font-size:12px;font-weight:900;letter-spacing:.08em}.project-caption strong{display:block;font-size:24px}.project-card.is-changing img,.project-card.is-changing .project-caption{animation:project-change .32s ease}@keyframes project-change{0%{opacity:.35;transform:scale(1.025)}100%{opacity:1;transform:scale(1)}}
.cta{max-width:none;background:var(--mist);padding:70px max(24px,calc((100vw - var(--max))/2));display:grid;grid-template-columns:1.2fr .8fr;gap:60px;align-items:center}.cta>div:first-child p:last-child{font-size:18px;color:var(--graphite)}.contact-card{background:white;padding:34px;border-left:5px solid var(--signal);box-shadow:var(--shadow)}.contact-card>a:not(.btn){display:block;font-size:22px;font-weight:800;color:var(--navy);margin-bottom:7px}.contact-card p{color:var(--graphite)}.contact-card .btn{margin-top:8px}
footer{background:white;border-top:1px solid var(--haze)}.footer-inner{max-width:var(--max);margin:auto;padding:28px 24px;display:flex;align-items:center;gap:32px;color:var(--graphite);font-size:13px}.footer-inner p:last-child{margin-left:auto}
.main-nav a[aria-current="page"]{color:var(--signal)}
.about-hero{background:linear-gradient(135deg,var(--navy-deep),var(--navy-lift));color:white}.about-hero-inner{max-width:var(--max);min-height:590px;margin:auto;display:grid;grid-template-columns:.95fr 1.05fr;align-items:stretch}.about-hero-copy{padding:85px 56px 85px 24px;align-self:center}.about-hero-copy h1{margin:10px 0 28px;font-size:clamp(52px,6vw,84px);line-height:.92;letter-spacing:-.04em}.about-hero-copy h1 span{color:var(--signal-light)}.about-hero-copy>p:last-child{max-width:540px;color:var(--haze);font-size:19px}.about-hero-image{min-height:590px;background:linear-gradient(90deg,rgba(6,26,54,.45),transparent 30%),url('assets/project_channel.jpg') center/cover no-repeat}.about-story{display:grid;grid-template-columns:1.35fr .65fr;gap:80px;align-items:start}.story-copy h2,.leadership-inner h2{font-size:clamp(38px,4vw,58px);line-height:1.03;color:var(--navy);margin:8px 0 24px}.story-copy>p:not(.eyebrow){font-size:18px;color:var(--graphite);max-width:720px}.story-proof{border-left:5px solid var(--signal);background:var(--frost);padding:12px 34px;box-shadow:var(--shadow)}.story-proof div{padding:24px 0;border-top:1px solid var(--haze)}.story-proof div:first-child{border-top:0}.story-proof strong{display:block;color:var(--navy);font-size:42px;line-height:1}.story-proof strong.proof-text{font-size:clamp(25px,2.25vw,32px);line-height:1.05}.story-proof span{display:block;margin-top:8px;color:var(--graphite);font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.leadership-section{background:var(--mist);padding:85px 24px;border-top:1px solid var(--haze);border-bottom:1px solid var(--haze)}.leadership-inner{max-width:var(--max);margin:auto;display:grid;grid-template-columns:.85fr 1.15fr;gap:55px 90px;align-items:start}.leadership-inner h2{margin-bottom:0}.leadership-copy{border-left:4px solid var(--signal);padding-left:32px;font-size:19px;color:var(--graphite)}.leadership-copy p:first-child{margin-top:0}.leadership-copy p:last-child{margin-bottom:0}.leader-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:12px}.leader-card{background:white;border:1px solid var(--haze);border-radius:9px;overflow:hidden;box-shadow:0 10px 30px rgba(6,26,54,.08)}.leader-portrait{width:100%;aspect-ratio:1;background-image:url('assets/leadership-placeholders.png');background-repeat:no-repeat;background-size:200% 200%}.portrait-ron{background-position:0 0}.portrait-jim{background-position:100% 0}.portrait-ken{background-position:0 100%}.portrait-katherine{background-position:100% 100%}.leader-card>div:last-child{padding:21px 22px 24px}.leader-card h3{margin:0 0 4px;color:var(--navy);font-size:22px}.leader-card p{margin:0;color:var(--signal);font-size:13px;font-weight:800;line-height:1.35;text-transform:uppercase;letter-spacing:.055em}
.careers-invite{max-width:var(--max);margin:auto;padding:70px 24px;display:flex;align-items:center;justify-content:space-between;gap:50px}.careers-invite h2{font-size:clamp(34px,4vw,50px);line-height:1.05;color:var(--navy);margin:8px 0 14px}.careers-invite p:last-child{max-width:760px;margin-bottom:0;color:var(--graphite);font-size:18px}.careers-invite .btn{flex:0 0 auto}.careers-hero{background:linear-gradient(120deg,var(--navy-deep),var(--navy-lift));color:white;padding:100px 24px}.careers-hero-inner{max-width:var(--max);margin:auto}.careers-hero h1{max-width:820px;margin:10px 0 24px;font-size:clamp(52px,6vw,82px);line-height:.95;letter-spacing:-.04em}.careers-hero h1 span{color:var(--signal-light)}.careers-hero p:last-child{max-width:690px;margin:0;color:var(--haze);font-size:20px}.openings{display:grid;grid-template-columns:.72fr 1.28fr;gap:75px;align-items:start}.openings h2{font-size:clamp(38px,4vw,56px);line-height:1.03;color:var(--navy);margin:8px 0 18px}.openings-intro>p:last-child{color:var(--graphite);font-size:18px}.opening-list{display:grid;gap:18px}.opening-card{background:white;border:1px solid var(--haze);border-top:5px solid var(--signal);padding:34px;box-shadow:var(--shadow)}.opening-card-top{display:flex;align-items:center;justify-content:space-between;gap:18px}.opening-team{color:var(--signal);font-size:13px;font-weight:900;letter-spacing:.075em;text-transform:uppercase}.opening-status{background:var(--frost);color:var(--navy);padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.opening-card h3{color:var(--navy);font-size:30px;line-height:1.1;margin:18px 0 12px}.opening-meta{display:flex;gap:10px 22px;flex-wrap:wrap;color:var(--graphite);font-size:14px;font-weight:700}.opening-meta span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--signal);margin:0 9px 1px 0}.opening-card>p{color:var(--graphite);font-size:17px;margin:20px 0 25px}.careers-note{background:var(--mist);border-top:1px solid var(--haze);padding:70px 24px}.careers-note-inner{max-width:var(--max);margin:auto;display:grid;grid-template-columns:1fr auto;gap:50px;align-items:center}.careers-note h2{font-size:clamp(32px,4vw,48px);line-height:1.05;color:var(--navy);margin:8px 0 12px}.careers-note p:last-child{max-width:760px;margin-bottom:0;color:var(--graphite);font-size:18px}
.job-hero{background:linear-gradient(120deg,var(--navy-deep),var(--navy-lift));color:white;padding:78px 24px}.job-hero-inner{max-width:var(--max);margin:auto}.back-link{display:inline-block;color:var(--signal-light);font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:28px}.back-link:hover{color:white}.job-hero h1{max-width:920px;margin:8px 0 22px;font-size:clamp(46px,5.5vw,72px);line-height:.98;letter-spacing:-.035em}.job-hero-lead{max-width:790px;margin:0;color:var(--haze);font-size:20px}.job-facts{max-width:var(--max);margin:0 auto;padding:0 24px;display:grid;grid-template-columns:repeat(4,1fr)}.job-fact{background:#fff;border:1px solid var(--haze);border-left:0;padding:22px}.job-fact:first-child{border-left:1px solid var(--haze)}.job-fact span{display:block;color:var(--signal);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}.job-fact strong{display:block;color:var(--navy);font-size:16px;line-height:1.35}.job-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:70px;align-items:start}.job-copy{color:var(--graphite);font-size:17px}.job-copy h2{color:var(--navy);font-size:32px;line-height:1.1;margin:48px 0 16px}.job-copy h2:first-child{margin-top:0}.job-copy p{max-width:820px}.job-copy ul{padding-left:22px}.job-copy li{padding-left:5px;margin:9px 0}.job-apply{position:sticky;top:110px;background:var(--frost);border-left:5px solid var(--signal);padding:30px}.job-apply h2{color:var(--navy);font-size:27px;line-height:1.15;margin:0 0 12px}.job-apply p{color:var(--graphite);margin:0 0 22px}.job-apply .btn{width:100%}.job-apply .apply-note{font-size:13px;margin:14px 0 0;text-align:center}.eeo-note{margin-top:48px;padding:28px;background:var(--mist);border-left:4px solid var(--silver)}.eeo-note h2{font-size:22px;margin:0 0 10px}.eeo-note p{font-size:15px;margin:0}
.contact-hero{background:linear-gradient(120deg,rgba(6,26,54,.96),rgba(6,67,127,.88)),url('assets/project_pipeline.jpg') center/cover no-repeat;color:white;padding:82px 24px}.contact-hero-inner{max-width:var(--max);margin:auto}.contact-hero h1{max-width:850px;margin:10px 0 22px;font-size:clamp(50px,6vw,78px);line-height:.96;letter-spacing:-.04em}.contact-hero h1 span{color:var(--signal-light)}.contact-hero p:last-child{max-width:760px;margin:0;color:var(--haze);font-size:20px}.contact-page{display:grid;grid-template-columns:1.35fr .65fr;gap:55px;align-items:start}.project-form{background:#fff;border:1px solid var(--haze);border-top:5px solid var(--signal);padding:38px;box-shadow:var(--shadow)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px 26px}.form-field{display:flex;flex-direction:column;gap:7px}.form-field.full{grid-column:1/-1}.form-field label{color:var(--navy);font-weight:800;font-size:14px}.form-field input,.form-field textarea{width:100%;border:1px solid var(--fog);border-radius:3px;background:#fff;color:var(--ink);font:inherit;font-size:16px;padding:13px 14px}.form-field textarea{min-height:170px;resize:vertical}.form-field input:focus,.form-field textarea:focus{outline:3px solid rgba(0,103,208,.2);border-color:var(--signal)}.required{color:var(--signal)}.form-actions{margin-top:25px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}.project-form button{border:0;cursor:pointer}.form-note{margin:0;color:var(--graphite);font-size:13px;max-width:390px}.contact-details{background:var(--frost);border-left:5px solid var(--signal);padding:34px}.contact-details h2{color:var(--navy);font-size:28px;margin:0 0 18px}.contact-details>a{display:block;color:var(--navy);font-size:20px;font-weight:800;margin:7px 0}.contact-details p{color:var(--graphite);margin:20px 0 0}.contact-details .photo-note{margin-top:30px;padding-top:25px;border-top:1px solid var(--haze)}.contact-details .photo-note strong{display:block;color:var(--navy);font-size:18px;margin-bottom:6px}
.services-page-hero{background:linear-gradient(135deg,var(--navy-deep),var(--navy-lift));color:white}.services-page-hero-inner{max-width:var(--max);min-height:360px;margin:auto;display:grid;grid-template-columns:1.35fr .65fr;align-items:stretch}.services-page-hero-copy{padding:52px 60px 52px 24px;align-self:center}.services-page-hero-copy h1{margin:8px 0 20px;font-size:clamp(46px,5vw,68px);line-height:.94;letter-spacing:-.04em}.services-page-hero-copy h1 span{color:var(--signal-light)}.services-page-hero-copy>p:last-child{max-width:690px;color:var(--haze);font-size:18px}.services-page-hero-image{min-height:360px;background:linear-gradient(90deg,rgba(6,26,54,.55),transparent 35%),url('assets/engineering.jpg') center/cover no-repeat}
.cause-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:85px;align-items:center}.cause-copy h2,.supporting-methods h2{font-size:clamp(38px,4vw,58px);line-height:1.03;color:var(--navy);margin:8px 0 24px}.cause-copy>p:not(.eyebrow){font-size:18px;color:var(--graphite);max-width:760px}.cause-callout{background:var(--frost);border-left:5px solid var(--signal);padding:38px;box-shadow:var(--shadow)}.cause-callout strong{display:block;color:var(--navy);font-size:27px;line-height:1.2;margin-bottom:14px}.cause-callout p{margin:0;color:var(--graphite);font-size:17px}
.delivery-section{background:linear-gradient(125deg,var(--navy-deep),var(--navy-lift));color:white;padding:90px 24px}.delivery-inner{max-width:var(--max);margin:auto}.delivery-section .section-heading{margin-bottom:48px}.delivery-section .section-heading p:last-child{color:var(--haze)}.framework-heading{max-width:850px}.framework-flow{display:grid;grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr) 34px minmax(0,1.08fr) 34px minmax(0,1fr) 34px minmax(0,1fr);align-items:stretch}.framework-step,.framework-gate{position:relative;min-height:250px;padding:28px 24px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.22);display:flex;flex-direction:column;justify-content:center}.framework-step:before{content:"";position:absolute;left:-1px;top:-1px;width:46px;height:4px;background:var(--signal-light)}.framework-step span,.framework-gate span{display:block;color:var(--signal-light);font-weight:900;letter-spacing:.08em;font-size:12px;text-transform:uppercase}.framework-step h3,.framework-gate h3{font-size:20px;line-height:1.15;margin:13px 0 11px}.framework-step p,.framework-gate p{margin:0;color:var(--haze);font-size:15px}.framework-gate{background:#fff;color:var(--navy);border:5px solid var(--signal-light);clip-path:polygon(10% 0,90% 0,100% 50%,90% 100%,10% 100%,0 50%);text-align:center;padding-left:28px;padding-right:28px}.framework-gate span{color:var(--signal)}.framework-gate p{color:var(--graphite);font-weight:700}.framework-gate small{display:block;margin-top:12px;color:var(--signal);font-size:12px;font-weight:800}.framework-arrow{display:flex;align-items:center;justify-content:center;color:var(--signal-light);font-size:30px;font-weight:900}
.solutions-section{background:var(--mist);padding:90px 24px;border-top:1px solid var(--haze);border-bottom:1px solid var(--haze)}.solutions-section-first{padding-top:58px}.solutions-inner{max-width:var(--max);margin:auto}.solutions-heading{margin-bottom:32px}.solutions-heading h2{font-size:clamp(32px,3.5vw,46px)}.solutions-heading p{margin-bottom:0}.solution-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.solution-grid>article,.solution-grid>.solution-card{background:white;border:1px solid var(--haze);border-top:5px solid var(--signal);box-shadow:0 10px 30px rgba(6,26,54,.07)}.solution-grid>article{padding:30px}.solution-grid>.solution-card{display:flex;flex-direction:column;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.solution-grid>.solution-card:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(6,26,54,.13)}.solution-card-image{width:100%;height:218px;object-fit:cover;object-position:center;background:var(--frost);border-top:1px solid var(--haze);filter:brightness(1.06) contrast(1.04) saturate(1.05);transition:transform .35s ease,filter .35s ease}.solution-card:hover .solution-card-image{transform:scale(1.018);filter:brightness(1.09) contrast(1.05) saturate(1.07)}.solution-card-body{display:flex;flex:1;flex-direction:column;padding:27px 28px 29px}.solution-type{margin:0;color:var(--signal);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.075em}.solution-grid h3{color:var(--navy);font-size:25px;line-height:1.15;margin:14px 0 12px}.solution-grid>article>p:last-child,.solution-card-body>p{color:var(--graphite)}.solution-link{display:block;margin-top:auto;padding-top:22px;color:var(--signal);font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.055em}.solution-card>.solution-link{width:100%;margin:0;padding:18px 28px 20px;background:#fff;border-top:1px solid var(--haze)}
.supporting-methods{display:grid;grid-template-columns:.75fr 1.25fr;gap:75px;align-items:start}.supporting-list{border-top:1px solid var(--haze)}.supporting-list article{padding:24px 0;border-bottom:1px solid var(--haze)}.supporting-list h3{color:var(--navy);font-size:21px;margin:0 0 7px}.supporting-list p{color:var(--graphite);margin:0}
.product-hero{position:relative;min-height:650px;color:white;background-position:center;background-size:cover;overflow:hidden}.product-hero-ercoform{background-image:url('assets/ercoform/ercoform-crossing-after.jpg');background-position:center 48%}.product-hero-palisade{background-image:url('assets/application-river.png')}.product-hero-fcr{background-image:url('assets/project_restoration.jpg')}.product-hero-ecoflex{background-image:url('assets/solutions/eco-flex-overview-v2.jpg');background-position:center 52%}.product-hero-system21{background-image:url('assets/solutions/system-21-completed-v2.jpg');background-position:center 46%}.product-hero-supports{background-image:url('assets/pipeline-supports/pipeline-supports-completed-application.jpg');background-position:center 48%}.product-hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,26,54,.86) 0%,rgba(6,26,54,.74) 48%,rgba(6,26,54,.28) 78%,rgba(6,26,54,.12) 100%)}.product-hero-inner{position:relative;z-index:1;max-width:var(--max);min-height:650px;margin:auto;padding:72px 24px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.product-hero h1{font-size:clamp(58px,7vw,92px);line-height:.92;letter-spacing:-.045em;margin:6px 0 10px}.product-hero-statement{color:#fff;font-size:clamp(27px,3vw,40px);font-weight:800;margin:0 0 22px}.product-hero-lead{max-width:690px;color:var(--haze);font-size:19px;margin:0 0 30px}.product-hero .back-link{margin-bottom:34px}
.product-facts{max-width:var(--max);margin:0 auto;padding:0 24px;display:grid;grid-template-columns:repeat(3,1fr)}.product-facts>div{padding:28px 30px;border:1px solid var(--haze);border-left:0;background:#fff}.product-facts>div:first-child{border-left:1px solid var(--haze)}.product-facts strong{display:block;color:var(--navy);font-size:18px}.product-facts span{display:block;color:var(--graphite);font-size:14px;margin-top:5px}
.recognize-intro{max-width:780px;margin-bottom:42px}.recognize-intro h2,.product-process-copy h2,.fit-heading h2,.project-recognition h2{font-size:clamp(38px,4vw,58px);line-height:1.03;margin:8px 0 20px}.recognize-intro h2,.fit-heading h2{color:var(--navy)}.recognize-intro>p:last-child{color:var(--graphite);font-size:18px}.condition-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.condition-grid article{border:1px solid var(--haze);background:white;box-shadow:0 10px 30px rgba(6,26,54,.07);overflow:hidden}.condition-grid img{width:100%;height:230px;object-fit:cover}.condition-grid article>div{padding:24px}.condition-grid h3{color:var(--navy);font-size:22px;margin:0 0 7px}.condition-grid p{color:var(--graphite);margin:0}
.product-process{background:linear-gradient(125deg,var(--navy-deep),var(--navy-lift));color:white;padding:90px 24px}.product-process-inner{max-width:var(--max);margin:auto;display:grid;grid-template-columns:.9fr 1.1fr;gap:85px;align-items:start}.product-process-copy h2{color:white}.product-process-copy>p:not(.eyebrow){color:var(--haze);font-size:18px}.product-steps{list-style:none;padding:0;margin:0;border-top:1px solid rgba(255,255,255,.2)}.product-steps li{display:grid;grid-template-columns:54px 1fr;gap:18px;padding:23px 0;border-bottom:1px solid rgba(255,255,255,.2)}.product-steps li>span{color:var(--signal-light);font-size:13px;font-weight:900;letter-spacing:.08em}.product-steps strong{display:block;font-size:19px;margin-bottom:5px}.product-steps p{color:var(--haze);margin:0}
.fit-section{display:grid;grid-template-columns:.75fr 1.25fr;gap:80px;align-items:start}.fit-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--haze);border:1px solid var(--haze)}.fit-grid article{background:white;padding:27px}.fit-grid h3{color:var(--navy);font-size:20px;margin:0 0 8px}.fit-grid p{color:var(--graphite);margin:0}.project-recognition{background:var(--frost);padding:70px 24px;border-top:1px solid var(--haze);border-bottom:1px solid var(--haze)}.project-recognition-inner{max-width:var(--max);margin:auto;display:grid;grid-template-columns:.85fr 1.15fr;gap:85px;align-items:center}.project-recognition h2{color:var(--navy);margin-bottom:0}.project-recognition-inner>p{color:var(--graphite);font-size:18px;margin:0}
@media (min-width:901px){.hero .years{position:absolute;top:72px;right:calc((var(--max) - 100vw)/2 + 36px);margin:0}}
@media (min-width:901px) and (max-width:1312px){.hero .years{right:36px}}
@media (max-width:900px){.menu-btn{display:block}.main-nav{position:absolute;display:none;top:82px;left:0;right:0;background:white;border-bottom:1px solid var(--haze);padding:20px 24px;flex-direction:column;align-items:flex-start}.main-nav.open{display:flex}.hero-inner{grid-template-columns:1fr;gap:30px}.hero{min-height:unset}.hero-inner{min-height:760px}.hero-proof{justify-self:start;display:flex;gap:20px;align-items:center;max-width:600px}.years{width:150px;height:150px;flex:0 0 150px}.years strong{font-size:54px}.years span:not(.small){font-size:18px}.stats{grid-template-columns:repeat(3,1fr)}.stat{padding-left:20px;padding-right:20px}.intro-grid,.engineering-callout,.cta{grid-template-columns:1fr}.service-grid{grid-template-columns:repeat(2,1fr)}.project-grid{grid-template-columns:1fr;grid-template-rows:auto}.project-card.large{grid-row:auto;min-height:420px}.project-card{min-height:330px}}
@media (max-width:600px){.brand img{width:170px}.hero-overlay{background:linear-gradient(180deg,rgba(255,255,255,.97) 0%,rgba(255,255,255,.90) 58%,rgba(6,26,54,.38) 100%)}.hero-inner{padding-top:45px}.hero-logo{width:190px;margin-bottom:28px}.hero h1{font-size:42px}.hero-proof{display:block;color:white;margin-top:70px}.years{margin-bottom:14px}.stats{grid-template-columns:1fr}.stat,.stat:nth-child(3){border-left:0;border-top:1px solid rgba(255,255,255,.2)}.stat:first-child{border-top:0}.section{padding:65px 20px}.intro-grid{gap:35px}.application-grid,.service-grid{grid-template-columns:1fr}.engineering-callout{padding:65px 20px}.engineering-image{min-height:320px}.project-card.large,.project-card{min-height:320px}.cta{padding:55px 20px}.footer-inner{flex-direction:column;align-items:flex-start}.footer-inner p:last-child{margin-left:0}}
@media (max-width:900px){.about-hero-inner,.services-page-hero-inner{grid-template-columns:1fr;min-height:unset}.about-hero-copy{padding:70px 24px}.services-page-hero-copy{padding:52px 24px}.about-hero-image{min-height:380px}.services-page-hero-image{min-height:220px}.about-story,.leadership-inner,.openings,.contact-page,.job-layout,.cause-grid,.supporting-methods,.product-process-inner,.fit-section,.project-recognition-inner{grid-template-columns:1fr;gap:45px}.leader-grid{grid-template-columns:repeat(2,1fr)}.careers-invite,.careers-note-inner{align-items:flex-start;flex-direction:column;grid-template-columns:1fr}.careers-invite{display:flex}.job-facts{grid-template-columns:repeat(2,1fr)}.job-fact:nth-child(3){border-left:1px solid var(--haze)}.job-apply{position:static}.solution-grid{grid-template-columns:repeat(2,1fr)}.framework-flow{grid-template-columns:1fr;max-width:680px;margin:auto}.framework-arrow{height:42px;font-size:0}.framework-arrow:after{content:"↓";font-size:28px}.framework-step,.framework-gate{min-height:unset;padding:30px}.framework-gate{clip-path:none}.product-hero,.product-hero-inner{min-height:600px}.condition-grid{grid-template-columns:1fr}.condition-grid article{display:grid;grid-template-columns:280px 1fr}.condition-grid img{height:100%;min-height:190px}}
@media (max-width:600px){.about-hero-copy h1,.services-page-hero-copy h1{font-size:48px}.about-hero-image{min-height:300px}.services-page-hero-image{min-height:180px}.leader-grid{grid-template-columns:1fr}.leadership-section,.delivery-section,.solutions-section,.product-process{padding:65px 20px}.solutions-section-first{padding-top:48px}.leadership-copy{padding-left:22px}.careers-hero,.contact-hero,.job-hero{padding:75px 20px}.careers-hero h1,.contact-hero h1,.job-hero h1{font-size:46px}.careers-invite,.careers-note,.project-recognition{padding:55px 20px}.opening-card,.project-form{padding:28px}.form-grid{grid-template-columns:1fr}.form-field.full{grid-column:auto}.job-facts{grid-template-columns:1fr;padding:0 20px}.job-fact,.job-fact:nth-child(3){border-left:1px solid var(--haze)}.job-layout{padding-left:20px;padding-right:20px}.solution-grid,.fit-grid,.product-facts{grid-template-columns:1fr}.product-hero h1{font-size:54px}.product-facts{padding:0 20px}.product-facts>div,.product-facts>div:first-child{border-left:1px solid var(--haze);border-top:0}.product-facts>div:first-child{border-top:1px solid var(--haze)}.condition-grid article{display:block}.condition-grid img{height:220px}}

/* Palisade product-story milestone */
.product-hero-palisade{background-image:url('assets/palisade/palisade-recovery.jpg');background-position:center 52%}
.palisade-story-intro{max-width:900px;margin-bottom:42px}.palisade-story-intro h2{color:var(--navy);font-size:clamp(38px,4vw,58px);line-height:1.03;margin:8px 0 20px}.palisade-story-intro>p:last-child{color:var(--graphite);font-size:18px}.palisade-story-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.palisade-story-card{margin:0;background:white;border:1px solid var(--haze);border-top:5px solid var(--signal);box-shadow:0 12px 34px rgba(6,26,54,.09);overflow:hidden}.palisade-story-card img{width:100%;height:290px;object-fit:cover}.palisade-story-card figcaption{padding:26px}.palisade-story-card figcaption>span{display:block;color:var(--signal);font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.palisade-story-card h3{color:var(--navy);font-size:24px;line-height:1.1;margin:8px 0 10px}.palisade-story-card p{color:var(--graphite);margin:0}
.palisade-proof-list{display:grid;gap:34px}.palisade-five-year-photo{position:relative;margin:0}.palisade-five-year-photo img{display:block;width:100%;height:500px;object-fit:cover;object-position:center 58%}.palisade-five-year-photo figcaption{position:absolute;left:22px;bottom:22px;background:rgba(0,103,208,.94);color:#fff;padding:11px 15px;font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
@media (max-width:900px){.palisade-story-grid{grid-template-columns:1fr}.palisade-story-card{display:grid;grid-template-columns:280px 1fr}.palisade-story-card img{height:100%;min-height:230px}}
@media (max-width:600px){.palisade-story-card{display:block}.palisade-story-card img{height:235px;min-height:0}}

/* Number-free tile and process treatment */
.service-card h3{margin:32px 0 10px}.framework-step h3{margin:0 0 11px}.product-steps li{display:block}.product-steps strong{margin-bottom:5px}

/* FCR before-and-after field proof */
.product-hero-fcr{background-image:url('assets/fcr/fcr-headcut-after.jpg');background-position:center 48%}.fcr-story-intro{max-width:900px;margin-bottom:42px}.fcr-story-intro h2{color:var(--navy);font-size:clamp(38px,4vw,58px);line-height:1.03;margin:8px 0 20px}.fcr-story-intro>p:last-child{color:var(--graphite);font-size:18px}.fcr-comparison-list{display:grid;gap:34px}.fcr-comparison{background:white;border:1px solid var(--haze);border-top:5px solid var(--signal);box-shadow:0 12px 34px rgba(6,26,54,.09);overflow:hidden}.fcr-comparison-heading{display:grid;grid-template-columns:1.15fr .85fr;gap:60px;align-items:end;padding:30px 32px}.fcr-comparison-heading h3{color:var(--navy);font-size:clamp(27px,3vw,38px);line-height:1.08;margin:7px 0 0}.fcr-comparison-heading>p{color:var(--graphite);font-size:17px;margin:0}.fcr-comparison-grid{display:grid;grid-template-columns:.82fr 1.18fr;background:var(--frost);gap:4px}.fcr-comparison-grid figure{position:relative;margin:0;min-width:0}.fcr-comparison-grid img{display:block;width:100%;height:390px;object-fit:cover}.fcr-comparison-grid figcaption{position:absolute;left:18px;bottom:18px;background:rgba(6,26,54,.9);color:white;padding:9px 13px;font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.fcr-comparison-result figcaption{background:rgba(0,103,208,.94)}
.fcr-comparison-result img{object-position:center top}
.pipeline-standalone-grid{grid-template-columns:1fr 1fr}.pipeline-standalone-grid img{object-position:center center}
.field-photo-placeholder{height:390px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--haze) 0%,var(--mist) 52%,var(--haze) 100%);color:var(--graphite)}.field-photo-placeholder-result{background:linear-gradient(135deg,var(--frost) 0%,var(--mist) 52%,var(--haze) 100%)}.field-photo-placeholder span{padding:14px 18px;border:1px solid rgba(11,45,91,.2);background:rgba(255,255,255,.72);font-size:13px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.product-engineering-figure{margin:30px 0 0;background:#fff;border-top:5px solid var(--signal);box-shadow:0 12px 30px rgba(0,0,0,.18)}.product-engineering-figure img{width:100%;height:auto}.product-engineering-figure figcaption{padding:12px 16px;color:var(--navy);font-size:12px;font-weight:900;letter-spacing:.07em;text-transform:uppercase}
.product-engineering-figure-compact{max-width:420px;margin-left:0;margin-right:auto}.product-engineering-figure-compact img{display:block;width:100%;height:auto}
.product-process-ercoform .product-process-inner{align-items:stretch}.product-process-ercoform .product-process-copy,.product-process-ercoform .product-process-side{display:flex;flex-direction:column}.product-process-ercoform .product-engineering-figure{margin-top:auto;border-top:0;overflow:hidden}.product-process-ercoform .product-engineering-figure img{width:100%;height:410px;object-fit:cover}.product-process-ercoform .product-engineering-figure-detail img{object-position:center 52%}.product-process-ercoform .product-engineering-figure figcaption{min-height:48px;display:flex;align-items:center}
@media (max-width:900px){.fcr-comparison-heading{grid-template-columns:1fr;gap:14px}.fcr-comparison-grid{grid-template-columns:1fr 1fr}.fcr-comparison-grid img,.field-photo-placeholder{height:310px}}
@media (max-width:600px){.fcr-comparison-heading{padding:26px 22px}.fcr-comparison-grid{grid-template-columns:1fr}.fcr-comparison-grid img,.field-photo-placeholder{height:260px}.palisade-five-year-photo img{height:320px}.palisade-five-year-photo figcaption{left:16px;bottom:16px}}

/* Careers field-work hero */
.careers-hero{position:relative;overflow:hidden;background:var(--navy-deep)}.careers-hero-photo{position:absolute;z-index:0;right:0;top:50%;height:118%;width:auto;max-width:none;transform:translateY(-50%) scaleX(-1);-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 62%,rgba(0,0,0,.45) 84%,transparent 100%);mask-image:linear-gradient(90deg,#000 0%,#000 62%,rgba(0,0,0,.45) 84%,transparent 100%)}.careers-hero:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(6,26,54,.86) 0%,rgba(6,26,54,.74) 48%,rgba(6,67,127,.52) 73%,rgba(6,67,127,.40) 100%)}.careers-hero-inner{position:relative;z-index:2}@media (max-width:900px){.careers-hero-photo{right:-24vw}}@media (max-width:600px){.careers-hero-photo{right:-50vw}}

/* Pipeline Supports Cotton Creek hero */
.product-hero-supports{background-image:url('assets/pipeline-supports/pipeline-supports-cotton-creek-hero.png');background-position:center 50%}
@media (max-width:600px){.product-hero-supports{background-position:66% center}}

/* Text-based proof point */
.stat-num-text{font-size:clamp(22px,2.1vw,34px);line-height:1.05;white-space:nowrap}

/* Keep the bridge deck visible in the Critical Infrastructure card */
.application-photo-bridge img{object-position:center 18%}

/* Site-wide section transitions and footer brand signature */
.leadership-section,.solutions-section,.project-recognition{border-top:0;border-bottom:0}
.careers-note{border-top:0}
footer{background:var(--mist);border-top:0}
.footer-signature{margin:0;font-weight:800;letter-spacing:.012em}
/* The signature reads as a progression, so the accent lands on the payoff.
   One rule for every light-ground instance: footer and the Careers CTA. */
.footer-signature span:nth-child(1),
.footer-signature span:nth-child(2),
h2.signature span:nth-child(1),
h2.signature span:nth-child(2){color:var(--navy)}
.footer-signature span:nth-child(3),
h2.signature span:nth-child(3){color:var(--signal)}

/* Provisional leadership portraits for the eight-person layout */
.portrait-ian,.portrait-james,.portrait-derek,.portrait-danny,.portrait-george{background-image:url('assets/leadership-project-managers.png');background-size:300% 200%}
.portrait-ian{background-position:0 0}
.portrait-james{background-position:50% 0}
.portrait-derek{background-image:url('assets/leadership-derek-v2.png');background-size:cover;background-position:center}
.portrait-danny{background-position:0 100%}
.portrait-george{background-position:50% 100%}

/* Consistent equal-width treatment for paired supporting images */
.fcr-comparison-grid{grid-template-columns:1fr 1fr}
.product-engineering-pair{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:10px}
.product-process-ercoform .product-engineering-pair .product-engineering-figure{margin:0;border-top:0;overflow:hidden}
.product-process-ercoform .product-engineering-pair .product-engineering-figure img{width:100%;height:410px;object-fit:cover}
.product-process-ercoform .product-engineering-pair .product-engineering-figure-detail img{object-position:center 52%}
.product-process-ercoform .product-engineering-pair .product-engineering-figure figcaption{min-height:48px;display:flex;align-items:center}
@media (max-width:600px){.product-engineering-pair{grid-template-columns:1fr}.product-process-ercoform .product-engineering-pair .product-engineering-figure img{height:300px}}

/* Palisade technical drawings use the shared paired-image row */
.product-process-palisade .product-engineering-pair .product-engineering-figure{margin:0;max-width:none;border-top:0;overflow:hidden}
.product-process-palisade .product-engineering-pair .product-engineering-figure img{width:100%;height:410px;object-fit:contain;background:#fff}
.product-process-palisade .product-engineering-pair .product-engineering-figure figcaption{min-height:48px;display:flex;align-items:center}
@media (max-width:600px){.product-process-palisade .product-engineering-pair .product-engineering-figure img{height:300px}}

/* Eco-Flex technical drawings use the shared paired-image row without the legacy blue bar */
.product-process-ecoflex .product-engineering-pair .product-engineering-figure{margin:0;max-width:none;border-top:0;overflow:hidden}
.product-process-ecoflex .product-engineering-pair .product-engineering-figure img{width:100%;height:410px;object-fit:contain;background:#fff}
.product-process-ecoflex .product-engineering-pair .product-engineering-figure figcaption{min-height:48px;display:flex;align-items:center}
@media (max-width:600px){.product-process-ecoflex .product-engineering-pair .product-engineering-figure img{height:300px}}

/* Type: the original Arial / Helvetica stack, restored.
   Grandview descends from DIN. Both web faces tried against it — Barlow and
   Source Sans 3 — are rounded, humanist designs: friendly bowls, open curves.
   At display weights they read cartoonish rather than engineered. A neutral
   grotesque with closed apertures and flat terminals is the right register,
   and it needs no webfont.

   September 2026: Grandview was subsequently dropped from Office as well. It
   is a Microsoft 365 cloud font, so it rendered only inside Office apps and
   fell back to condensed Arial Narrow everywhere else. Headings and body are
   Arial across web and Office, separated by weight and size.
   See WORKING-NOTES.md before changing this again. */

/* Logo box reserved at the v3 aspect ratio so the header never shifts on load */
.brand img{width:205px;height:auto;aspect-ratio:1370/496}
@media (max-width:600px){.brand img{width:170px}}

/* --- Contrast and section rhythm ------------------------------------------
   TWO-TONE HEADINGS DO NOT WORK ON LIGHT GROUNDS WITH THIS PALETTE.
   Measured against Navy #0B2D5B on white, every option fails one of the two
   tests a second colour has to pass — be clearly different, and stay legible:

     Navy Lift   #173F75   10.48:1   dE  8.9   invisible as a difference
     Navy Edge   #2F527F    7.97:1   dE 16.4   marginal
     Steel Blue  #2F6F8F    5.54:1   dE 31.5   distinct but weak
     Field Slate #5F7085    5.07:1   dE 33.8   distinct but weak
     Regrowth    #3F7A3A    5.18:1   dE 77.3   distinct but weak

   The palette is built around navy, so every accent is mid-tone. Nothing is
   both distinct and strong. The heading therefore runs in a single navy, and
   emphasis comes from structure — the accent rule, the line break — not hue.

   Values above are the palette as it stood when this was measured; Steel Blue
   and Field Slate have since been replaced by Signal #0067D0 and Fog #8C8B8A.
   The finding did not change with them: every candidate is still mid-tone.

   On DARK grounds the device works and is kept: Signal Light #4794FF against
   white on navy is a genuine, high-contrast distinction. See the hero,
   careers and contact headings. */
.local-partnerships h2 span{color:inherit}

/* The last two sections were both Mist, so the closing CTA had no edge above
   it and stopped reading as its own band. Local partnerships goes to white —
   which also removes the hard 43% vertical seam — leaving the CTA as the only
   light-grey band at the foot of the page. */
.local-partnerships{background:#fff}
@media (max-width:900px){.local-partnerships{background:#fff}}

/* --- The accent -----------------------------------------------------------
   This value was wrong twice before it was right, and the record matters
   more than the conclusion.

   First it was Steel Blue #2F6F8F at chroma 25.5, and the verdict was
   "everything looks washed out". Then it was Signal #03778E at chroma 28 —
   a teal derived from a brief about "water as it appears in nature, not in
   a pool". That reasoning was internally consistent and externally wrong,
   for two reasons:

     1. The hue was mis-placed. The brief described a colour between
        Caribbean (-148) and deep Pacific (-101). The midpoint is -124.
        #03778E sits at -133 — two thirds of the way to the tropical end,
        not the middle.

     2. More importantly, Er-Con Navy is itself a BLUE, at hue -77. A teal
        accent sits 56 degrees away from the brand's own anchor, in a
        different colour family. It could not read as belonging, because it
        did not belong. The verdict on it was "they just feel teal and
        washed" — from two people, independently.

   Signal is now #0067D0: Er-Con Navy's own hue, lifted. Chroma 63, which is
   two and a half times the value that was called washed out, and close to
   the legacy site blue (#0878DD, chroma 60) whose energy was liked all
   along. The accent is the navy, brighter — not a second colour.

     Signal        #0067D0   hue -75   chroma 63   5.45:1 on white
     Signal Light  #4794FF   hue -77   chroma 61   4.51:1 on navy

   Both accents now sit on Er-Con Navy's own hue. An earlier version kept a
   cyan #08BBDE for dark grounds, recorded in the working notes as approved.
   It was not. What had been approved was the EFFECT of a bright accent on
   navy; the specific cyan was an inference written down as a decision and
   then cited back as a constraint. Water was the brief. Teal was never
   asked for. DARK grounds take the loud accent, LIGHT grounds the quiet
   one, and both are the navy, lifted. */

/* Signal Amber earns its first job. The status pill is the one element whose
   entire purpose is to catch the eye, and it was the palest thing on the page. */
.opening-status{background:var(--amber);color:var(--ink)}

/* The figures get their colour back. They were set to white as a stopgap when
   Steel Light proved too weak to carry them. */
.stat-num{color:var(--signal-light)}

/* --- Field palette ---------------------------------------------------------
   Derived by sampling 307,000 pixels across 40 Er-Con project photographs.
   That work is 37% ground, 35% concrete and stone, 14% vegetation, 14% water
   and sky. Navy appears in none of it — the mark can be navy, but the
   supporting colours should not be tints of it.

   The neutrals above were navy tints carrying real blue (Haze 4.8, Fog 9.9,
   Graphite 11.7 chroma). Measured concrete is 0.4 to 0.9 — effectively
   neutral. Swapping them is the single largest correction available, and the
   main reason the site read corporate rather than like the work.

   The neutrals finding above holds and is the single largest correction in
   the palette. The accent conclusion that originally followed it did not:
   it argued that because water in the photography is quiet, the accent
   should be quiet. That confused the subject with the interface. The
   photographs are what Er-Con fixes; they are not how the brand should
   sound. See the accent block above. */

/* Yellow iron — the one loud thing on a job site, so the one loud thing here. */
.opening-status{background:var(--amber);color:var(--ink)}
.accent-line{background:var(--amber)}

/* The figures carry the water accent's light partner on navy. */
.stat-num{color:var(--signal-light)}

/* Dark grounds take the loud accent, light grounds the quiet one. The service
   card's top rule sits on navy and was using the light-ground accent, so it
   disappeared. Audited: this was the only instance site-wide. */
.dark .service-card:before{background:var(--signal-light)}

/* ===== v0.50 Industry-first structure ===== */
/* The site is organised by who the visitor is, not by what we sell:
   industry first, then the problem they recognise, then the services that
   solve it. Products are the proof beneath the services, not the way in. */

/* Anchored targets clear the sticky header */
[id]{scroll-margin-top:100px}

/* Navigation - Industries opens its five pages */
.nav-group{position:relative;padding:31px 0;margin:-31px 0}
.nav-sub{position:absolute;top:100%;left:-22px;min-width:300px;display:none;flex-direction:column;background:#fff;border:1px solid var(--haze);border-top:4px solid var(--signal);box-shadow:var(--shadow);padding:10px 0;text-transform:none;letter-spacing:0;font-size:15px;font-weight:700}
.nav-sub a{padding:10px 22px;color:var(--navy)}
.nav-sub a:hover,.nav-sub a[aria-current="page"]{color:var(--signal);background:var(--mist)}
.nav-group:hover .nav-sub,.nav-group:focus-within .nav-sub{display:flex}

/* Home hero - shorter, so the industry choice sits at the fold */
.hero-compact,.hero-compact .hero-inner{min-height:360px}
.hero-compact .hero-inner{padding-top:36px;padding-bottom:36px}
.hero-compact h1{font-size:clamp(40px,4.2vw,60px)}
.hero-compact .hero-inner{grid-template-columns:1fr}
.hero-compact .hero-copy{max-width:720px}
.hero-compact .accent-line{margin:18px 0}
.hero-compact .hero-actions{margin-top:24px}

/* Industry picker - home and services */
.industry-picker{background:#fff;padding:36px 0 72px}
.industry-picker-inner{max-width:var(--max);margin:auto;padding:0 24px}
.industry-picker-heading{margin-bottom:24px}
.industry-picker-row{display:flex;align-items:baseline;justify-content:space-between;gap:40px}
/* The invitation sits on the heading's baseline, its right edge flush with the grid */
.industry-picker-lead{margin:0;color:var(--graphite);font-size:19px;text-align:right}
.industry-picker-heading h2{color:var(--navy);font-size:clamp(32px,3.4vw,46px);line-height:1.05;margin:8px 0 0}
.industry-picker-compact{border-top:1px solid var(--haze)}
.industry-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1fr;gap:20px}
.industry-tile{display:flex;flex-direction:column;background:#fff;border:1px solid var(--haze);border-top:5px solid var(--signal);box-shadow:0 10px 30px rgba(6,26,54,.07);overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}
.industry-tile:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(6,26,54,.13)}
.industry-tile-photo{position:relative;height:196px;overflow:hidden;background:var(--frost)}
.industry-tile-photo img{display:block;width:100%;height:100%;object-fit:cover}
.industry-tile-body{flex:1;padding:20px 20px 18px}
.industry-tile-body h3{color:var(--navy);font-size:20px;line-height:1.15;margin:0 0 8px}
.industry-tile-body p{color:var(--graphite);font-size:15px;line-height:1.5;margin:0}
.industry-tile-link{padding:15px 20px 17px;border-top:1px solid var(--haze);color:var(--signal);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.055em}
.services-more{text-align:center;margin-top:38px}

/* Services page - the service line */
.service-detail{display:grid;grid-template-columns:.8fr 1.2fr;gap:80px;align-items:start}
.service-detail-heading h2{color:var(--navy);font-size:clamp(34px,3.6vw,50px);line-height:1.05;margin:8px 0 18px}
.service-detail-heading>p:last-child{color:var(--graphite);font-size:18px;margin:0}
.service-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--haze);border:1px solid var(--haze)}
.service-item{position:relative;background:#fff;padding:30px}
.service-item:before{content:"";position:absolute;left:30px;top:30px;width:42px;height:4px;background:var(--signal)}
.service-item h3{color:var(--navy);font-size:21px;line-height:1.15;margin:20px 0 8px}
.service-item p{color:var(--graphite);font-size:15px;margin:0}
.service-item:target{background:var(--mist)}

/* Industry page hero - the product hero, sized for longer names */
.industry-hero h1{font-size:clamp(46px,5.4vw,76px);line-height:.96;max-width:950px}
/* Type stays inside the part of the frame the overlay covers at .74 or more */
.industry-hero .product-hero-statement{max-width:700px}

/* Industry switcher - identical position on all five pages */
.industry-switch{background:#fff;border-bottom:1px solid var(--haze)}
.industry-switch-inner{max-width:var(--max);margin:auto;padding:0 24px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
.industry-switch a{display:flex;align-items:center;justify-content:center;text-align:center;min-height:66px;padding:12px 10px 8px;border-left:1px solid var(--haze);border-bottom:4px solid transparent;color:var(--graphite);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.industry-switch a:last-child{border-right:1px solid var(--haze)}
.industry-switch a:hover{color:var(--signal)}
.industry-switch a[aria-current="page"]{color:var(--navy);border-bottom-color:var(--signal)}

/* Problems - seeing / driving / solving, in one ruled table */
.problems-heading{max-width:820px;margin-bottom:40px}
.problems-heading h2{color:var(--navy);font-size:clamp(36px,4vw,54px);line-height:1.04;margin:8px 0 18px}
.problems-heading>p:last-child{color:var(--graphite);font-size:18px;margin:0}
.problem-table{border-top:3px solid var(--navy)}
.problem-head,.problem-row{display:grid;grid-template-columns:1.15fr 1fr 1.25fr}
.problem-head{border-bottom:1px solid var(--haze)}
.problem-head span,.problem-label{color:var(--signal);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.085em}
.problem-head span{padding:14px 32px}
.problem-head span:first-child,.problem-cell:first-child{padding-left:0}
.problem-head span+span,.problem-cell+.problem-cell{border-left:1px solid var(--haze)}
.problem-row{border-bottom:1px solid var(--haze)}
.problem-cell{padding:30px 32px}
.problem-cell:last-child{padding-right:0}
.problem-label{display:none;margin-bottom:6px}
.problem-see h3{color:var(--navy);font-size:22px;line-height:1.18;margin:0 0 10px}
.problem-cell p{color:var(--graphite);margin:0}
.problem-solve>p:not(.problem-systems){color:var(--ink)}
.problem-systems{margin-top:14px!important;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.problem-systems a{color:var(--signal)}
.problem-systems a:hover{color:var(--navy)}

/* Service band - the six services, each linking to its description */
.service-band{background:linear-gradient(125deg,var(--navy-deep),var(--navy-lift));color:#fff;padding:84px 0}
.service-band-inner{max-width:var(--max);margin:auto;padding:0 24px;display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;align-items:center}
.service-band-copy h2{color:#fff;font-size:clamp(32px,3.6vw,48px);line-height:1.05;margin:8px 0 18px}
.service-band-copy>p:last-child{color:var(--haze);font-size:18px;margin:0}
.service-band-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.service-band-steps a{position:relative;display:flex;align-items:center;justify-content:space-between;min-height:74px;padding:22px 24px 18px;background:linear-gradient(145deg,var(--navy-edge),var(--navy-lift));border:1px solid rgba(71,148,255,.48);color:#fff;font-size:17px;font-weight:800}
.service-band-steps a:before{content:"";position:absolute;left:-1px;top:-1px;width:46px;height:4px;background:var(--signal-light)}
.service-band-steps a:after{content:"→";color:var(--signal-light);font-weight:900}
.service-band-steps a:hover{border-color:var(--signal-light)}
.solutions-heading .text-link{margin-top:0}

@media (max-width:1100px) and (min-width:901px){
  .industry-tile-photo{height:180px}
  /* Names wrap to two lines at this width; reserve both so descriptions align across a row */
  .industry-tile-body h3{min-height:2.3em}
  .industry-tile-ask h3{min-height:0}
}
@media (max-width:900px){
  .nav-group{padding:0;margin:0}
  .nav-sub{position:static;display:flex;min-width:0;border:0;box-shadow:none;padding:12px 0 0 16px;background:none}
  .nav-sub a{padding:7px 0}
  .nav-sub a:hover,.nav-sub a[aria-current="page"]{background:none}
  .hero-compact .hero-inner{min-height:420px}
  /* Narrow screens: type runs the full width, so the overlay does too */
  .industry-hero .product-hero-overlay{background:linear-gradient(180deg,rgba(6,26,54,.86) 0%,rgba(6,26,54,.78) 100%)}
  .industry-grid{grid-template-columns:1fr;grid-auto-rows:auto}
  .industry-tile{display:grid;grid-template-columns:220px 1fr;grid-template-rows:1fr auto}
  .industry-tile-photo{grid-row:1/3;height:auto;min-height:170px}
  .industry-tile-body h3{min-height:0}
  .service-detail,.service-band-inner{grid-template-columns:1fr;gap:40px}
  .industry-switch-inner{display:flex;overflow-x:auto;padding:0}
  .industry-switch a{flex:0 0 auto;padding:12px 18px 8px}
  .problem-head{display:none}
  .problem-row{grid-template-columns:1fr;padding:26px 0}
  .problem-cell,.problem-cell:first-child,.problem-cell:last-child{padding:0 0 18px}
  .problem-cell:last-child{padding-bottom:0}
  .problem-cell+.problem-cell{border-left:0}
  .problem-label{display:block}
}
@media (max-width:600px){
  .industry-picker-row{display:block}
  .industry-picker-lead{text-align:left;margin-top:10px}
  .industry-picker{padding:48px 0 60px}
  .industry-picker-inner,.service-band-inner{padding:0 20px}
  .industry-tile{grid-template-columns:1fr;grid-template-rows:auto}
  .industry-tile-photo{grid-row:auto;height:190px;min-height:0}
  .service-list,.service-band-steps{grid-template-columns:1fr}
  .service-band{padding:60px 0}
  .industry-hero h1{font-size:44px}
}

/* Systems sections share the page's content edge (124px at 1440), not the
   wider 100px edge they used before */
.solutions-section{padding-left:0;padding-right:0}
.solutions-inner{padding:0 24px}
@media (max-width:600px){.solutions-section{padding-left:0;padding-right:0}.solutions-inner{padding:0 20px}}

/* Industry heroes anchor to the top so the back link, eyebrow and title sit
   at the same height on all five pages instead of re-centring per page */
.industry-hero .product-hero-inner{justify-content:flex-start;padding-top:96px}
@media (max-width:900px){.industry-hero .product-hero-inner{padding-top:64px}}

/* Before / after on the industry tiles. The before photo is inset flush into
   the after photo's bottom-left corner - it costs no extra height, and its
   edges sit exactly on the tile's edges rather than floating over them. */
.industry-tile-before{position:absolute;left:0;bottom:0;width:46%;height:52%;margin:0;border-top:3px solid #fff;border-right:3px solid #fff;overflow:hidden;background:var(--frost)}
.industry-tile-before img{display:block;width:100%;height:100%;object-fit:cover}
.ba-tag{position:absolute;left:0;top:0;padding:4px 7px;background:var(--navy);color:#fff;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;line-height:1}
.ba-after{left:auto;right:0}

/* Sixth card in the 3 x 2 grid: for the visitor who does not see themselves
   in the five industries. Flat navy ground, so Signal Light carries the eyebrow. */
.industry-tile-ask{background:linear-gradient(135deg,var(--navy-deep),var(--navy-lift));border-color:var(--navy);border-top-color:var(--signal-light);justify-content:space-between;padding-bottom:24px}
.industry-tile-ask:hover{transform:none;box-shadow:0 10px 30px rgba(6,26,54,.07)}
.industry-tile-ask .industry-tile-body{padding:30px 28px 0;flex:0 1 auto}
.industry-tile-ask .eyebrow{color:var(--signal-light);font-size:13px;margin-bottom:10px}
.industry-tile-ask h3{color:#fff;font-size:28px;line-height:1.1;margin-bottom:14px}
.industry-tile-ask .industry-tile-body p:last-child{color:var(--haze);font-size:16px}
.industry-tile-ask .btn{align-self:flex-start;margin:0 28px}
@media (max-width:900px){.industry-tile-ask{display:flex;flex-direction:column;gap:22px;padding-bottom:26px}}
.industry-picker-row h2{margin-top:2px}

/* Site Investigation - the five disciplines behind every service. Mist ground
   separates it from the white industry picker above and the navy services below. */
.investigation{background:var(--mist);padding:72px 0}
.investigation-inner{max-width:var(--max);margin:auto;padding:0 24px}
.investigation-heading{margin-bottom:30px}
.investigation-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:60px;align-items:end}
.investigation-row h2{color:var(--navy);font-size:clamp(32px,3.4vw,46px);line-height:1.05;margin:2px 0 0}
.investigation-row p{color:var(--graphite);font-size:18px;margin:0}
.discipline-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--haze);border:1px solid var(--haze)}
.discipline{position:relative;background:#fff;padding:30px 24px 28px}
.discipline:before{content:"";position:absolute;left:24px;top:30px;width:42px;height:4px;background:var(--signal)}
.discipline h3{color:var(--navy);font-size:20px;line-height:1.15;margin:20px 0 8px}
.discipline p{color:var(--graphite);font-size:15px;margin:0}
@media (max-width:1100px) and (min-width:901px){.discipline-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.investigation-row{grid-template-columns:1fr;gap:14px}.discipline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.investigation{padding:56px 0}.investigation-inner{padding:0 20px}.discipline-grid{grid-template-columns:1fr}}
/* The framework band shares the 124px content edge with the sections below it */
.delivery-section{padding-left:0;padding-right:0}
.delivery-inner{padding:0 24px}
@media (max-width:600px){.delivery-section{padding-left:0;padding-right:0}.delivery-inner{padding:0 20px}}
/* Full-bleed bands (navy services, contact CTA) put their content on the same
   124px edge as the logo and every section, instead of 24px outside it */
@media (min-width:601px){
  .dark{padding-left:max(24px,calc((100vw - var(--max))/2 + 24px));padding-right:max(24px,calc((100vw - var(--max))/2 + 24px))}
  .cta{padding-left:max(24px,calc((100vw - var(--max))/2 + 24px));padding-right:max(24px,calc((100vw - var(--max))/2 + 24px))}
}
/* Inner containers that sit inside a 24px-padded band were 1240px wide, which
   put their text 24px outside the logo's edge at wide screens. At 1192px they
   land on the same 124px edge; below 1288px they are unchanged. */
.local-partnerships-inner,.leadership-inner,.careers-hero-inner,.careers-note-inner,
.job-hero-inner,.contact-hero-inner,.product-process-inner,.project-recognition-inner,
.project-environments-inner{max-width:calc(var(--max) - 48px)}

/* The picker heading stands alone: no eyebrow, no lead line */
.industry-picker-heading h2{margin-top:0}

/* Home hero: one flat navy block carrying the eyebrow, title and statement.
   No photograph - the industry tiles are the first imagery on the page.
   Dark ground, so the eyebrow takes Signal Light and the type is white. */
.hero-navy{background:linear-gradient(100deg,var(--navy-deep),var(--navy-lift))}
.hero-navy,.hero-navy .hero-inner{min-height:0}
.hero-navy .hero-inner{padding-top:56px;padding-bottom:56px}
.hero-navy .hero-copy{max-width:none}
.hero-navy .hero-copy>.eyebrow{color:var(--signal-light)}
.hero-navy h1{color:#fff}
.hero-statement{margin:0;max-width:900px;color:#fff;font-size:clamp(18px,1.6vw,22px);font-weight:700;line-height:1.4}
@media (max-width:900px){.hero-navy .hero-inner{min-height:0}}
@media (max-width:600px){.hero-navy .hero-inner{padding-top:44px;padding-bottom:44px}}


/* v0.61 - Industry pages: a shorter problem table, and field evidence (the
   industry's before/after pair) directly beneath it, before "How we solve it". */
.industry-hero,.industry-hero .product-hero-inner{min-height:610px}
.industry-hero .product-hero-inner{padding-top:72px;padding-bottom:56px}
.problems{padding-top:64px;padding-bottom:56px}
.problems-heading{max-width:none;margin-bottom:28px}
.problems-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:60px;align-items:end}
.problems-row h2{font-size:clamp(30px,3.2vw,44px);margin:2px 0 0}
.problems-row p{color:var(--graphite);font-size:17px;margin:0}
.problem-head span{padding:11px 28px}
.problem-cell{padding:20px 28px}
.problem-see h3{font-size:19px;margin:0 0 5px}
.problem-cell p{font-size:15px;line-height:1.5}
.problem-systems{margin-top:8px!important;font-size:12px}
.evidence{background:var(--mist);padding:52px 0 60px}
.evidence-inner{max-width:var(--max);margin:auto;padding:0 24px}
.evidence-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:14px}
.evidence-pair figure{margin:0}
.evidence-photo{position:relative;height:340px;overflow:hidden;background:var(--frost);border-top:5px solid var(--signal)}
.evidence-photo img{display:block;width:100%;height:100%;object-fit:cover}
.evidence-pair figcaption{margin-top:10px;color:var(--graphite);font-size:14px}
@media (max-width:900px){
  .industry-hero,.industry-hero .product-hero-inner{min-height:0}
  .problems-row{grid-template-columns:1fr;gap:12px}
  .problem-row{padding:20px 0}
  .evidence-photo{height:260px}
}
@media (max-width:600px){
  .evidence{padding:44px 0 48px}.evidence-inner{padding:0 20px}
  .evidence-pair{grid-template-columns:1fr;gap:18px}
  .evidence-photo{height:220px}
}

/* v0.62 - Industry pages carry no product talk: the systems section and the
   "Systems:" line in each problem row are gone. "In the field" shows two
   before/after cases side by side, each labelled with the table row it proves. */
.evidence-cases{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px;margin-top:14px}
.evidence-case h3{color:var(--navy);font-size:19px;line-height:1.2;margin:0 0 12px;min-height:2.4em}
.evidence-case .evidence-pair{margin-top:0;gap:10px}
.evidence-case .evidence-photo{height:230px}
.evidence-case figcaption{font-size:13px;line-height:1.4}
@media (max-width:900px){.evidence-cases{grid-template-columns:1fr;gap:32px}.evidence-case h3{min-height:0}.evidence-case .evidence-photo{height:240px}}
@media (max-width:600px){.evidence-case .evidence-pair{grid-template-columns:1fr 1fr}.evidence-case .evidence-photo{height:150px}}

/* v0.64 - "One team, from site investigation through construction." sets on two lines, not three */
.services .section-heading{max-width:960px}
/* The lead under the services headline breaks after its first sentence */
.services .section-heading p:last-child{max-width:820px;margin-left:auto;margin-right:auto}

/* v0.70 - slim hero: sentence-case title and the statement, nothing else */
.hero-navy h1{text-transform:none;font-size:clamp(34px,3.4vw,48px);line-height:1.08;letter-spacing:-.02em;margin:0 0 16px}
.hero-navy .hero-inner{padding-top:48px;padding-bottom:48px}
.hero-statement{font-weight:400;color:var(--frost)}
@media (max-width:600px){.hero-navy h1 br{display:none}}

/* v0.71 - Quiet industry tiles (layout A): one photo and a name, one row of five, no cards */
.industry-grid{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:auto;gap:16px}
.industry-tile{border:0;border-top:4px solid var(--signal);box-shadow:none;background:none}
.industry-tile:hover{transform:none;box-shadow:none}
.industry-tile-photo{height:250px}
.industry-tile-body{padding:14px 0 0}
.industry-tile-body h3{font-size:18px;line-height:1.2;margin:0;min-height:0;color:var(--navy)}
.industry-tile:hover h3{color:var(--signal)}
.industry-ask{margin:28px 0 0;color:var(--graphite);font-size:17px}
.industry-ask a{color:var(--signal);font-weight:800}
@media (max-width:1100px){.industry-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.industry-tile-photo{height:220px}.industry-tile-body h3{min-height:0}}
@media (max-width:900px){.industry-tile{display:flex}.industry-tile-photo{grid-row:auto;height:220px;min-height:0}}
@media (max-width:600px){.industry-grid{grid-template-columns:1fr;gap:22px}.industry-tile-photo{height:190px}.industry-tile-body{padding-top:10px}}

/* v0.72 - Industry Applications and We are water experts. set as a matched pair:
   two lines each, no eyebrow on either. The heading tops align with the lead beside them. */
.investigation-row{align-items:start}
.investigation-row h2{margin-top:0}

/* v0.73 - Hover on an industry tile fades to the same site's "before" photo (Ron: desktop audience) */
.industry-tile-photo{position:relative}
.tile-before{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .7s ease}
.tile-before-tag{position:absolute;left:0;bottom:0;padding:5px 9px;background:var(--navy);color:#fff;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;line-height:1;opacity:0;transition:opacity .7s ease}
.industry-tile:hover .tile-before,.industry-tile:hover .tile-before-tag{opacity:1}
@media (prefers-reduced-motion:reduce){.tile-before,.tile-before-tag{transition:none}}
/* v0.74 header breathing room */
.nav-wrap{padding-top:24px;padding-bottom:24px}
@media (max-width:900px){.main-nav{top:100%}}
/* v0.76 problems heading stands alone */
.problems-row{grid-template-columns:1fr}
/* v0.77 one story sentence per case */
.evidence-story{margin:16px 0 0;color:var(--graphite);font-size:17px;line-height:1.5}
.evidence-cases:has(.evidence-story-case){margin-top:20px}
/* v0.78 Safety page */
.safety-hero h1{font-size:clamp(40px,4.4vw,64px);line-height:1.02;margin:0 0 18px}
.sp-dot{color:var(--signal-light)}
/* v1.29 gold is reserved for caution: Stop Work Authority only */
.accent-line{background:var(--signal-light)}
.safety-hero .hero-inner{padding-top:64px;padding-bottom:64px}
.safety-hero .hero-statement{max-width:760px}
.sp-intro-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:60px;align-items:start;margin-bottom:44px}
.sp-intro-row h2{color:var(--navy);font-size:clamp(34px,3.6vw,52px);line-height:1.04;letter-spacing:-.025em;margin:0}
.sp-intro-row p{color:var(--graphite);font-size:19px;margin:0}
.sp-table{border-top:4px solid var(--navy)}
.sp-row{display:grid;grid-template-columns:220px 1fr;gap:40px;padding:30px 0;border-bottom:1px solid var(--haze)}
.sp-group{color:var(--signal);font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;margin:4px 0 0}
.sp-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 48px}
.sp-item h3{color:var(--navy);font-size:19px;line-height:1.2;margin:0 0 6px}
.sp-item p{color:var(--graphite);font-size:16px;margin:0}
.sp-stop{background:linear-gradient(120deg,var(--navy-deep),var(--navy-lift));color:#fff;padding:76px 24px}
.sp-stop-inner{max-width:calc(var(--max) - 48px);margin:auto;border-left:6px solid var(--amber);padding-left:36px}
.sp-stop-label{color:var(--amber);font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;margin:0 0 14px}
.sp-stop-quote{font-size:clamp(30px,3.2vw,44px);line-height:1.1;font-weight:800;letter-spacing:-.02em;max-width:900px;margin:0 0 18px}
.sp-stop-body{color:var(--haze);font-size:18px;max-width:760px;margin:0}
@media (max-width:900px){.sp-intro-row{grid-template-columns:1fr;gap:16px}.sp-row{grid-template-columns:1fr;gap:16px}.sp-items{grid-template-columns:1fr}.sp-stop{padding:56px 20px}.sp-stop-inner{padding-left:22px}}
/* v0.83 In the field gallery */
.g-head{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:18px}
.g-head .eyebrow{margin:0}
.g-lead{margin:8px 0 0;color:var(--navy);font-size:clamp(22px,2.2vw,30px);font-weight:800;line-height:1.2;letter-spacing:-.01em}
.g-nav{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.g-count{color:var(--graphite);font-size:14px;margin-right:6px}
.g-btn{width:46px;height:46px;border:2px solid var(--navy);background:#fff;color:var(--navy);font-size:20px;font-weight:700;cursor:pointer}
.g-btn:hover:not(:disabled){background:var(--navy);color:#fff}
.g-btn:disabled{opacity:.3;cursor:default}
.g-viewport{overflow:hidden}
.g-track{display:flex;column-gap:36px;transition:transform .5s ease}
.g-card{flex:0 0 calc((100% - 36px)/2)}
.g-card .evidence-pair{margin-top:0;gap:10px}
.g-card .evidence-photo{height:230px}
@media (max-width:900px){.g-card{flex-basis:100%}.g-head{flex-direction:column;align-items:flex-start}.g-card .evidence-photo{height:200px}}
@media (prefers-reduced-motion:reduce){.g-track{transition:none}}

/* v0.96 site survey form */
.sv-error{margin:0 0 20px;padding:12px 16px;background:#fff3d6;border-left:4px solid var(--amber);color:var(--ink)}
.thanks-hero .contact-hero-inner p:last-child a{color:#fff;text-decoration:underline}
.sv-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.sv-h{color:var(--navy);font-size:20px;margin:0 0 16px}
.sv-form .form-grid+.sv-h,.sv-form .form-grid+details{margin-top:30px}
.sv-form select{width:100%;border:1px solid var(--fog);border-radius:3px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%230B2D5B' stroke-width='1.8'/%3E%3C/svg%3E") no-repeat right 16px center/12px 8px;color:var(--ink);font:inherit;font-size:16px;line-height:1.6;padding:12px 44px 12px 14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}
.sv-form select:invalid,.sv-form select option[value=""]{color:var(--graphite)}
.sv-form textarea{min-height:140px}
.sv-drop{position:relative;display:flex;flex-direction:column;gap:4px;border:2px dashed var(--haze);border-radius:4px;padding:22px;text-align:center;cursor:pointer;background:var(--mist)}
.sv-drop:hover{border-color:var(--signal)}
.sv-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.sv-drop-main{color:var(--signal);font-weight:800}
.sv-drop-sub{color:var(--graphite);font-size:13px}
.sv-files{list-style:none;margin:8px 0 0;padding:0;color:var(--graphite);font-size:14px}
.sv-more{margin-top:30px;border-top:4px solid var(--navy);border-bottom:1px solid var(--haze)}
.sv-more summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:14px;padding:18px 0;flex-wrap:wrap}
.sv-more summary::-webkit-details-marker{display:none}
.sv-more summary span{color:var(--navy);font-size:20px;font-weight:800}
.sv-more summary span::before{content:"+";display:inline-block;width:22px;color:var(--signal)}
.sv-more[open] summary span::before{content:"\2212"}
.sv-more summary small{color:var(--graphite);font-size:14px}
.sv-more-body{padding:4px 0 26px}
.sv-h3{color:var(--signal);font-size:13px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;margin:24px 0 12px}
.sv-grid3{grid-template-columns:repeat(3,1fr)}
.sv-checks{border:0;margin:0 0 16px;padding:0}
.sv-checks legend{color:var(--navy);font-weight:800;font-size:14px;margin-bottom:8px;padding:0}
.sv-checks>div{display:flex;flex-wrap:wrap;gap:8px 20px}
.sv-check{display:inline-flex;align-items:center;gap:7px;color:var(--ink);font-size:15px;cursor:pointer}
.sv-check input{width:17px;height:17px;accent-color:var(--signal);margin:0}
.sv-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:16px}
.sv-yn{display:flex;align-items:center;gap:8px 20px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--mist)}
.sv-q{flex:0 0 300px;color:var(--ink);font-size:15px}
.sv-follow{flex:1 1 200px;border:1px solid var(--fog);border-radius:3px;font:inherit;font-size:15px;padding:8px 10px}
.sv-pipe .form-grid{margin:10px 0 6px}
.sv-turnstile{margin:26px 0 0;min-height:65px}
.sv-pdf{display:inline-block;margin-top:12px;color:var(--signal);font-weight:800}
.sv-pdf::before{content:"\2193  "}
@media (max-width:900px){.sv-grid3,.sv-pair{grid-template-columns:1fr}.sv-q{flex-basis:100%}}

/* Leadership photographs (v1.32): real portraits, 4:5 so the polo logo shows; no sprite */
.leader-photo{display:block;height:auto;aspect-ratio:4/5;object-fit:cover;background:none}

/* Team heading (v1.32): no eyebrow, so the headline starts level with the copy beside it */
.leadership-inner h2{margin-top:0}
/* v1.38 version number in the footer */
.site-version{margin-left:12px;padding-left:12px;border-left:1px solid var(--haze);color:var(--fog)}

.industry-hero-pipelines-energy{background-image:url('assets/field/pipelines-hero.jpg');background-position:75% top}
.industry-hero-transportation{background-image:url('assets/home-critical-infrastructure.png');background-position:center 50%}
.industry-hero-municipal{background-image:url('assets/fcr/fcr-channel-after.jpg');background-position:center 60%}
.industry-hero-utilities{background-image:url('assets/fcr/fcr-headcut-after.jpg');background-position:center 55%}
.industry-hero-property{background-image:url('assets/palisade/palisade-recovery.jpg');background-position:center 55%}
