.public-page .site-main::before {
    display: none
}

.public-page {
    --page-width: 1320px
}

.page-container {
    width: min(var(--page-width,1320px),calc(100% - 80px));
    margin-inline: auto
}

.public-page :where(.site-main) :is(h1,h2,h3,p,figure) {
    margin-top: 0
}

.public-page :where(.site-main) :is(h1,h2,h3) {
    color: var(--site-navy);
    text-wrap: balance
}

.public-page :where(.site-main) :is(h1,h2,h3) {
    font-family: Georgia,"Times New Roman",serif;
    font-weight: 600
}

.public-page :is(a,button,input,select,textarea,summary):focus-visible {
    outline: 2px solid var(--site-accent);
    outline-offset: 4px
}

.public-page :is(section,aside,details)[id] {
    scroll-margin-top: calc(var(--site-header-height) + 24px)
}

.public-page .visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap
}

.page-hero {
    min-height: 390px;
    position: relative;
    isolation: isolate;
    overflow: hidden;
    border-bottom: 1px solid var(--site-line);
    display: grid;
    align-items: center;
    background: #fff
}

    .page-hero.site-geology::before {
        inset: 0 auto 0 -18%;
        width: 88%;
        opacity: .07;
        z-index: -1;
        mask-image: linear-gradient(90deg,#000,transparent 95%)
    }

.page-hero-copy {
    position: relative;
    z-index: 2;
    width: 47%;
    padding: 60px 24px 64px 0
}

.page-kicker {
    display: block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .12em;
    line-height: 1.5;
    text-transform: uppercase;
    color: var(--site-accent);
    margin-bottom: 14px
}

.page-hero h1 {
    font-size: clamp(36px,4.2vw,64px);
    line-height: 1.04;
    letter-spacing: -.035em;
    margin: 0 0 20px;
    overflow-wrap: break-word
}

    .page-hero h1 strong {
        display: block;
        font-weight: inherit;
        color: var(--site-accent)
    }

.page-hero p {
    font-size: 14px;
    line-height: 1.85;
    max-width: 490px;
    color: var(--site-muted);
    white-space: pre-line
}

.page-hero-media {
    position: absolute;
    inset: 0;
    z-index: 0;
    clip-path: polygon(78% 0,73% 6%,68% 12%,63% 19%,59% 27%,56% 35%,53% 44%,50% 55%,46% 66%,42% 77%,37% 88%,30% 100%,100% 100%,100% 0)
}

    .page-hero-media > img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: 70% 50%
    }

    .page-hero-media::after {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(90deg,#fff3,transparent 60%,#fff8)
    }

.page-image-grid {
    position: absolute;
    inset: 0;
    background-image: linear-gradient(#ffffff25 1px,transparent 1px),linear-gradient(90deg,#ffffff25 1px,transparent 1px);
    background-size: 110px 110px;
    z-index: 1
}

.page-hero.no-image {
    min-height: 260px
}

    .page-hero.no-image .page-hero-copy {
        width: min(820px,100%);
        padding-block: 50px
    }

.page-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 22px
}

.page-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 28px;
    padding: 13px 20px;
    border: 1px solid var(--site-accent);
    border-radius: 3px;
    background: var(--site-accent);
    color: #fff;
    text-decoration: none;
    font: 600 12px/1.4 "Segoe UI",Arial,sans-serif;
    cursor: pointer;
    transition: background .2s,transform .2s;
    min-height: 44px
}

    .page-button:hover {
        background: var(--site-accent-dark);
        transform: translateY(-1px)
    }

    .page-button span {
        font-size: 20px;
        font-weight: 400;
        line-height: 1
    }

    .page-button.is-outline {
        color: var(--site-navy);
        background: #fff;
        border-color: var(--site-accent-line)
    }

        .page-button.is-outline:hover {
            border-color: var(--site-accent);
            background: var(--site-cream)
        }

    .page-button:disabled {
        opacity: .6;
        cursor: wait
    }

.page-text-link {
    display: inline-flex;
    align-items: center;
    gap: 18px;
    text-decoration: none;
    font-size: 12px;
    line-height: 1.4;
    font-weight: 600;
    color: var(--site-accent);
    min-height: 36px
}

    .page-text-link:hover {
        color: var(--site-accent-dark)
    }

    .page-text-link span {
        font-size: 20px
    }

.page-section {
    padding-block: 30px
}

.page-section-heading {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 20px
}

    .page-section-heading > div {
        min-width: 0
    }

    .page-section-heading h2 {
        font-size: 23px;
        line-height: 1.22;
        margin: 0 0 12px
    }

    .page-section-heading p {
        font-size: 13px;
        line-height: 1.85;
        color: var(--site-muted);
        white-space: pre-line;
        margin-bottom: 0;
        max-width: 640px
    }

    .page-section-heading > .page-text-link {
        flex-shrink: 0
    }

.page-subtitle {
    font-size: 26px;
    line-height: 1.25;
    margin-bottom: 20px
}

.page-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(min(250px,100%),1fr));
    gap: 20px
}

    .page-card-grid:has(>.page-card:only-child) {
        grid-template-columns: minmax(0,560px)
    }

.page-card, .page-project-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--site-line);
    border-radius: 6px;
    background: #fff;
    display: flex;
    flex-direction: column;
    transition: box-shadow .2s,transform .2s
}

    .page-card:hover, .page-project-card:hover {
        box-shadow: 0 14px 36px #0b25460b;
        transform: translateY(-3px)
    }

.page-card-image {
    display: block;
    width: 100%;
    height: 176px;
    object-fit: cover
}

.page-card-copy {
    padding: 22px;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0
}

    .page-card-copy :is(h2,h3) {
        font-size: 20px;
        line-height: 1.25;
        margin-bottom: 12px
    }

    .page-card-copy h2 a, .page-card-copy h3 a {
        text-decoration: none;
        color: inherit
    }

    .page-card-copy p {
        font-size: 13px;
        line-height: 1.8;
        color: var(--site-muted);
        white-space: pre-line;
        overflow-wrap: anywhere
    }

    .page-card-copy > .page-text-link {
        margin-top: auto;
        align-self: start
    }

    .page-card-copy time {
        font-size: 11px;
        color: var(--site-muted);
        margin-bottom: 12px
    }

.page-project-filters {
    display: flex;
    align-items: center;
    gap: 16px;
    border-bottom: 1px solid var(--site-line);
    padding-block: 18px;
    margin-bottom: 30px
}

.page-filter-tabs {
    display: flex;
    gap: 4px;
    min-width: 0;
    margin: 0 auto 0 0;
    padding: 0;
    border: 0;
    overflow-x: auto;
    scrollbar-width: thin
}

    .page-filter-tabs label {
        position: relative;
        flex-shrink: 0;
        cursor: pointer
    }

    .page-filter-tabs input {
        position: absolute;
        opacity: 0;
        width: 100%;
        height: 100%;
        inset: 0;
        cursor: pointer;
        margin: 0
    }

    .page-filter-tabs span {
        display: block;
        padding: 16px 14px;
        font-size: 12px;
        font-weight: 600;
        border-bottom: 2px solid transparent;
        color: var(--site-navy)
    }

    .page-filter-tabs input:checked + span {
        border-color: var(--site-accent);
        color: var(--site-accent)
    }

    .page-filter-tabs input:focus-visible + span {
        outline: 2px solid var(--site-accent);
        outline-offset: -3px
    }

.page-location-filter select {
    max-width: 190px;
    min-height: 44px;
    padding: 10px 16px;
    border: 1px solid var(--site-line);
    border-radius: 4px;
    color: var(--site-navy);
    background: #fff
}

.page-project-layout {
    display: grid;
    grid-template-columns: minmax(0,3.2fr) minmax(220px,1fr);
    gap: 30px
}

    .page-project-layout.no-aside {
        grid-template-columns: 1fr
    }

.page-featured-project {
    display: grid;
    grid-template-columns: minmax(0,1.3fr) minmax(0,1fr);
    border: 1px solid var(--site-line);
    border-radius: 6px;
    overflow: hidden;
    background: #fff
}

    .page-featured-project > a {
        display: block;
        min-height: 310px
    }

    .page-featured-project img {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: cover
    }

    .page-featured-project .page-card-copy {
        padding: 26px
    }

    .page-featured-project h2 {
        font-size: 27px
    }

    .page-featured-project .page-button {
        align-self: start;
        margin-top: auto
    }

    .page-featured-project.no-image {
        grid-template-columns: 1fr
    }

.page-project-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
    color: var(--site-muted);
    font-size: 11px
}

    .page-project-meta > span + span {
        padding: 4px 8px;
        background: var(--site-cream);
        border-radius: 4px
    }

.page-project-services {
    list-style: none;
    padding: 12px 0;
    margin: 0 0 18px;
    border-block: 1px solid var(--site-line);
    font-size: 12px;
    line-height: 1.7
}

    .page-project-services a {
        color: var(--site-muted);
        text-decoration: none
    }

.page-project-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 18px
}

.page-project-card > a {
    display: block
}

.page-project-card img {
    display: block;
    width: 100%;
    height: 165px;
    object-fit: cover
}

.page-project-card .page-card-copy {
    padding: 18px
}

.page-project-card h3 {
    font-size: 18px
}

.page-project-card p {
    font-size: 12px
}

.page-project-card .page-project-meta {
    margin-bottom: 12px;
    font-size: 10px
}

.page-project-card p {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    overflow: hidden
}

.page-project-approach {
    padding: 0 0 0 26px;
    border-left: 1px solid var(--site-line)
}

    .page-project-approach .page-section-heading h2 {
        font-family: "Segoe UI",Arial,sans-serif;
        font-size: 10px;
        letter-spacing: .1em;
        color: var(--site-accent);
        text-transform: uppercase
    }

.page-steps {
    counter-reset: steps;
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 24px
}

    .page-steps > li {
        counter-increment: steps;
        display: grid;
        grid-template-columns: 36px minmax(0,1fr);
        gap: 14px;
        position: relative
    }

        .page-steps > li::before {
            content: counter(steps,decimal-leading-zero);
            display: grid;
            place-items: center;
            align-self: start;
            width: 32px;
            height: 32px;
            border: 1px solid var(--site-accent-line);
            border-radius: 50%;
            color: var(--site-accent);
            font-size: 11px
        }

    .page-steps h3 {
        font-size: 16px;
        margin: 6px 0
    }

    .page-steps p {
        font-size: 12px;
        color: var(--site-muted);
        line-height: 1.8;
        margin-bottom: 0;
        white-space: pre-line
    }

    .page-steps img {
        width: 32px;
        height: 32px;
        object-fit: contain;
        margin-bottom: 8px
    }

.page-statistics-section {
    padding-block: 24px;
    border-top: 1px solid var(--site-line)
}

.page-statistics {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(160px,1fr));
    gap: 16px;
    padding-block: 12px
}

    .page-statistics > div {
        border-left: 1px solid var(--site-accent-line);
        padding: 8px 24px
    }

    .page-statistics strong {
        display: block;
        font: 600 34px/1.15 Georgia,serif;
        color: var(--site-navy);
        margin-bottom: 7px
    }

    .page-statistics span {
        font-size: 11px;
        line-height: 1.5;
        color: var(--site-muted)
    }

.page-closing {
    display: flex;
    align-items: center;
    gap: 32px;
    background: var(--site-navy);
    color: #fff;
    border-radius: 8px;
    overflow: hidden;
    min-height: 178px;
    margin-top: 24px;
    margin-bottom: 42px;
    padding: 32px 36px
}

    .page-closing > img {
        align-self: stretch;
        width: 24%;
        min-width: 180px;
        object-fit: cover;
        margin: -32px 0 -32px -36px;
        clip-path: polygon(0 0,100% 0,96% 34%,86% 66%,67% 100%,0 100%)
    }

.page-closing-copy {
    flex: 1
}

.page-closing h2 {
    color: #fff;
    font-size: 29px;
    line-height: 1.2;
    margin: 0 0 12px
}

.page-closing em {
    font-style: normal;
    color: var(--site-accent)
}

.page-closing p {
    font-size: 13px;
    line-height: 1.8;
    color: #d3dce6;
    margin-bottom: 0;
    white-space: pre-line
}

.page-closing .page-buttons {
    margin: 0;
    flex-shrink: 0
}

.page-closing .is-outline {
    background: transparent;
    color: #fff;
    border-color: #ffffff50
}

.page-reference-section {
    padding: 30px 0
}

.references-page .home-reference-logo {
    width: 230px;
    height: 140px
}

.references-page .home-reference-group {
    gap: 56px;
    padding-right: 56px
}

.page-testimonial-track {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: calc((100% - 60px)/4);
    gap: 20px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none
}

.page-testimonial {
    margin: 0;
    padding: 24px;
    border: 1px solid var(--site-line);
    border-radius: 6px;
    display: flex;
    flex-direction: column;
    background: #fff;
    scroll-snap-align: start
}

.page-quote-mark {
    color: var(--site-accent);
    font: 40px/1 Georgia,serif;
    height: 26px
}

.page-testimonial blockquote {
    margin: 6px 0 22px;
    font-size: 13px;
    line-height: 1.85;
    color: var(--site-navy);
    white-space: pre-line
}

.page-testimonial figcaption {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: auto
}

    .page-testimonial figcaption img {
        width: 40px;
        height: 40px;
        border-radius: 50%;
        object-fit: cover
    }

.page-testimonial strong, .page-testimonial small {
    display: block;
    font-size: 11px;
    line-height: 1.7
}

.page-testimonial small {
    color: var(--site-muted)
}

.page-scroll-buttons {
    display: flex;
    justify-content: end;
    gap: 10px;
    margin-top: 16px
}

    .page-scroll-buttons button {
        width: 36px;
        height: 36px;
        background: #fff;
        border: 1px solid var(--site-accent-line);
        border-radius: 50%;
        color: var(--site-accent);
        font-size: 18px;
        cursor: pointer
    }

.page-coverage {
    display: grid;
    grid-template-columns: minmax(0,.9fr) minmax(0,1.5fr) minmax(0,1fr);
    align-items: center;
    gap: 28px;
    padding-block: 32px
}

.page-coverage-image {
    width: 100%;
    max-height: 280px;
    object-fit: contain
}

.page-benefits {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 20px
}

    .page-benefits li {
        padding-left: 20px;
        border-left: 2px solid var(--site-accent-line)
    }

    .page-benefits h3 {
        font: 600 14px/1.4 "Segoe UI",Arial,sans-serif;
        margin-bottom: 8px
    }

    .page-benefits p {
        font-size: 12px;
        color: var(--site-muted);
        line-height: 1.7;
        margin-bottom: 0
    }

.page-contact-layout {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(0,1fr);
    gap: 34px;
    padding: 36px 0
}

.page-quote-panel {
    min-width: 0
}

.page-contact-card {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--site-line);
    border-radius: 7px;
    overflow: hidden;
    background: #fff;
    align-self: start
}

.page-contact-details {
    padding: 28px
}

.page-contact-list {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 24px;
    margin: 0
}

    .page-contact-list dt {
        font-size: 11px;
        color: var(--site-muted);
        margin-bottom: 8px
    }

    .page-contact-list dd {
        font-size: 13px;
        line-height: 1.8;
        margin: 0;
        color: var(--site-navy);
        white-space: pre-line;
        overflow-wrap: anywhere
    }

    .page-contact-list a {
        color: inherit;
        text-decoration: none
    }

.page-contact-map {
    min-height: 330px;
    position: relative;
    flex: 1;
    background: #f6f6f3
}

    .page-contact-map iframe {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        border: 0
    }

.page-map-open {
    position: absolute;
    bottom: 16px;
    right: 16px;
    background: #fff;
    border: 1px solid var(--site-accent-line);
    padding: 12px 18px;
    border-radius: 4px;
    font-size: 12px;
    color: var(--site-navy);
    text-decoration: none;
    box-shadow: 0 4px 16px #0b254618
}

.page-form {
    display: grid;
    gap: 18px
}

.page-form-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 16px
}

.page-form label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--site-navy);
    line-height: 1.6
}

    .page-form label > span[aria-hidden] {
        color: var(--site-accent)
    }

.page-form input:not([type=checkbox]):not([type=hidden]), .page-form select, .page-form textarea {
    display: block;
    min-width: 0;
    width: 100%;
    margin-top: 7px;
    background: #fff;
    border: 1px solid var(--site-line);
    border-radius: 4px;
    padding: 11px 12px;
    color: var(--site-navy);
    font: 400 13px/1.6 "Segoe UI",Arial,sans-serif
}

.page-form textarea {
    resize: vertical
}

.page-form .page-consent {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-weight: 400;
    font-size: 11px
}

.page-form input[type=checkbox] {
    accent-color: var(--site-accent);
    flex-shrink: 0;
    width: 17px;
    height: 17px;
    margin: 2px 0 0
}

.page-form .page-button {
    justify-self: start
}

.page-privacy-link {
    font-size: 11px;
    color: var(--site-muted);
    justify-self: start
}

.page-service-picker {
    padding: 0;
    border: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px
}

    .page-service-picker legend {
        font-size: 12px;
        font-weight: 600;
        margin-bottom: 10px
    }

    .page-service-picker label {
        display: flex;
        gap: 8px;
        align-items: start;
        padding: 8px 10px;
        border: 1px solid var(--site-line);
        border-radius: 4px;
        font-size: 11px;
        font-weight: 400
    }

.page-form-errors, .page-field-error, .page-form .field-validation-error {
    font-size: 12px;
    line-height: 1.7;
    color: #a83328
}

    .page-form-errors.validation-summary-valid {
        display: none
    }

.page-form-success {
    padding: 16px;
    border: 1px solid #b6d9c8;
    background: #f0f8f4;
    border-radius: 4px;
    color: #17583b;
    font-size: 13px
}

.page-message-panel {
    margin: 0 0 32px;
    border: 1px solid var(--site-line);
    border-radius: 5px;
    padding: 18px 24px
}

    .page-message-panel > summary {
        cursor: pointer;
        display: flex;
        justify-content: space-between;
        color: var(--site-navy);
        font-size: 13px
    }

    .page-message-panel[open] > summary {
        margin-bottom: 24px
    }

    .page-message-panel .page-form {
        max-width: 780px
    }

    .page-message-panel .page-form-grid {
        grid-template-columns: 1fr 1fr
    }

.page-contact-process {
    padding: 28px;
    background: var(--site-cream);
    border: 1px solid var(--site-line);
    border-radius: 7px;
    margin-bottom: 28px
}

    .page-contact-process .page-steps {
        grid-template-columns: repeat(auto-fit,minmax(200px,1fr));
        gap: 24px
    }

        .page-contact-process .page-steps > li::before {
            border-radius: 0;
            border: 0;
            font-size: 20px;
            font-family: Georgia,serif
        }

.page-faq-section {
    padding: 20px 0 40px
}

.page-faq-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 14px
}

    .page-faq-grid details {
        border: 1px solid var(--site-line);
        border-radius: 4px;
        padding: 18px 20px
    }

    .page-faq-grid summary {
        cursor: pointer;
        display: flex;
        align-items: start;
        justify-content: space-between;
        gap: 20px;
        font-size: 13px;
        font-weight: 600;
        color: var(--site-navy);
        list-style: none
    }

        .page-faq-grid summary::-webkit-details-marker {
            display: none
        }

        .page-faq-grid summary > span {
            color: var(--site-accent)
        }

    .page-faq-grid details[open] summary > span {
        transform: rotate(45deg)
    }

    .page-faq-grid p {
        font-size: 13px;
        line-height: 1.8;
        color: var(--site-muted);
        white-space: pre-line;
        margin: 16px 0 0
    }

.page-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    padding: 32px 0;
    color: var(--site-muted);
    font-size: 12px
}

    .page-breadcrumb a {
        color: var(--site-navy);
        text-decoration: none
    }

.page-detail-heading {
    padding: 24px 0 30px
}

    .page-detail-heading h1 {
        font-size: clamp(34px,4.4vw,60px);
        line-height: 1.12;
        letter-spacing: -.025em;
        margin-bottom: 18px
    }

    .page-detail-heading.is-centered {
        text-align: center;
        padding-top: 45px
    }

    .page-detail-heading time {
        font-size: 12px;
        color: var(--site-muted)
    }

.page-detail-cover {
    display: block;
    border-radius: 7px;
    overflow: hidden
}

    .page-detail-cover img {
        display: block;
        width: 100%;
        height: clamp(280px,40vw,560px);
        object-fit: cover
    }

.page-detail-columns {
    display: grid;
    grid-template-columns: minmax(0,2.3fr) minmax(220px,1fr);
    gap: 60px;
    padding-block: 40px
}

.page-prose {
    white-space: pre-line;
    font-size: 14px;
    line-height: 1.95;
    color: var(--site-muted);
    overflow-wrap: anywhere
}

    .page-prose h2 {
        font-size: 27px;
        color: var(--site-navy);
        margin: 30px 0 18px
    }

.page-lead {
    font-size: 18px;
    line-height: 1.85;
    color: var(--site-navy);
    margin-bottom: 26px
}

.page-detail-services {
    align-self: start;
    border: 1px solid var(--site-line);
    padding: 24px;
    border-radius: 5px
}

    .page-detail-services h2 {
        font-size: 21px;
        margin-bottom: 16px
    }

    .page-detail-services a {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        border-top: 1px solid var(--site-line);
        padding: 14px 0;
        font-size: 13px;
        text-decoration: none;
        color: var(--site-navy)
    }

    .page-detail-services span {
        color: var(--site-accent)
    }

.page-photo-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(min(280px,100%),1fr));
    gap: 18px;
    margin-bottom: 35px
}

    .page-photo-gallery img {
        width: 100%;
        height: 260px;
        object-fit: cover;
        display: block;
        border-radius: 5px
    }

.page-pagination {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    padding: 20px 0 36px
}

    .page-pagination a {
        display: grid;
        place-items: center;
        width: 36px;
        height: 36px;
        border: 1px solid var(--site-line);
        color: var(--site-navy);
        font-size: 13px;
        text-decoration: none;
        border-radius: 3px
    }

        .page-pagination a[aria-current=page] {
            background: var(--site-accent);
            color: #fff;
            border-color: var(--site-accent)
        }

.page-empty {
    font-size: 14px;
    color: var(--site-muted);
    padding: 30px 0
}

.page-about-content {
    padding-bottom: 20px
}

    .page-about-content .about-photo-gallery {
        margin: 28px 0 40px
    }

.page-about-history {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(0,2fr);
    gap: 40px;
    padding: 24px 0 36px
}

    .page-about-history:has(>div:only-child) {
        grid-template-columns: minmax(0,920px)
    }

.page-timeline {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(120px,1fr));
    gap: 0;
    list-style: none;
    padding: 0;
    margin: 0
}

    .page-timeline li {
        position: relative;
        padding: 18px 16px;
        border-top: 1px dotted var(--site-accent-line)
    }

        .page-timeline li::before {
            content: "";
            position: absolute;
            top: -3px;
            left: 16px;
            width: 5px;
            height: 5px;
            background: var(--site-accent);
            border-radius: 50%
        }

    .page-timeline img {
        height: 35px;
        width: 35px;
        object-fit: contain;
        margin-bottom: 12px
    }

    .page-timeline span {
        display: block;
        color: var(--site-accent);
        font: 600 22px/1.2 Georgia,serif;
        margin-bottom: 10px
    }

    .page-timeline h3 {
        font-size: 15px;
        line-height: 1.4;
        margin-bottom: 7px
    }

    .page-timeline p {
        font-size: 12px;
        line-height: 1.75;
        color: var(--site-muted);
        white-space: pre-line
    }

.page-principles {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 20px
}

    .page-principles section {
        padding: 28px 32px;
        border: 1px solid var(--site-accent-line);
        border-radius: 5px;
        background: var(--site-cream)
    }

    .page-principles h2 {
        font-size: 24px;
        margin-bottom: 12px
    }

    .page-principles p {
        font-size: 14px;
        line-height: 1.8;
        color: var(--site-muted);
        white-space: pre-line;
        margin: 0
    }

.page-value-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(160px,1fr));
    border: 1px solid var(--site-line);
    border-radius: 5px;
    overflow: hidden
}

    .page-value-grid article {
        text-align: center;
        padding: 24px 20px;
        border-right: 1px solid var(--site-line);
        background: #fff
    }

        .page-value-grid article:last-child {
            border-right: 0
        }

    .page-value-grid img {
        width: 38px;
        height: 38px;
        object-fit: contain;
        margin-bottom: 12px
    }

    .page-value-grid h3 {
        font-size: 18px;
        margin-bottom: 10px
    }

    .page-value-grid p {
        font-size: 12px;
        line-height: 1.8;
        color: var(--site-muted);
        white-space: pre-line;
        margin: 0
    }

.page-about-technical {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 32px;
    padding: 16px 0
}

.page-expertise {
    position: relative;
    isolation: isolate;
    min-height: 230px;
    overflow: hidden
}

    .page-expertise ul {
        list-style: none;
        padding: 0 38% 0 0;
        margin: 0
    }

    .page-expertise li {
        margin-bottom: 13px
    }

    .page-expertise a {
        display: flex;
        gap: 12px;
        font-size: 13px;
        line-height: 1.65;
        color: var(--site-navy);
        text-decoration: none
    }

        .page-expertise a span {
            color: var(--site-accent)
        }

    .page-expertise > img {
        position: absolute;
        right: 0;
        bottom: 0;
        width: 48%;
        height: 90%;
        object-fit: contain;
        object-position: right bottom;
        z-index: -1;
        opacity: .85
    }

.page-quality {
    display: flex;
    align-items: start;
    gap: 20px
}

    .page-quality img {
        width: 36%;
        height: 220px;
        object-fit: cover;
        border-radius: 5px;
        align-self: end
    }

    .page-quality .page-prose {
        font-size: 13px
    }

.page-team-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
    gap: 18px
}

    .page-team-grid article {
        display: flex;
        border: 1px solid var(--site-line);
        border-radius: 5px;
        overflow: hidden;
        min-height: 120px
    }

    .page-team-grid img {
        width: 94px;
        object-fit: cover;
        object-position: 50% 20%
    }

    .page-team-grid article > div {
        padding: 22px 18px;
        align-self: center
    }

    .page-team-grid h3 {
        font-size: 16px;
        margin-bottom: 10px
    }

    .page-team-grid p {
        font-size: 12px;
        color: var(--site-muted);
        margin: 0;
        line-height: 1.7
    }

.page-certificate-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit,minmax(180px,1fr));
    gap: 20px
}

    .page-certificate-grid figure {
        margin: 0;
        text-align: center;
        border: 1px solid var(--site-line);
        border-radius: 6px;
        padding: 20px
    }

    .page-certificate-grid img {
        width: 100%;
        height: 180px;
        object-fit: contain;
        margin-bottom: 16px
    }

    .page-certificate-grid figcaption {
        font-size: 13px;
        color: var(--site-navy)
    }

.page-article {
    max-width: 940px;
    padding-bottom: 40px
}

.page-article-image {
    width: 100%;
    max-height: 530px;
    object-fit: cover;
    border-radius: 6px;
    margin-bottom: 36px
}

.page-legal-content {
    max-width: 900px;
    padding-block: 36px
}

    .page-legal-content .page-prose {
        padding-bottom: 24px
    }

.page-lightbox {
    border: 0;
    border-radius: 6px;
    padding: 52px 16px 16px;
    max-width: 95vw;
    max-height: 95vh;
    background: #fff
}

    .page-lightbox::backdrop {
        background: #071a32dd
    }

    .page-lightbox img {
        display: block;
        max-width: 88vw;
        max-height: 78vh;
        object-fit: contain
    }

    .page-lightbox button {
        position: absolute;
        right: 14px;
        top: 10px;
        min-width: 38px;
        min-height: 32px;
        background: transparent;
        border: 1px solid #dce2e9;
        border-radius: 4px;
        color: #0b2546;
        cursor: pointer
    }

    .page-lightbox .page-lightbox-previous {
        left: 14px;
        right: auto
    }

    .page-lightbox .page-lightbox-next {
        left: 60px;
        right: auto
    }

    .page-lightbox p {
        font-size: 12px;
        color: #667388;
        margin: 10px 0 0
    }

@media(prefers-reduced-motion:no-preference) {
    .public-page [data-page-reveal].is-revealing {
        animation: pageReveal .5s ease both
    }

    @keyframes pageReveal {
        from {
            opacity: .15;
            transform: translateY(14px)
        }

        to {
            opacity: 1;
            transform: translateY(0)
        }
    }
}

@media(min-width:1500px) {
    .public-page {
        --page-width: 1440px
    }

    .page-hero {
        min-height: 440px
    }
}

@media(max-width:1180px) {
    .page-container {
        width: calc(100% - 48px)
    }

    .page-project-layout {
        grid-template-columns: minmax(0,3fr) minmax(190px,1fr);
        gap: 24px
    }

    .page-project-grid {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

    .page-form-grid {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

    .page-testimonial-track {
        grid-auto-columns: calc((100% - 40px)/3)
    }

    .page-closing {
        gap: 22px
    }

        .page-closing h2 {
            font-size: 25px
        }

        .page-closing .page-buttons {
            max-width: 200px
        }

    .page-hero-copy {
        width: 50%
    }

    .page-about-history {
        grid-template-columns: 1fr 1.5fr
    }

    .page-quality {
        flex-direction: column
    }

        .page-quality img {
            width: 100%;
            height: 200px
        }
}

@media(max-width:900px) {
    .page-project-layout {
        grid-template-columns: 1fr
    }

    .page-project-approach {
        border-left: 0;
        border-top: 1px solid var(--site-line);
        padding: 24px 0
    }

        .page-project-approach .page-steps {
            grid-template-columns: repeat(2,minmax(0,1fr))
        }

    .page-contact-layout {
        grid-template-columns: 1fr;
        gap: 28px
    }

    .page-contact-card {
        display: grid;
        grid-template-columns: 1fr 1fr
    }

    .page-contact-list {
        grid-template-columns: 1fr
    }

    .page-coverage {
        grid-template-columns: 1fr 1fr
    }

        .page-coverage .page-benefits {
            grid-column: 1/-1;
            grid-template-columns: repeat(2,minmax(0,1fr))
        }

    .page-testimonial-track {
        grid-auto-columns: calc((100% - 20px)/2)
    }

    .page-closing {
        flex-wrap: wrap;
        padding: 28px
    }

        .page-closing > img {
            display: none
        }

        .page-closing .page-buttons {
            max-width: none
        }

    .page-about-history {
        grid-template-columns: 1fr
    }

    .page-detail-columns {
        gap: 30px
    }

    .page-card-grid {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

    .page-hero h1 {
        font-size: 42px
    }

    .page-hero-copy {
        padding-block: 45px
    }
}

@media(max-width:640px) {
    .page-container {
        width: calc(100% - 32px)
    }

    .page-hero {
        display: flex;
        flex-direction: column;
        align-items: stretch
    }

    .page-hero-copy {
        width: 100%;
        padding: 32px 0
    }

    .page-hero-media {
        position: relative;
        order: 2;
        inset: auto;
        height: 245px;
        clip-path: polygon(18% 0,100% 0,100% 100%,0 100%,0 55%,3% 36%,9% 16%)
    }

    .page-hero h1 {
        font-size: 39px
    }

    .page-hero.no-image {
        min-height: 0
    }

        .page-hero.no-image .page-hero-copy {
            padding-block: 32px
        }

    .page-hero.site-geology::before {
        width: 115%;
        opacity: .055
    }

    .page-section-heading {
        gap: 12px
    }

        .page-section-heading h2 {
            font-size: 22px
        }

        .page-section-heading > .page-text-link {
            font-size: 11px;
            max-width: 100px;
            flex-shrink: 1
        }

    .page-project-filters {
        flex-wrap: wrap;
        gap: 10px
    }

    .page-filter-tabs {
        width: 100%;
        margin: 0
    }

        .page-filter-tabs span {
            padding: 14px 12px
        }

    .page-location-filter {
        flex: 1
    }

        .page-location-filter select {
            width: 100%;
            max-width: none
        }

    .page-featured-project {
        grid-template-columns: 1fr
    }

        .page-featured-project > a {
            min-height: 0;
            height: 240px
        }

        .page-featured-project .page-card-copy {
            padding: 22px
        }

    .page-project-grid, .page-card-grid {
        grid-template-columns: 1fr
    }

    .page-project-card img {
        height: 225px
    }

    .page-project-approach .page-steps {
        grid-template-columns: 1fr
    }

    .page-statistics {
        grid-template-columns: repeat(2,minmax(0,1fr));
        gap: 16px
    }

        .page-statistics > div {
            padding: 8px 16px
        }

        .page-statistics strong {
            font-size: 29px
        }

    .page-closing {
        padding: 26px 22px;
        gap: 20px;
        margin-bottom: 28px
    }

        .page-closing h2 {
            font-size: 27px
        }

        .page-closing .page-buttons {
            width: 100%
        }

    .page-testimonial-track {
        grid-auto-columns: 88%
    }

    .references-page .home-reference-logo {
        width: 190px;
        height: 130px
    }

    .page-coverage {
        grid-template-columns: 1fr;
        gap: 24px
    }

        .page-coverage .page-benefits {
            grid-template-columns: 1fr
        }

    .page-contact-card {
        display: flex
    }

    .page-contact-details {
        padding: 24px
    }

    .page-contact-list {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

    .page-contact-map {
        min-height: 300px
    }

    .page-form-grid {
        grid-template-columns: 1fr 1fr
    }

    .page-faq-grid {
        grid-template-columns: 1fr
    }

    .page-contact-process {
        padding: 22px
    }

    .page-message-panel {
        padding: 18px
    }

    .page-principles {
        grid-template-columns: 1fr
    }

    .page-about-technical {
        grid-template-columns: 1fr
    }

    .page-principles section {
        padding: 24px
    }

    .page-value-grid {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

        .page-value-grid article {
            border-bottom: 1px solid var(--site-line)
        }

    .page-detail-columns {
        grid-template-columns: 1fr;
        gap: 20px
    }

    .page-detail-heading h1 {
        font-size: 36px
    }

    .page-photo-gallery {
        grid-template-columns: 1fr 1fr
    }

        .page-photo-gallery img {
            height: 180px
        }

    .page-about-content .about-photo-gallery {
        margin-top: 24px
    }

    .page-timeline {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

    .page-team-grid {
        grid-template-columns: 1fr 1fr
    }

        .page-team-grid article {
            flex-direction: column
        }

        .page-team-grid img {
            width: 100%;
            height: 180px
        }

        .page-team-grid article > div {
            align-self: start;
            padding: 16px
        }

        .page-team-grid h3 {
            font-size: 15px
        }
}

@media(max-width:400px) {
    .page-form-grid, .page-contact-list, .page-message-panel .page-form-grid {
        grid-template-columns: 1fr
    }

    .page-hero h1 {
        font-size: 34px
    }

    .page-buttons .page-button {
        padding-inline: 16px;
        gap: 18px
    }

    .page-photo-gallery {
        grid-template-columns: 1fr
    }
}

@media(prefers-reduced-motion:reduce) {
    .public-page {
        scroll-behavior: auto
    }

        .public-page * {
            animation: none !important;
            transition: none !important;
            scroll-behavior: auto !important
        }
}

.public-page .page-section {
    padding-block: clamp(68px, 6.5vw, 104px);
}

    .public-page .page-section:nth-of-type(even) {
        background: linear-gradient(180deg, #f8fafc 0%, #fff 100%);
    }

.public-page .page-section-heading {
    margin-bottom: clamp(30px, 3.5vw, 48px);
}

    .public-page .page-section-heading h2 {
        font-size: clamp(30px, 2.6vw, 42px);
        line-height: 1.12;
    }

    .public-page .page-section-heading p {
        font-size: clamp(14px, .95vw, 16px);
        line-height: 1.85;
    }

.public-page .page-card,
.public-page .page-project-card,
.public-page .page-featured-project {
    border-color: rgba(11, 37, 70, .1);
    border-radius: 14px;
    box-shadow: 0 18px 54px rgba(11, 37, 70, .05);
}

.public-page .page-card-copy {
    padding: clamp(24px, 2.5vw, 34px);
}

    .public-page .page-card-copy :is(h2, h3) {
        font-size: clamp(21px, 1.7vw, 27px);
    }

    .public-page .page-card-copy p {
        font-size: 14px;
        line-height: 1.85;
    }

@media (max-width: 700px) {
    .public-page .page-section {
        padding-block: 54px;
    }

    .public-page .page-card,
    .public-page .page-project-card,
    .public-page .page-featured-project {
        border-radius: 10px;
    }
}


.legal-content {
    padding: clamp(120px, 14vw, 170px) 0 90px;
    background: #f7f9fc;
}

.legal-content-inner {
    width: min(860px, calc(100% - 40px));
    margin: 0 auto;
    padding: clamp(32px, 5vw, 56px);
    background: #fff;
    border: 1px solid rgba(11, 37, 70, .1);
    border-radius: 24px;
    box-shadow: 0 24px 70px rgba(11, 37, 70, .08);
}

.legal-eyebrow {
    display: inline-block;
    margin-bottom: 12px;
    color: var(--site-accent);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.legal-content h1 {
    margin: 0 0 28px;
    color: var(--site-navy-deep);
    font-size: clamp(36px, 5vw, 58px);
    line-height: 1.05;
}

.legal-content h2 {
    margin: 34px 0 10px;
    color: var(--site-navy-deep);
    font-size: 21px;
}

.legal-content p {
    margin: 0;
    color: #4d5b6d;
    font-size: 16px;
    line-height: 1.8;
}


/* 2026-09-26 — legal pages moved up + oval accent */
.legal-content {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(48px, 5vw, 76px) 0 88px;
    background: linear-gradient(180deg, #f7f9fc 0%, #fbfcfe 100%);
}

    .legal-content::after {
        content: "";
        position: absolute;
        right: -160px;
        bottom: -150px;
        width: 430px;
        height: 270px;
        border: 1px solid rgba(201, 120, 61, .18);
        border-radius: 50%;
        box-shadow: 0 0 0 28px rgba(201, 120, 61, .03), 0 0 0 58px rgba(201, 120, 61, .016);
        transform: rotate(-12deg);
        pointer-events: none;
        z-index: 0;
    }

.legal-content-inner {
    position: relative;
    z-index: 1;
    width: min(860px, calc(100% - 40px));
    margin: 0 auto;
}

@media (max-width: 640px) {
    .legal-content {
        padding-top: 34px;
        padding-bottom: 64px;
    }

        .legal-content::after {
            right: -215px;
            bottom: -195px;
            width: 340px;
            height: 220px;
        }
}


/* Final legal page composition */
.legal-page .site-main::before {
    display: none !important;
}

.legal-page .site-main {
    background: #f7f9fc;
}

.legal-page .legal-content {
    min-height: calc(100svh - var(--site-header-height));
    padding: clamp(38px, 4.2vw, 62px) 0 clamp(58px, 5vw, 78px);
    display: flex;
    align-items: flex-start;
    overflow: hidden;
    background: linear-gradient(180deg, #f7f9fc 0%, #fbfcfd 100%);
}

    .legal-page .legal-content.site-geology {
        --site-geology-opacity: .11;
        --site-geology-height: 100%;
        --site-geology-y: 0px;
    }

        .legal-page .legal-content.site-geology::before {
            z-index: 0;
            inset: 0;
            opacity: var(--site-geology-opacity);
            transform: none;
            -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,.95) 0%, #000 72%, rgba(0,0,0,.76) 92%, transparent 100%);
            mask-image: linear-gradient(90deg, rgba(0,0,0,.95) 0%, #000 72%, rgba(0,0,0,.76) 92%, transparent 100%);
        }

    .legal-page .legal-content::after {
        right: -190px;
        bottom: -175px;
        width: 470px;
        height: 285px;
        border-color: rgba(201,120,61,.20);
        box-shadow: 0 0 0 30px rgba(201,120,61,.032), 0 0 0 66px rgba(201,120,61,.016);
    }

.legal-page .legal-content-inner {
    width: min(820px, calc(100% - 44px));
    padding: clamp(34px, 4vw, 50px);
    border-radius: 20px;
    border-color: rgba(11,37,70,.105);
    box-shadow: 0 22px 62px rgba(11,37,70,.07);
}

    .legal-page .legal-content-inner::before {
        content: "";
        position: absolute;
        top: -1px;
        left: 46px;
        width: 92px;
        height: 2px;
        background: linear-gradient(90deg, var(--site-accent), rgba(201,120,61,.18));
    }

.legal-page .legal-content h1 {
    margin-bottom: 24px;
    font-size: clamp(42px, 4.3vw, 62px);
    letter-spacing: -.035em;
}

.legal-page .legal-content h2 {
    margin-top: 30px;
    font-size: 20px;
}

.legal-page .legal-content p {
    font-size: 15px;
    line-height: 1.78;
}

@media (max-width: 640px) {
    .legal-page .legal-content {
        padding: 28px 0 54px;
    }

    .legal-page .legal-content-inner {
        width: calc(100% - 28px);
        padding: 30px 24px;
        border-radius: 16px;
    }

        .legal-page .legal-content-inner::before {
            left: 24px;
            width: 72px;
        }

    .legal-page .legal-content.site-geology::before {
        inset: -10% -70% -8% -50%;
        opacity: .065;
    }
}

.legal-page .site-main,
.legal-page .legal-content {
    background: #f8fafc;
}

.legal-page .legal-content-inner {
    position: relative;
    z-index: 1;
    background: rgba(255,255,255,.97);
    backdrop-filter: blur(1.5px);
}
