/* Greens brand system. Shared shell + homepage; legacy inner-page components remain intact. */
:root {
    --gr-ink:#233e32;
    --gr-muted:#657168;
    --gr-paper:#f7f6f0;
    --gr-white:#fff;
    --gr-line:#d9dfd5;
    --gr-accent:#54750e;
    --gr-dark:#233e32
}
body {
    padding-top:0;
    background:var(--gr-paper);
    font-family:'Outfit',sans-serif;
    color:var(--gr-ink)
}
.gr-wrap {
    width:min(1320px,calc(100% - 96px));
    margin-inline:auto
}
.gr-skip {
    position:fixed;
    left:16px;
    top:-100px;
    z-index:2000;
    background:var(--gr-dark);
    color:#fff;
    padding:12px 20px
}
.gr-skip:focus {
    top:12px;
    color:#fff
}
.gr-header {
    background:var(--gr-paper);
    border-bottom:1px solid var(--gr-line);
    position:relative;
    z-index:100
}
.gr-header-inner {
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:100px;
    gap:30px
}
.gr-logo img {
    width:180px;
    height:auto;
    display:block
}
.gr-nav {
    display:flex;
    align-items:center;
    gap:32px
}
.gr-nav>a,.gr-nav details>summary {
    color:var(--gr-ink);
    font-size:15px;
    font-weight:500;
    text-decoration:none;
    cursor:pointer;
    list-style:none
}
.gr-nav summary::-webkit-details-marker {
    display:none
}
.gr-nav summary::after {
    content:'⌄';
    margin-left:7px;
    font-size:12px
}
.gr-nav>a:hover,.gr-nav summary:hover {
    color:var(--gr-accent)
}
.gr-nav details {
    position:relative
}
.gr-nav-panel {
    position:absolute;
    top:calc(100% + 20px);
    left:-20px;
    width:230px;
    padding:12px;
    background:var(--gr-paper);
    border:1px solid var(--gr-line);
    box-shadow:0 12px 24px #233e3210
}
.gr-nav-panel a {
    display:block;
    padding:10px;
    color:var(--gr-ink);
    font-size:15px;
    text-decoration:none;
    font-weight:400
}
.gr-nav-panel a:hover {
    background:#e9ede3
}
.gr-nav .gr-nav-cta {
    padding:12px 18px;
    border:1px solid var(--gr-ink);
    display:inline-flex;
    gap:20px;
    align-items:center
}
.gr-menu-toggle {
    display:none
}
.gr-nav a[aria-current=page] {
    text-decoration:underline;
    text-underline-offset:7px
}
.gr-home h1,.gr-home h2,.gr-home h3 {
    font-weight:400;
    letter-spacing:-.045em;
    color:var(--gr-ink)
}
.gr-home p {
    margin-bottom:0
}
.gr-home a {
    text-decoration:none
}
.gr-home h2 {
    font-size:clamp(36px,4vw,58px);
    line-height:1.08;
    margin:0
}
.gr-home h3 {
    line-height:1.2
}
.gr-eyebrow {
    font-size:12px;
    letter-spacing:.14em;
    text-transform:uppercase;
    font-weight:500;
    line-height:1.5;
    margin:0 0 24px!important
}
.gr-eyebrow>span {
    display:inline-block;
    width:7px;
    height:7px;
    margin-right:10px;
    background:#6a8744;
    border-radius:50%
}
.gr-hero {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:56px;
    padding-top:48px;
    padding-bottom:48px;
    align-items:stretch
}
.gr-hero-copy {
    padding:40px 0 20px;
    display:flex;
    flex-direction:column;
    align-items:flex-start
}
.gr-hero h1 {
    font-size:clamp(48px,5vw,72px);
    line-height:1.06;
    margin:0 0 26px;
    max-width:660px
}
.gr-hero h1 em {
    font-style:normal;
    color:#6c7e52
}
.gr-hero-intro {
    max-width:425px;
    font-size:18px;
    line-height:1.65;
    color:var(--gr-muted)
}
.gr-actions {
    display:flex;
    align-items:center;
    gap:24px;
    margin-top:34px;
    flex-wrap:wrap
}
.gr-button {
    display:inline-flex;
    align-items:center;
    justify-content:space-between;
    gap:30px;
    padding:17px 22px;
    background:var(--gr-dark);
    color:var(--gr-white);
    font-size:14px;
    font-weight:500;
    line-height:1.3;
    transition:background .2s
}
.gr-button:hover {
    background:#395a43;
    color:#fff
}
.gr-button span {
    font-size:20px
}
.gr-text-link {
    display:inline-flex;
    gap:20px;
    align-items:center;
    color:var(--gr-ink);
    font-size:14px;
    font-weight:500;
    padding:10px 0;
    border-bottom:1px solid var(--gr-line)
}
.gr-text-link:hover {
    color:var(--gr-accent);
    border-color:var(--gr-accent)
}
.gr-hero-footnote {
    display:flex;
    gap:28px;
    align-items:flex-start;
    margin-top:auto;
    padding-top:56px
}
.gr-small-label {
    font-size:11px;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--gr-muted);
    padding-top:3px;
    white-space:nowrap
}
.gr-hero-footnote p {
    font-size:13px;
    line-height:1.6
}
.gr-hero-image {
    margin:0;
    min-height:570px;
    position:relative;
    overflow:hidden;
    background:#d3dace
}
.gr-hero-image>img {
    width:100%;
    height:100%;
    position:absolute;
    inset:0;
    object-fit:cover;
    object-position:43% center
}
.gr-hero-image:after {
    content:'';
    position:absolute;
    inset:45% 0 0;
    background:linear-gradient(transparent,#102519cc)
}
.gr-hero-image figcaption {
    position:absolute;
    z-index:1;
    bottom:28px;
    left:28px;
    right:28px;
    color:#fff;
    display:flex;
    flex-direction:column;
    gap:24px
}
.gr-hero-image figcaption>span {
    font-size:28px;
    font-weight:400;
    letter-spacing:-.025em
}
.gr-hero-image figcaption>div {
    display:flex;
    justify-content:space-between;
    font-size:12px;
    gap:16px;
    border-top:1px solid #ffffff60;
    padding-top:16px
}
.gr-caption-location {
    color:#fff
}
.gr-intro-strip {
    border-block:1px solid var(--gr-line);
    background:#eeefe7
}
.gr-proof-grid {
    display:grid;
    grid-template-columns:1.3fr 1fr 1fr 1fr;
    align-items:center;
    padding-block:30px;
    gap:25px
}
.gr-proof-grid>p {
    font-size:17px;
    line-height:1.5;
    font-weight:400
}
.gr-proof-grid>p strong {
    font-weight:500
}
.gr-proof-grid>div {
    border-left:1px solid #cdd6c8;
    padding-left:38px;
    display:flex;
    align-items:center;
    gap:18px
}
.gr-proof-grid>div>strong {
    font-size:43px;
    font-weight:400;
    letter-spacing:-.05em
}
.gr-proof-grid>div>span {
    font-size:13px;
    color:var(--gr-muted);
    max-width:100px;
    line-height:1.4
}
.gr-section {
    padding-block:100px
}
.gr-section-heading>div {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:80px;
    align-items:end
}
.gr-section-heading>div>p {
    font-size:18px;
    line-height:1.7;
    color:var(--gr-muted);
    max-width:490px
}
.gr-company-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 36px;
    margin-top: 44px;
}
.gr-company {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    border-top: 1px solid #b3c0ac;
    padding-top: 20px;
}
.gr-company > .gr-company-role {
    display: flex;
    gap: 14px;
    align-items: center;
    margin: 0;
    font-size: 12px;
    color: var(--gr-muted);
}
.gr-company-role > span {
    color: #87977b;
    font-size: 10px;
}
.gr-company h3.gr-company-identity {
    display: flex;
    align-items: center;
    height: 64px;
    margin: 24px 0 22px;
}
.gr-company-identity img {
    display: block;
    width: auto;
    height: auto;
    max-height: 52px;
    max-width: 200px;
}
.gr-company > p:not(.gr-company-role) {
    max-width: 340px;
    margin: 0 0 20px;
    font-size: 16px;
    line-height: 1.7;
    color: var(--gr-muted);
}
.gr-company > a.gr-company-action {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    margin-top: auto;
    padding: 8px 0;
    font-size: 14px;
    font-weight: 400;
    color: var(--gr-ink);
    text-decoration: none;
}
.gr-company-action > span {
    font-size: 18px;
    color: #71835e;
}
.gr-company-action:hover {
    text-decoration: underline !important;
    text-underline-offset: 4px;
}
.gr-work {
    background:#e9ede4
}
.gr-work-heading {
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:30px;
    margin-bottom:42px
}
.gr-project-grid {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:24px;
    align-items:start
}
.gr-project {
    margin:0
}
.gr-project>img {
    display:block;
    width:100%;
    height:auto;
    aspect-ratio:4/3;
    object-fit:cover
}
.gr-project-meta {
    display:flex;
    justify-content:space-between;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.1em;
    padding:22px 0 12px;
    color:#5d6c59
}
.gr-project h3 {
    font-size:28px;
    margin:0 0 5px
}
.gr-project>p {
    font-size:14px;
    color:var(--gr-muted)
}
.gr-work-note {
    font-size:13px;
    color:var(--gr-muted);
    border-top:1px solid #cbd4c3;
    padding-top:23px;
    margin-top:36px!important
}
.gr-sectors {
    display:grid;
    grid-template-columns:1fr 1.2fr;
    gap:85px
}
.gr-sectors>div>p:not(.gr-eyebrow) {
    font-size:17px;
    line-height:1.7;
    max-width:345px;
    color:var(--gr-muted);
    margin-top:24px
}
.gr-sector-list>a {
    display:flex;
    align-items:center;
    gap:24px;
    border-top:1px solid var(--gr-line);
    padding:26px 0;
    color:var(--gr-ink)
}
.gr-sector-list>a:last-child {
    border-bottom:1px solid var(--gr-line)
}
.gr-sector-number {
    font-size:11px;
    color:var(--gr-muted);
    align-self:flex-start;
    padding-top:6px
}
.gr-sector-list h3 {
    font-size:25px;
    margin:0 0 7px
}
.gr-sector-list p {
    font-size:14px;
    color:var(--gr-muted);
    line-height:1.6
}
.gr-sector-arrow {
    font-size:23px;
    margin-left:auto
}
.gr-sector-list>a:hover h3 {
    color:var(--gr-accent)
}
.gr-values {
    background:var(--gr-dark);
    color:#e2e7dd;
    padding-block:80px
}
.gr-values-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:85px
}
.gr-values h2 {
    color:var(--gr-paper)
}
.gr-values .gr-eyebrow {
    color:#b8cba8
}
.gr-values-grid>div>p:not(.gr-eyebrow) {
    font-size:18px;
    line-height:1.75;
    margin-bottom:20px
}
.gr-values .gr-text-link {
    color:var(--gr-paper);
    border-color:#799079
}
.gr-closing {
    text-align:center;
    padding-block:90px
}
.gr-closing>div {
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:28px;
    margin-top:24px
}
.gr-closing>div>p {
    font-size:17px;
    line-height:1.7;
    color:var(--gr-muted)
}
.gr-footer {
    padding-top:40px;
    background:#eceee5;
    border-top:1px solid var(--gr-line);
    color:var(--gr-ink)
}
.gr-footer-grid {
    display:grid;
    grid-template-columns:1.6fr 1fr 1fr 1.3fr;
    gap:36px;
    padding-bottom:32px
}
.gr-footer-brand img {
    width:140px;
    height:auto
}
.gr-footer-brand p {
    max-width:280px;
    margin:14px 0 0;
    font-size:14px;
    line-height:1.6;
    color:var(--gr-muted)
}
.gr-footer-heading {
    font-size:11px;
    font-weight:500;
    text-transform:uppercase;
    letter-spacing:.12em;
    margin:0 0 14px;
    color:var(--gr-muted)
}
.gr-footer nav {
    display:flex;
    flex-direction:column;
    gap:8px
}
.gr-footer a {
    color:var(--gr-ink);
    font-size:14px;
    font-weight:400;
    text-decoration:none
}
.gr-footer a:hover {
    color:var(--gr-accent);
    text-decoration:underline
}
.gr-footer address {
    font-size:14px;
    line-height:1.5
}
.gr-footer-contact {
    display:flex;
    flex-direction:column;
    gap:0
}
.gr-footer-contact-link {
    display:block;
    margin-top:14px
}
.gr-footer-bottom {
    border-top:1px solid #d0d8c9;
    padding-block:16px;
    display:flex;
    justify-content:space-between;
    gap:20px;
    font-size:12px;
    color:var(--gr-muted)
}
.gr-footer-bottom a {
    font-size:12px
}
.gr-footer-utilities {
    display:flex;
    gap:18px
}
a:focus-visible,button:focus-visible,summary:focus-visible {
    outline:3px solid #668844;
    outline-offset:5px
}
@media(min-width:1600px) {
    .gr-hero-image {
        min-height:620px
    }
}
@media(max-width:1100px) {
    .gr-wrap {
        width:calc(100% - 56px)
    }
    .gr-nav {
        gap:20px
    }
    .gr-hero {
        gap:32px
    }
    .gr-hero h1 {
        font-size:56px
    }
    .gr-hero-image {
        min-height:570px
    }
    .gr-actions {
        gap:16px
    }
    .gr-proof-grid>div {
        padding-left:24px;
        gap:12px
    }
    .gr-proof-grid>div>strong {
        font-size:36px
    }
    .gr-section-heading>div,.gr-sectors,.gr-values-grid {
        gap:48px
    }
    .gr-footer-grid {
        gap:28px
    }
}
@media(max-width:850px) {
    .gr-header-inner {
        min-height:82px
    }
    .gr-logo img {
        width:156px
    }
    .gr-menu-toggle {
        display:flex;
        gap:12px;
        align-items:center;
        background:none;
        border:1px solid #cbd5c4;
        padding:10px 14px;
        font-size:14px;
        color:var(--gr-ink)
    }
    .gr-menu-icon {
        display:grid;
        gap:4px
    }
    .gr-menu-icon i {
        display:block;
        width:16px;
        height:1px;
        background:currentColor
    }
    .gr-nav {
        display:none;
        position:absolute;
        top:100%;
        left:0;
        right:0;
        background:var(--gr-paper);
        padding:20px 28px;
        border-bottom:1px solid var(--gr-line);
        align-items:stretch;
        gap:0;
        max-height:calc(100dvh - 82px);
        overflow-y:auto
    }
    .gr-nav.is-open {
        display:flex;
        flex-direction:column
    }
    .gr-nav>a,.gr-nav details>summary {
        padding:14px 0;
        display:block
    }
    .gr-nav-panel {
        position:static;
        width:auto;
        box-shadow:none;
        border:0;
        padding:0 0 12px 12px
    }
    .gr-nav .gr-nav-cta {
        justify-content:space-between;
        margin-top:12px;
        padding:14px
    }
    .gr-hero {
        gap:28px;
        padding-block:34px
    }
    .gr-hero-copy {
        padding-top:16px
    }
    .gr-hero h1 {
        font-size:44px
    }
    .gr-hero-intro {
        font-size:16px
    }
    .gr-hero-footnote {
        display:none
    }
    .gr-hero-image {
        min-height:480px
    }
    .gr-hero-image figcaption {
        left:20px;
        right:20px;
        bottom:20px
    }
    .gr-hero-image figcaption>div {
        flex-direction:column;
        gap:5px
    }
    .gr-proof-grid {
        grid-template-columns:repeat(3,1fr);
        gap:20px
    }
    .gr-proof-grid>p {
        grid-column:1/-1
    }
    .gr-proof-grid>div {
        padding-left:20px
    }
    .gr-proof-grid>div:nth-child(2) {
        border-left:0;
        padding-left:0
    }
    .gr-section {
        padding-block:70px
    }
    .gr-company-grid {
        gap:24px
    }
    .gr-company h3 {
        font-size:26px
    }
    .gr-company p {
        font-size:15px
    }
    .gr-company>a {
        font-size:13px;
        gap:8px
    }
    .gr-section-heading>div {
        gap:30px
    }
    .gr-section-heading>div>p {
        font-size:16px
    }
    .gr-project-grid {
        gap:16px
    }
    .gr-sectors {
        grid-template-columns:1fr;
        gap:36px
    }
    .gr-sectors>div>p:not(.gr-eyebrow) {
        max-width:520px
    }
    .gr-footer-grid {
        grid-template-columns:repeat(3,1fr)
    }
    .gr-footer-brand {
        grid-column:1/-1
    }
    .gr-footer-brand p {
        max-width:420px
    }
}
@media(max-width:600px) {
    .gr-wrap {
        width:calc(100% - 40px)
    }
    .gr-header-inner {
        min-height:76px
    }
    .gr-hero {
        grid-template-columns:1fr;
        gap:30px;
        padding-top:26px;
        padding-bottom:24px
    }
    .gr-hero-copy {
        padding:0
    }
    .gr-eyebrow {
        font-size:10px;
        margin-bottom:18px!important
    }
    .gr-hero h1 {
        font-size:clamp(39px,10vw,54px);
        margin-bottom:20px;
        letter-spacing:-.04em
    }
    .gr-hero-intro {
        font-size:16px;
        line-height:1.6
    }
    .gr-actions {
        margin-top:24px;
        gap:10px 20px
    }
    .gr-button {
        padding:15px 18px;
        font-size:13px;
        gap:20px
    }
    .gr-text-link {
        font-size:13px;
        gap:12px
    }
    .gr-hero-image {
        min-height:330px
    }
    .gr-hero-image>img {
        object-position:center 50%
    }
    .gr-hero-image figcaption {
        gap:14px
    }
    .gr-hero-image figcaption>span {
        font-size:26px
    }
    .gr-hero-image figcaption>div {
        flex-direction:row;
        font-size:10px
    }
    .gr-proof-grid {
        gap:20px 14px;
        padding-block:25px
    }
    .gr-proof-grid>p {
        font-size:16px
    }
    .gr-proof-grid>div {
        flex-direction:column;
        align-items:flex-start;
        gap:3px;
        padding-left:15px
    }
    .gr-proof-grid>div>strong {
        font-size:34px
    }
    .gr-proof-grid>div>span {
        font-size:11px
    }
    .gr-home h2 {
        font-size:37px
    }
    .gr-section {
        padding-block:54px
    }
    .gr-section-heading>div {
        grid-template-columns:1fr;
        gap:22px
    }
    .gr-company-grid {
        grid-template-columns:1fr;
        gap:28px;
        margin-top:32px
    }
    .gr-company {
        padding-top:20px
    }
    .gr-company h3 {
        margin:18px 0 12px;
        font-size:29px
    }
    .gr-company>p {
        max-width:none
    }
    .gr-company>a {
        padding-top:20px;
        font-size:14px
    }
    .gr-work-heading {
        align-items:flex-start;
        flex-direction:column;
        gap:20px;
        margin-bottom:28px
    }
    .gr-project-grid {
        grid-template-columns:1fr;
        gap:32px
    }
    .gr-project-meta {
        padding-top:18px
    }
    .gr-project h3 {
        font-size:27px
    }
    .gr-work-note {
        font-size:12px;
        line-height:1.65
    }
    .gr-sector-list>a {
        gap:14px;
        padding-block:23px
    }
    .gr-sector-list h3 {
        font-size:23px
    }
    .gr-sector-list p {
        font-size:13px
    }
    .gr-sectors {
        gap:30px
    }
    .gr-values {
        padding-block:54px
    }
    .gr-values-grid {
        grid-template-columns:1fr;
        gap:28px
    }
    .gr-values-grid>div>p:not(.gr-eyebrow) {
        font-size:16px
    }
    .gr-closing {
        text-align:left
    }
    .gr-closing>div {
        align-items:flex-start
    }
    .gr-closing>div>p {
        font-size:16px
    }
    .gr-footer {
        padding-top:40px
    }
    .gr-footer-grid {
        grid-template-columns:1fr 1fr;
        gap:32px 20px;
        padding-bottom:32px
    }
    .gr-footer-office {
        grid-column:1/-1
    }
    .gr-footer-bottom {
        flex-direction:column;
        gap:14px
    }
    .gr-footer-utilities {
        flex-wrap:wrap;
        gap:18px
    }
    .gr-nav {
        padding-inline:20px;
        max-height:calc(100dvh - 76px)
    }
}
@media(prefers-reduced-motion:reduce) {
    *,*::before,*::after {
        scroll-behavior:auto!important;
        transition:none!important;
        animation:none!important
    }
}
/* Keep legacy inner-page content clear of the shared footer. */
:where(main:not(.gr-home)) > section:last-child {
    padding-bottom: 56px;
}
.gr-footer-grid {
    align-items: start;
}
.gr-footer address {
    margin: 0;
    line-height: 1.5;
}
@media (max-width: 600px) {
    :where(main:not(.gr-home)) > section:last-child {
        padding-bottom: 36px;
    }
    .gr-footer-grid {
        row-gap: 28px;
    }
    .gr-footer-bottom {
        padding-block: 18px;
        gap: 12px;
    }
}
/* Homepage photo carousel; no property names or location captions. */
.gr-carousel-slide {
    position: absolute;
    inset: 0;
    margin: 0;
    animation: gr-photo-appear .45s ease;
}
.gr-carousel-slide[hidden] {
    display: none;
}
.gr-carousel-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}
.gr-carousel::after {
    inset: 65% 0 0;
    pointer-events: none;
}
.gr-carousel-controls {
    position: absolute;
    z-index: 2;
    bottom: 20px;
    left: 20px;
    right: 20px;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px;
    background: #16291fe6;
    color: #fff;
}
.gr-carousel-controls[hidden] {
    display: none;
}
.gr-carousel-controls button {
    display: grid;
    place-items: center;
    background: transparent;
    border: 0;
    color: inherit;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    cursor: pointer;
    font-size: 23px;
}
.gr-carousel-controls button:hover {
    background: #ffffff18;
}
.gr-carousel-controls button:focus-visible {
    outline: 2px solid white;
    outline-offset: -3px;
}
.gr-carousel-dots {
    display: flex;
    justify-content: center;
    flex: 1;
}
.gr-carousel-dots button {
    min-width: 24px;
}
.gr-carousel-dots span {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #ffffff66;
}
.gr-carousel-dots [aria-pressed="true"] span {
    background: white;
    width: 7px;
    height: 7px;
}
.gr-carousel-controls .gr-carousel-play {
    font-size: 15px;
}
.gr-carousel-play .gr-carousel-pause-icon,
.gr-carousel-play[data-playing="true"] .gr-carousel-play-icon {
    display: none;
}
.gr-carousel-play[data-playing="true"] .gr-carousel-pause-icon {
    display: block;
}
@keyframes gr-photo-appear {
    from {
        opacity: .4;
    }
    to {
        opacity: 1;
    }
}
@media (max-width: 850px) {
    .gr-carousel-controls {
        left: 10px;
        right: 10px;
        bottom: 10px;
        gap: 0;
        padding: 4px;
    }
    .gr-carousel-dots {
        min-width: 0;
    }
    .gr-carousel-dots button {
        min-width: 0;
        flex: 1 1 20px;
    }
}
/* Editorial imagery on the About overview. */
#about .about-graphic {
    border-radius: 2px;
    background: #ede8dd;
    margin-bottom: 28px;
}
#about .about-graphic img {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    height: auto;
    object-fit: cover;
}
