/* Jami Productions — custom front-end system */
:root {
    --ink: #090b0f;
    --ink-soft: #12151b;
    --paper: #f1f0eb;
    --paper-2: #e6e5df;
    --white: #fff;
    --muted-dark: #9298a4;
    --muted-light: #676b73;
    --line-dark: rgba(255, 255, 255, .16);
    --line-light: rgba(9, 11, 15, .16);
    --blue: #2457ff;
    --blue-bright: #4773ff;
    --blue-pale: #dce4ff;
    --danger: #bd2e37;
    --font: "Helvetica Neue", "Neue Haas Grotesk Text Pro", Inter, Arial, sans-serif;
    --shell: 1180px;
    --shell-wide: 1480px;
    --shell-narrow: 780px;
    --gutter: clamp(1.15rem, 3vw, 3.5rem);
    --section: clamp(5.5rem, 10vw, 10rem);
    --header-height: 5.5rem;
    --radius: .15rem;
    --ease-out: cubic-bezier(.16, 1, .3, 1);
    --ease-smooth: cubic-bezier(.65, 0, .35, 1);
    --shadow: 0 1.5rem 5rem rgba(0, 0, 0, .22);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    color-scheme: dark;
    scroll-behavior: smooth;
    scrollbar-gutter: stable;
}

body {
    margin: 0;
    background: var(--ink);
    color: var(--paper);
    font-family: var(--font);
    font-size: clamp(.98rem, .28vw + .9rem, 1.08rem);
    line-height: 1.55;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

body.is-scroll-locked {
    overflow: hidden;
}

[id] {
    scroll-margin-top: calc(var(--header-height) + 1rem);
}

::selection {
    background: var(--blue);
    color: var(--white);
}

img,
video,
iframe {
    display: block;
    max-width: 100%;
}

img {
    height: auto;
}

figure,
p,
h1,
h2,
h3,
dl,
dd {
    margin: 0;
}

button,
input,
textarea {
    color: inherit;
    font: inherit;
}

button,
a {
    -webkit-tap-highlight-color: transparent;
}

a {
    color: inherit;
    text-decoration: none;
}

button {
    border: 0;
}

[hidden] {
    display: none !important;
}

:focus-visible {
    outline: .14rem solid var(--blue-bright);
    outline-offset: .28rem;
}

.skip-link {
    position: fixed;
    z-index: 10000;
    left: 1rem;
    top: 1rem;
    padding: .7rem 1rem;
    background: var(--white);
    color: var(--ink);
    transform: translateY(-180%);
    transition: transform .2s;
}

.skip-link:focus {
    transform: translateY(0);
}

.shell {
    width: min(calc(100% - (2 * var(--gutter))), var(--shell));
    margin-inline: auto;
}

.shell--wide {
    width: min(calc(100% - (2 * var(--gutter))), var(--shell-wide));
}

.shell--narrow {
    width: min(calc(100% - (2 * var(--gutter))), var(--shell-narrow));
}

.section-pad {
    padding-block: var(--section);
}

.section-pad--top {
    padding-top: clamp(3.5rem, 6vw, 6rem);
}

.eyebrow {
    font-size: .69rem;
    font-weight: 700;
    letter-spacing: .17em;
    line-height: 1.35;
    text-transform: uppercase;
}

h1,
h2,
h3 {
    font-weight: 500;
    letter-spacing: -.045em;
    line-height: .94;
}

h1 {
    font-size: clamp(3.7rem, 9.2vw, 9.8rem);
}

h2 {
    font-size: clamp(2.7rem, 6.2vw, 6.5rem);
}

h3 {
    font-size: clamp(1.55rem, 2.5vw, 2.55rem);
}

.section-heading {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(15rem, .65fr);
    gap: clamp(2rem, 7vw, 8rem);
    align-items: end;
    margin-bottom: clamp(3rem, 6vw, 6rem);
}

.section-heading h2 {
    max-width: 12ch;
    margin-top: 1rem;
}

.section-heading > p {
    max-width: 34rem;
    color: var(--muted-dark);
}

.button-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1.1rem 2rem;
    align-items: center;
    margin-top: 2.2rem;
}

.button {
    display: inline-flex;
    min-height: 3.35rem;
    padding: .9rem 1.25rem;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    border: 1px solid var(--ink);
    background: var(--ink);
    color: var(--white);
    font-size: .76rem;
    font-weight: 700;
    letter-spacing: .11em;
    line-height: 1;
    text-transform: uppercase;
    transition: background .35s var(--ease-out), color .35s var(--ease-out), border-color .35s var(--ease-out), transform .35s var(--ease-out);
}

.button:hover {
    border-color: var(--blue);
    background: var(--blue);
    transform: translateY(-2px);
}

.button--light {
    border-color: var(--white);
    background: var(--white);
    color: var(--ink);
}

.button--light:hover {
    border-color: var(--blue);
    background: var(--blue);
    color: var(--white);
}

.button--small {
    min-height: 2.7rem;
    padding: .75rem 1rem;
    font-size: .66rem;
}

.text-link {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    border-bottom: 1px solid currentColor;
    padding-bottom: .28rem;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .1em;
    line-height: 1.2;
    text-transform: uppercase;
    transition: color .25s, gap .35s var(--ease-out);
}

.text-link:hover {
    color: var(--blue);
    gap: 1rem;
}

.text-link--light:hover {
    color: var(--white);
}

/* Header */
.site-header {
    --header-fg: var(--white);
    position: fixed;
    z-index: 1000;
    inset: 0 0 auto;
    height: var(--header-height);
    color: var(--header-fg);
    transition: background .4s, color .4s, box-shadow .4s, transform .4s var(--ease-out);
}

.page-service .site-header,
.page-photography .site-header,
.page-construction .site-header,
.page-contact .site-header,
.page-about .site-header,
.page-legal .site-header,
.project-editorial .site-header,
.project-field-report .site-header {
    --header-fg: var(--ink);
}

.site-header.is-scrolled,
.site-header.is-menu-open {
    --header-fg: var(--white);
    background: rgba(9, 11, 15, .9);
    box-shadow: 0 1px 0 rgba(255, 255, 255, .12);
    -webkit-backdrop-filter: blur(18px);
    backdrop-filter: blur(18px);
}

.site-header__inner {
    display: flex;
    height: 100%;
    align-items: center;
    justify-content: space-between;
}

.wordmark {
    position: relative;
    z-index: 2;
    display: inline-flex;
    flex-direction: column;
    color: currentColor;
    line-height: .72;
}

.wordmark__jami {
    font-size: 1.58rem;
    font-weight: 800;
    letter-spacing: -.065em;
}

.wordmark__productions {
    margin-top: .44rem;
    font-size: .43rem;
    font-weight: 700;
    letter-spacing: .29em;
}

.primary-navigation {
    display: flex;
    align-items: center;
    gap: clamp(1.15rem, 2vw, 2.15rem);
}

.nav-link {
    position: relative;
    padding-block: .9rem;
    font-size: .71rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.nav-link::after {
    position: absolute;
    right: 0;
    bottom: .55rem;
    left: 0;
    height: 1px;
    background: currentColor;
    content: "";
    transform: scaleX(0);
    transform-origin: right;
    transition: transform .35s var(--ease-out);
}

.nav-link:hover::after,
.nav-link.is-active::after {
    transform: scaleX(1);
    transform-origin: left;
}

.nav-group {
    position: relative;
}

.nav-group__trigger {
    display: flex;
    align-items: center;
}

.nav-group__trigger button {
    display: grid;
    width: 1.75rem;
    height: 2.4rem;
    place-items: center;
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.nav-group__trigger button span {
    transition: transform .35s var(--ease-out);
}

.nav-group.is-open .nav-group__trigger button span,
.nav-group:focus-within .nav-group__trigger button span {
    transform: rotate(45deg);
}

.nav-submenu {
    position: absolute;
    top: calc(100% + .65rem);
    left: -1.15rem;
    display: grid;
    width: 21rem;
    padding: .55rem;
    visibility: hidden;
    background: var(--paper);
    box-shadow: var(--shadow);
    color: var(--ink);
    opacity: 0;
    transform: translateY(-.7rem);
    transition: opacity .25s, transform .35s var(--ease-out), visibility .25s;
}

.nav-submenu::before {
    position: absolute;
    right: 0;
    bottom: 100%;
    left: 0;
    height: 1rem;
    content: "";
}

.nav-submenu a {
    display: flex;
    gap: 1rem;
    padding: .9rem;
    align-items: baseline;
    border-bottom: 1px solid var(--line-light);
    font-size: .8rem;
    font-weight: 600;
    transition: background .25s, padding-left .35s var(--ease-out);
}

.nav-submenu a:last-child {
    border: 0;
}

.nav-submenu a:hover {
    padding-left: 1.2rem;
    background: var(--blue-pale);
}

.nav-submenu a span {
    color: var(--blue);
    font-size: .61rem;
    letter-spacing: .12em;
}

.nav-group:hover .nav-submenu,
.nav-group:focus-within .nav-submenu,
.nav-group.is-open .nav-submenu {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
}

.nav-cta {
    border-color: currentColor;
    background: transparent;
    color: currentColor;
}

.menu-toggle {
    position: relative;
    z-index: 2;
    display: none;
    gap: .7rem;
    align-items: center;
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.menu-toggle__label {
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.menu-toggle__lines {
    position: relative;
    display: block;
    width: 1.45rem;
    height: .85rem;
}

.menu-toggle__lines i {
    position: absolute;
    left: 0;
    width: 100%;
    height: 1px;
    background: currentColor;
    transition: transform .4s var(--ease-out), top .4s var(--ease-out);
}

.menu-toggle__lines i:first-child { top: .12rem; }
.menu-toggle__lines i:last-child { top: .7rem; }

.site-header.is-menu-open .menu-toggle__lines i:first-child {
    top: .42rem;
    transform: rotate(45deg);
}

.site-header.is-menu-open .menu-toggle__lines i:last-child {
    top: .42rem;
    transform: rotate(-45deg);
}

/* Home hero */
.hero {
    position: relative;
    min-height: max(44rem, 100svh);
    overflow: hidden;
    background: var(--ink);
}

.hero__media,
.hero__media video,
.hero__iframe,
.hero__shade {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.hero__media video,
.hero__iframe {
    border: 0;
    object-fit: cover;
}

.hero__shade {
    background:
        linear-gradient(90deg, rgba(4, 5, 8, .76) 0%, rgba(4, 5, 8, .31) 54%, rgba(4, 5, 8, .15) 100%),
        linear-gradient(0deg, rgba(4, 5, 8, .58) 0%, transparent 45%);
}

.hero__content {
    position: relative;
    display: grid;
    min-height: max(44rem, 100svh);
    padding-top: calc(var(--header-height) + 5rem);
    padding-bottom: 3rem;
    align-content: center;
}

.hero__copy {
    max-width: 68rem;
}

.hero__copy .eyebrow {
    margin-bottom: 1.4rem;
}

.hero__copy h1 {
    max-width: 9ch;
    font-size: clamp(4rem, 10vw, 10.5rem);
}

.hero__intro {
    max-width: 42rem;
    margin-top: 1.6rem;
    color: rgba(255, 255, 255, .76);
    font-size: clamp(1.05rem, 1.5vw, 1.35rem);
}

.showreel-button {
    position: absolute;
    right: var(--gutter);
    bottom: 3rem;
    display: grid;
    grid-template-columns: auto auto;
    gap: 0 .75rem;
    align-items: center;
    padding: 0;
    background: transparent;
    color: var(--white);
    cursor: pointer;
    text-align: left;
}

.showreel-button__play {
    display: grid;
    grid-row: 1 / 3;
    width: 3.45rem;
    height: 3.45rem;
    border: 1px solid rgba(255, 255, 255, .7);
    border-radius: 50%;
    place-items: center;
    font-size: .68rem;
    transition: background .35s, transform .4s var(--ease-out);
}

.showreel-button:hover .showreel-button__play {
    background: var(--blue);
    transform: scale(1.08);
}

.showreel-button > span:nth-child(2) {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.showreel-button small {
    color: rgba(255, 255, 255, .58);
    font-size: .64rem;
}

.hero__scroll {
    position: absolute;
    bottom: 3rem;
    left: var(--gutter);
    display: flex;
    gap: .8rem;
    align-items: center;
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.hero__scroll i {
    position: relative;
    display: block;
    width: 3.5rem;
    height: 1px;
    overflow: hidden;
    background: rgba(255, 255, 255, .3);
}

.hero__scroll i::after {
    position: absolute;
    inset: 0;
    background: var(--white);
    content: "";
    animation: scroll-line 2.3s var(--ease-smooth) infinite;
    transform: translateX(-100%);
}

@keyframes scroll-line {
    0% { transform: translateX(-100%); }
    50%, 100% { transform: translateX(100%); }
}

/* Home disciplines */
.disciplines {
    background: var(--paper);
    color: var(--ink);
}

.disciplines .section-heading > p,
.service-capabilities .section-heading > p,
.outputs .section-heading > p,
.coverage .section-heading > p,
.photo-gallery .section-heading > p {
    color: var(--muted-light);
}

.discipline-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(.7rem, 1.5vw, 1.5rem);
}

.discipline-card {
    position: relative;
    display: grid;
    min-width: 0;
}

.discipline-card__number {
    position: absolute;
    z-index: 2;
    top: 1.25rem;
    left: 1.25rem;
    color: var(--white);
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.discipline-card__media {
    aspect-ratio: .79;
    overflow: hidden;
    background: var(--ink-soft);
}

.discipline-card__media::after {
    position: absolute;
    inset: 0 0 auto;
    height: 35%;
    background: linear-gradient(rgba(0, 0, 0, .42), transparent);
    content: "";
    pointer-events: none;
}

.discipline-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1s var(--ease-out), filter .7s;
}

.discipline-card:hover .discipline-card__media img {
    filter: saturate(1.08);
    transform: scale(1.035);
}

.discipline-card__copy {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .6rem 1rem;
    padding-top: 1.25rem;
    align-items: end;
}

.discipline-card__copy h3 {
    font-size: clamp(2rem, 3.2vw, 3.55rem);
}

.discipline-card__copy p {
    grid-column: 1 / -1;
    max-width: 32rem;
    color: var(--muted-light);
    font-size: .92rem;
}

.discipline-card__copy span {
    grid-column: 2;
    grid-row: 1;
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    transition: color .25s, transform .35s var(--ease-out);
}

.discipline-card:hover .discipline-card__copy span {
    color: var(--blue);
    transform: translateX(.25rem);
}

.client-line {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 3rem;
    margin-top: clamp(4rem, 8vw, 8rem);
    padding-top: 1.25rem;
    border-top: 1px solid var(--line-light);
    align-items: start;
}

.client-line > span {
    color: var(--muted-light);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.client-line > div {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 2.2rem;
    justify-content: flex-end;
}

.client-line > div span {
    font-size: .83rem;
    font-weight: 650;
}

/* Project cards and work index */
.selected-work,
.related-work,
.work-index {
    background: var(--ink);
    color: var(--paper);
}

.selected-work .section-heading > p,
.related-work .section-heading > p {
    color: var(--muted-dark);
}

.project-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(3.5rem, 7vw, 8rem) clamp(1rem, 2.7vw, 3rem);
}

.project-card {
    min-width: 0;
    will-change: transform, opacity;
}

.project-card--large {
    grid-column: 1 / -1;
}

.project-card__media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--ink-soft);
}

.project-card--large .project-card__media {
    aspect-ratio: 16 / 8.1;
}

.project-card__media img,
.project-card__media video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.project-card__media img {
    transition: opacity .45s, transform 1s var(--ease-out), filter .6s;
}

.project-card__media video {
    z-index: 1;
    opacity: 0;
    transition: opacity .45s;
}

.project-card.is-previewing .project-card__media video {
    opacity: 1;
}

.project-card__link:hover .project-card__media img {
    filter: saturate(1.08);
    transform: scale(1.025);
}

.project-card__arrow {
    position: absolute;
    z-index: 2;
    top: 1rem;
    right: 1rem;
    display: grid;
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    place-items: center;
    background: var(--blue);
    color: var(--white);
    opacity: 0;
    transform: translate(-.5rem, .5rem) scale(.88);
    transition: opacity .35s, transform .45s var(--ease-out);
}

.project-card__link:hover .project-card__arrow {
    opacity: 1;
    transform: translate(0) scale(1);
}

.project-card__content {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(12rem, .58fr);
    gap: 1rem 2rem;
    padding-top: 1.25rem;
}

.project-card__content .eyebrow {
    margin-bottom: .65rem;
    color: var(--muted-dark);
}

.project-card__content h3 {
    font-size: clamp(1.8rem, 3vw, 3.2rem);
    transition: color .3s;
}

.project-card__link:hover h3 {
    color: var(--blue-bright);
}

.project-card__content > p {
    color: var(--muted-dark);
    font-size: .92rem;
}

/* Solutions bridge */
.solutions-bridge {
    background: var(--paper);
    color: var(--ink);
}

.solutions-bridge__intro {
    display: grid;
    grid-template-columns: .48fr 1.1fr .7fr;
    gap: 2rem;
    padding-bottom: clamp(3rem, 6vw, 6rem);
    align-items: start;
}

.solutions-bridge__intro h2 {
    max-width: 10ch;
    font-size: clamp(3rem, 5.8vw, 6rem);
}

.solutions-bridge__intro > p:last-child {
    color: var(--muted-light);
}

.solution-links {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
}

.solution-link {
    display: flex;
    min-height: 30rem;
    padding: clamp(1.5rem, 4vw, 4rem);
    justify-content: space-between;
    align-items: flex-end;
    background: var(--ink);
    color: var(--paper);
    transition: background .4s;
}

.solution-link--blue {
    background: var(--blue);
    color: var(--white);
}

.solution-link:hover {
    background: var(--ink-soft);
}

.solution-link--blue:hover {
    background: #1242e6;
}

.solution-link > div > span {
    display: block;
    margin-bottom: auto;
    color: rgba(255, 255, 255, .62);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.solution-link h3 {
    max-width: 10ch;
    margin-top: 10rem;
    font-size: clamp(2.3rem, 4.5vw, 4.9rem);
}

.solution-link p {
    max-width: 31rem;
    margin-top: 1.4rem;
    color: rgba(255, 255, 255, .66);
}

.solution-link > span {
    align-self: flex-start;
    font-size: 1.5rem;
    transition: transform .4s var(--ease-out);
}

.solution-link:hover > span {
    transform: translate(.35rem, -.35rem);
}

.solutions-bridge__note {
    margin-top: 1rem;
    color: var(--muted-light);
    font-size: .73rem;
}

/* Shared page heroes */
.page-hero {
    min-height: min(56rem, 100svh);
    padding-top: var(--header-height);
    background: var(--paper);
    color: var(--ink);
}

.page-hero--split {
    display: grid;
    grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
}

.page-hero__copy {
    display: flex;
    width: min(calc(100% - (2 * var(--gutter))), 38rem);
    padding-block: clamp(5rem, 12vw, 10rem);
    flex-direction: column;
    justify-content: center;
}

.page-hero__copy h1 {
    max-width: 7.6ch;
    margin-top: 1.35rem;
    font-size: clamp(4rem, 7.5vw, 8rem);
}

.page-hero__copy > p:not(.eyebrow) {
    max-width: 35rem;
    margin-top: 1.7rem;
    color: var(--muted-light);
    font-size: clamp(1.02rem, 1.4vw, 1.27rem);
}

.page-hero__media {
    position: relative;
    min-height: 42rem;
    overflow: hidden;
    background: var(--ink-soft);
}

.page-hero__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.page-hero__media video {
    position: absolute;
    z-index: 1;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.page-hero__media .page-hero__fallback {
    z-index: 0;
}

.page-hero--compact {
    display: flex;
    min-height: 42rem;
    padding-block: calc(var(--header-height) + 6rem) 6rem;
    align-items: flex-end;
    background: var(--ink);
    color: var(--paper);
}

.page-hero--compact h1 {
    max-width: 10ch;
}

.page-hero--compact p:not(.eyebrow) {
    max-width: 32rem;
    margin-top: 1.8rem;
    color: var(--muted-dark);
}

/* Service pages */
.service-capabilities {
    background: var(--paper);
    color: var(--ink);
}

.capability-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    border-top: 1px solid var(--line-light);
}

.capability-card {
    display: grid;
    grid-template-columns: 3rem 1fr;
    gap: 1rem 2rem;
    min-height: 18rem;
    padding: 2rem clamp(1rem, 3vw, 3rem) 2rem 0;
    align-content: start;
    border-bottom: 1px solid var(--line-light);
}

.capability-card:nth-child(odd) {
    border-right: 1px solid var(--line-light);
}

.capability-card:nth-child(even) {
    padding-left: clamp(1.5rem, 3vw, 3rem);
}

.capability-card > span {
    grid-row: 1 / 3;
    color: var(--blue);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.capability-card h3 {
    font-size: clamp(1.8rem, 3vw, 3.2rem);
}

.capability-card p {
    max-width: 31rem;
    color: var(--muted-light);
}

.location-callout {
    background: var(--blue);
    color: var(--white);
}

.location-callout__inner {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: clamp(3rem, 8vw, 9rem);
}

.location-callout__inner h2 {
    max-width: 10ch;
    margin-top: 1rem;
}

.location-callout__inner > div:last-child {
    padding-top: 2.1rem;
}

.location-callout__inner > div:last-child p {
    margin-bottom: 1.4rem;
    color: rgba(255, 255, 255, .75);
}

.location-callout__inner .text-link {
    margin-top: 1rem;
}

.process {
    background: var(--paper);
    color: var(--ink);
}

.process-list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 0;
    padding: 0;
    border-top: 1px solid var(--line-light);
    list-style: none;
}

.process-list li {
    min-height: 19rem;
    padding: 1.5rem clamp(1rem, 2.3vw, 2.4rem) 2rem 0;
    border-right: 1px solid var(--line-light);
}

.process-list li + li {
    padding-left: clamp(1rem, 2.3vw, 2.4rem);
}

.process-list li:last-child {
    border: 0;
}

.process-list li > span {
    display: block;
    margin-bottom: 5.5rem;
    color: var(--blue);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.process-list h3 {
    margin-bottom: 1rem;
    font-size: clamp(1.65rem, 2.4vw, 2.5rem);
}

.process-list p {
    color: var(--muted-light);
    font-size: .91rem;
}

.process-list--five {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.process-list--five li {
    min-height: 20rem;
}

/* Filters */
.filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    align-items: center;
    margin-bottom: 1rem;
}

.filter-bar--sticky {
    position: sticky;
    z-index: 50;
    top: calc(var(--header-height) + .75rem);
    width: max-content;
    max-width: 100%;
    padding: .5rem;
    border: 1px solid var(--line-light);
    background: rgba(241, 240, 235, .88);
    box-shadow: 0 .6rem 2rem rgba(9, 11, 15, .07);
    -webkit-backdrop-filter: blur(15px);
    backdrop-filter: blur(15px);
}

.filter-chip {
    min-height: 2.7rem;
    padding: .7rem 1rem;
    border: 1px solid var(--line-dark);
    background: transparent;
    color: inherit;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .09em;
    line-height: 1;
    text-transform: uppercase;
    cursor: pointer;
    transition: background .3s, color .3s, border-color .3s, transform .3s var(--ease-out);
}

.filter-chip:hover {
    border-color: var(--blue-bright);
    transform: translateY(-1px);
}

.filter-chip.is-active {
    border-color: var(--blue);
    background: var(--blue);
    color: var(--white);
}

.photo-gallery .filter-chip {
    border-color: var(--line-light);
}

.filter-status {
    margin-bottom: 2.4rem;
    color: var(--muted-dark);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.photo-gallery .filter-status {
    color: var(--muted-light);
}

[data-filter-item].is-filter-leaving {
    pointer-events: none;
    opacity: 0;
    transform: scale(.975);
    transition: opacity .2s ease, transform .3s var(--ease-out);
}

[data-filter-item].is-filter-entering {
    animation: filter-in .5s var(--ease-out) both;
}

@keyframes filter-in {
    from { opacity: 0; transform: translateY(1rem) scale(.985); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Photography */
.photo-gallery {
    background: var(--paper);
    color: var(--ink);
}

.photo-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: clamp(.5rem, 1.2vw, 1.15rem);
}

.photo-item {
    grid-column: span 4;
    min-width: 0;
    margin: 0;
    will-change: transform, opacity;
}

.photo-item--wide {
    grid-column: span 8;
}

.photo-item a {
    position: relative;
    display: block;
    height: 100%;
    min-height: 19rem;
    overflow: hidden;
    background: var(--paper-2);
    cursor: zoom-in;
}

.photo-item img {
    width: 100%;
    height: 100%;
    min-height: 19rem;
    object-fit: cover;
    transition: filter .5s, transform .9s var(--ease-out);
}

.photo-item a::after {
    position: absolute;
    right: .9rem;
    bottom: .9rem;
    display: grid;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    place-items: center;
    background: var(--blue);
    color: var(--white);
    content: "+";
    font-size: 1.2rem;
    opacity: 0;
    transform: scale(.8);
    transition: opacity .3s, transform .4s var(--ease-out);
}

.photo-item a:hover img {
    filter: saturate(1.06);
    transform: scale(1.025);
}

.photo-item a:hover::after {
    opacity: 1;
    transform: scale(1);
}

.aerial-note {
    background: var(--paper);
    color: var(--ink);
}

.aerial-note__inner {
    display: grid;
    grid-template-columns: .45fr 1fr .7fr;
    gap: clamp(2rem, 6vw, 6rem);
    padding-block: clamp(2.5rem, 5vw, 5rem);
    align-items: start;
    border-block: 1px solid var(--line-light);
}

.aerial-note__inner h2 {
    max-width: 10ch;
    font-size: clamp(2.4rem, 4vw, 4.3rem);
}

.aerial-note__inner > p:not(.eyebrow) {
    color: var(--muted-light);
}

.aerial-note__inner .text-link {
    grid-column: 3;
}

/* Industrial data */
.data-hero {
    position: relative;
    min-height: max(46rem, 100svh);
    overflow: hidden;
    background: var(--ink);
}

.data-hero__media,
.data-hero__media img,
.data-hero__grid {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.data-hero__media img {
    object-fit: cover;
    filter: brightness(.52) saturate(.72);
}

.data-hero__grid {
    background-image:
        linear-gradient(rgba(91, 125, 255, .17) 1px, transparent 1px),
        linear-gradient(90deg, rgba(91, 125, 255, .17) 1px, transparent 1px);
    background-size: 5rem 5rem;
    -webkit-mask-image: linear-gradient(90deg, #000, transparent 92%);
    mask-image: linear-gradient(90deg, #000, transparent 92%);
}

.data-hero__content {
    position: relative;
    display: flex;
    min-height: max(46rem, 100svh);
    padding-top: calc(var(--header-height) + 5rem);
    padding-bottom: 3rem;
    flex-direction: column;
    justify-content: center;
}

.data-hero__content h1 {
    max-width: 9ch;
    margin-top: 1.2rem;
}

.data-hero__content > p:not(.eyebrow) {
    max-width: 37rem;
    margin-top: 1.7rem;
    color: rgba(255, 255, 255, .72);
    font-size: clamp(1.04rem, 1.4vw, 1.3rem);
}

.data-hero__readout {
    position: absolute;
    right: 0;
    bottom: 3rem;
    display: grid;
    gap: .4rem;
    padding-left: 1.2rem;
    border-left: 2px solid var(--blue-bright);
    color: rgba(255, 255, 255, .67);
    font-family: Consolas, monospace;
    font-size: .6rem;
    letter-spacing: .1em;
}

.outputs {
    background: var(--paper);
    color: var(--ink);
}

.output-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1px;
    background: var(--line-light);
    border: 1px solid var(--line-light);
}

.output-card {
    min-width: 0;
    padding: clamp(1.1rem, 2.3vw, 2.3rem);
    background: var(--paper);
}

.output-card__visual {
    display: grid;
    aspect-ratio: 13 / 8;
    margin-bottom: 2rem;
    overflow: hidden;
    place-items: center;
    background: var(--ink);
}

.output-card__visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .7s var(--ease-out);
}

.output-card:hover .output-card__visual img {
    transform: scale(1.04);
}

.output-card > span {
    color: var(--blue);
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.output-card h3 {
    margin-top: 1rem;
    font-size: clamp(1.75rem, 2.6vw, 2.7rem);
}

.output-card p {
    margin-top: 1rem;
    color: var(--muted-light);
    font-size: .91rem;
}

.use-cases {
    background: var(--ink);
    color: var(--paper);
}

.use-case-list {
    border-top: 1px solid var(--line-dark);
}

.use-case-list article {
    display: grid;
    grid-template-columns: 5rem .8fr 1fr;
    gap: 1.5rem;
    min-height: 8.5rem;
    padding-block: 1.7rem;
    align-items: center;
    border-bottom: 1px solid var(--line-dark);
    transition: padding-left .4s var(--ease-out), background .3s;
}

.use-case-list article:hover {
    padding-left: 1rem;
    background: rgba(255, 255, 255, .025);
}

.use-case-list article > span {
    color: var(--blue-bright);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.use-case-list article h3 {
    font-size: clamp(1.9rem, 3vw, 3.1rem);
}

.use-case-list article p {
    max-width: 31rem;
    color: var(--muted-dark);
}

.location-callout--data {
    background: var(--blue);
}

.accuracy-note {
    background: var(--blue-pale);
    color: var(--ink);
}

.accuracy-note__inner {
    display: grid;
    grid-template-columns: .4fr 1fr .8fr;
    gap: clamp(2rem, 6vw, 6rem);
    padding-block: clamp(2.8rem, 5vw, 5rem);
    border-block: 1px solid rgba(36, 87, 255, .28);
}

.accuracy-note__inner h2 {
    max-width: 12ch;
    font-size: clamp(2.4rem, 4.3vw, 4.5rem);
}

.accuracy-note__inner > p:last-child {
    color: #4d5570;
}

/* Construction */
.coverage,
.industrial-link {
    background: var(--paper);
    color: var(--ink);
}

.coverage-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border-block: 1px solid var(--line-light);
}

.coverage-grid article {
    min-height: 21rem;
    padding: 1.6rem clamp(1rem, 2.4vw, 2.4rem) 2rem 0;
    border-right: 1px solid var(--line-light);
}

.coverage-grid article + article {
    padding-left: clamp(1rem, 2.4vw, 2.4rem);
}

.coverage-grid article:last-child {
    border: 0;
}

.coverage-grid article > span,
.cadence-track article > span {
    color: var(--blue);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.coverage-grid h3 {
    margin-top: 6rem;
    font-size: clamp(1.8rem, 2.8vw, 2.8rem);
}

.coverage-grid p {
    margin-top: 1rem;
    color: var(--muted-light);
    font-size: .91rem;
}

.cadence {
    background: var(--ink);
    color: var(--paper);
}

.cadence-track {
    position: relative;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(1.5rem, 4vw, 4rem);
    padding-top: 3rem;
}

.cadence-track::before {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 1px;
    background: var(--line-dark);
    content: "";
}

.cadence-track article {
    position: relative;
}

.cadence-track article::before {
    position: absolute;
    top: -3.4rem;
    left: 0;
    width: .8rem;
    height: .8rem;
    border: .2rem solid var(--ink);
    border-radius: 50%;
    background: var(--blue-bright);
    box-shadow: 0 0 0 1px var(--blue-bright);
    content: "";
}

.cadence-track h3 {
    margin-top: 3rem;
    font-size: clamp(1.8rem, 2.8vw, 2.8rem);
}

.cadence-track p {
    max-width: 25rem;
    margin-top: 1rem;
    color: var(--muted-dark);
}

.cadence__note {
    max-width: 45rem;
    margin-top: clamp(4rem, 7vw, 7rem);
    padding-left: 1.3rem;
    border-left: 2px solid var(--blue-bright);
    color: var(--muted-dark);
}

.industrial-link__inner {
    display: flex;
    min-height: 27rem;
    padding: clamp(2rem, 5vw, 5rem);
    justify-content: space-between;
    align-items: flex-end;
    background: var(--blue);
    color: var(--white);
    transition: background .35s;
}

.industrial-link__inner:hover {
    background: #1242e6;
}

.industrial-link__inner h2 {
    max-width: 11ch;
    margin-top: 1rem;
    font-size: clamp(2.8rem, 5.5vw, 5.7rem);
}

.industrial-link__inner p:not(.eyebrow) {
    max-width: 37rem;
    margin-top: 1.3rem;
    color: rgba(255, 255, 255, .72);
}

.industrial-link__inner > span {
    align-self: flex-start;
    font-size: 2rem;
    transition: transform .4s var(--ease-out);
}

.industrial-link__inner:hover > span {
    transform: translate(.4rem, -.4rem);
}

/* About */
.about-hero {
    padding-top: var(--header-height);
    background: var(--paper);
    color: var(--ink);
}

.about-hero__grid {
    display: grid;
    grid-template-columns: .9fr 1.1fr;
    min-height: min(60rem, calc(100svh - var(--header-height)));
    align-items: end;
}

.about-hero__copy {
    padding: clamp(5rem, 10vw, 9rem) clamp(2rem, 6vw, 7rem) clamp(4rem, 7vw, 7rem) 0;
}

.about-hero__copy h1 {
    max-width: 9ch;
    margin-top: 1.2rem;
    font-size: clamp(4rem, 7.4vw, 7.8rem);
}

.about-hero__copy > p:last-child {
    max-width: 35rem;
    margin-top: 1.7rem;
    color: var(--muted-light);
}

.about-hero__media {
    align-self: stretch;
    min-height: 44rem;
    overflow: hidden;
    background: var(--ink-soft);
}

.about-hero__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.about-story,
.client-section {
    background: var(--paper);
    color: var(--ink);
}

.about-story__grid {
    display: grid;
    grid-template-columns: .42fr 1fr .8fr;
    gap: clamp(2rem, 6vw, 6rem);
    padding-block: clamp(2rem, 4vw, 4rem);
    border-block: 1px solid var(--line-light);
}

.about-story__grid h2 {
    max-width: 11ch;
    font-size: clamp(2.7rem, 4.8vw, 5rem);
}

.about-story__grid > div p {
    margin-bottom: 1.4rem;
    color: var(--muted-light);
}

.direct-contact {
    background: var(--blue);
    color: var(--white);
}

.direct-contact__inner {
    max-width: 62rem;
}

.direct-contact__inner h2 {
    max-width: 11ch;
    margin-top: 1.2rem;
}

.direct-contact__inner > p:not(.eyebrow) {
    max-width: 43rem;
    margin-top: 1.8rem;
    color: rgba(255, 255, 255, .76);
}

.direct-contact__inner .text-link {
    margin-top: 2rem;
}

.client-list {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 2.5rem;
    margin-top: 3rem;
}

.client-list--large span {
    font-size: clamp(1.8rem, 4.3vw, 4.7rem);
    font-weight: 500;
    letter-spacing: -.04em;
    line-height: 1;
}

.client-list--large span:not(:last-child)::after {
    margin-left: 2.5rem;
    color: var(--blue);
    content: "·";
}

/* Contact */
.contact-page {
    min-height: 100svh;
    padding-block: calc(var(--header-height) + clamp(4rem, 8vw, 8rem)) clamp(5rem, 9vw, 9rem);
    background: var(--paper);
    color: var(--ink);
}

.contact-page__grid {
    display: grid;
    grid-template-columns: minmax(18rem, .75fr) minmax(0, 1.25fr);
    gap: clamp(4rem, 10vw, 11rem);
    align-items: start;
}

.contact-page__intro {
    position: sticky;
    top: calc(var(--header-height) + 3rem);
}

.contact-page__intro h1 {
    max-width: 8ch;
    margin-top: 1.2rem;
    font-size: clamp(3.6rem, 6.5vw, 7rem);
}

.contact-page__intro > p:not(.eyebrow) {
    max-width: 31rem;
    margin-top: 1.6rem;
    color: var(--muted-light);
}

.contact-page__direct {
    display: grid;
    gap: .35rem;
    margin-top: clamp(3rem, 8vw, 7rem);
    padding-top: 1.2rem;
    border-top: 1px solid var(--line-light);
}

.contact-page__direct span {
    color: var(--muted-light);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.contact-page__direct a {
    margin-bottom: 1.2rem;
    font-size: clamp(1.1rem, 2vw, 1.55rem);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: .3rem;
}

.contact-form-wrap {
    min-width: 0;
}

.contact-form {
    display: grid;
    gap: 2.3rem;
}

.form-row--two {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(1.3rem, 3vw, 2.5rem);
}

.field {
    position: relative;
    display: grid;
    gap: .6rem;
}

.field label {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.field label span {
    color: var(--blue);
}

.field label small {
    color: var(--muted-light);
    font-size: .58rem;
    font-weight: 600;
    letter-spacing: .08em;
}

.field input,
.field textarea {
    width: 100%;
    border: 0;
    border-bottom: 1px solid rgba(9, 11, 15, .34);
    border-radius: 0;
    padding: .9rem 0;
    background: transparent;
    color: var(--ink);
    outline: none;
    transition: border-color .25s, background .25s;
}

.field textarea {
    min-height: 10rem;
    resize: vertical;
}

.field input:focus,
.field textarea:focus {
    border-color: var(--blue);
}

.field input::placeholder,
.field textarea::placeholder {
    color: #96989d;
}

.field input[aria-invalid="true"],
.field textarea[aria-invalid="true"],
.field.has-error input,
.field.has-error textarea {
    border-color: var(--danger);
}

.field-error {
    color: var(--danger);
    font-size: .75rem;
}

.form-error-summary {
    padding: 1rem 1.2rem;
    border-left: .2rem solid var(--danger);
    background: rgba(189, 46, 55, .08);
    color: #801d24;
    font-size: .88rem;
}

.form-submit {
    display: flex;
    gap: 1.5rem;
    align-items: center;
}

.form-submit .button[disabled] {
    cursor: wait;
    opacity: .65;
}

.form-submit p {
    max-width: 23rem;
    color: var(--muted-light);
    font-size: .72rem;
}

.form-submit p a {
    text-decoration: underline;
}

.honeypot {
    position: absolute !important;
    overflow: hidden;
    width: 1px;
    height: 1px;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

.form-success {
    min-height: 35rem;
    padding: clamp(2rem, 5vw, 5rem);
    background: var(--blue-pale);
}

.form-success > span {
    display: grid;
    width: 3.5rem;
    height: 3.5rem;
    margin-bottom: clamp(5rem, 10vw, 9rem);
    border-radius: 50%;
    place-items: center;
    background: var(--blue);
    color: var(--white);
}

.form-success h2 {
    max-width: 9ch;
    margin-top: 1rem;
    font-size: clamp(2.8rem, 5vw, 5rem);
}

.form-success > p:not(.eyebrow) {
    margin-top: 1.3rem;
    color: var(--muted-light);
}

.form-success .text-link {
    margin-top: 2.5rem;
}

/* Legal and 404 */
.legal-page {
    min-height: 80svh;
    padding-top: calc(var(--header-height) + var(--section));
    background: var(--paper);
    color: var(--ink);
}

.legal-page h1 {
    margin-block: 1rem .7rem;
    font-size: clamp(3.5rem, 7vw, 6.5rem);
}

.legal-page__updated {
    margin-bottom: clamp(4rem, 8vw, 7rem);
    color: var(--muted-light);
    font-size: .75rem;
}

.legal-page h2 {
    margin-block: 3rem 1rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--line-light);
    font-size: clamp(1.8rem, 3vw, 2.7rem);
}

.legal-page p:not(.eyebrow) {
    max-width: 45rem;
    color: var(--muted-light);
}

.legal-page a {
    color: var(--blue);
    text-decoration: underline;
}

.not-found {
    display: flex;
    min-height: 100svh;
    padding-top: var(--header-height);
    align-items: center;
    background:
        radial-gradient(circle at 80% 20%, rgba(36, 87, 255, .22), transparent 35%),
        var(--ink);
}

.not-found h1 {
    max-width: 9ch;
    margin-top: 1rem;
}

.not-found p:not(.eyebrow) {
    margin-block: 1.5rem 2.3rem;
    color: var(--muted-dark);
}

/* Project detail foundations */
.project-film-hero {
    position: relative;
    min-height: max(43rem, 100svh);
    background: var(--ink);
}

.project-film-hero__media,
.project-film-hero__media video,
.project-film-hero__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.project-film-hero__media video,
.project-film-hero__media img {
    object-fit: cover;
}

.project-film-hero__media::after {
    position: absolute;
    z-index: 1;
    inset: 0;
    background: linear-gradient(0deg, rgba(4, 5, 8, .76), transparent 58%);
    content: "";
    pointer-events: none;
}

.project-film-hero__title {
    position: absolute;
    z-index: 2;
    right: 0;
    bottom: clamp(2.5rem, 6vw, 6rem);
    left: 0;
}

.project-film-hero__title h1 {
    max-width: 11ch;
    margin-top: 1rem;
    font-size: clamp(3.8rem, 8.5vw, 9rem);
}

.project-intro,
.project-meta-section,
.project-story,
.deliverables {
    background: var(--paper);
    color: var(--ink);
}

.project-intro__grid {
    display: grid;
    grid-template-columns: 1.15fr .85fr;
    gap: clamp(3rem, 8vw, 9rem);
}

.project-intro__grid h2 {
    max-width: 14ch;
    margin-top: 1rem;
    font-size: clamp(2.5rem, 4.8vw, 5rem);
}

.project-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem 2rem;
    align-content: start;
    padding-top: .3rem;
}

.project-meta div {
    padding-top: .8rem;
    border-top: 1px solid var(--line-light);
}

.project-meta dt {
    margin-bottom: .4rem;
    color: var(--muted-light);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .11em;
    text-transform: uppercase;
}

.project-meta dd {
    font-size: .9rem;
    font-weight: 600;
}

.project-story__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-top: 1px solid var(--line-light);
}

.project-story article {
    min-height: 24rem;
    padding: 1.5rem clamp(1rem, 3vw, 3rem) 2rem 0;
    border-right: 1px solid var(--line-light);
}

.project-story article + article {
    padding-left: clamp(1rem, 3vw, 3rem);
}

.project-story article:last-child {
    border: 0;
}

.project-story article > span {
    color: var(--blue);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.project-story h2 {
    margin-top: 6.5rem;
    font-size: clamp(2rem, 3.4vw, 3.4rem);
}

.project-story p {
    max-width: 31rem;
    margin-top: 1.2rem;
    color: var(--muted-light);
}

.project-gallery {
    background: var(--ink);
}

.project-gallery__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
}

.project-gallery figure {
    min-width: 0;
}

.project-gallery figure.is-wide {
    grid-column: 1 / -1;
}

.project-gallery a {
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--ink-soft);
    cursor: zoom-in;
}

.project-gallery figure.is-wide a {
    aspect-ratio: 16 / 8.5;
}

.project-gallery img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .9s var(--ease-out), filter .5s;
}

.project-gallery a:hover img {
    filter: saturate(1.07);
    transform: scale(1.025);
}

.page-project .related-work {
    border-top: 1px solid var(--line-light);
    background: var(--paper);
    color: var(--ink);
}

.deliverables__grid {
    display: grid;
    grid-template-columns: 1fr .8fr;
    gap: clamp(3rem, 9vw, 10rem);
    padding-block: clamp(2rem, 5vw, 5rem);
    border-block: 1px solid var(--line-light);
}

.deliverables__grid h2 {
    max-width: 10ch;
    margin-top: 1rem;
    font-size: clamp(2.7rem, 4.8vw, 5rem);
}

.deliverables ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.deliverables li {
    position: relative;
    padding: .9rem 0 .9rem 2rem;
    border-bottom: 1px solid var(--line-light);
}

.deliverables li::before {
    position: absolute;
    top: 1.25rem;
    left: 0;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--blue);
    content: "";
}

.editorial-hero {
    display: grid;
    grid-template-columns: .75fr 1.25fr;
    min-height: 100svh;
    padding-top: calc(var(--header-height) + 3rem);
    gap: clamp(2rem, 6vw, 6rem);
    align-items: center;
    background: var(--paper);
    color: var(--ink);
}

.project-page--editorial {
    background: var(--paper);
}

.editorial-hero__copy {
    padding-block: 5rem;
}

.editorial-hero__copy h1 {
    max-width: 9ch;
    margin-top: 1.2rem;
    font-size: clamp(3.7rem, 7vw, 7.7rem);
}

.editorial-hero__copy > p:last-child {
    max-width: 30rem;
    margin-top: 1.5rem;
    color: var(--muted-light);
}

.editorial-hero__image {
    align-self: stretch;
    min-height: 45rem;
    overflow: hidden;
}

.editorial-hero__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.editorial-film {
    background: var(--ink);
}

.editorial-film video {
    width: 100%;
    max-height: 86svh;
    background: #000;
}

.project-gallery--editorial .project-gallery__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.project-gallery--editorial figure,
.project-gallery--editorial figure:nth-child(3n) {
    grid-column: auto;
}

.project-gallery--editorial figure.is-wide {
    grid-column: 1 / -1;
}

.field-hero {
    padding-block: calc(var(--header-height) + clamp(4rem, 8vw, 8rem)) clamp(4rem, 8vw, 8rem);
    background: var(--paper);
    color: var(--ink);
}

.field-hero__grid {
    display: grid;
    grid-template-columns: .8fr 1.2fr;
    gap: clamp(3rem, 7vw, 8rem);
    align-items: center;
}

.field-hero__copy h1 {
    max-width: 9ch;
    margin-top: 1.2rem;
    font-size: clamp(3.6rem, 6.5vw, 7rem);
}

.field-hero__copy > p:not(.eyebrow) {
    max-width: 33rem;
    margin-top: 1.5rem;
    color: var(--muted-light);
}

.field-hero__copy .project-meta {
    margin-top: clamp(3rem, 6vw, 6rem);
}

.field-hero__image {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--ink-soft);
}

.field-hero__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.field-hero__overlay {
    position: absolute;
    right: .8rem;
    bottom: .8rem;
    left: .8rem;
    display: flex;
    padding: .65rem .8rem;
    justify-content: space-between;
    background: rgba(9, 11, 15, .8);
    color: var(--white);
    font-family: Consolas, monospace;
    font-size: .58rem;
    letter-spacing: .1em;
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.progress-films {
    background: var(--ink);
}

.progress-films__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(1rem, 3vw, 3rem);
}

.progress-films video {
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #000;
}

.progress-films figcaption {
    margin-top: .8rem;
    color: var(--muted-dark);
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

/* CTA panel */
.cta-panel {
    background: var(--paper);
    color: var(--ink);
}

.cta-panel__inner {
    display: flex;
    min-height: clamp(30rem, 52vw, 45rem);
    padding: clamp(2rem, 6vw, 6rem);
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-end;
    background:
        radial-gradient(circle at 85% 18%, rgba(255, 255, 255, .14), transparent 25%),
        var(--blue);
    color: var(--white);
}

.cta-panel__inner h2 {
    max-width: 10ch;
    margin-top: 1.2rem;
    font-size: clamp(3.2rem, 7.6vw, 8rem);
}

.cta-panel__inner > p:not(.eyebrow) {
    max-width: 39rem;
    margin-top: 1.5rem;
    color: rgba(255, 255, 255, .74);
}

.cta-panel__inner .button {
    margin-top: 2.2rem;
}

/* Footer */
.site-footer {
    padding-block: clamp(5rem, 9vw, 9rem) 2rem;
    background: var(--ink);
    color: var(--paper);
}

.site-footer__lead {
    padding-bottom: clamp(4rem, 9vw, 9rem);
}

.site-footer__headline {
    display: flex;
    margin-top: 1.2rem;
    justify-content: space-between;
    align-items: flex-end;
    border-bottom: 1px solid var(--line-dark);
    padding-bottom: .4rem;
    font-size: clamp(3.3rem, 8vw, 8.5rem);
    font-weight: 500;
    letter-spacing: -.055em;
    line-height: .95;
    transition: color .3s, padding-left .5s var(--ease-out);
}

.site-footer__headline:hover {
    padding-left: .5rem;
    color: var(--blue-bright);
}

.site-footer__headline span:last-child {
    font-size: .45em;
}

.site-footer__grid {
    display: grid;
    grid-template-columns: 2.2fr repeat(3, 1fr);
    gap: 2.5rem;
    padding-block: 2.5rem;
    border-top: 1px solid var(--line-dark);
}

.site-footer__grid > div {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.wordmark--footer {
    margin-bottom: 1.2rem;
}

.site-footer__grid > div:first-child p {
    max-width: 24rem;
    color: var(--muted-dark);
    font-size: .83rem;
}

.footer-label {
    margin-bottom: 1rem;
    color: var(--muted-dark);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.site-footer__grid > div:not(:first-child) a {
    padding-block: .2rem;
    color: #c3c6ce;
    font-size: .8rem;
    transition: color .2s, transform .25s var(--ease-out);
}

.site-footer__grid > div:not(:first-child) a:hover {
    color: var(--white);
    transform: translateX(.18rem);
}

.site-footer__bottom {
    display: flex;
    padding-top: 1.3rem;
    justify-content: space-between;
    border-top: 1px solid var(--line-dark);
    color: var(--muted-dark);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
}

/* Video modal */
.media-modal,
.image-lightbox {
    position: fixed;
    z-index: 5000;
    inset: 0;
    display: grid;
    visibility: hidden;
    place-items: center;
    opacity: 0;
    transition: opacity .35s, visibility .35s;
}

.media-modal.is-open,
.image-lightbox.is-open {
    visibility: visible;
    opacity: 1;
}

.media-modal__backdrop,
.image-lightbox__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(2, 3, 5, .91);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.media-modal__dialog {
    position: relative;
    z-index: 1;
    width: min(calc(100% - 2rem), 88rem);
    background: #000;
    box-shadow: 0 2rem 8rem #000;
    opacity: 0;
    transform: translateY(1.5rem) scale(.98);
    transition: opacity .35s, transform .55s var(--ease-out);
}

.media-modal.is-open .media-modal__dialog {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.media-modal__video {
    width: 100%;
    max-height: 88svh;
    aspect-ratio: 16 / 9;
    background: #000;
}

.media-modal__close,
.image-lightbox__close {
    position: absolute;
    z-index: 3;
    top: -2.8rem;
    right: 0;
    padding: .55rem 0;
    background: transparent;
    color: var(--white);
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    cursor: pointer;
}

/* JS-created image lightbox */
.image-lightbox__dialog {
    position: relative;
    z-index: 1;
    display: grid;
    width: min(calc(100% - 8rem), 104rem);
    height: min(86svh, 70rem);
    place-items: center;
    opacity: 0;
    transform: translateY(1rem) scale(.985);
    transition: opacity .35s, transform .55s var(--ease-out);
}

.image-lightbox.is-open .image-lightbox__dialog {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.image-lightbox__image {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.image-lightbox__controls {
    position: absolute;
    right: 0;
    bottom: -2.8rem;
    left: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: var(--white);
}

.image-lightbox__counter {
    color: rgba(255, 255, 255, .65);
    font-size: .63rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.image-lightbox__nav {
    display: flex;
    gap: .5rem;
}

.image-lightbox__nav button {
    display: grid;
    width: 2.4rem;
    height: 2.4rem;
    border: 1px solid rgba(255, 255, 255, .45);
    place-items: center;
    background: transparent;
    color: var(--white);
    cursor: pointer;
    transition: background .25s, border-color .25s;
}

.image-lightbox__nav button:hover {
    border-color: var(--blue-bright);
    background: var(--blue);
}

/* Progressive reveal: no-JS stays fully visible */
.js.reveal-ready [data-reveal] {
    opacity: 0;
    transform: translateY(1.6rem);
    transition: opacity .75s var(--ease-out), transform .9s var(--ease-out);
}

.js.reveal-ready [data-reveal].is-revealed {
    opacity: 1;
    transform: translateY(0);
}

.js.reveal-ready [data-reveal]:nth-child(2) { transition-delay: .06s; }
.js.reveal-ready [data-reveal]:nth-child(3) { transition-delay: .12s; }
.js.reveal-ready [data-reveal]:nth-child(4) { transition-delay: .18s; }
.js.reveal-ready [data-reveal]:nth-child(5) { transition-delay: .24s; }
.js.reveal-ready [data-reveal]:nth-child(6) { transition-delay: .3s; }

@media (max-width: 1120px) {
    :root {
        --header-height: 5rem;
    }

    .menu-toggle {
        display: flex;
    }

    .primary-navigation {
        position: fixed;
        z-index: 1;
        inset: 0;
        display: flex;
        padding: calc(var(--header-height) + 2rem) var(--gutter) 2.5rem;
        visibility: hidden;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        overflow-y: auto;
        background: var(--ink);
        color: var(--white);
        opacity: 0;
        transform: translateY(-1.5rem);
        transition: opacity .35s, transform .5s var(--ease-out), visibility .35s;
    }

    .site-header.is-menu-open .primary-navigation {
        visibility: visible;
        opacity: 1;
        transform: translateY(0);
    }

    .nav-link,
    .nav-group__trigger .nav-link {
        flex: 1;
        padding-block: 1.1rem;
        border-bottom: 1px solid var(--line-dark);
        font-size: clamp(1.8rem, 5.5vw, 3.4rem);
        font-weight: 500;
        letter-spacing: -.045em;
        line-height: 1;
        text-transform: none;
    }

    .nav-link::after { display: none; }

    .nav-group__trigger button {
        width: 3.5rem;
        height: 100%;
        border-bottom: 1px solid var(--line-dark);
        font-size: 1.4rem;
    }

    .nav-submenu {
        position: static;
        width: 100%;
        max-height: 0;
        padding: 0;
        visibility: hidden;
        overflow: hidden;
        background: transparent;
        box-shadow: none;
        color: var(--white);
        opacity: 1;
        transform: none;
        transition: max-height .5s var(--ease-out), visibility .5s;
    }

    .nav-submenu a {
        padding: .8rem .4rem;
        border-color: var(--line-dark);
        color: #c7cad2;
    }

    .nav-submenu a:hover {
        padding-left: .7rem;
        background: rgba(255, 255, 255, .05);
    }

    .nav-group:hover .nav-submenu,
    .nav-group:focus-within .nav-submenu {
        visibility: hidden;
        max-height: 0;
    }

    .nav-group.is-open .nav-submenu {
        visibility: visible;
        max-height: 14rem;
    }

    .nav-cta {
        margin-top: 2rem;
        align-self: flex-start;
        border-color: var(--white);
        color: var(--white);
    }

    .solutions-bridge__intro,
    .about-story__grid,
    .accuracy-note__inner,
    .aerial-note__inner {
        grid-template-columns: .4fr 1fr;
    }

    .solutions-bridge__intro > p:last-child,
    .about-story__grid > div,
    .accuracy-note__inner > p:last-child,
    .aerial-note__inner > p:not(.eyebrow),
    .aerial-note__inner .text-link {
        grid-column: 2;
    }

    .process-list--five {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .process-list--five li:nth-child(3) {
        border-right: 0;
    }

    .process-list--five li:nth-child(n + 4) {
        border-top: 1px solid var(--line-light);
    }

    .output-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .coverage-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .coverage-grid article:nth-child(2) { border-right: 0; }
    .coverage-grid article:nth-child(n + 3) { border-top: 1px solid var(--line-light); }

    .contact-page__grid {
        gap: clamp(3rem, 7vw, 6rem);
    }

    /* With scripts disabled, expose the full navigation instead of a dead toggle. */
    .no-js .site-header {
        position: relative;
        height: auto;
        background: var(--ink);
        color: var(--white);
    }

    .no-js .site-header__inner {
        padding-block: 1rem 1.5rem;
        align-items: flex-start;
        flex-direction: column;
    }

    .no-js .menu-toggle {
        display: none;
    }

    .no-js .primary-navigation {
        position: static;
        width: 100%;
        padding: 1.5rem 0 0;
        visibility: visible;
        overflow: visible;
        background: transparent;
        opacity: 1;
        transform: none;
    }

    .no-js .nav-submenu,
    .no-js .nav-group:hover .nav-submenu,
    .no-js .nav-group:focus-within .nav-submenu {
        max-height: none;
        visibility: visible;
    }

    .no-js .nav-group__trigger button {
        display: none;
    }
}

@media (max-width: 820px) {
    :root {
        --gutter: 1.1rem;
        --section: clamp(4.5rem, 16vw, 7rem);
    }

    h1 { font-size: clamp(3.3rem, 16vw, 6rem); }
    h2 { font-size: clamp(2.6rem, 12vw, 4.7rem); }

    .section-heading {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }

    .section-heading > p,
    .section-heading > .text-link {
        justify-self: start;
    }

    .hero {
        min-height: max(41rem, 100svh);
    }

    .hero__content {
        min-height: max(41rem, 100svh);
        padding-top: calc(var(--header-height) + 4rem);
        padding-bottom: 7rem;
        align-content: end;
    }

    .hero__shade {
        background:
            linear-gradient(0deg, rgba(4, 5, 8, .84) 0%, rgba(4, 5, 8, .25) 78%),
            linear-gradient(90deg, rgba(4, 5, 8, .35), transparent);
    }

    .hero__copy h1 {
        max-width: 8.5ch;
        font-size: clamp(3.5rem, 16vw, 6.6rem);
    }

    .hero__intro {
        font-size: .98rem;
    }

    .showreel-button {
        right: var(--gutter);
        bottom: 1.4rem;
    }

    .hero__scroll {
        bottom: 1.8rem;
    }

    .discipline-grid {
        grid-template-columns: 1fr;
        gap: 3.5rem;
    }

    .discipline-card__media {
        aspect-ratio: 4 / 4.6;
    }

    .client-line {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }

    .client-line > div {
        justify-content: flex-start;
    }

    .project-grid {
        grid-template-columns: 1fr;
        gap: 3.8rem;
    }

    .project-card--large {
        grid-column: auto;
    }

    .project-card--large .project-card__media,
    .project-card__media {
        aspect-ratio: 4 / 3;
    }

    .project-card__content {
        grid-template-columns: 1fr;
    }

    .project-card__content > p {
        max-width: 32rem;
    }

    .solutions-bridge__intro,
    .about-story__grid,
    .accuracy-note__inner,
    .aerial-note__inner {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }

    .solutions-bridge__intro > p:last-child,
    .about-story__grid > div,
    .accuracy-note__inner > p:last-child,
    .aerial-note__inner > p:not(.eyebrow),
    .aerial-note__inner .text-link {
        grid-column: auto;
    }

    .solution-links {
        grid-template-columns: 1fr;
    }

    .solution-link {
        min-height: 24rem;
    }

    .solution-link h3 {
        margin-top: 7rem;
    }

    .page-hero--split {
        display: flex;
        min-height: 0;
        flex-direction: column;
    }

    .page-hero__copy {
        min-height: 38rem;
        padding-block: 5rem 4rem;
    }

    .page-hero__copy h1 {
        font-size: clamp(3.6rem, 15vw, 6rem);
    }

    .page-hero__media {
        min-height: 68svh;
    }

    .page-hero--compact {
        min-height: 35rem;
        padding-bottom: 4rem;
    }

    .capability-grid {
        grid-template-columns: 1fr;
    }

    .capability-card,
    .capability-card:nth-child(even) {
        min-height: 0;
        padding: 1.7rem 0 3rem;
        border-right: 0;
    }

    .location-callout__inner {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .location-callout__inner > div:last-child {
        padding-top: 0;
    }

    .process-list,
    .process-list--five {
        grid-template-columns: 1fr;
    }

    .process-list li,
    .process-list li + li,
    .process-list--five li:nth-child(n + 4) {
        display: grid;
        grid-template-columns: 3rem 1fr;
        min-height: 0;
        gap: .6rem 1.2rem;
        padding: 1.6rem 0 2rem;
        border: 0;
        border-bottom: 1px solid var(--line-light);
    }

    .process-list li > span {
        grid-row: 1 / 3;
        margin: .2rem 0 0;
    }

    .process-list h3,
    .process-list p {
        margin: 0;
    }

    .filter-bar {
        flex-wrap: nowrap;
        margin-right: calc(-1 * var(--gutter));
        margin-left: calc(-1 * var(--gutter));
        padding-inline: var(--gutter);
        overflow-x: auto;
        scroll-snap-type: x proximity;
        scrollbar-width: none;
    }

    .filter-bar::-webkit-scrollbar { display: none; }

    .filter-bar--sticky {
        top: var(--header-height);
        width: auto;
        max-width: none;
        padding-block: .55rem;
        border-inline: 0;
    }

    .filter-chip {
        flex: 0 0 auto;
        scroll-snap-align: start;
    }

    .photo-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .55rem;
    }

    .photo-item,
    .photo-item--wide {
        grid-column: span 1;
    }

    .photo-item--wide {
        grid-column: 1 / -1;
    }

    .photo-item a,
    .photo-item img {
        min-height: 0;
        aspect-ratio: 4 / 5;
    }

    .photo-item--wide a,
    .photo-item--wide img {
        aspect-ratio: 16 / 10;
    }

    .data-hero__content {
        padding-bottom: 6.5rem;
        justify-content: flex-end;
    }

    .data-hero__readout {
        right: auto;
        bottom: 1.5rem;
        left: 0;
    }

    .output-grid {
        grid-template-columns: 1fr;
    }

    .use-case-list article {
        grid-template-columns: 3rem 1fr;
        gap: .7rem 1rem;
        padding-block: 1.5rem;
    }

    .use-case-list article p {
        grid-column: 2;
    }

    .coverage-grid {
        grid-template-columns: 1fr;
    }

    .coverage-grid article,
    .coverage-grid article + article,
    .coverage-grid article:nth-child(n + 3) {
        min-height: 0;
        padding: 1.5rem 0 2.5rem;
        border: 0;
        border-bottom: 1px solid var(--line-light);
    }

    .coverage-grid h3 {
        margin-top: 3rem;
    }

    .cadence-track {
        grid-template-columns: 1fr;
        gap: 3rem;
        padding: 0 0 0 2rem;
    }

    .cadence-track::before {
        top: 0;
        right: auto;
        bottom: 0;
        left: 0;
        width: 1px;
        height: auto;
    }

    .cadence-track article::before {
        top: .1rem;
        left: -2.4rem;
    }

    .cadence-track h3 {
        margin-top: 1rem;
    }

    .industrial-link__inner {
        min-height: 29rem;
        padding: 2rem;
    }

    .industrial-link__inner h2 {
        font-size: clamp(2.8rem, 12vw, 4.5rem);
    }

    .about-hero__grid,
    .editorial-hero,
    .field-hero__grid {
        grid-template-columns: 1fr;
    }

    .about-hero__grid {
        min-height: 0;
    }

    .about-hero__copy {
        padding: 5rem 0 4rem;
    }

    .about-hero__media {
        min-height: 75svh;
    }

    .client-list--large span:not(:last-child)::after {
        margin-left: 1rem;
    }

    .contact-page__grid {
        grid-template-columns: 1fr;
    }

    .contact-page__intro {
        position: static;
    }

    .contact-page__direct {
        margin-top: 2.5rem;
    }

    .form-row--two {
        grid-template-columns: 1fr;
    }

    .form-submit {
        align-items: flex-start;
        flex-direction: column;
    }

    .project-intro__grid,
    .deliverables__grid {
        grid-template-columns: 1fr;
    }

    .project-story__grid {
        grid-template-columns: 1fr;
    }

    .project-story article,
    .project-story article + article {
        min-height: 0;
        padding: 1.5rem 0 3rem;
        border: 0;
        border-bottom: 1px solid var(--line-light);
    }

    .project-story h2 {
        margin-top: 3.5rem;
    }

    .project-gallery__grid,
    .progress-films__grid {
        grid-template-columns: 1fr;
    }

    .project-gallery figure.is-wide {
        grid-column: auto;
    }

    .project-gallery figure.is-wide a,
    .project-gallery a {
        aspect-ratio: 4 / 3;
    }

    .editorial-hero {
        min-height: 0;
        padding-top: calc(var(--header-height) + 4rem);
        gap: 0;
    }

    .editorial-hero__copy {
        padding-bottom: 4rem;
    }

    .editorial-hero__image {
        min-height: 72svh;
    }

    .project-gallery--editorial .project-gallery__grid {
        display: grid;
        grid-template-columns: 1fr;
    }

    .project-gallery--editorial figure,
    .project-gallery--editorial figure:nth-child(3n),
    .project-gallery--editorial figure.is-wide {
        grid-column: auto;
    }

    .field-hero {
        padding-bottom: 0;
    }

    .field-hero__image {
        aspect-ratio: 4 / 3;
    }

    .site-footer__grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 3rem 1.5rem;
    }

    .site-footer__grid > div:first-child {
        grid-column: 1 / -1;
    }

    .image-lightbox__dialog {
        width: calc(100% - 2rem);
        height: 78svh;
    }
}

@media (max-width: 520px) {
    .hero__scroll {
        display: none;
    }

    .showreel-button {
        right: auto;
        left: var(--gutter);
    }

    .hero__copy .button-row {
        margin-bottom: 1rem;
    }

    .discipline-card__copy {
        grid-template-columns: 1fr;
    }

    .discipline-card__copy span {
        grid-column: 1;
        grid-row: auto;
        margin-top: .3rem;
    }

    .project-card__arrow {
        display: none;
    }

    .photo-grid {
        grid-template-columns: 1fr;
    }

    .photo-item,
    .photo-item--wide {
        grid-column: auto;
    }

    .photo-item a,
    .photo-item img,
    .photo-item--wide a,
    .photo-item--wide img {
        aspect-ratio: 4 / 4.5;
    }

    .project-meta {
        grid-template-columns: 1fr;
    }

    .project-film-hero__title h1 {
        font-size: clamp(3.1rem, 15vw, 5rem);
    }

    .site-footer__headline {
        font-size: clamp(2.7rem, 13.5vw, 4.5rem);
    }

    .site-footer__grid {
        grid-template-columns: 1fr 1fr;
    }

    .site-footer__grid > div:nth-child(4) {
        grid-column: 1 / -1;
    }

    .site-footer__bottom {
        gap: .8rem;
        align-items: flex-start;
        flex-direction: column;
    }

    .media-modal__dialog {
        width: calc(100% - 1rem);
    }

    .media-modal__close {
        top: -2.4rem;
    }
}

/* Second-pass visual direction: cinematic media, softer geometry and less template rhythm. */
:root {
    --card-radius: clamp(1.1rem, 2.2vw, 2rem);
    --small-radius: .9rem;
}

.button,
.filter-chip,
.showreel-button {
    border-radius: 999px;
}

.hero--home {
    padding: 0;
}

.hero--home .hero__media {
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    border-radius: 0;
}

.page-hero__media,
.about-hero__media,
.editorial-hero__image,
.field-hero__image,
.project-card__media,
.discipline-card__media,
.industrial-link__inner,
.progress-films video,
.editorial-film video {
    overflow: hidden;
    border-radius: var(--card-radius);
}

.page-drone .page-hero__media,
.page-video .page-hero__media {
    border-radius: var(--card-radius) 0 0 var(--card-radius);
}

.archive-filter-heading {
    margin-bottom: .9rem;
}

.filter-bar + .archive-filter-heading {
    margin-top: 2.4rem;
}

.discipline-card__media {
    position: relative;
}

.discipline-card__media video {
    position: absolute;
    z-index: 1;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transform: scale(1.035);
    transition: opacity .35s, transform .8s var(--ease-out);
}

.discipline-card.is-previewing .discipline-card__media video {
    opacity: 1;
    transform: scale(1);
}

.discipline-card.is-previewing .discipline-card__media img {
    opacity: 0;
}

.client-logo-section {
    padding-block: clamp(1.75rem, 3.5vw, 3rem);
    overflow: hidden;
    background: #e9e7e1;
    color: var(--ink);
}

.client-logo-row {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: clamp(2rem, 5vw, 6rem);
    align-items: center;
}

.client-logo-heading {
    max-width: 17rem;
    font-size: clamp(.84rem, 1vw, 1rem);
    font-weight: 650;
    letter-spacing: .02em;
    line-height: 1.35;
}

.client-logo-marquee {
    min-width: 0;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.client-logo-track {
    --logo-gap: clamp(2.5rem, 5vw, 5rem);
    --logo-half-gap: clamp(1.25rem, 2.5vw, 2.5rem);
    display: flex;
    width: max-content;
    gap: var(--logo-gap);
    animation: client-logos-right 34s linear infinite;
    will-change: transform;
}

.client-logo-marquee:hover .client-logo-track,
.client-logo-marquee:focus-within .client-logo-track {
    animation-play-state: paused;
}

.client-logo-list {
    display: flex;
    margin: 0;
    padding: 0;
    align-items: center;
    gap: var(--logo-gap);
    list-style: none;
}

.client-logo-list li {
    display: grid;
    width: clamp(6.5rem, 9vw, 9rem);
    height: 3.5rem;
    flex: 0 0 auto;
    place-items: center;
}

.client-logo-list img {
    width: 100%;
    max-height: 3.2rem;
    object-fit: contain;
    filter: grayscale(1);
    opacity: .72;
}

@keyframes client-logos-right {
    from { transform: translateX(calc(-50% - var(--logo-half-gap))); }
    to { transform: translateX(0); }
}

.capability-showcase {
    display: grid;
    gap: clamp(4rem, 9vw, 9rem);
    margin-top: clamp(3rem, 6vw, 6rem);
}

.capability-feature {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(18rem, .7fr);
    gap: clamp(2rem, 6vw, 7rem);
    align-items: center;
}

.capability-feature:nth-child(even) .capability-feature__media {
    grid-column: 2;
    grid-row: 1;
}

.capability-feature:nth-child(even) .capability-feature__copy {
    grid-column: 1;
    grid-row: 1;
}

.capability-feature__media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border-radius: var(--card-radius);
    background: var(--ink-soft);
}

.capability-feature__media img,
.capability-feature__media video {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.capability-feature__copy > span {
    display: inline-grid;
    width: 2.6rem;
    height: 2.6rem;
    border: 1px solid var(--line-light);
    border-radius: 50%;
    place-items: center;
    color: var(--blue);
    font-size: .66rem;
    font-weight: 700;
}

.capability-feature__copy h3 {
    max-width: 10ch;
    margin-top: 2rem;
    font-size: clamp(2.8rem, 5.2vw, 6rem);
}

.capability-feature__copy p {
    max-width: 34rem;
    margin-top: 1.2rem;
    color: var(--muted-light);
}

.capability-feature__copy strong {
    display: block;
    max-width: 32rem;
    margin-top: 1.8rem;
    padding-top: 1.1rem;
    border-top: 1px solid var(--line-light);
    font-size: .94rem;
    font-weight: 650;
}

.port-planning {
    background: #dce4ff;
    color: var(--ink);
}

.port-planning__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(19rem, .75fr);
    gap: clamp(2.5rem, 7vw, 8rem);
    align-items: center;
}

.port-planning__map {
    overflow: hidden;
    border-radius: var(--card-radius);
    background: var(--ink);
}

.port-planning__map img {
    display: block;
    width: 100%;
}

.port-planning__map figcaption,
.construction-proof figcaption {
    padding: .75rem 1rem;
    color: var(--muted-dark);
    font-size: .63rem;
    letter-spacing: .04em;
}

.port-planning__copy h2 {
    max-width: 10ch;
    margin-top: 1rem;
}

.port-planning__copy p:not(.eyebrow) {
    margin-top: 1.2rem;
    color: #4e5563;
}

.port-planning__copy .text-link {
    margin-top: 2rem;
}

.industrial-benefits {
    background: var(--blue);
    color: #fff;
}

.industrial-benefits__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.industrial-benefits article {
    min-height: 22rem;
    padding: clamp(2rem, 4vw, 4rem);
    border-right: 1px solid rgba(255,255,255,.25);
}

.industrial-benefits article:last-child { border-right: 0; }
.industrial-benefits article > span { font-size: .64rem; letter-spacing: .12em; }
.industrial-benefits h2 { margin-top: clamp(5rem, 9vw, 9rem); font-size: clamp(2rem, 3.5vw, 4rem); }
.industrial-benefits p { margin-top: 1rem; color: rgba(255,255,255,.76); }

.construction-proof__media {
    overflow: hidden;
    border-radius: var(--card-radius);
    background: var(--ink);
}

.construction-proof video {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 8;
    object-fit: cover;
}

.project-film-hero.shell {
    min-height: 0;
    padding-top: calc(var(--header-height) + clamp(4rem, 8vw, 8rem));
    padding-bottom: clamp(3rem, 7vw, 7rem);
}

.project-film-hero__title {
    position: static;
    padding-bottom: clamp(2rem, 5vw, 4rem);
}

.project-film-hero__title h1 {
    max-width: 12ch;
    font-size: clamp(3.5rem, 8vw, 8.5rem);
}

.project-film-hero__title > p:last-child {
    max-width: 38rem;
    margin-top: 1.2rem;
    color: var(--muted-dark);
}

.project-film-hero__media {
    position: relative;
    inset: auto;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: var(--card-radius);
}

.project-film-hero__media video,
.project-film-hero__media img {
    position: absolute;
}

.project-film-hero__media::after { display: none; }

.project-quick-view {
    position: fixed;
    z-index: 2200;
    inset: 0;
    display: grid;
    padding: clamp(.6rem, 2vw, 1.5rem);
    visibility: hidden;
    place-items: center;
    opacity: 0;
    transition: opacity .3s, visibility .3s;
}

.project-quick-view.is-open { visibility: visible; opacity: 1; }
.project-quick-view__backdrop { position: absolute; inset: 0; background: rgba(5,6,8,.88); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.project-quick-view__dialog { position: relative; display: grid; width: min(92rem, 100%); max-height: calc(100svh - 2rem); overflow: auto; border-radius: var(--card-radius); background: var(--paper); color: var(--ink); box-shadow: var(--shadow); }
.project-quick-view__media { position: relative; height: min(60svh, 44rem); min-height: 0; overflow: hidden; border-radius: var(--card-radius) var(--card-radius) 0 0; background: var(--ink); }
.project-quick-view__media video,
.project-quick-view__media img { width: 100%; height: 100%; object-fit: cover; }
.project-quick-view__copy { display: grid; grid-template-columns: 1fr auto; gap: 1rem 3rem; padding: clamp(1.4rem, 3vw, 3rem); align-items: end; }
.project-quick-view__copy h2 { margin-top: .7rem; font-size: clamp(2.3rem, 5vw, 5.5rem); }
.project-quick-view__copy p:last-child { max-width: 34rem; color: var(--muted-light); }
.project-quick-view__close { position: absolute; z-index: 3; top: 1rem; right: 1rem; padding: .65rem .9rem; border-radius: 999px; background: rgba(9,11,15,.76); color: #fff; cursor: pointer; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.project-quick-view__link { align-self: end; white-space: nowrap; }

.legal-original__body > h1 {
    margin-block: 1rem clamp(3rem, 6vw, 6rem);
    font-size: clamp(3.4rem, 7vw, 7rem);
}

.legal-original__body h3 {
    margin-block: 2.8rem 1rem;
    padding-top: 1.2rem;
    border-top: 1px solid var(--line-light);
    font-size: clamp(1.5rem, 2.5vw, 2.2rem);
}

.legal-original__body p {
    max-width: 52rem;
    margin-top: 1rem;
    color: var(--muted-light);
}

.legal-original__body a { color: var(--blue); text-decoration: underline; }
.legal-table-wrap {
    max-width: 100%;
    margin-block: 1.5rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.legal-table-wrap table {
    min-width: 42rem;
    border-collapse: collapse;
}
.legal-table-wrap th,
.legal-table-wrap td {
    padding: .85rem;
    border: 1px solid var(--line-light);
    vertical-align: top;
    text-align: left;
}
.legal-status-note { margin-bottom: 3rem; padding: 1.3rem; border-radius: var(--small-radius); background: var(--blue-pale); }
.legal-status-note p { color: var(--ink); }

.turnstile-wrap { display: grid; gap: .55rem; margin-bottom: 1.5rem; }
.turnstile-wrap > p { color: var(--muted-light); font-size: .7rem; }

@media (max-width: 1120px) {
    .site-header.is-menu-open {
        height: 100svh;
    }

    .site-header.is-menu-open .site-header__inner {
        height: var(--header-height);
    }

    .primary-navigation {
        display: grid;
        height: 100svh;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding: calc(var(--header-height) + 1rem) var(--gutter) 1.2rem;
        align-content: start;
        gap: .45rem;
        overflow-y: auto;
    }

    .nav-link,
    .nav-group__trigger .nav-link {
        padding: .85rem 1rem;
        border: 1px solid var(--line-dark);
        border-radius: .8rem;
        font-size: clamp(1.05rem, 3.2vw, 1.55rem);
        font-weight: 550;
        letter-spacing: -.025em;
    }

    .nav-group { grid-column: 1 / -1; }
    .nav-group__trigger { gap: .45rem; }
    .nav-group__trigger button { width: 3.4rem; min-height: 3.4rem; border: 1px solid var(--line-dark); border-radius: .8rem; }
    .nav-submenu { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .35rem; }
    .nav-submenu a { min-height: 3.7rem; padding: .65rem; border: 1px solid var(--line-dark); border-radius: .7rem; line-height: 1.25; }
    .nav-group.is-open .nav-submenu { max-height: 8rem; padding-top: .4rem; }
    .nav-cta { grid-column: 1 / -1; width: 100%; margin-top: .2rem; justify-content: center; }

    .capability-feature { grid-template-columns: 1fr; }
    .capability-feature:nth-child(even) .capability-feature__media,
    .capability-feature:nth-child(even) .capability-feature__copy { grid-column: 1; grid-row: auto; }
    .port-planning__grid { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    .hero--home { padding: 0; }
    .hero--home .hero__media { inset: 0; }
    .page-hero__media { margin: 0 .5rem .5rem; border-radius: 1.2rem; }
    .page-drone .page-hero__media,
    .page-video .page-hero__media {
        margin-right: 0;
        border-radius: 1.2rem 0 0 1.2rem;
    }
    .client-logo-row { grid-template-columns: 1fr; gap: 1rem; }
    .client-logo-heading { max-width: none; }
    .capability-showcase { gap: 5rem; }
    .capability-feature__copy h3 { font-size: clamp(2.5rem, 12vw, 4.3rem); }
    .industrial-benefits__grid { grid-template-columns: 1fr; }
    .industrial-benefits article { min-height: 0; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.25); }
    .industrial-benefits h2 { margin-top: 4rem; }
    .project-quick-view__media { height: min(46svh, 24rem); }
    .project-quick-view__copy { grid-template-columns: 1fr; }
    .project-quick-view__link { justify-self: start; }
}

@media (min-width: 821px) and (max-height: 820px) {
    .hero,
    .hero__content {
        min-height: 100svh;
    }

    .hero__content {
        padding-top: calc(var(--header-height) + 2rem);
        padding-bottom: 2rem;
    }

    .hero__copy {
        max-width: 60rem;
    }

    .hero__copy .eyebrow {
        margin-bottom: .85rem;
    }

    .hero__copy h1 {
        max-width: 13ch;
        font-size: clamp(4rem, 8vw, 7.5rem);
    }

    .hero__intro {
        max-width: 36rem;
        margin-top: 1rem;
        font-size: 1rem;
    }

    .hero__copy .button-row {
        margin-top: 1.25rem;
    }

    .showreel-button,
    .hero__scroll {
        bottom: 1.5rem;
    }
}

@media (max-width: 520px) {
    .primary-navigation { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nav-submenu { grid-template-columns: 1fr; }
    .nav-group.is-open .nav-submenu { max-height: 12rem; }
    .project-film-hero.shell { padding-top: calc(var(--header-height) + 3rem); }
}

/* Photography: natural-ratio masonry, contained controls and poster-first hover imagery. */
.discipline-card__slideshow {
    position: absolute;
    z-index: 2;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
    opacity: 0;
    transform: scale(1.025);
    transition: opacity .35s, transform .8s var(--ease-out);
}

.discipline-card.is-slideshow-previewing .discipline-card__slideshow {
    opacity: 1;
    transform: scale(1);
}

.page-photography .filter-bar {
    position: static;
    width: 100%;
    max-width: 100%;
}

.page-photography .photo-grid {
    display: block;
    columns: 4;
    column-gap: clamp(.65rem, 1.2vw, 1.15rem);
}

.page-photography .photo-item,
.page-photography .photo-item--wide {
    display: inline-block;
    width: 100%;
    margin: 0 0 clamp(.65rem, 1.2vw, 1.15rem);
    break-inside: avoid;
    grid-column: auto;
    vertical-align: top;
}

.page-photography .photo-item[hidden] {
    display: none;
}

.page-photography .photo-item a,
.page-photography .photo-item--wide a {
    display: block;
    height: auto;
    min-height: 0;
    aspect-ratio: auto;
    background: transparent;
}

.page-photography .photo-item img,
.page-photography .photo-item--wide img {
    display: block;
    width: 100%;
    height: auto;
    min-height: 0;
    aspect-ratio: auto;
    object-fit: contain;
}

.page-photography .photo-item a::after {
    display: none;
    content: none;
}

.image-lightbox__dialog {
    width: min(calc(100vw - 4rem), 104rem);
    height: min(calc(100svh - 7rem), 70rem);
    height: min(calc(100dvh - 7rem), 70rem);
    max-width: calc(100vw - 4rem);
    max-height: calc(100svh - 7rem);
    max-height: calc(100dvh - 7rem);
}

.image-lightbox__image {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

@media (max-width: 1120px) {
    .page-photography .photo-grid {
        columns: 3;
    }
}

@media (max-width: 820px) {
    .page-photography .filter-bar {
        display: flex;
        margin-inline: 0;
        padding: 0;
        flex-wrap: wrap;
        overflow: visible;
        scroll-snap-type: none;
    }

    .page-photography .filter-chip {
        max-width: 100%;
        flex: 0 1 auto;
        white-space: normal;
        text-align: center;
    }

    .page-photography .photo-grid {
        columns: 2;
    }

    .image-lightbox__dialog {
        width: calc(100vw - 2rem);
        height: calc(100svh - 7.5rem);
        height: calc(100dvh - 7.5rem);
        max-width: calc(100vw - 2rem);
        max-height: calc(100svh - 7.5rem);
        max-height: calc(100dvh - 7.5rem);
    }
}

@media (max-width: 520px) {
    .page-photography .photo-grid {
        columns: 1;
    }
}

/* Final shared refinements: natural project media, clearer service hierarchy and mobile-first heroes. */
.cta-panel__inner {
    overflow: hidden;
    border-radius: var(--card-radius);
}

.project-card__content > p {
    max-width: 32rem;
    justify-self: end;
    text-align: right;
}

.page-construction .page-hero__media {
    border-radius: var(--card-radius) 0 0 var(--card-radius);
}

.page-construction .construction-proof {
    padding-top: clamp(4.5rem, 8vw, 8rem);
    background: var(--paper);
}

@media (min-width: 1121px) {
    .capability-feature:nth-child(even) {
        grid-template-columns: minmax(18rem, .7fr) minmax(0, 1.3fr);
    }
}

.project-gallery__grid,
.project-gallery--editorial .project-gallery__grid,
.legacy-hidden-gallery__grid {
    display: block;
    columns: 2;
    column-gap: clamp(.75rem, 1.5vw, 1.5rem);
}

.project-gallery figure,
.project-gallery figure.is-wide,
.project-gallery--editorial figure,
.project-gallery--editorial figure:nth-child(3n) {
    display: inline-block;
    width: 100%;
    min-width: 0;
    margin: 0 0 clamp(.75rem, 1.5vw, 1.5rem);
    break-inside: avoid;
    vertical-align: top;
}

.project-gallery a,
.project-gallery figure.is-wide a,
.project-gallery--editorial figure a,
.project-gallery--editorial figure:nth-child(3n) a {
    height: auto;
    min-height: 0;
    aspect-ratio: auto;
}

.project-gallery img,
.project-gallery--editorial img {
    display: block;
    width: 100%;
    height: auto;
    min-height: 0;
    aspect-ratio: auto;
    object-fit: contain;
}

.drone-addons,
.industrial-context {
    background: var(--paper);
    color: var(--ink);
}

.drone-addon-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(.8rem, 1.5vw, 1.4rem);
    margin-top: clamp(2.5rem, 5vw, 5rem);
}

.drone-addon-card {
    position: relative;
    isolation: isolate;
    display: flex;
    min-height: clamp(25rem, 35vw, 35rem);
    overflow: hidden;
    padding: clamp(1.5rem, 3vw, 3rem);
    border-radius: var(--card-radius);
    flex-direction: column;
    justify-content: flex-end;
    background: var(--ink);
    color: var(--white);
}

.drone-addon-card::before,
.drone-addon-card::after {
    position: absolute;
    z-index: -2;
    inset: 0;
    content: '';
}

.drone-addon-card::before {
    background-position: center;
    background-size: cover;
    transform: scale(1.02);
    transition: transform .9s var(--ease-out), filter .5s;
}

.drone-addon-card::after {
    z-index: -1;
    background: linear-gradient(180deg, rgba(4, 7, 12, .04) 12%, rgba(4, 7, 12, .88) 88%);
}

.drone-addon-card--film::before { background-image: url('/assets/media/images/project-gosselin-ineos.jpg'); }
.drone-addon-card--progress::before { background-image: url('/assets/media/images/project-pidpa.jpg'); }
.drone-addon-card--data::before { background-image: url('/assets/media/images/industrial-hero.jpg'); }
.drone-addon-card:hover::before { filter: saturate(1.08); transform: scale(1.06); }
.drone-addon-card > span { font-size: .64rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.drone-addon-card h3 { max-width: 10ch; margin-top: 1.2rem; font-size: clamp(2rem, 3.3vw, 4rem); }
.drone-addon-card p { max-width: 31rem; margin-top: 1.1rem; color: rgba(255, 255, 255, .76); }
.drone-addon-card strong { margin-top: 2rem; font-size: .74rem; letter-spacing: .08em; text-transform: uppercase; }
.drone-addon-card strong i { display: inline-block; margin-left: .35rem; font-style: normal; transition: transform .35s var(--ease-out); }
.drone-addon-card:hover strong i { transform: translate(.25rem, -.25rem); }
.drone-addons__note { max-width: 45rem; margin-top: 1.4rem; color: var(--muted-light); font-size: .8rem; }

.industrial-context__inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(20rem, .75fr);
    gap: clamp(3rem, 8vw, 9rem);
    padding-block: clamp(2rem, 5vw, 5rem);
    border-block: 1px solid var(--line-light);
}

.industrial-context__inner h2 { max-width: 12ch; margin-top: 1rem; }
.industrial-context__inner > div:last-child { align-self: end; }
.industrial-context__inner > div:last-child p { max-width: 36rem; color: var(--muted-light); }
.industrial-context__inner > div:last-child p + p { margin-top: 1.2rem; }

.portrait-note {
    max-width: 42rem;
    margin-top: clamp(2.5rem, 5vw, 4.5rem);
    padding-top: 1.5rem;
    border-top: 1px solid var(--line-light);
}

.portrait-note p { color: var(--muted-light); }
.portrait-note strong { color: var(--ink); }
.portrait-note .text-link { margin-top: 1rem; }

.external-film-embed {
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: var(--card-radius);
    background: #000;
}

.external-film-embed > img,
.external-film-embed > iframe {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    object-fit: cover;
}

.external-film-embed > img { opacity: .72; }

.external-film-embed__play,
.logistics-film-card__watch {
    position: absolute;
    z-index: 2;
    display: inline-flex;
    min-height: 3rem;
    padding: .75rem 1.1rem;
    border-radius: 999px;
    align-items: center;
    gap: .6rem;
    background: rgba(8, 10, 14, .82);
    color: #fff;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.external-film-embed__play {
    top: 50%;
    left: 50%;
    cursor: pointer;
    transform: translate(-50%, -50%);
}

.logistics-film-card__media {
    position: relative;
    overflow: hidden;
    border-radius: var(--card-radius);
    background: #000;
}

.logistics-film-card__media video { border-radius: 0; }
.logistics-film-card__watch { right: 1rem; bottom: 1rem; }
.logistics-film-card figcaption { padding-top: .75rem; color: var(--muted-dark); font-size: .72rem; }

img,
video {
    -webkit-user-drag: none;
    -webkit-touch-callout: none;
    user-select: none;
}

@media (max-width: 820px) {
    .page-drone .page-hero--split,
    .page-video .page-hero--split {
        display: flex;
        flex-direction: column;
    }

    .page-drone .page-hero__media,
    .page-video .page-hero__media {
        order: -1;
        width: 100%;
        min-height: 0;
        margin: 0;
        aspect-ratio: 4 / 3;
        border-radius: 0;
    }

    .page-drone .page-hero__copy,
    .page-video .page-hero__copy {
        min-height: 0;
        padding-block: clamp(3.5rem, 12vw, 5rem);
    }

    .page-construction .page-hero__media {
        margin-right: 0;
        border-radius: 1.2rem 0 0 1.2rem;
    }

    .filter-bar,
    .filter-bar--sticky,
    .page-photography .filter-bar {
        width: 100%;
        max-width: 100%;
        margin-inline: 0;
        padding: 0;
        flex-wrap: wrap;
        overflow: visible;
        scroll-snap-type: none;
    }

    .filter-chip,
    .page-photography .filter-chip {
        max-width: 100%;
        flex: 0 1 auto;
        white-space: normal;
        text-align: center;
    }

    .project-card__content > p {
        justify-self: start;
        text-align: left;
    }

    .drone-addon-grid,
    .industrial-context__inner {
        grid-template-columns: 1fr;
    }

    .drone-addon-card { min-height: 29rem; }

    .project-gallery__grid,
    .project-gallery--editorial .project-gallery__grid,
    .legacy-hidden-gallery__grid {
        columns: 1;
    }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }

    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }

    .js.reveal-ready [data-reveal] {
        opacity: 1;
        transform: none;
    }

    .client-logo-track {
        animation: none;
        transform: none;
        will-change: auto;
    }

    .client-logo-list[aria-hidden="true"] {
        display: none;
    }
}

@media print {
    .site-header,
    .site-footer,
    .cta-panel,
    .filter-bar,
    .media-modal,
    .image-lightbox { display: none !important; }

    body,
    main,
    section,
    article {
        background: #fff !important;
        color: #000 !important;
    }
}
