@font-face{font-family:BonVivant;src:url('/assets/fonts/bonvivant-regular.woff2') format('woff2');font-weight:400;font-display:swap}
.home-page .hero-copy .eyebrow{margin-inline:auto;max-width:none}
.copy-fallback{width:100%;min-height:220px;margin-top:20px;padding:15px;background:#faf6ef;color:#103b32;border-radius:10px;font-size:16px}
.site-footer .footer-grid>div>a:not(.brand){min-height:44px}
@media(max-width:599px){.service-page .page-intro h1{font-size:clamp(39px,11.8vw,70px);overflow-wrap:normal}.home-page .home-about h2{font-size:44px}}
@media(max-width:599px){.home-page .service-card.sage h3{font-size:clamp(34px,10.7vw,48px)}.service-index .service-index-card.sage h2{font-size:clamp(34px,10.7vw,44px)}}
@font-face{font-family:BonVivant;src:url('/assets/fonts/bonvivant-bold.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Montserrat;src:url('/assets/fonts/montserrat-regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Montserrat;src:url('/assets/fonts/montserrat-medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Montserrat;src:url('/assets/fonts/montserrat-semibold.woff2') format('woff2');font-weight:600 800;font-display:swap}
@font-face{font-family:Handwritten;src:url('/assets/fonts/handwritten.woff2') format('woff2');font-weight:400;font-display:swap}
:root{--green:#103b32;--deep:#082e27;--cream:#faf6ef;--yellow:#efb300;--sage:#a2bfaa;--muted:#c3d3cb;--line:#ffffff26;--ink:#173c32;--serif:BonVivant,Georgia,serif;--body:Montserrat,Arial,sans-serif;--gutter:clamp(22px,6.5vw,104px)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:118px}body{margin:0;background:var(--green);color:var(--cream);font:400 16px/1.7 var(--body);overflow-x:clip}body.menu-open{overflow:hidden}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:700;line-height:1.05;letter-spacing:-.025em}h2{font-size:clamp(42px,5.2vw,78px)}h3{font-size:36px}p{max-width:70ch}strong{font-weight:600}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}img{display:block;max-width:100%;height:auto}svg{flex-shrink:0}button{color:inherit}address{font-style:normal}::selection{background:var(--yellow);color:var(--deep)}:focus-visible{outline:3px solid var(--yellow);outline-offset:5px}.light-section :focus-visible,.light-page main :focus-visible,.site-footer :focus-visible{outline-color:var(--green)}[hidden]{display:none!important}main:focus{outline:none}.icon{width:24px;height:24px}.wrap{width:min(100% - var(--gutter)*2,1280px);margin-inline:auto}.section-space{padding-block:clamp(75px,9vw,140px)}.eyebrow{display:block;text-transform:uppercase;font:500 12px/1.6 var(--body);letter-spacing:1.6px;margin-bottom:18px;color:var(--yellow)}.handwritten{font:400 clamp(24px,2.7vw,40px)/1.25 Handwritten,cursive;color:var(--yellow)}.button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:55px;padding:17px 26px;border:1px solid var(--yellow);border-radius:50px;background:var(--yellow);color:var(--deep);font:600 14px/1.4 var(--body);text-decoration:none;transition:background .2s,transform .2s;width:fit-content;max-width:100%}.button:hover{background:#ffcb32;transform:translateY(-3px)}.button .icon{width:21px;height:21px}.button-outline{color:var(--ink);background:transparent;border-color:#173c3277}.button-outline:hover{background:#173c320b}.text-link{display:inline-flex;gap:15px;align-items:center;font:600 14px/1.5 var(--body);text-decoration:none;min-height:44px}.text-link:hover{text-decoration:underline}.text-link .icon{width:22px}.light-section{background:var(--cream);color:var(--ink)}.light-section .eyebrow,.light-page .eyebrow{color:#416b50}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:48px;margin-bottom:50px}.section-heading>p{max-width:350px;color:var(--muted);font-size:16px}.section-heading>.button{flex-shrink:0}.light-section .section-heading>p{color:#4f655a}.skip-link{position:fixed;top:-100px;left:24px;background:var(--yellow);color:var(--deep);z-index:2000;padding:14px 20px}.skip-link:focus{top:20px}
/* Shared navigation: touch targets and names stay readable at every width. */
.site-header{position:fixed;z-index:1000;top:26px;left:4.45%;right:4.45%;max-width:1600px;margin:auto}.nav-shell{display:flex;align-items:center;gap:34px;width:100%;min-height:82px;padding:12px 16px 12px 30px;border:1px solid #315249;border-radius:100px;background:#092f28f5;box-shadow:0 4px 30px #0000000a}.brand{display:inline-flex;gap:13px;align-items:center;flex-shrink:0;text-decoration:none;color:var(--cream)}.brand-mark{position:relative;color:var(--yellow);font:400 47px/1 var(--serif)}.brand-mark>span{position:absolute;font:500 19px/1 var(--body);right:-8px;bottom:-2px}.brand-name{font:600 23px/1.1 var(--body);letter-spacing:1.3px}.brand-name small{display:block;font:500 7px/1.4 var(--body);letter-spacing:1.7px;margin-top:5px}.main-nav{display:flex;gap:clamp(24px,4vw,64px);align-items:center;justify-content:center;flex:1}.main-nav>a{display:inline-flex;align-items:center;min-height:44px;padding-block:8px;text-transform:uppercase;text-decoration:none;font:500 12px/1.5 var(--body);letter-spacing:.5px;color:var(--cream);position:relative}.main-nav>a::after{content:'';height:1px;background:var(--yellow);position:absolute;left:0;right:100%;bottom:6px;transition:right .2s}.main-nav>a:hover::after,.main-nav>a[aria-current=page]::after{right:0}.main-nav>a[aria-current=page]{color:var(--yellow)}.nav-contact{display:inline-flex;gap:16px;align-items:center;justify-content:center;flex-shrink:0;min-height:56px;padding:15px 24px;border-radius:50px;background:var(--yellow);color:var(--deep);text-decoration:none;text-transform:uppercase;font:600 13px/1.3 var(--body)}.nav-contact:hover{background:#ffcb32}.nav-contact .icon{width:19px;height:19px}.menu-toggle{display:none}.main-nav .mobile-contact{display:none}
/* Homepage: reference typography and layered South African landscape. */
.hero{isolation:isolate;height:clamp(910px,83vw,1260px);position:relative;overflow:clip;background:var(--green)}.hero-copy{position:relative;z-index:8;padding-top:170px;text-align:center;width:calc(100% - 7%)}.hero-copy .eyebrow{margin:0 0 27px;color:#d0ded6;font-size:11px}.hero h1{letter-spacing:-.055em;line-height:.94}.hero h1 span{display:block}.hero-first{font-size:clamp(115px,14vw,223px)}.hero-second{font-size:clamp(80px,10.2vw,162px);color:#b6c2c0;margin-top:6px;letter-spacing:-.04em}.hero-note{margin:23px auto 16px}.hero-summary{margin:0 auto;color:#e1e9e2;font-size:15px;line-height:1.6}.hero-landscape{position:absolute;inset:35vw 0 0;z-index:1;pointer-events:none}.hero-layer{position:absolute;top:0;left:0;width:100%;max-width:none;will-change:transform;mask-image:linear-gradient(#000 80%,transparent)}.layer-5{z-index:1;opacity:.75;filter:brightness(.8) saturate(.8);clip-path:polygon(0 41%,1% 40%,2% 41%,5% 41%,8% 39%,10% 37%,11% 36%,13% 36%,15% 33%,16% 32%,20% 32%,21% 31%,23% 32%,24% 35%,25% 36%,27% 39%,35% 40%,40% 41%,48% 43%,55% 43%,62% 44%,69% 41%,71% 39%,74% 39%,77% 36%,77.6% 33%,80% 33%,82% 36%,83% 39%,85% 39%,87% 41%,90% 41%,100% 41%,100% 100%,0 100%)}.layer-4{z-index:2;filter:brightness(.9);clip-path:polygon(0 43%,12% 46%,24% 45%,35% 49%,45% 47%,50% 50%,55% 48%,59% 51%,62% 52%,68% 48%,72% 43%,76% 43%,82% 43%,88% 43%,100% 48%,100% 100%,0 100%)}.layer-3{z-index:3;clip-path:polygon(0 45%,8% 45%,15% 44%,23% 48%,28% 47%,34% 57%,40% 58%,48% 49%,53% 51%,58% 49%,66% 59%,72% 51%,80% 46%,85% 49%,91% 54%,100% 48%,100% 100%,0 100%)}.layer-2{z-index:4;clip-path:polygon(0 50%,8% 53%,15% 55%,26% 63%,35% 65%,42% 55%,49% 49%,52% 51%,58% 49%,64% 56%,72% 62%,79% 60%,86% 49%,92% 48%,100% 49%,100% 100%,0 100%)}.layer-1{z-index:5;clip-path:polygon(0 72%,10% 72%,18% 76%,26% 73%,34% 65%,41% 65%,50% 72%,59% 74%,65% 73%,72% 66%,79% 60%,88% 47%,100% 48%,100% 100%,0 100%)}.layer-0{z-index:6;clip-path:polygon(0 85%,8% 81%,15% 86%,25% 88%,34% 88%,43% 65%,47% 62%,52% 72%,59% 75%,67% 67%,76% 66%,83% 60%,92% 60%,100% 59%,100% 100%,0 100%)}.hero-shade{position:absolute;z-index:7;inset:30% 0 0;background:linear-gradient(transparent 40%,var(--green) 100%)}.hero-circle{position:absolute;z-index:8;top:clamp(630px,53vw,850px);left:calc(50% - 95px);width:190px;height:190px;padding:22px;border-radius:50%;background:var(--yellow);color:var(--deep);font:600 18px/1.25 var(--body);text-align:center;text-decoration:none;text-transform:uppercase;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;transform:rotate(12deg);box-shadow:0 5px 65px #efb30066;transition:transform .6s}.hero-circle:hover{transform:rotate(3deg)}.hero-bottom{position:absolute;bottom:40px;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;font:500 12px/1.5 var(--body);letter-spacing:.5px}.hero-bottom a{padding:12px 0;text-decoration:none}.hero-bottom a:hover{color:var(--yellow)}
/* Logos: original artwork displayed without tile backgrounds. */
.logo-band{background:var(--cream);color:var(--ink);padding:48px 0 55px}.logo-band-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;margin-bottom:34px}.logo-band h2{font:500 12px/1.6 var(--body);letter-spacing:1px;text-transform:uppercase;padding-top:4px}.logo-band p{font-size:12px;line-height:1.7;text-align:right}.logo-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:25px;align-items:start}.logo-row a{display:flex;flex-direction:column;align-items:center;gap:17px;text-decoration:none;text-align:center;min-height:125px;padding:6px}.logo-row a:hover span{text-decoration:underline}.municipal-logo{object-fit:contain;mix-blend-mode:multiply;width:100%;height:95px;max-width:170px}.logo-row .municipal-logo{height:85px;max-width:150px}.logo-row span{font-size:11px;line-height:1.4;max-width:170px;font-weight:500}.logo-row a:last-child .municipal-logo{max-width:80px}
/* Large stacked service cards. On touch screens they become a readable list. */
.home-services{background:linear-gradient(var(--green),#082e27)}.service-stack{display:flex;flex-direction:column;gap:85px;position:relative;padding-bottom:10px}.service-card{position:sticky;top:118px;transform-origin:center top;border-radius:30px;min-height:clamp(550px,48vw,720px)}.service-card-link{display:block;position:relative;isolation:isolate;overflow:hidden;border-radius:inherit;height:clamp(550px,48vw,720px);text-decoration:none;color:inherit;background:inherit}.teal{background:#28524d;color:var(--cream)}.sand{background:#e5d5a3;color:var(--green)}.sage{background:#547b5f;color:white}.mint{background:#a2bfaa;color:var(--green)}.service-copy{position:relative;z-index:6;max-width:54%;padding:clamp(35px,5.5vw,80px) 0 0 clamp(35px,5.5vw,80px)}.service-copy .handwritten{font-size:clamp(22px,2.25vw,34px);display:block;margin-bottom:12px}.sand .handwritten,.mint .handwritten{color:var(--green)}.service-copy h3{font-size:clamp(48px,4.8vw,74px);max-width:520px;margin-bottom:32px;letter-spacing:-.03em}.service-copy p{max-width:335px;font-size:16px;line-height:1.65}.service-link{display:flex;gap:15px;align-items:center;margin-top:30px;font-size:13px;font-weight:600}.service-link .icon{width:21px}.card-number{position:absolute;right:5%;top:1%;font:400 clamp(200px,28vw,430px)/1.2 var(--serif);opacity:.14;z-index:1;pointer-events:none}.card-landscape{position:absolute;z-index:2;right:-4%;bottom:-20%;width:82%;max-width:none;height:auto;pointer-events:none;mask-image:linear-gradient(90deg,transparent,#000 32%)}.card-landscape.town-planning{clip-path:polygon(0 37%,1% 35%,2% 32%,3% 30%,5% 28%,7% 26%,6% 22%,6.5% 21%,8% 20%,9% 18%,11% 18%,17% 19%,23% 20%,29% 22%,35% 24%,42% 27%,48% 29%,56% 30%,61% 32%,65% 35%,70% 39%,71% 41%,73% 41%,74% 43%,74% 47%,76% 49%,77% 52%,83% 54%,88% 55%,94% 56%,100% 57%,100% 100%,0 100%)}.card-landscape.gis{width:91%;right:-11%;bottom:-29%;clip-path:polygon(0 23%,4% 26%,9% 30%,13% 30%,15% 28%,16% 26%,18% 26%,20% 28%,23% 32%,28% 37%,29% 44%,36% 46%,43% 45%,44% 44%,48% 43%,51% 44%,54% 45%,60% 48%,64% 49%,65% 46%,69% 43%,73% 41%,76% 41%,77% 42%,79% 42%,81% 46%,86% 50%,91% 51%,96% 52%,100% 51%,100% 100%,0 100%)}.card-landscape.environment{width:86%;bottom:-25%;mask-image:linear-gradient(135deg,transparent 20%,#000 50%);clip-path:polygon(0 25%,4% 26%,8% 27%,9% 26%,10% 24%,12% 23%,14% 21%,15% 19%,18% 20%,20% 19%,21% 18%,22.5% 18%,24% 20%,24% 22%,25% 23%,27% 24%,30% 24%,40% 26%,48% 27%,55% 27%,61% 27%,69% 25%,76% 24%,77% 22%,78% 22%,81% 21%,83% 17.5%,87% 18%,88% 21%,90% 23%,92% 24%,95% 26%,98% 24%,100% 23%,100% 100%,0 100%)}.card-landscape.project-support{width:100%;right:-10%;bottom:-17%;mask-image:linear-gradient(120deg,transparent 20%,#000 56%);clip-path:polygon(0 55%,12% 50%,25% 40%,39% 33%,50% 26%,57% 20%,60% 19%,63% 16%,65% 11%,67% 9%,68% 6%,72% 6%,77% 4.5%,78.5% 4.5%,79.5% 9%,80.5% 5.5%,83% 5.5%,84% 5%,87% 5%,88% 9%,89% 5%,92% 5%,93% 4.5%,95% 5%,97% 5%,98% 3.7%,100% 5.5%,100% 100%,0 100%)}.card-cloud{position:absolute;bottom:-6%;left:0;width:100%;z-index:3;opacity:.75;pointer-events:none}.card-route{position:absolute;z-index:4;top:0;bottom:0;left:70%;width:3px;background:repeating-linear-gradient(to bottom,var(--yellow) 0,var(--yellow) 18px,transparent 18px,transparent 30px)}.card-route::before{content:'';position:absolute;top:25%;left:-10px;width:24px;height:24px;background:var(--yellow);border-radius:50%}.card-cursor{display:none;position:absolute;top:0;left:0;z-index:10;width:110px;height:110px;align-items:center;justify-content:center;border-radius:50%;background:var(--yellow);color:var(--deep);text-align:center;text-transform:uppercase;font-size:13px;line-height:1.3;font-weight:600;pointer-events:none;opacity:0}.cursor-enabled .card-cursor{display:flex}
/* Project and company content. */
.role-note{font-size:14px;line-height:1.7;color:#496456;max-width:710px;margin-bottom:40px}.project-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}.project-preview{display:flex;flex-direction:column;text-decoration:none;padding:30px 0;border-top:1px solid #173c323d;transition:border-color .2s}.project-preview:hover{border-top-color:var(--green)}.project-preview-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px}.project-preview .municipal-logo{width:125px;height:85px;object-position:left center}.project-index{font-size:12px;letter-spacing:1px;opacity:.65}.project-type{font-size:11px;letter-spacing:.65px;text-transform:uppercase;line-height:1.6;min-height:37px;margin-bottom:15px}.project-preview h3{font-size:36px;line-height:1.1;margin-bottom:10px}.project-preview>p:not(.project-type){font-size:13px;color:#496456}.project-preview .text-link{margin-top:22px}.split-layout{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(45px,7vw,110px)}.landscape-frame{position:relative;overflow:hidden;border-radius:24px}.landscape-frame img{width:100%;height:100%;min-height:510px;aspect-ratio:4/5;object-fit:cover;transition:transform .8s}.landscape-frame:hover img{transform:scale(1.025)}figcaption{position:absolute;left:22px;bottom:19px;color:white;font-size:10px;letter-spacing:.4px;text-shadow:0 1px 8px black;z-index:2}figure::after{content:'';position:absolute;left:0;right:0;bottom:0;height:100px;background:linear-gradient(transparent,#0004);pointer-events:none}.home-about h2{font-size:clamp(42px,4vw,60px);margin-bottom:30px}.home-about p{color:var(--muted);margin-bottom:20px}.home-about .button{margin-top:18px}.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:50px;list-style:none;padding:0;margin:0}.process-grid li{border-top:1px solid #173c3240;padding-top:24px}.process-grid li>span{font-size:12px;color:#496456;display:block;margin-bottom:35px}.process-grid h3{font-size:32px;margin-bottom:17px}.process-grid p{font-size:15px;color:#4c6357}.contact-band{padding:90px 0;background:#e5d5a3;color:var(--green)}.contact-band>.wrap{display:flex;justify-content:space-between;align-items:center;gap:50px}.contact-band .eyebrow{color:#41644e}.contact-band h2{font-size:clamp(43px,4.7vw,68px);margin-bottom:18px}.contact-band p{font-size:15px;max-width:650px}.contact-band .button{flex-shrink:0;background:var(--green);border-color:var(--green);color:white}.contact-band .button:hover{background:var(--deep)}
/* Real pages with readable content and predictable navigation. */
.page-intro{padding-top:195px;padding-bottom:75px}.page-intro h1{font-size:clamp(64px,7.8vw,118px);max-width:1140px;margin-bottom:32px}.page-intro .lead{max-width:710px;font-size:clamp(17px,1.5vw,21px);line-height:1.65;color:var(--muted)}.page-intro .back-link{margin-top:28px}.light-page{background:var(--cream);color:var(--ink)}.light-page .page-intro .lead{color:#4e6559}.service-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;margin-bottom:100px}.service-index-card{padding:42px;border-radius:25px;min-height:350px;display:flex;flex-direction:column;text-decoration:none;transition:transform .25s}.service-index-card:hover{transform:translateY(-5px)}.service-index-card>div{display:flex;justify-content:space-between;align-items:center;margin-bottom:50px}.service-index-card>div .icon{width:36px;height:36px}.service-index-card>div span{font-size:12px}.service-index-card h2{font-size:48px;margin-bottom:20px}.service-index-card p{font-size:16px;max-width:440px;margin-bottom:30px}.service-index-card .text-link{margin-top:auto}.faq-list{border-top:1px solid #173c3240}.faq-list details{padding:22px 0;border-bottom:1px solid #173c3240}.faq-list summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:24px;font-size:16px;font-weight:600;line-height:1.5;min-height:44px;align-items:center}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary::after{content:'+';font-size:27px;font-weight:400}.faq-list details[open] summary::after{content:'−'}.faq-list p{font-size:15px;margin-top:15px;color:#496456}.faq-list .text-link{margin-top:12px}.service-detail .split-layout{align-items:start}.service-detail h2{font-size:52px}.service-detail p{font-size:16px;color:#496456;margin-bottom:30px}.service-points{list-style:none;margin:28px 0;padding:0;display:flex;flex-direction:column;gap:12px}.service-points li{display:flex;align-items:flex-start;gap:14px;line-height:1.6}.service-points .icon{color:#547b5f;width:21px;height:25px}.related-link{display:flex;margin-top:20px}.related-services{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}.related-services a{display:flex;align-items:center;gap:18px;padding:25px 0;border-top:1px solid var(--line);text-decoration:none;font-size:17px}.related-services a .icon:first-child{color:var(--yellow);width:28px;height:28px}.related-services a .icon:last-child{margin-left:auto}.related-services a:hover{color:var(--yellow)}
/* Projects: scope is visible; no unsupported outcomes or client claims. */
.project-role{border-left:3px solid #c79400;background:#eeeade;padding:28px 32px;max-width:1000px;border-radius:0 15px 15px 0}.project-role .eyebrow{margin-bottom:10px;font-size:11px}.project-role p{font-size:16px;max-width:80ch}.project-jump{display:flex;gap:32px;margin-top:45px;margin-bottom:70px}.project-jump a{display:flex;align-items:center;gap:28px;text-decoration:none;min-height:44px;font-size:14px;border-bottom:1px solid #173c3255}.project-jump a span{font-size:11px;color:#5b7264}.project-jump a:hover{border-color:var(--green)}.project-group{padding-bottom:95px;scroll-margin-top:140px}.group-heading{display:flex;justify-content:space-between;align-items:center;gap:25px;padding-bottom:30px}.group-heading h2{font-size:51px}.group-heading>span{font-size:12px;color:#5b7264}.project-row{display:grid;grid-template-columns:30px 125px 1fr 130px;gap:32px;padding:38px 0;border-top:1px solid #173c3230;align-items:start;scroll-margin-top:130px}.project-logo-holder{display:flex;justify-content:center;align-items:center;min-height:90px}.project-logo-holder .municipal-logo{width:115px;height:90px}.place-icon{display:flex;align-items:center;justify-content:center;width:90px;height:90px;color:#547b5f}.place-icon .icon{width:45px;height:45px}.project-main .eyebrow{font-size:10px;letter-spacing:1px;margin:0 0 9px}.project-main h3{font-size:39px;margin-bottom:16px}.project-main p{font-size:14px;color:#4d6558;max-width:600px}.project-main .project-deliverable{font-size:16px;color:var(--ink);margin-bottom:12px}.project-role-tag{padding-top:5px;font-size:12px;line-height:1.6}.project-role-tag span{display:block;color:#5b7264;font-size:10px;margin-bottom:6px}.project-role-tag strong{font-weight:500}
/* Staff information stays visible without interaction. */
.about-overview{padding-bottom:95px}.about-banner{height:clamp(310px,35vw,530px);position:relative;border-radius:25px;overflow:hidden}.about-banner img{width:100%;height:100%;object-fit:cover;object-position:center 48%}.about-facts{display:grid;grid-template-columns:.7fr 1fr 1fr;gap:50px;padding-top:38px}.about-facts span{display:block;font-size:11px;letter-spacing:.7px;color:var(--muted);margin-bottom:10px;text-transform:uppercase}.about-facts strong{font:400 30px/1.2 var(--serif)}.prose p{margin-bottom:22px;color:#496456}.prose .text-link{margin-top:8px}.staff-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 50px}.staff-card{display:flex;gap:28px;align-items:flex-start;padding:35px 0;border-top:1px solid #a2bfaa70;min-height:155px}.staff-number{font-size:11px;color:var(--yellow);padding-top:8px}.staff-card h3{font-size:40px;line-height:1.1;margin-bottom:12px}.staff-card p{color:var(--muted);font-size:16px}.staff-card:last-child{grid-column:1/-1}.values-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:35px;margin-top:50px}.values-grid article{border-top:1px solid #173c3240;padding-top:25px}.values-grid h3{font-size:31px;margin-bottom:20px}.values-grid p{font-size:14px;color:#496456}
/* Contact: clear labels, autofill, honest email handoff and a copy fallback. */
.contact-layout{display:grid;grid-template-columns:.85fr 1.15fr;gap:70px;align-items:start;padding-bottom:110px}.contact-option{display:flex;align-items:center;gap:22px;padding:28px 0;border-top:1px solid #173c3235;text-decoration:none}.contact-option>.icon:first-child{width:27px;height:27px}.contact-option>.icon:last-child{margin-left:auto;width:20px}.contact-option small{display:block;font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:#5b7264;margin-bottom:10px}.contact-option strong{font-size:20px;font-weight:500;line-height:1.5;display:block}.contact-option:hover strong{text-decoration:underline}.email-link{overflow-wrap:anywhere}.contact-address{display:flex;gap:22px;border-top:1px solid #173c3235;padding:30px 0}.contact-address>.icon{width:27px;height:27px}.contact-address h2{font:500 15px/1.5 var(--body);margin-bottom:17px}.contact-address address{font-size:15px;line-height:1.8;color:#496456;margin-bottom:15px}.contact-company{font-size:12px;color:#5b7264;margin:20px 0}.enquiry-panel{padding:40px;border-radius:25px;background:var(--green);color:var(--cream)}.enquiry-panel .eyebrow{color:var(--yellow)}.enquiry-panel h2{font-size:43px;line-height:1.1;margin-bottom:22px}.form-explanation{font-size:14px;color:#c3d3cb;line-height:1.7;margin-bottom:32px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:22px}.field{min-width:0;margin-bottom:23px}.field label{display:block;font-size:12px;line-height:1.6;margin-bottom:9px}.field label span{color:#b3cabb;font-size:10px}.field input,.field select,.field textarea{width:100%;min-height:48px;border:1px solid #769c8e;background:#0a3029;color:white;border-radius:9px;padding:12px 14px;font-size:16px;line-height:1.5}.field textarea{resize:vertical;min-height:130px;max-height:500px}.field select{cursor:pointer;appearance:auto}.field input:hover,.field textarea:hover,.field select:hover{border-color:#c6dace}.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible{outline:2px solid var(--yellow)!important;outline-offset:2px;border-color:var(--yellow)}.field-help{font-size:11px;color:#b3cabb;margin-top:9px;line-height:1.6}.form-privacy{font-size:11px;line-height:1.7;color:#b3cabb;margin-top:20px}.form-privacy a{color:var(--cream)}#form-status{font-size:13px;line-height:1.7;color:#f4cf64;margin-top:17px}#form-status:empty{display:none}.copy-enquiry{display:inline-flex;min-height:44px;align-items:center;border:0;background:none;color:var(--cream);padding:5px 0;font-size:13px;text-decoration:underline;text-underline-offset:4px;margin-top:8px}
/* Footer, credits and privacy. */
.site-footer{background:var(--cream);color:var(--ink);padding-top:70px;border-top:1px solid #173c321f}.footer-grid{display:grid;grid-template-columns:1.1fr .7fr 1.2fr 1fr;gap:50px;padding-bottom:60px}.site-footer .brand{color:var(--ink);margin-bottom:25px}.site-footer .brand-mark{color:var(--ink)}.footer-grid h2{font:600 11px/1.5 var(--body);text-transform:uppercase;letter-spacing:1px;margin:5px 0 20px}.footer-grid p,.footer-grid address{font-size:12px;color:#4d6558;line-height:1.9}.footer-grid>div>a:not(.brand){display:block;width:fit-content;font-size:12px;line-height:1.7;min-height:35px;text-decoration:none;margin-bottom:3px}.footer-grid>div>a:not(.brand):hover{text-decoration:underline}.footer-grid address{margin-bottom:12px}.footer-bottom{border-top:1px solid #173c3230;padding-block:24px;display:flex;gap:25px;justify-content:space-between;align-items:center;font-size:10px;line-height:1.6;flex-wrap:wrap}.footer-bottom a{padding-block:8px;text-decoration:none}.footer-bottom a:hover{text-decoration:underline}.legal-copy{max-width:850px;padding-bottom:100px}.legal-copy h2{font-size:37px;margin:36px 0 20px}.legal-copy p,.legal-copy li{font-size:15px;line-height:1.8;margin-bottom:20px}.legal-copy article{padding-bottom:25px;border-bottom:1px solid #173c3230}.legal-copy .small-text{font-size:12px;color:#5b7264}
@media(min-width:1800px){.hero-landscape{top:520px}.hero-circle{top:790px}.hero-first{font-size:245px}.hero-second{font-size:170px}}
@media(max-width:1199px){.nav-shell{gap:25px;padding-left:25px}.main-nav{gap:30px}.nav-contact{padding-inline:20px}.brand-name{font-size:20px}.hero-copy{padding-top:170px}.hero-first{font-size:14vw}.hero-second{font-size:10.2vw}.hero-landscape{top:365px;width:120%;left:-10%}.hero-circle{top:640px}.service-copy{max-width:60%}.service-copy h3{font-size:56px}.service-copy p{font-size:15px;max-width:300px}.service-card,.service-card-link{min-height:570px;height:570px}.card-landscape{width:95%;right:-12%}.card-landscape.gis{width:104%;right:-18%}.project-preview h3{font-size:32px}.contact-layout{gap:40px;grid-template-columns:.85fr 1.15fr}.enquiry-panel{padding:32px}.contact-option{gap:15px}.contact-option strong{font-size:17px}.footer-grid{gap:25px}.footer-grid .brand-name{font-size:18px}.values-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:991px){:root{--gutter:32px}.site-header{top:16px;left:20px;right:20px}.nav-shell{min-height:72px;padding:9px 13px 9px 22px;gap:20px}.brand-name{font-size:20px}.brand-mark{font-size:40px}.brand-name small{font-size:6px}.nav-contact{margin-left:auto;min-height:51px;font-size:12px;padding:14px 20px}.menu-toggle{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;min-width:44px;height:44px;padding:10px;border:0;background:none}.menu-toggle span{width:24px;height:2px;background:white;transition:transform .2s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4.5px) rotate(-45deg)}.main-nav{display:none;position:absolute;top:84px;left:0;right:0;padding:22px 28px 28px;border:1px solid #315249;border-radius:24px;background:#092f28;max-height:calc(100svh - 125px);overflow-y:auto;box-shadow:0 20px 30px #0002;align-items:stretch;gap:0}.main-nav.open{display:flex;flex-direction:column}.main-nav>a{font-size:16px;min-height:60px;border-bottom:1px solid #ffffff20;padding-block:16px}.main-nav .mobile-contact{display:flex;border:0}.main-nav>a::after{display:none}.hero{height:920px}.hero-copy{padding-top:150px;width:calc(100% - 48px)}.hero-first{font-size:14.1vw}.hero-second{font-size:10.5vw}.hero-note{font-size:31px}.hero-summary{font-size:14px}.hero-landscape{top:325px;left:-23%;width:146%}.hero-circle{top:580px;left:calc(50% - 80px);width:160px;height:160px;font-size:16px}.hero-bottom{bottom:24px}.logo-band-heading{gap:30px}.logo-row{gap:14px}.logo-row span{font-size:10px}.logo-row .municipal-logo{height:72px;max-width:120px}.section-heading{gap:25px;align-items:flex-start;flex-direction:column;margin-bottom:40px}.section-heading>p{max-width:600px}.service-stack{gap:30px}.service-card{position:relative;top:auto;min-height:600px;transform:none!important;opacity:1!important}.service-card-link{height:600px}.service-copy{max-width:65%;padding:40px}.service-copy h3{font-size:55px}.service-copy p{font-size:15px;max-width:320px}.service-copy .handwritten{font-size:27px}.card-landscape{width:100%;bottom:-16%;right:-10%}.card-landscape.gis{bottom:-23%;width:112%;right:-20%}.card-landscape.environment{bottom:-15%;width:100%;right:-10%}.card-landscape.project-support{bottom:0%;width:112%;right:-18%}.card-number{font-size:260px;top:8%}.card-cursor{display:none!important}.card-route{opacity:.7}.project-preview-grid{gap:25px}.project-preview h3{font-size:29px}.project-type{font-size:10px;min-height:49px}.project-preview .municipal-logo{width:100px;height:75px}.split-layout{gap:45px;grid-template-columns:1fr}.landscape-frame img{min-height:0;max-height:500px;aspect-ratio:16/11}.home-about .split-layout{grid-template-columns:1fr 1fr;gap:35px}.home-about .landscape-frame img{aspect-ratio:4/6;min-height:500px}.home-about h2{font-size:40px}.home-about p{font-size:14px}.process-grid{gap:30px}.process-grid h3{font-size:28px}.contact-band>.wrap{align-items:flex-start;flex-direction:column;gap:28px}.contact-band{padding:70px 0}.page-intro{padding-top:155px;padding-bottom:60px}.page-intro h1{font-size:78px}.page-intro .lead{font-size:18px}.service-index{gap:22px;margin-bottom:75px}.service-index-card{padding:32px;min-height:350px}.service-index-card h2{font-size:40px}.service-index-card p{font-size:15px}.service-detail .landscape-frame{max-width:none}.service-detail .landscape-frame img{aspect-ratio:16/10}.related-services{grid-template-columns:1fr;gap:0}.related-services a{padding:25px 0}.project-row{grid-template-columns:24px 95px 1fr;gap:25px}.project-role-tag{grid-column:3;display:flex;gap:10px;padding-top:0}.project-role-tag span{font-size:11px}.project-logo-holder .municipal-logo{width:95px;height:85px}.project-main h3{font-size:35px}.project-jump{margin-bottom:60px}.about-overview{padding-bottom:75px}.about-facts{gap:30px}.about-facts strong{font-size:25px}.staff-grid{gap:0 30px}.staff-card{gap:20px}.staff-card h3{font-size:35px}.staff-card p{font-size:14px}.values-grid{grid-template-columns:1fr 1fr;gap:35px}.contact-layout{grid-template-columns:1fr;gap:35px;max-width:750px;padding-bottom:80px}.contact-option strong{font-size:21px}.contact-company{margin-bottom:0}.enquiry-panel{padding:40px}.footer-grid{grid-template-columns:1fr 1fr;gap:45px}.footer-grid>div>a:not(.brand){font-size:13px}.footer-grid p,.footer-grid address{font-size:13px}.footer-bottom{justify-content:flex-start;gap:12px 25px}}
@media(max-width:599px){:root{--gutter:22px}html{scroll-padding-top:105px}.section-space{padding-block:70px}.site-header{top:12px;left:12px;right:12px}.nav-shell{min-height:68px;padding:8px 10px 8px 17px;gap:9px}.brand{gap:10px}.brand-mark{font-size:35px}.brand-mark>span{font-size:15px;right:-6px}.brand-name{font-size:17px;letter-spacing:1px}.brand-name small{font-size:5px;letter-spacing:1.1px}.nav-contact{font-size:10px;min-height:44px;padding:12px 16px}.nav-contact .icon{display:none}.menu-toggle{min-width:44px}.main-nav{top:78px;padding:12px 24px 20px}.hero{height:820px}.hero-copy{padding-top:125px;width:calc(100% - 24px)}.hero-copy .eyebrow{font-size:9px;letter-spacing:1px;margin-bottom:28px}.hero-first{font-size:14.4vw}.hero-second{font-size:10.6vw;margin-top:10px;letter-spacing:-.04em}.hero-note{font-size:23px;margin:23px auto 20px;max-width:330px;line-height:1.4}.hero-summary{font-size:13px;max-width:315px;padding:0 5px;line-height:1.7}.desktop-break{display:none}.hero-landscape{width:210%;left:-55%;top:325px}.hero-circle{top:500px;left:calc(50% - 68px);width:136px;height:136px;font-size:13px;gap:10px;box-shadow:0 4px 35px #efb30044}.hero-circle .icon{width:20px;height:20px}.hero-bottom{bottom:22px;gap:20px;align-items:flex-end;font-size:10px;letter-spacing:0}.hero-bottom>span{max-width:145px;line-height:1.6}.hero-bottom>a{max-width:145px;text-align:right;line-height:1.6;min-height:44px;display:flex;align-items:center}.logo-band{padding:34px 0}.logo-band-heading{flex-direction:column;gap:12px;margin-bottom:30px}.logo-band h2{font-size:11px}.logo-band p{text-align:left;font-size:12px}.logo-band p br{display:none}.logo-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px}.logo-row a{gap:12px;min-height:123px;padding:0}.logo-row .municipal-logo{height:73px;max-width:103px}.logo-row span{font-size:10px;line-height:1.5}.logo-row a:last-child .municipal-logo{max-width:65px}.eyebrow{font-size:10px;letter-spacing:1.3px;margin-bottom:14px}.section-heading{margin-bottom:32px;gap:23px}.section-heading h2{font-size:47px}.section-heading>p{font-size:15px}.button{font-size:13px;gap:20px;min-height:52px;padding:16px 22px}.service-stack{gap:24px}.service-card{min-height:565px;border-radius:23px}.service-card-link{height:565px}.service-copy{max-width:100%;padding:28px 25px 0}.service-copy .handwritten{font-size:23px;margin-bottom:13px;max-width:260px;line-height:1.3}.service-copy h3{font-size:48px;margin-bottom:22px;max-width:280px;line-height:1.03}.service-copy p{font-size:14px;max-width:250px;line-height:1.65}.service-link{margin-top:20px;font-size:12px}.card-landscape{width:160%;right:-45%;bottom:-9%;mask-image:linear-gradient(160deg,transparent 15%,#000 58%)}.card-landscape.gis{width:160%;right:-45%;bottom:-17%}.card-landscape.environment{width:160%;right:-45%;bottom:-13%}.card-landscape.project-support{width:160%;right:-45%;bottom:-1%}.card-number{font-size:180px;top:36%;right:4%;opacity:.14}.card-route{left:83%;opacity:.5;top:55%}.card-route::before{top:25%;width:18px;height:18px;left:-7px}.card-cloud{width:140%;max-width:none;left:-20%;bottom:-1%;opacity:.7}.project-preview-grid{grid-template-columns:1fr;gap:0}.project-preview{padding:28px 0 32px}.project-preview-top{margin-bottom:20px}.project-preview .municipal-logo{width:125px;height:78px}.project-type{font-size:10px;min-height:0;margin-bottom:11px}.project-preview h3{font-size:38px;max-width:330px}.project-preview .text-link{margin-top:14px}.role-note{font-size:13px;margin-bottom:30px}.home-about .split-layout{grid-template-columns:1fr;gap:35px}.home-about .landscape-frame img{min-height:0;aspect-ratio:5/4;max-height:400px}.landscape-frame{border-radius:20px}.home-about h2{font-size:46px;line-height:1.05}.home-about p{font-size:15px}.home-about .button{margin-top:10px}.process-grid{grid-template-columns:1fr;gap:30px}.process-grid li{padding-top:20px}.process-grid li>span{margin-bottom:22px}.process-grid h3{font-size:32px;margin-bottom:13px}.process-grid p{font-size:14px}.contact-band{padding:60px 0}.contact-band h2{font-size:45px}.contact-band p{font-size:14px}.page-intro{padding-top:135px;padding-bottom:45px}.page-intro h1{font-size:57px;line-height:1.04;letter-spacing:-.03em;margin-bottom:25px;overflow-wrap:break-word}.page-intro .lead{font-size:16px;line-height:1.7}.service-index{grid-template-columns:1fr;gap:18px;margin-bottom:65px}.service-index-card{min-height:325px;padding:28px}.service-index-card>div{margin-bottom:30px}.service-index-card h2{font-size:42px}.service-index-card p{font-size:14px;margin-bottom:18px}.service-index-card .text-link{font-size:13px}.faq-list summary{font-size:15px;gap:16px}.faq-list p{font-size:14px}.service-detail h2{font-size:46px}.service-detail p,.service-points{font-size:15px}.service-detail .split-layout{gap:40px}.service-detail .landscape-frame img{aspect-ratio:5/4}.related-services a{font-size:16px}.project-role{padding:23px 22px}.project-role p{font-size:14px}.project-jump{gap:22px;margin:28px 0 50px}.project-jump a{font-size:12px;gap:16px}.project-group{padding-bottom:60px;scroll-margin-top:110px}.group-heading{gap:10px;padding-bottom:22px}.group-heading h2{font-size:39px}.group-heading>span{font-size:10px;white-space:nowrap}.project-row{grid-template-columns:24px 1fr;gap:22px 15px;padding:27px 0 32px;scroll-margin-top:115px}.project-row>.project-index{padding-top:10px}.project-logo-holder{grid-column:2;justify-content:flex-start;min-height:80px}.project-logo-holder .municipal-logo{width:110px;height:80px;object-position:left center}.project-main{grid-column:1/-1}.project-main h3{font-size:37px;line-height:1.1}.project-main .project-deliverable{font-size:15px}.project-main p{font-size:13px}.project-role-tag{grid-column:1/-1;margin-top:-5px}.project-role-tag span{margin:0}.place-icon{width:100px;height:70px;justify-content:flex-start}.about-overview{padding-bottom:60px}.about-banner{height:290px;border-radius:20px}.about-facts{grid-template-columns:1fr;gap:25px;padding-top:28px}.about-facts>div{display:flex;align-items:baseline;justify-content:space-between;gap:20px;border-bottom:1px solid #ffffff25;padding-bottom:20px}.about-facts span{font-size:9px;margin:0;max-width:125px}.about-facts strong{font-size:24px;text-align:right}.prose p{font-size:15px}.staff-grid{grid-template-columns:1fr;gap:0}.staff-card{min-height:0;padding:28px 0;gap:20px}.staff-card h3{font-size:36px;margin-bottom:10px}.staff-card p{font-size:15px}.staff-card:last-child{grid-column:auto}.values-grid{grid-template-columns:1fr;gap:30px;margin-top:35px}.values-grid h3{font-size:33px;margin-bottom:14px}.values-grid p{font-size:15px}.contact-layout{padding-bottom:65px;gap:35px}.contact-option{gap:15px;padding:25px 0}.contact-option strong{font-size:18px}.contact-option>.icon:first-child{width:23px;height:23px}.contact-option>.icon:last-child{width:16px}.contact-address{gap:16px}.contact-address address{font-size:14px}.contact-address h2{font-size:14px}.contact-company{font-size:11px}.enquiry-panel{padding:28px 23px;border-radius:22px}.enquiry-panel h2{font-size:39px}.form-explanation{font-size:13px;margin-bottom:25px}.form-row{grid-template-columns:1fr;gap:0}.field{margin-bottom:22px}.field label{font-size:12px}.field input,.field select,.field textarea{font-size:16px}.form-privacy{font-size:11px}.site-footer{padding-top:50px}.footer-grid{grid-template-columns:1fr 1fr;gap:35px 22px;padding-bottom:40px}.footer-grid>div:first-child{grid-column:1/-1}.footer-grid>div:nth-child(3){grid-column:1/-1;grid-row:3}.footer-grid>div:nth-child(4){grid-column:2;grid-row:2}.site-footer .brand{margin-bottom:20px}.footer-grid .brand-name{font-size:22px}.footer-grid .brand-mark{font-size:43px}.footer-grid .brand-name small{font-size:6px}.footer-grid h2{margin-bottom:16px}.footer-grid p,.footer-grid address,.footer-grid>div>a:not(.brand){font-size:12px}.footer-grid>div>a:not(.brand){min-height:37px}.footer-bottom{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;font-size:10px}.footer-bottom>span{grid-column:1/-1}.footer-bottom>a{min-height:40px;display:flex;align-items:center}.legal-copy{padding-bottom:70px}.legal-copy h2{font-size:33px}.legal-copy p,.legal-copy li{font-size:14px;overflow-wrap:anywhere}}
@media(max-width:359px){:root{--gutter:18px}.brand-name{font-size:14px}.brand-name small{font-size:4.5px}.brand-mark{font-size:32px}.nav-shell{padding-left:13px;gap:6px}.nav-contact{padding-inline:11px;font-size:9px}.menu-toggle{padding-inline:9px}.hero{height:780px}.hero-copy .eyebrow{font-size:8px}.hero-note{font-size:21px}.hero-summary{font-size:12px;max-width:285px}.hero-landscape{top:320px}.hero-circle{top:475px}.service-copy{padding:26px 22px 0}.service-copy h3{font-size:43px}.service-copy .handwritten{font-size:21px}.service-copy p{font-size:13px}.service-card,.service-card-link{height:550px;min-height:550px}.page-intro h1{font-size:51px}.logo-row span{font-size:9px}.contact-option strong{font-size:16px}.enquiry-panel{padding:25px 19px}.contact-option>.icon:last-child{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.service-card{position:relative;top:0;transform:none!important;opacity:1!important}.hero-layer{transform:none!important;will-change:auto}.card-cursor{display:none!important}}
@media print{.site-header,.hero-landscape,.hero-circle,.card-landscape,.card-cloud,.card-route,.card-cursor,.contact-band,.skip-link{display:none!important}body{background:white!important;color:black!important;font-size:11pt}.wrap{width:100%}.page-intro{padding-top:20px}.section-space{padding:30px 0}.hero{height:auto;padding:30px 0}.hero-copy{padding:0}.hero-first,.hero-second{font-size:50pt}.hero-bottom{position:static}.service-card{position:relative!important;top:0!important;transform:none!important;opacity:1!important;break-inside:avoid;min-height:0}.service-card-link{height:auto;padding:20px}.service-copy{padding:0;max-width:100%}.service-copy h3{font-size:30pt}.site-footer{padding-top:20px}.staff-card,.project-row{break-inside:avoid}}
