@font-face {
  font-family:'Source Serif 4';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/assets/fonts/source-serif-4-600.woff2') format('woff2')
}
@font-face {
  font-family:'Source Sans 3';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/assets/fonts/source-sans-3-400.woff2') format('woff2')
}
@font-face {
  font-family:'Source Sans 3';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/assets/fonts/source-sans-3-600.woff2') format('woff2')
}
:root {
  --cream:#f6f3ec;
  --teal:#1e5a62;
  --cobalt:#2a45b0;
  --yellow:#f4cd4a;
  --ink:#16171c;
  --sand:#ece6d8;
  --line:#c9cfc6;
  --muted:#535a59;
  --serif:'Source Serif 4',Georgia,serif;
  --sans:'Source Sans 3','Segoe UI',Arial,sans-serif;
  --ease:cubic-bezier(.22,1,.36,1)
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:110px
}
body {
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font:400 1.125rem/1.6 var(--sans);
  -webkit-font-smoothing:antialiased
}
a {
  color:inherit
}
button {
  font:inherit
}
img,svg {
  display:block;
  max-width:100%
}
button,a {
  -webkit-tap-highlight-color:transparent
}
button {
  cursor:pointer
}
button:focus-visible,a:focus-visible,summary:focus-visible {
  outline:3px solid var(--cobalt);
  outline-offset:5px
}
h1,h2,h3,p,figure {
  margin:0
}
h1,h2,h3 {
  font-family:var(--serif);
  font-weight:600;
  line-height:1.12;
  letter-spacing:-.035em
}
h2 {
  font-size:clamp(2rem,3.8vw,3.25rem)
}
h3 {
  font-size:clamp(1.5rem,2.7vw,2.1rem)
}
strong {
  font-weight:600
}
.container {
  width:min(1240px,calc(100% - 80px));
  margin-inline:auto
}
.eyebrow {
  color:var(--teal);
  font-size:.8125rem;
  line-height:1.5;
  font-weight:600;
  letter-spacing:.13em;
  text-transform:uppercase
}
.skip-link {
  position:fixed;
  top:-100px;
  left:20px;
  background:var(--teal);
  color:var(--cream);
  padding:12px 20px;
  z-index:100
}
.skip-link:focus {
  top:10px
}
.site-header {
  position:sticky;
  top:0;
  z-index:50;
  background:var(--cream);
  border-bottom:1px solid var(--line)
}
.header-inner {
  height:88px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px
}
.brand {
  display:flex;
  align-items:center;
  gap:17px;
  text-decoration:none;
  flex-shrink:0
}
.brand img {
  width:90px;
  height:auto
}
.brand>span {
  font-family:var(--serif);
  font-size:.9375rem;
  line-height:1.15;
  letter-spacing:-.02em;
  border-left:1px solid var(--line);
  padding-left:17px
}
nav {
  display:flex;
  gap:30px;
  align-items:center
}
nav a {
  font-size:.9375rem;
  text-decoration:none;
  line-height:1.3;
  padding-block:12px;
  position:relative
}
nav a:not(.nav-contact)::after {
  content:'';
  position:absolute;
  bottom:7px;
  left:0;
  right:0;
  height:1px;
  background:var(--teal);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 180ms
}
nav a:hover::after,nav a[aria-current]::after {
  transform:scaleX(1)
}
nav .nav-contact {
  padding:12px 18px;
  border:1px solid var(--teal);
  color:var(--teal);
  transition:background 180ms,color 180ms
}
nav .nav-contact:hover {
  background:var(--teal);
  color:var(--cream)
}
.menu-toggle {
  display:none
}
.hero {
  position:relative;
  display:grid;
  grid-template-columns:1.12fr 1fr;
  align-items:center;
  column-gap:26px;
  padding-top:68px
}
.hero-copy {
  z-index:1;
  padding-bottom:36px
}
.hero .eyebrow {
  font-size:.75rem;
  letter-spacing:.095em;
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:29px
}
.tiny-mark {
  width:9px;
  height:9px;
  background:var(--cobalt);
  flex-shrink:0
}
.hero h1 {
  font-size:clamp(2.5rem,5.25vw,4.875rem);
  line-height:1.08;
  letter-spacing:-.05em
}
.hero h1 span {
  color:var(--teal)
}
.hero-description {
  max-width:490px;
  font-size:1.1875rem;
  line-height:1.65;
  color:var(--muted);
  margin-top:28px
}
.hero-actions {
  display:flex;
  gap:26px;
  align-items:center;
  flex-wrap:wrap;
  margin-top:32px
}
.button {
  display:inline-flex;
  justify-content:center;
  align-items:center;
  min-height:50px;
  padding:12px 25px;
  color:var(--cream);
  background:var(--teal);
  font-size:1rem;
  font-weight:600;
  text-decoration:none;
  border:1px solid transparent;
  transition:background 160ms,border-color 160ms
}
.button:hover {
  background:var(--cobalt)
}
.text-link {
  font-size:1rem;
  font-weight:600;
  color:var(--teal);
  text-underline-offset:6px;
  text-decoration-thickness:1px;
  padding:12px 0
}
.text-link:hover {
  color:var(--cobalt)
}
.research-art {
  position:relative;
  align-self:start;
  margin-top:-26px
}
.hero-svg {
  width:100%;
  overflow:visible
}
.svg-label {
  font-family:var(--sans);
  font-size:10px;
  font-weight:600;
  letter-spacing:1.7px;
  fill:var(--teal)
}
.svg-footnote {
  font-family:var(--sans);
  font-size:8px;
  letter-spacing:1.2px;
  fill:var(--teal)
}
.art-note {
  font-family:var(--serif);
  font-size:.875rem;
  line-height:1.3;
  color:var(--teal);
  position:absolute;
  right:20px;
  bottom:0
}
.hero-bottom {
  grid-column:1/-1;
  display:flex;
  justify-content:space-between;
  gap:20px;
  border-top:1px solid var(--line);
  padding:20px 0;
  color:var(--muted);
  font-size:.875rem;
  margin-top:32px
}
.hero-index {
  font-size:.75rem;
  letter-spacing:.12em;
  font-weight:600;
  align-self:center
}
.evidence {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  padding-top:38px;
  padding-bottom:66px
}
.evidence>div {
  padding:0 28px;
  border-left:1px solid var(--line)
}
.evidence>div:first-child {
  padding-left:0;
  border:0
}
.evidence strong {
  font-size:3.5rem;
  line-height:1;
  letter-spacing:-.06em;
  color:var(--teal);
  font-variant-numeric:tabular-nums
}
.evidence p {
  font-size:.9375rem;
  line-height:1.4;
  margin-top:13px;
  color:var(--muted)
}
@keyframes settle {
  from {
    transform:translate(-14px,12px);
    opacity:.25
  }
  to {
    transform:none;
    opacity:1
  }
}
@keyframes draw {
  from {
    stroke-dashoffset:650
  }
  to {
    stroke-dashoffset:0
  }
}
@keyframes core {
  from {
    transform:scale(.6);
    opacity:.3
  }
  to {
    transform:scale(1);
    opacity:1
  }
}
.art-samples {
  animation:settle 2.4s var(--ease) both
}
.art-connectors path {
  stroke-dasharray:650;
  animation:draw 2.8s var(--ease) both
}
.art-core {
  transform-origin:280px 245px;
  animation:core 1.8s var(--ease) both
}
.art-orbit {
  animation:settle 2s var(--ease) both
}
.section {
  padding-block:100px
}
.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:60px;
  margin-bottom:52px
}
.section-heading .eyebrow {
  margin-bottom:19px
}
.section-heading>p {
  max-width:360px;
  color:var(--muted);
  font-size:1.0625rem;
  padding-bottom:5px
}
.dark-section {
  background:var(--teal);
  color:var(--cream)
}
.dark-section .eyebrow {
  color:var(--cream)
}
.dark-section .section-heading>p {
  color:#d2dfd9
}
.yellow-text {
  color:var(--yellow)
}
.dark-section a:focus-visible,.dark-section button:focus-visible {
  outline-color:var(--yellow)
}
.method-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:32px;
  margin-top:60px
}
.method-grid article {
  position:relative;
  border-top:1px solid #6e979a;
  padding-top:24px
}
.method-grid article::before {
  content:'';
  position:absolute;
  left:0;
  top:-4px;
  width:7px;
  height:7px;
  background:var(--yellow);
  border-radius:50%
}
.method-symbol {
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:28px
}
.method-symbol>span {
  font-size:.875rem;
  color:#d2dfd9;
  font-variant-numeric:tabular-nums
}
.method-symbol svg {
  width:58px;
  height:46px;
  color:var(--yellow)
}
.method-grid h3 {
  font-size:1.75rem;
  letter-spacing:-.025em;
  margin-bottom:14px
}
.method-grid p {
  color:#d2dfd9;
  font-size:1rem;
  line-height:1.6
}
.approach-note {
  margin-top:48px;
  border-top:1px solid #6e979a;
  padding-top:24px;
  font-size:1rem;
  color:var(--cream)
}
.approach-note>span {
  font-size:1.5rem;
  color:var(--yellow);
  margin-right:15px
}
.service-list {
  border-top:1px solid var(--teal)
}
.service {
  border-bottom:1px solid var(--line)
}
summary {
  list-style:none;
  cursor:pointer
}
summary::-webkit-details-marker {
  display:none
}
.service summary {
  display:grid;
  grid-template-columns:46px 1.2fr 1fr 66px 24px;
  align-items:center;
  gap:24px;
  padding:29px 0;
  min-height:114px
}
.service-number {
  font-size:.8125rem;
  align-self:start;
  padding-top:7px;
  color:var(--cobalt);
  letter-spacing:.06em
}
.service-title {
  font-family:var(--serif);
  font-size:1.75rem;
  line-height:1.2;
  letter-spacing:-.025em
}
.service-description {
  font-size:1rem;
  line-height:1.55;
  color:var(--muted)
}
.service-icon {
  width:56px;
  height:44px;
  stroke:var(--teal);
  fill:none;
  stroke-width:4px
}
.service:nth-child(3n+2) .service-icon {
  stroke:var(--cobalt)
}
.service-icon .thin {
  stroke-width:1.5px
}
.plus {
  width:20px;
  height:20px;
  position:relative;
  color:var(--teal);
  flex-shrink:0
}
.plus::before,.plus::after {
  content:'';
  position:absolute;
  left:2px;
  top:9px;
  width:16px;
  height:1px;
  background:currentColor;
  transition:transform 180ms
}
.plus::after {
  transform:rotate(90deg)
}
details[open]>summary .plus::after {
  transform:rotate(0)
}
.service summary:hover .service-title {
  color:var(--teal)
}
.service-detail {
  margin-left:70px;
  padding:0 0 30px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:38px;
  max-width:950px;
  font-size:1rem;
  color:var(--muted)
}
.service-detail ul {
  padding-left:20px;
  margin:0
}
.service-detail li {
  padding-left:4px;
  margin:3px 0
}
.service[open] .service-title {
  color:var(--teal)
}
.work {
  background:var(--sand)
}
.case-study {
  display:grid;
  grid-template-columns:1.08fr 1fr;
  gap:68px;
  align-items:center;
  margin-bottom:80px
}
.case-photo {
  position:relative;
  padding-bottom:30px
}
.case-photo>img {
  width:100%;
  aspect-ratio:1.55;
  object-fit:cover
}
.case-photo>figcaption {
  font-size:.8125rem;
  color:var(--muted);
  line-height:1.45;
  position:absolute;
  bottom:0;
  left:0;
  right:0
}
.photo-index {
  position:absolute;
  top:16px;
  left:16px;
  padding:8px 11px;
  background:var(--cream);
  color:var(--teal);
  font-size:.75rem;
  font-weight:600;
  letter-spacing:.12em
}
.case-copy .eyebrow {
  font-size:.75rem;
  letter-spacing:.1em;
  margin-bottom:18px
}
.case-copy h3 {
  margin-bottom:22px
}
.case-copy>p:not(.eyebrow):not(.outcome) {
  font-size:1rem;
  line-height:1.7;
  color:var(--muted)
}
.case-metrics {
  display:flex;
  gap:30px;
  border-top:1px solid #bcc4ba;
  margin-top:26px;
  padding-top:20px
}
.case-metrics>div {
  flex:1
}
.case-metrics strong {
  display:block;
  font-size:2.25rem;
  letter-spacing:-.045em;
  color:var(--teal);
  line-height:1.2;
  font-variant-numeric:tabular-nums
}
.case-metrics span {
  display:block;
  font-size:.8125rem;
  line-height:1.35;
  color:var(--muted);
  margin-top:5px
}
.outcome {
  font-size:1.0625rem;
  font-weight:600;
  margin-top:23px
}
.outcome>span {
  font-size:.75rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--teal);
  padding:5px 8px;
  background:var(--yellow);
  margin-right:8px
}
.case-study.reverse {
  grid-template-columns:1fr 1.08fr
}
.reverse .case-photo {
  grid-column:2;
  grid-row:1
}
.reverse .case-copy {
  grid-column:1;
  grid-row:1
}
.reverse .case-photo img {
  aspect-ratio:1.55;
  object-position:52% center
}
.work-pair {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:38px
}
.compact-photo {
  height:280px
}
.compact-photo img {
  width:100%;
  height:100%;
  object-fit:cover
}
.compact-copy {
  padding:30px 0 0
}
.compact-copy .eyebrow {
  font-size:.75rem;
  margin-bottom:15px
}
.compact-copy h3 {
  font-size:1.875rem;
  margin-bottom:18px
}
.compact-copy>p:last-child {
  font-size:1rem;
  color:var(--muted);
  max-width:490px
}
.tamil-graphic {
  background:var(--teal);
  color:var(--cream);
  height:280px;
  position:relative;
  padding:26px 30px;
  overflow:hidden
}
.graphic-caption {
  font-size:.75rem;
  letter-spacing:.15em;
  position:relative;
  z-index:1
}
.survey-grid {
  position:absolute;
  right:26px;
  top:56px;
  width:156px;
  height:156px;
  display:grid;
  grid-template-columns:repeat(6,1fr);
  gap:8px;
  transform:rotate(-12deg)
}
.survey-grid::before {
  content:'';
  position:absolute;
  inset:0;
  background:radial-gradient(circle,var(--yellow) 3px,transparent 3px) 0 0/26px 26px
}
.graphic-total {
  display:flex;
  align-items:center;
  gap:20px;
  position:absolute;
  bottom:40px;
  left:30px;
  right:24px
}
.graphic-total strong {
  font-size:5.5rem;
  line-height:1;
  letter-spacing:-.07em;
  color:var(--yellow)
}
.graphic-total>span {
  min-width:0;
  overflow-wrap:anywhere;
  font-size:.75rem;
  letter-spacing:.12em;
  line-height:1.6
}
.graphic-rule {
  position:absolute;
  bottom:27px;
  left:30px;
  right:30px;
  height:1px;
  background:#6e979a
}
.footprint {
  display:grid;
  grid-template-columns:1fr 1.08fr;
  gap:100px
}
.footprint-intro .eyebrow {
  margin-bottom:20px
}
.footprint-intro>p:not(.eyebrow) {
  font-size:1.0625rem;
  color:var(--muted);
  max-width:390px;
  margin-top:26px
}
.footprint-total {
  display:flex;
  gap:24px;
  align-items:center;
  margin-top:38px;
  padding:28px 0;
  border-block:1px solid var(--line)
}
.footprint-total strong {
  font-size:5rem;
  line-height:1;
  letter-spacing:-.06em;
  color:var(--teal)
}
.footprint-total>span {
  font-size:.9375rem;
  line-height:1.5;
  color:var(--muted)
}
.footprint-intro .footprint-note {
  font-size:.9375rem!important;
  line-height:1.6
}
.chart-heading {
  display:flex;
  justify-content:space-between;
  gap:12px;
  font-size:.75rem;
  font-weight:600;
  letter-spacing:.12em;
  color:var(--teal);
  padding-bottom:15px;
  border-bottom:1px solid var(--line)
}
.region-row {
  padding:12px 0 9px
}
.region-button {
  display:flex;
  justify-content:space-between;
  align-items:center;
  width:100%;
  min-height:44px;
  border:0;
  background:none;
  padding:3px 0;
  font-size:1rem;
  text-align:left;
  color:var(--ink)
}
.region-button strong {
  font-size:1.25rem;
  font-variant-numeric:tabular-nums;
  color:var(--teal)
}
.region-button:hover>span {
  text-decoration:underline;
  text-underline-offset:5px
}
.region-button[aria-pressed=true]>span {
  font-weight:600;
  color:var(--cobalt);
  text-decoration:underline;
  text-underline-offset:5px
}
.region-bar {
  height:6px;
  background:var(--sand);
  overflow:hidden
}
.region-bar i {
  display:block;
  height:100%;
  width:var(--bar);
  background:var(--teal);
  transform-origin:left
}
.region-row:has([aria-pressed=true]) .region-bar i {
  background:var(--cobalt)
}
.region-row>p {
  font-size:.8125rem;
  margin-top:6px;
  color:var(--muted)
}
.region-detail {
  background:var(--sand);
  border-left:2px solid var(--cobalt);
  padding:16px 20px;
  margin-top:16px;
  min-height:127px
}
.detail-label {
  font-size:.8125rem;
  font-weight:600;
  color:var(--cobalt)
}
.region-detail p {
  font-size:.9375rem;
  line-height:1.45;
  margin-top:4px
}
.chart-source {
  font-size:.75rem;
  color:var(--muted);
  margin-top:14px
}
.people {
  border-top:1px solid var(--line)
}
.directors {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:44px
}
.portrait-wrap {
  background:var(--sand);
  height:250px;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
  margin-bottom:26px;
  overflow:hidden
}
.portrait-wrap img {
  width:192px;
  height:192px;
  object-fit:contain;
  mix-blend-mode:multiply;
  border-radius:50%
}
.director-number {
  position:absolute;
  left:16px;
  top:12px;
  font-size:.75rem;
  letter-spacing:.1em;
  color:var(--teal)
}
.director .eyebrow {
  font-size:.75rem;
  margin-bottom:9px
}
.director h3 {
  font-size:1.875rem;
  min-height:68px
}
.expertise {
  font-size:.9375rem;
  line-height:1.6;
  color:var(--muted);
  margin-top:17px
}
.bio {
  border-top:1px solid var(--line);
  margin-top:23px
}
.bio summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  font-size:.9375rem;
  font-weight:600;
  color:var(--teal);
  padding:15px 0;
  min-height:48px
}
.bio summary:hover {
  text-decoration:underline;
  text-underline-offset:5px
}
.bio>div {
  padding-bottom:20px
}
.bio>div p {
  font-size:.9375rem;
  color:var(--muted);
  margin-top:12px
}
.values {
  position:relative;
  text-align:center;
  padding:68px 60px 64px;
  border-block:1px solid var(--line);
  margin-top:72px
}
.values-mark {
  font-family:var(--serif);
  color:var(--teal);
  font-size:5rem;
  line-height:1;
  display:block;
  height:52px
}
.values>p {
  font-family:var(--serif);
  font-size:clamp(1.5rem,2.8vw,2.15rem);
  line-height:1.4;
  letter-spacing:-.025em;
  max-width:800px;
  margin:auto
}
.values>p>span {
  overflow-wrap:anywhere;
  color:var(--teal)
}
.values-attribution {
  display:block;
  font-size:.9375rem;
  color:var(--muted);
  margin-top:22px
}
.party-experience {
  display:grid;
  grid-template-columns:1fr 2fr;
  gap:64px;
  margin-top:66px
}
.party-experience h3 {
  font-size:1.75rem
}
.party-experience>div>p {
  font-size:.9375rem;
  line-height:1.6;
  color:var(--muted);
  margin-top:18px
}
.party-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:26px 24px
}
.party-grid figure {
  text-align:center
}
.party-grid img {
  width:54px;
  height:54px;
  object-fit:contain;
  margin:0 auto 10px;
  /* Brochure crops contain square backgrounds. Keep the original artwork,
     with a circular crop aligned to the printed badge rather than blending it. */
  clip-path:circle(48% at 49% 49%);
  border-radius:50%
}
.party-grid figcaption {
  font-size:.75rem;
  line-height:1.35;
  color:var(--muted);
  max-width:140px;
  margin:auto
}
.contact {
  position:relative;
  overflow:hidden
}
.contact-inner {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  gap:80px;
  position:relative;
  z-index:1
}
.contact .eyebrow {
  margin-bottom:22px
}
.contact h2 {
  font-size:clamp(2rem,4.2vw,3.5rem)
}
.contact-description {
  color:#d2dfd9;
  max-width:435px;
  font-size:1.0625rem;
  margin-top:24px
}
.button-yellow {
  background:var(--yellow);
  color:var(--ink);
  margin-top:30px
}
.button-yellow:hover {
  background:var(--yellow);
  border-color:var(--ink)
}
.contact-details {
  padding-top:38px;
  position:relative
}
.questions-list { border-top:1px solid var(--line) }
.questions-list details { border-bottom:1px solid var(--line) }
.questions-list summary { display:flex; justify-content:space-between; align-items:center; gap:24px; padding-block:24px; font-size:1.25rem; font-weight:600; cursor:pointer; list-style:none; overflow-wrap:anywhere }
.questions-list summary::-webkit-details-marker { display:none }
.questions-list p { max-width:850px; padding:0 0 28px; color:var(--muted); overflow-wrap:anywhere }
.questions-list a { color:var(--teal); text-decoration:underline; text-underline-offset:3px }
.contact-form {
  background:var(--cream);
  color:var(--ink);
  padding:clamp(20px,3vw,40px);
  min-width:0;
  align-self:start;
  border-top:4px solid var(--yellow)
}
.contact-form h3 { font-family:var(--serif); font-size:1.625rem; line-height:1.2; letter-spacing:-.025em }
.form-intro { font-size:.875rem; margin:12px 0 24px }
.contact-form label { display:block; font-size:.9375rem; font-weight:600; margin:18px 0 7px }
.contact-form label span { font-weight:400 }
.contact-form input, .contact-form textarea {
  display:block;
  width:100%;
  min-width:0;
  min-height:48px;
  border:1px solid var(--teal);
  border-radius:0;
  background:transparent;
  color:var(--ink);
  font:inherit;
  font-size:1rem;
  line-height:1.5;
  padding:10px 12px;
  transition:border-color 160ms ease
}
.contact-form textarea { resize:vertical; min-height:130px }
.contact .contact-form :focus-visible { outline:3px solid var(--cobalt); outline-offset:3px }
.form-hint, .form-privacy { font-size:.875rem; line-height:1.5; margin-top:8px }
.form-privacy { margin-top:24px }
.contact-form .button { margin-top:18px; width:100%; justify-content:space-between }
.contact-form .button:disabled { cursor:wait; opacity:.75 }
.form-status { font-size:.9375rem; line-height:1.5; margin-top:16px; overflow-wrap:anywhere }
.form-status:empty { margin-top:0 }
.form-status[data-state="error"], .form-status[data-state="success"] { border-left:3px solid var(--teal); padding-left:12px }
.form-trap { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap }
.contact-details .eyebrow {
  font-size:.75rem;
  color:#d2dfd9;
  margin-bottom:11px
}
.contact-details>a {
  display:block;
  text-decoration:none;
  width:fit-content;
  min-height:44px;
  font-size:1.3125rem;
  font-variant-numeric:tabular-nums;
  position:relative;
  z-index:1
}
.contact-details>a:hover {
  text-decoration:underline;
  text-underline-offset:6px
}
.contact-details>a.email-address {
  font-family:var(--serif);
  font-size:clamp(1.5rem,2.6vw,2.15rem);
  letter-spacing:-.035em;
  overflow-wrap:anywhere
}
.contact-details .phone-label {
  margin-top:38px
}
.contact-orbit {
  position:absolute;
  right:-180px;
  bottom:-225px;
  width:360px;
  height:360px;
  border:1px solid #6e979a;
  border-radius:50%;
  pointer-events:none
}
.contact-orbit::after {
  content:'';
  width:14px;
  height:14px;
  border-radius:50%;
  background:var(--yellow);
  position:absolute;
  left:38px;
  top:53px
}
.footer-inner {
  padding-block:30px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:30px
}
.footer-inner>p {
  font-family:var(--serif);
  font-size:.875rem;
  color:var(--teal)
}
.footer-inner>span {
  font-size:.75rem;
  color:var(--muted)
}
.footer-inner .brand img {
  width:70px
}
.footer-inner .brand>span {
  font-size:.8125rem
}
.visual-reveal {
  transition:transform 600ms var(--ease),opacity 600ms var(--ease)
}
.visual-reveal.entering {
  transform:translateY(16px)
}
.visual-reveal>img {
  transition:opacity 600ms var(--ease)
}
.visual-reveal.entering>img {
  opacity:.4
}
.visual-reveal.is-visible>img {
  opacity:1
}
.visual-reveal.is-visible {
  opacity:1;
  transform:none
}
.motion-group.is-visible .method-symbol svg {
  animation:settle 550ms var(--ease) both
}
.motion-group.is-visible article:nth-child(2) svg {
  animation-delay:80ms
}
.motion-group.is-visible article:nth-child(3) svg {
  animation-delay:160ms
}
.motion-group.is-visible article:nth-child(4) svg {
  animation-delay:240ms
}
.service.is-visible .service-icon {
  animation:settle 500ms var(--ease) both
}
.research-breakdown.is-visible .region-bar i {
  animation:bar-reveal 700ms var(--ease) both
}
@keyframes bar-reveal {
  from {
    transform:scaleX(0)
  }
  to {
    transform:scaleX(1)
  }
}
.region-detail.changing {
  animation:detail-in 220ms var(--ease)
}
@keyframes detail-in {
  from {
    opacity:.4
  }
  to {
    opacity:1
  }
}
@media(min-width:1600px) {
  .hero {
    padding-top:88px
  }
  .hero h1 {
    font-size:5rem
  }
}
@media(max-width:1100px) {
  nav {
    gap:20px
  }
  .brand>span {
    display:none
  }
  .hero h1 {
    font-size:3.75rem
  }
  .hero-description {
    font-size:1.125rem
  }
}
@media(max-width:1023px) {
  .container {
    width:calc(100% - 64px)
  }
  .header-inner {
    height:72px
  }
  .brand>span {
    display:block
  }
  .menu-toggle:not([hidden]) {
    display:flex;
    gap:12px;
    align-items:center;
    background:none;
    border:1px solid var(--teal);
    min-height:44px;
    padding:8px 14px;
    font-size:.9375rem;
    color:var(--teal)
  }
  .menu-toggle i,.menu-toggle i::after {
    width:16px;
    height:1px;
    background:currentColor;
    display:block;
    transition:transform 180ms
  }
  .menu-toggle i::after {
    content:'';
    transform:translateY(5px)
  }
  .menu-toggle[aria-expanded=true] i {
    transform:rotate(45deg)
  }
  .menu-toggle[aria-expanded=true] i::after {
    transform:rotate(-90deg)
  }
  .js nav {
    display:none;
    position:absolute;
    top:72px;
    left:0;
    right:0;
    padding:16px 32px 24px;
    background:var(--cream);
    border-bottom:1px solid var(--teal);
    flex-direction:column;
    gap:4px;
    align-items:stretch
  }
  .js nav.is-open {
    display:flex
  }
  .js nav a {
    padding:12px
  }
  nav {
    gap:14px;
    flex-wrap:wrap
  }
  .hero {
    padding-top:52px;
    column-gap:0;
    grid-template-columns:1.1fr 1fr
  }
  .hero h1 {
    font-size:clamp(2.5rem,5.6vw,3.6rem)
  }
  .hero .eyebrow {
    font-size:.75rem
  }
  .hero-description {
    font-size:1.0625rem
  }
  .hero-actions {
    gap:18px
  }
  .research-art {
    margin-top:15px
  }
  .art-note {
    right:0;
    bottom:-25px
  }
  .hero-bottom {
    margin-top:28px
  }
  .evidence {
    grid-template-columns:repeat(2,1fr);
    gap:30px;
    padding-bottom:56px
  }
  .evidence>div:nth-child(3) {
    border:0;
    padding-left:0
  }
}
@media(max-width:639px) {
  html {
    scroll-padding-top:88px
  }
  .container {
    width:calc(100% - 40px)
  }
  .header-inner {
    height:64px
  }
  .brand img {
    width:76px
  }
  .brand {
    gap:10px
  }
  .brand>span {
    font-size:.8125rem;
    padding-left:10px
  }
  .js nav {
    top:64px;
    padding-inline:20px
  }
  .hero {
    display:flex;
    flex-direction:column;
    align-items:stretch;
    padding-top:40px
  }
  .hero-copy {
    padding-bottom:0
  }
  .hero .eyebrow {
    font-size:.75rem;
    line-height:1.6;
    letter-spacing:.075em;
    gap:8px;
    margin-bottom:23px
  }
  .hero h1 {
    font-size:clamp(2.5rem,10.5vw,3rem);
    line-height:1.1
  }
  .hero-description {
    margin-top:22px;
    font-size:1.0625rem
  }
  .hero-actions {
    margin-top:24px;
    gap:20px
  }
  .button {
    padding:12px 18px;
    min-height:48px
  }
  .research-art {
    width:min(100%,370px);
    margin:22px auto 5px
  }
  .art-note {
    bottom:0;
    right:8px;
    font-size:.75rem
  }
  .hero-bottom {
    margin-top:24px;
    padding:16px 0;
    font-size:.8125rem
  }
  .hero-index {
    display:none
  }
  .evidence {
    padding-top:24px;
    padding-bottom:44px;
    gap:26px 16px
  }
  .evidence>div {
    padding-left:16px;
    padding-right:0
  }
  .evidence strong {
    font-size:2.5rem
  }
  .evidence p {
    font-size:.875rem;
    margin-top:10px
  }
  .art-samples,.art-connectors path,.art-orbit,.art-core {
    animation-duration:1.8s
  }
  body {
    font-size:1.0625rem
  }
  nav:not(.js nav) {
    font-size:.75rem
  }
}
@media(max-width:359px) {
  .container {
    width:calc(100% - 32px)
  }
  .brand>span {
    font-size:.75rem
  }
  .brand img {
    width:68px
  }
  .hero-actions {
    gap:12px
  }
  .text-link {
    font-size:.9375rem
  }
  .hero .eyebrow {
    font-size:.75rem
  }
  .hero h1 {
    font-size:2.5rem
  }
}
@media(max-width:1023px) {
  .section {
    padding-block:72px
  }
  .section-heading {
    gap:40px
  }
  .section-heading>p {
    max-width:300px;
    font-size:1rem
  }
  .method-grid {
    grid-template-columns:repeat(2,1fr);
    gap:36px 40px
  }
  .method-symbol {
    margin-bottom:20px
  }
  .method-grid h3 {
    font-size:1.75rem
  }
  .service summary {
    grid-template-columns:30px 1.1fr 1fr 24px;
    gap:18px;
    padding:26px 0
  }
  .service-title {
    font-size:1.4375rem
  }
  .service-icon {
    display:none
  }
  .service-description {
    font-size:.9375rem
  }
  .service-detail {
    margin-left:48px;
    gap:28px
  }
  .case-study,.case-study.reverse {
    gap:36px;
    grid-template-columns:1fr 1fr
  }
  .case-copy h3 {
    font-size:1.75rem
  }
  .case-metrics {
    gap:16px
  }
  .case-metrics strong {
    font-size:1.875rem
  }
  .case-metrics span {
    font-size:.75rem
  }
  .case-photo>img {
    aspect-ratio:1.15
  }
  .reverse .case-photo>img {
    aspect-ratio:1.15
  }
  .case-photo>figcaption {
    font-size:.75rem
  }
  .case-photo {
    padding-bottom:45px
  }
  .work-pair {
    gap:28px
  }
  .compact-photo,.tamil-graphic {
    height:235px
  }
  .graphic-total strong {
    font-size:4.5rem
  }
  .survey-grid {
    width:104px;
    height:130px;
    right:20px;
    top:42px
  }
  .graphic-total>span {
    font-size:.75rem
  }
  .footprint {
    gap:48px;
    grid-template-columns:1fr 1fr
  }
  .footprint-total {
    gap:18px
  }
  .footprint-total strong {
    font-size:4.25rem
  }
  .footprint-total>span {
    font-size:.8125rem
  }
  .directors {
    gap:24px
  }
  .portrait-wrap {
    height:210px
  }
  .portrait-wrap img {
    width:155px;
    height:155px
  }
  .director h3 {
    font-size:1.5rem;
    min-height:55px
  }
  .expertise {
    font-size:.875rem
  }
  .values {
    padding-inline:30px
  }
  .party-experience {
    gap:40px;
    grid-template-columns:1fr 1.7fr
  }
  .party-grid {
    gap:24px 16px
  }
  .party-grid figcaption {
    font-size:.75rem
  }
  .contact-inner {
    gap:46px
  }
  .footer-inner {
    flex-wrap:wrap;
    gap:24px
  }
  .footer-inner>span {
    margin-left:auto
  }
}
@media(max-width:767px) {
  .section-heading {
    display:block
  }
  .section-heading>p {
    max-width:520px;
    margin-top:24px
  }
  .case-study,.case-study.reverse {
    grid-template-columns:1fr;
    gap:24px;
    margin-bottom:52px
  }
  .case-photo>img,.reverse .case-photo>img {
    aspect-ratio:1.7
  }
  .case-photo {
    padding-bottom:35px
  }
  .case-copy h3 {
    font-size:1.875rem
  }
  .reverse .case-photo,.reverse .case-copy {
    grid-column:auto;
    grid-row:auto
  }
  .case-copy .eyebrow {
    margin-bottom:14px
  }
  .case-copy>p:not(.eyebrow):not(.outcome) {
    font-size:1.0625rem
  }
  .case-metrics strong {
    font-size:2.25rem
  }
  .case-metrics span {
    font-size:.875rem
  }
  .work-pair {
    grid-template-columns:1fr;
    gap:44px
  }
  .compact-photo,.tamil-graphic {
    height:280px
  }
  .compact-copy {
    padding-top:25px
  }
  .footprint {
    grid-template-columns:1fr;
    gap:38px
  }
  .footprint-intro>p:not(.eyebrow) {
    max-width:530px
  }
  .footprint-total {
    justify-content:flex-start;
    max-width:450px
  }
  .footprint-total>span {
    font-size:1rem
  }
  .research-breakdown {
    max-width:600px;
    width:100%
  }
  .directors {
    grid-template-columns:1fr;
    gap:38px
  }
  .director {
    display:grid;
    grid-template-columns:170px 1fr;
    column-gap:28px;
    align-content:start
  }
  .portrait-wrap {
    grid-column:1;
    grid-row:1/5;
    height:190px;
    margin:0
  }
  .portrait-wrap img {
    width:150px;
    height:150px
  }
  .director .eyebrow,.director h3,.director .expertise,.director .bio {
    grid-column:2
  }
  .director h3 {
    font-size:1.75rem;
    min-height:0
  }
  .director .expertise {
    margin-top:13px
  }
  .director .bio {
    grid-column:1/-1;
    margin-top:18px
  }
  .director .bio>div {
    max-width:600px
  }
  .party-experience {
    grid-template-columns:1fr;
    gap:32px
  }
  .party-grid {
    grid-template-columns:repeat(4,1fr);
    gap:28px 18px
  }
  .party-grid figcaption {
    font-size:.75rem
  }
  .contact-inner {
    grid-template-columns:1fr;
    gap:48px
  }
  .contact-details {
    padding-top:32px;
    border-top:1px solid #6e979a
  }
  .contact-details>a.email-address {
    font-size:2rem
  }
  .contact-orbit {
    right:-160px;
    bottom:-200px
  }
  .footer-inner>p {
    display:none
  }
}
@media(max-width:639px) {
  .section {
    padding-block:56px
  }
  .section-heading {
    margin-bottom:34px
  }
  .section-heading .eyebrow {
    margin-bottom:16px
  }
  .section-heading>p {
    margin-top:20px;
    font-size:1rem
  }
  .eyebrow {
    font-size:.75rem
  }
  .method-grid {
    grid-template-columns:1fr;
    margin-top:36px;
    gap:28px
  }
  .method-grid article {
    display:grid;
    grid-template-columns:58px 1fr;
    gap:8px 20px;
    padding-top:20px
  }
  .method-symbol {
    grid-column:1;
    grid-row:1/3;
    display:flex;
    flex-direction:column;
    justify-content:flex-start;
    align-items:flex-start;
    gap:15px;
    margin:0
  }
  .method-symbol svg {
    width:44px;
    height:38px
  }
  .method-grid h3 {
    grid-column:2;
    margin:0
  }
  .method-grid p {
    grid-column:2;
    font-size:1rem
  }
  .approach-note {
    margin-top:32px;
    display:flex;
    align-items:flex-start;
    font-size:.9375rem
  }
  .service summary {
    grid-template-columns:26px 1fr 20px;
    gap:12px;
    padding:23px 0;
    min-height:105px
  }
  .service-number {
    grid-row:1/3;
    padding-top:3px
  }
  .service-title {
    font-size:1.375rem;
    grid-column:2
  }
  .service-description {
    grid-column:2;
    font-size:.875rem;
    line-height:1.45
  }
  .service-description br {
    display:none
  }
  .service-description br::after {
    content:' '
  }
  .service summary>.plus {
    grid-column:3;
    grid-row:1/3;
    align-self:center
  }
  .desktop-break {
    display:none
  }
  .service-detail {
    margin-left:38px;
    padding-bottom:24px;
    display:block;
    font-size:.9375rem
  }
  .service-detail ul {
    margin-top:14px
  }
  .case-study,.case-study.reverse {
    margin-bottom:44px
  }
  .case-metrics {
    gap:18px
  }
  .case-metrics strong {
    font-size:2rem
  }
  .case-metrics span {
    font-size:.8125rem
  }
  .case-photo>figcaption {
    font-size:.75rem
  }
  .outcome {
    font-size:.9375rem
  }
  .outcome>span {
    font-size:.75rem
  }
  .compact-photo,.tamil-graphic {
    height:230px
  }
  .compact-copy h3 {
    font-size:1.75rem
  }
  .graphic-total strong {
    font-size:4.5rem
  }
  .graphic-total {
    bottom:34px;
    left:24px
  }
  .tamil-graphic {
    padding:22px 24px
  }
  .graphic-rule {
    left:24px;
    right:24px;
    bottom:22px
  }
  .footprint-total {
    margin-top:28px
  }
  .footprint-total strong {
    font-size:4.5rem
  }
  .footprint-total>span {
    font-size:.875rem
  }
  .footprint-intro>p:not(.eyebrow) {
    font-size:1rem;
    margin-top:22px
  }
  .chart-heading {
    font-size:.75rem
  }
  .region-detail {
    min-height:145px
  }
  .chart-source {
    font-size:.75rem
  }
  .director {
    grid-template-columns:130px 1fr;
    gap:8px 20px
  }
  .portrait-wrap {
    height:160px
  }
  .portrait-wrap img {
    width:122px;
    height:122px
  }
  .director-number {
    left:10px;
    top:8px;
    font-size:.75rem
  }
  .director h3 {
    font-size:1.375rem
  }
  .director .eyebrow {
    margin-bottom:2px;
    font-size:.75rem
  }
  .expertise {
    font-size:.8125rem;
    line-height:1.5
  }
  .director .expertise {
    margin-top:5px
  }
  .values {
    padding:42px 0;
    margin-top:44px
  }
  .values>p {
    font-size:1.75rem
  }
  .values-attribution {
    font-size:.875rem;
    line-height:1.5
  }
  .party-experience {
    margin-top:42px
  }
  .party-grid {
    grid-template-columns:repeat(4,1fr);
    gap:25px 12px
  }
  .party-grid img {
    width:44px;
    height:44px
  }
  .party-grid figcaption {
    font-size:.75rem
  }
  .contact-description {
    font-size:1rem
  }
  .contact-details>a {
    font-size:1.1875rem
  }
  .contact-details>a.email-address {
    font-size:1.75rem
  }
  .footer-inner {
    gap:18px;
    padding-block:25px
  }
  .footer-inner>span {
    font-size:.75rem;
    margin:0
  }
  .footer-inner .brand>span {
    display:block
  }
  .footer-inner .brand img {
    width:65px
  }
}
@media(max-width:359px) {
  .director {
    grid-template-columns:110px 1fr;
    gap:8px 16px
  }
  .portrait-wrap {
    height:145px
  }
  .portrait-wrap img {
    width:104px;
    height:104px
  }
  .director h3 {
    font-size:1.25rem
  }
  .party-grid {
    grid-template-columns:repeat(2,1fr)
  }
  .service-title {
    font-size:1.25rem
  }
  .case-metrics {
    gap:12px
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important
  }
  .art-connectors path {
    stroke-dashoffset:0!important
  }
  .visual-reveal.entering {
    transform:none!important
  }
  .visual-reveal.entering>img {
    opacity:1!important
  }
}
@media(max-width:1023px) {
  html:not(.js) .site-header {
    position:relative
  }
  html:not(.js) .header-inner {
    height:auto;
    min-height:72px;
    flex-wrap:wrap;
    padding-block:14px
  }
  html:not(.js) nav {
    width:100%;
    display:flex;
    gap:4px 18px
  }
  html:not(.js) nav a {
    padding:10px 0
  }
  html:not(.js) nav .nav-contact {
    padding:10px
  }
  html:not(.js) .region-button {
    cursor:default
  }
}
/* Reflow and text enlargement */
main section, .case-copy, .compact-case, .director, .footprint-intro, .research-breakdown, .contact-inner>div {
  min-width:0;
}
.case-study, .case-study.reverse, .work-pair {
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.case-photo {
  padding-bottom:0;
}
.case-photo>figcaption {
  position:static;
  margin-top:10px;
}
.case-metrics {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,6rem),1fr));
}
h1,h2,h3,.eyebrow,.evidence p,.expertise {
  overflow-wrap:anywhere;
}
.evidence {
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.js nav {
  max-height:calc(100dvh - var(--header-height,88px));
  overflow-y:auto;
}
html {
  scroll-padding-top:calc(var(--header-height,88px) + 24px);
}
@media(max-width:1023px) {
  .evidence {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .header-inner {
    height:auto;
    min-height:72px;
    padding-block:12px;
    flex-wrap:wrap;
  }
  .js nav {
    top:100%;
  }
}
@media(max-width:767px) {
  .case-study,.case-study.reverse,.work-pair {
    grid-template-columns:minmax(0,1fr);
  }
}
@media(max-width:639px) {
  .header-inner {
    min-height:64px;
    padding-block:10px;
    gap:12px;
  }
  .menu-toggle {
    margin-left:auto;
  }
  .method-grid article {
    grid-template-columns:58px minmax(0,1fr);
  }
  .director {
    grid-template-columns: minmax(0,.7fr) minmax(0,1fr);
  }
  .region-button {
    gap:16px;
  }
  .region-detail {
    min-height:10rem;
  }
}
.chart-heading {
  flex-wrap:wrap;
}
.party-experience>div {
  min-width:0;
}
@media(max-width:767px) {
  .party-experience {
    grid-template-columns:minmax(0,1fr);
  }
}
@media(max-width:639px) {
  .party-grid {
    grid-template-columns:repeat(auto-fit,minmax(min(100%,4.5rem),1fr));
  }
}
