@font-face {
  font-family: "Open Sans";
  src: url("open-sans-regular.woff") format("woff");
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Open Sans";
  src: url("open-sans-semibold.woff") format("woff");
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: "Open Sans";
  src: url("open-sans-bold.woff") format("woff");
  font-weight: 700;
  font-display: swap;
}

:root {
  --brand: #2b3382;
  --heading: #282e74;
  --ink: #191c2a;
  --muted: #525768;
  --line: #dfe1eb;
  --wash: #f5f5f9;
  --white: #fff;
  --gutter: clamp(18px, 5vw, 82px);
  --max: 1440px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--white);
  font-family: "Open Sans", Arial, sans-serif;
  font-size: 16px;
  line-height: 1.65;
}
img { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
a { color: inherit; }
p, h1, h2, h3, figure, dl, dd { margin: 0; }
h1, h2, h3 { line-height: 1.08; font-weight: 700; color: var(--heading); }
h1 { font-size: clamp(38px, 5.2vw, 78px); letter-spacing: -.055em; }
h2 { font-size: clamp(30px, 3.8vw, 54px); letter-spacing: -.05em; }
h3 { font-size: 22px; letter-spacing: -.027em; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid #6873d7; outline-offset: 4px; }
.container { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.visually-hidden, .skip-link:not(:focus) {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.skip-link:focus { position: absolute; top: 8px; left: 8px; z-index: 10; background: var(--white); padding: 8px 12px; }
html:not(.js) .requires-js { display: none; }

.eyebrow {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 13px;
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .18em;
  line-height: 1.45;
}
.eyebrow::after { content: ""; display: block; width: 42px; height: 1px; background: currentColor; opacity: .65; }
.page-intro h1 { text-wrap: balance; }
.page-lead { margin-top: 13px; max-width: 66ch; font-size: clamp(16px, 1.6vw, 22px); color: var(--muted); }
.text-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--heading);
  font-weight: 700;
  text-underline-offset: 5px;
  text-decoration-thickness: 1px;
}
.text-link:hover { color: #505bb2; }
.button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 9px;
  min-height: 46px;
  padding: 9px 17px;
  border: 1px solid var(--heading);
  border-radius: 1px;
  background: var(--white);
  color: var(--heading);
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: .075em;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s;
}
.button svg, .text-link svg { flex: none; }
.button--outline:hover, .button--solid { background: var(--brand); color: var(--white); }
.button--solid:hover { background: #1b215e; }
.button--light { border-color: #d9ddfa; color: var(--white); background: transparent; }
.button--light:hover { background: var(--white); color: var(--heading); }
.circle-button {
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--heading);
  background: var(--white);
  cursor: pointer;
  transition: color .2s, background-color .2s, border-color .2s;
}
.circle-button:hover { color: var(--white); border-color: var(--brand); background: var(--brand); }
.motion-button .play-glyph, .motion-button[aria-pressed="true"] .pause-glyph { display: none; }
.motion-button[aria-pressed="true"] .play-glyph { display: inline; }

.site-header { position: relative; z-index: 2; background: var(--brand); color: var(--white); }
.header-inner { min-height: 80px; display: flex; align-items: center; justify-content: space-between; gap: 22px; }
.brand { flex: none; width: clamp(145px, 17vw, 192px); display: block; }
.brand img { width: 100%; }
.main-nav { display: flex; align-items: stretch; justify-content: center; gap: clamp(18px, 2.6vw, 44px); }
.main-nav a {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding-block: 22px;
  text-transform: uppercase;
  text-decoration: none;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: .06em;
  white-space: nowrap;
}
.main-nav a::after { content: ""; position: absolute; bottom: 15px; left: 0; right: 0; height: 2px; background: #e0e3ff; opacity: 0; }
.main-nav a:hover::after, .main-nav a[aria-current="page"]::after { opacity: 1; }
.header-contact { white-space: nowrap; flex: none; }
.menu-toggle { display: none; }

.home-hero { min-height: 550px; isolation: isolate; position: relative; background: #fafafd; overflow: hidden; }
.home-hero::before {
  content: "";
  position: absolute;
  inset: 0 37% 0 22%;
  z-index: -1;
  background: #eceef5;
  clip-path: polygon(1% 0, 29% 0, 55% 43%, 95% 0, 100% 0, 100% 45%, 60% 95%, 37% 95%, 37% 66%);
}
.home-hero-inner { min-height: inherit; display: flex; align-items: center; pointer-events: none; position: relative; }
.hero-copy { padding-block: 55px 60px; width: 52%; pointer-events: auto; }
.hero-copy h1 { font-size: clamp(33px, 4vw, 65px); line-height: 1.02; letter-spacing: -.046em; text-transform: uppercase; }
.hero-copy h1 span { display: block; }
.across-uk {
  display: inline-block;
  margin-top: 15px;
  padding: 3px 12px 4px;
  background: var(--heading);
  color: var(--white);
  font-size: clamp(15px, 1.55vw, 25px);
  line-height: 1.4;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
}
.hero-intro { margin: 21px 0 23px; font-size: clamp(16px, 1.6vw, 22px); line-height: 1.45; }
.hero-visual { position: absolute; inset: 0 0 0 auto; width: 56%; overflow: hidden; clip-path: polygon(25% 0, 100% 0, 100% 100%, 0 100%); background: #e8e9ee; }
.hero-visual img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hero-image-caption {
  position: absolute;
  right: var(--gutter);
  bottom: 24px;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 12px;
  background: var(--white);
  color: var(--heading);
  font-weight: 700;
  font-size: 13px;
  text-decoration: none;
}
.hero-image-caption:hover { text-decoration: underline; }
.hero-toolbar { position: absolute; right: 0; top: 19px; left: 0; pointer-events: none; }
.hero-toolbar-inner { display: flex; align-items: center; justify-content: flex-end; gap: 9px; }
.hero-toolbar-inner > * { pointer-events: auto; }
.hero-counter { font-size: 11px; color: var(--white); background: #191d38; padding: 5px 8px; font-weight: 700; letter-spacing: .06em; }
.hero-dots { display: flex; background: var(--white); padding: 0 4px; border-radius: 20px; }
.hero-dots button { padding: 0; border: 0; background: none; width: 26px; min-height: 35px; display: grid; place-items: center; cursor: pointer; }
.hero-dots button span { display: block; width: 7px; height: 7px; border-radius: 50%; background: #c4c6d5; }
.hero-dots button[aria-pressed="true"] span { background: var(--brand); width: 10px; height: 10px; }
.sector-strip { border-bottom: 1px solid var(--line); }
.sector-strip-inner { display: grid; grid-template-columns: repeat(4, 1fr); }
.sector-strip a { display: flex; min-height: 66px; gap: 8px; align-items: center; padding-inline: 12px; justify-content: center; font-size: 12px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; text-decoration: none; }
.sector-strip a + a { border-left: 1px solid var(--line); }
.sector-strip a span { color: #676c82; }
.sector-strip a svg { width: 16px; color: var(--brand); margin-left: 4px; }
.sector-strip a:hover { background: var(--wash); color: var(--heading); }

.expertise { position: relative; overflow: hidden; }
.expertise::after {
  content: "";
  position: absolute;
  inset: 0 35% 0 31%;
  background: #f3f3f7;
  clip-path: polygon(0 0, 28% 0, 56% 60%, 86% 0, 100% 0, 100% 36%, 65% 100%, 47% 100%);
  z-index: -1;
}
.split-intro { display: grid; grid-template-columns: .95fr 1fr; gap: clamp(20px, 6vw, 112px); padding-block: clamp(38px, 5vw, 75px); align-items: center; }
.split-intro p:not(.eyebrow) { max-width: 52ch; color: var(--muted); font-size: clamp(16px, 1.4vw, 19px); margin-bottom: 14px; }
.selected-work { background: var(--wash); padding: 42px 0 55px; }
.section-title-line { display: flex; align-items: flex-end; justify-content: space-between; gap: 15px; margin-bottom: 25px; }
.section-title-line > .text-link { padding-bottom: 4px; }
.client-banner {
  padding-block: clamp(32px, 5vw, 62px);
  background: #202653;
  color: var(--white);
}
.client-banner h2 {
  color: inherit;
  text-align: center;
  font-size: clamp(30px, 3.4vw, 50px);
}
.client-banner h2::after {
  content: "";
  display: block;
  width: 42px;
  height: 1px;
  margin: 16px auto 24px;
  background: #a9b1df;
}
.client-logo-viewport { overflow: hidden; }
.client-banner-logos {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: clamp(14px, 2.3vw, 35px);
  margin: 0 auto;
  max-width: 1120px;
  padding: 0 clamp(16px, 2.3vw, 35px);
  list-style: none;
}
.client-banner-logos[aria-hidden="true"], .client-banner-motion { display: none; }
.client-banner-logos li {
  display: grid;
  place-items: center;
  flex: 0 0 clamp(124px, 14vw, 174px);
  min-height: 72px;
}
.client-banner-logos img {
  width: min(100%, 164px);
  height: clamp(49px, 6vw, 60px);
  object-fit: contain;
}
@media (prefers-reduced-motion: no-preference) {
  .js .client-logo-viewport { mask-image: linear-gradient(to right, transparent, #000 3%, #000 97%, transparent); }
  .js .client-logo-track {
    display: flex;
    width: max-content;
    animation: client-logo-scroll 43s linear infinite;
  }
  .js .client-banner-logos {
    flex-wrap: nowrap;
    justify-content: space-around;
    min-width: 100vw;
    max-width: none;
  }
  .js .client-banner-logos[aria-hidden="true"] { display: flex; }
  .js .client-banner[data-paused] .client-logo-track { animation-play-state: paused; }
  .js .client-banner-motion {
    display: grid;
    margin: 14px auto 0;
    color: var(--white);
    background: transparent;
    border-color: #ffffff61;
  }
  .js .client-banner-motion:hover { background: var(--white); color: var(--heading); }
}

@keyframes client-logo-scroll {
  to { transform: translateX(-50%); }
}

.credentials { border-top: 1px solid var(--line); }
.credential-row { min-height: 112px; display: grid; grid-template-columns: repeat(5, 1fr); align-items: center; padding-block: 16px; }
.credential-row > div { min-height: 65px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; }
.credential-row > div + div { border-left: 1px solid var(--line); }
.credential-row img { object-fit: contain; }
.credential-row .software span { color: var(--muted); text-transform: uppercase; letter-spacing: .08em; font-weight: 600; font-size: 9px; }

.work-intro, .contact-intro {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: linear-gradient(180deg, #f8f8fc 0%, #fff 100%);
}
.work-intro::before, .contact-intro::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: min(54vw, 850px);
  height: 100%;
  background: #e9ebf3;
  clip-path: polygon(0 0, 21% 0, 46% 44%, 70% 0, 88% 0, 88% 48%, 100% 22%, 100% 60%, 74% 100%, 74% 33%, 46% 80%);
  z-index: -1;
}
.page-intro { padding-top: 40px; padding-bottom: 15px; }
.page-intro--roomy { padding-bottom: 45px; }
.sector-filters { margin-top: 25px; display: flex; flex-wrap: wrap; align-items: stretch; gap: 6px; }
.sector-filters button {
  min-height: 39px;
  padding: 5px clamp(10px, 1.6vw, 24px);
  border: 1px solid transparent;
  color: var(--ink);
  background: none;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: .07em;
  font-size: 11px;
  font-weight: 700;
}
.sector-filters button:hover { border-color: var(--line); background: var(--white); }
.sector-filters button[aria-pressed="true"] { color: var(--white); background: var(--brand); border-color: var(--brand); }

.explorer {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
  gap: clamp(24px, 3.2vw, 54px);
  padding-block: 4px 31px;
  align-items: center;
}
@property --turn {
  syntax: "<angle>";
  inherits: true;
  initial-value: 0deg;
}

.wheel-area { min-width: 0; container-type: inline-size; }
.orbit-stage {
  --radius: clamp(118px, 32.5cqw, 196px);
  --card-width: clamp(94px, 26cqw, 164px);
  --hub-size: clamp(104px, 30cqw, 177px);
  --turn: 0deg;
  position: relative;
  height: calc(2 * var(--radius) + 130px);
  touch-action: pan-y;
  user-select: none;
  cursor: grab;
  transition: --turn .72s cubic-bezier(.2,.75,.22,1);
}
.orbit-stage.is-dragging { cursor: grabbing; transition: none; }
.orbit-ring, .orbit-hub { position: absolute; top: 50%; left: 50%; translate: -50% -50%; border-radius: 50%; }
.orbit-ring { width: calc(2 * var(--radius)); aspect-ratio: 1; border: 1px solid #d4d6e4; pointer-events: none; }
.orbit-ring::after {
  content: "";
  position: absolute;
  inset: 11px;
  border: 1px dashed #e8e9f1;
  border-radius: 50%;
}
.orbit-hub {
  width: var(--hub-size);
  aspect-ratio: 1;
  border: 4px solid #e6e7f0;
  border-top-color: var(--brand);
  border-right-color: #c6cae6;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 8px;
  color: var(--heading);
  background: var(--white);
  text-align: center;
  font-size: clamp(15px, 3.7cqw, 24px);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -.03em;
  pointer-events: none;
}
.orbit-hub img { width: clamp(36px, 9cqw, 56px); padding: 6px; border-radius: 50%; background: var(--brand); }
.orbit-card {
  --angle: calc(var(--base-angle) + var(--turn));
  width: var(--card-width);
  position: absolute;
  left: 50%;
  top: 50%;
  display: block;
  margin: 0;
  padding: 3px;
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 4px;
  color: var(--ink);
  cursor: pointer;
  box-shadow: 0 3px 9px #20265710;
  transform: translate(-50%, -50%) rotate(var(--angle)) translateX(var(--radius)) rotate(calc(-1 * var(--angle)));
  transition: border-color .2s, box-shadow .2s;
}
.is-dragging .orbit-card { transition: none; cursor: grabbing; }
.orbit-card img { width: 100%; aspect-ratio: 1.85; object-fit: cover; border-radius: 2px; pointer-events: none; }
.orbit-card span {
  display: grid;
  place-items: center;
  padding: 5px 3px 3px;
  min-height: calc(2.3em + 8px);
  text-align: center;
  font-size: clamp(10px, 2.25cqw, 13px);
  line-height: 1.15;
  font-weight: 700;
  letter-spacing: -.014em;
  pointer-events: none;
}
.orbit-card:hover, .orbit-card:focus-visible { z-index: 2; border-color: #5f67aa; }
.orbit-card[aria-pressed="true"] { z-index: 1; border-color: var(--brand); box-shadow: 0 0 0 1px var(--brand), 0 7px 18px #252b6c24; }
.orbit-prev, .orbit-next {
  position: absolute;
  top: 50%;
  z-index: 3;
  translate: -50% -50%;
}
.orbit-prev { left: calc(50% - var(--hub-size) / 2 - 26px); }
.orbit-next { left: calc(50% + var(--hub-size) / 2 + 26px); }
.wheel-toolbar { min-height: 48px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 14px; }
.wheel-hint { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 13px; }
.wheel-toolbar .text-link { font-size: 13px; }
.swipe-instruction { display: none; }
.featured-project { min-width: 0; border-left: 1px solid var(--line); padding-left: clamp(20px, 2.7vw, 42px); }
.feature-photo { position: relative; overflow: hidden; background: var(--wash); border-radius: 3px; touch-action: pan-y; }
.feature-photo img { width: 100%; aspect-ratio: 1.72; object-fit: cover; }
.feature-swipe-hint { display: none; }
.feature-copy { padding: 16px 0 4px; }
.feature-meta { display: flex; align-items: center; gap: 12px; color: var(--heading); font-size: 11px; text-transform: uppercase; letter-spacing: .11em; font-weight: 700; }
.feature-count { border-right: 1px solid var(--line); padding-right: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.feature-copy h2 { font-size: clamp(28px, 3.2vw, 49px); margin-top: 7px; letter-spacing: -.049em; text-wrap: balance; }
.feature-copy > p:not(.feature-meta) { color: var(--muted); margin: 7px 0 16px; }
html:not(.js) .explorer { display: block; max-width: 760px; }
html:not(.js) .featured-project { padding-left: 0; border: 0; }

.project-index { padding-block: 32px 63px; border-top: 1px solid var(--line); scroll-margin-top: 16px; }
.result-count { color: var(--muted); font-size: 13px; white-space: nowrap; padding-bottom: 3px; }
.project-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(15px, 2vw, 29px); }
.project-grid--home { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.project-grid.project-grid--single { grid-template-columns: minmax(0, 1fr); max-width: 680px; }
.project-card { display: flex; background: var(--white); border: 1px solid var(--line); border-radius: 2px; overflow: hidden; }
.project-card > a { display: flex; flex-direction: column; width: 100%; text-decoration: none; }
.project-card > a:focus-visible { outline-offset: -4px; }
.project-card-image { width: 100%; aspect-ratio: 1.95; overflow: hidden; background: var(--wash); }
.project-card-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s; }
.project-card:hover img { transform: scale(1.035); }
.project-card-image--type, .case-hero-type {
  display: grid;
  place-content: center;
  gap: 12px;
  background: #f1f1f8;
  background: linear-gradient(135deg, #f3f4f9 0%, #f3f4f9 65%, #e2e4f3 65%, #e2e4f3 79%, #d6d9ee 79%);
  color: var(--heading);
  text-align: center;
  line-height: 1.08;
  letter-spacing: -.05em;
  font-weight: 700;
}
.project-card-image--type { font-size: clamp(20px, 2.6vw, 34px); }
.project-card-copy { padding: 15px 46px 18px 16px; position: relative; flex: 1; }
.project-card-copy h3 { margin: 6px 0 5px; }
.project-card-copy > p:not(.project-card-meta) { color: var(--muted); font-size: 14px; line-height: 1.5; }
.project-card-meta { display: flex; justify-content: space-between; align-items: center; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .095em; text-transform: uppercase; }
.card-arrow { position: absolute; top: 42px; right: 13px; color: var(--brand); transition: transform .2s; }
.project-card:hover .card-arrow { transform: translate(2px,-2px); }

.service-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; padding-bottom: 45px; }
.service { padding: clamp(19px, 2vw, 31px); border: 1px solid var(--line); border-top: 3px solid var(--brand); }
.service-number { font-size: 11px; font-weight: 700; color: var(--heading); letter-spacing: .1em; margin-bottom: 11px; }
.service h2 { font-size: clamp(24px, 2.35vw, 35px); }
.service > p:not(.service-number) { color: var(--muted); margin-top: 12px; font-size: 15px; }
.service ul, .case-scope ul { padding-left: 1.15em; margin: 14px 0 0; font-size: 14px; }
.service li + li, .case-scope li + li { margin-top: 5px; }
.service li::marker, .case-scope li::marker { color: var(--brand); }
.services-page .expertise { background: var(--wash); }
.service-detail-link { margin-top: 16px; }
.service-feature-heading { margin-top: 22px; }
.service-detail-content { margin-top: clamp(24px, 4vw, 48px); }
.service-detail-cta { margin-top: 18px; }

.case-intro { padding-block: 26px 30px; }
.breadcrumb { margin-bottom: 22px; font-size: 13px; }
.case-intro h1 { max-width: 26ch; font-size: clamp(38px, 5vw, 72px); text-wrap: balance; }
.case-hero { min-height: 210px; }
.case-hero > img { width: 100%; aspect-ratio: 2.28; object-fit: cover; border-radius: 3px; }
.case-hero-type { min-height: clamp(200px, 29vw, 400px); font-size: clamp(38px, 7vw, 91px); }
.case-hero-type small { font-size: .3em; letter-spacing: .14em; text-transform: uppercase; }
.case-facts { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); margin-block: 20px 32px; border-block: 1px solid var(--line); }
.case-facts > div { padding: 13px clamp(8px, 2vw, 26px); }
.case-facts > div + div { border-left: 1px solid var(--line); }
.case-facts dt, .contact-details dt { color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .12em; font-weight: 700; }
.case-facts dd { font-size: clamp(14px, 1.5vw, 19px); font-weight: 700; color: var(--heading); }
.case-content { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 30px; margin-bottom: 41px; }
.case-content > :only-child { grid-column: 1 / -1; }
.case-content h2, .case-gallery h2 { font-size: clamp(28px, 3vw, 46px); }
.case-content > section > p:not(.eyebrow) { margin-top: 14px; color: var(--muted); max-width: 65ch; font-size: 16px; }
.case-scope { padding: 23px clamp(19px, 2.5vw, 38px); border-left: 3px solid var(--brand); background: var(--wash); }
.case-scope h2 { font-size: 25px; }
.case-scope ul { font-size: 15px; }
.case-gallery { padding-block: 26px 37px; border-top: 1px solid var(--line); }
.gallery-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-top: 17px; }
.gallery-grid img { width: 100%; aspect-ratio: 1.4; object-fit: cover; }
.gallery-grid figcaption { margin-top: 6px; color: var(--muted); font-size: 13px; }
.next-project {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-block: 15px 48px;
  padding: 18px 20px;
  background: var(--wash);
  border: 1px solid var(--line);
  color: var(--heading);
  text-decoration: none;
}
.next-project .eyebrow { margin-bottom: 4px; }
.next-project strong { font-size: clamp(20px, 2.3vw, 32px); line-height: 1.15; }
.next-project svg { flex: none; }
.next-project:hover { border-color: var(--brand); }

.contact-intro::before { width: min(50vw, 720px); height: 295px; background: #e4e6f1; }
.contact-layout { display: grid; grid-template-columns: minmax(0, .93fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 74px); align-items: start; padding-block: clamp(38px, 5vw, 78px); }
.contact-copy h1 { font-size: clamp(35px, 4.65vw, 68px); }
.contact-details { margin-top: 23px; }
.contact-details > div { border-top: 1px solid var(--line); padding-block: 13px; }
.contact-details dd { color: var(--heading); font-size: clamp(15px, 1.6vw, 20px); font-weight: 700; overflow-wrap: anywhere; }
.contact-details a { text-decoration-thickness: 1px; text-underline-offset: 4px; }
.contact-form-panel { border: 1px solid var(--line); background: var(--white); padding: clamp(18px, 3vw, 42px); box-shadow: 0 10px 40px #30367f0b; }
.contact-form-panel h2 { font-size: clamp(25px, 2.55vw, 35px); margin-bottom: 16px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.form-grid label { min-width: 0; display: block; font-size: 13px; font-weight: 700; }
.form-grid :is(input, select, textarea) { display: block; width: 100%; min-height: 44px; margin-top: 3px; padding: 8px; border: 1px solid #c8cbd9; border-radius: 0; color: var(--ink); background: #fbfbfd; font-size: 16px; font-weight: 400; }
.form-grid textarea { resize: vertical; }
.form-wide { grid-column: 1 / -1; }
.form-help { margin: 12px 0; color: var(--muted); font-size: 13px; }

.footer-cta { position: relative; overflow: hidden; isolation: isolate; background: var(--brand); color: var(--white); }
.footer-cta::before { content: ""; position: absolute; inset: 0 13% 0 auto; width: 39%; background: #51599a; z-index: -1; clip-path: polygon(16% 0, 34% 0, 52% 64%, 71% 0, 91% 0, 64% 100%, 44% 100%, 24% 39%, 8% 100%, 0 100%); }
.footer-cta-inner { display: flex; justify-content: space-between; align-items: center; gap: 15px; min-height: 89px; padding-block: 12px; }
.footer-cta p { font-size: clamp(21px, 3vw, 42px); font-weight: 700; letter-spacing: -.05em; line-height: 1.12; }
.footer-cta .button { flex: none; }
.footer-details { display: flex; justify-content: space-between; gap: 13px 23px; flex-wrap: wrap; align-items: center; padding-block: 20px; color: var(--muted); font-size: 12px; }
.footer-details strong { color: var(--ink); }
.footer-links { display: flex; flex-wrap: wrap; gap: 7px 15px; }
.footer-links a { text-underline-offset: 3px; }
.private-label { text-transform: uppercase; letter-spacing: .095em; font-size: 10px; }

@media (max-width: 1040px) {
  .header-inner { gap: 14px; }
  .header-contact { padding-inline: 9px; font-size: 10px; }
  .home-hero { min-height: 486px; }
  .hero-copy h1 { font-size: clamp(29px, 3.8vw, 41px); }
  .service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .contact-layout { grid-template-columns: 1fr; max-width: 680px; }
  .explorer { display: flex; flex-direction: column; gap: 13px; align-items: stretch; padding-block: 8px 20px; }
  .featured-project { order: -1; border: 0; padding: 0; }
  .feature-photo img { aspect-ratio: 1.66; }
  .feature-copy { padding-top: 11px; }
  .orbit-stage { height: auto; display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; align-items: center; gap: 7px; cursor: default; }
  .orbit-ring, .orbit-hub { display: none; }
  .orbit-prev, .orbit-next { position: static; translate: none; }
  .orbit-cards { display: flex; gap: 9px; overflow-x: auto; padding: 4px 2px 8px; scrollbar-width: thin; scrollbar-color: #c6c9dc transparent; }
  .orbit-card { flex: 0 0 110px; position: relative; left: auto; top: auto; transform: none; }
  .orbit-card span { min-height: calc(2.3em + 8px); font-size: 11px; }
  .drag-instruction { display: none; }
  .swipe-instruction { display: inline; }
  .wheel-toolbar { margin-top: 5px; }
  .js .feature-swipe-hint {
    position: absolute;
    bottom: 9px;
    right: 9px;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 4px 8px;
    background: var(--white);
    color: var(--heading);
    border-radius: 2px;
    font-size: 11px;
    font-weight: 700;
    pointer-events: none;
  }
  .feature-swipe-hint svg { width: 15px; height: 15px; }
}

@media (max-width: 800px) {
  .header-inner { min-height: 68px; flex-wrap: wrap; }
  .brand { width: 153px; }
  .header-contact { display: none; }
  .js .menu-toggle { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; background: none; border: 1px solid #c9cdf0; color: var(--white); padding: 4px 10px; cursor: pointer; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
  .main-nav { width: 100%; gap: 0; flex-wrap: wrap; justify-content: flex-start; padding-bottom: 9px; }
  .js .main-nav:not([data-open]) { display: none; }
  .main-nav a { padding: 8px 12px; min-height: 44px; }
  .main-nav a::after { bottom: 4px; left: 12px; right: 12px; }
  .home-hero { display: flex; flex-direction: column; min-height: 0; }
  .home-hero::before { inset: 0 0 26% 31%; }
  .home-hero-inner { order: -1; min-height: auto; }
  .hero-copy { width: 100%; padding-block: 32px; }
  .hero-copy h1 { font-size: clamp(31px, 6.6vw, 56px); }
  .hero-copy h1 span { display: block; }
  .wide-break { display: none; }
  .hero-intro { margin-block: 16px; }
  .hero-visual { position: relative; inset: auto; width: 100%; clip-path: none; aspect-ratio: 1.85; }
  .hero-image-caption { bottom: 13px; }
  .hero-toolbar { position: relative; inset: auto; padding: 6px 0; background: #f3f4f8; }
  .hero-counter { color: var(--heading); background: none; }
  .hero-toolbar-inner { justify-content: space-between; }
  .hero-dots { background: none; }
  .sector-strip a { font-size: 10px; padding-inline: 7px; gap: 5px; }
  .sector-strip a svg { display: none; }
  .project-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-intro { padding-top: 29px; }
  .page-intro--roomy { padding-bottom: 27px; }
  .sector-filters { margin-top: 17px; }
  .sector-filters button { min-height: 37px; padding-inline: 9px; font-size: 10px; }
  .project-index { padding-block: 23px 42px; }
  .case-hero > img { aspect-ratio: 1.65; }
}

@media (max-width: 570px) {
  .hero-copy { padding-block: 26px; }
  .hero-image-caption { font-size: 12px; }
  .sector-strip-inner { grid-template-columns: 1fr 1fr; }
  .sector-strip a { min-height: 45px; justify-content: flex-start; padding-inline: 9px; }
  .sector-strip a:nth-child(3) { border-left: 0; }
  .sector-strip a:nth-child(n+3) { border-top: 1px solid var(--line); }
  .split-intro, .service-grid, .case-content { grid-template-columns: 1fr; }
  .split-intro { gap: 17px; }
  .split-intro br { display: none; }
  .selected-work { padding-block: 31px; }
  .section-title-line { flex-wrap: wrap; }
  .project-grid { grid-template-columns: 1fr; }
  .project-card-copy { padding-top: 12px; }
  .credential-row { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 11px 0; }
  .credential-row > div { grid-column: span 2; min-height: 49px; }
  .credential-row > div:nth-child(4) { grid-column: 2 / span 2; border-left: 0; }
  .credential-row img { max-width: 88%; max-height: 47px; }
  .case-content { gap: 20px; }
  .case-facts > div { padding: 8px 7px; }
  .case-facts { margin-block: 14px 24px; }
  .gallery-grid { gap: 10px; }
  .gallery-grid img { aspect-ratio: 1; }
  .gallery-grid figcaption { font-size: 11px; line-height: 1.4; }
  .footer-cta-inner { align-items: flex-start; flex-direction: column; padding-block: 19px; }
}

@media (max-width: 460px) {
  .form-grid { grid-template-columns: 1fr; }
}

@media (max-width: 410px) {
  .case-facts { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .case-facts > div:nth-child(3) { grid-column: 1 / -1; border-top: 1px solid var(--line); border-left: 0; }
}

@media (max-width: 350px) {
  .hero-copy h1 { font-size: 28px; }
  .orbit-stage { gap: 4px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0s !important; animation-duration: 0s !important; }
}
