/* About-page spacing and purpose statement, using shared brand tokens. */
.about-landing-page {
  overflow-x: clip;
}

/* The About hero presents the firm through a warm studio scene while keeping
   the person intentionally in motion rather than implying a staff portrait. */
.about-us-hero {
  background-color: #0a4033;
}

.about-us-hero__media {
  position: absolute;
  z-index: 0;
  inset: 0;
  overflow: hidden;
}

.about-us-hero__media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center center;
}

/* Match the Our Ethos hero's fade-in and continuous photographic drift. */
.about-us-hero__image {
  opacity: 0;
  transform: translate3d(
      var(--hero-ken-burns-from-x),
      var(--hero-ken-burns-from-y),
      0
    )
    scale(var(--hero-ken-burns-from-scale));
  transform-origin: center;
  animation:
    ethosHeroImageReveal var(--hero-image-reveal-duration) var(--hero-image-reveal-ease) both,
    ethosHeroImageDrift var(--hero-image-drift-pass-duration) var(--hero-image-drift-ease) infinite alternate;
  will-change: opacity, transform;
}

@media (max-width: 820px) {
  .about-us-hero__media img {
    /* Keep the moving figure and the leading edge of the brand artwork in the
       narrow crop; the shared lower veil protects the live hero copy. */
    object-position: 50% center;
  }

  .about-us-hero__image {
    transform-origin: center top;
    animation:
      ethosHeroImageReveal var(--hero-image-reveal-duration) var(--hero-image-reveal-ease) both,
      ethosHeroImageDriftMobile var(--hero-image-drift-pass-duration) var(--hero-image-drift-ease) infinite alternate;
  }
}

@media (prefers-reduced-motion: reduce) {
  .about-us-hero__image {
    opacity: 1;
    transform: none;
    animation: none;
    will-change: auto;
  }
}

/* The maps provide their own top padding; avoid stacking full section gaps. */
#about-overview {
  padding-bottom: var(--space-4);
}

.about-why {
  /* Let the purpose statement sit within a generous, self-contained pause. */
  padding-block: clamp(calc(var(--space-9) + var(--space-7)), 12vw, calc(var(--space-9) * 2));
  padding-bottom: clamp(48px, 6vw, 88px);
  background: var(--color-surface-cream);
}

/* Reciprocal link to the implementation formats uses the same split banner
   treatment as the impact link on How We Implement. */
.about-implementation {
  padding: 0 0 clamp(48px, 6vw, 88px);
  background: var(--color-surface-cream);
  color: var(--color-text-inverse);
}

.about-implementation__inner {
  box-sizing: border-box;
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  align-items: stretch;
  height: 340px;
  gap: clamp(28px, 4vw, 64px);
  overflow: hidden;
  border-radius: var(--radius-card);
  background: linear-gradient(115deg, var(--color-brand), #2e7d52);
}

.about-implementation__image {
  min-width: 0;
  margin: 0;
  overflow: hidden;
}

.about-implementation__image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--card-media-zoom-duration) var(--card-media-zoom-ease);
}

@media (hover: hover) and (pointer: fine) {
  .about-implementation__inner:hover .about-implementation__image img {
    transform: scale(var(--card-media-zoom-scale));
  }
}

.about-implementation__inner:focus-within .about-implementation__image img {
  transform: scale(var(--card-media-zoom-scale));
}

@media (max-width: 1100px) and (min-width: 761px) {
  .about-implementation__inner { height: auto; min-height: 340px; }
}

@media (prefers-reduced-motion: reduce) {
  .about-implementation__image img { transition: none; }
  .about-implementation__inner:is(:hover, :focus-within) .about-implementation__image img { transform: none; }
}

.about-implementation__copy {
  align-self: center;
  max-width: 680px;
  padding: clamp(24px, 3vw, 42px) clamp(24px, 3vw, 42px) clamp(24px, 3vw, 42px) 0;
}

.about-implementation h2 {
  margin: 0;
  font: 500 clamp(2rem, 2.7vw, 3rem)/1.1 var(--font-body);
}

.about-implementation p {
  max-width: 580px;
  margin: var(--space-4) 0 0;
  font-size: var(--type-body);
  line-height: var(--leading-body);
}

.about-implementation__link {
  margin-top: var(--space-5);
  border-color: var(--color-surface);
  background: var(--color-surface);
  color: var(--color-brand);
  white-space: nowrap;
}

.about-implementation__link:is(:hover, :focus-visible) {
  border-color: var(--moss);
  background: var(--moss);
  color: var(--color-brand);
}

@media (max-width: 760px) {
  .about-implementation__inner { grid-template-columns: minmax(0, 1fr); gap: 0; height: auto; }
  .about-implementation__image img { height: auto; }
  .about-implementation__copy { max-width: 760px; padding: clamp(24px, 6vw, 42px); }
}

/* The final cream chapter should hand directly into the footer without the
   shared white inter-section gutter. */
.about-landing-page .site-footer {
  margin-top: 0;
}

.about-why__header {
  text-align: center;
}

.about-why__header .section-eyebrow {
  margin: 0 0 var(--space-3);
  color: var(--color-brand);
  font-size: clamp(1.125rem, 1.35vw, 1.375rem);
  line-height: 1.4;
}

.about-why__header h2 {
  margin: 0;
  color: var(--color-brand);
  font: 600 var(--type-heading-lg)/var(--leading-heading) var(--font-body);
}

.about-why__statement {
  max-width: 26ch;
  margin: clamp(var(--space-7), 5vw, var(--space-8)) auto 0;
  /* Deepen the statement's green for large-text contrast on cream. */
  color: color-mix(in srgb, var(--green) 85%, var(--color-brand));
  font: italic 600 var(--type-display-lg)/var(--leading-heading) var(--font-display);
  text-wrap: balance;
}

.about-why__statement .about-why__accent {
  /* Requested editorial accent, scoped to this phrase rather than the shared palette. */
  color: #E28784;
}

/* Reuse the How We Hold word-by-word blur language, but trigger it only when
   this lower-page statement enters view so the transition remains visible. */
.about-why__statement.is-word-reveal-ready .word {
  display: inline-block;
  opacity: 0;
  filter: blur(3px);
  transform: translate3d(-10px, 0, 0);
  will-change: opacity, filter, transform;
}

.about-why__statement.is-word-reveal-visible .word {
  animation: headingWordReveal 1300ms var(--motion-ease-soft) forwards;
  animation-delay: calc(180ms + (var(--word-index) * 170ms));
}

/* This heading opens the next narrative beat. The large pause keeps it from
   reading as a caption attached to the purpose statement above. */
.about-impact-intro {
  scroll-margin-top: 110px;
  margin-top: clamp(78px, 8vw, 120px);
  padding-top: clamp(78px, 8vw, 120px);
  border-top: 1px solid rgba(0, 87, 70, 0.22);
  color: var(--color-brand);
  text-align: center;
}

.about-impact-intro .section-eyebrow {
  margin: 0 0 var(--space-3);
  color: var(--color-brand);
  font-size: clamp(1.125rem, 1.35vw, 1.375rem);
  line-height: 1.4;
}

.about-impact-intro h2 {
  margin: 0;
  color: var(--color-brand);
  font: 600 var(--type-heading-lg)/var(--leading-heading) var(--font-body);
}

.about-impact-intro__copy {
  max-width: 1080px;
  margin: var(--space-5) auto 0;
  color: var(--color-text);
  font-size: var(--type-body-lg);
  line-height: var(--leading-body);
}

.about-impact-intro__hint-visual {
  position: relative;
  display: block;
  width: 46px;
  height: 44px;
  margin: clamp(40px, 4vw, 60px) auto 0;
  color: var(--color-brand-accent);
}

.about-impact-intro__profile-icon {
  display: block;
  width: 40px;
  height: 40px;
  overflow: visible;
}

.about-impact-intro__profile-icon circle:first-child {
  fill: rgba(46, 125, 82, 0.06);
  stroke: currentColor;
  stroke-width: 1;
}

.about-impact-intro__profile-icon circle:nth-child(2),
.about-impact-intro__profile-icon path {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-width: 1.5;
}

.about-impact-intro__pointer-icon {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 18px;
  height: 22px;
  overflow: visible;
  filter: drop-shadow(0 1px 1px rgba(0, 87, 70, 0.14));
}

.about-impact-intro__pointer-icon path {
  fill: var(--color-surface-cream);
  stroke: currentColor;
  stroke-linejoin: round;
  stroke-width: 1.4;
}

.about-impact-intro__hint {
  margin: var(--space-2) 0 0;
  color: var(--color-text-muted);
  font-size: var(--type-body-sm);
  line-height: var(--leading-body);
}

.about-impact-diagram {
  /* Reconstruct the framed page width from the canonical content rail rather
     than using 100vw, which can escape the capped 1520px page canvas. */
  width: min(calc(100% + (2 * var(--page-rail-inset))), 1520px);
  max-width: 1520px;
  margin: clamp(var(--space-7), 6vw, var(--space-9)) 0 0 50%;
  padding-top: clamp(54px, 5vw, 84px);
  padding-bottom: clamp(170px, 13vw, 230px);
  overflow: visible;
  transform: translateX(-50%);
}

.about-impact-diagram__canvas {
  position: relative;
  width: 100%;
  min-width: 960px;
  aspect-ratio: 1920 / 760;
}

.about-impact-diagram__wedge {
  position: absolute;
  z-index: 0;
  top: 17.2%;
  right: 7.4%;
  bottom: 32.6%;
  left: 16.4%;
}

.about-impact-diagram__wedge::before {
  position: absolute;
  content: "";
  inset: 0;
  border-radius: 0 clamp(10px, 1vw, 18px) clamp(10px, 1vw, 18px) 0;
  background: rgba(205, 219, 164, 0.28);
  clip-path: polygon(0 41.76%, 100% 0, 100% 100%, 0 57.73%);
}

.about-impact-node {
  --impact-node-color: #519363;
  position: absolute;
  z-index: 1;
  top: 0;
  bottom: 0;
  width: 17.7%;
  color: var(--impact-node-color);
}

.about-impact-node--momentum { left: 7.56%; }
.about-impact-node--capacity { left: 29.67%; --impact-node-color: var(--color-brand); }
.about-impact-node--innovation { left: 51.78%; --impact-node-color: var(--green); }
.about-impact-node--capability { left: 73.89%; --impact-node-color: #2e7d52; }

.about-impact-node h3 {
  position: absolute;
  top: 8.2%;
  left: 50%;
  margin: 0;
  color: var(--impact-node-color);
  font: 500 clamp(16px, 1.72vw, 33px)/1.2 var(--font-body);
  letter-spacing: 0.03em;
  transform: translateX(-50%);
}

.about-impact-rings {
  position: absolute;
  top: 19.8%;
  left: 0;
  width: 100%;
  aspect-ratio: 1;
}

.about-impact-rings i {
  position: absolute;
  /* Keep the construction rings present as a quiet watermark through every
     filled segment; the ripple brightens this baseline instead of erasing it. */
  border: 1px solid color-mix(in srgb, var(--impact-node-color) 20%, transparent);
  border-radius: 50%;
  background: transparent;
}

/* Sixteen equal radial intervals: four open centre rings hold an icon field,
   while the outer twelve intervals form four equal three-track zones. */
.about-impact-rings i:nth-child(1) { inset: 0; }
.about-impact-rings i:nth-child(2) { inset: 3.125%; }
.about-impact-rings i:nth-child(3) { inset: 6.25%; }
.about-impact-rings i:nth-child(4) { inset: 9.375%; }
.about-impact-rings i:nth-child(5) { inset: 12.5%; }
.about-impact-rings i:nth-child(6) { inset: 15.625%; }
.about-impact-rings i:nth-child(7) { inset: 18.75%; }
.about-impact-rings i:nth-child(8) { inset: 21.875%; }
.about-impact-rings i:nth-child(9) { inset: 25%; }
.about-impact-rings i:nth-child(10) { inset: 28.125%; }
.about-impact-rings i:nth-child(11) { inset: 31.25%; }
.about-impact-rings i:nth-child(12) { inset: 34.375%; }
.about-impact-rings i:nth-child(13) { inset: 37.5%; }
.about-impact-rings i:nth-child(14) { inset: 40.625%; }
.about-impact-rings i:nth-child(15) { inset: 43.75%; }
.about-impact-rings i:nth-child(16) { inset: 46.875%; }

/* Send a quiet line-only ripple from the gallery image towards the outside.
   Reversing the DOM order keeps the innermost ring as the first pulse. */
.about-impact-rings i:nth-child(16) { --impact-ripple-step: 0; }
.about-impact-rings i:nth-child(15) { --impact-ripple-step: 1; }
.about-impact-rings i:nth-child(14) { --impact-ripple-step: 2; }
.about-impact-rings i:nth-child(13) { --impact-ripple-step: 3; }
.about-impact-rings i:nth-child(12) { --impact-ripple-step: 4; }
.about-impact-rings i:nth-child(11) { --impact-ripple-step: 5; }
.about-impact-rings i:nth-child(10) { --impact-ripple-step: 6; }
.about-impact-rings i:nth-child(9) { --impact-ripple-step: 7; }
.about-impact-rings i:nth-child(8) { --impact-ripple-step: 8; }
.about-impact-rings i:nth-child(7) { --impact-ripple-step: 9; }
.about-impact-rings i:nth-child(6) { --impact-ripple-step: 10; }
.about-impact-rings i:nth-child(5) { --impact-ripple-step: 11; }
.about-impact-rings i:nth-child(4) { --impact-ripple-step: 12; }
.about-impact-rings i:nth-child(3) { --impact-ripple-step: 13; }
.about-impact-rings i:nth-child(2) { --impact-ripple-step: 14; }
.about-impact-rings i:nth-child(1) { --impact-ripple-step: 15; }

.about-impact-node--momentum .about-impact-rings i:nth-child(n + 10):nth-child(-n + 12) {
  background: #519363;
}

.about-impact-node--capacity .about-impact-rings i:nth-child(n + 7):nth-child(-n + 9) {
  background: var(--color-brand);
}

.about-impact-node--innovation .about-impact-rings i:nth-child(n + 4):nth-child(-n + 6) {
  background: var(--green);
}

.about-impact-node--capability .about-impact-rings i:nth-child(-n + 3) {
  background: #2e7d52;
}

.about-impact-node--momentum .about-impact-rings i:nth-child(n + 13),
.about-impact-node--capacity .about-impact-rings i:nth-child(n + 10),
.about-impact-node--innovation .about-impact-rings i:nth-child(n + 7),
.about-impact-node--capability .about-impact-rings i:nth-child(n + 4) {
  background: var(--color-surface-cream);
}

.about-impact-rings__icon {
  position: absolute;
  z-index: 3;
  /* Slightly overlap the innermost construction ring so the white centre has
     no visible keyline at any pixel density. */
  inset: 37%;
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 0;
  border-radius: 50%;
  background: #fff;
  box-shadow: none;
  color: var(--impact-node-color);
  transform: scale(1);
  transform-origin: center;
}

.about-impact-rings__icon img {
  width: 100%;
  height: 100%;
  display: block;
  border-radius: inherit;
  object-fit: cover;
}

.about-impact-node--innovation .about-impact-rings__icon img {
  transform: scale(1);
}

.about-impact-orbits,
.about-impact-orbiter {
  position: absolute;
  z-index: 4;
  inset: 0;
  pointer-events: none;
}

.about-impact-orbits {
  opacity: 0;
  transition: opacity 700ms var(--motion-ease-soft) 5600ms;
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-orbits {
  opacity: 1;
}

.about-impact-orbiter {
  animation: impactClientOrbit var(--orbit-duration) linear var(--orbit-delay) infinite;
  transform-origin: center;
}

.about-impact-orbiter:has(.about-impact-client:hover),
.about-impact-orbiter:focus-within,
.about-impact-orbiter.is-active {
  z-index: 100;
}

.about-impact-orbiter.is-reverse {
  animation-name: impactClientOrbitReverse;
}

.about-impact-orbit-point {
  --impact-client-size: clamp(28px, 2vw, 38px);
  position: absolute;
  top: 50%;
  left: var(--orbit-position);
  pointer-events: none;
  transform: translate(-50%, -50%);
  animation: impactClientCounterOrbit var(--orbit-duration) linear var(--orbit-delay) infinite;
}

.about-impact-orbiter.is-reverse .about-impact-orbit-point {
  animation-name: impactClientCounterOrbitReverse;
}

/* Keep each set of client stories on the filled band that represents that
   impact stage, moving progressively outward from Momentum to Capability. */
.about-impact-node--momentum .about-impact-orbiter { --orbit-position: 67.1875%; }
.about-impact-node--capacity .about-impact-orbiter { --orbit-position: 76.5625%; }
.about-impact-node--innovation .about-impact-orbiter { --orbit-position: 85.9375%; }
.about-impact-node--capability .about-impact-orbiter { --orbit-position: 95.3125%; }

.about-impact-client {
  position: relative;
  z-index: 2;
  width: var(--impact-client-size);
  height: var(--impact-client-size);
  display: block;
  padding: 0;
  overflow: visible;
  border: 2px solid var(--color-surface-cream);
  border-radius: 50%;
  background: var(--color-surface-cream);
  box-shadow: 0 7px 18px rgba(21, 25, 26, 0.2);
  pointer-events: auto;
  cursor: pointer;
  transition: box-shadow 240ms var(--motion-ease), transform 240ms var(--motion-ease);
}

/* Match the homepage testimonial pulse exactly, anchored to the portrait
   itself so the ring remains concentric at every orbit position. */
.about-impact-client::before {
  position: absolute;
  z-index: 0;
  border: 2px solid var(--testimonial-avatar-pulse-color);
  border-radius: 50%;
  content: "";
  inset: -5px;
  pointer-events: none;
  animation: testimonial-avatar-pulse var(--testimonial-avatar-pulse-duration) var(--motion-ease) infinite;
}

.about-impact-client img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  display: block;
  border-radius: inherit;
  object-fit: cover;
}

.about-impact-client:hover,
.about-impact-client:focus-visible,
.about-impact-orbiter.is-active .about-impact-client {
  box-shadow: 0 10px 24px rgba(0, 87, 70, 0.3);
  outline: 2px solid var(--color-brand);
  outline-offset: 3px;
  transform: scale(1.08);
}

.about-impact-client-card {
  position: absolute;
  z-index: 8;
  bottom: calc(100% + 14px);
  left: 50%;
  width: min(280px, calc(100vw - 48px));
  padding: 18px;
  border: 1px solid color-mix(in srgb, var(--color-brand) 16%, transparent);
  border-radius: var(--radius-card);
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 18px 42px rgba(21, 25, 26, 0.18);
  color: var(--slate);
  opacity: 0;
  pointer-events: none;
  text-align: left;
  transform: translate(calc(-50% + var(--card-nudge-x, 0px)), 8px);
  transition: opacity 220ms ease, transform 280ms var(--motion-ease);
}

.about-impact-client-card.is-below {
  top: calc(100% + 14px);
  bottom: auto;
}

.about-impact-client-card blockquote {
  margin: 0;
  color: var(--slate);
  font: 400 13px/1.5 var(--font-body);
}

.about-impact-client-card p {
  position: static;
  width: auto;
  margin: 13px 0 0;
  color: var(--color-brand);
  font: 400 11px/1.35 var(--font-body);
  letter-spacing: 0;
  text-align: left;
  transform: none;
}

.about-impact-client-card strong,
.about-impact-client-card span {
  display: block;
}

.about-impact-client-card strong {
  font-weight: 600;
}

.about-impact-client-card span {
  margin-top: 3px;
  color: var(--slate);
}

.about-impact-client:hover + .about-impact-client-card,
.about-impact-client:focus-visible + .about-impact-client-card,
.about-impact-orbiter.is-active .about-impact-client-card {
  opacity: 1;
  transform: translate(calc(-50% + var(--card-nudge-x, 0px)), 0);
}

.about-impact-node:hover,
.about-impact-node:focus-within,
.about-impact-node:has(.about-impact-orbiter.is-active) {
  z-index: 12;
}

.about-impact-node:hover :is(.about-impact-orbiter, .about-impact-orbit-point),
.about-impact-node:focus-within :is(.about-impact-orbiter, .about-impact-orbit-point) {
  animation-play-state: paused;
}

@keyframes impactClientOrbit {
  to { transform: rotate(1turn); }
}

@keyframes impactClientOrbitReverse {
  to { transform: rotate(-1turn); }
}

@keyframes impactClientCounterOrbit {
  to { transform: translate(-50%, -50%) rotate(-1turn); }
}

@keyframes impactClientCounterOrbitReverse {
  to { transform: translate(-50%, -50%) rotate(1turn); }
}

@keyframes impactRingRipple {
  0%, 30%, 100% {
    border-color: color-mix(in srgb, var(--impact-node-color) 20%, transparent);
  }
  9% {
    border-color: color-mix(in srgb, var(--impact-node-color) 64%, transparent);
  }
  17% {
    border-color: color-mix(in srgb, var(--impact-node-color) 32%, transparent);
  }
}

.about-impact-diagram__time-key {
  position: absolute;
  z-index: 3;
  top: -13%;
  right: 8.41%;
  left: 7.56%;
  display: grid;
  grid-template-columns: auto minmax(80px, 1fr) auto;
  align-items: center;
  gap: 0;
  color: #ffffff;
  font: 500 clamp(10px, 0.68vw, 13px)/1 var(--font-body);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.about-impact-diagram__time-tab {
  position: relative;
  z-index: 1;
  display: inline-flex;
  min-height: clamp(34px, 2.7vw, 48px);
  align-items: center;
  justify-content: center;
  border-radius: 5px;
  padding: clamp(10px, .8vw, 14px) clamp(14px, 1.5vw, 28px);
  color: #ffffff;
  white-space: nowrap;
}

.about-impact-diagram__time-tab--near {
  background: #6e9c56;
}

.about-impact-diagram__time-tab--mid {
  background: #2e7d52;
}

.about-impact-diagram__time-key i {
  position: relative;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(81, 147, 99, .7) 0,
    rgba(81, 147, 99, .7) calc(100% - 20px),
    transparent calc(100% - 20px),
    transparent 100%
  );
}

.about-impact-diagram__time-key i::after {
  position: absolute;
  top: 50%;
  right: 12px;
  width: 7px;
  height: 7px;
  content: "";
  border-top: 2px solid #6e9c56;
  border-right: 2px solid #6e9c56;
  transform: translateY(-50%) rotate(45deg);
}

.about-impact-node__bracket {
  position: absolute;
  top: 70.5%;
  right: 0;
  left: 0;
  height: 4.1%;
  border-right: 1px solid var(--color-brand);
  border-bottom: 1px solid var(--color-brand);
  border-left: 1px solid var(--color-brand);
}

.about-impact-node__bracket span {
  position: absolute;
  z-index: 1;
  bottom: -5px;
  left: 50%;
  padding-inline: 9px;
  background: var(--color-surface-cream);
  color: var(--color-brand);
  font: 500 clamp(11px, 0.72vw, 14px)/1 var(--font-body);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  white-space: nowrap;
  transform: translateX(-50%);
}

.about-impact-node__copy {
  position: absolute;
  top: 81.8%;
  left: 50%;
  width: 112%;
  margin: 0;
  color: var(--slate);
  font: 300 clamp(12px, 1.04vw, 20px)/1.4 var(--font-body);
  letter-spacing: 0.03em;
  text-align: center;
  text-wrap: balance;
  transform: translateX(-50%);
}

.about-impact-diagram__plus {
  position: absolute;
  z-index: 2;
  top: 42.16%;
  width: clamp(23px, 2vw, 38px);
  aspect-ratio: 1;
  color: #2e7d52;
  font-size: 0;
  transform: translate(-50%, -50%);
}

.about-impact-diagram__plus::before,
.about-impact-diagram__plus::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 58%;
  height: 1.5px;
  content: "";
  background: currentColor;
  transform: translate(-50%, -50%);
}

.about-impact-diagram__plus::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.about-impact-diagram__plus--one { left: 27.465%; }
.about-impact-diagram__plus--two { left: 49.575%; }
.about-impact-diagram__plus--three { left: 71.685%; }

.about-impact-diagram__innovation-band {
  position: absolute;
  z-index: 2;
  right: 8.41%;
  bottom: -27%;
  left: 7.56%;
  display: flex;
  align-items: center;
  gap: clamp(12px, 1.2vw, 22px);
  color: var(--color-brand);
  font: 600 clamp(15px, 1vw, 19px)/1 var(--font-body);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.about-impact-diagram__innovation-band::before,
.about-impact-diagram__innovation-band::after {
  height: 9px;
  flex: 1 1 auto;
  align-self: flex-start;
  margin-top: 0.34em;
  content: "";
  background: rgba(0, 87, 70, 0.34);
}

.about-impact-diagram__innovation-label {
  display: flex;
  max-width: min(520px, 48vw);
  flex: 0 1 auto;
  flex-direction: column;
  align-items: center;
  gap: clamp(8px, 0.8vw, 12px);
  text-align: center;
}

.about-impact-diagram__innovation-label strong {
  font: inherit;
}

.about-impact-diagram__innovation-label small {
  color: var(--slate);
  font: 400 clamp(12px, 0.86vw, 16px)/1.45 var(--font-body);
  letter-spacing: 0.02em;
  text-transform: none;
  text-wrap: balance;
}

.about-impact-diagram__innovation-band::before {
  clip-path: polygon(0 50%, 8px 0, 8px 44%, 100% 44%, 100% 56%, 8px 56%, 8px 100%);
}

.about-impact-diagram__innovation-band::after {
  clip-path: polygon(0 44%, calc(100% - 8px) 44%, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, calc(100% - 8px) 56%, 0 56%);
}

/* The coded framework reveals concentrically within each system, then hands
   the sequence to the next system from left to right. */
.about-impact-diagram.is-impact-reveal-ready .about-impact-diagram__wedge {
  opacity: 1;
  clip-path: inset(0 100% 0 0);
  transition:
    clip-path 1900ms var(--motion-ease-soft) 2880ms;
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-node h3,
.about-impact-diagram.is-impact-reveal-ready .about-impact-node__copy {
  opacity: 0;
  transition: opacity 520ms var(--motion-ease-soft), transform 700ms var(--motion-ease-soft);
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-node h3 {
  transform: translate(-50%, 10px);
  transition-delay: calc(120ms + var(--impact-node-delay));
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-rings i {
  opacity: 0;
  transform: scale(0.78);
  transform-origin: center;
  transition:
    opacity 420ms var(--motion-ease-soft),
    transform 680ms var(--motion-ease-soft);
  transition-delay: calc(180ms + var(--impact-ring-delay));
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-rings__icon {
  opacity: 0;
  transform: scale(0.72);
  transition:
    opacity 440ms var(--motion-ease-soft),
    transform 680ms var(--motion-ease-soft);
  transition-delay: calc(520ms + var(--impact-node-delay));
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-node__bracket {
  opacity: 0;
  clip-path: inset(0 100% 0 0);
  transition:
    opacity 260ms var(--motion-ease-soft),
    clip-path 620ms var(--motion-ease-soft);
  transition-delay: calc(720ms + var(--impact-node-delay));
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-node__copy {
  transform: translate(-50%, 12px);
  transition-delay: calc(850ms + var(--impact-node-delay));
}

.about-impact-diagram.is-impact-reveal-ready .about-impact-diagram__plus {
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.3) rotate(-45deg);
  transition:
    opacity 320ms var(--motion-ease-soft),
    transform 560ms var(--motion-ease-soft);
  transition-delay: calc(980ms + var(--impact-plus-delay));
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-diagram__wedge {
  opacity: 1;
  clip-path: inset(0);
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-node h3 {
  opacity: 1;
  transform: translate(-50%, 0);
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-rings i {
  opacity: 1;
  transform: scale(1);
  animation: impactRingRipple 6.2s ease-in-out calc(900ms + (var(--impact-ripple-step) * 92ms)) infinite;
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-rings__icon {
  opacity: 1;
  transform: scale(1);
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-node__bracket {
  opacity: 1;
  clip-path: inset(-16px -12px -16px -12px);
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-node__copy {
  opacity: 1;
  transform: translate(-50%, 0);
}

.about-impact-diagram.is-impact-reveal-visible .about-impact-diagram__plus {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1) rotate(0);
}

@media (max-width: 560px) {
  .about-why { padding-block: var(--space-9); }

  .about-impact-intro {
    margin-top: clamp(68px, 20vw, 92px);
    padding-top: clamp(68px, 20vw, 92px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .about-why__statement.is-word-reveal-ready .word {
    opacity: 1;
    filter: none;
    transform: none;
    animation: none;
    will-change: auto;
  }

  .about-impact-diagram.is-impact-reveal-ready :is(
    .about-impact-diagram__wedge,
    .about-impact-node h3,
    .about-impact-rings i,
    .about-impact-rings__icon,
    .about-impact-node__bracket,
    .about-impact-node__copy,
    .about-impact-diagram__plus
  ) {
    opacity: 1;
    transform: none;
    clip-path: none;
    transition: none;
  }

  .about-impact-diagram.is-impact-reveal-ready .about-impact-node h3,
  .about-impact-diagram.is-impact-reveal-ready .about-impact-node__copy {
    transform: translate(-50%, 0);
  }

  .about-impact-diagram.is-impact-reveal-ready .about-impact-rings__icon {
    transform: scale(1);
  }

  .about-impact-diagram.is-impact-reveal-ready .about-impact-diagram__plus {
    transform: translate(-50%, -50%);
  }

  .about-impact-orbits {
    opacity: 1;
    transition: none;
  }

  .about-impact-orbiter,
  .about-impact-orbit-point {
    animation: none;
  }

  .about-impact-diagram.is-impact-reveal-visible .about-impact-rings i {
    animation: none;
  }

  .about-impact-client::before {
    display: none;
    animation: none;
  }

  .about-impact-orbiter--1 { transform: rotate(0deg); }
  .about-impact-orbiter--2 { transform: rotate(120deg); }
  .about-impact-orbiter--3 { transform: rotate(240deg); }

  .about-impact-orbiter--1 .about-impact-orbit-point {
    transform: translate(-50%, -50%) rotate(0deg);
  }

  .about-impact-orbiter--2 .about-impact-orbit-point {
    transform: translate(-50%, -50%) rotate(-120deg);
  }

  .about-impact-orbiter--3 .about-impact-orbit-point {
    transform: translate(-50%, -50%) rotate(-240deg);
  }
}

/* Responsive impact layout: preserve the coded elements without trapping the
   page inside a horizontally scrolling diagram. */
@media (max-width: 1180px) {
  .about-impact-diagram {
    width: 100%;
    margin-inline: auto;
    padding-block: 0;
    overflow: visible;
    transform: none;
  }

  .about-impact-diagram__canvas {
    width: 100%;
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(72px, 10vw, 112px) clamp(28px, 6vw, 64px);
    aspect-ratio: auto;
  }

  .about-impact-diagram__wedge,
  .about-impact-diagram__plus {
    display: none;
  }

  .about-impact-diagram__time-key {
    position: relative;
    inset: auto;
    grid-column: 1 / -1;
    width: 100%;
    margin-bottom: clamp(44px, 7vw, 72px);
  }

  .about-impact-diagram__innovation-band {
    position: relative;
    inset: auto;
    grid-column: 1 / -1;
    width: 100%;
    margin-top: clamp(44px, 7vw, 72px);
  }

  .about-impact-node,
  .about-impact-node--momentum,
  .about-impact-node--capacity,
  .about-impact-node--innovation,
  .about-impact-node--capability {
    position: relative;
    inset: auto;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .about-impact-node h3 {
    position: static;
    margin: 0;
    font-size: clamp(23px, 3.4vw, 30px);
    transform: none;
  }

  .about-impact-rings {
    position: relative;
    top: auto;
    left: auto;
    width: min(76%, 300px);
    margin-top: clamp(34px, 5vw, 46px);
  }

  .about-impact-node__bracket {
    position: relative;
    top: auto;
    right: auto;
    left: auto;
    width: min(88%, 340px);
    height: 28px;
    margin-top: clamp(22px, 3vw, 32px);
    margin-bottom: 18px;
  }

  .about-impact-node__bracket span {
    bottom: -5px;
    font-size: 11px;
  }

  .about-impact-node__copy {
    position: static;
    width: min(100%, 36ch);
    margin: 24px 0 0;
    font-size: clamp(15px, 2vw, 18px);
    transform: none;
  }

  .about-impact-diagram.is-impact-reveal-ready .about-impact-node h3,
  .about-impact-diagram.is-impact-reveal-ready .about-impact-node__copy {
    transform: translateY(10px);
  }

  .about-impact-diagram.is-impact-reveal-visible .about-impact-node h3,
  .about-impact-diagram.is-impact-reveal-visible .about-impact-node__copy {
    transform: translateY(0);
  }
}

@media (max-width: 640px) {
  .about-impact-diagram__canvas {
    grid-template-columns: minmax(0, 1fr);
    gap: 72px;
  }

  .about-impact-diagram__time-key {
    grid-template-columns: minmax(0, 1fr) 32px minmax(0, 1fr);
    margin-bottom: 0;
    font-size: 9px;
    letter-spacing: .06em;
  }

  .about-impact-diagram__time-tab {
    width: 100%;
    min-width: 0;
    min-height: 42px;
    padding: 9px 7px;
  }

  .about-impact-rings {
    width: min(84%, 300px);
  }

  .about-impact-node__copy {
    width: min(100%, 32ch);
    font-size: 16px;
  }
}

/* Toronto owns the highest label layer. Regional labels use measured positions
   rather than transforms so collision checks match their displayed rectangles. */
.presence-map__office-callout { z-index: 12; }
.presence-map__tooltip,
.presence-map__tooltip.is-visible { transform: none; z-index: 8; }
.presence-map__tooltip::after { display: none; }
.presence-map__tooltip.is-label-revealing {
  animation: presence-label-reveal var(--motion-slow) var(--motion-ease) both;
}
@keyframes presence-label-reveal { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .presence-map__tooltip.is-label-revealing { animation: none; }
}
.presence-tour-control {
  grid-column: 1 / -1;
  justify-self: start;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid currentColor;
  border-radius: var(--radius-pill);
  color: var(--color-brand);
  background: transparent;
  font: inherit;
  cursor: pointer;
}
.presence-tour-control:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.presence-tour-control:disabled { cursor: default; }
