/*
 * Stylesheet entry for /capabilities/
 *
 * The partials below were authored as successive override layers, so the
 * cascade depends on this exact order. Keep new rules in the most specific
 * partial and append rather than reorder. See src/styles/README.md.
 *//* Shared project-detail banner system. */
.hero-text {
  padding: 72px var(--pad) 56px;
  max-width: none;
  margin: 0;
}

.hero-text .case-heading {
  font-size: clamp(36px, 4.2vw, 64px);
  line-height: 1.12;
  max-width: 1100px;
  margin: 0;
}

@media (max-width: 640px) {
  .hero-text {
    padding: 44px var(--pad) 40px;
  }
}

.headline-line {
  display: block;
}

@media (max-width: 640px) {
  .headline-line {
    text-wrap: balance;
  }
}

.hero-text .case-heading {
  font:
    500 clamp(36px, 4.2vw, 64px)/1.12 var(--font-manrope),
    sans-serif;
  letter-spacing: -0.055em;
  max-width: 1250px;
}
.hero-text .case-introduction {
  font-size: clamp(18px, 1.4vw, 21px);
  line-height: 1.65;
  color: #757972;
  max-width: 780px;
  margin-top: 32px;
}
.hero-text .case-introduction p + p {
  margin-top: 24px;
}
@media (max-width: 640px) {
  .hero-text .case-heading {
    font-size: clamp(32px, 7.8vw, 42px);
  }
  .hero-text .case-introduction {
    font-size: 17px;
    line-height: 1.7;
  }
}

/* Compact, consistently aligned case-study opening. */
body header,
body.utec-page header {
  padding-top: 12px;
  padding-bottom: 12px;
}
.fyi-nav-logo {
  width: 50px;
  height: 68px;
  flex-basis: 50px;
}
.fyi-nav-logo img {
  width: 78.4px;
  height: 87.2px;
  left: -12.4px;
  top: -10px;
}
.hero-text {
  padding: 32px var(--pad) 30px !important;
  max-width: none;
  margin: 0;
}

.hero-text .case-heading {
  font-size: clamp(38px, 4vw, 60px);
  line-height: 1.12;
  max-width: 1250px;
  margin: 0;
}
.hero-text .case-introduction {
  font-size: 18px;
  line-height: 1.55;
  max-width: 760px;
  margin: 24px 0 0;
}
.hero-text .case-introduction p + p {
  margin-top: 14px;
}
@media (max-width: 640px) {
  .hero-text {
    padding-top: 24px !important;
    padding-bottom: 26px !important;
  }

  .hero-text .case-heading {
    font-size: clamp(30px, 7.6vw, 40px);
  }
  .hero-text .case-introduction {
    font-size: 16px;
    line-height: 1.6;
    margin-top: 20px;
  }
}

/* Original IndiaNext campaign artwork retains its full composition. */

/* Shared project navigation and balanced artwork galleries. */
.project-navigation {
  position: relative;
  margin-left: auto;
  flex-shrink: 0;
  z-index: 30;
}
.project-menu-button {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  padding: 10px;
  background: none;
  border: 0;
  border-radius: 0;
}
.project-menu-button span {
  display: block;
  width: 23px;
  height: 2px;
  background: var(--ink);
  transition:
    transform 0.2s,
    opacity 0.2s;
}
.project-menu-button[aria-expanded='true'] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.project-menu-button[aria-expanded='true'] span:nth-child(2) {
  opacity: 0;
}
.project-menu-button[aria-expanded='true'] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}
/* Align the visible Deoria mark, accounting for transparent padding in the PDF asset. */

/* Uniform Deoria photo frames, independent of HTML intrinsic dimensions. */

/* Consistent aspect ratios without relying on each source file’s height attribute. */
.testimonials-section {
  padding: 70px var(--pad) 90px;
  border-top: 1px solid var(--line);
}
.testimonial-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 50px;
  margin-top: 36px;
}
.testimonial-grid figure {
  border-top: 1px solid var(--line);
  padding-top: 24px;
  min-width: 0;
}
.testimonial-grid blockquote {
  font:
    500 clamp(23px, 2.3vw, 34px)/1.45 var(--font-manrope),
    sans-serif;
  letter-spacing: -0.03em;
  margin: 0;
}
.testimonial-grid figcaption {
  margin-top: 24px;
  color: var(--muted);
  font-size: 13px;
}
@media (max-width: 640px) {
  .testimonial-grid {
    grid-template-columns: 1fr;
    gap: 36px;
  }
  .testimonials-section {
    padding: 55px var(--pad);
  }
}

/* Shared breathing room, with the banner still visible below the introduction. */
.hero-text {
  padding: 48px var(--pad) 48px !important;
}

.hero-text .case-introduction {
  margin-top: 32px;
  line-height: 1.6;
}
.hero-text .case-introduction p + p {
  margin-top: 20px;
}
.utec-chapter {
  padding-top: 112px;
  padding-bottom: 112px;
}
.utec-prose p + p {
  margin-top: 26px;
}
.testimonials-section {
  padding-top: 88px;
  padding-bottom: 104px;
}
.testimonial-grid {
  margin-top: 44px;
  gap: 56px;
}
@media (max-width: 640px) {
  .hero-text {
    padding: 32px var(--pad) 36px !important;
  }

  .hero-text .case-introduction {
    margin-top: 26px;
  }
  .hero-text .case-introduction p + p {
    margin-top: 18px;
  }
  .utec-chapter {
    padding-top: 64px;
    padding-bottom: 64px;
  }
  .testimonials-section {
    padding-top: 64px;
    padding-bottom: 72px;
  }
  .testimonial-grid {
    margin-top: 32px;
    gap: 40px;
  }
}

/* Parivartan Shala follows the shared project format. */
.learning-page .story-nav {
  gap: 32px;
  overflow-x: auto;
  white-space: nowrap;
}
@media (max-width: 900px) {
  .learning-page .story-nav {
    justify-content: flex-start;
  }
}

/* Horizontal scope rows with replaceable image cards. */

/* Side-by-side scope cards with image, heading and description. */

/* Original credential artwork retains its full composition. */

/* Fit PDF artwork to its actual content bounds, without altering the source assets. */

/* IndiaNext: people-led banner and complete programme artwork. */

/* J12 follows the shared project introduction and chapter rhythm. */

/* J12 numbers remain in one row, with no divider rules. */
/* Scope titles and descriptions travel together in a horizontal card rail. */
/* Paired J12 galleries share image heights and caption baselines. */

/* Complete navigation on every project page. */
.project-navigation {
  position: relative;
}
.project-menu-button {
  display: none;
}
.site-primary-menu {
  display: flex;
  align-items: center;
  gap: clamp(20px, 2.5vw, 40px);
}
.site-primary-menu > a,
.case-study-toggle {
  font-size: 15px;
  line-height: 1.5;
  white-space: nowrap;
  padding: 14px 0;
}
.site-primary-menu > a:hover,
.case-study-toggle:hover {
  color: #00834b;
}
/* Fade like the header's links (editorial-refinement.css). */
.case-study-toggle {
  transition: color 0.65s;
}
.case-study-dropdown {
  position: relative;
}
.case-study-toggle {
  display: flex;
  align-items: center;
  gap: 9px;
  background: none;
  border: 0;
  text-align: left;
}
.case-study-menu {
  position: absolute;
  top: calc(100% + 14px);
  left: 0;
  width: 280px;
  background: var(--paper);
  padding: 18px 24px;
  border: 1px solid var(--line);
  box-shadow: 0 14px 40px #152d2014;
  z-index: 80;
}
.case-study-menu[hidden] {
  display: none;
}
.case-study-menu a {
  display: block;
  width: fit-content;
  margin: 0 0 5px;
  padding: 11px 0 8px;
  border-bottom: 2px solid transparent;
  font-size: 16px;
}
.case-study-menu a:hover,
.case-study-menu a[aria-current='page'] {
  color: #00834b;
}
.case-study-menu a[aria-current='page'] {
  font-weight: 500;
  border-bottom-color: var(--green);
}
@media (max-width: 900px) {
  .project-menu-button {
    display: flex;
  }
  .site-primary-menu {
    display: none;
    position: absolute;
    right: 0;
    top: calc(100% + 16px);
    width: min(340px, calc(100vw - 44px));
    max-height: calc(100dvh - 140px);
    overflow-y: auto;
    padding: 20px 24px;
    background: var(--paper);
    border: 1px solid var(--line);
    box-shadow: 0 14px 40px #152d2014;
    z-index: 80;
  }
  .site-primary-menu.is-open {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
  .site-primary-menu > a,
  .case-study-toggle {
    font-size: 18px;
    padding: 14px 0;
  }
  .case-study-toggle {
    width: 100%;
    justify-content: space-between;
  }
  .case-study-menu {
    position: static;
    width: 100%;
    padding: 4px 0 12px 18px;
    border: 0;
    border-left: 2px solid var(--green);
    box-shadow: none;
    margin: 0 0 14px;
  }
  .case-study-menu a {
    font-size: 16px;
  }
}

/* Keep paragraph endings together and distribute lines naturally. */
p,
blockquote {
  text-wrap: pretty;
  word-break: normal;
  overflow-wrap: normal;
}

/* Two complete artwork cards and two evenly aligned event photographs. */
.indianext-event-grid {
  grid-column: 1/-1;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px;
  margin-top: 36px;
  min-width: 0;
  align-items: start;
}
.indianext-event-card {
  margin: 0;
  min-width: 0;
}
.indianext-event-photo {
  position: relative;
  width: 100%;
  aspect-ratio: 1136/400;
  overflow: hidden;
  background: #181523;
}
.indianext-event-photo img {
  position: absolute;
  display: block;
  max-width: none;
  width: 169.014085%;
  height: auto !important;
  left: -58.978873%;
  object-fit: fill;
}
.indianext-event-stage img {
  top: -32.5%;
}
.indianext-event-performance img {
  top: -138%;
}
.indianext-event-card figcaption {
  margin-top: 16px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--muted);
}
@media (max-width: 640px) {
  .indianext-event-grid {
    grid-template-columns: 1fr;
    gap: 28px;
  }
}

/* Programme exhibitions use complete individual photos in matching cards. */
.indianext-exhibition-photo {
  aspect-ratio: 532/400;
  background: #161513;
}
.indianext-exhibition-photo img {
  width: 360.902256%;
  left: -21.804511%;
}
.indianext-exhibition-first img {
  top: -32.5%;
}
.indianext-exhibition-second img {
  top: -138%;
}

/* Tata Structura follows the shared case study typography and spacing. */

/* Enhanced event previews: taller cards, with the people kept in the centre. */
.indianext-event-photo {
  aspect-ratio: 16/9;
}
.indianext-event-photo img {
  width: 258.379121%;
  left: -118.41%;
}
.indianext-event-stage img {
  top: -26.923077%;
}
.indianext-event-performance img {
  top: -131.593407%;
}
.indianext-exhibition-photo {
  aspect-ratio: 487/364;
}
.indianext-exhibition-photo img {
  width: 343.326489%;
  left: -14.784394%;
}
.indianext-exhibition-first img {
  top: -26.923077%;
}
.indianext-exhibition-second img {
  top: -131.593407%;
}

/* Native disclosure keeps project navigation working without script. */
.site-primary-menu {
  gap: clamp(18px, 2.4vw, 36px);
}
.site-primary-menu > a,
.case-study-toggle {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  padding: 12px 0;
  font-size: 15px;
  line-height: 24px;
  font-weight: 500;
}
.case-study-toggle {
  list-style: none;
  cursor: pointer;
  gap: 8px;
  user-select: none;
}
.case-study-toggle::-webkit-details-marker {
  display: none;
}
.case-study-toggle::marker {
  content: '';
}
.nav-chevron {
  display: block;
  flex: none;
  transition: transform 0.18s ease;
}
.case-study-dropdown[open] .nav-chevron {
  transform: rotate(180deg);
}
.case-study-dropdown[open] .case-study-toggle {
  color: #00834b;
}
.case-study-menu {
  top: calc(100% + 8px);
  left: auto;
  right: 0;
  width: 280px;
  padding: 8px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: 0 12px 32px #152d2014;
}
.case-study-dropdown:not([open]) > .case-study-menu {
  display: none;
}
.case-study-menu a {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 44px;
  padding: 11px 14px;
  margin: 0;
  border: 0;
  border-radius: 2px;
  font-size: 16px;
  line-height: 22px;
}
.case-study-menu a:hover,
.case-study-menu a:focus-visible {
  background: #e7eee6;
  color: #00834b;
}
.case-study-menu a[aria-current='page'] {
  background: #e1ede3;
  border: 0;
  font-weight: 500;
  color: #00834b;
}
@media (max-width: 900px) {
  .site-primary-menu > a,
  .case-study-toggle {
    font-size: 18px;
    min-height: 50px;
    padding: 13px 0;
  }
  .case-study-toggle {
    width: 100%;
    justify-content: space-between;
  }
  .case-study-menu {
    position: static;
    right: auto;
    width: 100%;
    margin: 0 0 12px;
    padding: 4px 0 4px 12px;
    border: 0;
    border-left: 2px solid var(--green);
    border-radius: 0;
    box-shadow: none;
  }
  .case-study-menu a {
    font-size: 16px;
    padding: 10px 12px;
  }
}

/* Birla Opus: original publication visuals, with complete artwork visible. */
.birla-page .story-nav {
  justify-content: flex-start;
  overflow-x: auto;
  white-space: nowrap;
  gap: 30px;
}
.birla-page .story-nav a {
  flex: none;
}

/* Complete images: retain equal frames without cutting the source artwork. */
/* Use the full original IndiaNext photographs instead of enlarging a slide collage. */
.indianext-event-photo {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 16/9;
  background: transparent;
}
.indianext-event-photo img {
  position: static;
  width: 100% !important;
  height: 100% !important;
  max-width: 100%;
  left: auto;
  top: auto;
  object-fit: scale-down !important;
}
.indianext-exhibition-photo {
  aspect-ratio: 4/3;
}
/* Keep Birla's 800px sources within a sensible display size. */

main img.complete-image {
  object-fit: contain !important;
  object-position: center !important;
  image-rendering: auto;
}
/* Align Tata's scale section with the established four-number row. */

/* Equal outer cards keep full photos visible without stretching or cropping. */

/* Birla publication tabs: two equal cards per collection. */
.birla-page .case-introduction {
  max-width: 850px;
}

/* Tata and Birla use the shared project-detail alignment and open image layout. */
.birla-page .story-nav a:first-child {
  margin-left: auto;
}
.birla-page .story-nav a:last-child {
  margin-right: auto;
}
@media (max-width: 1000px) {
  .birla-page .story-nav a:first-child {
    margin-left: 0;
  }
  .birla-page .story-nav a:last-child {
    margin-right: 0;
  }
}

/* Let full source artwork define its height; avoid blank bands above and below. */

/* Project-image refinements requested alongside the Ambuja case study. */
.utec-page .utec-plan img,
.utec-page .utec-elevation img {
  display: block;
  width: 100%;
  height: auto !important;
  aspect-ratio: auto !important;
  object-fit: contain !important;
}
.indianext-event-grid {
  align-items: stretch;
}
.indianext-event-card {
  display: flex;
  flex-direction: column;
  align-self: stretch;
}
.indianext-page .indianext-exhibition-photo {
  aspect-ratio: 4/3;
  background: #141411;
}
.indianext-page .indianext-exhibition-photo img {
  object-fit: contain !important;
  height: 100% !important;
  width: 100% !important;
}
.indianext-page .indianext-event-stage,
.indianext-page .indianext-event-performance {
  aspect-ratio: 3/2;
  background: #181523;
}
.indianext-page .indianext-event-stage img,
.indianext-page .indianext-event-performance img {
  object-fit: contain !important;
  height: 100% !important;
  width: 100% !important;
}
.indianext-event-card figcaption {
  margin-top: 16px !important;
  padding-top: 0;
  min-height: 42px;
}
/* Equal Deoria gallery frames and captions aligned to each visible card edge. */
/* Keep J12 image and caption edges on the same grid. */
/* Tata pairs share one frame size, with complete artwork and aligned captions. */

/* One responsive frame for every project-detail opening banner. */
:root {
  --project-banner-height: clamp(280px, 46.75vw, 720px);
}

/* Equal Ambuja gallery photographs, with consistent focal points and captions. */

/* Banner images reach both screen edges at the existing shared height. */

/* Deoria photographs and reference cards fill their existing equal frames. */

/* Keep labels and colour swatches complete; extend their white artwork background to the frame edges. */

/* Shared card fill contract: override legacy contain/scale-down gallery rules.
   Logos and source-slide crops are deliberately outside this image class. */
:is(main, #site-card-fill) :is(img.site-card-image, #site-card-fill-image) {
  object-fit: cover !important;
  background: transparent !important;
  display: block;
}
:is(main, #site-card-fill)
  :is(
    .tata-gallery,
    .deoria-gallery,
    .j12-gallery,
    .indianext-event-card,
    .ambuja-gallery,
    .birla-gallery
  )
  figcaption {
  margin: 16px 0 0 !important;
  padding: 0 !important;
}

/* Consistent CTA type size across all pages and breakpoints. */
html body.group-page .group-button {
  font-size: 14px !important;
}

/* One CTA size and shared interaction across all pages. */
html body :is(.group-button, .footer-cta-button) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 240px;
  max-width: 100%;
  min-height: 52px;
  height: 52px;
  box-sizing: border-box;
  padding: 12px 20px;
  font-size: 14px !important;
  line-height: 1.4;
  white-space: nowrap;
  flex-shrink: 0;
  transition:
    transform 0.2s ease,
    background-color 0.2s ease,
    box-shadow 0.2s ease,
    color 0.2s ease;
}
html body :is(.group-button, .footer-cta-button):focus-visible {
  outline: 2px solid #00834b;
  outline-offset: 5px;
  box-shadow: 0 4px 12px #05241818;
}
@media (hover: hover) {
  html body :is(.group-button, .footer-cta-button):hover {
    transform: translateY(-3px);
    box-shadow: 0 7px 18px #05241820;
  }
}
html body :is(.group-button, .footer-cta-button):active {
  transform: translateY(0) scale(0.98);
  box-shadow: none;
}
@media (prefers-reduced-motion: reduce) {
  html body :is(.group-button, .footer-cta-button) {
    transition: none;
  }
  html body :is(.group-button, .footer-cta-button):hover,
  html body :is(.group-button, .footer-cta-button):active {
    transform: none;
  }
}

html body :is(.fyi-nav-logo, .group-logo) {
  width: 46px;
  height: 60px;
  display: block;
  overflow: visible;
  background: none;
}
html body :is(.fyi-nav-logo, .group-logo) > img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
@keyframes site-enter {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

html body :is(.fyi-nav-logo, .group-logo) > img {
  position: static;
  left: auto;
  top: auto;
  max-width: 100%;
  mix-blend-mode: normal;
  filter: none;
}
/* Current page in the top row. The underline is an inset shadow, so the
   active label doesn't shift; dropdown entries are marked separately below. */
html body .site-primary-menu > a[aria-current='page'],
html body .site-primary-menu > details > .nav-current {
  color: #00834b !important;
  font-weight: 500;
  box-shadow: inset 0 -2px 0 #05dc7f;
}
html body .case-study-menu a[aria-current='page'] {
  color: #00834b !important;
  font-weight: 500;
  border-left: 2px solid #05dc7f;
  padding-left: 12px;
}
html body .testimonials-section {
  padding-top: 64px;
  padding-bottom: 72px;
}
html body .testimonials-section h2 {
  font-size: clamp(30px, 3vw, 42px);
}
html body .testimonial-grid {
  gap: 28px;
  margin-top: 32px;
  align-items: stretch;
}
html body .testimonial-grid figure {
  margin: 0;
  padding: 28px;
  background: #e9ece566;
  border: 1px solid var(--line);
  display: flex;
  flex-direction: column;
}
html body .testimonial-grid blockquote {
  font:
    300 18px/1.75 var(--font-manrope),
    sans-serif;
  letter-spacing: 0;
  color: var(--ink);
}
html body .testimonial-grid figcaption {
  font-size: 12px;
  margin-top: auto;
  padding-top: 24px;
}
@media (max-width: 640px) {
  html body .testimonial-grid figure {
    padding: 24px;
  }
  html body .testimonial-grid blockquote {
    font-size: 17px;
  }
  html body .testimonials-section {
    padding-top: 48px;
    padding-bottom: 56px;
  }
}
/* Consistent breathing room throughout the site. */
html
  body
  main
  > section:not(.hero):not(.hero-text):not(.group-hero):not(.contact-hero):not(.birla-showcase):not(
    .group-timeline
  ) {
  padding-top: 120px;
  padding-bottom: 128px;
}
html body main :is(.section-heading, .split-heading, .team-heading) {
  margin-bottom: 40px;
}
html body main figure figcaption {
  padding-top: 0;
  line-height: 1.65;
}
@media (max-width: 900px) {
  html
    body
    main
    > section:not(.hero):not(.hero-text):not(.group-hero):not(.contact-hero):not(
      .birla-showcase
    ):not(.group-timeline) {
    padding-top: 88px;
    padding-bottom: 96px;
  }
}
@media (max-width: 640px) {
  html
    body
    main
    > section:not(.hero):not(.hero-text):not(.group-hero):not(.contact-hero):not(
      .birla-showcase
    ):not(.group-timeline) {
    padding-top: 64px;
    padding-bottom: 72px;
  }
  html body main :is(.section-heading, .split-heading, .team-heading) {
    margin-bottom: 28px;
  }
}

/* One shared footer on every page. */

/* Project photography and artwork remain complete within their display frames. */
html
  body:not(.home-page):not(.group-page):not(.contact-page)
  :is(main, #fyi-complete-artwork)
  :is(img, #fyi-image-original) {
  object-fit: contain !important;
  object-position: center !important;
  transform: none !important;
  scale: 1 !important;
}

/* One primary CTA treatment across every route. */
html body :is(.group-button, .footer-cta-button) {
  width: 240px !important;
  max-width: 100% !important;
  height: 52px !important;
  min-height: 52px !important;
  padding: 12px 20px !important;
  background: #00d084 !important;
  color: #082d20 !important;
  border: 1px solid #00d084 !important;
  border-radius: 0 !important;
  font:
    500 14px/1.4 var(--font-manrope),
    sans-serif !important;
  letter-spacing: 0 !important;
  text-align: center;
  text-decoration: none;
  box-sizing: border-box;
}
html body :is(.group-button, .footer-cta-button)::after {
  content: none !important;
}
html body :is(.group-button, .footer-cta-button):hover {
  background: #08e394 !important;
  border-color: #08e394 !important;
  color: #082d20 !important;
}
html body :is(.group-button, .footer-cta-button):focus-visible {
  outline: 2px solid #00824f !important;
  outline-offset: 5px;
}

/* Square corners throughout, as requested. */
html body *,
html body *::before,
html body *::after {
  border-radius: 0 !important;
}

html body h1 .headline-dot {
  color: #00d084 !important;
}

/* Minimal reference footer: contact, links, divider, full-width signature. */

/* Shared CTA treatment: text, diagonal arrow and fine underline. */
html body :is(a.group-button, a.home-text-link) {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  width: max-content !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 44px !important;
  height: auto !important;
  padding: 8px 0 !important;
  border: 0 !important;
  border-bottom: 1px solid currentColor !important;
  background: transparent !important;
  color: #006c50 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font:
    500 clamp(16px, 1.5vw, 22px)/1.4 var(--font-manrope),
    sans-serif !important;
  text-decoration: none !important;
  letter-spacing: 0 !important;
}
html body :is(a.group-button, a.home-text-link)::after {
  display: none !important;
}

/* Supplied footer reference: invitation, edge-to-edge wordmark, bottom links. */

/* Latest CTA reference: dark text with a simple underline, no arrow. */
html body :is(a.group-button, a.home-text-link) {
  color: #252824 !important;
  border-bottom: 1px solid #252824 !important;
  font-weight: 500 !important;
  padding: 8px 0 18px !important;
  transform: none !important;
}
html body :is(a.group-button, a.home-text-link):hover {
  color: #006c50 !important;
  border-bottom-color: #006c50 !important;
  transform: none !important;
}

/* Final CTA reference: solid green rectangle and bold centered text. */
html
  body
  :is(a.group-button, a.home-text-link, button.group-button, .footer-cta-button):is(
    .group-button,
    .home-text-link,
    .footer-cta-button
  ):is(.group-button, .home-text-link, .footer-cta-button) {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0 !important;
  width: 220px !important;
  max-width: 100% !important;
  min-width: 0 !important;
  min-height: 48px !important;
  height: auto !important;
  padding: 14px 24px !important;
  border: 0 !important;
  border-bottom: 0 !important;
  background: #00d084 !important;
  color: #082d20 !important;
  font:
    500 14px/1.4 var(--font-manrope),
    sans-serif !important;
  letter-spacing: 0 !important;
  text-align: center !important;
  text-decoration: none !important;
  white-space: normal !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  box-sizing: border-box;
}
html
  body
  :is(a.group-button, a.home-text-link, button.group-button, .footer-cta-button):is(
    .group-button,
    .home-text-link,
    .footer-cta-button
  ):is(.group-button, .home-text-link, .footer-cta-button):hover {
  background: #00c47c !important;
  color: #082d20 !important;
  border: 0 !important;
  transform: none !important;
}
html
  body
  :is(a.group-button, a.home-text-link, button.group-button, .footer-cta-button):is(
    .group-button,
    .home-text-link,
    .footer-cta-button
  ):is(.group-button, .home-text-link, .footer-cta-button)::after {
  display: none !important;
  content: none !important;
}
@media (max-width: 640px) {
  html
    body
    :is(a.group-button, a.home-text-link, button.group-button, .footer-cta-button):is(
      .group-button,
      .home-text-link,
      .footer-cta-button
    ):is(.group-button, .home-text-link, .footer-cta-button) {
    min-height: 48px !important;
    font-size: 14px !important;
    padding: 14px 24px !important;
  }
}

/* IFBE: equal scope frames preserve every photograph in full. */
html body .solution-section .work-panel .ifbe-scope-image {
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  margin: 0;
  background: #e9ece5;
  overflow: hidden;
}
html body .solution-section .work-panel .ifbe-scope-image img {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  max-width: none;
  object-fit: contain !important;
  object-position: center !important;
  padding: 0 !important;
}

.ifbe-hero-film {
  margin: 0;
  background: #111;
  width: 100%;
  aspect-ratio: 16/9;
}
.ifbe-hero-film video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

html body .solution-section .work-panel .ifbe-scope-image {
  aspect-ratio: 16/9;
}

/* Scroll interaction remains available without visible scrollbars or progress strips. */
html,
html body,
html body * {
  scrollbar-width: none !important;
}
html::-webkit-scrollbar,
html body::-webkit-scrollbar,
html body *::-webkit-scrollbar {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
}
html body .fyi-scroll-progress {
  display: none !important;
}
.group-page {
  --pad: clamp(22px, 6.94vw, 100px);
  --ink: #010a01;
  --paper: #e8e8e8;
  --green: #00c872;
  --line: #d4d8d3;
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font:
    300 16px/1.7 var(--font-manrope),
    sans-serif;
}
.group-page * {
  box-sizing: border-box;
}
.group-page a {
  color: inherit;
  text-decoration: none;
}
.group-page button {
  font: inherit;
  cursor: pointer;
}
.group-page p,
.group-page h1,
.group-page h2,
.group-page h3,
.group-page figure {
  margin: 0;
}
.group-page p {
  text-wrap: pretty;
}
.group-page img {
  display: block;
}
.group-page > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--paper);
  position: relative;
  z-index: 40;
}
.group-logo {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
}
.group-page .project-navigation {
  margin-left: auto;
}
.group-page .site-primary-menu > a[aria-current='page'] {
  color: #00664e;
}
.group-page a:focus-visible,
.group-page button:focus-visible,
.group-page summary:focus-visible {
  outline: 2px solid #00c872;
  outline-offset: 5px;
}
.group-tag {
  display: block;
  font-size: 10px;
  line-height: 1.4;
  font-weight: 500;
  letter-spacing: 1.4px;
  color: #00664e;
}
.group-hero {
  padding: 90px var(--pad) 0;
  position: relative;
  overflow: hidden;
}
.group-bloom {
  position: absolute;
  left: calc(100% - 454px);
  top: -263px;
  pointer-events: none;
}
.group-hero-intro {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 1fr);
  gap: 66px;
  min-height: 394px;
  position: relative;
  z-index: 1;
}
.group-hero h1 {
  font-size: clamp(44px, 4.52vw, 65px);
  line-height: 1.2;
  letter-spacing: -0.035em;
  margin-top: 38px;
  font-weight: 300;
}
.group-hero h1 span,
.group-hero h1 strong {
  display: block;
}
.group-hero h1 strong {
  font-weight: 500;
}
.group-hero-copy {
  padding-top: 109px;
  color: #636863;
}
.group-hero-copy p {
  line-height: 27px;
}
.group-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 21px;
  margin-top: 36px;
}
.group-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 12px 26px;
  min-height: 48px;
  background: var(--green);
  color: #052418 !important;
  font-size: 12px;
  line-height: 1.5;
  font-weight: 500;
  border: 1px solid transparent;
}
.group-button:hover {
  background: #05dc7f;
}
.group-button-outline {
  background: transparent;
  border-color: #073f35;
  color: #073f35 !important;
}
.group-button-muted {
  background: #e8e8e8;
  font-size: 10px;
  min-height: 38px;
  margin-top: 36px;
}
.group-section {
  padding: 100px var(--pad);
  scroll-margin-top: 30px;
}
.group-section h2 {
  font-size: clamp(30px, 2.78vw, 40px);
  font-weight: 300;
  line-height: 1.12;
  letter-spacing: -0.035em;
  margin-top: 0;
}
.group-section h2 strong {
  font-weight: 500;
}
.group-story-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  margin-top: 32px;
  align-items: start;
}
.group-story-grid p {
  color: #636863;
  line-height: 27px;
}
.group-story-grid p + p {
  margin-top: 26px;
}
.group-story-grid img {
  width: 100%;
  height: auto;
}
.group-philosophy {
  background: white;
}
.group-convictions {
  margin-top: 88px;
}
.group-convictions article {
  display: grid;
  grid-template-columns: 140px minmax(0, 0.9fr) minmax(0, 1.3fr);
  gap: 40px;
  align-items: center;
  border-top: 1px solid #010a0124;
  padding: 48px 0;
}
.group-convictions article:last-child {
  border-bottom: 1px solid #010a0124;
}
.group-convictions h3 {
  font-size: 30px;
  line-height: 1.18;
  font-weight: 300;
  letter-spacing: -0.025em;
}
.group-convictions p {
  line-height: 27px;
  color: #636863;
}
.group-leadership {
  background: white;
}
@media (min-width: 1700px) {
  .group-page {
    --pad: max(100px, calc((100vw - 1440px) / 2 + 100px));
  }
}
@media (max-width: 1000px) {
  .group-hero {
    padding-top: 60px;
  }
  .group-hero-intro {
    gap: 30px;
    min-height: 360px;
  }
  .group-hero-copy {
    padding-top: 85px;
  }
  .group-actions {
    gap: 12px;
  }
  .group-button {
    padding: 12px 18px;
  }
  .group-section {
    padding-top: 75px;
    padding-bottom: 75px;
  }
  .group-convictions article {
    grid-template-columns: 90px 1fr 1.3fr;
    gap: 24px;
  }
  .group-convictions h3 {
    font-size: 25px;
  }
}
@media (max-width: 700px) {
  .group-hero {
    padding-top: 44px;
  }
  .group-bloom {
    left: calc(100% - 200px);
    opacity: 0.7;
  }
  .group-hero-intro {
    grid-template-columns: 1fr;
    gap: 28px;
    min-height: 0;
    padding-bottom: 44px;
  }
  .group-hero h1 {
    margin-top: 24px;
    font-size: clamp(40px, 9.5vw, 60px);
  }
  .group-hero-copy {
    padding-top: 0;
  }
  .group-hero-copy p {
    font-size: 15px;
    line-height: 25px;
  }
  .group-actions {
    margin-top: 26px;
  }
  .group-section {
    padding-top: 56px;
    padding-bottom: 56px;
  }
  .group-section h2 {
    margin-top: 24px;
    font-size: 30px;
  }
  .group-story-grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .group-story-grid p {
    font-size: 15px;
    line-height: 25px;
  }
  .group-convictions {
    margin-top: 42px;
  }
  .group-convictions article {
    grid-template-columns: 64px 1fr;
    gap: 20px;
    padding: 32px 0;
    align-items: start;
  }
  .group-convictions h3 {
    font-size: 24px;
  }
  .group-convictions p {
    grid-column: 2;
    font-size: 15px;
    line-height: 25px;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .group-page {
    scroll-behavior: smooth;
  }
  .group-button {
    transition: background 0.2s;
  }
}
.group-page .project-menu-button {
  width: 52px;
  height: 52px;
  padding: 11px;
  background: var(--green);
}

.group-page .group-button {
  font-size: 18px;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.4;
}

/* FYI Group uses the same visual language as the project detail pages. */
.group-page {
  --pad: clamp(22px, 6vw, 96px);
  --paper: #f5f4f0;
  --ink: #252824;
  --muted: #757972;
  --line: #dcded7;
  --green: #05dc7f;
  background: var(--paper);
  color: var(--ink);
  font:
    17px/1.65 var(--font-manrope),
    sans-serif;
}
.group-page h1,
.group-page h2,
.group-page h3 {
  font-family: var(--font-manrope), sans-serif;
  font-weight: 500;
  line-height: 1.12;
  letter-spacing: -0.055em;
}
.group-page h1 strong,
.group-page h2 strong {
  font-weight: 500;
}
.group-page > header {
  border-bottom: 1px solid var(--line);
}
.group-page .group-logo {
  width: 50px;
  height: 68px;
  display: block;
  position: relative;
  overflow: hidden;
}
.group-page .group-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.group-page .group-bloom {
  display: none;
}
.group-page .group-tag {
  font:
    300 11px/1.5 var(--font-manrope),
    sans-serif;
  letter-spacing: 0.13em;
  color: #00834b;
}
.group-page .group-hero {
  padding: 32px var(--pad) 0;
  overflow: hidden;
}
.group-page .group-hero-intro {
  display: block;
  min-height: 0;
  padding-bottom: 40px;
}
.group-page .group-hero h1 {
  font-size: clamp(38px, 4vw, 60px);
  line-height: 1.12;
  margin-top: 24px;
  max-width: 1250px;
}
.group-page .group-hero h1 span,
.group-page .group-hero h1 strong {
  display: inline;
}
.group-page .group-hero-copy {
  padding-top: 24px;
  max-width: 760px;
  color: var(--muted);
}
.group-page .group-hero-copy p {
  font-size: 18px;
  line-height: 1.55;
}
.group-page .group-section {
  padding: 100px var(--pad);
}
/* Section headings sit on the section's top padding, as on every other page. */
.group-page .group-section h2 {
  font-size: clamp(36px, 4.2vw, 64px);
  line-height: 1.12;
  margin-top: 0;
}
.group-page .group-section p {
  color: var(--muted);
  font-size: 18px;
  line-height: 1.65;
}
.group-page .group-philosophy,
.group-page .group-leadership {
  background: #e9ece5;
}
.group-page .group-story-grid {
  gap: 32px;
  margin-top: 40px;
}
.group-page .group-story-grid img {
  aspect-ratio: 4/3;
  object-fit: cover;
}
.group-page .group-convictions {
  margin-top: 44px;
}
.group-page .group-convictions article {
  border-color: var(--line);
}
.group-page .group-convictions h3 {
  font-size: clamp(24px, 2.5vw, 36px);
}
.group-page .group-button {
  font-size: 18px;
  line-height: 1.4;
  padding: 14px 24px;
  border: 0;
  background: var(--green);
  color: var(--ink) !important;
}
.group-page .group-button-outline {
  background: transparent;
  border: 1px solid var(--line);
}
.group-page .group-button-muted {
  background: var(--green);
}
@media (min-width: 1700px) {
  .group-page {
    --pad: clamp(22px, 6vw, 96px);
  }
}
@media (max-width: 700px) {
  .group-page .group-hero {
    padding-top: 24px;
  }
  .group-page .group-hero h1 {
    font-size: clamp(30px, 7.6vw, 40px);
  }
  .group-page .group-hero-copy p {
    font-size: 16px;
    line-height: 1.6;
  }
  .group-page .group-section {
    padding: 56px var(--pad);
  }
  .group-page .group-section h2 {
    font-size: 34px;
  }
  .group-page .group-section p {
    font-size: 16px;
  }
  .group-page .group-convictions h3 {
    font-size: 24px;
  }
  .group-page .group-story-grid {
    margin-top: 32px;
  }
}

.group-page .headline-dot {
  color: var(--green);
}
.group-page .project-menu-button {
  width: 44px;
  height: 44px;
  padding: 10px;
  background: none;
  border: 0;
}
/* Timeline markers sit on the connecting line, with a scroll-triggered reveal. */

.group-page .group-story-grid {
  margin-top: 0;
  align-items: center;
  gap: clamp(32px, 5vw, 72px);
}
.group-page .group-story-grid h2 {
  margin-bottom: 28px;
  font-size: clamp(34px, 3.5vw, 54px);
}
.group-page .group-story-grid img {
  aspect-ratio: 1672/941;
  height: auto;
  width: 100%;
  object-fit: cover;
}
.group-page .group-story-grid .group-button {
  margin-top: 28px;
}
@media (max-width: 700px) {
  .group-page .group-story-grid {
    gap: 32px;
  }
  .group-page .group-story-grid h2 {
    font-size: 34px;
    margin-bottom: 24px;
  }
}

/* Design team follows the founders, with equal portrait and profile cards. */
@keyframes curator-in {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.group-founder-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.88fr) minmax(0, 1fr);
  gap: clamp(40px, 7vw, 112px);
  margin-top: 64px;
  align-items: center;
}
.group-page .group-curator-copy h2 {
  margin: 24px 0 20px;
}
.group-page .group-curator-copy > p {
  margin-top: 28px;
  font-size: 18px;
  line-height: 1.8;
  max-width: 560px;
}
@media (max-width: 700px) {
  .group-founder-layout {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .group-founder-layout {
    margin-top: 40px;
  }
  .group-page .group-curator-copy > p {
    font-size: 16px;
    line-height: 1.75;
  }
  .group-page .group-curator-copy h2 {
    margin-top: 20px;
  }
}

.group-page .group-philosophy-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  margin-top: 56px;
}
.group-page .group-philosophy-cards article {
  display: flex;
  flex-direction: column;
  gap: 0;
  align-items: stretch;
  padding: 0;
  border: 1px solid var(--line);
  background: var(--paper);
  min-width: 0;
}
.group-conviction-copy {
  padding: 28px;
  flex: 1;
}
.group-page .group-conviction-copy h3 {
  font-size: clamp(24px, 2.4vw, 34px);
  line-height: 1.18;
  min-height: 2.36em;
  margin: 20px 0;
}
.group-page .group-conviction-copy p {
  font-size: 16px;
  line-height: 1.75;
}
@media (max-width: 700px) {
  .group-page .group-philosophy-cards {
    grid-template-columns: 1fr;
    margin-top: 36px;
    gap: 28px;
  }
  .group-page .group-conviction-copy h3 {
    min-height: 0;
    font-size: 28px;
  }
  .group-conviction-copy {
    padding: 24px;
  }
}

.group-page .group-curator-copy .group-founder-name {
  margin: 0;
  font-size: clamp(36px, 3.8vw, 56px);
  font-weight: 500;
  line-height: 1.15;
}
.group-page .group-curator-copy .group-founder-role {
  margin: 16px 0 0;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.5;
  color: var(--ink);
}
.group-page .group-curator-copy > p:not(.group-founder-role) {
  font-size: 17px;
  line-height: 1.8;
  margin-top: 24px;
}
@media (max-width: 700px) {
  .group-page .group-curator-copy .group-founder-name {
    font-size: 36px;
  }
  .group-page .group-curator-copy .group-founder-role {
    font-size: 18px;
    margin-top: 12px;
  }
  .group-page .group-curator-copy > p:not(.group-founder-role) {
    font-size: 16px;
  }
}
.group-page .group-curator-copy .group-founder-name {
  font-size: clamp(30px, 3vw, 44px);
}
.group-page .group-curator-copy .group-founder-role {
  font-size: 18px;
}
.group-page .group-curator-copy .group-founder-intro {
  font-size: 16px;
  line-height: 1.75;
  margin-top: 20px;
  max-width: 520px;
}
@media (max-width: 700px) {
  .group-page .group-curator-copy .group-founder-name {
    font-size: 32px;
  }
  .group-page .group-curator-copy .group-founder-intro {
    font-size: 16px;
  }
}

.group-page .group-curator-copy .group-founder-intro {
  margin-top: 0;
}
.group-founder-byline {
  margin-top: 36px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}
.group-page .group-curator-copy .group-founder-byline .group-founder-name {
  font-size: clamp(28px, 2.6vw, 36px);
}
.group-page .group-curator-copy .group-founder-byline .group-founder-role {
  font-size: 17px;
  margin-top: 12px;
}

/* Supplied philosophy artwork: equal frames with a brand-colour hover. */

/* Compact philosophy frames keep the supplied portrait artwork visible. */
.group-page .group-philosophy-cards {
  gap: 24px;
  margin-top: 40px;
}

.group-page .group-people {
  background: #202220;
  color: #fff;
  text-align: center;
}
.group-page .group-people h2 {
  color: #fff;
  font-weight: 500;
  font-size: clamp(36px, 4.8vw, 72px);
}
.people-tabs {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px;
  margin: 40px 0 64px;
}
.group-page .people-tabs button {
  font:
    500 13px/1.4 var(--font-manrope),
    sans-serif;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border: 1px solid #484c48;
  border-radius: 30px !important;
  background: #333633;
  color: #e1e4df;
  padding: 11px 24px;
  cursor: pointer;
}
.group-page .people-tabs button[aria-selected='true'] {
  background: #00d084;
  border-color: #00d084;
  color: #082d20;
}
.group-page .people-tabs button:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 5px;
}
.people-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
  text-align: left;
}
.people-card {
  position: relative;
  aspect-ratio: 3/4;
  overflow: hidden;
  background: #383d38;
}
.people-card[hidden] {
  display: none;
}
.people-caption {
  position: absolute;
  inset: auto 0 0;
  padding: 60px 20px 24px;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.82));
}
.group-page .people-caption h3 {
  color: #fff;
  font:
    500 clamp(19px, 1.7vw, 27px)/1.2 var(--font-manrope),
    sans-serif;
  letter-spacing: -0.035em;
  margin: 0;
}
.group-page .people-caption p {
  font-size: 14px;
  line-height: 1.5;
  color: #e8e8e8;
  margin: 9px 0 0;
}
@media (max-width: 1000px) {
  .people-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 700px) {
  .people-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px 14px;
  }
  .people-tabs {
    gap: 10px;
    margin: 28px 0 40px;
  }
  .group-page .people-tabs button {
    padding: 10px 16px;
  }
  .people-caption {
    padding: 44px 12px 16px;
  }
  .group-page .people-caption h3 {
    font-size: 18px;
  }
  .group-page .people-caption p {
    font-size: 12px;
    line-height: 1.35;
    margin-top: 7px;
  }
}
/* Team gallery uses the site's pale green surface. */
.group-page .group-people {
  background: #e9ece5;
  color: #252824;
}
.group-page .group-people h2 {
  color: #252824;
}
.group-page .people-tabs button {
  background: transparent;
  border-color: #bcc8bb;
  color: #344139;
}
.group-page .people-tabs button[aria-selected='true'] {
  background: #00d084;
  border-color: #00d084;
  color: #082d20;
}
.group-page .people-tabs button:focus-visible {
  outline-color: #00875e;
}

/* Matching portrait cutouts sit above the warm neutral studio boxes. */
.group-page .people-grid {
  gap: 48px 24px;
  align-items: start;
}
.group-page .people-card {
  aspect-ratio: auto;
  overflow: visible;
  background: transparent;
  padding-top: 0;
}
.group-page .people-card::before {
  content: '';
  position: absolute;
  inset: 9% 0 70px;
  background: #d5d1c5;
  z-index: 0;
}
.group-page .people-caption {
  position: relative;
  inset: auto;
  z-index: 2;
  min-height: 70px;
  padding: 18px 0 0;
  background: none;
}
.group-page .people-caption h3 {
  color: #242823;
  font-size: 22px;
  line-height: 1.25;
}
.group-page .people-caption p {
  color: #687065;
  margin-top: 7px;
  font-size: 14px;
}
@media (max-width: 700px) {
  .group-page .people-grid {
    gap: 32px 16px;
  }
  .group-page .people-caption h3 {
    font-size: 18px;
  }
  .group-page .people-caption p {
    font-size: 12px;
  }
  .group-page .people-caption {
    padding-top: 12px;
    min-height: 76px;
  }
  .group-page .people-card::before {
    bottom: 76px;
  }
}

.people-empty {
  grid-column: 1/-1;
  text-align: center;
  padding: 32px;
  color: #687065;
}
.people-empty[hidden] {
  display: none;
}
/* A single motion rhythm across the FYI website. Content stays readable without JavaScript. */
.fyi-reveal.fyi-in-view {
  animation: fyi-reveal 0.85s cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: var(--fyi-delay, 0ms);
}
h1.fyi-reveal.fyi-in-view,
h2.fyi-reveal.fyi-in-view {
  animation-name: fyi-heading;
  animation-duration: 1s;
}
@keyframes fyi-reveal {
  from {
    opacity: 0;
    translate: 0 26px;
  }
  to {
    opacity: 1;
    translate: 0 0;
  }
}
@keyframes fyi-heading {
  from {
    opacity: 0;
    translate: 0 32px;
    filter: blur(5px);
  }
  to {
    opacity: 1;
    translate: 0 0;
    filter: blur(0);
  }
}
/* Keep interactive actions stationary while their containing surfaces appear. */
.practice-contact-card.fyi-reveal.fyi-in-view,
.strategy-related > article.fyi-reveal.fyi-in-view,
.ff-top.fyi-reveal.fyi-in-view {
  animation-name: fyi-surface;
}
@keyframes fyi-surface {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.fyi-image-frame {
  overflow: hidden;
}
.fyi-image-frame > img,
.fyi-image-frame > a > img,
.fyi-image-frame > picture > img {
  transition: scale 0.9s cubic-bezier(0.16, 1, 0.3, 1);
  transform-origin: 50% 50%;
}
.fyi-animated-cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.fyi-animated-cta::before {
  content: '';
  position: absolute;
  inset: -60% auto -60% -60%;
  width: 35%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.34), transparent);
  transform: rotate(22deg);
  pointer-events: none;
  transition: left 0.65s cubic-bezier(0.2, 0.7, 0.2, 1);
  z-index: -1;
}
.fyi-scroll-progress {
  position: fixed;
  inset: 0 0 auto;
  height: 3px;
  background: #05dc7f;
  transform: scaleX(0);
  transform-origin: left;
  z-index: 100;
  pointer-events: none;
}
@keyframes fyi-ambient {
  from {
    translate: -3% 0;
    opacity: 0.4;
  }
  to {
    translate: 3% 3%;
    opacity: 1;
  }
}
@keyframes fyi-scroll-cue {
  0%,
  100% {
    translate: 0 0;
  }
  50% {
    translate: 0 4px;
  }
}
.home-client {
  transition:
    background 0.3s,
    box-shadow 0.3s;
}
.home-client img {
  transition: opacity 0.3s;
  opacity: 0.78;
}
.home-client:hover img {
  opacity: 1;
}
.home-practice-tabs button .home-tab-arrow {
  transition: translate 0.3s;
}
.home-practice-tabs button:hover .home-tab-arrow {
  translate: 3px -3px;
}
@media (hover: hover) {
  .fyi-image-frame:hover > img,
  .fyi-image-frame:hover > a > img,
  .fyi-image-frame:hover > picture > img {
    scale: 1.035;
  }
  .fyi-animated-cta:hover::before {
    left: 135%;
  }
  .home-client:hover {
    box-shadow: inset 0 -3px #05dc7f;
  }
}
@media (max-width: 640px) {
  .fyi-reveal.fyi-in-view {
    animation-duration: 0.65s;
    animation-delay: min(var(--fyi-delay, 0ms), 180ms);
  }
  @keyframes fyi-reveal {
    from {
      opacity: 0;
      translate: 0 16px;
    }
    to {
      opacity: 1;
      translate: 0 0;
    }
  }
}
@media (prefers-reduced-motion: reduce) {
  .fyi-reveal {
    animation: none !important;
    opacity: 1;
    translate: none;
    filter: none;
  }
  .fyi-image-frame img,
  .fyi-animated-cta::before,
  .home-client,
  .home-client img,
  .home-practice-tabs button .home-tab-arrow {
    transition: none !important;
    scale: 1 !important;
    translate: none !important;
  }
  .fyi-scroll-progress {
    display: none;
  }
  .fyi-animated-cta::before {
    display: none;
  }
}

.fyi-reveal.fyi-in-view {
  animation-fill-mode: backwards;
}

html body .fyi-chat {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 1200;
  font-family: var(--font-manrope), sans-serif;
  color: #16332e;
}
html body .fyi-chat button,
html body .fyi-chat input,
html body .fyi-chat textarea {
  font-family: var(--font-manrope), sans-serif;
  border-radius: 0 !important;
  box-sizing: border-box;
}
html body .fyi-chat .fyi-chat-launch {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  min-width: 0;
  padding: 0;
  background: #00c872;
  color: #16332e;
  border: 0;
  cursor: pointer;
  box-shadow: 0 4px 16px #16332e20;
  transition: background 0.4s;
}
html body .fyi-chat-launch svg {
  width: 24px;
  height: 24px;
}
html body .fyi-chat .fyi-chat-panel {
  position: absolute;
  bottom: 68px;
  right: 0;
  width: 380px;
  max-width: calc(100vw - 32px);
  max-height: calc(100dvh - 112px);
  overflow: auto;
  background: #fff;
  border: 1px solid #16332e;
  box-shadow: 0 12px 40px #16332e20;
}
html body .fyi-chat-panel[hidden] {
  display: none !important;
}
html body .fyi-chat .fyi-chat-panel header {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding: 24px;
  margin: 0;
  background: #16332e;
  color: #fff;
  border: 0;
  font-size: 16px;
}
html body .fyi-chat-panel header strong {
  display: block;
  font-size: 20px;
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: -0.025em;
  color: #fff;
}
html body .fyi-chat-panel header span {
  display: block;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.5;
  margin-top: 6px;
  color: #fff;
}
html body .fyi-chat .fyi-chat-close {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 40px;
  width: 40px;
  min-width: 40px;
  height: 40px;
  padding: 0;
  margin: 0;
  background: transparent;
  border: 1px solid #ffffff80;
  color: #fff;
  cursor: pointer;
  line-height: 1;
  transition: background 0.4s;
}
html body .fyi-chat-close svg {
  display: block;
  width: 20px;
  height: 20px;
}
html body .fyi-chat-close:hover {
  background: #ffffff18;
}
html body .fyi-chat-body {
  padding: 24px;
}
html body .fyi-chat-body p {
  font-size: 16px;
  line-height: 1.6;
  margin: 0 0 12px;
  color: #16332e;
}
html body .fyi-chat-body .fyi-chat-help {
  font-size: 14px;
  line-height: 1.6;
  color: #66716d;
  margin-bottom: 24px;
}
html body .fyi-chat-body label {
  display: block;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.5;
  margin: 20px 0 8px;
  color: #16332e;
}
html body .fyi-chat-body input,
html body .fyi-chat-body textarea {
  display: block;
  width: 100%;
  border: 1px solid #bbc7c2;
  background: #fff;
  padding: 12px;
  color: #16332e;
  font-size: 16px;
  line-height: 1.5;
  box-shadow: none;
}
html body .fyi-chat-body textarea {
  resize: vertical;
  min-height: 110px;
}
/* 16px, over the global 15px type scale: iOS zooms into smaller fields. */
html body .fyi-chat-body :is(input, textarea):not(#type-exempt) {
  font-size: 16px !important;
}
/* The open site menu takes the screen; the launcher would sit on top of it. */
html body:has(.site-primary-menu.is-open) .fyi-chat {
  visibility: hidden;
}
html body .fyi-chat .fyi-chat-send {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  margin-top: 24px;
  padding: 12px 20px;
  background: #00c872;
  color: #010a01;
  border: 0;
  font-size: 14px;
  line-height: 24px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.4s;
}
html body .fyi-chat-send:hover,
html body .fyi-chat-launch:hover {
  background: #05dc7f;
}
html body .fyi-chat button:focus-visible,
html body .fyi-chat input:focus-visible,
html body .fyi-chat textarea:focus-visible {
  outline: 2px solid #00c872;
  outline-offset: 3px;
}
@media (max-width: 600px) {
  html body .fyi-chat {
    bottom: 16px;
    right: 16px;
  }
  html body .fyi-chat .fyi-chat-panel {
    width: min(380px, calc(100vw - 32px));
  }
  html body .fyi-chat .fyi-chat-panel header,
  html body .fyi-chat-body {
    padding: 20px;
  }
}
/* Shared editorial refinement across the complete site. */
html body {
  --green: #00815f;
  --ink: #202a26;
  --line: rgba(32, 42, 38, 0.16);
}
html body #practice-label,
html body .home-practice-tabs button > span:first-child {
  display: none !important;
}
html body :is(h1, h2, h3) {
  text-wrap: balance;
}
html body :is(.home-section, .group-section) h2 {
  font-weight: 300;
  letter-spacing: -0.035em;
  line-height: 1.2;
  margin-top: 0;
}
html body :is(.home-section, .group-section) h2 strong {
  font-weight: 500;
}
html body :is(.home-section, .group-section) p {
  line-height: 1.8;
}
html body .home-section-head {
  gap: clamp(28px, 5vw, 72px);
}
html body .home-practice-tabs button {
  font-weight: 300;
  border-bottom-color: rgba(32, 42, 38, 0.16);
  padding-left: 0;
  padding-right: 18px;
}
html body .home-practice-tabs button[aria-selected='true'] {
  background: transparent !important;
  color: #006c50 !important;
  font-weight: 500;
}
html body .home-practice-tabs button:hover {
  background: transparent !important;
  color: #006c50 !important;
}
html body .home-practice-panel {
  background: transparent !important;
  border: 1px solid rgba(32, 42, 38, 0.12);
}
html body .home-practice-panel > div {
  padding: clamp(24px, 3vw, 44px);
}
html body .home-practice-panel :is(h3, p, li) {
  letter-spacing: normal;
}
html body .home-practice-panel h3 {
  font-weight: 300;
  letter-spacing: -0.025em;
}
html body .home-practice-panel li {
  font-size: 12px;
  line-height: 1.6;
}
html body .home-testimonial-grid figure {
  box-shadow: none;
  border: 1px solid rgba(32, 42, 38, 0.12);
}
html body .home-testimonial-controls button {
  background: transparent;
  border: 1px solid rgba(32, 42, 38, 0.25);
  color: #173b30;
}
html body .home-metrics strong {
  font-weight: 300;
}
html body :is(.hero-text .case-heading, .utec-section-label h2) {
  font-weight: 300;
  letter-spacing: -0.03em;
  line-height: 1.2;
}
html body .group-convictions article {
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.3fr);
}
html body .group-convictions h3 {
  font-weight: 300;
}
html
  body
  :is(a.group-button, a.home-text-link, button.group-button, .footer-cta-button):is(
    .group-button,
    .home-text-link,
    .footer-cta-button
  ):is(.group-button, .home-text-link, .footer-cta-button) {
  background: #173b30 !important;
  color: #fff !important;
  font-weight: 500 !important;
}
html
  body
  :is(a.group-button, a.home-text-link, button.group-button, .footer-cta-button):is(
    .group-button,
    .home-text-link,
    .footer-cta-button
  ):is(.group-button, .home-text-link, .footer-cta-button):hover {
  background: #245641 !important;
  color: #fff !important;
}
@media (max-width: 640px) {
  html body .group-convictions article {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  html body .home-practice-tabs button {
    padding-left: 0;
  }
}
html body :is(.case-testimonial-grid, .home-testimonial-grid) figcaption strong {
  display: block;
  font-weight: 500;
  font-size: 17px;
}
html body :is(.case-testimonial-grid, .home-testimonial-grid) figcaption > span:last-child {
  display: block;
  font-size: 14px;
  line-height: 1.6;
  margin-top: 6px;
}
html body .case-testimonial-grid {
  grid-template-columns: 1fr;
  max-width: 1000px;
}
/* The Case Studies reference defines the type system for every route. */
html body {
  font-family: var(--font-manrope), sans-serif !important;
  font-size: 17px;
  line-height: 1.8;
}
html body main :is(h1, h2),
html body main :is(.case-heading, .section-title) {
  font-family: var(--font-manrope), sans-serif !important;
  font-size: clamp(36px, 3.6vw, 50px) !important;
  font-weight: 500 !important;
  line-height: 1.12 !important;
  letter-spacing: -0.03em !important;
  text-wrap: balance;
}
html body main :is(h1, h2) :is(strong, b) {
  font-weight: 500 !important;
}
html body main :is(h3, h4) {
  font-family: var(--font-manrope), sans-serif !important;
  font-weight: 500 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.03em !important;
}
html body main h3 {
  font-size: clamp(24px, 2.1vw, 30px) !important;
}
html body main :is(p, li, dd, dt),
html body main :is(.utec-prose, .group-hero-copy, .body-copy) {
  font-family: var(--font-manrope), sans-serif !important;
  font-size: 17px !important;
  font-weight: 300 !important;
  line-height: 1.8 !important;
  letter-spacing: 0 !important;
}
html body main p {
  text-wrap: pretty;
}
html body main blockquote {
  font-family: var(--font-manrope), sans-serif !important;
  font-size: 22px !important;
  font-weight: 300 !important;
  line-height: 1.8 !important;
  letter-spacing: 0 !important;
}
html body main :is(.home-section-head, .section-heading, .utec-section-label) h2 {
  margin-top: 0 !important;
}
html body main :is(.hero-text, .group-hero, .utec-stacked-hero) h1 {
  max-width: 1100px;
}
@media (max-width: 640px) {
  html body main :is(h1, h2, .case-heading, .section-title) {
    font-size: 36px !important;
    line-height: 1.14 !important;
  }
  html body main :is(p, li, dd, dt, .utec-prose, .group-hero-copy, .body-copy) {
    font-size: 17px !important;
    line-height: 1.8 !important;
  }
  html body main blockquote {
    font-size: 20px !important;
  }
}
/* Academic tone: a limited palette, quiet hierarchy and documentary imagery. */
html body {
  --paper: #e8e8e8;
  --ink: #252b28;
  --muted: #646c66;
  --green: #27634f;
  background: var(--paper);
  color: var(--ink);
}
html body main :is(h1, h2, .case-heading, .section-title),
html body main :is(h1, h2) :is(strong, b) {
  font-weight: 500 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.18 !important;
}
html body main :is(h3, h4) {
  font-weight: 500 !important;
}
html body main :is(.group-story-grid, .group-philosophy-cards) {
  background: transparent;
}
html body .group-story-grid {
  grid-template-columns: 1fr;
  max-width: 860px;
}
html body .group-philosophy-cards > article {
  border-top: 1px solid var(--line);
  padding: 32px 0;
  background: transparent;
}
html body .group-philosophy-cards .group-conviction-copy {
  padding: 0;
}
html body .home-practice-panel {
  min-height: 0;
}
html body .home-practice-panel > div {
  padding: 36px;
}
html body .headline-dot {
  color: #27634f !important;
}
html body .client-relationship-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}
html body .client-relationship {
  min-width: 0;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: transparent;
}
html body .client-relationship summary {
  list-style: none;
  cursor: pointer;
}
html body .client-relationship summary::-webkit-details-marker {
  display: none;
}
html body .client-relationship .home-client {
  width: 100%;
  min-height: 130px;
  border: 0;
  padding: 20px 14px;
  background: transparent;
  overflow: hidden;
}
html body .client-relationship img {
  filter: grayscale(1);
  opacity: 0.85;
}
html body .client-context {
  padding: 0 22px 24px;
}
html body .client-context p {
  font-size: 14px !important;
  line-height: 1.7 !important;
}
html body .client-context a {
  display: inline-block;
  margin-top: 16px;
  font-size: 14px;
  color: #27634f;
  text-decoration: underline;
  text-underline-offset: 5px;
}
html body main figure img:not(.client-logo-original img) {
  filter: grayscale(0.6) saturate(0.6);
}
html body .fyi-image-frame:hover img {
  transform: none !important;
}
html body .fyi-reveal {
  transition-duration: 1.2s !important;
}
html body .home-motion-step {
  transition-duration: 1.2s !important;
}
html body .home-practice-panel.is-changing {
  animation-duration: 0.85s !important;
}
html body :is(a, button, img) {
  transition-duration: 0.65s;
}
@media (max-width: 1000px) {
  html body .client-relationship-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  html body .client-relationship-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  html body .home-practice-panel > div {
    padding: 24px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html body *,
  html body *::before,
  html body *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}

/* One typeface throughout; hierarchy uses var(--font-manrope) weights. */
html body,
html body *,
html body *::before,
html body *::after {
  font-family: var(--font-manrope), sans-serif !important;
  font-style: normal !important;
}
html body :is(input, textarea, select, button) {
  font-family: var(--font-manrope), sans-serif !important;
}
html body main :is(p, li, dd, dt, blockquote) {
  font-weight: 300 !important;
}
html body :is(nav a, label, summary, .testimonial-draft, .testimonial-proposed) {
  font-weight: 500;
}
html body main :is(h1, h2, h3, h4),
html body :is(strong, b) {
  font-weight: 500 !important;
}
/* Larger transparent client marks sourced from the FYI homepage. */
html body .client-relationship-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border: 0;
  gap: 24px;
}
html body .client-relationship {
  border: 0;
  background: transparent;
}
html body .client-relationship .home-client {
  min-height: 170px;
  padding: 24px 12px;
  border: 0;
  background: transparent !important;
}
html body .headline-dot,
html body h1 .headline-dot {
  color: #00865b !important;
}
@media (max-width: 1000px) {
  html body .client-relationship-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  html body .client-relationship-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
  }
  html body .client-relationship .home-client {
    min-height: 140px;
    padding: 18px 4px;
  }
}
html body .group-philosophy {
  background: #16332d;
  color: #e8e8e8;
}
html body .group-philosophy h2,
html body .group-philosophy h3 {
  color: #e8e8e8;
}
html body .group-philosophy .group-philosophy-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px;
  margin-top: 64px;
}
html body .group-philosophy-cards > article {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 28px;
  padding: 30px 0 0;
  background: transparent;
  border: 0;
  border-top: 1px solid #ffffff35;
  border-radius: 0;
  box-shadow: none;
}
html body .group-philosophy-cards h3 {
  font-size: 24px;
  line-height: 1.3;
  min-height: 2.6em;
  margin: 0 0 22px;
}
html body .group-philosophy-cards p {
  color: #c2d0ca;
  font-size: 16px;
  line-height: 1.8;
}
.conviction-icon {
  color: #87b9a4;
  flex-shrink: 0;
}
html body .group-philosophy .headline-dot {
  color: #77c49e !important;
  display: inline;
}
.cap-main {
  background: #fff;
  color: #19241f;
}
.cap-container {
  width: min(1240px, calc(100% - 120px));
  margin-inline: auto;
}
.cap-section {
  padding-block: 96px;
}
.cap-hero {
  background: #e8e8e8;
  padding: 86px 0 36px;
}
.cap-hero h1 {
  max-width: 950px;
  font-size: clamp(38px, 4.6vw, 65px);
  font-weight: 300 !important;
  line-height: 1.15;
  letter-spacing: -0.04em;
  margin: 0;
}
.cap-main h2 {
  font-size: clamp(32px, 3.5vw, 50px);
  line-height: 1.16;
  letter-spacing: -0.035em;
  margin: 0;
}
.cap-intro {
  max-width: 640px;
  margin: 32px 0 64px;
  color: #636c66;
  line-height: 1.8;
}
.cap-problem {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 70px;
  border-top: 1px solid #dce1dd;
  padding: 36px 0;
  color: inherit;
  text-decoration: none;
}
.cap-problem h3 {
  font-size: 28px;
  line-height: 1.3;
  margin: 0;
  max-width: 430px;
}
.cap-problem p {
  margin: 0;
  color: #636c66;
  line-height: 1.7;
}
.cap-problem span:not(.headline-dot) {
  display: block;
  color: #32664f;
  font-size: 14px;
  margin-top: 16px;
}
.cap-problem:hover {
  background: #e8e8e8;
}
.cap-practices {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 60px 24px;
  margin-top: 64px;
}
.cap-practices article {
  grid-column: span 2;
  scroll-margin-top: 40px;
}
.cap-practices article:nth-child(-n + 2) {
  grid-column: span 3;
}
.cap-practices h3 {
  font-size: 24px;
  line-height: 1.3;
  margin: 24px 0 14px;
}
.cap-practices p {
  color: #636c66;
  line-height: 1.75;
  margin: 12px 0 0;
}
.cap-practices .cap-proposition {
  color: #25382e;
  font-weight: 500 !important;
}
.cap-link {
  display: inline-block;
  color: #195f44 !important;
  font-size: 14px;
  font-weight: 500 !important;
  border-bottom: 1px solid #87a696;
  padding-bottom: 6px;
  margin-top: 24px;
  text-decoration: none;
}
.cap-assembly {
  background: #e8e8e8;
}
.cap-stages {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 48px;
  margin-top: 64px;
}
.cap-stages article {
  border-top: 1px solid #cfd8d2;
  padding-top: 30px;
}
.cap-stages h3 {
  font-size: 24px;
  line-height: 1.3;
  margin: 0 0 24px;
}
.cap-stages p {
  font-size: 16px;
  line-height: 1.75;
  color: #636c66;
}
.cap-bridge {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
}
.cap-main a:focus-visible {
  outline: 2px solid #00865b;
  outline-offset: 6px;
}
.cap-main .headline-dot {
  display: inline !important;
}
@media (max-width: 800px) {
  .cap-container {
    width: calc(100% - 48px);
  }
  .cap-section {
    padding-block: 64px;
  }
  .cap-hero {
    padding-top: 64px;
  }
  .cap-problem {
    gap: 30px;
  }
  .cap-practices {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .cap-practices article,
  .cap-practices article:nth-child(-n + 2) {
    grid-column: span 1;
  }
  .cap-stages {
    gap: 24px;
  }
  .cap-stages h3 {
    font-size: 22px;
  }
  html body .group-philosophy .group-philosophy-cards {
    gap: 24px;
  }
  html body .group-philosophy-cards h3 {
    font-size: 22px;
  }
}
@media (max-width: 600px) {
  .cap-problem,
  .cap-stages {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .cap-practices {
    grid-template-columns: 1fr;
    gap: 48px;
  }
  .cap-bridge {
    align-items: flex-start;
    flex-direction: column;
  }
  .cap-problem h3 {
    font-size: 24px;
  }
  html body .group-philosophy .group-philosophy-cards {
    grid-template-columns: 1fr;
    gap: 36px;
  }
  html body .group-philosophy-cards h3 {
    min-height: 0;
  }
}

/* Business challenges as a browsable horizontal card collection. */
html body .cap-problems-section .cap-intro {
  margin-bottom: 28px;
  max-width: 700px;
}
html body .cap-problems {
  position: relative;
  display: flex;
  gap: 24px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-padding-left: 8px;
  padding: 8px;
  margin: 0 -8px;
  scrollbar-width: none;
  overscroll-behavior-inline: contain;
}
html body .cap-problems .cap-problem {
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 0;
  flex: 0 0 calc((100% - 48px) / 2.65);
  min-height: 340px;
  padding: 30px;
  border: 1px solid #d4ded8;
  background: #e8e8e8;
  scroll-snap-align: start;
  transition:
    background 0.25s,
    border-color 0.25s;
}
html body .cap-problems .cap-problem:hover {
  background: #eaf2ee;
  border-color: #8fa99c;
}
html body .cap-problems .cap-problem h3 {
  font-size: 28px;
  line-height: 1.25;
  margin: 0 0 26px;
}
html body .cap-problems .cap-problem > div {
  display: flex;
  flex-direction: column;
  flex: 1;
}
html body .cap-problems .cap-problem p {
  font-size: 16px;
  line-height: 1.7;
  margin: 0 0 28px;
}
@media (max-width: 900px) {
  html body .cap-problems .cap-problem {
    flex-basis: calc((100% - 24px) / 1.7);
  }
}
@media (max-width: 600px) {
  html body .cap-problems .cap-problem {
    flex-basis: 88%;
    min-height: 340px;
    padding: 26px;
  }
  html body .cap-problems .cap-problem h3 {
    font-size: 24px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html body .cap-problems .cap-problem {
    transition: none;
  }
}

/* Minimal challenge icons and shared practice imagery. */
html body .cap-problems-section .cap-intro {
  margin-bottom: 40px;
}
html body .cap-problems .cap-problem {
  background: transparent;
  border: 0;
  border-top: 1px solid #d4ded8;
  padding: 28px 22px 26px 0;
  min-height: 320px;
}
html body .cap-problems .cap-problem:hover {
  background: transparent;
  border-color: #00865b;
}
html body .cap-problems .cap-challenge-icon {
  display: block;
  width: 32px;
  height: 32px;
  margin: 0 0 32px;
  color: #32664f;
  flex-shrink: 0;
}
html body .cap-problems .cap-problem h3 {
  font-size: 24px;
  line-height: 1.35;
  margin-bottom: 22px;
}
html body .cap-practice-image {
  margin: 0;
  width: 100%;
  aspect-ratio: 2.15;
  overflow: hidden;
  background: #18211d;
}
html body .cap-practice-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none;
}

/* Dark green challenge section, matching the Group convictions section. */
html body .cap-problems-section {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  background: #16332e;
  color: #fff;
  padding-inline: max(24px, calc((100vw - 1240px) / 2));
}
html body .cap-problems-section h2,
html body .cap-problems-section .cap-problem h3 {
  color: #fff;
}
html body .cap-problems-section .cap-intro,
html body .cap-problems-section .cap-problem p {
  color: #dce6e2;
}
html body .cap-problems-section .cap-problem,
html body .cap-problems-section .cap-problem:hover {
  background: transparent;
  color: #fff;
  border-color: #ffffff30;
}
html body .cap-problems-section .cap-challenge-icon {
  color: #00d084;
}
html body .cap-problems-section a:focus-visible {
  outline-color: #00d084;
}
@media (min-width: 801px) and (max-width: 1360px) {
  html body .cap-problems-section {
    padding-inline: 60px;
  }
}

/* Match the convictions reference: connected dividers and larger line icons. */
html body .cap-problems-section .cap-problems {
  gap: 0;
  padding: 0;
  margin: 0;
  border-top: 1px solid #ffffff30;
  scroll-padding-left: 0;
}
html body .cap-problems-section .cap-problem {
  flex-basis: 33.333333%;
  min-height: 340px;
  padding: 42px 30px 0;
  border: 0;
  border-right: 1px solid #ffffff26;
  box-sizing: border-box;
}
html body .cap-problems-section .cap-problem:first-child {
  padding-left: 0;
}
html body .cap-problems-section .cap-problem:last-child {
  border-right: 0;
}
html body .cap-problems-section .cap-challenge-icon {
  width: 48px;
  height: 48px;
  margin: 0 0 40px;
  stroke-width: 1.1;
}
html body .cap-problems-section .cap-problem h3 {
  margin-bottom: 44px;
}
html body .cap-problems-section .cap-problem:hover {
  border-right-color: #ffffff26;
}
@media (max-width: 900px) {
  html body .cap-problems-section .cap-problem {
    flex-basis: 50%;
    padding-right: 24px;
    padding-left: 24px;
  }
}
@media (max-width: 600px) {
  html body .cap-problems-section .cap-problem {
    flex-basis: 88%;
    padding: 32px 24px 0;
    min-height: 350px;
  }
  html body .cap-problems-section .cap-challenge-icon {
    width: 48px;
    height: 48px;
    margin-bottom: 32px;
  }
  html body .cap-problems-section .cap-problem h3 {
    margin-bottom: 28px;
  }
}

html body .cap-problems-section .cap-problems {
  border-top-color: #ffffff40;
}
html body .cap-problems-section .cap-problem {
  padding-top: 36px;
  padding-inline: 32px;
  border-right-color: #ffffff25;
}
html body .cap-problems-section .cap-problem:first-child {
  padding-left: 0;
}
html body .cap-problems-section .cap-challenge-icon {
  width: 64px;
  height: 64px;
  color: #05dc7f;
  margin-bottom: 30px;
}
html body .cap-problems-section .cap-problem h3 {
  line-height: 1.25;
  min-height: 2.5em;
  margin-bottom: 22px;
}
html body .cap-problems-section .cap-problem p {
  color: #e3ece7;
  line-height: 1.75;
}
@media (max-width: 900px) {
  html body .cap-problems-section .cap-problem {
    padding-inline: 24px;
  }
}
@media (max-width: 600px) {
  html body .cap-problems-section .cap-problem {
    padding-top: 28px;
  }
  html body .cap-problems-section .cap-challenge-icon {
    width: 64px;
    height: 64px;
    margin-bottom: 24px;
  }
}

html body .cap-practices {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 64px 24px;
  align-items: stretch;
}
html body .cap-practices article,
html body .cap-practices article:nth-child(-n + 2) {
  grid-column: auto;
  display: flex;
  flex-direction: column;
  min-width: 0;
}
html body .cap-practices article .cap-link {
  align-self: flex-start;
  margin-top: auto;
  padding-top: 24px;
}
html body .cap-practices article .cap-practice-image {
  flex-shrink: 0;
}
@media (max-width: 600px) {
  html body .cap-practices {
    grid-template-columns: 1fr;
    gap: 48px;
  }
}

html body .cap-practices .cap-practice-image img {
  filter: grayscale(1) !important;
  transition: filter 0.4s ease;
}
html body .cap-practices article:hover .cap-practice-image img,
html body .cap-practices article:focus-within .cap-practice-image img {
  filter: grayscale(0) !important;
}
@media (prefers-reduced-motion: reduce) {
  html body .cap-practices .cap-practice-image img {
    transition: none;
  }
}

html body .cap-problems-section .cap-problems,
html body .cap-problems-section .cap-problem,
html body .cap-problems-section .cap-problem:hover {
  border: 0 !important;
}

/* Full colour, a compact type scale, and clear card layouts. */
html body {
  --paper: #fff;
  --ink: #12251d;
  --muted: #46564e;
  --green: #00865b;
  background: #fff;
  color: #12251d;
  font-size: 16px;
}
html body main :is(h1, h2, .case-heading, .section-title) {
  font-size: 40px !important;
  line-height: 1.2 !important;
  font-weight: 500 !important;
}
html body main :is(p, li, dd, dt, blockquote, address, .utec-prose, .group-hero-copy, .body-copy) {
  font-size: 16px !important;
  line-height: 1.75 !important;
}
html body main :is(h3, h4) {
  font-size: 24px !important;
  line-height: 1.3 !important;
}
html body main :is(figure img, img) {
  filter: none !important;
  opacity: 1;
}
html body.home-page p {
  color: #46564e;
}
html
  body
  :is(
    .home-work,
    .home-clients,
    .home-practices,
    .group-story,
    .group-leadership,
    .group-cofounder,
    .group-people
  ) {
  background: #fff;
}
html body .home-practice-panel {
  background: #e8e8e8 !important;
  border: 1px solid #d9dfdb;
  border-radius: 0;
  padding: 0 !important;
  min-height: 0 !important;
}
html body .home-practice-panel > div {
  padding: clamp(28px, 4vw, 64px) !important;
}
html body .home-practice-panel #practice-title {
  color: #12251d;
  margin: 0 0 24px !important;
}
html body .home-practice-panel #practice-description {
  color: #46564e;
  margin: 0 0 26px !important;
}
html body .home-practice-panel #practice-services {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 32px !important;
}
html body .home-practice-panel #practice-services li {
  padding: 8px 12px;
  border: 1px solid #cdd5cf;
  color: #46564e;
  background: transparent;
  font-size: 14px !important;
  line-height: 1.5 !important;
}
html body .home-practice-panel #practice-link {
  margin: 0;
  min-height: 48px;
  padding: 12px 28px;
  font-size: 16px;
}
html body .home-practice-grid {
  align-items: start !important;
  grid-template-columns: minmax(200px, 0.5fr) minmax(0, 1.2fr);
  gap: 48px;
}
html body .client-relationship-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 16px 24px;
  scroll-margin-top: 30px;
}
html body .client-relationship .home-client {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 110px;
  padding: 14px !important;
  overflow: visible;
}
html body #partner-grid[data-expanded='false'] > .client-relationship:nth-child(n + 11) {
  display: none;
}
.partner-toggle {
  display: block;
  margin: 32px auto 0;
  padding: 12px 30px;
  border: 1px solid #163d2e;
  background: transparent;
  color: #163d2e;
  font-size: 16px;
  font-weight: 500;
  cursor: pointer;
}
.partner-toggle:hover {
  background: #163d2e;
  color: white;
}
.partner-toggle:focus-visible {
  outline: 2px solid #00865b;
  outline-offset: 5px;
}
html body .contact-routes {
  background: #f2f6f3;
}
html body .contact-route-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  margin-top: 40px;
}
html body .contact-route {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 20px;
  border: 1px solid #d3dfd7;
  border-top: 3px solid #00865b;
  padding: 32px;
  background: #fff;
  min-width: 0;
}
html body .contact-route:last-child {
  border-bottom: 1px solid #d3dfd7;
}
html body .contact-route h3 {
  margin: 0;
  font-size: 28px !important;
  max-width: none;
  overflow-wrap: normal;
}
html body .contact-route p {
  margin: 0;
  max-width: none;
  color: #46564e;
  flex: 1;
}
html body .contact-route .group-button {
  grid-column: auto;
  white-space: normal;
  font-size: 16px;
  margin-top: 8px;
  min-width: 0;
  max-width: 100%;
  min-height: 48px;
  padding: 12px 22px;
}
html body .contact-next,
html body .contact-offices {
  background: #f2f6f3;
}
@media (max-width: 1000px) {
  html body .client-relationship-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  html body #partner-grid[data-expanded='false'] > .client-relationship:nth-child(n + 7) {
    display: none;
  }
  html body .home-practice-grid {
    grid-template-columns: minmax(160px, 0.5fr) minmax(0, 1.2fr);
    gap: 24px;
  }
}
@media (max-width: 640px) {
  html body .client-relationship-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  html body #partner-grid[data-expanded='false'] > .client-relationship:nth-child(n + 5) {
    display: none;
  }
  html body .client-relationship .home-client {
    min-height: 90px;
  }
  html body .home-practice-grid {
    grid-template-columns: 1fr;
  }
  html body .contact-route-list {
    grid-template-columns: 1fr;
  }
  html body .contact-route {
    padding: 24px;
  }
  html body main :is(h1, h2, .case-heading, .section-title) {
    font-size: 40px !important;
    overflow-wrap: break-word;
  }
  html body .home-practice-panel > div {
    padding: 24px !important;
  }
}

/* Practice reference: image first, green active tab, compact card. */
html body .home-practice-grid {
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(32px, 6vw, 88px);
  align-items: start !important;
}
html body .home-practice-panel {
  display: block !important;
  padding: 32px !important;
  border: 1px solid #00c872;
  border-radius: 8px;
  background: #e8e8e8 !important;
}
html body .home-practice-panel .practice-image-placeholder {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 2.15;
  background: #e8e8e8;
  margin: 0;
  border-radius: 6px;
  overflow: hidden;
}
html body .home-practice-panel > div {
  padding: 24px 0 0 !important;
}
html body .home-practice-panel #practice-label {
  display: block !important;
  font-size: 11px;
  line-height: 1.5;
  font-weight: 500;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: #626b65;
  margin: 0 0 16px;
}
html body .home-practice-panel #practice-title {
  margin: 0 0 18px !important;
}
html body .home-practice-panel #practice-services {
  gap: 8px;
  margin-bottom: 28px !important;
}
html body .home-practice-panel #practice-services li {
  padding: 6px 10px;
  border-radius: 2px;
}
html body .home-practice-tabs button {
  padding: 20px 18px !important;
  min-height: 80px;
  gap: 24px;
  font-size: 24px;
  color: #6a716d;
}
html body .home-practice-tabs button > span:first-child {
  display: inline-block !important;
  font-size: 12px;
  color: #68796e;
  flex: 0 0 28px;
}
html body .home-practice-tabs button[aria-selected='true'] {
  background: #00c872 !important;
  color: #061e13 !important;
}
html body .home-practice-tabs button[aria-selected='true']:hover {
  background: #00c872 !important;
  color: #061e13 !important;
}
html body .home-practice-tabs button[aria-selected='true'] .home-tab-arrow {
  background: transparent;
  color: #061e13;
  border-color: transparent;
}
html body a#practice-link.group-button {
  background: #00c872 !important;
  color: #061e13 !important;
  border-radius: 0;
  font-size: 16px;
}
html body a#practice-link.group-button:hover {
  background: #00ad63 !important;
  color: #061e13 !important;
}
html
  body
  :is(
    .home-impact,
    .home-insights,
    .home-testimonials,
    .contact-routes,
    .contact-next,
    .contact-offices,
    .group-department-team,
    .cap-hero,
    .cap-assembly,
    .testimonials-section
  ) {
  background: #fff !important;
}
html body .testimonial-grid figure,
html body .home-testimonial-grid figure {
  background: #fff !important;
}
@media (max-width: 800px) {
  html body .home-practice-grid {
    grid-template-columns: minmax(0, 0.65fr) minmax(0, 1fr);
    gap: 24px;
  }
  html body .home-practice-tabs button {
    font-size: 22px;
    gap: 12px;
    padding: 18px 12px !important;
  }
  html body .home-practice-panel {
    padding: 24px !important;
  }
}
@media (max-width: 640px) {
  html body .home-practice-grid {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  html body .home-practice-tabs button {
    min-height: 60px;
  }
  html body .home-practice-panel {
    padding: 24px !important;
  }
  html body .home-practice-panel > div {
    padding: 24px 0 0 !important;
  }
}

/* Requested size for partner descriptions. The practice title is the panel's
   headline, so it matches the section headings (h2). */
html body main .client-context p {
  font-size: 14px !important;
  line-height: 1.7 !important;
}
html body .home-practice-panel #practice-title {
  font-size: 35px !important;
  line-height: 1.35 !important;
}

/* Action labels use authored title case on every page. */
html body button,
html body button span,
html body .title-case-action,
html body .title-case-action span {
  text-transform: none !important;
}

html body .case-gallery-controls .gallery-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 52px;
  width: 52px;
  height: 52px;
  padding: 0;
  border: 1px solid #183b2b;
  background: #fff;
  color: #183b2b;
  transition:
    background 0.4s,
    color 0.4s;
}
html body .case-gallery-controls .gallery-arrow:hover:not(:disabled) {
  background: #183b2b;
  color: #fff;
}
html body .case-gallery-controls .gallery-arrow:disabled {
  opacity: 0.35;
  cursor: default;
}

/* Hover colours come directly from the supplied 25-brand reference. */
html body .client-relationship:has(.reference-logo-colour) .home-client {
  background: #fff !important;
}

html body .home-practice-panel .practice-image-placeholder img {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 2.15;
  object-fit: cover;
  object-position: center;
  filter: none !important;
}
html body .home-practice-panel .practice-image-placeholder img[hidden] {
  display: none !important;
}
html body :is([data-scroll-gallery], [class*='gallery']) {
  scrollbar-width: none !important;
}
html body :is([data-scroll-gallery], [class*='gallery'])::-webkit-scrollbar {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
}
html body,
html body *,
html body *::before,
html body *::after {
  font-family: var(--font-manrope), sans-serif !important;
}
html body {
  font-weight: 300;
}
html body :is(h1, h2, h3, h4, h5, h6, strong, b) {
  font-weight: 500 !important;
}
html body :is(p, li, input, textarea, select) {
  font-weight: 300 !important;
}

/* Consistent body-copy tracking across every page. */
html
  body
  :is(
    p,
    p *,
    main li,
    main li *,
    blockquote,
    blockquote *,
    dd,
    dd *,
    figcaption,
    figcaption *,
    .strategy-question
  ) {
  letter-spacing: 0.5px !important;
}
html body button[data-gallery-step],
html body button[data-testimonial-step] {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 40px !important;
  min-width: 40px !important;
  height: 40px !important;
  min-height: 40px !important;
  padding: 0 !important;
  border: 1px solid #163b2e !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: #163b2e !important;
  box-shadow: none !important;
  cursor: pointer;
  transition:
    background 0.2s,
    color 0.2s;
}
html body button[data-gallery-step] svg,
html body button[data-testimonial-step] svg {
  width: 22px;
  height: 22px;
  display: block;
}
html body button[data-gallery-step]:hover:not(:disabled),
html body button[data-testimonial-step]:hover:not(:disabled) {
  background: #163b2e !important;
  color: #fff !important;
}
html body button[data-gallery-step]:disabled,
html body button[data-testimonial-step]:disabled {
  opacity: 0.35 !important;
  cursor: default;
}
html body button[data-gallery-step]:focus-visible,
html body button[data-testimonial-step]:focus-visible {
  outline: 2px solid #163b2e;
  outline-offset: 4px;
}
html body .case-gallery-controls,
html body .home-testimonial-controls {
  gap: 10px;
}
@media (prefers-reduced-motion: reduce) {
  html body button[data-gallery-step],
  html body button[data-testimonial-step] {
    transition: none;
  }
}
html body .assembly-refined {
  background: #f5f4f0 !important;
}
.assembly-heading {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 48px;
  align-items: start;
}
.assembly-eyebrow {
  font-size: 13px;
  color: #63746a;
  margin: 8px 0 0;
  letter-spacing: 0.04em;
}
html body .assembly-refined h2 {
  font-size: clamp(32px, 3.3vw, 48px);
  font-weight: 500;
  max-width: 760px;
}
html body .assembly-refined .cap-stages {
  gap: 0;
  margin-top: 56px;
  border-top: 1px solid #b9c8bf;
  border-bottom: 1px solid #b9c8bf;
}
html body .assembly-refined .cap-stages article {
  position: relative;
  border: 0;
  padding: 36px 34px 40px;
  min-width: 0;
}
html body .assembly-refined .cap-stages article:first-child {
  padding-left: 0;
}
html body .assembly-refined .cap-stages article:last-child {
  padding-right: 0;
}
html body .assembly-refined .cap-stages article + article {
  border-left: 1px solid #ccd5cf;
}
.assembly-icon {
  display: block;
  color: #16332e;
  margin-bottom: 32px;
}
html body .assembly-refined .cap-stages h3 {
  font-size: 24px;
  color: #16332e;
  line-height: 1.3;
  margin: 0 0 20px;
}
html body .assembly-refined .cap-stages p {
  font-size: 16px;
  line-height: 1.8;
  margin: 0;
  color: #66746b;
}
.assembly-practices {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}
.assembly-practices span {
  font-size: 13px;
  padding: 7px 10px;
  border: 1px solid #b9c8bf;
  color: #16332e;
  background: transparent;
}
@media (max-width: 900px) {
  .assembly-heading {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  html body .assembly-refined .cap-stages article {
    padding: 30px 22px;
  }
  html body .assembly-refined .cap-stages h3 {
    font-size: 21px;
  }
}
@media (max-width: 640px) {
  html body .assembly-refined .cap-stages {
    grid-template-columns: 1fr;
    margin-top: 36px;
  }
  html body .assembly-refined .cap-stages article {
    padding: 30px 0 !important;
  }
  html body .assembly-refined .cap-stages article + article {
    border-left: 0;
    border-top: 1px solid #ccd5cf;
  }
  .assembly-icon {
    margin-bottom: 20px;
  }
}
html body:not(#palette-exempt) {
  --paper: #fff;
  --ink: #000;
  --muted: #000;
  --green: #00c872;
  --line: #00000026;
  background: #fff !important;
  color: #000 !important;
}
html body header:not(#palette-exempt),
html body main:not(#palette-exempt) {
  background: #fff !important;
}
html
  body
  main
  section:not(
    :is(
      .home-impact,
      .home-hero,
      .home-hero-film,
      .group-philosophy,
      .cap-problems-section,
      .practice-outcome,
      .fyi-reference-footer,
      .reference-footer,
      .site-footer,
      .group-footer,
      .group-ai-banner,
      .group-bridge-card,
      .deoria-page #future
    )
  ):not(
    :is(
        .home-impact,
        .home-hero,
        .home-hero-film,
        .group-philosophy,
        .cap-problems-section,
        .practice-outcome,
        .fyi-reference-footer,
        .reference-footer,
        .site-footer,
        .group-footer,
        .group-ai-banner,
        .group-bridge-card,
        .deoria-page #future
      )
      *
  ):not(#palette-exempt) {
  background: #fff !important;
}
html
  body
  :is(
    p,
    li,
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    blockquote,
    figcaption,
    dd,
    label,
    /* Header dropdown toggles keep their green while hovered or open, like the
       header's links (see below). */
    summary:not(.case-study-toggle:hover, [open] > .case-study-toggle),
    .strategy-question,
    .group-tag,
    .practice-eyebrow,
    .people-caption,
    .cap-proposition,
    .cap-assembled
  ):not(
    :is(
        .home-impact,
        .home-hero,
        .home-hero-film,
        .group-philosophy,
        .cap-problems-section,
        .practice-outcome,
        .fyi-reference-footer,
        .reference-footer,
        .site-footer,
        .group-footer,
        .group-ai-banner,
        .group-bridge-card,
        .deoria-page #future
      )
      *
  ):not(#palette-exempt) {
  color: #000 !important;
}
/* Not while hovered, so links' own hover colours show. */
html
  body
  :is(
    a:not(:hover),
    .people-caption span,
    .people-caption strong,
    .assembly-icon,
    .assembly-eyebrow,
    .home-meta
  ):not(
    :is(
        .story-nav,
        .home-impact,
        .home-hero,
        .home-hero-film,
        .group-philosophy,
        .cap-problems-section,
        .practice-outcome,
        .fyi-reference-footer,
        .reference-footer,
        .site-footer,
        .group-footer,
        .group-ai-banner,
        .group-bridge-card,
        .deoria-page #future
      )
      *
  ):not(#palette-exempt) {
  color: #000 !important;
}
html
  body
  :is(
    .home-practice-panel,
    #practice-panel,
    .home-practice-panel > div,
    .strategy-expertise,
    .curator-dialog,
    .contact-route,
    .home-testimonial-grid figure,
    .testimonial-grid figure
  ):not(#palette-exempt) {
  background: #fff !important;
}
html
  body
  :is(
    .group-button,
    .strategy-button,
    .fyi-footer-button,
    .footer-cta-button,
    .fyi-chat-launch,
    .fyi-chat-send
  ):not(#palette-exempt) {
  background: transparent !important;
  color: #000 !important;
  border: 1px solid #000 !important;
  box-shadow: none !important;
  transition:
    background 0.25s,
    color 0.25s,
    border-color 0.25s;
}
html
  body
  :is(
    .group-button,
    .strategy-button,
    .fyi-footer-button,
    .footer-cta-button,
    .fyi-chat-launch,
    .fyi-chat-send
  ):hover:not(#palette-exempt) {
  background: #00c872 !important;
  border-color: #00c872 !important;
  color: #000 !important;
}
html
  body
  :is(.people-tabs button, .home-work-filters button, .home-practice-tabs button):not(
    #palette-exempt
  ) {
  background: transparent !important;
  color: #000 !important;
  border-color: #00000026 !important;
}
html
  body
  :is(
    .people-tabs button[aria-selected='true'],
    .home-work-filters button[aria-pressed='true']
  ):not(#palette-exempt) {
  background: #000 !important;
  color: #fff !important;
  border-color: #000 !important;
}
html body .home-practice-tabs button[aria-selected='true']:not(#palette-exempt) {
  background: transparent !important;
  color: #000 !important;
  box-shadow: inset 2px 0 #00c872;
}
html body :is(.people-tabs button, .home-work-filters button):hover:not(#palette-exempt) {
  background: #00c872 !important;
  color: #000 !important;
  border-color: #00c872 !important;
}
html
  body
  :is(button[data-gallery-step], button[data-testimonial-step]):hover:not(:disabled):not(
    #palette-exempt
  ) {
  background: #00c872 !important;
  border-color: #00c872 !important;
  color: #000 !important;
}
html body .headline-dot,
html body h1 .headline-dot {
  color: #00c872 !important;
}
html body .cap-link:not(#palette-exempt),
html body .strategy-back:not(#palette-exempt) {
  color: #000 !important;
  background: transparent !important;
  border-color: #00000040 !important;
}
html body :is(.cap-link, .home-text-link, .strategy-back):hover:not(#palette-exempt) {
  border-color: #00c872 !important;
}
html body :is(button[data-gallery-step], button[data-testimonial-step]):not(#palette-exempt) {
  background: transparent !important;
  color: #000 !important;
  border-color: #000 !important;
}
html
  body
  :is(button[data-gallery-step], button[data-testimonial-step]):hover:not(:disabled):not(
    #palette-exempt
  ) {
  background: #00c872 !important;
  color: #000 !important;
  border-color: #00c872 !important;
}
html
  body
  :is(.assembly-practices span, .testimonial-proposed, .home-work-card h3, .cap-practices h3):not(
    #palette-exempt
  ) {
  color: #000 !important;
}
html body:not(#type-exempt) {
  font-size: 15px !important;
  line-height: 1.85;
}
html body h1:not(#type-exempt) {
  font-size: 35px !important;
  line-height: 1.25 !important;
}
html body h2:not(#type-exempt) {
  font-size: 35px !important;
  line-height: 1.35 !important;
}
html body h3:not(#type-exempt) {
  font-size: 18px !important;
  line-height: 1.45 !important;
}
html body :is(h1, h2, h3) :is(span, strong, b):not(#type-exempt) {
  font-size: inherit !important;
  line-height: inherit !important;
}
html
  body
  :is(
    p,
    li,
    blockquote,
    dd,
    figcaption,
    label,
    input,
    textarea,
    select,
    .strategy-question,
    .case-introduction
  ):not(#type-exempt) {
  font-size: 15px !important;
  line-height: 1.85 !important;
}
html body :is(.utec-prose, .case-introduction, .strategy-challenge) p + p:not(#type-exempt) {
  margin-top: 28px !important;
}
html body main section:not(.home-hero):not(.home-hero-film):not(section section):not(#type-exempt),
html body .strategy-section:not(#type-exempt) {
  padding-top: 112px !important;
  padding-bottom: 112px !important;
}
html body main :is(.hero-text, .strategy-hero, .cap-hero, .group-hero):not(#type-exempt) {
  padding-top: 88px !important;
  padding-bottom: 72px !important;
}
html body :is(.home-section-head, .home-testimonial-head):not(#type-exempt) {
  margin-bottom: 56px !important;
}
html body .home-impact:not(#type-exempt) {
  background: #16332e !important;
  color: white !important;
}
html body .home-impact :is(h2, p, strong, span):not(#type-exempt) {
  color: #fff !important;
}
html body .home-impact .headline-dot:not(#type-exempt),
html body .home-impact strong > span:not(#type-exempt) {
  color: #00c872 !important;
}
html body .home-impact .home-metrics > div:not(#type-exempt) {
  border-top-color: #ffffff40 !important;
  padding-top: 32px;
}
html body .home-impact .home-metrics:not(#type-exempt) {
  gap: 40px;
  margin-top: 64px;
}
html body .home-impact .home-metrics strong:not(#type-exempt) {
  font-size: 35px !important;
  line-height: 1.2 !important;
}
html body .group-story-photo:not(#type-exempt),
html body .group-story-photo:hover:not(#type-exempt) {
  filter: grayscale(1) !important;
}
@media (max-width: 700px) {
  html
    body
    main
    section:not(.home-hero):not(.home-hero-film):not(section section):not(#type-exempt),
  html body .strategy-section:not(#type-exempt) {
    padding-top: 72px !important;
    padding-bottom: 72px !important;
  }
  html body main :is(.hero-text, .strategy-hero, .cap-hero, .group-hero):not(#type-exempt) {
    padding-top: 64px !important;
    padding-bottom: 56px !important;
  }
  html body :is(.home-section-head, .home-testimonial-head):not(#type-exempt) {
    margin-bottom: 40px !important;
  }
  html body .home-impact .home-metrics:not(#type-exempt) {
    gap: 36px 24px;
  }
}
html body.home-page main section.home-impact:not(#palette-exempt):not(#type-exempt) {
  background: #16332e !important;
  color: #fff !important;
}
html body.home-page .home-impact :is(h2, p, strong, span):not(#palette-exempt):not(#type-exempt) {
  color: #fff !important;
}
html
  body.home-page
  .home-impact
  :is(.headline-dot, strong > span):not(#palette-exempt):not(#type-exempt) {
  color: #00c872 !important;
}

html
  body
  :is(
    p,
    li,
    blockquote,
    dd,
    figcaption,
    label,
    input,
    textarea,
    select,
    .strategy-question,
    .case-introduction
  ):not(#type-exempt) {
  line-height: 24px !important;
}
html body.home-page main .home-insights-grid > article > .group-button {
  margin-top: 28px !important;
}

/* Stat figures line up with their labels. Digits carry empty space on their
   left, a tabular "1" most of all (0.165em, against about 0.07em for other
   digits), so large figures looked indented. The first character is set
   proportional (0.04–0.07em for every digit and ₹) while the rest stay tabular
   so the count-up keeps its width, and the figure is pulled left by the
   remaining space: its ink lands within about 1px of the label's. */
html body :is(.home-metrics, #utec-metrics, .impact-numbers) strong:not(#type-exempt) {
  margin-left: -0.05em;
}
html body :is(#utec-metrics, .impact-numbers) strong::first-letter {
  font-variant-numeric: proportional-nums;
}
html
  body
  :is(.group-button, .strategy-button, .fyi-footer-button, .footer-cta-button):not(
    #palette-exempt
  ):not(#button-exempt) {
  background: transparent !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  letter-spacing: 0.5px !important;
  line-height: 1.3 !important;
  min-height: 48px;
  padding: 14px 24px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
}
html body a#practice-link.group-button:not(#button-exempt) {
  background: transparent !important;
  border: 1px solid #000 !important;
  color: #000 !important;
}
html
  body
  :is(.group-button, .strategy-button, .fyi-footer-button, .footer-cta-button):hover:not(
    #palette-exempt
  ):not(#button-exempt),
html body a#practice-link.group-button:hover:not(#button-exempt) {
  background: #00c872 !important;
  border-color: #00c872 !important;
  color: #000 !important;
}
html
  body
  :is(.group-button, .strategy-button, .fyi-footer-button, .footer-cta-button):focus-visible:not(
    #palette-exempt
  ):not(#button-exempt) {
  outline: 2px solid #00c872;
  outline-offset: 4px;
}
html body .people-caption h3:not(#type-exempt) {
  font-size: 18px !important;
  font-weight: 500 !important;
  letter-spacing: 0.5px !important;
  line-height: 1.45 !important;
}
html body .people-tabs button:not(#palette-exempt):not(#type-exempt) {
  letter-spacing: 0.5px !important;
}
html body .group-founder-linkedin:not(#button-exempt) {
  width: auto !important;
  min-width: 160px;
  margin-top: 24px;
  text-decoration: none;
}
.group-founder-linkedin svg {
  width: 18px;
  height: 18px;
  flex: none;
}

/* Compact action buttons, with room for longer labels on narrow screens. */
html
  body
  :is(.group-button, .strategy-button, .fyi-footer-button, .footer-cta-button, .partner-toggle):not(
    #palette-exempt
  ):not(#button-exempt) {
  width: fit-content !important;
  max-width: 100% !important;
  min-width: 0 !important;
  height: auto !important;
  min-height: 40px !important;
  padding: 10px 20px !important;
  border-radius: 0 !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  letter-spacing: 0.5px !important;
  gap: 10px !important;
  white-space: normal !important;
  text-align: center !important;
}
html body .partner-toggle:not(#palette-exempt):not(#button-exempt) {
  border: 1px solid #000 !important;
  background: transparent !important;
  color: #000 !important;
  cursor: pointer;
}
html body .partner-toggle:hover:not(#palette-exempt):not(#button-exempt) {
  background: #00c872 !important;
  border-color: #00c872 !important;
  color: #000 !important;
}
html body :is(h1, h2, h3, h4, h5, h6):not(#type-exempt):not(#headline-exempt),
html body :is(h1, h2, h3, h4, h5, h6) *:not(#type-exempt):not(#headline-exempt) {
  letter-spacing: 0.5px !important;
}

html body :is(h1, h2, h3, h4, h5, h6):not(#type-exempt):not(#headline-exempt),
html body :is(h1, h2, h3, h4, h5, h6) *:not(#type-exempt):not(#headline-exempt) {
  font-family: var(--font-manrope), sans-serif !important;
  font-weight: 500 !important;
}

html
  body
  :is(button[data-gallery-step], button[data-testimonial-step]):not(#palette-exempt):not(
    #arrow-exempt
  ) {
  width: 40px !important;
  min-width: 40px !important;
  height: 40px !important;
  min-height: 40px !important;
  padding: 0 !important;
  border: 1px solid #b8b8b8 !important;
  border-radius: 50% !important;
  background: transparent !important;
  color: #111 !important;
  box-shadow: none !important;
  transition:
    background 0.2s,
    border-color 0.2s;
}
html body :is(button[data-gallery-step], button[data-testimonial-step]) svg {
  width: 20px !important;
  height: 20px !important;
}
html body :is(button[data-gallery-step], button[data-testimonial-step]) svg * {
  stroke-width: 1.2 !important;
  stroke-linecap: round;
  stroke-linejoin: round;
}
html
  body
  :is(button[data-gallery-step], button[data-testimonial-step]):hover:not(:disabled):not(
    #palette-exempt
  ):not(#arrow-exempt) {
  background: #f0f0f0 !important;
  border-color: #909090 !important;
  color: #111 !important;
}
html
  body
  :is(button[data-gallery-step], button[data-testimonial-step]):disabled:not(#arrow-exempt) {
  opacity: 0.25 !important;
}
html body :is(button[data-gallery-step], button[data-testimonial-step]):focus-visible {
  outline: 2px solid #00c872;
  outline-offset: 4px;
}
html body :is(.case-gallery-controls, .home-testimonial-controls) {
  gap: 12px !important;
}

html body.home-page .home-testimonial-grid figure {
  min-height: 0 !important;
  justify-content: flex-start !important;
  padding-top: 28px !important;
}
html body.home-page .home-testimonial-grid figure::before {
  font-size: 112px !important;
  line-height: 0.85 !important;
  height: 72px !important;
  margin-bottom: 12px !important;
}
html body.home-page .home-testimonial-grid blockquote {
  margin: 0 0 20px !important;
}
html body.home-page .home-testimonial-grid figcaption {
  margin-top: 0 !important;
  padding-top: 0 !important;
  gap: 3px !important;
}
html body.home-page .home-testimonial-grid figcaption strong {
  margin: 0 !important;
}

html body .fyi-chat .fyi-chat-panel header:not(#palette-exempt):not(#chat-exempt) {
  background: #16332e !important;
  color: #fff !important;
  min-height: 0 !important;
  height: auto !important;
  position: relative !important;
}
html body .fyi-chat-panel header :is(strong, span, button):not(#palette-exempt):not(#chat-exempt) {
  color: #fff !important;
}
html body .fyi-chat-panel header strong {
  font-size: 20px !important;
  font-weight: 500 !important;
  letter-spacing: 0.5px !important;
}
html body .fyi-chat-panel header span {
  font-size: 14px !important;
  letter-spacing: 0.5px !important;
}
html body .fyi-chat-panel .fyi-chat-close {
  border: 1px solid #ffffff60 !important;
  background: transparent !important;
}
html body .fyi-chat-panel .fyi-chat-send:not(#palette-exempt):not(#chat-exempt) {
  min-height: 40px !important;
  font-size: 13px !important;
  letter-spacing: 0.5px !important;
  padding: 10px 20px !important;
  line-height: 1.4 !important;
}

html body .fyi-chat .fyi-chat-launch:not(#palette-exempt):not(#chat-exempt) {
  background: #00c872 !important;
  border-color: #00c872 !important;
  color: #000 !important;
  box-shadow: none !important;
}
html body .fyi-chat .fyi-chat-launch:hover:not(#palette-exempt):not(#chat-exempt) {
  background: #16332e !important;
  border-color: #16332e !important;
  color: #fff !important;
}
html body main section.cap-video-hero:not(#type-exempt):not(#banner-exempt) {
  position: relative;
  padding: 0 !important;
  background: #fff !important;
}
html body .cap-banner-video {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16/9;
  object-fit: contain;
  background: #fff;
}
html body h1.cap-accessible-heading {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
html body main section.assembly-refined:not(#palette-exempt):not(#assembly-exempt) {
  background: #16332e !important;
  color: #fff !important;
}
html body .assembly-refined .assembly-heading {
  display: block;
}
html body .assembly-refined .assembly-eyebrow:not(#palette-exempt):not(#assembly-exempt) {
  color: #c7d6d0 !important;
  margin: 0 0 16px !important;
  font-size: 11px !important;
  line-height: 1.5 !important;
  font-weight: 500 !important;
  letter-spacing: 0.13em !important;
  text-transform: uppercase;
}
html body .assembly-refined h2:not(#palette-exempt):not(#assembly-exempt) {
  color: #fff !important;
  max-width: 760px;
  margin: 0 !important;
}
html
  body
  .assembly-refined
  :is(h3, p, .assembly-practices span):not(#palette-exempt):not(#assembly-exempt) {
  color: #fff !important;
}
html body .assembly-refined .cap-stages p:not(#palette-exempt):not(#assembly-exempt) {
  color: #c7d6d0 !important;
}
html body .assembly-refined .assembly-icon:not(#palette-exempt):not(#assembly-exempt) {
  color: #00c872 !important;
  width: 64px;
  height: 64px;
  margin-bottom: 36px;
}
html body .assembly-refined .cap-stages {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: 48px;
  border-top: 1px solid #ffffff26;
  border-bottom: 0;
  gap: 0;
}
html body .assembly-refined .cap-stages article {
  padding: 36px 32px 0;
  display: flex;
  flex-direction: column;
  min-height: 290px;
}
html body .assembly-refined .cap-stages article:first-child {
  padding-left: 0;
}
html body .assembly-refined .cap-stages article:last-child {
  padding-right: 0;
}
html body .assembly-refined .cap-stages article + article {
  border-left: 1px solid #ffffff26;
}
html body .assembly-refined .cap-stages h3 {
  margin-bottom: 32px;
}
html body .assembly-refined .assembly-practices {
  gap: 16px;
  margin: 0 0 20px;
}
html body .assembly-refined .assembly-practices span {
  padding: 0;
  border: 0;
  background: transparent;
}
@media (max-width: 700px) {
  html body .assembly-refined .cap-stages {
    grid-template-columns: 1fr;
    margin-top: 36px;
  }
  html body .assembly-refined .cap-stages article {
    padding: 28px 0 !important;
    min-height: 0;
  }
  html body .assembly-refined .cap-stages article + article {
    border-left: 0;
    border-top: 1px solid #ffffff26;
  }
  html body .assembly-refined .assembly-icon {
    margin-bottom: 24px;
  }
}

html
  body
  main
  section.assembly-refined:not(#palette-exempt):not(#assembly-exempt):not(#contrast-exempt) {
  background: #fff !important;
  color: #000 !important;
}
html
  body
  .assembly-refined
  :is(h2, h3, p, span, .assembly-icon):not(#palette-exempt):not(#assembly-exempt):not(
    #contrast-exempt
  ) {
  color: #000 !important;
  opacity: 1 !important;
}
html body .assembly-refined .cap-stages {
  border-color: #00000026 !important;
}
html body .assembly-refined .cap-stages article + article {
  border-color: #00000026 !important;
}
html
  body
  .assembly-refined
  .headline-dot:not(#palette-exempt):not(#assembly-exempt):not(#contrast-exempt) {
  color: #00c872 !important;
}
.capabilities-dropdown .case-study-menu {
  max-height: calc(100dvh - 150px);
  overflow-y: auto;
}
@media (max-width: 700px) {
  .capabilities-dropdown .case-study-menu {
    max-height: none;
  }
}
html body.experience-page main .strategy-hero:not(#type-exempt) {
  padding-bottom: 24px !important;
}
html body.join-us-page .career-grid {
  display: grid;
  grid-template-columns: none;
  grid-template-rows: auto;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 24px) / 2);
  grid-auto-rows: auto;
  gap: 24px;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scroll-padding-inline: 1px;
  padding: 1px 1px 20px;
  scrollbar-width: thin;
  scrollbar-color: #e8e8e8 transparent;
}
html body.join-us-page .career-card {
  display: flex;
  flex-direction: column;
  padding: 32px;
  border: 1px solid #dce2de;
  background: #fff;
  scroll-snap-align: start;
  min-width: 0;
}
html body.join-us-page .career-card h3 {
  margin: 16px 0 20px;
}
html body .career-grid:focus-visible {
  outline: 1px solid #111;
  outline-offset: 6px;
}
html body.studio-page main .strategy-hero:not(#type-exempt) {
  padding-bottom: 32px !important;
}
@media (max-width: 700px) {
  html body.join-us-page .career-grid {
    grid-auto-columns: 88%;
    gap: 18px;
  }
  html body.join-us-page .career-card {
    padding: 24px;
  }
}

html body .career-grid > .career-card {
  border: 1px solid #00c872 !important;
}

html
  body
  main
  section:not(.home-hero):not(.home-hero-film):not(section section):not(#spacing-exempt):not(
    #spacing-layout-exempt
  ):not(#spacing-media-exempt),
html
  body
  .strategy-section:not(#spacing-exempt):not(#spacing-layout-exempt):not(#spacing-media-exempt) {
  padding-top: 72px !important;
  padding-bottom: 72px !important;
}
html
  body
  main
  section:has(> .strategy-section):not(#spacing-exempt):not(#spacing-layout-exempt):not(
    #spacing-media-exempt
  ) {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
html
  body
  main
  :is(.hero-text, .strategy-hero, .group-hero):not(#spacing-exempt):not(#spacing-layout-exempt):not(
    #spacing-media-exempt
  ) {
  padding-top: 72px !important;
  padding-bottom: 32px !important;
}
html
  body
  main
  :is(.utec-video-banner, .case-video-banner, .cap-video-hero):not(#spacing-exempt):not(
    #spacing-layout-exempt
  ):not(#spacing-media-exempt) {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
html
  body
  main
  :is(.home-section-head, .home-testimonial-head):not(#spacing-exempt):not(
    #spacing-layout-exempt
  ):not(#spacing-media-exempt) {
  margin-bottom: 40px !important;
}
html
  body
  main
  :is(
    .strategy-challenge,
    .strategy-services,
    .strategy-related,
    .practice-process,
    .practice-image-pair,
    .strategy-industry-list,
    .career-grid,
    .intelligence-plans
  ):not(#spacing-exempt):not(#spacing-layout-exempt):not(#spacing-media-exempt) {
  margin-top: 40px !important;
}
html body.join-us-page main .career-application-note {
  margin-bottom: 0;
}
@media (max-width: 700px) {
  html
    body
    main
    section:not(.home-hero):not(.home-hero-film):not(section section):not(#spacing-exempt):not(
      #spacing-layout-exempt
    ):not(#spacing-media-exempt),
  html
    body
    .strategy-section:not(#spacing-exempt):not(#spacing-layout-exempt):not(#spacing-media-exempt) {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }
  html
    body
    main
    :is(.hero-text, .strategy-hero, .group-hero):not(#spacing-exempt):not(
      #spacing-layout-exempt
    ):not(#spacing-media-exempt) {
    padding-top: 48px !important;
    padding-bottom: 24px !important;
  }
  html
    body
    main
    :is(.home-section-head, .home-testimonial-head):not(#spacing-exempt):not(
      #spacing-layout-exempt
    ):not(#spacing-media-exempt) {
    margin-bottom: 28px !important;
  }
  html
    body
    main
    :is(
      .strategy-challenge,
      .strategy-services,
      .strategy-related,
      .practice-process,
      .practice-image-pair,
      .strategy-industry-list,
      .career-grid,
      .intelligence-plans
    ):not(#spacing-exempt):not(#spacing-layout-exempt):not(#spacing-media-exempt) {
    margin-top: 28px !important;
  }
}

html
  body
  main
  section:has(> .strategy-section):not(#spacing-exempt):not(#spacing-layout-exempt):not(
    #spacing-media-exempt
  ),
html
  body
  main
  :is(.utec-video-banner, .case-video-banner, .cap-video-hero):not(#spacing-exempt):not(
    #spacing-layout-exempt
  ):not(#spacing-media-exempt) {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

html
  body
  :is(
    button,
    .title-case-action,
    .strategy-button,
    .group-button,
    .fyi-footer-button,
    .journal-reading summary,
    input[type='submit']
  ) {
  text-transform: capitalize !important;
}
html body.insights-page main .journal-reading summary {
  transition: border-color 0.2s;
}

/* Caption copy is authored in Title Case; keep later page rules consistent. */
html
  body
  :is(
    figcaption,
    .case-editorial-caption,
    .people-caption,
    .team-caption,
    .experience-organisation-name,
    .strategy-gallery-status,
    .practice-contact-action-label
  ),
html
  body
  :is(
    figcaption,
    .case-editorial-caption,
    .people-caption,
    .team-caption,
    .experience-organisation-name,
    .strategy-gallery-status,
    .practice-contact-action-label
  )
  * {
  text-transform: capitalize !important;
}

html body .group-curator-copy > p {
  width: 100% !important;
  max-width: none !important;
  white-space: normal !important;
  text-wrap: wrap !important;
}
html body .group-curator-copy > p + p {
  margin-top: 24px !important;
}

html body.group-page .group-philosophy .group-philosophy-cards > article,
html body.group-page .group-philosophy .group-philosophy-cards > article + article {
  border: 0 !important;
}

html body .strategy-momentum-image {
  height: auto !important;
  aspect-ratio: 16/9 !important;
  background: #050505 !important;
  overflow: hidden;
}
html body .strategy-momentum-image img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center;
  filter: none !important;
}

html body .experience-green-banner {
  height: auto !important;
  aspect-ratio: 16/9 !important;
  background: #000 !important;
  padding: 0 !important;
  overflow: hidden;
  margin: 0;
}
html body .experience-green-banner img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  filter: none !important;
}
html body #strategy-challenge > .strategy-challenge {
  margin-top: 0 !important;
}
html body img[src*='strategy-golden-maze.webp']:not(#strategy-image-exempt) {
  filter: grayscale(1) !important;
  object-position: center 30% !important;
  transition: filter 0.35s ease !important;
}
html body img[src*='strategy-golden-maze.webp']:not(#strategy-image-exempt):hover,
html
  body
  .practice-image-placeholder:hover
  img[src*='strategy-golden-maze.webp']:not(#strategy-image-exempt),
html
  body
  .cap-practice-image:hover
  img[src*='strategy-golden-maze.webp']:not(#strategy-image-exempt),
html
  body
  :is(.home-practice-panel, .cap-practices article):focus-within
  img[src*='strategy-golden-maze.webp']:not(#strategy-image-exempt) {
  filter: grayscale(0) !important;
}
@media (prefers-reduced-motion: reduce) {
  html body img[src*='strategy-golden-maze.webp']:not(#strategy-image-exempt) {
    transition: none !important;
  }
}

html body .strategy-momentum-image:has(img[src*='strategy-newtons-cradle.webp']) {
  aspect-ratio: 1604/980 !important;
}

/* Video banners begin directly under the project navigation. */
html
  body
  main
  > :is(
    .utec-video-banner,
    .deoria-video-banner,
    .learning-video-banner,
    .mahindra-video-banner,
    .birla-video-banner,
    .case-video-banner,
    .hero:has(> .ifbe-hero-film)
  ):not(#banner-gap-exempt):not(#banner-spacing-exempt):not(#banner-layout-exempt):not(
    #banner-media-exempt
  ) {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-top: 0 !important;
}
html body main:has(> .utec-video-banner),
html body main:has(> .deoria-video-banner),
html body main:has(> .learning-video-banner),
html body main:has(> .mahindra-video-banner),
html body main:has(> .birla-video-banner),
html body main:has(> .hero > .ifbe-hero-film) {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
html body .ifbe-hero-film {
  margin: 0 !important;
  padding: 0 !important;
  width: 100%;
}
html body .ifbe-hero-film video {
  display: block;
  width: 100%;
  height: auto;
}

html
  body
  main
  :is(
    .utec-banner-film,
    .deoria-banner-film,
    .learning-banner-film,
    .mahindra-banner-film,
    .birla-banner-film,
    .ifbe-hero-film > video
  ) {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  aspect-ratio: 16/9 !important;
  object-fit: contain !important;
  margin: 0 !important;
}
html
  body
  main
  :is(
    .utec-video-introduction,
    .deoria-editorial-intro,
    .learning-video-introduction,
    .mahindra-video-introduction,
    .birla-video-introduction,
    .hero:has(> .ifbe-hero-film) > .hero-text
  ):not(#intro-gap-exempt):not(#intro-spacing-exempt):not(#intro-layout-exempt):not(
    #intro-media-exempt
  ) {
  padding-top: 56px !important;
  padding-bottom: 56px !important;
}
@media (max-width: 700px) {
  html
    body
    main
    :is(
      .utec-video-introduction,
      .deoria-editorial-intro,
      .learning-video-introduction,
      .mahindra-video-introduction,
      .birla-video-introduction,
      .hero:has(> .ifbe-hero-film) > .hero-text
    ):not(#intro-gap-exempt):not(#intro-spacing-exempt):not(#intro-layout-exempt):not(
      #intro-media-exempt
    ) {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }
}

html body .cap-main {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
html
  body
  main
  .cap-video-hero:not(#cap-gap-exempt):not(#cap-spacing-exempt):not(#cap-layout-exempt):not(
    #cap-media-exempt
  ) {
  margin-top: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
html
  body
  main
  .cap-assembly:not(#assembly-palette-exempt):not(#assembly-theme-exempt):not(
    #assembly-layout-exempt
  ):not(#assembly-colour-exempt):not(#assembly-bg-exempt) {
  background: #e8e8e8 !important;
}
/* Continuous section backgrounds and compact shared navigation. */
html body main > section:not(#section-gap-exempt):not(#section-gap-layout-exempt),
html body.home-page main > section:not(#home-spacing-exempt) {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
html body > header {
  min-height: 76px !important;
  padding-top: 10px !important;
  padding-bottom: 10px !important;
}
html body > header :is(.group-logo, .fyi-nav-logo) {
  width: 42px !important;
  height: 56px !important;
}
@media (max-width: 700px) {
  html body > header {
    min-height: 64px !important;
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }
  html body > header :is(.group-logo, .fyi-nav-logo) {
    width: 36px !important;
    height: 48px !important;
  }
  html body > header .project-menu-button {
    min-width: 44px;
    min-height: 44px;
  }
  html body > header .site-primary-menu {
    max-height: calc(100dvh - 96px);
  }
}

/* Equal card baselines, independent of caption length. */
html body.home-page .home-work-editorial .case-editorial-grid {
  align-items: stretch;
}
html body.home-page .home-work-editorial .case-editorial-card {
  display: flex;
  align-self: stretch;
}
html body.home-page .home-work-editorial .case-editorial-card > a {
  display: flex;
  flex-direction: column;
  width: 100%;
}
html body.home-page .home-work-editorial .case-editorial-caption {
  flex: 1;
}
@media (max-width: 900px) {
  html body > header .project-navigation {
    position: static;
  }
  html body > header .site-primary-menu {
    left: 0;
    right: 0;
    top: 100%;
    width: 100%;
    max-height: calc(100dvh - 76px);
    padding: 18px var(--pad) 24px;
    box-sizing: border-box;
    border: 0;
    border-top: 1px solid #e1e5e2;
    border-bottom: 1px solid #e1e5e2;
    border-radius: 0;
    background: #fff;
    box-shadow: 0 12px 24px #16332d0a;
  }
  html body > header .site-primary-menu > a,
  html body > header .case-study-toggle {
    font-size: 16px !important;
    min-height: 48px;
    padding: 12px 0;
    letter-spacing: 0.1px;
  }
  html body > header .case-study-toggle {
    display: flex;
    justify-content: space-between;
    width: 100%;
  }
  html body > header .site-primary-menu > details,
  html body > header .site-primary-menu > a:not(.nav-contact-button) {
    border-bottom: 1px solid #edf0ee !important;
  }
  html body > header .case-study-menu {
    margin: 4px 0 12px;
    padding: 4px 0 4px 14px;
    background: #f6f7f6;
    border-left: 1px solid #00c872;
  }
  html body > header .case-study-menu a {
    font-size: 14px !important;
    min-height: 42px;
  }
  html body > header .site-primary-menu > a.nav-contact-button {
    justify-content: center;
    margin-top: 18px;
    background: #16332d !important;
    color: #fff !important;
    border-color: #16332d !important;
  }
  html body > header .project-menu-button span {
    height: 1px;
    width: 22px;
  }
}
@media (max-width: 700px) {
  html body.home-page .home-practice-grid {
    display: block;
  }
  html body.home-page .home-practice-tabs {
    display: flex !important;
    flex-direction: column;
    gap: 0;
  }
  html body.home-page .home-practice-tabs > button {
    width: 100%;
    flex-shrink: 0;
  }
  html body.home-page .home-practice-tabs > .home-practice-panel {
    margin: 0 0 16px;
    width: 100%;
    box-sizing: border-box;
    animation: none;
  }
}
.bio-social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 28px;
}
html body .bio-social-links a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 10px 16px;
  border: 1px solid #d4dbd6;
  color: #16332e;
  text-decoration: none;
  font-size: 14px !important;
  line-height: 1.5 !important;
  transition: background 0.2s;
}
html body .bio-social-links a:hover {
  background: #e8e8e8;
}
html body .sarita-bio-details > summary.bio-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 26px;
  min-height: 44px;
  margin: 0;
  padding: 12px 18px;
  border: 1px solid #16332e;
  border-radius: 4px;
  background: #16332e;
  color: #fff;
  font-size: 14px !important;
  line-height: 20px !important;
  font-weight: 500;
  transition:
    background 0.2s,
    color 0.2s,
    border-color 0.2s;
}
html body .sarita-bio-details > summary.bio-toggle:hover {
  background: #00c872;
  border-color: #00c872;
  color: #16332e;
}
html body .sarita-bio-details > summary.bio-toggle {
  display: inline-flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 0;
  min-height: 0;
  margin: 0;
  padding: 0 0 10px;
  border: 0;
  border-bottom: 1px solid #bfc4c0;
  border-radius: 0;
  background: transparent;
  color: #111;
  font-size: 24px !important;
  line-height: 1.3 !important;
  font-weight: 400;
  transition:
    border-color 0.2s,
    color 0.2s;
}
html body .sarita-bio-details > summary.bio-toggle:hover {
  background: transparent;
  border-color: #00c872;
  color: #111;
}
@media (max-width: 700px) {
  html body .sarita-bio-details > summary.bio-toggle {
    font-size: 18px !important;
    padding-bottom: 8px;
  }
}
.bio-social-links a:focus-visible {
  outline: 2px solid #00c872;
  outline-offset: 4px;
}
@media (prefers-reduced-motion: reduce) {
  html body .bio-social-links a,
  html body .sarita-bio-details > summary.bio-toggle {
    transition: none;
  }
}
/* Shared footer: clear contact invitation, balanced navigation and readable mobile groups. */
html body footer#footer.site-footer {
  display: block !important;
  background: #102f29 !important;
  color: #f7faf7 !important;
  padding: 72px var(--site-gutter, 6vw) 28px !important;
  font-family: var(--font-manrope), Arial, sans-serif;
  letter-spacing: 0;
  text-transform: none;
}
html body footer#footer.site-footer * {
  box-sizing: border-box;
}
html body footer#footer.site-footer :is(h2, p, a, span) {
  color: #f7faf7 !important;
  text-transform: none;
}
html body footer#footer.site-footer .ff-wrap {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
}
html body footer#footer.site-footer .ff-top {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 64px;
  align-items: end;
  padding-bottom: 56px;
  border-bottom: 1px solid #ffffff24;
}
html body footer#footer.site-footer .ff-eyebrow {
  display: block;
  color: #6de4ac !important;
  font:
    500 11px/1.4 var(--font-manrope),
    sans-serif !important;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  margin-bottom: 22px;
}
html body footer#footer.site-footer .ff-top h2 {
  font:
    500 clamp(36px, 4.3vw, 64px)/1.1 var(--font-manrope),
    sans-serif !important;
  letter-spacing: -0.045em !important;
  margin: 0 !important;
  max-width: 18ch;
}
/* The question mark's dot is green like the headlines' full stops. A hard
   colour stop in the gap between hook and dot (66.5% down the glyph's box) is
   clipped to the text; Manrope's vertical metrics are the same on every
   platform, so the gap stays put at any size. */
html body footer#footer.site-footer .ff-top h2 .headline-question {
  background: linear-gradient(#f7faf7 66.5%, #00c872 66.5%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
}
@media (forced-colors: active) {
  html body footer#footer.site-footer .ff-top h2 .headline-question {
    background: none;
    color: CanvasText !important;
  }
}
html body footer#footer.site-footer .ff-action p {
  font:
    400 16px/1.65 var(--font-manrope),
    sans-serif !important;
  color: #c4d4cd !important;
  max-width: 38ch;
  margin: 0 0 26px !important;
}
html body footer#footer.site-footer a {
  text-decoration: none !important;
}
html body footer#footer.site-footer .ff-cta {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 38px;
  min-height: 52px;
  padding: 14px 22px !important;
  border: 1px solid #58dea0 !important;
  border-radius: 3px;
  background: #58dea0 !important;
  color: #102f29 !important;
  font:
    600 14px/1.4 var(--font-manrope),
    sans-serif !important;
  transition:
    background 0.2s,
    border-color 0.2s;
}
html body footer#footer.site-footer .ff-cta:hover {
  background: #8aebbb !important;
  border-color: #8aebbb !important;
}
html body footer#footer.site-footer .ff-middle {
  display: grid;
  grid-template-columns: minmax(180px, 0.8fr) minmax(0, 2fr);
  gap: 80px;
  padding: 48px 0 44px;
}
html body footer#footer.site-footer .ff-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 20px;
}
html body footer#footer.site-footer .ff-logo {
  display: block;
  width: 72px;
  height: 94px;
  overflow: visible;
}
html body footer#footer.site-footer .ff-logo img {
  position: static !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  object-fit: contain !important;
  filter: none !important;
}
html body footer#footer.site-footer .ff-brand-note {
  font:
    400 13px/1.7 var(--font-manrope),
    sans-serif !important;
  color: #a9c2b7 !important;
  margin: 0 !important;
}
html body footer#footer.site-footer .ff-social {
  display: flex;
  gap: 10px;
  margin: 0;
}
html body footer#footer.site-footer .ff-social-item {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 1px solid #ffffff30;
  border-radius: 50%;
  transition:
    background 0.2s,
    border-color 0.2s;
}
html body footer#footer.site-footer .ff-social-item img {
  width: 18px !important;
  height: 18px !important;
  max-width: 18px !important;
  object-fit: contain !important;
  filter: none !important;
}
html body footer#footer.site-footer .ff-social-item:hover {
  background: #ffffff12;
  border-color: #6de4ac;
}
html body footer#footer.site-footer .ff-navs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 38px;
}
html body footer#footer.site-footer nav {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 11px;
  padding: 0;
  margin: 0;
  border: 0;
  background: none;
}
html body footer#footer.site-footer nav a {
  font:
    400 14px/1.5 var(--font-manrope),
    sans-serif !important;
  color: #c4d4cd !important;
  white-space: normal;
  overflow-wrap: break-word;
}
html body footer#footer.site-footer nav .ff-nav-title {
  font-weight: 600 !important;
  color: #fff !important;
  margin-bottom: 10px;
}
html body footer#footer.site-footer nav a:hover {
  color: #6de4ac !important;
}
html body footer#footer.site-footer .ff-bottom {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: center;
  border-top: 1px solid #ffffff24;
  padding-top: 24px;
}
html body footer#footer.site-footer .ff-bottom :is(span, a) {
  font:
    400 11px/1.6 var(--font-manrope),
    sans-serif !important;
  color: #a9c2b7 !important;
  letter-spacing: 0 !important;
}
html body footer#footer.site-footer .ff-legal {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}
/* Ends on the right gutter, except where the fixed chat button (76px from
   the right edge) would cover it. */
html body footer#footer.site-footer .ff-back {
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-right: max(0px, calc(88px - var(--site-gutter, 6vw)));
}
html body footer#footer.site-footer .ff-back span {
  font-size: 18px !important;
  color: #6de4ac !important;
}
html body footer#footer.site-footer .ff-bottom .ff-back:hover {
  color: #6de4ac !important;
}
html body footer#footer.site-footer a:focus-visible {
  outline: 2px solid #6de4ac;
  outline-offset: 5px;
}
@media (max-width: 900px) {
  /* Stacked: side by side, the wrapped paragraph started above the label. */
  html body footer#footer.site-footer .ff-top {
    gap: 28px;
    grid-template-columns: 1fr;
  }
  html body footer#footer.site-footer .ff-middle {
    grid-template-columns: 1fr;
    gap: 36px;
  }
  html body footer#footer.site-footer .ff-brand {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 24px;
  }
  html body footer#footer.site-footer .ff-navs {
    gap: 28px;
  }
}
@media (max-width: 600px) {
  html body footer#footer.site-footer {
    padding: 48px var(--site-gutter, 20px) 24px !important;
  }
  html body footer#footer.site-footer .ff-top {
    grid-template-columns: 1fr;
    gap: 24px;
    padding-bottom: 36px;
  }
  html body footer#footer.site-footer .ff-eyebrow {
    margin-bottom: 16px;
  }
  html body footer#footer.site-footer .ff-top h2 {
    font-size: 40px !important;
  }
  html body footer#footer.site-footer .ff-action p {
    font-size: 14px !important;
    max-width: 36ch;
    margin-bottom: 22px !important;
  }
  html body footer#footer.site-footer .ff-cta {
    min-height: 48px;
  }
  html body footer#footer.site-footer .ff-middle {
    padding: 32px 0;
    gap: 36px;
  }
  html body footer#footer.site-footer .ff-brand {
    grid-template-columns: auto 1fr;
    gap: 16px 24px;
  }
  html body footer#footer.site-footer .ff-logo {
    grid-row: 1/3;
    width: 64px;
    height: 84px;
  }
  html body footer#footer.site-footer .ff-brand-note {
    align-self: end;
    font-size: 12px !important;
  }
  html body footer#footer.site-footer .ff-social {
    align-self: start;
  }
  html body footer#footer.site-footer .ff-social-item {
    width: 36px;
    height: 36px;
  }
  html body footer#footer.site-footer .ff-navs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 30px 24px;
  }
  /* Same two columns as the link groups below it. */
  html body footer#footer.site-footer nav:first-child {
    grid-column: 1/-1;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 24px;
  }
  html body footer#footer.site-footer nav:first-child .ff-nav-title {
    grid-column: 1/-1;
    margin-bottom: 4px;
  }
  /* Taller tap targets, same rhythm: the padding replaces the gap. */
  html body footer#footer.site-footer nav {
    gap: 0;
  }
  html body footer#footer.site-footer nav a {
    font-size: 13px !important;
    line-height: 1.55 !important;
    padding-block: 6px;
  }
  html body footer#footer.site-footer .ff-bottom {
    grid-template-columns: 1fr auto;
    gap: 18px;
    padding-top: 20px;
  }
  html body footer#footer.site-footer .ff-legal {
    grid-row: 2;
    grid-column: 1/-1;
    gap: 22px;
  }
  html body footer#footer.site-footer .ff-back {
    grid-column: 2;
    grid-row: 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  html body footer#footer.site-footer a {
    transition: none;
  }
}

/* Share column edges between the contact invitation and navigation. */
@media (min-width: 901px) {
  html body footer#footer.site-footer :is(.ff-top, .ff-middle) {
    grid-template-columns: minmax(180px, 0.8fr) minmax(140px, 1fr) minmax(180px, 1fr) 180px;
    column-gap: 38px;
  }
  html body footer#footer.site-footer .ff-intro {
    grid-column: 1/3;
  }
  html body footer#footer.site-footer .ff-action {
    grid-column: 3/5;
  }
  html body footer#footer.site-footer .ff-brand {
    grid-column: 1;
  }
  html body footer#footer.site-footer .ff-navs {
    grid-column: 2/5;
    grid-template-columns: subgrid;
  }
}
html body.capabilities-page main .cap-problems-section {
  background: #e8e8e8 !important;
  color: #17231c !important;
}
html body.capabilities-page main .cap-problems-section h2,
html body.capabilities-page main .cap-problems-section .cap-problem h3 {
  color: #17231c !important;
}
html body.capabilities-page main .cap-problems-section .cap-intro,
html body.capabilities-page main .cap-problems-section .cap-problem p {
  color: #526057 !important;
}
html body.capabilities-page main .cap-problems-section .cap-problems {
  gap: 24px !important;
  border: 0 !important;
  padding: 4px 0 12px;
  margin-top: 40px;
}
html body.capabilities-page main .cap-problems-section .cap-problem,
html body.capabilities-page main .cap-problems-section .cap-problem:first-child {
  flex-basis: calc((100% - 48px) / 3);
  background: #fff !important;
  color: #17231c !important;
  padding: 32px;
  min-height: 340px;
  border: 0 !important;
  box-shadow: inset 0 -2px transparent;
}
html body.capabilities-page main .cap-problems-section .cap-problem:hover {
  background: #fff !important;
  box-shadow: inset 0 -2px #00c872;
}
html body.capabilities-page main .cap-problems-section .cap-challenge-icon {
  color: #008c50 !important;
  width: 48px;
  height: 48px;
  margin-bottom: 32px;
}
html body.capabilities-page main .cap-problems-section .cap-problem h3 {
  margin-bottom: 24px;
  min-height: 2.5em;
}
html body.capabilities-page main .cap-assembly .cap-stages {
  gap: 24px !important;
  border: 0 !important;
  align-items: stretch;
}
html body.capabilities-page main .cap-assembly .cap-stages article {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  background: #fff !important;
  padding: 32px !important;
  border: 0 !important;
  min-width: 0;
}
html body.capabilities-page main .cap-assembly .cap-stages .assembly-icon {
  color: #008c50 !important;
  width: 48px;
  height: 48px;
  margin-bottom: 32px;
}
html body.capabilities-page main .cap-assembly .cap-stages .assembly-icon * {
  stroke: currentColor;
}
html body.capabilities-page main .cap-assembly .cap-stages h3 {
  margin: 0 0 24px !important;
  min-height: 2.5em;
}
html body.capabilities-page main .cap-assembly .cap-stages p {
  color: #526057 !important;
}
@media (max-width: 1000px) {
  html body.capabilities-page main .cap-problems-section .cap-problem,
  html body.capabilities-page main .cap-problems-section .cap-problem:first-child {
    flex-basis: calc((100% - 24px) / 2);
    padding: 28px;
  }
}
@media (max-width: 640px) {
  html body.capabilities-page main .cap-problems-section .cap-problem,
  html body.capabilities-page main .cap-problems-section .cap-problem:first-child {
    flex-basis: 88%;
    min-height: 280px;
    padding: 24px;
  }
  html body.capabilities-page main .cap-assembly .cap-stages {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html body.capabilities-page main .cap-assembly .cap-stages article {
    padding: 24px !important;
  }
  html body.capabilities-page main .cap-assembly .cap-stages h3 {
    min-height: 0;
  }
}

/* Match process icons to the green challenge icons above. */
html
  body.capabilities-page
  main
  .cap-assembly
  .cap-stages
  .assembly-icon:not(#palette-exempt):not(#assembly-icon-exempt) {
  color: #008c50 !important;
}
html body.capabilities-page main .cap-assembly .cap-stages .assembly-icon :is(g, path, rect) {
  stroke: #008c50 !important;
}
:root {
  --site-gutter: clamp(24px, 6.94vw, 100px);
}
html body {
  --pad: var(--site-gutter);
  margin: 0;
}
html body *,
html body *::before,
html body *::after {
  box-sizing: border-box;
}
html body > header {
  position: relative;
  z-index: 40;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 24px;
  padding: 16px var(--site-gutter) !important;
  min-height: 92px !important;
}
html body > header :is(.group-logo, .fyi-nav-logo) {
  display: flex !important;
  align-items: center;
  justify-content: center;
  width: 46px !important;
  height: 60px !important;
  flex: none;
  margin: 0 !important;
  overflow: visible !important;
}
html body > header :is(.group-logo, .fyi-nav-logo) > img {
  position: static !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
}
html body > header .project-navigation {
  margin-left: auto;
  min-width: 0;
  flex-shrink: 0;
}
html body > header .site-primary-menu {
  align-items: center;
  gap: 24px;
}
html body > header .site-primary-menu > a.nav-contact-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 !important;
}
html body main :is(.strategy-container, .cap-container) {
  width: calc(100% - 2 * var(--site-gutter)) !important;
  max-width: none;
  margin-inline: auto;
}
html
  body
  main
  :is(
    .group-story-grid,
    .group-leader-grid,
    .people-grid,
    .career-grid,
    .contact-project-grid,
    .contact-fields,
    .contact-office-grid,
    .home-practice-grid,
    .home-insights-grid,
    .strategy-related,
    .cap-practices,
    .cap-stages,
    .practice-contact-card
  )
  > * {
  min-width: 0;
}
html body main :is(p, h1, h2, h3, address, dd) {
  overflow-wrap: break-word;
}
html body main :is(video, iframe) {
  max-width: 100%;
}
html body main :is(.group-actions, .contact-form-foot, .case-switch) {
  flex-wrap: wrap;
  align-items: flex-start;
}
html
  body
  main
  :is(
    .group-button,
    .strategy-button,
    .cap-link,
    .report-request-button,
    .practice-contact-button
  ) {
  align-self: flex-start;
  justify-self: start;
}
html body main .strategy-related article {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
}
html body main .strategy-related article > p {
  flex: 1;
}
html body main .cap-practices article {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
}
html body main .cap-practices article > figure {
  width: 100%;
}
html body main .cap-practices article :is(img, video) {
  width: 100%;
  max-width: 100%;
}
@media (max-width: 1100px) {
  :root {
    --site-gutter: 32px;
  }
  html body > header .project-menu-button {
    display: flex !important;
    width: 44px;
    height: 44px;
  }
  /* The menu panel hangs from the header, under the menu button, at every
     compact width. */
  html body > header .project-navigation {
    position: static;
  }
  html body > header .site-primary-menu {
    display: none !important;
    position: absolute;
    left: auto;
    right: var(--site-gutter);
    top: calc(100% + 12px);
    width: min(360px, calc(100vw - 2 * var(--site-gutter)));
    max-height: calc(100dvh - 120px);
    overflow-y: auto;
    padding: 20px 24px;
    background: #fff;
    border: 1px solid #d4d8d3;
    z-index: 80;
  }
  html body > header .site-primary-menu.is-open {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
  }
  html body > header .site-primary-menu > a,
  html body > header .case-study-toggle {
    width: 100%;
    min-height: 44px;
    justify-content: space-between;
    white-space: normal;
  }
  html body > header .case-study-menu {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    margin: 0 0 12px;
    padding: 4px 0 4px 12px;
    border: 0;
    border-left: 2px solid #00c872;
    box-shadow: none;
  }
  html body > header .case-study-menu a {
    white-space: normal;
    min-height: 44px;
  }
  html body > header .site-primary-menu > a.nav-contact-button {
    justify-content: center;
    margin-top: 8px !important;
  }
  /* Menu rows span the panel and have their own dividers, so the current
     page's green line sits under its label rather than across the row. */
  html body > header .site-primary-menu > a[aria-current='page'],
  html body > header .site-primary-menu > details > .nav-current {
    box-shadow: none;
    text-decoration: underline 2px #05dc7f;
    text-underline-offset: 8px;
  }
  html body > header .case-study-menu a[aria-current='page'] {
    border-left: 0;
  }
}
@media (max-width: 1000px) {
  html body main .cap-practices {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 40px 24px;
  }
  html body main .cap-practices article,
  html body main .cap-practices article:nth-child(-n + 2) {
    grid-column: auto !important;
  }
  html body main .practice-contact-section .practice-contact-card {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 28px;
    padding: 32px;
  }
  html body main .practice-contact-section .practice-contact-action {
    border-left: 0;
    border-top: 1px solid #dce3de;
    padding: 24px 0 0;
  }
  html body main .strategy-related {
    gap: 24px;
  }
}
@media (max-width: 760px) {
  :root {
    --site-gutter: 24px;
  }
  html
    body
    main
    :is(
      .strategy-related,
      .strategy-challenge,
      .group-story-grid,
      .group-leader-grid,
      .group-hero-intro,
      .contact-intro,
      .contact-project-grid,
      .home-practice-grid,
      .home-insights-grid,
      .indianext-event-grid,
      .indianext-programme-grid
    ) {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 32px !important;
  }
  html body main .strategy-related article > p {
    flex: none;
  }
  html body main .strategy-related article {
    gap: 0;
  }
  html body main .group-hero-copy {
    padding-top: 0;
  }
  html body main .home-section-head {
    align-items: flex-start;
    flex-direction: column;
    gap: 24px;
  }
  /* Not .career-grid: Join Us scrolls its roles sideways (careers-scroll.css),
     and an explicit column there squeezes the first card to nothing. */
  html body main .contact-office-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html body main .strategy-service-gallery {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html body main .contact-route {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 16px;
  }
  html body main .contact-route > * {
    grid-column: 1 !important;
  }
  html body main .cap-assembly .cap-stages {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 24px;
  }
  html body main .home-practice-panel :is(figure, div) {
    max-width: 100%;
  }
  html body main .contact-fields {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html body main .contact-practices {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html body main .contact-field-wide {
    grid-column: 1 !important;
  }
}
@media (max-width: 640px) {
  :root {
    --site-gutter: 20px;
  }
  html body > header {
    min-height: 76px !important;
    padding-block: 12px !important;
    gap: 16px;
  }
  html body > header :is(.group-logo, .fyi-nav-logo) {
    width: 38px !important;
    height: 50px !important;
  }
  html body > header .site-primary-menu {
    width: min(360px, calc(100vw - 40px));
    max-height: calc(100dvh - 100px);
  }
  html body main h1:not(#type-exempt):not(#headline-exempt):not(#responsive-heading-exempt) {
    font-size: clamp(26px, 7vw, 34px) !important;
    line-height: 1.25 !important;
  }
  /* Same size as h1, as on wider screens. */
  html body main h2:not(#type-exempt):not(#headline-exempt):not(#responsive-heading-exempt) {
    font-size: clamp(26px, 7vw, 34px) !important;
    line-height: 1.3 !important;
  }
  html body main .cap-practices {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 40px;
  }
  html body main .practice-contact-section .practice-contact-card {
    padding: 24px 20px;
    gap: 24px;
  }
  /* Panel headlines follow the h2 size above. */
  html body main .practice-contact-section #practice-contact-title:not(#type-exempt),
  html body main .home-practice-panel #practice-title:not(#type-exempt) {
    font-size: clamp(26px, 7vw, 34px) !important;
    line-height: 1.3 !important;
  }
  html body main .practice-contact-eyebrow {
    flex-wrap: wrap;
  }
  html
    body
    main
    .practice-contact-button:not(#palette-exempt):not(#button-exempt):not(#request-cta-exempt) {
    white-space: normal !important;
    min-height: 44px !important;
  }
  html
    body
    main
    :is(.group-button, .strategy-button, .report-request-button):not(#palette-exempt):not(
      #button-exempt
    ):not(#responsive-cta-exempt) {
    min-height: 44px !important;
    max-width: 100% !important;
    white-space: normal !important;
    margin-inline: 0 !important;
  }
  html
    body
    main
    :is(input, textarea, select):not(#type-exempt):not(#form-type-exempt):not(
      #responsive-form-exempt
    ) {
    font-size: 16px !important;
    max-width: 100%;
    min-width: 0;
  }
  html body main :is(.contact-direct a, .contact-direct dd, address) {
    overflow-wrap: anywhere;
  }
  html body main .home-practice-panel ul {
    grid-template-columns: minmax(0, 1fr);
  }
  html body main .people-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 360px) {
  html body main .people-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}
html body.capabilities-page main .cap-problems-section {
  width: 100% !important;
  max-width: none !important;
  padding-inline: var(--site-gutter) !important;
}
html
  body.capabilities-page
  main
  .cap-assembly:not(#palette-exempt):not(#assembly-background-exempt):not(
    #assembly-layout-exempt
  ):not(#assembly-surface-exempt) {
  background: #e8e8e8 !important;
}
html body:not(#site-gutter-exempt) {
  --pad: var(--site-gutter);
}
html body main :is(.group-actions, .contact-form-foot) {
  justify-content: flex-start !important;
}
html
  body
  main
  :is(.practice-contact-button, .group-button, .strategy-button):not(#palette-exempt):not(
    #button-exempt
  ):not(#cta-alignment-exempt) {
  margin-left: 0 !important;
}

/* Footer brand and social links share a clean left edge. */

/* A visible six-card decision grid replaces oversized horizontal cards. */
html body.capabilities-page main #business-challenges.cap-problems-section {
  background: #f2f5f1 !important;
  padding-block: 84px !important;
  color: #142f26 !important;
}
html body.capabilities-page main #business-challenges h2 {
  color: #142f26 !important;
  max-width: 22ch;
}
html body.capabilities-page main #business-challenges .cap-intro {
  color: #5c6b63 !important;
  max-width: 65ch;
  margin-top: 22px;
  margin-bottom: 40px;
}
html body #business-challenges #cap-problem-track {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 22px !important;
  overflow: visible !important;
  scroll-snap-type: none;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
}
html body #business-challenges #cap-problem-track .cap-problem {
  display: flex !important;
  flex-direction: column !important;
  min-width: 0;
  min-height: 300px !important;
  margin: 0 !important;
  padding: 28px !important;
  background: #fff !important;
  border: 1px solid #dce4dd !important;
  border-radius: 6px;
  box-shadow: 0 3px 16px #183a2b04;
  color: #142f26 !important;
  text-decoration: none;
  transition:
    background 0.2s,
    border-color 0.2s,
    transform 0.2s;
}
html body #business-challenges #cap-problem-track .cap-problem-top {
  display: flex;
  flex: 0 0 auto;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 24px;
}
html body #business-challenges #cap-problem-track .cap-challenge-icon {
  display: block;
  width: 44px;
  height: 44px;
  color: #008e5b !important;
  stroke-width: 1.3;
  margin: 0;
  padding: 8px;
  box-sizing: content-box;
  background: #edf7ef;
  border-radius: 4px;
}
html body #business-challenges #cap-problem-track .cap-problem h3 {
  color: #142f26 !important;
  margin: 0 0 15px !important;
  min-height: 0;
  max-width: 24ch;
}
html body #business-challenges #cap-problem-track .cap-problem > div:not(.cap-problem-top) {
  display: block;
  flex: 1;
}
html body #business-challenges #cap-problem-track .cap-problem p {
  color: #627168 !important;
  margin: 0 !important;
  max-width: 38ch;
}
html body #business-challenges #cap-problem-track .cap-problem-action {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  margin: 26px 0 0;
  padding-top: 20px;
  border-top: 1px solid #e4eae4;
  color: #166443 !important;
  font:
    500 12px/1.4 var(--font-manrope),
    sans-serif !important;
}
html body #business-challenges #cap-problem-track .cap-problem:hover {
  background: #143a2e !important;
  border-color: #143a2e !important;
  transform: translateY(-3px);
}
html
  body
  #business-challenges
  #cap-problem-track
  .cap-problem:hover
  :is(h3, p, .cap-problem-action) {
  color: #f4fbf5 !important;
}
html body #business-challenges #cap-problem-track .cap-problem:hover .cap-problem-action {
  border-top-color: #ffffff26;
}
html body #business-challenges #cap-problem-track .cap-problem:focus-visible {
  outline: 3px solid #00b96f;
  outline-offset: 4px;
}
@media (max-width: 1000px) {
  html body #business-challenges #cap-problem-track {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 600px) {
  html body.capabilities-page main #business-challenges.cap-problems-section {
    padding-block: 52px !important;
  }
  html body #business-challenges #cap-problem-track {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 16px !important;
  }
  html body #business-challenges #cap-problem-track .cap-problem {
    min-height: 0 !important;
    padding: 24px !important;
  }
  html body #business-challenges #cap-problem-track .cap-problem-top {
    margin-bottom: 22px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html body #business-challenges #cap-problem-track .cap-problem {
    transition: none;
  }
  html body #business-challenges #cap-problem-track .cap-problem:hover {
    transform: none;
  }
}
/* Keep the established outlined action across every page and contrast theme. */
@layer shared-cta {
  html body .site-cta {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-direction: row !important;
    gap: 10px !important;
    align-self: flex-start !important;
    width: fit-content !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 40px !important;
    box-sizing: border-box !important;
    padding: 10px 20px !important;
    border: 1px solid var(--cta-ink, #111) !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: var(--cta-ink, #111) !important;
    font:
      500 13px/1.4 var(--font-manrope),
      Arial,
      sans-serif !important;
    letter-spacing: 0.5px !important;
    text-align: center !important;
    text-decoration: none !important;
    text-transform: capitalize !important;
    white-space: normal !important;
    transform: none !important;
    transition:
      background 0.2s,
      color 0.2s,
      border-color 0.2s !important;
  }
  html
    body
    :is(
      .site-footer,
      .home-hero,
      .home-hero-film,
      .home-impact,
      .group-philosophy,
      .practice-outcome,
      .group-ai-banner,
      .group-bridge-card,
      .deoria-page #future
    ) {
    --cta-ink: #fff;
  }
  html body .cap-problem:hover {
    --cta-ink: #fff;
  }
  /* Header: centred on the nav links' row (a column in the compact menu), and
     filled on the page it leads to, like the other items' current state. */
  @media (min-width: 1101px) {
    html body > header .site-cta {
      align-self: center !important;
    }
  }
  html body .site-cta:hover,
  html body > header .site-cta[aria-current='page'],
  html body .cap-problem:hover .site-cta {
    background: #00c872 !important;
    border-color: #00c872 !important;
    color: #000 !important;
  }
  html body .site-cta:focus-visible {
    outline: 2px solid #00c872 !important;
    outline-offset: 4px !important;
  }
  @media (prefers-reduced-motion: reduce) {
    html body .site-cta {
      transition: none !important;
    }
  }
}
/* Hide decorative sequence labels and image counts throughout the site. */
html
  body
  :is(
    .uiux-gallery-position,
    .experience-slider-position,
    .platforms-slider-position,
    .studio-slider-position,
    .case-gallery-status,
    .cap-problem-index,
    .cap-problem-number
  ) {
  display: none !important;
}
html
  body
  main
  :is(.uiux-gallery-controls, .experience-slider-controls, .platforms-slider-controls) {
  display: flex !important;
  justify-content: flex-end !important;
  position: relative;
  min-height: 36px;
}
html
  body
  main
  :is(.uiux-gallery-controls, .experience-slider-controls, .platforms-slider-controls)[hidden] {
  display: none !important;
}
html
  body
  main
  :is(
    .uiux-gallery-track,
    .experience-slider-track,
    .platforms-slider-track,
    .studio-slider-track
  ) {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}
/* A consistent gap separates body copy from the established outlined actions. */
@layer shared-cta {
  html body main p + .site-cta,
  html body main .cap-practices .cap-link {
    margin-block-start: 24px !important;
  }
}

/* Shared arrow controls across all service and project galleries. */
html
  body
  :is(
    button[data-gallery-step],
    button[data-testimonial-step],
    .uiux-gallery-prev,
    .uiux-gallery-next,
    .experience-slider-prev,
    .experience-slider-next,
    .platforms-slider-prev,
    .platforms-slider-next,
    .studio-slider-prev,
    .studio-slider-next
  ):not(#arrow-exempt) {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  width: 40px !important;
  min-width: 40px !important;
  height: 40px !important;
  min-height: 40px !important;
  padding: 0 !important;
  border: 1px solid #b8b8b8 !important;
  border-radius: 50% !important;
  background: transparent !important;
  color: #111 !important;
  box-shadow: none !important;
}
html
  body
  :is(
    button[data-gallery-step],
    button[data-testimonial-step],
    .uiux-gallery-prev,
    .uiux-gallery-next,
    .experience-slider-prev,
    .experience-slider-next,
    .platforms-slider-prev,
    .platforms-slider-next,
    .studio-slider-prev,
    .studio-slider-next
  )
  svg {
  display: block;
  width: 22px;
  height: 22px;
}
html
  body
  :is(
    button[data-gallery-step],
    button[data-testimonial-step],
    .uiux-gallery-prev,
    .uiux-gallery-next,
    .experience-slider-prev,
    .experience-slider-next,
    .platforms-slider-prev,
    .platforms-slider-next,
    .studio-slider-prev,
    .studio-slider-next
  ):disabled {
  opacity: 0.3 !important;
  cursor: default;
}
html
  body
  :is(
    button[data-gallery-step],
    button[data-testimonial-step],
    .uiux-gallery-prev,
    .uiux-gallery-next,
    .experience-slider-prev,
    .experience-slider-next,
    .platforms-slider-prev,
    .platforms-slider-next,
    .studio-slider-prev,
    .studio-slider-next
  ):hover:not(:disabled):not(#arrow-exempt) {
  background: #f0f0f0 !important;
  border-color: #909090 !important;
  color: #111 !important;
}
html body .founder-social-links {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  margin: 24px 0 0 !important;
  padding: 0 !important;
}
html body .founder-social-links .founder-social-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  margin: 0 !important;
  padding: 10px !important;
  border: 1px solid #c8d0ca !important;
  border-radius: 0 !important;
  color: #102f29 !important;
}
html body .founder-social-links .founder-social-icon svg {
  display: block !important;
  width: 22px !important;
  height: 22px !important;
  margin: 0 !important;
  stroke-width: 1.6;
}
html body .founder-social-links .founder-social-icon:hover {
  background: #eaf5ed !important;
  border-color: #00c872 !important;
}
html body .case-more-card {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 260px;
  background: #f3f5f1;
  text-align: center;
}
html body .case-more-card > div {
  padding: 36px;
}
html body .case-more-card h3 {
  margin: 0 0 24px;
  font-size: 32px;
  line-height: 1.25;
}
/* Explore each practice: the description takes up any spare height, so the
   actions in a row share one baseline whatever the length of the copy. */
html body main .cap-practices article > p:not(.cap-proposition) {
  flex: 1;
}

/* How we work together: the section already carries the shared section
   spacing, so the inner container adds none of its own. */
html body main .cap-assembly > .cap-section {
  padding-block: 0;
}

/* The assembled practices read as one list in the card's body type: the lead
   practices first, then the rest of the group. Names never break, lines are
   balanced, and the separator in front of the first name on each line is
   clipped away, so no line starts or ends with a dot. */
html body.capabilities-page main .cap-assembly .assembly-practices {
  display: block;
  margin: 0 0 0 -1.2em;
  clip-path: inset(0 0 0 1.2em);
  text-wrap: balance;
}
html body.capabilities-page main .cap-assembly .assembly-practices span {
  padding: 0;
  border: 0;
  font: inherit;
  letter-spacing: inherit;
  white-space: nowrap;
}
html body.capabilities-page main .cap-assembly .assembly-practices span::before {
  content: '·' / '';
  display: inline-block;
  width: 1.2em;
  text-align: center;
}
html body.capabilities-page main .cap-assembly .assembly-lead span {
  font-weight: 500;
}

/* See the system at work: beside the heading, the action centres on it.
   .site-cta pins align-self with a layered !important, which only another
   rule in the same layer can override. */
@media (min-width: 601px) {
  html body main .cap-bridge > .cap-link {
    margin-top: 0;
  }
  @layer shared-cta {
    html body main .cap-bridge > .cap-link {
      align-self: center !important;
    }
  }
}
/*
 * Links to parked pages render without an href (see src/data/navigation.ts).
 * They keep their place in the layout, but drop the pointer and hover states
 * so they don't look clickable.
 */
a:not([href]) {
  cursor: default;
  pointer-events: none;
}

/* Preserve reference navigation and actions, including focusable placeholders. */
html body a[data-unpublished-link][aria-disabled='true'] {
  pointer-events: auto;
  cursor: default;
}

/*
 * The hidden attribute must win over .site-cta's layered important display.
 * Layered !important beats unlayered, so the override lives here.
 */
@layer shared-cta {
  html body .site-cta[hidden] {
    display: none !important;
  }
}
/*
 * Utilities shared by every page. Imported last so nothing overrides them.
 */

/* Hidden on screen but announced by screen readers and read by search engines. */
.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
/*
 * Design consistency: one spacing rhythm and one label style on every page.
 *
 * Imported last by every page's entry file, so these values win over the
 * older override layers. The rhythm, desktop / phone (700px and below):
 *
 *   Section padding                  72px / 48px   (global/site-section-spacing.css)
 *   Section heading at the top       0 margin above the first heading
 *   Heading → its intro paragraph    28px / 28px   --gap-head-intro
 *   Heading → the section's content  40px / 28px   --gap-head-content
 *   Name → role in a byline          12px          (pages/fyi-group)
 *
 * Type is set in global/site-type-scale.css and global/manrope-typography.css:
 * Manrope throughout, h1 and h2 35px, h3 18px, body 15px/24px, headings
 * weight 500, body weight 300, 0.5px tracking on running text.
 */
:root {
  --gap-head-intro: 28px;
  --gap-head-content: 40px;
}
@media (max-width: 700px) {
  :root {
    --gap-head-content: 28px;
  }
}

/* Heading → intro paragraph. */
html body.home-page .home-practice-summary,
html body.capabilities-page main #business-challenges .cap-intro,
html body main .careers-general h2 + p {
  margin-top: var(--gap-head-intro) !important;
}
html body.group-page .group-story-grid h2 {
  margin-bottom: var(--gap-head-intro) !important;
}
@media (max-width: 900px) {
  /* Home "Case Studies." heading above its intro once the two stack. */
  html body.home-page .case-editorial-head {
    row-gap: var(--gap-head-intro);
  }
}

/* Heading → the section's content. */
html body main .cap-practices,
html body main .testimonials-section .testimonial-grid,
html body.home-page main .home-impact .home-metrics {
  margin-top: var(--gap-head-content) !important;
}
html body main .practice-contact-section .practice-contact-heading:not(#consistency-exempt) {
  margin-bottom: var(--gap-head-content) !important;
}

/* Paragraph → paragraph in running text: 28px, as in every case study. */
html body main :is(.exact-challenge, .group-story, .contact-hero) p + p {
  margin-top: 28px !important;
}

/* Small uppercase labels (eyebrows): one size, weight, tracking and colour.
   Dark sections keep their own light label colour. */
html
  body
  main
  :is(
    .eyebrow,
    .group-tag,
    .assembly-eyebrow,
    .practice-contact-eyebrow,
    .practice-contact-practice,
    .practice-scope-label,
    .contact-direct dt
  ):not(:is(.home-impact, .group-philosophy, .cap-problems-section, .practice-outcome) *) {
  color: #000 !important;
  letter-spacing: 0.13em !important;
}

/* Stat labels under the case-study figures, and the film button label, use the
   site's small-text style (13px with the 0.5px running-text tracking). */
html body main :is(#utec-metrics, .impact-numbers) > div > span {
  color: #000 !important;
  font-size: 13px !important;
  letter-spacing: 0.5px !important;
}
html body .film-control .film-control-label {
  font-size: 13px !important;
  letter-spacing: 0.5px !important;
}
