/*
Theme Name:        CapFive
Theme URI:         https://capfive.example
Description:       Custom hybrid theme for the CapFive global M&A network. PHP templates reproduce the designed DOM; content is custom post types and pages.
Version:           0.1.0
Requires at least: 6.5
Requires PHP:      8.1
Text Domain:       capfive
*/

:root {
  /* phone carousels run edge to edge; their first card lines up with the copy */
  --rail-inset: calc((100vw - var(--container)) / 2 + clamp(22px, 4vw, 80px));
  /* the page frame's side margin outside --container on small screens */
  --side: 28px;
  --navy: #002848;
  --navy-deep: #001a30;
  --azure: #006eab;
  --accent-blue: #1fa3d1;
  --green: #95c11f;
  --green-soft: rgba(149, 193, 31, 0.12);
  --ghost: #f4f6fa;
  --wash: #eaf1f6;
  --paper: #ffffff;
  --ink: #1a212b;
  --muted: #5b6470;
  --faint: #8b939d;
  --line: rgba(0, 40, 72, 0.08);
  --line-strong: rgba(0, 40, 72, 0.14);
  --footer: #e8eaee;

  --radius-sm: 8px;
  --radius: 12px;
  --radius-md: 16px;
  --radius-lg: 20px;
  --radius-xl: 28px;

  --tracking-display: -0.025em;
  --tracking-lede: -0.015em;
  --tracking-body: 0.005em;
  --tracking-label: 0.12em;

  --weight-light: 300;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;

  --type-label: 0.72rem;
  --type-label-lg: 0.8rem;
  --type-lede: clamp(1.215rem, 1.98vw, 1.71rem);
  --type-body-lg: 1.0125rem;

  --shadow-border:
    0 0 0 1px rgba(0, 0, 0, 0.06),
    0 1px 2px -1px rgba(0, 0, 0, 0.04),
    0 2px 4px rgba(0, 0, 0, 0.03);
  --shadow-border-hover:
    0 0 0 1px rgba(0, 0, 0, 0.08),
    0 4px 8px -2px rgba(0, 0, 0, 0.06),
    0 12px 28px -4px rgba(0, 0, 0, 0.08);
  --shadow-lift:
    0 0 0 1px rgba(0, 40, 72, 0.06),
    0 2px 4px -1px rgba(0, 40, 72, 0.04),
    0 8px 20px -4px rgba(0, 40, 72, 0.08),
    0 20px 44px -8px rgba(0, 40, 72, 0.06);

  --container: min(1180px, calc(100vw - 56px));
  --section-y: clamp(88px, 9vw, 128px);
  --gutter: max(28px, calc((100vw - 1180px) / 2));
  --header-logo-clearance: 90px;
  --header-logo-mobile-clearance: 72px;

  --duration-stagger: 40ms;
  --duration-micro: 80ms;
  --duration-quick: 150ms;
  --duration-fast: 250ms;
  --duration-medium: 350ms;
  --duration-slow: 400ms;
  --duration-very-slow: 500ms;
  --ease-smooth-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: ease-in-out;
  --ease-out: ease-out;
  --ease-linear: linear;
  --ease-bounce: cubic-bezier(0.34, 1.36, 0.64, 1);
  --ease-bounce-strong: cubic-bezier(0.34, 3.85, 0.64, 1);
  --distance-micro: 4px;
  --distance-small: 6px;
  --distance-base: 8px;
  --distance-medium: 12px;
  --distance-large: 30px;
  --scale-large: 0.96;
  --scale-medium: 0.97;
  --scale-small: 0.98;
  --scale-tiny: 0.99;
  --blur-small: 2px;
  --blur-medium: 3px;
  --blur-large: 8px;
  --digit-dur: 1200ms;
  --digit-distance: 8px;
  --digit-stagger: 150ms;
  --digit-blur: 2px;
  --digit-ease: var(--ease-in-out);
  --digit-dir-x: 0;
  --digit-dir-y: 1;
  --page-top: 200px;
  --focus: #fff855;
  --danger: #c90000;
  --measure: 68ch;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body {
  margin: 0;
  overflow-x: hidden;
  background: var(--ghost);
  color: var(--ink);
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 16.2px;
  font-weight: var(--weight-regular);
  line-height: 1.55;
  letter-spacing: var(--tracking-body);
  text-wrap: pretty;
}

img,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}h1, h5, p{

  margin-top: 0;

}


::selection {
  background: var(--green);
  color: var(--navy);
}

/* ---------- Scroll progress bar ---------- */
.scroll-progress {
  position: fixed;
  inset: 0 0 auto 0;
  height: 3px;
  z-index: 200;
  background: var(--green);
  transform: scaleX(0);
  transform-origin: 0 50%;
  will-change: transform;
}

/* ---------- Header ---------- */
/* logged-in editors get WordPress's fixed toolbar, which would cover the header
   (and the menu button); below 601px the toolbar scrolls away instead */
@media (min-width: 601px) {
  .admin-bar .site-header {
    top: var(--wp-admin--admin-bar--height, 32px);
  }
}

@media (min-width: 601px) and (max-width: 900px), (min-width: 601px) and (max-width: 960px) and (max-height: 1099px) {
  .admin-bar .site-header.dock-header.scrolled {
    top: var(--wp-admin--admin-bar--height, 32px);
  }
}

.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 28px;
  padding: var(--header-logo-clearance) clamp(28px, 5vw, 72px) 26px
    var(--header-logo-clearance);
  color: var(--navy);
  transition: background var(--duration-medium) var(--ease-smooth-out), backdrop-filter var(--duration-medium) var(--ease-smooth-out),
    padding var(--duration-medium) var(--ease-smooth-out), box-shadow var(--duration-medium) var(--ease-smooth-out),
    color var(--duration-medium) var(--ease-smooth-out);
}

.site-header.scrolled {
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  color: var(--navy);
  padding-top: 24px;
  padding-bottom: 16px;
  box-shadow: none;
}

.site-header.scrolled.on-dark .brand-lockup img {
  filter: brightness(0) invert(1);
}

.site-header.scrolled.on-dark .site-nav a,
.site-header.scrolled.on-dark .header-right a,
.site-header.scrolled.on-dark .header-search {
  color: #fff;
}

.site-header.scrolled.on-dark .site-nav a:hover,
.site-header.scrolled.on-dark .header-right a:hover,
.site-header.scrolled.on-dark .header-search:hover {
  color: #fff;
}

.site-header.scrolled.on-dark .site-nav::before,
.site-header.scrolled.on-dark .header-right::before {
  background: rgba(10, 22, 34, 0.42);
}

.site-header.scrolled.on-dark .menu-toggle span {
  background: #fff;
}

.site-nav,
.header-right {
  position: relative;
}

.site-nav::before,
.header-right::before {
  content: "";
  position: absolute;
  inset: -8px -15px;
  border-radius: 999px;
  background: rgba(244, 246, 250, 0.55);
  backdrop-filter: blur(8px) saturate(180%);
  -webkit-backdrop-filter: blur(8px) saturate(180%);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--duration-medium) var(--ease-smooth-out);
  z-index: -1;
}

.site-header.scrolled .site-nav::before,
.site-header.scrolled .header-right::before {
  opacity: 1;
}

.brand-lockup {
  display: inline-flex;
  align-items: flex-start;
  justify-self: start;
  height: 60px;
  /* no transform transition: when the header docks, its geometry changes in the
     same frame, so animating the transform would fly the logo in from its old spot */
  transition: opacity var(--duration-fast) var(--ease-smooth-out),
    visibility var(--duration-fast) var(--ease-smooth-out);
}

.site-header.scrolled .brand-lockup {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  pointer-events: none;
}

.brand-lockup img {
  width: auto;
  height: 76px;
  filter: none;
}

.site-nav {
  justify-self: center;
  display: flex;
  gap: 4px;
}

.site-nav a {
  position: relative;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 0 11px;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  color: var(--navy);
  font-size: 0.72rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  white-space: nowrap;
  transition: color var(--duration-quick) var(--ease-in-out), background var(--duration-quick) var(--ease-in-out), box-shadow var(--duration-quick) var(--ease-in-out),
    scale var(--duration-quick) var(--ease-smooth-out);
}

.site-header.scrolled .site-nav a {
  color: var(--navy);
}

.site-nav a:hover {
  color: var(--azure);
}

.site-nav a::after,
.header-right a::after,
.header-search::after {
  content: "";
  position: absolute;
  left: 11px;
  right: 11px;
  bottom: 7px;
  height: 2px;
  border-radius: 2px;
   corner-shape: squircle;
  background: var(--green);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}

.site-nav a:hover::after,
.header-right a:hover::after,
.header-right a[aria-current="page"]::after,
.header-search:hover::after {
  transform: scaleX(1);
}

.site-nav a:active {
  scale: 0.96;
}

.header-right {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 4px;
}

.header-right a,
.header-search {
  position: relative;
  flex: 0 0 auto;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 12px;
  border: 0;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  background: transparent;
  color: var(--navy);
  font-family: inherit;
  font-size: 0.72rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  transition: color var(--duration-quick) var(--ease-in-out), background var(--duration-quick) var(--ease-in-out), box-shadow var(--duration-quick) var(--ease-in-out),
    scale var(--duration-quick) var(--ease-smooth-out);
}

.header-search {
  padding: 0 8px;
}

.header-right a:hover,
.header-search:hover {
  color: var(--azure);
}

.header-right a:active,
.header-search:active {
  scale: 0.96;
}

.header-action {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 0 22px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  font-size: 0.72rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  transition: background var(--duration-quick) var(--ease-in-out), color var(--duration-quick) var(--ease-in-out), border-color var(--duration-quick) var(--ease-in-out),
    scale var(--duration-quick) var(--ease-smooth-out);
}

.header-action:active {
  scale: 0.96;
}

.header-action:hover {
  background: var(--navy);
  color: #fff;
  border-color: var(--navy);
}

.site-header.scrolled .header-action {
  border-color: var(--line-strong);
  color: var(--navy);
}

.site-header.scrolled .header-action:hover {
  background: var(--navy);
  color: #fff;
  border-color: var(--navy);
}

/* ---------- Mobile menu toggle ---------- */
.menu-toggle {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  justify-self: center;
  grid-column: 2;
  grid-row: 1;
}

.menu-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  margin: 0 auto;
  background: var(--navy);
  border-radius: 2px;
   corner-shape: squircle;
  transition: transform var(--duration-fast) var(--ease-smooth-out), opacity var(--duration-quick) var(--ease-in-out), background var(--duration-fast) var(--ease-smooth-out);
}

.site-header.scrolled .menu-toggle span {
  background: var(--navy);
}

.menu-toggle.active span {
  transition-duration: var(--duration-fast);
}

.menu-toggle.active span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.menu-toggle.active span:nth-child(2) {
  opacity: 0;
}

.menu-toggle.active span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

.site-header:has(~ .mobile-nav.open) .brand-lockup img {
  filter: brightness(0) invert(1);
}

.site-header:has(~ .mobile-nav.open) .menu-toggle span {
  background: #fff;
}

.site-header:has(~ .mobile-nav.open) .header-right a,
.site-header:has(~ .mobile-nav.open) .header-search {
  color: #fff;
}

.site-header:has(~ .mobile-nav.open) .header-right a:hover,
.site-header:has(~ .mobile-nav.open) .header-search:hover {
  color: var(--green);
}

body.menu-open {
  background: var(--ghost);
  overflow: hidden;
}

body.menu-open .site-header,
body.menu-open .mobile-nav {
  background: var(--ghost);
  color: var(--navy);
}

body.menu-open .site-header:has(~ .mobile-nav.open) .brand-lockup img {
  filter: none;
}

body.menu-open .site-header:has(~ .mobile-nav.open) .menu-toggle span {
  background: var(--navy);
}

body.menu-open .site-header:has(~ .mobile-nav.open) .header-right a,
body.menu-open .site-header:has(~ .mobile-nav.open) .header-search {
  color: var(--navy);
}

body.menu-open .site-header:has(~ .mobile-nav.open) .header-right a:hover,
body.menu-open .site-header:has(~ .mobile-nav.open) .header-search:hover {
  color: var(--azure);
}

/* ---------- Mobile nav panel ---------- */
.mobile-nav {
  position: fixed;
  inset: 0;
  z-index: 90;
  isolation: isolate;
  overflow: clip;
  display: block;
  padding: clamp(20px, 3vw, 44px) 0 clamp(48px, 6vw, 88px);
  background: var(--navy);
  color: #fff;
  opacity: 0;
  pointer-events: none;
  transform: translate(24px, -6px);
  transition: opacity 450ms var(--ease-smooth-out),
    transform 450ms var(--ease-smooth-out),
    background-color var(--duration-medium) var(--ease-smooth-out);
}

.mobile-nav.open {
  position: relative;
  inset: auto;
  z-index: 1;
  opacity: 1;
  pointer-events: auto;
  transform: translate(0, 0);
  transition-duration: 450ms;
}

body.menu-open .site-header {
  position: fixed;
  z-index: 100;
}

.mobile-nav-inner {
  width: var(--container);
  margin: 0 auto;
  padding: 0 clamp(22px, 6vw, 48px);
}

.menu-list {
  display: grid;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.menu-list li {
  position: relative;
}

.menu-list a {
  display: block;
  padding: clamp(3px, 0.7vh, 7px) 0;
  color: var(--navy);
  font-size: clamp(1.75rem, 4vw, 3.6rem);
  font-weight: var(--weight-semibold);
  letter-spacing: -0.04em;
  line-height: 1;
  opacity: 0;
  transform: translateX(-18px);
  transition: opacity var(--duration-very-slow) var(--ease-in-out), transform var(--duration-very-slow) var(--ease-in-out);
}

.mobile-nav.open .menu-list a {
  opacity: 1;
  transform: translateX(0);
}

.menu-list a:hover,
.menu-list a:focus-visible {
  color: var(--azure);
}

/* the page you are on is brand green */
.menu-list a[aria-current="page"] {
  color: var(--green);
}

/* the links arrive one after another on open; closing stays a single quick fade */
.mobile-nav.open .menu-list li:nth-child(2) a { transition-delay: 35ms; }
.mobile-nav.open .menu-list li:nth-child(3) a { transition-delay: 70ms; }
.mobile-nav.open .menu-list li:nth-child(4) a { transition-delay: 105ms; }
.mobile-nav.open .menu-list li:nth-child(5) a { transition-delay: 140ms; }
.mobile-nav.open .menu-list li:nth-child(6) a { transition-delay: 175ms; }
.mobile-nav.open .menu-list li:nth-child(7) a { transition-delay: 210ms; }
.mobile-nav.open .menu-list li:nth-child(8) a { transition-delay: 245ms; }
.mobile-nav.open .menu-list li:nth-child(9) a { transition-delay: 280ms; }

@media (prefers-reduced-motion: reduce) {
  .mobile-nav.open .menu-list a { transition-delay: 0ms; }
}

/* Join CapFive and Contact sit apart from the pages, under a hairline */
.menu-list li.menu-actions-start {
  margin-top: clamp(16px, 2.4vh, 28px);
  padding-top: clamp(16px, 2.4vh, 28px);
  max-width: 260px;
  border-top: 1px solid rgba(0, 40, 72, 0.14);
}

.menu-list a.menu-go::after {
  content: "\2192";
  margin-left: 0.35em;
  font-weight: var(--weight-regular, 400);
  color: var(--azure);
}

/* a quiet utility line at the foot of the open menu */
.menu-utility {
  position: absolute;
  bottom: clamp(64px, 9vh, 120px);
  display: flex;
  gap: 24px;
  opacity: 0;
  transition: opacity var(--duration-very-slow) var(--ease-in-out) 0ms;
}

.mobile-nav.open .menu-utility {
  opacity: 1;
  transition-delay: 300ms;
}

.menu-utility a {
  color: var(--navy);
  font-size: 0.75rem;
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.menu-utility a + a::before {
  content: "\00b7";
  margin-right: 24px;
  color: rgba(0, 40, 72, 0.3);
}

.menu-utility a:hover,
.menu-utility a:focus-visible {
  color: var(--azure);
}

/* on short screens the line follows the links instead of pinning to the foot */
@media (max-height: 860px) {
  .menu-utility {
    position: static;
    margin-top: 28px;
  }
}

/* the close cross is a touch larger than the hamburger it turns from */
.menu-toggle.active span {
  width: 28px;
}

.menu-utilities {
  display: flex;
  gap: 20px;
  margin-top: clamp(20px, 3vh, 36px);
}

.menu-utilities a {
  color: rgba(255, 255, 255, 0.74);
  font-size: 0.78rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  opacity: 0;
  transform: translateX(-12px);
  transition: color var(--duration-quick) var(--ease-in-out), opacity var(--duration-very-slow) var(--ease-in-out), transform var(--duration-very-slow) var(--ease-in-out);
}

.menu-utilities a:hover,
.menu-utilities a:focus-visible {
  color: #fff;
}

/* ---------- Hero ---------- */
.hero {
  position: relative;
  min-height: 100vh;
  display: grid;
  grid-template-rows: 1fr auto;
  background: var(--ghost);
  color: var(--navy);
  overflow: hidden;
}

.hero-inner {
  position: relative;
  z-index: 1;
  align-self: center;
  width: var(--container);
  margin: 0 auto;
  padding-top: 96px;
  display: grid;
  grid-template-columns: 1.02fr 1fr;
  align-items: center;
  gap: clamp(32px, 2vw, 80px);
}

/* on short screens the centred copy would rise under the big header logo, so it starts below it instead */
@media (min-width: 901px) and (max-height: 980px) {
  .home .hero-inner {
    align-self: start;
    padding-top: calc(var(--header-logo-clearance) + 152px - 24px);
  }
}

.hero-visual {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

.hero-globe {
  display: block;
  width: min(100%, 560px);
  aspect-ratio: 1 / 1;
  height: auto;
  touch-action: none;
  cursor: grab;
}

.hero-globe.dragging {
  cursor: grabbing;
}

h1 {
  margin-bottom: 44px;
  color: var(--navy);
  font-size: clamp(2.34rem, 3.78vw, 4.14rem);
  line-height: 0.98;
  letter-spacing: var(--tracking-display);
  font-weight: var(--weight-light);
  text-wrap: balance;
}

.hero h1 span {
  display: block;
}

.eyebrow {
  display: inline-block;
  margin-bottom: 18px;
  color: var(--faint);
  font-size: var(--type-label);
  font-weight: var(--weight-medium);
  letter-spacing: normal;
  text-transform: uppercase;
}

.eyebrow-accent {
  color: var(--accent-blue);
  font-size: var(--type-label-lg);
}

/* one eyebrow size across the site */
.eyebrow,
.adviser-eyebrow,
.contact-eyebrow {
  font-size: 0.88rem;
}

.hero-eyebrow {
  display: inline-block;
  margin-bottom: 18px;
  color: var(--green);
  font-size: 0.88rem;
  font-weight: var(--weight-medium);
  letter-spacing: normal;
  text-transform: uppercase;
}

.hero-copy {
  max-width: 480px;
  color: var(--muted);
  font-size: 1.08rem;
  line-height: 1.62;
}

.hero-actions {
  display: flex;
  gap: 16px;
  margin-top: 44px;
}

.hero-stats {
  position: relative;
  z-index: 1;
  width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  padding: 0;
  margin-bottom: clamp(28px, 4vh, 48px);
}

.hero-stats div {
  display: flex;
  flex-direction: column;
  padding: 28px 24px 4px;
  border-left: 1px solid var(--line-strong);
}

.hero-stats dd {
  margin: 0 0 6px;
  color: var(--navy);
  font-size: clamp(1.9rem, 2.6vw, 2.6rem);
  line-height: 1;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-lede);
  font-variant-numeric: tabular-nums;
}

.hero-stats dt {
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

/* ---------- Scroll cue ---------- */
.scroll-cue {
  position: absolute;
  bottom: 28px;
  right: clamp(28px, 5vw, 72px);
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  pointer-events: none;
}

.scroll-cue span {
  display: block;
  width: 1px;
  height: 36px;
  background: linear-gradient(to bottom, rgba(255,255,255,0.4), rgba(255,255,255,0));
  animation: scrollLine 2s var(--ease-linear) infinite;
}

@keyframes scrollLine {
  0% { transform: scaleY(0); transform-origin: top; }
  50% { transform: scaleY(1); transform-origin: top; }
  51% { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

/* ---------- Buttons ---------- */
/* spacing utilities — one scale, used instead of ad-hoc margins */
.half-top { margin-top: clamp(14px, 1.2vw, 22px); }
.add-top { margin-top: clamp(28px, 3vw, 44px); }
.double-top { margin-top: clamp(56px, 6vw, 88px); }
.half-bottom { margin-bottom: clamp(14px, 1.2vw, 22px); }
.add-bottom { margin-bottom: clamp(28px, 3vw, 44px); }
.double-bottom { margin-bottom: clamp(56px, 6vw, 88px); }

.button {
  min-height: 48px;
  min-width: 226px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 22px;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  font-size: 0.72rem;
  font-weight: var(--weight-semibold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  transition: background var(--duration-quick) var(--ease-in-out), color var(--duration-quick) var(--ease-in-out), border-color var(--duration-quick) var(--ease-in-out),
    scale var(--duration-quick) var(--ease-smooth-out), box-shadow var(--duration-quick) var(--ease-in-out);
  border: 0;
  font-family: inherit;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.button:active {
  scale: 0.96;
}

.button-primary {
  background: var(--accent-blue);
  color: #fff;
}

.button-primary:hover {
  background: var(--azure);
  color: #fff;
}

.button-lightblue {
  background: var(--azure);
  color: #fff;
}

.button-lightblue:hover,
.button-lightblue:focus-visible {
  background: var(--accent-blue);
  color: #fff;
}

.button-ghost {
  border: 1px solid rgba(255, 255, 255, 0.4);
  color: #fff;
}

.button-ghost:hover {
  border-color: #fff;
}

.hero .button-ghost {
  border-color: var(--line-strong);
  color: var(--navy);
}

.hero .button-ghost:hover {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
}

.copy-block p:not(.eyebrow),
.movement-copy p:not(.eyebrow),
.precision-grid p:not(.eyebrow),
.network-copy p:not(.eyebrow),
.contact-content p:not(.eyebrow),
.sectors-intro {
  max-width: 440px;
  color: var(--muted);
  font-size: 1.125rem;
}

.deals-intro {
  max-width: 600px;
  color: var(--muted);
  font-size: var(--type-body-lg);
}

.deals-section .section-heading {
  margin-bottom: clamp(72px, 7vw, 104px);
}

#deals-title {
  color: var(--navy);
}

.heading-sentence-break {
  display: block;
  color: var(--accent-blue);
}

/* about's headline reads better flowing; the other mastheads keep the break */
.page-about .split-copy-inner h1 .heading-sentence-break {
  display: inline;
}

.deals-section .deal-card {
  zoom: 0.7695;
}



.section-heading .deals-intro {
  grid-column: 1;
  grid-row: 3;
}

.copy-block p + p,
.movement-copy p + p {
  margin-top: 14px;
}

/* ---------- Movement / network split layouts ---------- */
.network-section {
  width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(280px, 0.88fr) minmax(360px, 1fr);
  gap: clamp(56px, 8vw, 112px);
  align-items: center;
  padding: var(--section-y) 0;
}

.copy-block .button {
  margin-top: 32px;
}

.movement-copy .text-link {
  display: inline-block;
  margin-top: 32px;
}

.movement-copy .button {
  margin-top: 32px;
}

.photo-panel,
.movement-image,
.network-visual {
  overflow: hidden;
  background: var(--navy);
}

.photo-panel,
.movement-image {
  aspect-ratio: 0.9 / 1;
}

.movement-image {
  position: relative;
  background: transparent;
}

.movement-image canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  touch-action: none;
  cursor: grab;
}

.movement-image canvas.dragging {
  cursor: grabbing;
}

.movement-image canvas.hot {
  cursor: pointer;
}

.globe-shadow {
  position: absolute;
  left: 50%;
  width: 20%;
  height: 6%;
  transform: translate(-50%, -50%);
  background: radial-gradient(ellipse at center, rgba(0, 40, 72, 0.16), rgba(0, 40, 72, 0) 70%);
  pointer-events: none;
}

.globe-tip {
  position: fixed;
  z-index: 60;
  pointer-events: none;
  padding: 8px 12px;
  border-radius: 8px;
   corner-shape: squircle;
  background: var(--navy);
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.35;
  white-space: nowrap;
  opacity: 0;
  transform: translate(-50%, -130%);
  transition: opacity 0.12s ease;
}

.globe-tip.on {
  opacity: 1;
}

.globe-tip b {
  color: var(--accent-blue);
  font-weight: 700;
}

.globe-tip span {
  color: #fff;
}

.network-visual {
  aspect-ratio: 0.98 / 1;
}

.photo-panel img,
.movement-image img,
.network-visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration-fast) var(--ease-smooth-out);
}

.photo-panel:hover img,
.movement-image:hover img,
.network-visual:hover img {
  transform: scale(1.04);
}

/* ---------- Why CapFive (orbs over navy) ---------- */
.why-section {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  min-height: 100vh;
  background: var(--navy);
  color: #fff;
  padding: var(--section-y) var(--gutter);
}

.why-section h1,
.why-section h2,
.why-section h3,
.why-section h5 {
  color: #fff;
}

.why-inner {
  position: relative;
  z-index: 1;
  width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(280px, 0.9fr) minmax(320px, 1fr);
  gap: clamp(48px, 7vw, 104px);
  align-items: center;
}

.why-copy .eyebrow {
  margin-bottom: 22px;
}

.why-sub {
  max-width: 520px;
  margin: 18px 0 0;
  font-size: clamp(1.2rem, 1.8vw, 1.5rem);
  line-height: 1.35;
  color: rgba(255, 255, 255, 0.82);
}

.why-list {
  display: grid;
}

.why-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 20px;
  padding: 22px 0;
}

.why-row h5,
.why-row h3 {
  margin: 0 0 6px;
  font-size: 1.6rem;
}

.why-list.on-light .why-row {
  border-color: var(--line);
}

.why-list.on-light .why-row > span,
.why-list.on-light .why-row p {
  color: var(--muted);
}

/* the network band on a light ground: the orbs need colour to read against grey */
.why-section.is-grey {
  background: var(--ghost);
  color: var(--navy);
}

.why-section.is-grey h2,
.why-section.is-grey h3 {
  color: var(--navy);
}

.why-section.is-grey .why-sub,
.why-section.is-grey .why-row p {
  color: var(--muted);
}

.why-section.is-grey .why-row {
  border-color: var(--line-strong);
}

.why-section.is-grey .why-orbs i {
  opacity: 0.6;
}

.why-section.is-grey .why-orbs i:nth-child(1) { background: radial-gradient(circle at 40% 40%, rgba(31, 163, 209, 0.78), rgba(31, 163, 209, 0) 70%); }
.why-section.is-grey .why-orbs i:nth-child(2) { background: radial-gradient(circle at 45% 45%, rgba(149, 193, 31, 0.62), rgba(149, 193, 31, 0) 70%); }
.why-section.is-grey .why-orbs i:nth-child(3) { background: radial-gradient(circle at 50% 50%, rgba(0, 110, 171, 0.6), rgba(0, 110, 171, 0) 70%); }
.why-section.is-grey .why-orbs i:nth-child(4) { background: radial-gradient(circle at 50% 50%, rgba(31, 163, 209, 0.5), rgba(31, 163, 209, 0) 68%); }
.why-section.is-grey .why-orbs i:nth-child(5) { background: radial-gradient(circle at 50% 50%, rgba(149, 193, 31, 0.46), rgba(149, 193, 31, 0) 68%); }

/* the How CapFive works band on a blue ground */
.why-section.is-blue {
  background: linear-gradient(160deg, var(--azure) 0%, var(--navy) 58%, var(--navy-deep) 100%);
}

.why-section.is-blue .why-sub,
.why-section.is-blue .why-row p {
  color: rgba(255, 255, 255, 0.82);
}

.why-section.is-blue .eyebrow {
  color: rgba(255, 255, 255, 0.72);
}

.why-section.is-blue .why-orbs i {
  opacity: 0.85;
}

/* About intro — one statement, three pillars, a cinematic strip */
/* the home page takes the same side inset as About, on its content wrappers */
/* ---------- Why CapFive feature: a photograph on the left half, the case on the right ---------- */
.why-feature {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  min-height: min(800px, 84vh);
  background: var(--paper);
}

.why-feature.is-ghost {
  background: var(--ghost);
}

.why-feature-media {
  position: relative;
  overflow: hidden;
  background: var(--wash);
}

.why-feature-media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 60%;
}

/* a landscape frame for the media, aligned to the page grid like the services and editorial images */
.why-feature-media--landscape {
  aspect-ratio: 1024 / 640;
  align-self: center;
  justify-self: start;
  width: calc((var(--container) - clamp(20px, 3vw, 52px)) / 2 * 0.9);
  margin-left: var(--gutter);
}

.why-feature-media--landscape img {
  object-position: 50% 50%;
}

.why-feature-body {
  display: grid;
  align-content: center;
  padding: clamp(72px, 8vw, 140px) clamp(28px, 6vw, 120px);
}

.why-feature-body--tight {
  padding-left: clamp(28px, 2vw, 120px);
}

.why-feature-body h2 {
  max-width: none;
}

/* the body paragraph shared by the feature bands and the editorial rows */
.ax-body {
  max-width: 54ch;
  margin: 0 0 16px;
  color: var(--muted);
  font-size: var(--type-body-lg);
  line-height: 1.6;
}

.why-feature-lede {
  max-width: 500px;
  margin: 4px 0 0;
  color: var(--muted);
  font-size: 1.125rem;
  line-height: 1.55;
  letter-spacing: var(--tracking-lede);
}

.why-feature-points {
  display: grid;
  gap: clamp(20px, 2vw, 30px);
  margin-top: clamp(44px, 4.6vw, 72px);
}

.why-feature-points p {
  max-width: 36ch;
  margin: 0;
  color: var(--muted);
  font-size: clamp(1.05rem, 1.25vw, 1.25rem);
  line-height: 1.3;
  letter-spacing: var(--tracking-lede);
}

.why-feature-points b {
  color: var(--navy);
  font-weight: var(--weight-medium);
}

.about-does-points {
  display: grid;
  gap: clamp(18px, 2vw, 26px);
  margin-top: clamp(28px, 3vw, 44px);
}

.about-does-points article {
  padding-top: 0;
}

.about-does-points h3 {
  margin: 0 0 6px;
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-semibold);
}

.about-does-points p {
  max-width: 54ch;
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}

.why-feature.is-reverse .why-feature-media {
  order: 2;
}

/* the four service bands reuse the sector editorial rows */
.sector-edit-row {
  scroll-margin-top: 140px;
}

@media (max-width: 900px) {
  .why-feature {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .why-feature-media:not(.why-feature-media--landscape) {
    min-height: 460px;
  }

  .why-feature-media--landscape {
    width: auto;
    margin-left: 0;
  }
}

/* the home opening sits on white */
.home .hero {
  background: var(--paper);
}

/* the home sector band sits on the light grey */
.home .sectors-section {
  background: var(--ghost);
}

/* the home opening sits on white, so the band beneath it takes the light grey */
.home .why-feature {
  background: var(--ghost);
}

/* both home rails keep a little air at the viewport edge */
.home .deal-rail {
  padding-left: clamp(16px, 2vw, 40px);
  padding-right: clamp(16px, 2vw, 40px);
}

@media (max-width: 2199px) {
  body.home .hero-inner,
  body.home .hero-stats,
  body.home .network-section,
  body.home .why-inner,
  body.home .movement-section,
  body.home .mna-lab,
  body.home .contact-inner,
  body.home .home-services-gallery-inner,
  body.home .page-head,
  body.home .page-section,
  body.home .deal-admin-bar,
  body.home .precision-intro,
  body.home .precision-grid,
  body.home .section-heading,
  body.home .page-block > .block-inner {
    padding-left: clamp(22px, 4vw, 80px);
    padding-right: clamp(22px, 4vw, 80px);
  }
}

@media (max-width: 2199px) {
  .page-block > .block-inner,
  .why-inner {
    padding-left: clamp(22px, 4vw, 80px);
    padding-right: clamp(22px, 4vw, 80px);
  }
}

/* the opening section's copy and its figures line up with every other block */
.page-about .about-hero .precision-intro,
.page-network .about-hero .precision-intro,
.page-services .about-hero .precision-intro {
  width: var(--container);
  max-width: none;
  margin: 0 auto;
  padding-left: clamp(22px, 4vw, 80px);
  padding-right: clamp(22px, 4vw, 80px);
}

.page-about .about-hero .about-stats,
.page-network .about-hero .about-stats,
.page-services .about-hero .about-stats {
  padding-left: clamp(22px, 4vw, 80px);
  padding-right: clamp(22px, 4vw, 80px);
}

.about-intro .a7-statement {
  max-width: 33ch;
  color: var(--navy);
  font-size: clamp(1.8rem, 3.78vw, 3.24rem);
  font-weight: var(--weight-light);
  line-height: 1.1;
  letter-spacing: var(--tracking-display);
}

.about-intro .a7-statement em {
  color: var(--accent-blue);
  font-style: normal;
}

.about-intro .a7-pillars {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(21.6px, 3.6vw, 57.6px);
}

.about-intro .a7-pillars > div {
  padding-top: 22px;
  border-top: 1px solid var(--line-strong);
}

.about-intro .a7-pillars h3 {
  margin: 0 0 10px;
  color: var(--navy);
  font-size: 1.04rem;
  font-weight: 700;
}

.about-intro .a7-pillars p {
  margin: 0;
  color: var(--muted);
}

@media (max-width: 900px) {
  .about-intro .a7-pillars {
    grid-template-columns: 1fr;
  }
}

/* About us — tall photograph with the copy beside it */
/* the How CapFive works points read at body size, not the small default */
.page-about .why-section .why-row p {
  font-size: max(1.2rem, var(--type-body-lg));
  line-height: 1.55;
}

.ph-split .a6 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(48px, 7vw, 112px);
  align-items: center;
}

.ph-split .a6-media {
  position: relative;
}

.ax-img {
  display: block;
  overflow: hidden;
  border-radius: var(--radius-md, 28px);
   corner-shape: squircle;
  background: var(--wash);
}

.ax-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1200ms var(--ease-smooth-out);
}

.ax-img:hover img {
  transform: scale(1.03);
}

.ph-split .a6-media .ax-img {
  width: 95%;
  aspect-ratio: 4 / 5;
  max-width: 560px;
}

.ph-split .a6-copy {
  display: grid;
  gap: 22px;
  justify-items: start;
}

.ph-split .a6-copy h2 {
  margin: 0 0 4px;
}

.ph-split#middle-market .a6-copy h2 {
  max-width: 18ch;
}

.ph-split#middle-market .a6-copy .ax-body {
  max-width: 48.6ch;
}

.ph-split .a6-item h3 {
  margin: 0 0 8px;
  color: var(--navy);
  font-size: 1.15rem;
  font-weight: var(--weight-semibold);
}

.ph-split .ax-body {
  margin: 0;
}

@media (max-width: 900px) {
  .ph-split .a6 {
    grid-template-columns: 1fr;
    gap: 36px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ax-img img {
    transition: none;
  }
}

/* Who uses CapFive — editorial index with the deal-size scale */
.w7-top {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(40px, 6vw, 96px);
  align-items: start;
}

.w7-top h2 {
  margin: 0;
}

.w7-lede {
  max-width: 34ch;
  color: var(--muted);
  font-size: var(--type-body-lg);
}

.w7-row h3 {
  margin: 0;
  color: var(--navy);
  font-size: 1.3rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-lede);
  line-height: 1.25;
}

.w7-list {
  border-top: 1px solid var(--navy);
}

.w7-row {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 20px;
  padding: 26px 0 28px;
  border-bottom: 1px solid var(--line-strong);
}

.w7-row::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 100%;
  height: 2px;
  background: var(--green);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform var(--duration-slow, 0.5s) var(--ease-smooth-out);
}

.w7-row:hover::after {
  transform: scaleX(1);
}

.w7-row p {
  margin: 8px 0 0;
  color: var(--muted);
}

@media (max-width: 900px) {
  .w7-top {
    grid-template-columns: 1fr;
    gap: 36px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .w7-row::after {
    transition: none;
  }
}

.why-row p {
  margin: 0;
  color: rgba(255, 255, 255, 0.72);
}

.why-orbs {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.why-orbs i {
  position: absolute;
  border-radius: 50%;
  filter: blur(74px);
  will-change: transform;
}

.why-orbs i:nth-child(1) {
  left: 16%;
  top: 18%;
  width: 58%;
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.3), transparent 66%);
}

.why-orbs i:nth-child(2) {
  left: 66%;
  top: 30%;
  width: 60%;
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(31, 163, 209, 0.38), transparent 66%);
}

.why-orbs i:nth-child(3) {
  left: 40%;
  top: 64%;
  width: 52%;
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(0, 110, 171, 0.38), transparent 66%);
}

.why-orbs i:nth-child(4) {
  left: 8%;
  top: 68%;
  width: 46%;
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.2), transparent 66%);
}

.why-orbs i:nth-child(5) {
  left: 60%;
  top: 60%;
  width: 50%;
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(31, 163, 209, 0.28), transparent 68%);
}

/* ---------- Section padding + heading block ---------- */
.section-pad {
  padding: var(--section-y) var(--gutter);
}

.section-heading {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 18px 48px;
  margin-bottom: 56px;
}

.section-heading .eyebrow {
  grid-column: 1;
  grid-row: 1;
  margin-bottom: 0;
}

.section-heading h2 {
  grid-column: 1;
  grid-row: 2;
}

.section-heading h2 a:hover,
.section-heading h2 a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.section-heading > a:not(.button),
.text-link {
  position: relative;
  display: inline-block;
  color: var(--navy);
  font-size: 0.74rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

/* the plain variant eases the label tracking */
.section-heading > a.text-link--plain,
.text-link--plain {
  letter-spacing: 0.04em;
}

/* a rail's trailing link sits under the cards, on the right */
.section-more {
  margin: 40px 0 0;
  text-align: right;
}

/* the trailing "More by …" link reads at normal spacing */
.section-more .text-link {
  letter-spacing: normal;
}

/* the trailing link carries the site's underline at rest */
.section-more .text-link::after {
  transform: scaleX(1);
}

.text-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: var(--green);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}

.section-heading > a:not(.button) {
  grid-column: 2;
  grid-row: 2;
  align-self: end;
  white-space: nowrap;
}

.section-heading.has-cta {
  grid-template-columns: 1fr;
}

.section-heading.has-cta > a {
  grid-column: 1;
  grid-row: 3;
  justify-self: start;
}

.section-heading > a:not(.button):hover,
.text-link:hover::after {
  transform: scaleX(1);
}

/* ---------- Deals ---------- */
.deals-cta {
  margin-top: 56px;
  text-align: right;
}

.deal-rail {
  position: relative;
  overflow: hidden;
  /* room for the cards' shadows, which overflow:hidden would otherwise clip */
  padding: 10px 0 56px;
  margin-left: calc(var(--gutter) * -1);
  margin-right: calc(var(--gutter) * -1);
}

.deal-rail::before,
.deal-rail::after {
  content: "";
  position: absolute;
  z-index: 2;
  top: 0;
  bottom: 0;
  width: clamp(56px, 10vw, 220px);
  pointer-events: none;
}

.deal-rail::before {
  left: 0;
  background: linear-gradient(to right, var(--paper), transparent);
}

.deal-rail::after {
  right: 0;
  background: linear-gradient(to left, var(--paper), transparent);
}

.deal-rail {
  cursor: grab;
  touch-action: pan-y;
}

.deal-rail.is-dragging {
  cursor: grabbing;
  user-select: none;
}

.deal-track {
  display: flex;
  gap: clamp(20px, 2vw, 32px);
  width: max-content;
  will-change: transform;
}

/* a soft shadow at rest, lifted further on hover */
.deal-track > .deal-card {
  flex: 0 0 auto;
  width: min(380px, 80vw);
  box-shadow: 0 1px 2px rgba(0, 40, 72, 0.06), 0 10px 30px -12px rgba(0, 40, 72, 0.22);
}

.deal-track > .deal-card:hover {
  box-shadow:
    0 0 0 1px rgba(0, 40, 72, 0.06),
    0 14px 30px -10px rgba(0, 40, 72, 0.26),
    0 36px 72px -20px rgba(0, 40, 72, 0.22);
}

@media (prefers-reduced-motion: reduce) {
  .deal-rail {
    overflow-x: auto;
  }
}


/* The deal card, from the lab's "Ledger, marked, verb" study: A-series tall, every inner
   size in cqw so one card scales from the home rail to the listing grid. The deal title
   is the sentence, its parties set heavy; adviser, place and year sit in ruled rows. */
.deal-card {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  zoom: 0.9;
  aspect-ratio: 1 / 1.4142;
  container-type: inline-size;
  background: linear-gradient(180deg, rgba(31, 163, 209, 0.22) 0%, var(--wash) 44%, var(--ghost) 100%);
  box-shadow: 0 1px 2px rgba(0, 40, 72, 0.06), 0 10px 30px -12px rgba(0, 40, 72, 0.18);
  color: var(--navy);
  transition: box-shadow var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out);
}

.deal-card:hover {
  box-shadow: 0 2px 4px rgba(0, 40, 72, 0.08), 0 22px 44px -16px rgba(0, 40, 72, 0.30);
  transform: translateY(-4px);
}

.deal-card-cover {
  position: absolute;
  inset: 0;
  z-index: 1;
}

.deal-card-cover:focus-visible {
  outline: 2px solid var(--azure);
  outline-offset: -4px;
}

.deal-card-mark {
  position: absolute;
  right: -45cqw;
  bottom: -35cqw;
  width: 100cqw;
  height: auto;
  opacity: 0.04;
  pointer-events: none;
}

.deal-card-line {
  position: absolute;
  top: 23cqw;
  right: 7cqw;
  left: 7cqw;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 7;
  overflow: hidden;
  margin: 0;
  color: #6b7682;
  font-size: 8.4cqw;
  font-weight: 300;
  letter-spacing: -0.04em;
  line-height: 1.02;
}

.deal-card-line.is-plain,
.deal-card-name {
  color: var(--navy);
  font-weight: 700;
}

.deal-card-stop {
  font-style: normal;
  font-weight: 700;
}

.deal-card--sell .deal-card-stop { color: var(--azure); }
.deal-card--buy .deal-card-stop { color: var(--green); }
.deal-card--equity .deal-card-stop { color: var(--accent-blue); }
.deal-card--debt .deal-card-stop { color: var(--navy); }
.deal-card--other .deal-card-stop { color: var(--muted); }

.deal-card-sub {
  color: var(--faint);
}

/* the label carried over from the typographic deal-card study */
.deal-card-kicker {
  margin: 0 0 22px;
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.deal-card-pill {
  position: absolute;
  z-index: 2;
  top: 10cqw;
  left: 7cqw;
  display: inline-flex;
  align-items: center;
  padding: 2cqw 4.4cqw;
  border-radius: 999px;
  background: var(--accent-blue);
  color: #fff;
  font-size: 3.4cqw;
  font-weight: var(--weight-semibold);
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  transition: background-color var(--duration-fast) var(--ease-smooth-out);
}

.deal-card-pill:hover {
  background: var(--azure);
  color: #fff;
}

.deal-card-pill--sell {
  background: var(--azure);
}

.deal-card-pill--buy {
  background: var(--green);
}

.deal-card-pill--equity {
  background: var(--accent-blue);
}

.deal-card-pill--debt {
  background: var(--navy);
}

.deal-card-pill--other {
  background: var(--muted);
}

.deal-card--sell {
  background: linear-gradient(180deg, rgba(0, 110, 171, 0.22) 0%, var(--wash) 44%, var(--ghost) 100%);
}

.deal-card--buy {
  background: linear-gradient(180deg, rgba(149, 193, 31, 0.22) 0%, var(--wash) 44%, var(--ghost) 100%);
}

.deal-card--equity {
  background: linear-gradient(180deg, rgba(31, 163, 209, 0.22) 0%, var(--wash) 44%, var(--ghost) 100%);
}

.deal-card--debt {
  background: linear-gradient(180deg, rgba(0, 40, 72, 0.22) 0%, var(--wash) 44%, var(--ghost) 100%);
}

.deal-card--other {
  background: linear-gradient(180deg, rgba(91, 100, 112, 0.22) 0%, var(--wash) 44%, var(--ghost) 100%);
}

/* deal cards everywhere are flat ("Ledger, marked, verb, tint" in the deal-card lab). Each card is its
   service colour lightened to 5%, the tag solid, the mark faint in the service colour, navy type */
body .deal-card { --svc: var(--accent-blue); background: #fff; }
body .deal-card--sell { --svc: var(--azure); }
body .deal-card--buy { --svc: var(--green); }
body .deal-card--equity { --svc: var(--accent-blue); }
body .deal-card--debt { --svc: var(--navy); }
body .deal-card--other { --svc: var(--muted); }
body .deal-card-line { color: rgba(0, 40, 72, 0.55); }
body .deal-card-line.is-plain,
body .deal-card-name { color: var(--navy); }
body .deal-card-row { border-color: rgba(0, 40, 72, 0.14); }
body .deal-card-row dt { color: rgba(0, 40, 72, 0.58); }
body .deal-card-row dd { font-weight: 700; }
/* the mark takes the service colour through a mask, held about as faint as the lab's */
body .deal-card-mark { opacity: 0; }
body .deal-card::after {
  content: "";
  position: absolute;
  right: -45cqw;
  bottom: -35cqw;
  z-index: -1;
  width: 100cqw;
  aspect-ratio: 1;
  background: var(--svc);
  -webkit-mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  opacity: 0.05;
  pointer-events: none;
}
body .deal-card--buy::after { opacity: 0.1; }
body .deal-card--equity::after { opacity: 0.071; }
body .deal-card--debt::after { opacity: 0.038; }

.deal-card-rows {
  position: absolute;
  right: 7cqw;
  bottom: 7cqw;
  left: 7cqw;
  margin: 0;
}

.deal-card-row {
  display: grid;
  grid-template-columns: 27cqw minmax(0, 1fr);
  padding: 2.6cqw 0;
  border-top: 0.35cqw solid rgba(0, 0, 0, 0.3);
  font-size: 4cqw;
  line-height: 1.3;
}

.deal-card-row:last-child {
  border-bottom: 0.35cqw solid rgba(0, 0, 0, 0.3);
}

.deal-card-row dt {
  color: #8b939d;
}

.deal-card-row dd {
  margin: 0;
  overflow: hidden;
  font-weight: 800;
  letter-spacing: -0.02em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.deal-card-firm {
  position: relative;
  z-index: 2;
  color: inherit;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 0.25cqw;
  text-underline-offset: 0.9cqw;
  transition: text-decoration-color var(--duration-fast) var(--ease-smooth-out);
}

.deal-card-firm:hover,
.deal-card-firm:focus-visible {
  color: inherit;
  text-decoration-color: currentColor;
}

.deal-card-foot {
  position: absolute;
  right: 7cqw;
  bottom: 7cqw;
  z-index: 2;
}

.deal-card-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #000;
  color: #fff;
  font-size: 1.05rem;
  line-height: 1;
  text-decoration: none;
  transition: background-color var(--duration-fast) var(--ease-smooth-out),
    box-shadow var(--duration-fast) var(--ease-smooth-out);
}

.deal-card-arrow:hover {
  background: var(--azure);
  color: #fff;
  box-shadow: 0 6px 14px rgba(0, 40, 72, 0.28);
}

/* ---------- Movement (full-bleed) ---------- */
.movement-section {
  width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(360px, 1fr) minmax(280px, 0.88fr);
  gap: clamp(56px, 8vw, 112px);
  align-items: center;
  padding: var(--section-y) 0;
}

/* ---------- Precision grid (navy anchor band) ---------- */
.precision-section {
  position: relative;
  overflow: hidden;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: var(--navy);
  color: #fff;
}

/* the drifting orbs sit over the section's darkening wash, the copy over both */
.precision-section > .why-orbs {
  z-index: 1;
}

.precision-section > :not(.why-orbs) {
  position: relative;
  z-index: 2;
}

.precision-section h1,
.precision-section h2,
.precision-section h3 {
  color: #fff;
}

.precision-section::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 30, 56, 0.86) 0%,
    rgba(0, 24, 44, 0.92) 100%
  );
}

.precision-intro,
.precision-grid {
  position: relative;
  z-index: 1;
}

.precision-intro {
  max-width: 720px;
  margin-bottom: 64px;
}

.precision-section.about-hero > .precision-intro {
  transform: translateY(37px);
}

/* ---------- Network page ---------- */
/* member firms with each logo shown on its card */
.firm-grid--logos .firm-card {
  padding: 28px 26px 30px;
  background: #fff;
}

.firm-grid--logos .firm-logo {
  justify-content: flex-start;
  width: 165px;
  height: 44px;
  margin-bottom: 26px;
}

.firm-grid--logos .firm-logo img {
  width: 100%;
  height: 100%;
  object-position: left center;
  max-width: none;
  max-height: none;
  object-fit: contain;
  mix-blend-mode: multiply;
}



/* the Professionals band as a half-bleed photograph, the same height as the home Services band */
.network-pro-b {
  min-height: 0;
  height: max(760px, min(800px, 84vh));
}

.network-pro-b .network-pro-cta {
  justify-self: start;
}

/* the About feature band mirrors the Network professionals band */
.about-feature {
  min-height: max(760px, min(800px, 84vh));
}

.about-feature .button {
  justify-self: start;
}

@media (max-width: 900px) {
  .network-pro-b {
    height: auto;
  }
}

.network-locations .world-map,
#member-firms .world-map {
  --map-dot: rgba(0, 40, 72, 0.34);
  --map-dot-scale: 0.3;
  --map-pin: #95c11f;
  margin-bottom: 16px;
  background: #fff;
}

/* member firm cards: logo, name, the first office's address, then the countries */
.firm-grid--logos .firm-card {
  grid-template-rows: auto auto auto 1fr;
}

.firm-address {
  padding-right: 44px;
  color: var(--muted);
  font-size: 0.88rem;
  line-height: 1.45;
}

/* the offices as one line of cities, "London / New York / Boston"; filters hide the ones that do not match */
.firm-offices {
  display: block;
  margin-top: 12px;
  padding-right: 44px;
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.5;
}

.firm-offices .firm-address {
  display: inline;
  padding-right: 0;
  color: var(--navy);
  font-size: inherit;
  font-weight: var(--weight-semibold);
}

.firm-offices .firm-address[hidden] {
  display: none;
}

/* a no-break space before the slash keeps it on the line with the city before it */
.firm-offices .firm-address:not([hidden]) ~ .firm-address:not([hidden])::before {
  content: "\00a0/ ";
}

.firm-grid--logos .firm-place {
  align-self: end;
  padding-right: 44px;
}

/* the About hero's stats run out to the page's content edge, as on the home page: they start level with
   the hero text (which sits clamp(22px, 4vw, 80px) inside the container) and reach past its narrower column.
   A negative right margin, not a width, so the text column itself keeps its size. */
@media (min-width: 901px) {
  .page-block.has-split .split-copy-inner .hero-stats.about-stats--wide {
    width: auto;
    margin-right: calc(100% - var(--container) + clamp(22px, 4vw, 80px));
  }
}

/* a firm's members: two rows, then the grid slides open */
.board-grid.is-clipped {
  overflow: hidden;
  transition: max-height 0.7s var(--ease-smooth-out);
}

@media (prefers-reduced-motion: reduce) {
  .board-grid.is-clipped { transition: none; }
}

/* the Professionals directory: the deals filter bar over the members' cards */
.pro-directory .filter-bar {
  margin-bottom: 0;
}

/* a short hero, so the filters show on first view; the directory runs straight on below it */
.page-block.pro-hero {
  min-height: 0;
  padding-bottom: 0;
}

.page-block.pro-directory {
  padding-top: clamp(40px, 5vw, 64px);
}

/* the hero's lede runs wider than the standard statement */
.page-block.pro-hero .split-body .statement {
  max-width: 760px;
}

button.filter-clear {
  padding: 0;
  border: 0;
  border-bottom: 1px solid currentColor;
  background: none;
  font: inherit;
  font-size: 0.95rem;
  cursor: pointer;
}

.pro-count {
  margin: 28px 0 24px;
  color: var(--muted);
  font-size: 0.95rem;
}

.pro-grid .person-card[hidden] {
  display: none;
}

.person-role.person-firm {
  margin-top: 2px;
  color: var(--navy);
}

.pro-empty {
  margin: 8px 0 0;
  color: var(--muted);
}

/* Services: each service's latest deals, under their own heading */
/* the last service's deals keep clear of the navy band that follows */
.service-deals {
  padding-bottom: clamp(88px, 9vw, 144px);
}

.service-deals-title {
  margin: 0 0 28px;
  padding: 28px 0;
  font-size: 1.5rem;
}

/* Deals: filter tags, toggled on and off, several at once; the firm and search sit on the row below */
.filter-bar.filter-tags {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
}

.tag-group {
  display: grid;
  grid-template-columns: 128px minmax(0, 1fr);
  align-items: start;
  margin: 0;
  padding: 0;
  border: 0;
}

.tag-group-label {
  padding-top: 8px;
  color: var(--muted);
  font-size: 0.82rem;
}

.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  max-width: 800px;
}

.tag-toggle {
  position: relative;
  cursor: pointer;
}

.tag-toggle input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.tag-toggle span {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 0 16px;
  border-radius: 999px;
  /* off: a pale grey wash; on: the light blue */
  background: rgba(144, 144, 144, 0.13);
  color: #333333;
  font-size: 0.86rem;
  transition: background var(--duration-quick) var(--ease-smooth-out),
    color var(--duration-quick) var(--ease-smooth-out);
}

.tag-toggle:hover span {
  background: rgba(31, 163, 209, 0.24);
}

.tag-toggle input:checked + span {
  background: var(--accent-blue);
  color: #fff;
}

.tag-toggle input:focus-visible + span {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}

/* Country and Member firm: a link that folds their long tag lists open and shut */
.tag-fold {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  justify-self: start;
  margin: 0;
  padding: 8px 0 0;
  border: 0;
  background: none;
  color: var(--navy);
  font: inherit;
  font-size: 0.82rem;
  text-align: left;
  text-decoration: underline;
  text-decoration-color: var(--line-strong);
  text-underline-offset: 4px;
  cursor: pointer;
}

.tag-fold::after {
  content: "";
  width: 6px;
  height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}

.tag-fold[aria-expanded="true"]::after {
  transform: translateY(1px) rotate(-135deg);
}

.tag-fold:hover {
  text-decoration-color: currentColor;
}

.tag-fold-count:not(:empty) {
  display: inline-grid;
  place-items: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--accent-blue);
  color: #fff;
  font-size: 0.7rem;
  text-decoration: none;
}

.tag-group--fold .tag-list[hidden] {
  display: none;
}

.tag-group--fold {
  grid-template-columns: 128px minmax(0, 1fr);
}

.tag-fold {
  white-space: nowrap;
}

/* the foot of the filter panel, just above the cards: "Clear filters" under the tags, the search box at the right */
.tag-foot {
  display: grid;
  grid-template-columns: 128px minmax(0, 1fr) minmax(0, 340px);
  align-items: center;
  margin-top: 20px;
}

.tag-foot .filter-clear {
  grid-column: 1 / 3;
  justify-self: start;
  font-size: 0.86rem;
}

.tag-foot .filter-clear[hidden] {
  display: none;
}

.tag-foot .filter-search {
  grid-column: 3;
}

@media (max-width: 700px) {
  .tag-group {
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
  }

  .tag-foot {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  .tag-foot .filter-clear,
  .tag-foot .filter-search {
    grid-column: auto;
  }
}

/* the member firms intro runs 30% wider than the standard lede (34ch) */
#member-firms .w7-lede {
  max-width: 44ch;
}

/* on the Network page the map sits on the member firms band's own grey */
#member-firms .world-map {
  --map-pin: var(--azure);
  --map-pin-selected: #95c11f;
  background: transparent;
}

/* iPad Pro and Surface Pro upright: the Network map runs a little wider than the copy */
@media (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  #member-firms .world-map {
    margin-inline: -48px;
  }
}

.precision-section .about-stats.network-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.firm-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(clamp(240px, 17vw, 640px), 1fr));
  gap: 16px;
}

.firm-card {
  position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 6px;
  min-height: 184px;
  padding: 22px 22px 24px;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--ghost);
  color: var(--navy);
  transition: background var(--duration-fast) var(--ease-smooth-out), box-shadow var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out);
}

.firm-card:hover {
  background: #fff;
  box-shadow: var(--shadow-lift);
  transform: translateY(-3px);
}

.firm-logo {
  display: flex;
  align-items: center;
  height: 64px;
  margin-bottom: 18px;
}

.firm-logo img {
  max-width: 140px;
  max-height: 56px;
  width: auto;
  height: auto;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.firm-initial {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  font-weight: var(--weight-semibold);
}

.firm-name {
  font-size: 1.1rem;
  font-weight: var(--weight-semibold);
  line-height: 1.25;
}

.firm-place {
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.45;
}

.firm-go {
  position: absolute;
  right: 22px;
  bottom: 22px;
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #fff;
  color: var(--azure);
  box-shadow: 0 1px 2px rgba(0, 40, 72, 0.12), 0 3px 8px rgba(0, 40, 72, 0.1);
  transition: background var(--duration-fast) var(--ease-smooth-out), color var(--duration-fast) var(--ease-smooth-out);
}

.firm-card:hover .firm-go {
  background: var(--accent-blue);
  color: #fff;
}

.network-figures {
  display: flex;
  gap: clamp(32px, 4vw, 64px);
  margin: 12px 0 0;
}

.network-figures dd {
  margin: 0 0 6px;
  color: var(--navy);
  font-size: clamp(2rem, 3vw, 2.8rem);
  font-weight: var(--weight-light);
  line-height: 1;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}

.network-figures dt {
  color: var(--faint);
  font-size: var(--type-label);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

@media (max-width: 900px) {
  .precision-section .about-stats.network-stats,
  .precision-section .about-stats.services-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* the Sectors page opens with the headline knocked out of a photograph, held to
   the same height as the home and about headers */
.sectors-hero {
  position: relative;
  display: grid;
  grid-template-rows: 1fr auto;
  align-content: stretch;
  min-height: 100vh;
  padding-top: clamp(190px, 36vh, 380px);
  padding-bottom: clamp(90px, 17.5vh, 175px);
  background: #040d16 50% 50% / cover no-repeat;
  background-image: var(--hero-image);
  color: #fff;
  overflow: hidden;
}



.sectors-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(3, 8, 14, 0.7) 0%, rgba(3, 8, 14, 0) 28%),
    linear-gradient(0deg, rgba(3, 8, 14, 0.9) 0%, rgba(3, 8, 14, 0.56) 42%, rgba(3, 8, 14, 0.18) 70%, rgba(3, 8, 14, 0) 86%);
  pointer-events: none;
}

.sectors-hero-inner {
  position: relative;
  z-index: 1;
  align-self: start;
  transform: none;
  width: var(--container);
  margin: 0 auto;
  padding-left: clamp(22px, 4vw, 80px);
  padding-right: clamp(22px, 4vw, 80px);
}

.sectors-hero-type {
  margin: 0;
  max-width: 860px;
  color: #fff;
}


.sectors-hero-base {
  position: relative;
  z-index: 1;
  align-self: end;
  width: var(--container);
  margin: 0 auto;
  padding: 0 clamp(22px, 4vw, 80px);
}

.sectors-hero-foot {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  column-gap: clamp(24px, 3vw, 56px);
  row-gap: 18px;
  align-items: start;
  padding-top: 26px;
}


/* the sectors read as one line of text, two lines deep, each name a link to its row */
.sectors-hero-index {
  display: block;
  max-width: min(100%, 1000px);
  color: rgba(255, 255, 255, 0.4);
  font-size: clamp(1rem, 1.36vw, 1.3rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.45;
  text-wrap: balance;
}

.sectors-hero-index a {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 2px;
  text-underline-offset: 5px;
  white-space: nowrap;
  transition: color 160ms ease, text-decoration-color 160ms ease;
}

.sectors-hero-index a:not(:last-child)::after {
  content: ",";
  display: inline-block;
  color: rgba(255, 255, 255, 0.4);
}

.sectors-hero-index a:hover,
.sectors-hero-index a:focus-visible {
  color: var(--accent-blue);
  text-decoration-color: var(--accent-blue);
}

@media (max-width: 900px) {
  .sectors-hero-foot {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* phones: copy starts just under the header and the sector tags follow it
   directly, so the whole masthead fits instead of being pushed off-screen */
@media (max-width: 759px) {
  .sectors-hero {
    grid-template-rows: auto auto;
    align-content: center;
    min-height: 100svh;
    padding-top: 104px;
    padding-bottom: 48px;
  }

  .sectors-hero-type {
    font-size: clamp(1.9rem, 8.6vw, 2.5rem);
    line-height: 1.08;
  }

  .sectors-hero .about-lede {
    margin-top: 14px;
    font-size: 1.05rem;
  }

  .sectors-hero-base {
    align-self: start;
  }

  .sectors-hero-foot {
    padding-top: 22px;
  }

}


/* the About page opens with this section, so its copy has to clear the header,
   which stands a fixed height tall rather than scaling with the viewport */
.about-hero {
  /* the copy and figures sit in the middle of the band, never higher than the header logo allows */
  justify-content: center;
  gap: clamp(48px, 7vh, 120px);
  padding-top: calc(var(--header-logo-clearance) + 152px + clamp(40px, 5vh, 96px));
  padding-bottom: clamp(64px, 9vh, 160px);
}

.about-hero .precision-intro {
  max-width: 880px;
}

.services-hero {
  position: relative;
  overflow: hidden;
  background-image: var(--hero-image);
  background-size: cover;
  background-position: center;
  color: #fff;
}

.services-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(1, 8, 15, 0.94) 0%, rgba(1, 8, 15, 0) 100%);
}

.services-hero > * {
  position: relative;
  z-index: 1;
}

.services-hero h1,
.services-hero .about-lede,
.services-hero .precision-intro .eyebrow {
  color: #fff;
}

.services-hero .hero-stats dt,
.services-hero .hero-stats dd {
  color: #fff;
}

.about-hero h1 {
  max-width: 880px;
  font-weight: var(--weight-light);
}

.about-lede {
  max-width: 46ch;
  margin: 20px 0 0;
  color: rgba(255, 255, 255, 0.78);
  font-weight: var(--weight-light);
  font-size: var(--type-lede);
  line-height: 1.24;
}

.precision-section .about-stats {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: clamp(56px, 6vw, 112px);
  margin-bottom: 0;
}

.precision-section .about-stats div {
  padding-top: 18px;
  border-color: rgba(255, 255, 255, 0.18);
}

.precision-section .about-stats dd {
  color: #fff;
  font-size: clamp(2rem, 3.2vw, 3.4rem);
}

.precision-section .about-stats dt {
  color: rgba(255, 255, 255, 0.6);
  font-size: 0.76rem;
}

/* ---------- Services page ---------- */
/* the Services opening is the site's dark navy masthead */
.services-hero {
  background-color: var(--navy);
}

.services-hero::after {
  background: none;
}

.services-hero h1 {
  max-width: 740px;
}

.precision-section .about-stats.services-stats {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.precision-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(32px, 4vw, 80px);
}

.precision-grid article {
  display: flex;
  flex-direction: column;
}

.precision-grid span {
  margin-bottom: auto;
  color: var(--green);
  font-size: 0.82rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  font-variant-numeric: tabular-nums;
}

.precision-grid h5 {
  margin: 0 0 14px;
  color: #fff;
  font-size: clamp(1.35rem, 1.8vw, 1.8rem);
  line-height: 1.1;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-body);
}

.precision-section .precision-grid p {
  max-width: 34ch;
  color: #fff;
  font-size: clamp(1.05rem, 1.3vw, 1.25rem);
  line-height: 1.5;
}

/* ---------- Band backgrounds (page rhythm) ---------- */
.deals-section,
.services-section,
.resources-section {
  background: var(--paper);
}

/* ---------- Services ---------- */
.services-layout {
  display: grid;
  grid-template-columns: minmax(280px, 0.72fr) minmax(440px, 1fr);
  gap: clamp(48px, 7vw, 104px);
  align-items: start;
}

.services-head {
  position: sticky;
  top: 96px;
}

.services-lede {
  max-width: 320px;
  color: var(--muted);
  font-size: var(--type-body-lg);
}

.service-lanes {
  border-top: 1px solid var(--line-strong);
}

.service-lane {
  position: relative;
  display: grid;
  grid-template-columns: 44px 1fr auto;
  gap: 28px;
  align-items: center;
  padding: 30px 16px 30px 0;
  border-bottom: 1px solid var(--line);
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  transition: padding-left var(--duration-fast) var(--ease-smooth-out), background var(--duration-fast) var(--ease-smooth-out);
}

.service-lane::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  background: var(--ghost);
  opacity: 0;
  transition: opacity var(--duration-fast) var(--ease-smooth-out);
  z-index: -1;
}

.service-lane:hover {
  padding-left: 20px;
}

.service-lane:hover::before {
  opacity: 1;
}

.lane-num {
  align-self: start;
  padding-top: 4px;
  color: var(--green);
  font-size: 0.82rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  font-variant-numeric: tabular-nums;
}

.lane-body h5 {
  margin: 0 0 8px;
  color: var(--navy);
  font-size: clamp(1.3rem, 1.9vw, 1.7rem);
  line-height: 1.12;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-lede);
}

.lane-body p {
  margin: 0;
  max-width: 46ch;
  color: var(--muted);
}

.lane-arrow {
  align-self: center;
  color: var(--faint);
  font-size: 1.4rem;
  line-height: 1;
  transition: transform var(--duration-fast) var(--ease-smooth-out), color var(--duration-quick) var(--ease-in-out);
}

.service-lane:hover .lane-arrow {
  transform: translateX(6px);
  color: var(--navy);
}

/* ---------- Network ---------- */
.network-section {
  border-top: 1px solid var(--line);
}

.network-copy p {
  margin-bottom: 28px;
}

.network-visual {
  aspect-ratio: 1.2 / 1;
}

/* ---------- Sectors ---------- */
.sector-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.sector-grid li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 76px;
  padding: 20px 22px;
  border-radius: var(--radius);
   corner-shape: squircle;
  background: var(--ghost);
  color: var(--navy);
  font-size: 1.125rem;
  font-weight: var(--weight-medium);
  cursor: default;
  transition: background var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out),
    box-shadow var(--duration-fast) var(--ease-smooth-out);
}

.sector-grid li:hover {
  background: var(--paper);
  transform: translateY(-2px);
  box-shadow: var(--shadow-border);
}

.sector-grid li:hover .sector-arrow {
  opacity: 1;
  transform: translateX(0);
  color: var(--green);
}

.sector-arrow {
  opacity: 0;
  transform: translateX(-8px);
  font-size: 1.1rem;
  color: var(--green);
  transition: opacity var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out),
    color var(--duration-fast) var(--ease-in-out);
}

.sectors-section {
  background: var(--ghost);
}

@media (min-width: 541px) {
  .sectors-section .section-heading {
    /* 0.88fr -> 1.55fr widens the heading column by ~30% (500px -> ~650px) */
    grid-template-columns: minmax(280px, 1.55fr) minmax(360px, 1fr);
    column-gap: clamp(56px, 8vw, 112px);
  }
}

.sectors-section .sectors-intro {
  grid-column: 1;
  grid-row: 3;
  margin: 0;
  max-width: 572px;
  letter-spacing: var(--tracking-lede);
}

/* ---------- Sectors carousel — photo cards ---------- */
.sc-rail {
  --sc-inset: calc(var(--gutter) + clamp(22px, 4vw, 80px));
  /* the rail stops short of the viewport edge; the scroller makes up the rest of the inset */
  --sc-edge: clamp(20px, 3vw, 56px);
  position: relative;
  padding-inline: var(--sc-edge);
  margin: clamp(56px, 6vw, 112px) calc(var(--gutter) * -1) 0;
}

.sc-carousel {
  cursor: grab;
}

.sc-carousel.is-dragging {
  cursor: grabbing;
  user-select: none;
}

.sc-carousel {
  display: flex;
  gap: clamp(30px, 3vw, 46px);
  overflow-x: auto;
  /* overflow-x:auto clips vertically too, so this padding is what gives the card
     shadows room to show */
  padding: 4px calc(var(--sc-inset) - var(--sc-edge)) 56px;
  scroll-padding-inline: calc(var(--sc-inset) - var(--sc-edge));
  scrollbar-width: none;
  /* a short fade inside the inset, so cards at rest start fully opaque on the content edge */
  --sc-fade: min(clamp(24px, 2.5vw, 64px), calc(var(--sc-inset) - var(--sc-edge)));
  -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--sc-fade), #000 calc(100% - var(--sc-fade)), transparent);
  mask-image: linear-gradient(to right, transparent, #000 var(--sc-fade), #000 calc(100% - var(--sc-fade)), transparent);
}

.sc-carousel::-webkit-scrollbar {
  display: none;
}

.sc-slide {
  position: relative;
  isolation: isolate;
  flex: 0 0 auto;
  width: min(380px, 80vw);
  height: auto;
  aspect-ratio: 2 / 3;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 44px clamp(20px, 2vw, 30px) 30px;
  border: 10px solid #fff;
  border-radius: 36px;
  corner-shape: squircle;
  /* the same scale as the Recent deals cards, so the two rails match */
  zoom: 0.7695;
  background: var(--navy);
  box-shadow:
    0 0 0 1px rgba(0, 40, 72, 0.05),
    0 12px 28px -6px rgba(0, 40, 72, 0.26),
    0 32px 64px -16px rgba(0, 40, 72, 0.2);
  transition: box-shadow var(--duration-fast) var(--ease-smooth-out);
}

.sc-slide:hover {
  box-shadow:
    0 0 0 1px rgba(0, 40, 72, 0.06),
    0 14px 30px -10px rgba(0, 40, 72, 0.26),
    0 36px 72px -20px rgba(0, 40, 72, 0.22);
}

.sc-photo {
  position: absolute;
  z-index: 0;
  inset: 0;
  display: block;
}

.sc-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* even darkening at rest rather than a gradient overlay */
  filter: brightness(0.7);
}

/* A blurred copy of the card's own photo. It cannot be a backdrop filter: a mask
   has no effect on one, so the blur would run the full height of the card. */
.sc-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--sc-photo, none) center / cover no-repeat;
  filter: brightness(0.7) blur(24px);
  /* the scale hides the soft edge a blur leaves inside the card */
  transform: scale(1.18);
  opacity: 0;
  transition: opacity 0.4s var(--ease-smooth-out);
  /* the blur sits behind the copy at the top and clears toward the arrow */
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 62%, transparent 92%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 62%, transparent 92%);
}

.sc-slide:hover .sc-photo::after,
.sc-slide:has(:focus-visible) .sc-photo::after {
  opacity: 1;
}

.sc-scrim {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: block;
  opacity: 0;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.42) 0%, rgba(255, 255, 255, 0.36) 60%, rgba(255, 255, 255, 0) 92%);
  transition: opacity 0.4s var(--ease-smooth-out);
}

.sc-slide:hover .sc-scrim,
.sc-slide:has(:focus-visible) .sc-scrim {
  opacity: 1;
}

.sc-line,
.sc-foot {
  position: relative;
  z-index: 2;
}

/* the block colour carries the clamp's ellipsis, so it stays clear until the sentence
   shows and then turns black to match it; the name paints itself white on top */
.sc-line {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 11;
  overflow: hidden;
  margin: 16px 0 0;
  color: transparent;
  transition: color 0.4s var(--ease-smooth-out);
  font-size: 1.64rem;
  font-weight: var(--weight-semibold);
  letter-spacing: -0.03em;
  line-height: 1.24;
}

.sc-name {
  color: #fff;
  font-weight: 700;
}

.sc-desc {
  color: #000;
  opacity: 0;
  transition: opacity 0.4s var(--ease-smooth-out);
}

.sc-slide:hover .sc-desc,
.sc-slide:has(:focus-visible) .sc-desc {
  opacity: 1;
}

.sc-slide:hover .sc-line,
.sc-slide:has(:focus-visible) .sc-line {
  color: #000;
}

/* set by the measuring script: a one-line headline puts the sentence on its own line */


.sc-foot {
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
  margin-top: auto;
}

.sc-go {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #fff;
  color: var(--azure);
  font-size: 1.05rem;
  line-height: 1;
  text-decoration: none;
  /* raised by its cast shadow alone */
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.4),
    0 8px 18px rgba(0, 0, 0, 0.5);
  transition: background-color var(--duration-fast) var(--ease-smooth-out), color var(--duration-fast) var(--ease-smooth-out);
}

.sc-go:hover {
  background: var(--accent-blue);
  color: #fff;
}

@media (prefers-reduced-motion: reduce) {
  .sc-scrim,
  .sc-line,
  .sc-desc,
  .sc-go {
    transition: none;
  }
}

@media (max-width: 540px) {
  .sc-rail {
    --sc-inset: 0px;
    --sc-edge: 0px;
    margin-left: 0;
    margin-right: 0;
  }
}

/* ---------- For independent M&A firms ---------- */
.mna-section {
  display: flex;
  align-items: center;
  min-height: 100vh;
  /* the same deep blue the Market intelligence wash produces over navy */
  background: linear-gradient(180deg, #001f3a 0%, #00192e 100%);
  color: #fff;
}

.mna-section h1,
.mna-section h2,
.mna-section h3,
.mna-section h5 {
  color: #fff;
}

.mna-copy .eyebrow {
  margin-bottom: 18px;
}

.mna-copy .button {
  margin-top: 28px;
}

.mna-copy p:not(.eyebrow) {
  max-width: 440px;
  margin: 0;
  color: rgba(255, 255, 255, 0.78);
  font-size: 1.125rem;
}

/* Neighbour study band (lab 03) on the home page */
.mna-lab {
  position: relative;
  width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(300px, 1fr) minmax(320px, 1.05fr);
  gap: 0;
  align-items: center;
  min-height: 88vh;
  padding: clamp(40px, 5vw, 72px) 0 clamp(48px, 6vw, 88px);
}

.mna-lab .eyebrow {
  margin-bottom: 18px;
}

.mna-lab p:not(.eyebrow) {
  max-width: 620px;
  margin: 36px 0 30px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 1.125rem;
}

.mna-lab-copy {
  position: relative;
  z-index: 1;
  pointer-events: none;
}

.mna-lab-copy a {
  pointer-events: auto;
}

.mna-lab-art {
  position: relative;
  aspect-ratio: 1 / 1;
}

.mna-lab-art::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 50%, rgba(31, 163, 209, 0.1), rgba(0, 40, 72, 0) 68%);
}

.mna-lab-art canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: grab;
  touch-action: none;
}

.mna-lab-art canvas:active {
  cursor: grabbing;
}

.mna-lab-art.is-full {
  position: absolute;
  top: 0;
  bottom: 0;
  left: calc(-1 * var(--gutter));
  right: calc(-1 * var(--gutter));
  aspect-ratio: auto;
  z-index: 0;
}

.mna-lab-art.is-full::after {
  display: none;
}

/* the full-bleed artwork fills the whole blue section, top to bottom, not just the content box */
.mna-section {
  position: relative;
  overflow: hidden;
}

.mna-section .mna-lab:has(.mna-lab-art.is-full) {
  position: static;
}

.mna-section .mna-lab-art.is-full {
  left: 0;
  right: 0;
}

@media (max-width: 900px) {
  .mna-lab {
    grid-template-columns: 1fr;
    min-height: 100svh;
  }

  .mna-lab-art {
    aspect-ratio: 4 / 3;
  }

  .mna-section .mna-lab:has(.mna-lab-art.is-full) {
    align-content: center;
  }

  /* stacked: the network sits off to the right and fades out behind the copy */
  .mna-section .mna-lab-art.is-full {
    left: 40%;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 35%);
    mask-image: linear-gradient(90deg, transparent, #000 35%);
  }
}

/* ---------- Resources ---------- */
.resources-head {
  margin-bottom: 56px;
}

.resources-lede {
  max-width: 460px;
  color: var(--muted);
  font-size: var(--type-body-lg);
}

.resource-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-auto-rows: 1fr;
  gap: 16px;
}

.resource-card {
  display: grid;
  grid-template-columns: 48px 1fr auto;
  gap: 28px;
  align-items: start;
  padding: 40px 36px;
  background: var(--ghost);
  border-radius: var(--radius);
   corner-shape: squircle;
  transition: background var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out),
    box-shadow var(--duration-fast) var(--ease-smooth-out);
}

.resource-card:hover {
  background: var(--paper);
  transform: translateY(-4px);
  box-shadow: var(--shadow-lift);
}

.resource-num {
  color: var(--green);
  font-size: 0.82rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  font-variant-numeric: tabular-nums;
  padding-top: 4px;
}

.resource-body h5 {
  margin: 0 0 10px;
  color: var(--navy);
  font-size: clamp(1.3rem, 1.9vw, 1.7rem);
  line-height: 1.12;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-lede);
}

.resource-body p {
  margin: 0;
  max-width: 42ch;
  color: var(--muted);
  font-size: 0.96rem;
  line-height: 1.45;
}

.resource-arrow {
  align-self: center;
  color: var(--faint);
  font-size: 1.4rem;
  line-height: 1;
  transition: transform var(--duration-fast) var(--ease-smooth-out), color var(--duration-quick) var(--ease-in-out);
}

.resource-card:hover .resource-arrow {
  transform: translateX(6px);
  color: var(--navy);
}

/* ---------- Contact ---------- */
.contact-section {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 140px clamp(28px, 7vw, 92px);
  overflow: hidden;
  background: var(--navy);
  color: #fff;
}

.contact-section h1,
.contact-section h2,
.contact-section h3 {
  color: #fff;
}

.contact-section::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, rgba(0, 24, 44, 0.96) 0%, rgba(0, 28, 52, 0.82) 50%, rgba(0, 40, 72, 0.5) 100%);
}

.contact-inner {
  position: relative;
  z-index: 1;
  width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(320px, 1.1fr) minmax(240px, 0.9fr);
  gap: clamp(64px, 9vw, 140px);
  align-items: center;
}

.contact-eyebrow {
  margin-bottom: 32px;
}

.contact-content p:not(.eyebrow) {
  margin-bottom: 52px;
  max-width: 500px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 1.125rem;
  line-height: 1.7;
}

.contact-content .button-primary {
  background: var(--accent-blue);
  color: #fff;
}

.contact-content .button-primary:hover {
  background: var(--green);
}

.contact-points {
  display: grid;
  gap: 0;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.contact-point {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 36px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.contact-point-num {
  color: #fff;
  font-size: clamp(2rem, 3vw, 2.8rem);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-lede);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  min-width: 100px;
}

.contact-point-label {
  color: rgba(255, 255, 255, 0.55);
  font-size: 0.84rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-label);
  line-height: 1.4;
}

/* ---------- Footer ---------- */
.site-footer {
  display: grid;
  gap: 64px;
  padding: 72px max(28px, calc((100vw - 1180px) / 2)) 72px;
  background: #FFFFFF;
  color: var(--muted);
  font-size: 0.94rem;
}

.footer-brand p {
  max-width: 420px;
  line-height: 1.65;
  margin-bottom: 32px;
}

.footer-cols {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 44px 32px;
}

.footer-contact {
  grid-column: 1 / -1;
}

.footer-contact {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-style: normal;
  line-height: 1.6;
}

.footer-addr {
  margin-bottom: 22px;
  line-height: 1.5;
  font-weight: 600;
  font-size: 1.2em;
  color: #000;
}

.footer-detail {
  color: var(--azure);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color var(--duration-quick) var(--ease-in-out);
}

a.footer-detail:hover {
  color: var(--navy);
}

.footer-col {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.footer-col h5 {
    margin: 0 0 12px;
    color: rgba(0, 0, 0, 0.9);
    font-size: 1.1rem;
    font-weight: var(--weight-semibold);
}

.footer-col h5 a {
  color: inherit;
  font: inherit;
}

.footer-col h5 a:hover {
  color: var(--green);
}

.footer-col a {
  color: var(--muted);
  font-size: 0.98rem;
  transition: color var(--duration-quick) var(--ease-in-out);
}

.footer-col a:hover {
  color: var(--green);
}

/* the last footer column: the headings that need no links of their own (Deals, Join, Contact), in the
   headings' bold, the first level with the other headings and the rest on the link rows beside them */
.footer-col--stack {
  padding-top: 0;
}

.footer-col--stack a {
  color: rgba(0, 0, 0, 0.9);
  font-size: 1.1rem;
  font-weight: var(--weight-semibold);
}

.footer-col--stack a:hover {
  color: var(--green);
}

/* the policy links: one slim line across the foot of the footer */
.footer-legal {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 28px;
  padding-top: 24px;
  border-top: 1px solid var(--line-strong);
}

.footer-legal a {
  color: rgba(0, 0, 0, 0.9);
  font-size: 0.9rem;
  font-weight: var(--weight-semibold);
}

.footer-legal a:hover {
  color: var(--green);
}

@media (min-width: 961px), (min-width: 901px) and (min-height: 1100px) {
  .footer-cols {
    grid-template-columns: repeat(12, minmax(0, 1fr));
    column-gap: 32px;
    row-gap: 48px;
    align-items: start;
  }

  .footer-contact {
    grid-column: 1 / span 4;
  }

  .footer-col {
    grid-column: span 2;
  }

  .footer-col[aria-label="About"] { grid-column: 1 / span 2; }
  .footer-col[aria-label="Network"] { grid-column: 3 / span 2; }
  .footer-col[aria-label="Services"] { grid-column: 5 / span 2; }
  .footer-col[aria-label="Sectors"] {
    grid-column: 7 / span 4;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 32px;
    row-gap: 8px;
  }
  .footer-col[aria-label="Sectors"] h5 { grid-column: 1 / -1; }
  .footer-col[aria-label="Deals"] { grid-column: 11 / span 2; }
  .footer-col--stack { grid-column: 11 / span 2; }
  .footer-col[aria-label="Insights"] { grid-column: 1 / span 2; }
  .footer-col[aria-label="Join CapFive"] { grid-column: 3 / span 2; }
  .footer-col[aria-label="Contact"] { grid-column: 5 / span 2; }
  .footer-col[aria-label="Policies"] { grid-column: 7 / span 2; }
}

.footer-logo {
  display: inline-block;
  margin-bottom: 36px;
}

.footer-logo img {
  margin-left: -22px;
  width: 96px;
}

.footer-social {
  display: flex;
  gap: 12px;
}

.footer-social a {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  border: 1px solid var(--line-strong);
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-body);
  transition: background var(--duration-quick) var(--ease-in-out), color var(--duration-quick) var(--ease-in-out), border-color var(--duration-quick) var(--ease-in-out),
    scale var(--duration-quick) var(--ease-smooth-out);
}

.footer-social a:hover {
  background: var(--paper);
  border-color: var(--navy);
  color: var(--navy);
}

.footer-social a:active {
  scale: 0.96;
}


/* ---------- Scroll reveal animations ---------- */
.reveal {
  opacity: 1;
  transform: none;
  filter: none;
}

.reveal.in {
  opacity: 1;
  transform: none;
  filter: none;
}

@keyframes t-digit-pop-in {
  0% {
    transform: translate(
      calc(var(--digit-distance) * var(--digit-dir-x)),
      calc(var(--digit-distance) * var(--digit-dir-y))
    );
    opacity: 0;
    filter: blur(var(--digit-blur));
  }
  100% {
    transform: translate(0, 0);
    opacity: 1;
    filter: blur(0);
  }
}

.t-digit-group {
  display: inline-flex;
  align-items: baseline;
}

.t-digit {
  display: inline-block;
  will-change: transform, opacity, filter;
}

.t-digit-group:not(.is-animating) .t-digit {
  opacity: 0;
}

.t-digit-group.is-animating .t-digit {
  animation: t-digit-pop-in var(--digit-dur) var(--digit-ease) both;
}

.t-digit-group.is-animating .t-digit[data-stagger="1"] {
  animation-delay: var(--digit-stagger);
}

.t-digit-group.is-animating .t-digit[data-stagger="2"] {
  animation-delay: calc(var(--digit-stagger) * 2);
}

@media (prefers-reduced-motion: reduce) {
  .t-digit-group .t-digit {
    animation: none !important;
  }
}

:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

.page-head {
  width: var(--container);
  margin: 0 auto;
  padding: max(var(--page-top), calc(var(--header-logo-clearance) + 300px)) 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
  gap: 28px 72px;
  align-items: end;
}

.page-head .eyebrow {
  grid-column: 1 / -1;
  margin-bottom: 0;
}

.page-head h1 {
  max-width: 16ch;
  margin-bottom: 0;
  color: var(--navy);
  font-size: clamp(2.6rem, 4.6vw, 4.6rem);
  font-weight: var(--weight-light);
  line-height: 0.98;
  letter-spacing: var(--tracking-display);
  text-wrap: balance;
}

.page-head-brand {
  display: grid;
  gap: 40px;
  justify-items: start;
}

.page-head-brand img {
  height: 76px;
  width: auto;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
}

.single-firm .page-head-brand img {
  height: clamp(60px, 7vw, 100px);
  width: auto;
  max-width: min(100%, 240px);
  object-fit: contain;
  object-position: left center;
}

.single-firm .deals-grid {
  grid-template-columns: repeat(3, minmax(0, 325px));
  justify-content: start;
  gap: 30px;
  padding-left: 0;
  padding-right: 0;
}

@media (max-width: 1100px) {
  .single-firm .deals-grid {
    grid-template-columns: repeat(2, minmax(0, 325px));
  }
}

@media (max-width: 600px) {
  .single-firm .deals-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.page-head-stacked {
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 28px;
}

.page-head-stacked h1 {
  font-size: clamp(2.1rem, 3.5vw, 3.4rem);
}

.page-head .lede {
  max-width: 44ch;
  color: var(--navy);
  font-size: var(--type-lede);
  line-height: 1.34;
  letter-spacing: var(--tracking-lede);
}

.page-section {
  width: var(--container);
  margin: 0 auto;
  padding: var(--section-y) 0 0;
}

.page-section:last-child {
  padding-bottom: var(--section-y);
}

.meta-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  margin-top: 72px;
  border-top: 1px solid var(--line-strong);
}

#deals-results,
#sector-transactions-3d-title {
  scroll-margin-top: 140px;
}

.single-deal .meta-list {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 0;
}

.single-deal .meta-list > div {
  border-top: 1px solid var(--line);
  border-bottom: 0;
}

.single-deal .meta-list dt {
  transform: translateY(-52px);
}

.single-deal .meta-list dd {
  transform: translateY(-32px);
}

@media (max-width: 1100px) {
  .single-deal .meta-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .single-deal .meta-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

.meta-list > div {
  padding: 28px 32px 28px 0;
  border-bottom: 1px solid var(--line);
}

.meta-list dt {
  color: var(--faint);
  font-size: 0.7rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.meta-list dd {
  margin: 12px 0 0;
  color: var(--navy);
  font-size: clamp(1.05rem, 1.3vw, 1.3rem);
  font-weight: var(--weight-medium);
  line-height: 1.25;
  letter-spacing: var(--tracking-body);
}

/* a firm's offices: one "Offices" item across the facts, each office its city in bold over its address */
.meta-list .meta-offices {
  grid-column: 1 / -1;
}

.meta-offices dd {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  gap: 28px 32px;
}

.meta-city {
  display: block;
  margin-bottom: 4px;
  color: var(--navy);
  font-weight: var(--weight-bold, 700);
}

/* the address lines sit lighter under the bold city */
.meta-offices .meta-address {
  color: var(--muted);
}

/* an office address in the firm page's facts: normal-weight lines, not the italic address default */
.meta-address {
  font-style: normal;
  line-height: 1.45;
}

.meta-list dd a {
  color: var(--accent-blue);
}

.meta-list dd a:hover,
.meta-list dd a:focus-visible {
  color: var(--navy);
  text-decoration: underline;
}

.prose {
  max-width: var(--measure);
  margin-top: 56px;
  color: var(--muted);
  font-size: 1.125rem;
  line-height: 1.7;
}

.prose > * + * {
  margin-top: 20px;
}

/* plain content pages rendered by index.php (terms, privacy) carry raw block markup */
.page-block.is-paper > .block-inner > h1 {
  margin-bottom: clamp(40px, 5vw, 64px);
}

.page-block.is-paper > .block-inner .wp-block-heading {
  margin-top: clamp(48px, 6vw, 80px);
}

.page-block.is-paper > .block-inner .wp-block-heading:first-child {
  margin-top: 0;
}

.page-block.is-paper > .block-inner .wp-block-paragraph,
.page-block.is-paper > .block-inner .wp-block-list {
  margin-top: 18px;
}

.page-block.is-paper > .block-inner .wp-block-list li + li {
  margin-top: 10px;
}

.deal-parties {
  position: relative;
  overflow: hidden;
  margin-top: 56px;
  padding: 44px;
  background: var(--paper);
  border-radius: var(--radius-md);
   corner-shape: squircle;
  box-shadow: var(--shadow-border);
}

.deal-parties::before {
  content: "";
  position: absolute;
  top: 36%;
  right: 0;
  width: 540px;
  height: 540px;
  transform: translate(52%, -50%);
  background: url(assets/capfive-logo-no-text.svg) no-repeat center / contain;
  filter: grayscale(1);
  opacity: 0.035;
  pointer-events: none;
}

.deal-card-label {
  position: relative;
  margin: 0 0 32px;
  padding: 0;
  color: var(--accent-blue);
  font-size: 0.88rem;
  font-weight: var(--weight-semibold);
  letter-spacing: normal;
  text-transform: uppercase;
  text-align: center;
}

.deal-adviser {
  margin-top: 44px;
  padding-top: 28px;
  display: grid;
  justify-items: center;
  gap: 14px;
}

.deal-adviser::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  width: 72px;
  height: 2px;
  transform: translateX(-50%);
  background: var(--accent-blue);
}

.deal-adviser img {
  max-width: 150px;
  max-height: 76px;
  object-fit: contain;
}

.deal-adviser span {
  color: var(--faint);
  font-size: 0.74rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  text-align: center;
}

.deal-parties .deal-party span {
  text-align: center;
  padding: 10px 0;
  letter-spacing: normal;
}

.deal-parties > * {
  position: relative;
}

.deal-parties .deal-party {
  display: grid;
  justify-items: center;
  grid-template-rows: 88px auto 88px;
  gap: 16px;
}

.deal-parties .deal-party img {
  width: 176px;
  height: 88px;
  object-fit: contain;
}

.deal-parties .deal-party-name {
  align-self: center;
  color: var(--navy);
  font-weight: var(--weight-semibold);
  text-align: center;
}

.deal-body {
  display: grid;
  grid-template-columns: minmax(0, 1.58fr) minmax(0, 0.42fr);
  gap: 40px 64px;
  align-items: start;
}

.deal-body .prose,
.deal-body .deal-parties {
  margin-top: 0;
}

/* the single deal page shares the site's content inset and clears the masthead */
@media (max-width: 2199px) {
  .single-deal .page-head,
  .single-deal .page-section,
  .single-firm .page-head,
  .single-firm .page-section,
  .author .page-head,
  .author .page-section {
    padding-left: clamp(22px, 4vw, 80px);
    padding-right: clamp(22px, 4vw, 80px);
  }
}

.single-deal .page-head,
.single-firm .page-head {
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  padding-top: max(var(--page-top), calc(var(--header-logo-clearance) + 300px));
}

/* firm and deal mastheads and their details sit on white */
.head-white {
  background: #fff;
}

.split-title strong {
  font-weight: 300;
}

.split-title span {
  font-weight: 700;
}

/* on desktop the two-weight headings run the full content width, so a long sector name stays on one line */
@media (min-width: 1101px) {
  .section-heading .split-title {
    max-width: none;
  }
}

/* deal cards added by "More deals" slide down into place */
@keyframes capfive-arrive {
  from { opacity: 0; transform: translateY(-24px); }
  to { opacity: 1; transform: none; }
}

.deal-card.is-arriving {
  animation: capfive-arrive 520ms var(--ease-smooth-out) both;
  animation-delay: var(--arrive, 0ms);
}

@media (prefers-reduced-motion: reduce) {
  .deal-card.is-arriving { animation: none; }
}

/* the "More deals" trigger is a button styled as the site's text link */
.section-more button.text-link {
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  font-size: 0.74rem;
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  cursor: pointer;
}

/* room between the members grid and the grey deals section below */
.single-firm .firm-members {
  padding-bottom: clamp(96px, 10vw, 160px);
}

/* a firm's members run five to a row on wide screens; narrower screens use the board grid's steps */
@media (min-width: 1101px) {
  .single-firm .board-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

/* half the usual gap between the masthead and its details */
.head-white .page-head + .page-section {
  padding-top: 28px;
}

/* firm, deal and member mastheads sit half as far below the header */
.single-firm .page-head,
.single-deal .page-head,
.author .page-head {
  padding-top: calc(max(var(--page-top), calc(var(--header-logo-clearance) + 300px)) / 2);
}

.single-deal .page-head h1,
.single-firm .page-head h1 {
  max-width: 30ch;
  font-size: clamp(3rem, 5.2vw, 5.2rem);
}

/* a deal's client and counterparty in its facts: the company's logo over its name */
.meta-party dd {
  display: grid;
  justify-items: start;
  gap: 10px;
}

.meta-party-logo {
  display: block;
  width: auto;
  height: 44px;
  max-width: 200px;
  object-fit: contain;
  object-position: left center;
  mix-blend-mode: multiply;
}

/* the verb in a deal's headline is set bold against the light names */
.deal-title strong {
  font-weight: var(--weight-semibold);
}

/* deal titles are often a whole sentence, so they set a size smaller than a firm's name */
.single-deal .page-head h1 {
  max-width: 28ch;
  font-size: clamp(2.4rem, 4vw, 4rem);
}

/* the CapFive rings, large and faint, bleeding off the bottom-right of the deal masthead */
.single-deal .head-white {
  position: relative;
  overflow: hidden;
}

.single-deal .head-white .page-section {
  margin-top: 16px;
  padding-top: 0;
  padding-bottom: clamp(48px, 5vw, 80px);
}

.single-deal section[aria-labelledby="members-title"] {
  padding-bottom: clamp(48px, 5vw, 80px);
}

.single-deal .head-white > :not(.deal-head-watermark) {
  position: relative;
  z-index: 1;
}

.deal-head-watermark {
  position: absolute;
  right: -24vw;
  bottom: -16vw;
  z-index: 0;
  width: min(57vw, 990px);
  height: auto;
  opacity: 0.04;
  pointer-events: none;
}

/* the announcement card carries the party logos, so it needs more of the row */
.single-deal .deal-body {
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
}

/* the heading spans the row, so the text and the tombstone beside it start level */
.single-deal .deal-body > h2 {
  grid-column: 1 / -1;
  margin: 0 0 8px;
}

/* the deal page's last rail needs room before the band that follows it */
.single-deal section[aria-labelledby="sector-deals-title"] {
  padding-bottom: clamp(140px, 16vh, 200px);
}

/* the deal page's membership band: the photograph fills the section, the copy sits on it */
.member-band {
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  display: grid;
  align-content: center;
  min-height: min(92vh, 980px);
  padding: clamp(80px, 10vh, 160px) 0;
  background: #040d16 url(assets/images/office2.png) 50% 50% / cover no-repeat;
  color: #fff;
  overflow: hidden;
}

.member-band::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(3, 10, 18, 0.64) 0%, rgba(3, 10, 18, 0.4) 46%, rgba(3, 10, 18, 0.06) 100%);
  pointer-events: none;
}

.member-band-inner {
  position: relative;
  z-index: 1;
  width: var(--container);
  margin: 0 auto;
  padding-left: var(--pad-x, clamp(22px, 4vw, 80px));
  padding-right: var(--pad-x, clamp(22px, 4vw, 80px));
}

.member-band h2 {
  margin: 0 0 18px;
  max-width: 22ch;
  color: #fff;
}

.member-band .member-band-lede {
  max-width: 46ch;
  margin: 0 0 56px;
  color: rgba(255, 255, 255, 0.78);
  font-size: var(--type-body-lg, 1.05rem);
  line-height: 1.65;
}

/* the deal body copy runs a tenth tighter than its column */
.single-deal .deal-body .prose p {
  max-width: 90%;
}

.deal-aside {
  display: grid;
  gap: 44px;
}

.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.deal-tag {
  display: inline-block;
  padding: 7px 13px;
  border-radius: 999px;
  background: var(--accent-blue);
  color: #fff;
  font-size: 0.68rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  text-decoration: none;
  transition: background var(--duration-quick) var(--ease-smooth-out),
    color var(--duration-quick) var(--ease-smooth-out);
}

.deal-tag:hover,
.deal-tag:focus-visible {
  background: var(--green);
  color: var(--navy);
}

/* ---------- Deal tombstone and admin card, beside the deal's heading ---------- */
/* the tombstone and the editors' buttons sit in the right-hand column of Deal details */
.deal-side {
  width: 100%;
  max-width: 340px;
  justify-self: end;
  /* the tombstone's own sizes are proportions of this column */
  container-type: inline-size;
  display: grid;
  gap: 20px;
  align-content: start;
}

/* the tombstone and its chrome stand, saved together as one image */
.deal-tomb-piece {
  display: grid;
  justify-items: center;
  padding: 4px 0 18px;
}

/* the deal as the desk tombstone bankers hand out at closing: a clear acrylic
   block, centred and engraved in navy, the CapFive mark faint in the corner */
.deal-tomb {
  width: 92%;
  --svc: var(--azure);
  position: relative;
  container-type: inline-size;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3cqw;
  aspect-ratio: 1 / 1.4142;
  margin: 0;
  padding: 9cqw 7cqw 8cqw;
  overflow: hidden;
  border-radius: 1.4cqw;
  color: var(--navy);
  text-align: center;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.96) 0%, rgba(240, 245, 250, 0.9) 55%, rgba(226, 235, 244, 0.92) 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.95),
    inset 1.6cqw 1.6cqw 0 -1.2cqw rgba(255, 255, 255, 0.9),
    inset -1.6cqw -1.6cqw 0 -1.2cqw rgba(0, 40, 72, 0.08),
    0 0 0 1px rgba(0, 40, 72, 0.07),
    0 1px 2px rgba(0, 40, 72, 0.06),
    0 18px 34px -18px rgba(0, 40, 72, 0.28);
}

.deal-tomb--buy { --svc: var(--green); }
.deal-tomb--equity { --svc: var(--accent-blue); }
.deal-tomb--debt { --svc: var(--navy); }

/* the light catching the acrylic */
.deal-tomb::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(115deg, transparent 38%, rgba(255, 255, 255, 0.7) 46%, transparent 54%);
  opacity: 0.55;
}

/* the service colour lives only in the block's lit edge */
.deal-tomb::after {
  content: "";
  position: absolute;
  left: 0;
  top: 6%;
  bottom: 6%;
  width: 0.9cqw;
  border-radius: 1cqw;
  background: var(--svc);
  opacity: 0.35;
}

.deal-tomb > * {
  position: relative;
  margin: 0;
}

.deal-tomb .deal-tomb-mark {
  position: absolute;
  width: 104cqw;
  right: -45cqw;
  bottom: -35cqw;
  opacity: 0.06;
  pointer-events: none;
}

.deal-tomb-name {
  font-size: 8.8cqw;
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  text-wrap: balance;
}

/* the two companies' logos: each fills a 62 x 14 box, so a wide wordmark grows to the width and a square mark to the height */
.deal-tomb-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 62cqw;
  height: 14cqw;
}

.deal-tomb-logo.is-squarish {
  height: 21cqw;
}

.deal-tomb-logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.deal-tomb-verb {
  font-size: 4.9cqw;
  font-weight: 300;
  line-height: 1.3;
  color: var(--muted);
}

.deal-tomb-rule {
  width: 18cqw;
  height: 1px;
  margin: 1.4cqw 0 4cqw;
  background: rgba(0, 40, 72, 0.22);
}

.deal-tomb-firm {
  display: grid;
  justify-items: center;
  gap: 2cqw;
}

/* the member firm's logo, engraved like the rest */
.deal-tomb-firm-logo {
  display: block;
  width: auto;
  height: 15cqw;
  max-width: 64cqw;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.deal-tomb-firm b {
  font-size: 4.9cqw;
  font-weight: 700;
  line-height: 1.2;
}

/* the role reads first, over the adviser's logo or name */
.deal-tomb-firm span {
  order: -1;
  margin-bottom: 3.5cqw;
  font-size: 3.9cqw;
  line-height: 1.3;
  color: var(--muted);
}

.deal-tomb-foot {
  margin-top: 1cqw;
  font-size: 3.9cqw;
  font-weight: 500;
  text-transform: uppercase;
  font-variant-numeric: tabular-nums;
}

/* the editors' actions under the tombstone, in the site's own button styles */
.deal-admin {
  display: flex;
  gap: 8px;
}

/* three small buttons on one line under the tombstone */
.deal-admin .button {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 36px;
  padding: 0 10px;
  font-size: 0.72rem;
  letter-spacing: normal;
  text-transform: none;
  white-space: nowrap;
}

.deal-admin-bar {
  width: var(--container);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding-top: var(--page-top);
}

.deal-admin-bar-label {
  margin-right: auto;
  font-size: 0.68rem;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--faint);
}

.deal-admin-bar + .page-head {
  padding-top: 40px;
}

.deal-admin-bar .button {
  min-height: 40px;
  padding: 0 18px;
  font-size: 0.68rem;
}

.button-outline {
  border: 1px solid var(--line-strong);
  background: transparent;
  color: var(--navy);
}

.button-outline:hover {
  border-color: var(--navy);
}

.button-danger {
  border: 1px solid rgba(201, 0, 0, 0.35);
  background: transparent;
  color: var(--danger);
}

.button-danger:hover {
  background: var(--danger);
  border-color: var(--danger);
  color: #fff;
}

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 20px;
}

.card-grid--four {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.deal-section--grey {
  background: #f0f0f0;
  box-shadow: 0 0 0 100vmax #f0f0f0;
  clip-path: inset(0 -100vmax);
  padding-bottom: clamp(48px, 6vw, 80px);
}

.deal-section--white {
  background: var(--paper);
  box-shadow: 0 0 0 100vmax var(--paper);
  clip-path: inset(0 -100vmax);
  padding-top: clamp(140px, 16vh, 200px);
  padding-bottom: clamp(140px, 16vh, 200px);
}

.single-deal .deal-section--grey {
  margin-top: clamp(48px, 7vh, 96px);
  padding-bottom: clamp(80px, 8vw, 120px);
}

/* two white sections in a row (more deals in the sector, then in the region) read as one band */
.deal-section--white + .deal-section--white {
  padding-top: 0;
}

.single-deal section[aria-labelledby="region-deals-title"] {
  background: var(--ghost);
  box-shadow: 0 0 0 100vmax var(--ghost);
  padding-top: clamp(80px, 8vw, 120px);
}

@media (max-width: 1100px) {
  .card-grid--four {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .card-grid--four {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* a lone related card keeps the rail's card width instead of filling the row */
.card-grid > .deal-card {
  max-width: 380px;
}

.member-card {
  position: relative;
  width: 100%;
  max-width: 256px;
  border-radius: var(--radius-md);
  corner-shape: squircle;
  box-shadow: var(--shadow-border);
  transition: box-shadow var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out);
}

/* the deal team card lifts like the deal cards do */
.member-card:hover {
  box-shadow: var(--shadow-lift);
  transform: translateY(-4px);
}

.member-card-inner {
  position: relative;
  border-radius: var(--radius-md);
  corner-shape: squircle;
  overflow: hidden;
  background: #fff;
}

.member-card-photo {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: center 20%;
}

.member-grid {
  grid-template-columns: repeat(auto-fit, 256px);
}

.member-card-body {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  background: #fff;
  border-radius: var(--radius);
  corner-shape: squircle;
  box-shadow: var(--shadow-border);
}

.member-card-text {
  min-width: 0;
}

.member-card-links {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: 8px;
}

.member-card h5 {
  margin-bottom: 0;
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-semibold);
  line-height: 1.1;
  letter-spacing: var(--tracking-lede);
}

.member-card-company {
  margin-top: 2px;
  margin-bottom: 0;
  color: var(--accent-blue);
  font-size: 0.78rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-body);
}

.member-card h5 a,
.member-card-company a {
  color: inherit;
  text-decoration: none;
}

.member-card h5 a:hover,
.member-card-company a:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.member-card-desc {
  margin-top: 2px;
  color: var(--muted);
  font-size: 0.85rem;
  line-height: 1.4;
}

.member-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 16px;
}

.member-firm {
  display: none;
}

.member-card-action {
  display: grid;
  place-items: center;
  min-width: 34px;
  height: 34px;
  padding: 0 12px;
  border-radius: 8px;
  corner-shape: squircle;
  background: var(--navy);
  color: #fff;
  font-size: 0.8rem;
  font-weight: var(--weight-semibold);
  transition: background var(--duration-quick) var(--ease-smooth-out),
    scale var(--duration-quick) var(--ease-smooth-out);
}

.member-card-action:hover,
.member-card-action:focus-visible {
  background: var(--azure);
}

.member-card-action:active {
  scale: 0.96;
}

/* ---------- Locations directory ---------- */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.location-stats {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 24px 56px;
  margin-top: 44px;
  margin-bottom: 0;
}

.location-stats div {
  padding: 0;
  border-left: 0;
}

.location-stats div:last-child {
  border-right: 0;
}

.world-map {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--ghost);
  aspect-ratio: 360 / 144.5;
}

.world-map-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  cursor: default;
}

.world-map-canvas.is-on-pin {
  cursor: pointer;
}

.map-tip {
  position: absolute;
  z-index: 2;
  display: grid;
  gap: 0;
  width: 200px;
  padding: 11px 16px 12px;
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  background: #000;
  filter: drop-shadow(0 12px 24px rgba(0, 26, 48, 0.2));
  transform: translate(-50%, calc(-100% - 16px));
  pointer-events: none;
}

/* a country picked on the map lands level with the sticky search box, matching the first row at rest */
.dir-name {
  scroll-margin-top: 152px;
}

.map-tip[hidden] {
  display: none;
}

.map-tip::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -8px;
  transform: translateX(-50%);
  border-left: 9px solid transparent;
  border-right: 9px solid transparent;
  border-top: 8px solid #000;
}

/* the firm leads (every firm on a shared pin), the city sits under it */
.map-tip strong {
  color: #fff;
  font-size: 0.85rem;
  font-weight: var(--weight-semibold);
  line-height: 1.3;
}

.map-tip span {
  margin-top: 3px;
  color: var(--accent-blue);
  font-weight: var(--weight-semibold);
  font-size: 0.72rem;
  line-height: 1.2;
}

.bandwidth {
  display: grid;
  gap: 20px;
}

.statement {
  max-width: 56ch;
  margin: 0;
  color: var(--navy);
  font-size: var(--type-lede);
  font-weight: var(--weight-light);
  line-height: 1.24;
  letter-spacing: var(--tracking-lede);
  text-wrap: balance;
}

.statement strong {
  font-weight: var(--weight-semibold);
}

.directory {
  display: grid;
  /* the filter rail widens with the type on large screens so the region tags never cramp */
  grid-template-columns: clamp(300px, 17vw, 760px) minmax(0, 1fr);
  gap: 64px;
  align-items: start;
}

.dir-rail {
  position: sticky;
  top: 148px;
  display: grid;
  gap: 20px;
}

.dir-search input {
  width: 100%;
  min-height: 48px;
  padding: 0 18px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  font-size: 0.95rem;
}

.dir-search input::placeholder {
  color: var(--faint);
}

.dir-search input:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}

.dir-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.dir-filters .deal-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 0 16px;
  border: 0;
  /* filter tags read in title case at normal spacing, not the small-caps label style */
  font-size: 0.82rem;
  letter-spacing: normal;
  text-transform: none;
  background: var(--ghost);
  color: var(--ink);
  font-family: inherit;
  cursor: pointer;
  transition: background var(--duration-quick) var(--ease-smooth-out),
    color var(--duration-quick) var(--ease-smooth-out);
}

.dir-filters .deal-tag:hover {
  background: var(--line);
  color: var(--ink);
}

.dir-filters .deal-tag.is-active {
  background: var(--accent-blue);
  color: #fff;
}

/* ---------- Network: search and region filters between the map and the member firm cards ---------- */
.firm-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 24px;
}

.firm-filter .dir-search {
  flex: 0 1 340px;
}

/* the member firms band is ghost-grey, so its tags sit on white */
.firm-filter .dir-filters .deal-tag {
  background: var(--paper);
}

.firm-filter .dir-filters .deal-tag:hover {
  background: var(--navy);
  color: #fff;
}

.firm-filter .dir-filters .deal-tag.is-active {
  background: var(--accent-blue);
  color: #fff;
}

.firm-filter .firm-chip b {
  font-weight: var(--weight-regular);
  font-size: 1.1em;
  line-height: 1;
}

.firm-grid .firm-card[hidden],
.firm-filter [hidden] {
  display: none;
}

.firm-empty {
  margin: 32px 0 0;
  color: var(--muted);
}

/* ---------- Sector editorial rows ---------- */
.sector-edit {
  margin-top: clamp(40px, 5vw, 72px);
}

/* the sectors page ends on the row list, so its last row carries the foot spacing */
.page-sectors .sector-edit-row:last-child {
  padding-bottom: var(--section-y);
}

/* the sector list starts closer to the masthead than a standard section */
.page-sectors .sector-list {
  padding-top: clamp(56px, 6vw, 88px);
}

.sector-edit-row {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 2vw;
  align-items: center;
  padding: clamp(36px, 4.2vw, 66px) 0;
}

.page-services .sector-edit-row {
  padding: clamp(26px, 3vw, 46px) 0;
}

.page-services #debt-advisory {
  padding-bottom: clamp(72px, 9vw, 140px);
}

.sector-edit-fig {
  margin: 0;
  grid-column: 1 / span 6;
  grid-row: 1;
}

.sector-edit-fig img {
  display: block;
  width: 100%;
  aspect-ratio: 1024 / 640;
  object-fit: cover;
}

.sector-edit-txt {
  grid-column: 8 / span 5;
  grid-row: 1;
}

.sector-edit-track {
  display: block;
  height: 2px;
  margin: 0 0 20px;
  background: var(--line-strong);
}

.sector-edit-track i {
  display: block;
  height: 100%;
  background: var(--green);
}

.sector-edit-row h2,
.sector-edit-row h3 {
  margin: 0 0 0px;
  font-size: clamp(1.4rem, 2.3vw, 2rem);
  line-height: 1.2em;
  letter-spacing: -0.02em;
  font-weight: 600;
}

.sector-edit-row p:not(.eyebrow) {
  margin: 0;
  letter-spacing: -0.04em;
  color: var(--muted);
  font-size: 1.5rem;
  line-height: 1.4;
  padding: 4px 0 24px;
}

.sector-edit-row p b {
  color: var(--ink);
  font-weight: var(--weight-semibold);
}

.sector-edit-row.flip .sector-edit-fig,
.page-services .sector-edit > .sector-edit-row:nth-child(even) .sector-edit-fig {
  grid-column: 7 / span 6;
}

.sector-edit-row.flip .sector-edit-txt,
.page-services .sector-edit > .sector-edit-row:nth-child(even) .sector-edit-txt {
  grid-column: 1 / span 5;
}

@media (max-width: 900px) {
  .sector-edit-row,
  .sector-edit-row.flip {
    grid-template-columns: minmax(0, 1fr);
  }

  .sector-edit-row .sector-edit-fig,
  .sector-edit-row.flip .sector-edit-fig,
  .sector-edit-row .sector-edit-txt,
  .sector-edit-row.flip .sector-edit-txt,
  .page-services .sector-edit > .sector-edit-row:nth-child(even) .sector-edit-fig,
  .page-services .sector-edit > .sector-edit-row:nth-child(even) .sector-edit-txt {
    grid-column: 1 / -1;
    grid-row: auto;
  }

  /* stacked under a full-width image, copy keeps a readable line length */
  .sector-edit-row .sector-edit-txt p:not(.eyebrow) {
    max-width: 60ch;
  }
}

.dir-row {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0;
  padding: 28px 10px 10px;
  border: 0;
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

/* the first country starts level with the search box */
.dir-country:first-child .dir-row {
  padding-top: 0;
}

.dir-name {
  color: var(--navy);
  font-size: 1.3rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-body);
}

.dir-count {
  color: var(--faint);
  font-size: 0.95rem;
  font-weight: var(--weight-regular);
}

.dir-count::after {
  content: "▾";
  display: inline-block;
  margin-left: 10px;
  color: var(--muted);
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}

.dir-country.is-open .dir-count::after {
  transform: rotate(180deg);
}

.dir-offices .dir-firm {
  color: var(--accent-blue);
}

.dir-offices .dir-firm:hover {
  color: var(--azure);
}

.dir-offices {
  display: none;
  padding: 0 10px 8px;
}

.dir-country.is-open .dir-offices {
  display: block;
}

.dir-offices ul {
  display: grid;
  gap: 22px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.dir-offices li {
  display: grid;
  grid-template-columns: 84px minmax(0, 1fr);
  gap: 16px;
  align-items: center;
}

.dir-office-text {
  display: grid;
  gap: 5px;
  min-width: 0;
}

/* the firm's logo beside each office */
.dir-logo {
  width: 84px;
  height: 34px;
  object-fit: contain;
  object-position: left center;
  mix-blend-mode: multiply;
}

.dir-logo--initial {
  display: grid;
  place-items: center;
  border-radius: var(--radius-sm);
  background: rgba(0, 40, 72, 0.06);
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-semibold);
}

.dir-firm {
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-medium);
  text-decoration: none;
}

a.dir-firm:hover {
  text-decoration: underline;
  text-underline-offset: 4px;
}

.dir-address {
  margin: 0;
  color: var(--muted);
  font-size: 0.9rem;
  font-style: normal;
  line-height: 1.5;
}

/* Hero: photograph across the section, black fading to transparent over the left half */
.page-block.has-split {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.4fr 0.6fr;
  min-height: 100vh;
  padding: 0;
  background: var(--navy-deep);
  color: #fff;
}

.page-block.has-split > * {
  position: relative;
  z-index: 2;
}

.page-block.has-split::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: var(--hero-image);
  background-size: cover;
  background-position: center;
}

.page-block.has-split::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  /* the tint holds the whole picture down, not just its foot, so white type reads on a bright sky too:
     a navy wash from the text side across, over the dark rise from the bottom */
  background:
    linear-gradient(90deg, rgba(1, 8, 15, 0.66) 0%, rgba(1, 8, 15, 0.4) 50%, rgba(1, 8, 15, 0.14) 100%),
    linear-gradient(0deg, rgba(1, 8, 15, 0.9) 0%, rgba(1, 8, 15, 0.55) 18%, rgba(1, 8, 15, 0.22) 42%, rgba(1, 8, 15, 0.14) 100%);
}

/* Network masthead: the photograph stays sharp, a blurred copy of it fades in
   over the foot of the section, and the dark gradient reaches a little higher. */
.page-network .page-block.has-split {
  background-image: var(--hero-image, none);
  background-size: cover;
  background-position: center;
}

.page-network .page-block.has-split::before {
  filter: blur(4px);
  -webkit-mask-image: linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 30%, rgba(0, 0, 0, 0) 62%);
  mask-image: linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 30%, rgba(0, 0, 0, 0) 62%);
}

.page-network .page-block.has-split::after {
  background:
    linear-gradient(90deg, rgba(1, 8, 15, 0.66) 0%, rgba(1, 8, 15, 0.4) 50%, rgba(1, 8, 15, 0.14) 100%),
    linear-gradient(0deg, rgba(1, 8, 15, 0.9) 0%, rgba(1, 8, 15, 0.55) 18%, rgba(1, 8, 15, 0.22) 42%, rgba(1, 8, 15, 0.14) 100%);
}

.split-copy {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding: clamp(190px, 36vh, 380px) clamp(22px, 4vw, 80px) 96px calc(var(--gutter) + clamp(22px, 4vw, 80px));
}

.page-block.has-split.deals-hero .about-lede {
  max-width: 34ch;
}

.split-copy-inner {
  width: 100%;
  max-width: 820px;
}

.split-photo {
  background: none;
}

/* About, network and services share this split opening, so the figures that
   follow their copy keep the light-on-dark treatment from the old masthead */
.page-block.has-split .split-copy-inner .hero-stats {
  width: 100%;
  grid-template-columns: none;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  margin: clamp(40px, 5vw, 76px) 0 0;
}

.page-block.has-split .split-copy-inner .hero-stats div {
  border-color: rgba(255, 255, 255, 0.18);
}

.page-block.has-split .split-copy-inner .hero-stats dd {
  color: #fff;
  font-size: clamp(1.8rem, 2.4vw, 2.6rem);
}

.page-block.has-split .split-copy-inner .hero-stats dt {
  color: rgba(255, 255, 255, 0.6);
}

@media (max-width: 900px) {
  .page-block.has-split .split-copy-inner .hero-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-flow: row;
    grid-auto-columns: auto;
  }
}

.page-block.has-split h1,
.page-block.has-split h2 {
  color: #fff;
}


.page-block.has-split .eyebrow {
  color: var(--accent-blue);
}

/* the deals masthead eyebrow is green, like the other photo openings */
.page-block.has-split .eyebrow.eyebrow-green {
  color: var(--green);
}

.page-block.has-split .statement,
.page-block.has-split p {
  color: rgba(255, 255, 255, 0.8);
}

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .page-block.has-split {
    grid-template-columns: 1fr;
    min-height: 0;
  }

  .split-copy {
    justify-content: flex-start;
    padding: 96px calc(var(--gutter) + clamp(22px, 4vw, 80px)) 64px;
  }

  .page-block.has-split::after {
    background: linear-gradient(
      180deg,
      rgba(1, 8, 15, 0.95) 0%,
      rgba(1, 8, 15, 0.78) 55%,
      rgba(1, 8, 15, 0.5) 100%
    );
  }
}

/* ---------- Numbered service list (split layout) ---------- */
.split-services {
  grid-template-columns: minmax(280px, 0.82fr) minmax(360px, 1.18fr);
  align-items: start;
}

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

.service-row {
  position: relative;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) 34px;
  gap: 20px;
  align-items: start;
  padding: 30px 0;
  border-top: 1px solid var(--line);
  transition: border-color var(--duration-quick) var(--ease-smooth-out);
}

/* the heading link covers the whole row, so clicking anywhere on it navigates */
.service-info h5 a::after {
  content: "";
  position: absolute;
  inset: 0;
}

.service-row:last-child {
  border-bottom: 1px solid var(--line);
}

.service-num {
  padding-top: 7px;
  color: var(--green);
  font-size: 0.78rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  font-variant-numeric: tabular-nums;
}

.service-info h5 {
  margin: 0 0 10px;
  font-size: clamp(1.3rem, 1.8vw, 1.7rem);
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-lede);
}

.service-info h5 a {
  color: var(--navy);
  text-decoration: none;
}

.service-row:hover .service-info h5 a {
  text-decoration: underline;
  text-underline-offset: 5px;
  text-decoration-thickness: 1.5px;
}

.service-info p {
  max-width: 52ch;
  margin: 0;
  color: var(--muted);
  font-size: 1.125rem;
  line-height: 1.55;
}

.service-arrow {
  position: relative;
  justify-self: end;
  width: 34px;
  height: 34px;
  margin-top: 2px;
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  transition: background var(--duration-quick) var(--ease-smooth-out),
    border-color var(--duration-quick) var(--ease-smooth-out),
    transform var(--duration-quick) var(--ease-smooth-out);
}

.service-arrow::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 1.5px solid var(--navy);
  border-right: 1.5px solid var(--navy);
  transform: translate(-62%, -50%) rotate(45deg);
  transition: border-color var(--duration-quick) var(--ease-smooth-out);
}

.service-row:hover .service-arrow {
  background: var(--navy);
  border-color: var(--navy);
  transform: translateX(3px);
}

.service-row:hover .service-arrow::after {
  border-color: #fff;
}

/* ---------- Numbered cards on a dark beat ---------- */
.num-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: 20px;
}

.num-card {
  padding: 34px 30px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: rgba(255, 255, 255, 0.03);
}

.num-card span {
  display: block;
  margin-bottom: 22px;
  color: var(--green);
  font-size: 0.78rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  font-variant-numeric: tabular-nums;
}

.num-card h5 {
  margin: 0 0 12px;
  color: #fff;
  font-size: 1.32rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-lede);
}

.num-card p {
  margin: 0;
  color: rgba(255, 255, 255, 0.68);
  font-size: 1rem;
  line-height: 1.6;
}

/* ---------- Filter bar ---------- */
.filter-bar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 205px), 1fr));
  gap: 12px;
  margin: 0 0 72px;
}

/* the listing offers a one-click way back to every deal */
.filter-clear {
  grid-column: 1 / -1;
  justify-self: start;
  align-self: center;
  color: var(--muted);
  font-size: 0.95rem;
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}

.filter-clear:hover,
.filter-clear:focus-visible {
  color: var(--accent-blue);
}

.filter-field {
  position: relative;
  display: block;
}

.filter-field select,
.filter-field input {
  width: 100%;
  height: 58px;
  padding: 0 46px 0 20px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--paper);
  color: var(--navy);
  font: inherit;
  font-size: 1rem;
  letter-spacing: var(--tracking-body);
  text-overflow: ellipsis;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color var(--duration-quick) var(--ease-smooth-out),
    box-shadow var(--duration-quick) var(--ease-smooth-out),
    background var(--duration-quick) var(--ease-smooth-out);
}

.filter-field select:hover,
.filter-field input:hover {
  border-color: rgba(0, 40, 72, 0.32);
}

.filter-field select:focus-visible,
.filter-field input:focus-visible {
  outline: none;
  border-color: var(--azure);
  box-shadow: 0 0 0 3px rgba(0, 110, 171, 0.16);
}

.filter-field::after {
  content: "";
  position: absolute;
  right: 22px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-right: 1.6px solid var(--navy);
  border-bottom: 1.6px solid var(--navy);
  transform: translateY(-72%) rotate(45deg);
  pointer-events: none;
}

.filter-field.filter-search::after {
  display: none;
}

.filter-search input {
  padding-right: 52px;
}

.filter-search svg {
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  pointer-events: none;
}

.filter-search input:focus-visible + svg {
  color: var(--azure);
}

.deals-empty {
  margin: 28px 0 0;
  color: var(--muted);
  font-size: 1rem;
}

.deals-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
  margin: 64px 0;
}

.deals-page {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 41px;
  height: 41px;
  padding: 0 14px;
  border-radius: var(--radius-sm);
  background: #000;
  color: #fff;
  font-size: 0.74rem;
  font-weight: var(--weight-semibold);
  letter-spacing: 0.02em;
  text-decoration: none;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.28), 0 2px 4px rgba(0, 0, 0, 0.18);
  transition: background var(--duration-quick) var(--ease-in-out),
    box-shadow var(--duration-quick) var(--ease-in-out),
    transform var(--duration-quick) var(--ease-smooth-out);
}

.deals-page:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.32), 0 3px 6px rgba(0, 0, 0, 0.22);
}

.deals-page:active {
  transform: translateY(0);
}

.deals-page.is-active {
  background: var(--azure);
  box-shadow: 0 6px 14px rgba(0, 110, 171, 0.35), 0 2px 4px rgba(0, 110, 171, 0.25);
  cursor: default;
}

.deals-page-gap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 41px;
  height: 41px;
  color: var(--muted);
  font-size: 0.74rem;
  font-weight: var(--weight-semibold);
}

.deals-grid.is-loading {
  opacity: 0.45;
  transition: opacity 0.18s ease;
}

/* ---------- Deal card grid (the deal page card, reused as a grid) ---------- */
.deals-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
  padding-left: 0;
  padding-right: 0;
}

/* the card sizes itself from the column, so the rail's zoom stays out of the grid */
.deals-grid > .deal-card {
  zoom: 1;
}

@media (max-width: 1100px) {
  .deals-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 820px) {
  .deals-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }
}

@media (max-width: 440px) {
  .deals-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.latest-deals {
  display: flex;
  align-items: center;
  min-height: 50vh;
  padding: clamp(56px, 8vh, 110px) 0;
  background: var(--paper);
}

.latest-deals-inner {
  width: var(--container);
  margin: 0 auto;
  padding-left: clamp(22px, 4vw, 80px);
  padding-right: clamp(22px, 4vw, 80px);
}

.latest-deals-heading {
  margin: 6px 0 clamp(26px, 4vh, 44px);
  font-size: clamp(1.8rem, 2.4vw, 2.6rem);
  font-weight: 400;
  color: var(--navy);
}

.latest-deals-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(20px, 2.4vw, 40px);
  margin: 0;
  padding: 0;
  list-style: none;
}

.latest-deal {
  border-top: 1px solid rgba(0, 40, 72, 0.14);
  padding-top: 16px;
}

.latest-deal-title {
  display: block;
  font-size: 1.05rem;
  line-height: 1.35;
  color: var(--navy);
  text-decoration: none;
}

.latest-deal-title:hover,
.latest-deal-title:focus-visible {
  color: var(--accent-blue);
}

.latest-deal-meta {
  display: block;
  margin-top: 10px;
  font-size: 0.78rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
}

@media (max-width: 900px) {
  .latest-deals-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .latest-deals {
    min-height: 0;
  }

  .latest-deals-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

.deals-grid .deal-parties {
  display: flex;
  flex-direction: column;
  min-height: 430px;
  margin-top: 0;
  padding: 36px 32px 32px;
}

.deals-grid .deal-party {
  flex: 1 1 auto;
  grid-template-rows: 96px auto 96px;
  gap: 18px;
}

.deals-grid .deal-party img {
  width: 176px;
  height: 88px;
  max-width: none;
  max-height: none;
  object-fit: contain;
}

.deals-grid .deal-parties .text-link {
  align-self: flex-end;
  margin-top: 56px;
}

.deals-grid .deal-parties::before {
  width: 260px;
  height: 260px;
  top: 50%;
  opacity: 0.04;
}

.deals-grid .deal-party {
  min-height: 0;
  gap: 18px;
}

/* ---------- Full-height page blocks (mirrors the front page) ---------- */
.page-block {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: var(--section-y) 0;
}

.page-block > .block-inner {
  width: var(--container);
  margin: 0 auto;
}

.page-block.is-paper { background: var(--paper); }

.page-block.is-ghost {
  background: var(--ghost);
}

/* the deals listing sits on a neutral light gray */
.page-deals .page-block.is-ghost {
  background: #f0f0f0;
}

.page-block.is-wash {
  background: var(--wash);
}

/* Hero with a full-width photograph behind it, text over the left */
.page-block.has-image {
  position: relative;
  min-height: 83vh;
  overflow: hidden;
  background: var(--navy-deep);
  color: #fff;
}

.page-block.has-image > .block-inner {
  position: relative;
  z-index: 2;
}

.page-block.has-image::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: var(--hero-image);
  background-size: cover;
  background-position: center;
}

.page-block.has-image::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(
    90deg,
    rgba(2, 12, 22, 0.97) 0%,
    rgba(2, 12, 22, 0.95) 34%,
    rgba(2, 12, 22, 0.88) 48%,
    rgba(2, 12, 22, 0.66) 58%,
    rgba(2, 12, 22, 0.32) 66%,
    rgba(2, 12, 22, 0) 72%
  );
  backdrop-filter: blur(11px);
  -webkit-backdrop-filter: blur(11px);
  mask-image: linear-gradient(
    90deg,
    #000 0%,
    #000 34%,
    rgba(0, 0, 0, 0.9) 48%,
    rgba(0, 0, 0, 0.6) 58%,
    rgba(0, 0, 0, 0.25) 66%,
    transparent 72%
  );
  -webkit-mask-image: linear-gradient(
    90deg,
    #000 0%,
    #000 34%,
    rgba(0, 0, 0, 0.9) 48%,
    rgba(0, 0, 0, 0.6) 58%,
    rgba(0, 0, 0, 0.25) 66%,
    transparent 72%
  );
}

.page-block.has-image h1,
.page-block.has-image h2 {
  color: #fff;
}


.page-block.has-image .eyebrow {
  color: var(--accent-blue);
}

.page-block.has-image .statement,
.page-block.has-image p {
  color: rgba(255, 255, 255, 0.82);
}

.page-block.has-image .split-body {
  max-width: min(74ch, calc(50vw - max(0px, (100vw - 1180px) / 2)), 800px);
}

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .page-block.has-image .split-body {
    max-width: 46ch;
  }

  .page-block.has-image::after {
    background: linear-gradient(
      180deg,
      rgba(2, 12, 22, 0.86) 0%,
      rgba(2, 12, 22, 0.6) 60%,
      rgba(2, 12, 22, 0.35) 100%
    );
  }
}

.page-block.is-dark {
  background: var(--navy);
  color: #fff;
}

.page-block.is-dark h1,
.page-block.is-dark h2,
.page-block.is-dark h3,
.page-block.is-dark h5 {
  color: #fff;
}


.page-block.is-dark p:not(.eyebrow),
.page-block.is-dark .split-body p:not(.eyebrow) {
  color: rgba(255, 255, 255, 0.72);
}

.page-block.is-dark .checklist li {
  color: rgba(255, 255, 255, 0.9);
}

.split.split-solo {
  grid-template-columns: minmax(0, 1fr);
}

.split {
  display: grid;
  grid-template-columns: minmax(320px, 1fr) minmax(320px, 1fr);
  gap: clamp(40px, 5vw, 76px);
  align-items: center;
}

.split-media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 0.82 / 1;
  object-fit: cover;
  border-radius: 0;
  background: var(--ghost);
}

.split-body p:not(.eyebrow) {
  max-width: 46ch;
  margin-bottom: 16px;
  color: var(--muted);
  font-size: 1.125rem;
  line-height: 1.62;
}

.split-body .button { margin-top: 22px; }

.split-body p:last-child {
  margin-bottom: 0;
}

.block-head {
  margin-bottom: 48px;
  padding-bottom: 28px;
}

@media (min-width: 961px), (min-width: 901px) and (min-height: 1100px) {
  .split.is-reverse .split-media {
    order: 2;
  }
}

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .split,
  .split.split-solo {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---------- Feature sections ---------- */
.feature {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
  gap: 40px 64px;
  align-items: center;
}

.feature-media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--ghost);
  object-fit: cover;
}

.feature-body p {
  max-width: 46ch;
  margin-bottom: 16px;
  color: var(--muted);
  font-size: 1.125rem;
  line-height: 1.6;
}

.feature-body p:last-child {
  margin-bottom: 0;
}

.checklist {
  display: grid;
  gap: 10px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.checklist li {
  position: relative;
  padding-left: 26px;
  color: var(--navy);
  font-size: 1.125rem;
}

.checklist li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 12px;
  height: 2px;
  background: var(--green);
}

.photo-grid.tiles {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr));
  gap: 12px;
}

.photo-grid.tiles img {
  aspect-ratio: 3 / 2;
  object-fit: contain;
  padding: 16px;
  background: var(--paper);
  border-radius: var(--radius-sm);
   corner-shape: squircle;
}

.photo-grid figure {
  display: grid;
  gap: 10px;
  margin: 0;
}

.photo-grid figcaption {
  color: var(--muted);
  font-size: 0.8rem;
}

/* ---------- Generated content blocks ---------- */
.info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  gap: 32px;
}

.info-grid.cols-2 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
}

.info-card {
  display: grid;
  align-content: start;
  gap: 12px;
  padding: 32px 30px;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--ghost);
}

.info-card h5 {
  margin: 0;
  color: var(--navy);
  font-size: 1.2rem;
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-lede);
}

.info-card p {
  margin: 0;
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.55;
}

.info-card .text-link {
  justify-self: start;
  margin-top: 4px;
}

.page-hero {
  overflow: hidden;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--ghost);
  aspect-ratio: 1024 / 691;
}

.page-hero img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr));
  gap: 16px;
}

.photo-grid img {
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  background: var(--ghost);
}

/* ---------- Closing CTA ---------- */
.cta-band {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 40px;
}

/* ---------- Responsive ---------- */
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .site-header {
    grid-template-columns: auto 1fr auto;
  }

  .deal-body {
    grid-template-columns: 1fr;
  }

  .site-nav,
  .header-action,
  .header-right {
    display: none;
  }

  .menu-toggle {
    display: flex;
  }

  .why-inner,
  .movement-section,
  .network-section,
  .site-footer {
    grid-template-columns: 1fr;
  }

  .footer-cols {
    grid-template-columns: 1fr 1fr;
    gap: 40px;
  }

  .footer-col[aria-label="Sectors"] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 24px;
    row-gap: 8px;
  }

  .footer-col[aria-label="Sectors"] h5 {
    grid-column: 1 / -1;
  }

  .hero {
    min-height: auto;
    height: auto;
  }

  .hero-inner {
    grid-template-columns: 1fr;
    padding: 200px 0 56px;
    gap: 48px;
  }

  .hero-globe {
    width: min(78%, 380px);
  }

  .hero-stats {
    grid-template-columns: repeat(2, 1fr);
  }

  .hero-stats div:nth-child(3) {
    border-left: 0;
  }

  .directory {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .world-map {
    aspect-ratio: 260 / 136;
  }

  .cta-band {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 40px 32px;
  }

  .feature-reverse .feature-media {
    order: 2;
  }

  .dir-rail {
    position: static;
  }

  .why-inner {
    gap: 40px;
  }

  .photo-panel {
    order: -1;
    aspect-ratio: 1 / 0.78;
  }

  .deal-rail,
  .precision-grid,
  .sector-grid {
    grid-template-columns: 1fr;
  }

  .services-layout {
    grid-template-columns: 1fr;
    gap: 44px;
  }

  .services-head {
    position: static;
  }

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

  .contact-inner {
    grid-template-columns: 1fr;
    gap: 48px;
  }

  .scroll-cue {
    display: none;
  }
}

@media (max-width: 540px) {
  :root {
    --container: calc(100vw - 32px);
  }

  main,
  main > section {
    max-width: 100vw;
    overflow-x: hidden;
  }

  .site-header {
    padding: var(--header-logo-mobile-clearance) 16px 20px
      var(--header-logo-mobile-clearance);
  }

  .brand-lockup img {
    width: 64px;
    height: auto;
  }

  .hero-inner {
    padding: 200px 0 56px;
  }

  h1 {
    max-width: 340px;
    font-size: clamp(2.6rem, 10vw, 3.3rem);
  }

  .hero-stats {
    grid-template-columns: repeat(2, 1fr);
    gap: 22px 28px;
  }

  h2 {
    max-width: 340px;
    font-size: clamp(1.95rem, 8vw, 2.45rem);
    line-height: 1.1;
    overflow-wrap: break-word;
  }

  .hero-copy,
  .copy-block p,
  .movement-copy p,
  .network-copy p,
  .contact-content p,
  .deal-party span {
    max-width: 340px;
    overflow-wrap: break-word;
  }

  .hero-actions {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
  }

  .hero-actions .button {
    width: auto;
    min-width: 244px;
  }

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

  .section-heading > a {
    grid-column: 1;
    grid-row: 3;
    justify-self: start;
  }

  .section-pad,
  .network-section {
    padding: 80px var(--gutter);
  }

  .resources-section {
    padding-right: var(--gutter);
    padding-left: var(--gutter);
  }

  .resources-head,
  .resource-grid {
    width: 100%;
    max-width: 100%;
  }

  .deal-rail {
    margin-left: 0;
    margin-right: 0;
  }

  .deal-rail--swipe {
    margin-inline: calc(50% - 50vw);
    overflow-x: auto;
    padding: 10px 0 32px;
    scrollbar-width: none;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--rail-inset, 28px);
    touch-action: pan-x pan-y;
    overscroll-behavior-x: contain;
  }

  /* snapping fights a mouse drag, so it is suspended until the drag settles */
  .deal-rail--swipe.is-dragging {
    scroll-snap-type: none;
  }

  .deal-rail--swipe.is-dragging a {
    pointer-events: none;
  }

  .deal-rail--swipe::-webkit-scrollbar,
  .deal-rail--swipe::before,
  .deal-rail--swipe::after {
    display: none;
  }

  .deal-rail--swipe .deal-track {
    gap: 16px;
  }

  .deal-rail--swipe .deal-track {
    padding-inline: var(--rail-inset, 28px);
  }

  .deal-rail--swipe .deal-track > .deal-card {
    width: min(82vw, 340px);
    scroll-snap-align: start;
    scroll-snap-stop: always;
    zoom: 1;
  }

  .deal-dots {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 4px;
  }

  .deal-dots button {
    width: 8px;
    height: 8px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: var(--line-strong);
    cursor: pointer;
    transition: width 200ms ease, background 200ms ease;
  }

  .deal-dots button[aria-current="true"] {
    width: 22px;
    background: var(--accent-blue);
  }

  .sc-rail {
    --sc-inset: 0px;
    --sc-edge: 0px;
    margin: 32px calc(50% - 50vw) 0;
  }

  .sc-carousel {
    gap: 16px;
    padding: 4px var(--rail-inset) 32px;
    scroll-padding-inline: var(--rail-inset);
    -webkit-mask-image: none;
    mask-image: none;
  }

  .sc-slide {
    zoom: 1;
    width: min(82vw, 320px);
    aspect-ratio: 2 / 3;
    padding: 24px 20px;
  }

  .sc-line {
    margin-top: 8px;
    font-size: 1.42rem;
  }

  .contact-section {
    min-height: auto;
    padding: 80px var(--gutter);
  }

  .contact-point {
    flex-direction: column;
    gap: 6px;
    padding: 22px 0;
  }

  .contact-point-num {
    min-width: 0;
  }

  .site-footer {
    padding: 48px 20px 36px;
    gap: 28px;
  }

  .footer-cols {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 32px 20px;
  }

  .footer-contact {
    grid-column: 1 / -1;
  }

  .footer-addr {
    margin-bottom: 8px;
    font-size: 1rem;
  }

  .footer-col {
    min-width: 0;
    gap: 7px;
  }

  .footer-col h5 {
    margin: 0 0 4px;
    font-size: 1rem;
  }

  /* Services and the page links share a row; Sectors runs full width below */
  .footer-col[aria-label="Services"] {
    grid-column: 1;
    grid-row: 2;
  }

  .footer-col[aria-label="Sectors"] {
    grid-column: 1 / -1;
    grid-row: 3;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 20px;
  }

  .footer-col[aria-label="Sectors"] a {
    font-size: 0.92rem;
    line-height: 1.35;
  }

  /* the logo file is inset ~17px at this width; its mark lines up with the
     copy edge and sits closer to the address */
  .footer-logo {
    margin-bottom: 8px;
  }

  .footer-logo img {
    margin-left: -17px;
  }

  .footer-col[aria-label="Sectors"] h5 {
    grid-column: 1 / -1;
  }

  .footer-col--stack {
    grid-column: 2;
    grid-row: 2;
    display: flex;
    flex-direction: column;
    gap: 9px;
  }

  .footer-col--stack a {
    font-size: 1rem;
  }

  .footer-legal {
    grid-column: 1 / -1;
    gap: 10px 20px;
    padding-top: 16px;
  }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .reveal {
    opacity: 1;
    transform: none;
    filter: none;
  }

  .scroll-cue {
    display: none;
  }
}

/* ---------- Hero artwork ---------- */
.hero-art {
  float: right;
  width: 168px;
  height: 168px;
  margin: -6px 0 18px 26px;
}

.hero-art canvas {
  display: block;
  width: 100%;
  height: 100%;
}

@media (max-width: 640px) {
  .hero-art {
    width: 108px;
    height: 108px;
    margin-left: 16px;
  }
}

/* ---------- Artwork hero (services-merge) ---------- */
.art-hero::after {
  display: none;
}

.page-block.has-split.art-hero .split-photo {
  position: relative;
  background: var(--paper);
}

.art-hero .split-photo canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}

/* ---------- Artwork hero: light ground, art on the right ---------- */
.page-block.has-split.art-hero {
  background: var(--paper);
  color: var(--navy);
}

.art-hero::before,
.art-hero::after {
  display: none;
}

.page-block.has-split.art-hero .split-copy {
  background: var(--paper);
  color: var(--navy);
}.page-block.has-split.art-hero h1{

  color: var(--navy);

}


.page-block.has-split.art-hero .statement,
.page-block.has-split.art-hero p {
  color: var(--muted);
}

.art-hero .split-photo {
  background: var(--paper);
}

.art-tag {
  position: absolute;
  left: 18px;
  bottom: 16px;
  font-size: 0.7rem;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--faint);
}

/* ---------- Hero with the image on top ---------- */
.has-top-image {
  background: var(--paper);
}

.has-top-image .block-inner {
  position: relative;
  display: grid;
  gap: 0;
}

.has-top-image {
  position: relative;
  padding-top: 0;
  min-height: 0;
  justify-content: flex-start;
}

.has-top-image .top-image {
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  height: min(88vh, 900px);
  overflow: hidden;
  background: var(--navy);
}

/* keeps the title legible over whatever part of the photo sits under it */
.has-top-image .top-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0, 40, 72, 0.62) 0%, rgba(0, 40, 72, 0.16) 42%, rgba(0, 40, 72, 0.8) 100%);
}

.has-top-image .top-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.has-top-image .top-copy {
  position: absolute;
  left: 0;
  right: 0;
  bottom: clamp(64px, 12vh, 150px);
  z-index: 2;
  padding: 0;
  width: 100%;
  max-width: 900px;
}

.has-top-image .top-copy h1 {
  margin: 0 0 22px;
  color: #fff;
  font-size: clamp(2.6rem, 5.4vw, 4.6rem);
  font-weight: var(--weight-light);
  line-height: 1;
  letter-spacing: var(--tracking-display);
}

.has-top-image .top-copy .statement {
  max-width: 52ch;
  color: rgba(255, 255, 255, 0.88);
}

/* ---------- Header over a dark image ---------- */
.site-header.on-dark .brand-lockup img {
  filter: brightness(0) invert(1);
}

.site-header.on-dark .menu-toggle span {
  background: #fff;
}

.site-header.on-dark .site-nav a,
.site-header.on-dark .header-right a,
.site-header.on-dark .header-search {
  color: #fff;
}

.site-header.on-dark .site-nav::before,
.site-header.on-dark .header-right::before {
  background: rgba(10, 22, 34, 0.42);
}

/* ---------- Full-bleed image band ---------- */
.image-band {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  overflow: hidden;
  background: var(--navy);
}

.image-band {
  position: relative;
}

.band-labels {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 24%;
  z-index: 2;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 18px 32px;
  padding: 0 clamp(28px, 5vw, 72px);
  pointer-events: none;
}

.band-labels span {
  color: #fff;
  font-size: 0.68rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.45);
}

.image-band img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---------- Statement with columned copy ---------- */
.statement-cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px 72px;
}

.statement-cols p {
  max-width: 52ch;
  margin: 0;
  color: var(--muted);
  font-size: var(--type-body-lg);
  line-height: 1.6;
}

@media (max-width: 800px) {
  .statement-cols {
    grid-template-columns: 1fr;
  }
}

.page-block.is-ghost {
  background: var(--ghost);
}

/* the network band: four points in a hairline grid */
.net-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--line-strong);
}

.net-grid article {
  padding: 30px 36px 30px 0;
  border-bottom: 1px solid var(--line-strong);
}

.net-grid article:nth-child(even) {
  padding-left: 36px;
  border-left: 1px solid var(--line-strong);
}

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

  .net-grid article:nth-child(even) {
    padding-left: 0;
    border-left: 0;
  }
}

.about-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 clamp(40px, 6vw, 80px);
  margin: 0;
}

.about-facts > div {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 18px;
  padding: 18px 0;
  border-top: 1px solid var(--line-strong);
}

.about-facts dt {
  padding-top: 4px;
  color: var(--faint);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.about-facts dd {
  margin: 0;
  color: var(--navy);
  font-size: 1.02rem;
}

/* lets the fold slide open where the browser can animate to auto height,
   and simply snaps open everywhere else */
html {
  interpolate-size: allow-keywords;
}

.faq-list {
  display: grid;
}

.faq-item::details-content {
  block-size: 0;
  overflow: hidden;
  transition:
    block-size var(--duration-quick, 0.3s) var(--ease-smooth-out),
    content-visibility var(--duration-quick, 0.3s) allow-discrete;
}

.faq-item[open]::details-content {
  block-size: auto;
}

.faq-item {
  border-top: 1px solid var(--line);
}

.faq-item:last-child {
  border-bottom: 1px solid var(--line);
}

.faq-item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 26px 0;
  cursor: pointer;
  list-style: none;
}

.faq-item summary::-webkit-details-marker {
  display: none;
}

.faq-item summary h3 {
  margin: 0;
  font-size: 1.2rem;
}

.faq-item summary::after {
  content: "";
  flex: 0 0 auto;
  width: 12px;
  height: 12px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translate(-2px, -2px);
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}

.faq-item[open] summary::after {
  transform: rotate(225deg) translate(-2px, -2px);
}

.faq-item p {
  max-width: 68ch;
  margin: 0 0 30px;
  color: var(--muted);
  font-size: var(--type-body-lg);
  line-height: 1.6;
}

@media (max-width: 900px) {
  .about-facts {
    grid-template-columns: 1fr;
    gap: 0;
  }
}

/* ---------- Leadership wall ---------- */
.leader-wall {
  columns: 4;
  column-gap: 20px;
  margin-top: 56px;
}

.leader-wall figure {
  break-inside: avoid;
  margin: 0 0 20px;
  overflow: hidden;
  background: var(--ghost);
}

.leader-wall img {
  display: block;
  width: 100%;
  height: auto;
  filter: grayscale(1) contrast(1.02);
  transition: filter var(--duration-slow) var(--ease-smooth-out),
    transform var(--duration-slow) var(--ease-smooth-out);
}

.leader-wall figure:hover img {
  filter: grayscale(0) contrast(1);
  transform: scale(1.03);
}

@media (max-width: 900px) {
  .leader-wall {
    columns: 2;
  }
}

.statement-lede {
  max-width: 52ch;
  margin: 0;
  color: var(--muted);
  font-size: var(--type-body-lg);
  line-height: 1.6;
}

.statement-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 44px;
}

/* ---------- Leadership cards ---------- */
.leader-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px 28px;
  margin-top: 56px;
}

.leader-card {
  display: grid;
  gap: 0;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
   corner-shape: squircle;
  overflow: hidden;
}

.leader-card > img {
  display: block;
  width: 100%;
  aspect-ratio: 9 / 16;
  object-fit: cover;
  filter: grayscale(1);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
   corner-shape: squircle;
}

.leader-card-body {
  display: grid;
  gap: 4px;
  padding: 22px 22px 24px;
}

.leader-card-body h5 {
  margin: 0;
  color: var(--navy);
  font-size: 1.16rem;
  font-weight: var(--weight-semibold);
}

.leader-card-body p {
  margin: 0;
  color: var(--muted);
  font-size: 0.92rem;
}

.leader-card-body a {
  margin-top: 6px;
  color: var(--accent-blue);
  font-size: 0.86rem;
  word-break: break-all;
}

.leader-card-pending {
  margin-top: 6px;
  color: var(--faint);
  font-size: 0.86rem;
}

@media (max-width: 900px) {
  .leader-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .leader-cards {
    grid-template-columns: 1fr;
  }
}

/* ---------- Leadership, one per row ---------- */
.leader-rows {
  display: grid;
  gap: 88px;
  margin-top: 64px;
}

.leader-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 92px;
  align-items: stretch;
}



.leader-row.is-flipped .leader-photo {
  order: 2;
  margin-right: auto;
  margin-left: 0;
}
.leader-photo {
  position: relative;
  margin-left: auto;
  margin-right: 0;
  width: 100%;
  max-width: 216px;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  overflow: hidden;
  box-shadow: var(--shadow-lift);
  align-self: start;
  display: flex;
  align-items: flex-start;
  justify-content: center;
}

.leader-row.is-flipped .leader-info {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
  justify-content: flex-start;
}

.leader-info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  justify-content: flex-start;
}

.leader-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 9 / 14.4;
  object-fit: cover;
  margin-inline: auto;
}

.leader-info .leader-name {
  margin: 0;
  color: var(--navy);
  font-size: 1.08rem;
  font-weight: var(--weight-semibold);
}

.leader-info .leader-role {
  color: var(--muted);
}

.leader-info a {
  color: var(--accent-blue);
  word-break: break-all;
}

@media (max-width: 860px) {
  .leader-row {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  }

h2 {
  max-width: 720px;
  margin: 14px 0 18px;
  margin-top: 0;
  color: var(--navy);
  font-size: 3.08em;
  line-height: 0.9em;
  letter-spacing: -0.072em;
  font-weight: 700;
  text-wrap: balance;
}

body.home h2,
body.front-page h2,
body.sectors-carousel-lab h2 {
  color: var(--accent-blue);
}

body.home h2::first-line,
body.front-page h2::first-line,
body.sectors-carousel-lab h2::first-line {
  color: var(--navy);
}

body.home :is(.why-section, .precision-section, .mna-section, .adviser-section) h2::first-line,
body.front-page :is(.why-section, .precision-section, .mna-section, .adviser-section) h2::first-line {
  color: #fff;
}

/* a heading split into sentences colours by sentence, not by line: the lead stays navy (white
   on dark bands) however it wraps, and only its .heading-sentence-break part is blue */
body.home h2:has(.heading-sentence-break),
body.front-page h2:has(.heading-sentence-break) {
  color: var(--navy);
}

body.home :is(.why-section, .precision-section, .mna-section) h2:has(.heading-sentence-break),
body.front-page :is(.why-section, .precision-section, .mna-section) h2:has(.heading-sentence-break) {
  color: #fff;
}

body.home h2 .heading-sentence-break,
body.front-page h2 .heading-sentence-break {
  color: var(--accent-blue);
}

body.home .adviser-section h2,
body.front-page .adviser-section h2 {
  color: #fff;
}

h3 {
  margin-bottom: 22px;
  color: var(--navy);
  font-size: clamp(1.512rem, 2.52vw, 2.448rem);
  line-height: 1.12;
  letter-spacing: var(--tracking-display);
  font-weight: var(--weight-regular);
  text-wrap: balance;
}

h6 {
  margin: 0;
  padding: 0;
  font-size: 16.2px;
  font-weight: var(--weight-regular);
}

/* ---------- Leadership carousel ---------- */
.carousel-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: 40px;
}

.carousel-intro {
  max-width: 46ch;
  color: var(--muted);
  margin-bottom: 32px;
}

.carousel-nav {
  display: flex;
  flex-shrink: 0;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 24px;
  margin-bottom: 24px;
}

.carousel-btn {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: none;
  border-radius: 50%;
  background: #000;
  color: #fff;
  font-size: 0;
  line-height: 1;
  cursor: pointer;
  transition: background var(--duration-quick) var(--ease-in-out), color var(--duration-quick) var(--ease-in-out);
}

.carousel-btn svg {
  display: block;
  width: 17px;
  height: 17px;
}

.person-photo-empty {
  display: grid;
  place-items: center;
  width: 100%;
  aspect-ratio: 3 / 4;
  background: var(--wash);
  color: var(--navy);
  font-size: clamp(2rem, 4vw, 3rem);
  font-weight: var(--weight-light);
  letter-spacing: 0.02em;
  border-radius: var(--radius-md);
  corner-shape: squircle;
}

.person-name a {
  color: inherit;
  text-decoration: none;
}

.person-name a:hover,
.person-name a:focus-visible {
  color: var(--azure);
}
.member-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(24px, 3vw, 48px);
  align-items: start;
}

/* the photo on the left, the name, role and biography beside it */
@media (min-width: 761px) {
  .member-head.has-photo {
    grid-template-columns: clamp(200px, 20vw, 280px) minmax(0, 1fr);
    column-gap: clamp(48px, 6vw, 104px);
  }
}

.member-head-body .eyebrow {
  margin-bottom: 14px;
}

.member-head-body .prose {
  max-width: 64ch;
}

.member-head-photo {
  display: block;
  max-width: min(320px, 60vw);
}

.member-head-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: var(--radius-md);
  corner-shape: squircle;
  background: var(--ghost);
}

.author .page-section {
  padding-bottom: clamp(48px, 6vw, 88px);
}

/* the LinkedIn icon sits beside the member's name */
.member-head-name {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* the firm on its own line under the job title, led by its logo */
.member-head-firm {
  margin: 16px 0 0;
}

.member-head-firm a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--azure);
  font-size: 1.05rem;
  text-decoration: none;
}

.member-head-firm a:hover,
.member-head-firm a:focus-visible {
  text-decoration: underline;
}

.member-head-firm img {
  display: block;
  width: auto;
  height: 34px;
  max-width: 180px;
  object-fit: contain;
  mix-blend-mode: multiply;
}


.author .member-colleagues {
  padding-bottom: clamp(96px, 10vw, 160px);
}

/* the colleagues row: five to a row on wide screens, like a firm's members */
@media (min-width: 1101px) {
  .author .member-colleagues .board-grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

/* the stats follow the biography closely */
.author .head-white .page-head + .page-section {
  padding-top: 0;
}

/* room between the deal cards and the membership band below */
.author .deal-section--grey {
  padding-bottom: clamp(96px, 10vw, 160px);
}

.member-head-role {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: 1.05rem;
}

.member-head-role a {
  color: var(--azure);
  text-decoration: none;
}

.member-head-role a:hover,
.member-head-role a:focus-visible {
  text-decoration: underline;
}

.member-head-body .prose {
  margin-top: clamp(20px, 2.5vw, 32px);
}

.member-head-body h1 {
  margin-bottom: 0;
}

@media (max-width: 760px) {
  .member-head {
    grid-template-columns: minmax(0, 1fr);
  }

  .member-head-photo {
    max-width: 320px;
  }
}

.carousel-btn:hover {
  background: var(--accent-blue);
  color: #fff;
}

.carousel {
  display: flex;
  gap: 24px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 8px;
  scrollbar-width: none;
  cursor: grab;
  user-select: none;
}

.carousel.is-dragging {
  cursor: grabbing;
  scroll-snap-type: none;
}

.carousel.is-edge {
  scroll-snap-type: none;
}

.carousel.is-dragging {
  scroll-snap-type: none;
  scroll-behavior: auto;
  cursor: grabbing;
}

.carousel::-webkit-scrollbar {
  display: none;
}

.person-card {
  position: relative;
  flex: 0 0 auto;
  width: min(256px, 76vw);
  scroll-snap-align: start;
}

.person-card img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: var(--radius-md);
   corner-shape: squircle;
  -webkit-user-drag: none;
}

.person-meta {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
  min-height: 70px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  background: #fff;
  border-radius: var(--radius);
   corner-shape: squircle;
  box-shadow: var(--shadow-border);
}

.person-name {
  margin: 0;
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-semibold);
}

.person-role {
  margin: 0;
  color: var(--muted);
  font-size: 0.85rem;
}

.person-company {
  display: block;
  margin: 0;
  font-size: 0.78rem;
  text-decoration: none;
  color: #1fa3d1;
}

.person-company:hover,
.person-company:focus-visible {
  color: var(--navy);
  text-decoration: underline;
}

.person-links {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: 8px;
}

.person-link {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  min-width: 34px;
  height: 34px;
  padding: 0 10px;
  border-radius: 8px;
   corner-shape: squircle;
  background: var(--navy);
  color: #fff;
  font-size: 0.8rem;
  font-weight: var(--weight-semibold);
  transition: background var(--duration-quick) var(--ease-smooth-out),
    scale var(--duration-quick) var(--ease-smooth-out);
}

.person-link:hover,
.person-link:focus-visible {
  background: var(--azure);
}

.person-link:active {
  scale: 0.96;
}

/* the LinkedIn button is the round icon chip, in the platform's own colour */
.person-link--linkedin {
  width: 34px;
  padding: 0;
  border-radius: 50%;
  background: #0a66c2;
}

.person-link--linkedin svg {
  width: 15px;
  height: 15px;
  fill: currentColor;
}

.person-link--linkedin:hover,
.person-link--linkedin:focus-visible {
  background: #004182;
}

/* ---------- Middle-market full-bleed banner ---------- */
.mm-banner {
  position: relative;
  background: var(--paper);
  color: #fff;
}

.mm-banner::before {
  content: "";
  position: absolute;
  inset: 64px;
  background-image: var(--mm-image);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-color: var(--navy-deep);
}

.mm-banner::after {
  content: "";
  position: absolute;
  inset: 64px;
  background: linear-gradient(90deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.7) 30%, rgba(0, 0, 0, 0) 75%);
}

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .mm-banner::before,
  .mm-banner::after {
    inset: 16px;
  }
}

.mm-banner > .block-inner {
  position: relative;
  z-index: 1;
}

.mm-banner-body {
  max-width: calc(50% - 38px);
}

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .mm-banner-body {
    max-width: 100%;
  }
}

.mm-banner h2 {
  color: #fff;
}

.mm-banner p {
  color: rgba(255, 255, 255, 0.85);
}

.mm-banner .button {
  margin-top: 40px;
}

.about-conferences .conferences-heading {
  margin: 0 0 18px;
}

.about-conferences .conferences-lede {
  max-width: 62ch;
  margin: 0 0 64px;
  color: var(--muted);
  font-size: var(--type-body-lg);
  line-height: 1.6;
}

.about-conferences .conference-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

@media (max-width: 1100px) {
  .about-conferences .conference-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 820px) {
  .about-conferences .conference-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .about-conferences .conference-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.about-conferences .conferences-more {
  margin: 48px 0 0;
  text-align: right;
}

.about-conferences .conference-grid figure.is-hidden {
  display: none;
}

.about-conferences .conference-grid figure.is-revealing {
  animation: conference-reveal 620ms cubic-bezier(0.22, 0.61, 0.36, 1) both;
}

@keyframes conference-reveal {
  from {
    opacity: 0;
    transform: translateY(34px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.adviser-section {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 92vh;
  padding: 120px 24px;
  background: var(--navy);
  text-align: center;
}

.adviser-section .liquid-ether {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

/* Home: the Echo routes artwork, the CapFive mark radiating in nested lanes */
.adviser-section .routes-echo {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.adviser-section .routes-echo canvas {
  display: block;
  width: 100%;
  height: 100%;
}

.adviser-section .routes-echo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 46% 52% at 50% 50%, rgba(0, 40, 72, 0.82) 0%, rgba(0, 40, 72, 0.5) 55%, rgba(0, 40, 72, 0) 100%);
}

/* About carries the Contours artwork, which is drawn light: the band and its
   copy invert so the ground stays white under the navy contour lines. */
.adviser-section.is-contours {
  background: var(--navy);
}

.adviser-section.is-contours .about-motion {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.adviser-section.is-contours .about-motion canvas {
  display: block;
  width: 100%;
  height: 100%;
}

.adviser-section.is-contours .about-motion::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 40, 72, 0.45);
}

.adviser-section.is-contours .adviser-eyebrow {
  color: var(--accent-blue);
}

.adviser-section.is-contours h2 {
  color: #fff;
}

.adviser-inner {
  position: relative;
  z-index: 1;
  max-width: 780px;
}

.adviser-eyebrow {
  color: #9fe0ff;
}

.adviser-section h2 {
  color: #fff;
}

.adviser-section .button {
  margin: 64px auto 0;
}

/* desktop: the "Find an adviser" bands run a full screen, their heading larger */
@media (min-width: 1101px) {
  .adviser-section {
    min-height: 80vh;
  }

  .adviser-section h2 {
    font-size: 3.6em;
    line-height: 1em;
    margin: 14px 0 32px;
  }

  .sector-edit-row :is(h2, h3) {
    font-size: 2.4rem;
  }

  .sector-edit-row p:not(.eyebrow) {
    max-width: 540px;
  }
}

.page-block.is-reveal {
  background: #01080f;
}

.page-block.is-reveal::before {
  display: none;
}

.page-block.is-reveal::after {
  z-index: 3;
  background: linear-gradient(
    90deg,
    rgba(1, 8, 15, 0.86) 0%,
    rgba(1, 8, 15, 0.8) 26%,
    rgba(1, 8, 15, 0.68) 40%,
    rgba(1, 8, 15, 0.46) 50%,
    rgba(1, 8, 15, 0.2) 58%,
    rgba(1, 8, 15, 0) 66%
  );
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  mask-image: none;
  -webkit-mask-image: none;
  pointer-events: none;
}

.page-block.is-reveal .split-photo {
  background: none;
  position: static;
}

.page-block.is-reveal canvas[data-reveal-grid] {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.page-block.is-reveal .split-copy {
  z-index: 4;
  pointer-events: none;
}

.page-block.is-reveal .split-copy a,
.page-block.is-reveal .split-copy button {
  pointer-events: auto;
}

/* ---------- Header: dock treatment (option 2) ---------- */
.site-header.dock-header {
  padding: var(--header-logo-clearance) calc(var(--gutter) + clamp(22px, 4vw, 80px)) 26px;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
}

/* the dock swaps layouts outright; animating the padding would drag the right-hand links across the page as they fade in */
.site-header.dock-header {
  transition: background var(--duration-medium) var(--ease-smooth-out), color var(--duration-medium) var(--ease-smooth-out);
}

.site-header.dock-header .dock-group { display: contents; }

.site-header.dock-header .brand-lockup {
  display: inline-grid;
  place-items: center;
  height: auto;
  position: relative;
}

.site-header.dock-header:not(.scrolled) .brand-lockup {
  transform: none;
  left: -26px;
}

.site-header.dock-header .logo-full,
.site-header.dock-header .logo-mark { grid-area: 1 / 1; width: auto; }

.site-header.dock-header .logo-full {
  height: 160px;
  transition: height var(--duration-medium) var(--ease-smooth-out),
    opacity var(--duration-medium) var(--ease-smooth-out);
}

.site-header.dock-header .logo-mark {
  height: 52px;
  opacity: 0;
  transition: height var(--duration-medium) var(--ease-smooth-out),
    opacity var(--duration-medium) var(--ease-smooth-out);
}

.site-header.dock-header.scrolled .logo-full { height: 52px; opacity: 0; }

.site-header.dock-header.scrolled .logo-mark { opacity: 1; }

.site-header.dock-header.scrolled .brand-lockup {
  opacity: 1;
  visibility: visible;
  transform: none;
  pointer-events: auto;
}

/* the links fade in once docked, but leave at once: fading out they would sit in the undocked layout, mid-page */
.site-header.dock-header .site-nav,
.site-header.dock-header .header-right {
  opacity: 0;
  transform: translateY(-10px);
  pointer-events: none;
  transition: none;
}

.site-header.dock-header.scrolled .site-nav,
.site-header.dock-header.scrolled .header-right {
  opacity: 1;
  transform: none;
  pointer-events: auto;
  transition: opacity var(--duration-medium) var(--ease-smooth-out),
    transform var(--duration-medium) var(--ease-smooth-out);
}

.site-header.dock-header .site-nav::before,
.site-header.dock-header .header-right::before { display: none; }

.site-header.dock-header .site-nav { position: relative; }

.site-header.dock-header .site-nav a,
.site-header.dock-header .header-right a,
.site-header.dock-header .header-search {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  text-transform: none;
  letter-spacing: -0.02em;
  font-size: 1rem;
  font-weight: 500;
}

.site-header.dock-header .site-nav a::after { display: none; }

.site-header.dock-header .header-right a::after,
.site-header.dock-header .header-search::after { background: var(--accent-blue); }

.site-header.dock-header .nav-underline {
  position: absolute;
  bottom: 6px;
  height: 2px;
  border-radius: 2px;
   corner-shape: squircle;
  left: 0;
  width: 0;
  background: var(--accent-blue);
  transform: scaleX(0);
  transform-origin: center;
  pointer-events: none;
  transition: transform 180ms var(--ease-smooth-out),
    left 260ms var(--ease-smooth-out), width 260ms var(--ease-smooth-out);
}

.site-header.dock-header.scrolled {
  left: 0;
  right: 0;
  top: 32px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 0 28px;
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}

.site-header.dock-header.scrolled .dock-group {
  grid-column: 2;
  justify-self: center;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px 120px;
  border-radius: 999px;
  background: rgba(244, 246, 250, 0.28);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.site-header.dock-header.scrolled .dock-group .brand-lockup {
  position: absolute;
  left: 52px;
  top: 50%;
  transform: translateY(-50%);
}

.site-header.dock-header.scrolled .header-right {
  grid-column: 3;
  justify-self: end;
  padding: 8px 16px;
  border-radius: 999px;
  background: rgba(244, 246, 250, 0.28);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

/* over a dark section the pill takes the section's own colour, keeping only the blur */
.site-header.dock-header.scrolled.on-dark .dock-group,
.site-header.dock-header.scrolled.on-dark .header-right { background: transparent; }

.site-header.dock-header.scrolled.on-dark .logo-mark { filter: brightness(0) invert(1); }

.site-header.dock-header.scrolled.on-dark .site-nav a,
.site-header.dock-header.scrolled.on-dark .header-right a,
.site-header.dock-header.scrolled.on-dark .header-search { color: #fff; }

.site-header.dock-header.scrolled.on-dark .site-nav a:hover,
.site-header.dock-header.scrolled.on-dark .header-right a:hover,
.site-header.dock-header.scrolled.on-dark .header-search:hover { color: #fff; }

.site-header.dock-header .menu-toggle { display: none; }

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .site-header.dock-header {
    padding: 20px 20px 24px;
    grid-template-columns: auto 1fr auto;
  }

  .site-header.dock-header .logo-full { height: 132px; }

  .site-header.dock-header .logo-mark { height: 46px; }

  .site-header.dock-header.scrolled {
    left: 0;
    right: 0;
    top: 0;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 28px;
    padding: 20px;
    background: rgba(244, 246, 250, 0.96);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 1px 0 var(--line);
  }

  .site-header.dock-header.scrolled .logo-full { height: 40px; }

  .site-header.dock-header.scrolled .dock-group {
    display: contents;
    padding: 0;
    background: none;
    backdrop-filter: none;
  }

  .site-header.dock-header.scrolled .dock-group .brand-lockup {
    position: relative;
    left: auto;
    top: auto;
    transform: none;
  }

  .site-header.dock-header.scrolled .brand-lockup {
    display: none;
  }

  .site-header.dock-header .menu-toggle {
    display: flex;
    position: absolute;
    top: 0;
    right: 20px;
    grid-column: 3;
    justify-self: end;
    z-index: 1;
  }

  .site-header.dock-header.scrolled {
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: none;
  }

  .mobile-nav.open {
    position: fixed;
    inset: 0;
    z-index: 90;
    overflow-y: auto;
    padding-top: calc(50svh - 97px);
  }

  .site-header.dock-header {
    padding-left: 40px;
  }

  .mobile-nav-inner {
    width: 100%;
    max-width: none;
    padding: 0 72px;
  }

  body.menu-open .site-header.dock-header .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    display: inline-grid;
    /* the logo file has ~20px of empty margin; pull the visible mark onto the links' edge */
    transform: translate(-20px, calc(50svh - 312px));
  }

  .brand-lockup {
    transition: opacity var(--duration-fast) var(--ease-smooth-out),
      visibility var(--duration-fast) var(--ease-smooth-out);
  }

  body.menu-open .site-header.dock-header.scrolled {
    padding-left: 40px;
  }

  body.menu-open .site-header.dock-header .logo-full {
    height: 132px;
    opacity: 1;
  }

  body.menu-open .site-header.dock-header .logo-mark {
    opacity: 0;
  }

  .adviser-section {
    min-height: 100svh;
  }

  .adviser-section .liquid-ether {
    opacity: 0.5;
  }
}

@media (min-width: 1600px) {
  :root {
    --container: min(2000px, max(1360px, 52vw));
    --gutter: max(70px, calc((100vw - var(--container)) / 2));
  }

  /* the hero column grows slowly here, so the headline is capped to keep it
     to two lines rather than outgrowing its column */
  h1 {
    font-size: clamp(2.34rem, 3.42vw, 3.78rem);
  }

  .hero-inner {
    gap: clamp(32px, 2vw, 160px);
  }

  .hero-copy {
    max-width: 560px;
  }

  .hero-globe {
    width: min(100%, 700px);
  }
}

@media (min-width: 1600px) {
  /* the sectors hero has no side photo, so its copy is nudged onto the same
     line the split heroes' copy takes at wide widths */
  .sectors-hero-inner,
  .sectors-hero-base {
    width: 100%;
    margin: 0;
    padding-left: calc(70vw - clamp(22px, 4vw, 80px) - 820px);
  }
}

@media (min-width: 2200px) {
  :root {
    --container: min(4400px, calc(100vw - 320px));
    --gutter: max(240px, calc((100vw - var(--container)) / 2));
    --pad-x: clamp(128px, 12vw, 640px);
    --measure: min(1400px, 100%);
    --type-body-lg: 1.35rem;
    --section-y: clamp(88px, 6vw, 220px);
    --header-logo-clearance: clamp(90px, 4vw, 160px);
  }

  .section-pad,
  .site-footer {
    padding-right: calc(var(--gutter) + var(--pad-x));
    padding-left: calc(var(--gutter) + var(--pad-x));
  }

  .hero-stats {
    margin-bottom: clamp(64px, 6vw, 160px);
  }

  .hero-stats div {
    padding-left: clamp(44px, 2.6vw, 88px);
  }

  .hero-inner,
  .hero-stats,
  .network-section,
  .why-inner,
  .movement-section,
  .mna-lab,
  .contact-inner,
  .home-services-gallery-inner,
  .page-head,
  .page-section,
  .deal-admin-bar,
  .page-block > .block-inner {
    padding-right: var(--pad-x);
    padding-left: var(--pad-x);
  }

  /* the split heroes sit on the block content line, not the wider section gutter;
     the copy stays right and sits lower, and grows with the type, which scales
     with the viewport up here */
  .split-copy {
    padding-top: clamp(380px, 35vh, 760px);
    padding-left: calc((100vw - var(--container)) / 2 + var(--pad-x));
  }

  .split-copy-inner {
    max-width: min(42vw, 1800px);
  }

  /* the wide-screen content padding on .hero-stats is for the full-width masthead;
     inside the split copy it squeezed the figures into one column */
  .page-block.has-split .split-copy-inner .hero-stats {
    padding-right: 0;
    padding-left: 0;
  }

  .latest-deals-inner {
    padding-right: var(--pad-x);
    padding-left: var(--pad-x);
  }

  /* four across still, but the cards give up some width to wider gutters */
  .deals-grid {
    gap: clamp(48px, 3vw, 120px);
  }

  html {
    font-size: clamp(16px, 0.72vw, 30px);
  }

  h1 {
    font-size: clamp(50.4px, 2.88vw, 115.2px);
  }

  h2 {
    max-width: var(--measure);
    margin-bottom: clamp(28px, 2.4vw, 64px);
    font-size: clamp(43.2px, 2.16vw, 100.8px);
  }

  .sector-edit {
    max-width: var(--measure);
  }

  body {
    font-size: clamp(16.2px, 0.63vw, 27px);
  }

  .hero-copy {
    max-width: min(38ch, 100%);
    font-size: clamp(1.2rem, 0.9vw, 2.4rem);
  }

  .hero-eyebrow {
    font-size: clamp(0.8rem, 0.5vw, 1.3rem);
  }

  .hero-actions {
    margin-top: clamp(44px, 3vw, 72px);
  }

  .hero-globe {
    width: min(100%, max(700px, 30vw));
  }

  .hero-stats dd {
    font-size: clamp(2.2rem, 2.6vw, 4.6rem);
  }

  .hero-stats dt {
    font-size: clamp(0.72rem, 0.5vw, 1.2rem);
  }

  .button {
    min-height: clamp(52px, 2.4vw, 76px);
    padding: 0 clamp(30px, 1.8vw, 56px);
    font-size: clamp(0.78rem, 0.5vw, 1.1rem);
  }

  .site-header.dock-header .site-nav a,
  .site-header.dock-header .header-right a,
  .site-header.dock-header .header-search {
    font-size: clamp(1rem, 0.6vw, 1.5rem);
  }

  body::before,
  body::after {
    content: "";
    position: fixed;
    top: 0;
    bottom: 0;
    z-index: 9999;
    width: calc((100vw - var(--container)) / 2);
    background: #efefef;
    pointer-events: none;
  }

  body::before {
    left: 0;
  }

  body::after {
    right: 0;
  }

  .site-header.dock-header {
    padding-right: calc(var(--gutter) + var(--pad-x));
    padding-left: calc(var(--gutter) + var(--pad-x));
  }

  /* the About split photographs grow with the column instead of stopping at 560px */
  .ph-split .a6-media .ax-img {
    width: 100%;
    max-width: none;
  }

  /* the About and Network openings start on the same content edge as the blocks below */
  .page-about .about-hero,
  .page-network .about-hero,
  .page-services .about-hero {
    padding-right: 0;
    padding-left: 0;
  }

  .page-about .about-hero .precision-intro,
  .page-network .about-hero .precision-intro,
  .page-services .about-hero .precision-intro,
  .page-about .about-hero .about-stats,
  .page-network .about-hero .about-stats,
  .page-services .about-hero .about-stats {
    width: var(--container);
    margin-right: auto;
    margin-left: auto;
    padding-right: var(--pad-x);
    padding-left: var(--pad-x);
  }

  /* the photograph bands scale with the viewport rather than stopping at 800px */
  .why-feature {
    min-height: min(max(92vh, 34vw), 1900px);
  }

  .network-pro-b {
    height: auto;
    min-height: min(max(92vh, 34vw), 1900px);
  }

  .firm-grid--logos .firm-logo {
    width: clamp(120px, 7vw, 260px);
    height: clamp(44px, 2.6vw, 96px);
    max-width: 165px;
    max-height: 64px;
  }

  /* the big logo lines up with the content edge: the container's own margin plus the side inset */
  .home .site-header.dock-header:not(.scrolled),
  .page-about .site-header.dock-header:not(.scrolled),
  .page-network .site-header.dock-header:not(.scrolled),
  .page-sectors .site-header.dock-header:not(.scrolled),
  .page-services .site-header.dock-header:not(.scrolled),
  .page-deals .site-header.dock-header:not(.scrolled),
  .single-deal .site-header.dock-header:not(.scrolled) {
    padding-right: calc((100vw - var(--container)) / 2 + var(--pad-x));
    padding-left: calc((100vw - var(--container)) / 2 + var(--pad-x));
  }

  .site-header.dock-header:not(.scrolled) .brand-lockup {
    transform: none;
  }

  .site-header.dock-header .logo-full {
    height: clamp(152px, 5.5vw, 320px);
  }

  .site-header.dock-header .logo-mark {
    height: clamp(52px, 2.4vw, 130px);
  }

  .site-header.dock-header.scrolled {
    padding-right: calc(var(--gutter) + var(--pad-x));
    padding-left: calc(var(--gutter) + var(--pad-x));
  }

  .site-header.dock-header.scrolled .logo-full,
  .site-header.dock-header.scrolled .logo-mark {
    height: clamp(52px, 2.4vw, 130px);
  }

  .site-header.dock-header.scrolled .dock-group {
    padding: clamp(8px, 1vw, 26px) clamp(120px, 13vw, 300px);
  }

  .site-header.dock-header.scrolled .dock-group .brand-lockup {
    left: clamp(52px, 5vw, 120px);
  }

  .site-header.dock-header.scrolled .header-right {
    padding: clamp(8px, 1vw, 26px) clamp(16px, 1.6vw, 44px);
  }

  .site-header.dock-header .site-nav a,
  .site-header.dock-header .header-right a,
  .site-header.dock-header .header-search {
    font-size: clamp(1rem, 0.85vw, 2.2rem);
  }

  .site-header.dock-header .header-search svg {
    width: clamp(18px, 0.6vw, 30px);
    height: clamp(18px, 0.6vw, 30px);
  }

  .deals-section .deal-card {
    zoom: 1;
  }

  .sc-rail,
  .deal-rail,
  .services-section .c-halfimg {
    margin-right: calc(var(--pad-x) * -1);
    margin-left: calc(var(--pad-x) * -1);
  }

  .sc-rail {
    --sc-inset: var(--pad-x);
    margin-top: clamp(72px, 5vw, 160px);
  }

  .services-section .c-halfimg-body,
  .services-section .c-halfimg-body--wide {
    align-self: center;
    max-width: none;
    padding-top: clamp(48px, 5vw, 120px);
    padding-bottom: clamp(48px, 5vw, 120px);
    padding-right: clamp(28px, 2.5vw, 72px);
    padding-left: clamp(28px, 2.5vw, 72px);
  }

  /* the sectors masthead takes the split heroes' ultrawide line and measure, and its
     sector tags run the full measure instead of stacking at 720px */
  .sectors-hero {
    grid-template-rows: auto 1fr;
    padding-top: clamp(380px, 35vh, 760px);
  }

  .sectors-hero-base {
    align-self: start;
    margin-top: clamp(32px, 1.2vw, 64px);
  }

  .sectors-hero-inner,
  .sectors-hero-base {
    padding-left: calc(70vw - clamp(22px, 4vw, 80px) - min(42vw, 1800px));
  }

  .sectors-hero-type,
  .sectors-hero-index {
    max-width: min(42vw, 1800px);
  }

  /* copy beside a half-screen image gets room to breathe off the image edge */
  .services-section .c-halfimg-body,
  .services-section .c-halfimg-body--wide,
  .why-feature-body {
    padding-left: clamp(160px, 8vw, 400px);
  }

  .adviser-inner,
  .page-head h1,
  .statement,
  .services-section .c-halfimg-body--wide h2,
  .services-section .c-roll-desc,
  body .services-section .c-lede {
    max-width: var(--measure);
  }

  .eyebrow,
  .precision-grid span {
    font-size: 1.1rem;
  }

  .mna-lab-copy .button {
    margin-top: clamp(24px, 2.4vw, 64px);
  }

  .section-heading {
    row-gap: 0;
  }

  .eyebrow,
  .section-heading .eyebrow,
  .why-copy .eyebrow,
  .mna-copy .eyebrow,
  .mna-lab .eyebrow,
  body .home-services-gallery-intro .eyebrow {
    margin-bottom: clamp(16px, 1.4vw, 40px);
  }

  .resources-section {
    display: grid;
    align-content: center;
    min-height: 100vh;
  }

  .adviser-section {
    min-height: 100vh;
  }

  .why-row h5 {
    font-size: 1.9rem;
  }


  p,
  .copy-block p:not(.eyebrow),
  .movement-copy p:not(.eyebrow),
  .precision-grid p:not(.eyebrow),
  .network-copy p:not(.eyebrow),
  .contact-content p:not(.eyebrow),
  .mna-lab-copy p:not(.eyebrow),
  .sectors-intro,
  .deals-intro,
  .resources-lede,
  .why-sub,
  .why-row p,
  .resource-body p,
  body .c-roll-desc,
  .statement,
  .statement-cols p,
  .split-body p:not(.eyebrow),
  .feature-body p:not(.eyebrow),
  .service-info p:not(.eyebrow),
  .lane-body p:not(.eyebrow),
  .carousel-intro,
  .page-head .lede,
  body .c-lede,
  body .home-services-gallery-intro > p:last-child {
    font-size: var(--type-body-lg);
  }

  .deals-section .deal-track > .deal-card {
    width: min(700px, 36vw);
  }

  .deals-cta {
    margin-right: calc(clamp(72px, 6vw, 200px) - var(--pad-x));
  }

  .sc-slide {
    zoom: 1;
    width: min(700px, 36vw);
    padding: 56px 40px 40px;
  }

  .deal-rail::before,
  .deal-rail::after {
    width: clamp(120px, 12vw, 480px);
  }

  .deal-card-arrow,
  .sc-go {
    width: 96px;
    height: 96px;
    font-size: 1.8rem;
  }

  .sc-line {
    font-size: 2rem;
  }

  .sectors-section .sectors-intro,
  .deals-intro,
  .why-sub,
  .resources-lede,
  .precision-intro,
  .movement-copy p:not(.eyebrow),
  .copy-block p:not(.eyebrow),
  .network-copy p:not(.eyebrow),
  .precision-grid p:not(.eyebrow),
  .contact-content p:not(.eyebrow),
  .mna-lab-copy p:not(.eyebrow),
  .page-head .lede,
  .split-body p,
  .feature-body p,
  .service-info p,
  .carousel-intro,
  .statement-cols p {
    max-width: var(--measure);
  }

  .sectors-section .section-heading {
    grid-template-columns: var(--measure) minmax(0, 1fr);
  }

  body .home-services-gallery-intro,
  body .home-services-gallery-intro > p:last-child {
    max-width: var(--measure);
  }

  body .home-services-gallery-intro h2 {
    margin-bottom: clamp(28px, 2.4vw, 64px);
  }

  body .home-services-gallery-grid {
    min-height: 1160px;
    grid-template-rows: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  :root {
    --container: calc(100vw - 56px);
  }

  .hero-eyebrow {
    margin-bottom: 14px;
  }

  .hero-globe {
    width: min(100%, 440px);
  }

  .precision-section {
    min-height: auto;
    justify-content: flex-start;
  }

  .precision-intro {
    margin-bottom: 32px;
  }

  .precision-grid article {
    min-height: 0;
  }

  .sc-scrim,
  .sc-desc {
    opacity: 1;
  }

  .sc-line {
    color: #000;
  }

  .resources-head {
    margin-bottom: 32px;
  }

  .resource-grid {
    gap: 10px;
  }

  .resource-card {
    grid-template-columns: 32px 1fr auto;
    gap: 16px;
    padding: 24px 20px;
  }

  .site-footer {
    padding-right: var(--gutter);
    padding-left: var(--gutter);
  }

  .hero-stats div:first-child {
    border-left: 0;
  }

  .hero-stats div:last-child {
    border-right: 0;
  }

  .hero-stats dd {
    font-size: clamp(2.05rem, 2.8vw, 2.9rem);
  }

  p {
    line-height: 1.5;
  }

  .hero-copy {
    line-height: 1.32;
  }

  .section-heading,
  .deals-section .section-heading {
    margin-bottom: 30px;
  }

  .deals-cta {
    text-align: center;
  }

  .deals-cta .button {
    min-width: 244px;
  }

  .movement-section {
    gap: 16px;
    padding: 0 0 var(--section-y);
  }

  .movement-image {
    width: calc(100% + 56px);
    margin-left: -28px;
  }

  .movement-copy .button {
    display: flex;
    width: min(100%, 250px);
    margin: 64px auto 0;
  }

  .sectors-section {
    padding-bottom: 32px;
  }
}

@media (min-width: 3000px) {
  .person-card {
    width: min(clamp(270px, 22.2vw, 770px), 76vw);
  }

  .person-meta {
    left: 32px;
    right: 32px;
    bottom: 32px;
    padding: 20px 26px;
  }

  .carousel-btn {
    width: clamp(52px, 3.4vw, 120px);
    height: clamp(52px, 3.4vw, 120px);
    font-size: clamp(28px, 1.6vw, 60px);
  }
}

.join-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 24px;
  max-width: 760px;
  margin-top: 34px;
}

.join-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.join-field--wide,
.join-form .button {
  grid-column: 1 / -1;
}

.join-field span {
  color: var(--muted);
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* the "What's it about?" prompt reads as a line of copy with room beneath it */
.join-field--prompt {
  gap: 18px;
}

.join-form--narrow {
  max-width: 560px;
}

.join-form--narrow .button {
  margin-top: 16px;
}

.join-field input,
.join-field select,
.join-field textarea {
  width: 100%;
  padding: 12px 14px;
  color: var(--ink);
  font: inherit;
  background: var(--paper);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  transition: border-color var(--duration-fast) var(--ease-smooth-out);
}

.join-field input:focus-visible,
.join-field select:focus-visible,
.join-field textarea:focus-visible {
  outline: none;
  border-color: var(--azure);
}

.join-field textarea {
  min-height: 130px;
  resize: vertical;
}

/* dropdowns match the text fields, with a navy chevron in place of the browser's arrow */
.join-field select {
  appearance: none;
  padding-right: 44px;
  background: var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23002848' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 18px center;
  cursor: pointer;
}

.join-form .button {
  justify-self: start;
}

.join-hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.join-note {
  max-width: 640px;
  margin-top: 24px;
  color: var(--ink);
  font-size: 1.05rem;
}



@media (max-width: 700px) {
  .join-form {
    grid-template-columns: minmax(0, 1fr);
  }
}

.section-more { margin: 34px 0 0; }

/* Conferences & community posters (home). Ported from the card lab, study
   "Swiss, city code, marked": A-series proportion, every inner size in cqw, so
   the whole poster scales with the column width. */
.conference-posters .posters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}

.conference-posters .poster {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 1 / 1.4142;
  container-type: inline-size;
  color: var(--navy);
  background: #fff;
  box-shadow: 0 1px 2px rgba(0, 40, 72, .06), 0 10px 30px -12px rgba(0, 40, 72, .18);
  transition: transform 500ms var(--ease-smooth-out), box-shadow 500ms var(--ease-smooth-out);
}

.conference-posters .poster:hover {
  transform: translateY(-4px);
  box-shadow: 0 2px 4px rgba(0, 40, 72, .08), 0 22px 44px -16px rgba(0, 40, 72, .30);
}

.conference-posters .poster * { margin: 0; }
.conference-posters .m { position: absolute; }
.conference-posters .tn { font-variant-numeric: tabular-nums; }

.conference-posters .dot {
  display: inline-block;
  width: 2.4cqw;
  height: 2.4cqw;
  border-radius: 50%;
  background: var(--green);
  margin-right: 2cqw;
  vertical-align: .15em;
}

.conference-posters .p11 .kicker {
  left: 7cqw;
  top: 7cqw;
  right: 7cqw;
  display: flex;
  justify-content: space-between;
  font-size: 3.4cqw;
  font-weight: 500;
  letter-spacing: .02em;
}

.conference-posters .p11 .kicker span:last-child { color: #8b939d; }

.conference-posters .p11 .theme {
  left: 7cqw;
  right: 7cqw;
  top: 18cqw;
  font-size: 31cqw;
  font-weight: 700;
  letter-spacing: -0.06em;
  line-height: .86;
}

.conference-posters .p11 .theme i {
  font-style: normal;
  color: var(--azure);
}

.conference-posters .p11 .lede {
  left: 7cqw;
  right: 7cqw;
  top: 50cqw;
  font-size: 4.6cqw;
  font-weight: 500;
  letter-spacing: -0.01em;
}

.conference-posters .p11 .rows {
  left: 7cqw;
  right: 7cqw;
  bottom: 7cqw;
}

.conference-posters .p11 .row {
  display: grid;
  grid-template-columns: 22cqw minmax(0, 1fr);
  padding: 2.6cqw 0;
  border-top: .35cqw solid rgba(0, 40, 72, .16);
  font-size: 3.4cqw;
  line-height: 1.3;
}

.conference-posters .p11 .row:last-child { border-bottom: .35cqw solid rgba(0, 40, 72, .16); }
.conference-posters .p11 .row span:first-child { color: #8b939d; }
.conference-posters .p11 .row span:last-child { font-weight: 500; }

.conference-posters .p11 .mark {
  width: 104cqw;
  right: -45cqw;
  bottom: -35cqw;
  opacity: .035;
}

.conference-posters .p11.next { background: var(--navy); color: #fff; }
.conference-posters .p11.next .kicker span:last-child { color: rgba(255, 255, 255, .6); }
.conference-posters .p11.next .theme i { color: var(--accent-blue); }
.conference-posters .p11.next .row { border-color: rgba(255, 255, 255, .18); }
.conference-posters .p11.next .row span:first-child { color: rgba(255, 255, 255, .55); }
.conference-posters .p11.next .mark { filter: brightness(0) invert(1); }

@media (max-width: 1000px) {
  .conference-posters .posters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .conference-posters .posters { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
}

@media (max-width: 420px) {
  .conference-posters .posters { grid-template-columns: 1fr; }
}

/* Conferences band (/about/) reuses the poster cards, four across */
.about-conferences .posters { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.conference-posters .poster.is-hidden { display: none; }

.conference-posters .poster.is-revealing {
  animation: conference-reveal 620ms cubic-bezier(0.22, 0.61, 0.36, 1) both;
}

@media (max-width: 1000px) {
  .about-conferences .posters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .about-conferences .posters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 420px) {
  .about-conferences .posters { grid-template-columns: 1fr; }
}

/* Click a conference card to flip it and read the event detail */
.conference-posters .poster {
  perspective: 1400px;
  cursor: pointer;
  background: transparent;
  box-shadow: none;
  overflow: visible;
  outline: none;
}

.conference-posters .poster:hover,
.conference-posters .poster:focus-visible {
  transform: translateY(-4px);
  box-shadow: none;
}

.conference-posters .poster-inner {
  position: absolute;
  inset: 0;
  transform-style: preserve-3d;
  transition: transform 700ms var(--ease-smooth-out);
}

.conference-posters .poster.is-flipped .poster-inner { transform: rotateY(180deg); }

.conference-posters .poster-face {
  position: absolute;
  inset: 0;
  overflow: hidden;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  color: var(--navy);
  background: #fff;
  box-shadow: 0 1px 2px rgba(0, 40, 72, .06), 0 10px 30px -12px rgba(0, 40, 72, .18);
}

.conference-posters .poster:hover .poster-face {
  box-shadow: 0 2px 4px rgba(0, 40, 72, .08), 0 22px 44px -16px rgba(0, 40, 72, .30);
}

.conference-posters .poster.p11.next .poster-face.front { background: var(--navy); color: #fff; }
/* the navy belongs to the front face only; on the card itself it showed as a block behind the lifted, flipping faces */
.conference-posters .poster.p11.next { background: transparent; }

.conference-posters .poster:focus-visible .poster-face {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
}

.conference-posters .poster-face.back {
  transform: rotateY(180deg);
  overflow: hidden;
  padding: 0;
  background: var(--navy);
  color: #fff;
}

.conference-posters .poster-face.back .back-inner {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: safe center;
  gap: 2.6cqw;
  overflow: auto;
  padding: 7cqw;
}

.conference-posters .back-kicker {
  font-size: 3.7cqw;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .58);
}

.conference-posters .back-venue {
  font-size: 7.8cqw;
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -0.02em;
  color: #fff;
}

.conference-posters .back-host { font-size: 4.6cqw; color: var(--accent-blue); }

.conference-posters .back-body {
  font-size: 4.5cqw;
  line-height: 1.45;
  color: rgba(255, 255, 255, .82);
}

.conference-posters .poster .back-foot {
  display: flex;
  justify-content: space-between;
  gap: 2cqw;
  margin-top: auto;
  padding-top: 3cqw;
  border-top: .35cqw solid rgba(255, 255, 255, .18);
  font-size: 3.7cqw;
  color: rgba(255, 255, 255, .6);
}

.board-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
}

.board-grid .person-card {
  width: auto;
  flex: none;
}

@media (max-width: 1100px) {
  .board-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 820px) {
  .board-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 520px) {
  .board-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.conference-posters .poster-face.front .poster-photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---------- Home, undocked (desktop): hamburger that docks the menu bar ---------- */
@media (min-width: 961px), (min-width: 901px) and (min-height: 1100px) {
  .home .site-header.dock-header:not(.scrolled) .menu-toggle {
    display: flex;
    position: absolute;
    grid-area: auto;
    top: calc(var(--header-logo-clearance) - 16px);
    right: calc(var(--gutter) + 20px);
    z-index: 3;
  }

  .home .site-header.dock-header:not(.scrolled) .menu-toggle span {
    background: var(--navy);
  }
}

/* ---------- Home masthead: lift the hero content (all of it but the logo) ---------- */
.home .hero-inner,
.home .hero-stats {
  transform: translateY(-24px);
}

/* the stat row sits a little higher again than the hero copy beside it */
.home .hero-stats {
  transform: translateY(-44px);
}

/* desktop: the home hero stats match the About hero stats' spacing and type */
@media (min-width: 1101px) {
  .home .hero-stats {
    transform: none;
    margin-top: clamp(40px, 5vw, 76px);
  }

  .home .hero-stats dd {
    font-size: clamp(1.8rem, 2.4vw, 2.6rem);
  }
}

/* Board cards with a bio flip like the conference cards: click to read it */
.person-card.is-flippable {
  container-type: inline-size;
  perspective: 1400px;
  cursor: pointer;
  outline: none;
  transition: transform var(--duration-quick) var(--ease-smooth-out);
}

.person-card.is-flippable:hover,
.person-card.is-flippable:focus-visible {
  transform: translateY(-4px);
}

.person-card .person-inner {
  position: relative;
  transform-style: preserve-3d;
  transition: transform 700ms var(--ease-smooth-out);
}

.person-card.is-flipped .person-inner { transform: rotateY(180deg); }

.person-card .person-face {
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.person-card .person-face.front { position: relative; }

.person-card.is-flippable:focus-visible .person-face {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
  border-radius: var(--radius-md);
}

.person-card .person-face.back {
  position: absolute;
  inset: 0;
  transform: rotateY(180deg);
  overflow: hidden;
  border-radius: var(--radius-md);
  corner-shape: squircle;
  background: var(--navy);
  color: #fff;
}

.person-card .back-inner {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  gap: 2.6cqw;
  overflow: auto;
  padding: 7cqw;
}

.person-card .back-kicker {
  font-size: 3.7cqw;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .58);
}

.person-card .back-name {
  margin: 0;
  font-size: 7.8cqw;
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -0.02em;
  color: #fff;
}

/* the name reads as the link that flips the card */
.person-card.is-flippable .person-name,
.person-card.is-flippable .back-name {
  cursor: pointer;
  transition: color var(--duration-quick) var(--ease-smooth-out);
}

.person-card.is-flippable .person-name:hover,
.person-card.is-flippable .back-name:hover {
  text-decoration: underline;
  text-underline-offset: .15em;
  text-decoration-thickness: 1px;
}

.person-card.is-flippable .person-name:hover { color: var(--azure); }
.person-card.is-flippable .back-name:hover { color: var(--accent-blue); }

.person-card .back-body {
  font-size: 4.5cqw;
  line-height: 1.45;
  color: rgba(255, 255, 255, .82);
}

.person-card .back-body p { margin: 0 0 .8em; }

.person-card .back-foot {
  display: flex;
  justify-content: space-between;
  gap: 2cqw;
  margin-top: auto;
  padding-top: 3cqw;
  border-top: .35cqw solid rgba(255, 255, 255, .18);
  font-size: 3.7cqw;
  color: rgba(255, 255, 255, .6);
}

/* only the face showing takes clicks: some browsers hit-test the hidden face */
.person-card .person-face.back,
.person-card.is-flipped .person-face.front { pointer-events: none; }
.person-card.is-flipped .person-face.back { pointer-events: auto; }

/* The AICA to CapFive announcement bar. It sits in normal flow at the top of the
   home page, so the hero starts below it; the fixed header is offset by its
   height (--banner-h, kept current by site.js) and falls back to the top once
   the bar has scrolled away. */
.home-banner {
  position: relative;
  background: var(--accent-blue);
  color: #fff;
  padding: 8px clamp(22px, 4vw, 80px);
  text-align: center;
  font-size: clamp(0.78rem, 0.85vw, 0.875rem);
  line-height: 1.35;
}

@media (max-width: 759px) {
  .home-banner {
    padding: 7px 16px;
    font-size: 0.72rem;
  }
}

/* the bar adds 45px at the top, so the hero gives that much back */
.home .hero-inner {
  padding-top: 51px;
}

/* stacked phone/tablet layout: the copy still has to clear the full-size logo under the bar */
@media (max-width: 900px) {
  .home .hero-inner {
    padding-top: 200px;
  }
}

/* home Services on phones/tablets: the overlaid eyebrow and headline (placed by the
   page's inline styles) sit lower on the photo, and the list gets room before the
   next section */
@media (max-width: 900px) {
  .home .services-section .c-halfimg-body .eyebrow {
    top: calc(var(--gutter) + 40px);
  }

  .home .services-section .c-halfimg-body h2 {
    top: calc(var(--gutter) + 70px);
  }

  .home .services-section {
    padding-bottom: clamp(64px, 16vw, 96px);
  }
}

/* phones: the copy column fills the first screen, so the globe starts just
   below the fold instead of showing a cut-off sliver */
@media (max-width: 759px) {
  /* the logo and menu button sit lower under the bar, and the copy leaves a
     clear gap below the logo instead of crowding the top of the screen */
  body.home:not(.menu-open) .site-header.dock-header:not(.scrolled) {
    padding-top: 44px;
  }

  .home .hero-inner {
    padding-top: 262px;
  }

  .home .hero-copy-col {
    min-height: calc(100svh - 298px);
  }
}

/* home phones: the logo lives in the hero and scrolls away with it, rather than
   riding in the fixed header and switching off once the page moves */
.hero-mobile-logo {
  display: none;
}

/* every hamburger-menu width (phones, iPads, up to 1100px) */
@media (max-width: 1100px) {
  .hero-mobile-logo {
    position: absolute;
    z-index: 2;
    top: 44px;
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 19px);
    display: block;
  }

  .hero-mobile-logo img {
    display: block;
    width: auto;
    height: 132px;
  }

  body.home:not(.menu-open) .site-header.dock-header .brand-lockup {
    display: none;
  }
}

/* phones/tablets: the visible logo mark (inset ~19px inside its file) lines up
   with the page copy edge, 28px + the hero gutter, from the header's 40px padding */
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  body:not(.menu-open) .site-header.dock-header:not(.scrolled) .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 19px - 40px);
  }

  /* the open menu places its logo on the links' edge from any scroll position */
  body.menu-open .site-header.dock-header .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    left: 32px;
  }

  /* with the menu open the home header ignores the announcement bar, so the
     logo and close button sit where they do on every other page */
  body.home.menu-open .site-header.dock-header,
  body.home.menu-open .site-header.dock-header.scrolled {
    top: 0;
  }
}

@media (min-width: 901px) and (max-height: 980px) {
  .home .hero-inner {
    padding-top: calc(var(--header-logo-clearance) + 152px - 69px);
  }
}

.home-banner a { color: #fff; text-decoration: underline; }

.home .site-header { top: var(--banner-h, 0px); }

.home .site-header.dock-header.scrolled { top: calc(var(--banner-h, 0px) + 32px); }

@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .home .site-header.dock-header.scrolled { top: var(--banner-h, 0px); }
}

.about-intro .a7-lede {
  max-width: 62ch;
  margin: 26px 0 0;
  color: var(--muted);
  font-size: var(--type-body-lg);
  line-height: 1.65;
}

/* home, desktop: the big logo sits higher so it clears the hero eyebrow, and the globe rises with it */
@media (min-width: 901px) {
  .home .site-header.dock-header:not(.scrolled) .brand-lockup {
    top: -40px;
  }

  .home .hero-visual {
    translate: 0 -40px;
  }
}

/* an office reached from a link (the home globe) is marked briefly */
@keyframes capfive-office-target {
  from { background: rgba(31, 163, 209, 0.16); }
  to { background: transparent; }
}

.dir-offices li.is-target {
  border-radius: var(--radius-sm);
  animation: capfive-office-target 2.4s ease-out both;
}

.sector-transactions {
  padding: clamp(104px, 9vw, 144px) 0 clamp(80px, 10vw, 144px);
  background: var(--paper);
}

.sector-transactions-inner {
  width: var(--container);
  max-width: 1040px;
  margin-inline: auto;
}

.sector-chart-3d {
  position: relative;
  max-width: 940px;
  margin-top: 40px;
}

.sector-chart-3d-stage {
  position: relative;
}

.sector-chart-3d-stage canvas {
  position: absolute;
  left: 0;
  display: block;
  width: 100%;
  pointer-events: none;
}

.sector-chart-3d-label {
  position: absolute;
  top: 0;
  left: 0;
  color: var(--navy);
  text-align: center;
  pointer-events: none;
  will-change: transform;
}

.sector-chart-3d-label.is-count {
  font-size: 1.15rem;
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.sector-chart-3d-label.is-name {
  font-size: 0.8rem;
  line-height: 1.2;
  /* set vertically, reading upward and ending just under its bar (js/sector-chart.js rotates it);
     long names wrap onto a second line rather than running tall */
  width: max-content;
  max-width: 116px;
  text-align: right;
  transform-origin: 0 0;
}

.sector-chart-3d-tip {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  background: #000;
  color: var(--paper);
  font-size: 0.8rem;
  line-height: 1.35;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: 0 8px 20px -10px rgba(0, 0, 0, 0.6);
}

.sector-chart-3d-tip::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 100%;
  border: 6px solid transparent;
  border-left-color: #000;
  transform: translateY(-50%);
}

.sector-chart-3d-tip.is-flipped::after {
  right: 100%;
  left: auto;
  border-left-color: transparent;
  border-right-color: #000;
}

.sector-chart-3d-tip strong {
  display: block;
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
}

.sector-chart-flat {
  display: grid;
  gap: 18px;
  margin: 48px 0 0;
  padding: 0;
  list-style: none;
}

.sector-chart-flat-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  color: var(--navy);
  font-size: 0.9rem;
  line-height: 1.35;
}

.sector-chart-flat-head span:last-child {
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.sector-chart-flat-track {
  display: block;
  height: 10px;
  margin-top: 8px;
  border-radius: 999px;
  background: var(--ghost);
  overflow: hidden;
}

.sector-chart-flat-bar {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--accent-blue);
}

@media (min-width: 1101px) {
  .sector-transactions.has-3d .sector-chart-flat {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
  }
}

@media (max-width: 759px) {
  .sector-chart-3d {
    display: none;
  }

  .sector-chart-flat-head {
    font-size: 0.88rem;
    line-height: 1;
  }
}

/* ---------- Phones: leadership, conferences and "Latest deals in" strips become snap carousels ---------- */
@media (max-width: 540px) {
  .page-about .board-grid,
  .about-conferences .posters,
  .service-deals .deals-grid {
    display: flex;
    gap: 16px;
    margin-inline: calc(50% - 50vw);
    padding: 4px var(--rail-inset) 24px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--rail-inset);
    scrollbar-width: none;
    touch-action: pan-x pan-y;
    overscroll-behavior-x: contain;
  }

  .page-about .board-grid::-webkit-scrollbar,
  .about-conferences .posters::-webkit-scrollbar,
  .service-deals .deals-grid::-webkit-scrollbar {
    display: none;
  }

  .page-about .board-grid > *,
  .about-conferences .posters > *,
  .service-deals .deals-grid > * {
    flex: 0 0 min(78vw, 300px);
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }

  /* every conference rides in the carousel, so the "More" reveal is not needed */
  .about-conferences .poster.is-hidden {
    display: block;
  }

  .about-conferences .conferences-more {
    display: none;
  }

  .snap-dots {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-top: 4px;
  }

  .snap-dots button {
    width: 8px;
    height: 8px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: var(--line-strong);
    cursor: pointer;
    transition: width 200ms ease, background 200ms ease;
  }

  .snap-dots button[aria-current="true"] {
    width: 22px;
    background: var(--accent-blue);
  }

  /* two dozen conferences would make a wall of dots; the peeking posters show it scrolls */
  .about-conferences .snap-dots {
    display: none;
  }
}

/* About hero on phones: the tall crop centres on the adviser (about 39% across the photo) */
@media (max-width: 540px) {
  .page-about .page-block.has-split::before {
    background-position: 36% 50%;
  }
}

/* Network map on phones and iPads: runs edge to edge so the continents and pins read at a usable size */
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  #member-firms .world-map,
  .network-locations .world-map {
    margin-inline: calc(50% - 50vw);
    border-radius: 0;
    aspect-ratio: 360 / 160;
  }
}

/* Services "Local expertise, global reach" on phones: the photo runs edge to edge */
@media (max-width: 540px) {
  .page-services .split-media {
    margin-inline: calc(50% - 50vw);
  }

  .page-services .split-media img {
    width: 100%;
    border-radius: 0;
  }
}

/* "Latest deals in …" and the other split headings wrap to several lines on phones,
   so they take a heading's line height instead of body copy's */
@media (max-width: 540px) {
  .service-deals-title,
  .split-title {
    line-height: 1.2em;
  }
}

/* Contact and Join forms on phones: the CapFive mark behind the form reads at a usable size
   (the pages' inline styles size it for desktop, so this out-specifies them) */
@media (max-width: 540px) {
  body #enquiry .join-watermark,
  body #membership .join-watermark {
    right: -58vw;
    bottom: -22vw;
    width: 118vw;
    max-width: none;
  }
}

/* iPad-width menu: links and logo mark sit on the page copy edge (28px + the hero
   gutter) rather than the phone's 40px, and the logo rides higher above the links */
@media (min-width: 541px) and (max-width: 900px), (min-width: 541px) and (max-width: 960px) and (max-height: 1099px) {
  .mobile-nav-inner {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px));
  }

  body.menu-open .site-header.dock-header .dock-group .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 40px);
  }

  body.menu-open .site-header.dock-header .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    transform: translate(-20px, calc(50svh - 329px));
  }
}

/* upright iPad mini and Air menu: like the iPad Pro, the links and logo sit further
   right and the logo rides higher, leaving more room above the links */
@media (min-width: 700px) and (max-width: 900px) and (min-height: 1000px) {
  .mobile-nav-inner {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px) + 80px);
  }

  body.menu-open .site-header.dock-header .dock-group .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 40px + 80px);
  }

  body.menu-open .site-header.dock-header .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    transform: translate(-20px, calc(50svh - 412px));
  }

  /* links set like the iPad Pro menu: larger type, more air, underline on hover */
  .mobile-nav.open {
    padding-top: calc(50svh - 172px);
  }

  .menu-list a {
    font-size: 2.1rem;
    padding: 10px 0;
  }

  .menu-list a:hover,
  .menu-list a:focus-visible {
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 6px;
  }
}

/* iPad-width home: the logo and hero copy step in from the edge, sit lower,
   and leave a clear gap between the logo and the copy */
@media (min-width: 541px) and (max-width: 900px) {
  .home .hero-inner {
    padding-top: 272px;
  }

  body.home:not(.menu-open) .site-header.dock-header:not(.scrolled) {
    padding-top: 44px;
  }

  body.home:not(.menu-open) .site-header.dock-header:not(.scrolled) .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 19px - 40px);
  }
}

/* iPad widths: a wider page frame on both sides (60px rather than the phone's 28px) */
@media (min-width: 541px) and (max-width: 900px), (min-width: 541px) and (max-width: 960px) and (max-height: 1099px) {
  :root {
    --side: 60px;
    --container: calc(100vw - 2 * var(--side));
    --gutter: var(--side);
  }

  /* split heroes and image-and-copy rows pad their own copy; it lands on the same edge */
  body .page-block.has-split .split-copy,
  body .why-feature .why-feature-body {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px));
    padding-right: calc(var(--side) + clamp(22px, 4vw, 80px));
  }
}

/* Home Services (photo with overlaid heading): the paragraph gets more air below the photo */
@media (max-width: 900px) {
  .home .services-section .c-halfimg .c-halfimg-body {
    margin-top: 52px;
  }
}

/* ...and at iPad widths the overlaid eyebrow/headline and the copy below share the page margin,
   with the headline set lower on the photo */
@media (min-width: 541px) and (max-width: 900px) {
  .home .services-section .c-halfimg .c-halfimg-body {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px));
    padding-right: calc(var(--side) + clamp(22px, 4vw, 80px));
  }

  .home .services-section .c-halfimg-body .eyebrow,
  .home .services-section .c-halfimg-body h2 {
    left: calc(var(--side) + clamp(22px, 4vw, 80px));
    right: calc(var(--side) + clamp(22px, 4vw, 80px));
  }

  .home .services-section .c-halfimg-body .eyebrow {
    top: 96px;
  }

  .home .services-section .c-halfimg-body h2 {
    top: 130px;
  }
}

/* iPad widths: sections that sat on the bare 60px frame step in to the shared copy edge */
@media (min-width: 541px) and (max-width: 900px), (min-width: 541px) and (max-width: 960px) and (max-height: 1099px) {
  .page-section,
  .sector-transactions-inner {
    padding-left: clamp(22px, 4vw, 80px);
    padding-right: clamp(22px, 4vw, 80px);
  }

  body .precision-section {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px));
    padding-right: calc(var(--side) + clamp(22px, 4vw, 80px));
  }

  /* footer: one copy edge, address | services | pages across the top, sectors in three columns below */
  .site-footer {
    padding: 64px calc(var(--side) + clamp(22px, 4vw, 80px)) 40px;
    gap: 32px;
  }

  .footer-logo {
    margin-bottom: 0;
  }

  .footer-logo img {
    margin-left: -17px;
  }

  .footer-cols {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 40px 28px;
  }

  .footer-contact {
    grid-column: 1;
    grid-row: 1;
  }

  .footer-col[aria-label="Services"] {
    grid-column: 2;
    grid-row: 1;
  }

  .footer-col--stack {
    grid-column: 3;
    grid-row: 1;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }

  .footer-col[aria-label="Sectors"] {
    grid-column: 1 / -1;
    grid-row: 2;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px 28px;
  }

  .footer-col[aria-label="Sectors"] h5 {
    grid-column: 1 / -1;
  }

  .footer-legal {
    grid-column: 1 / -1;
  }
}

/* iPad widths: a slightly smaller home globe, three leadership cards per row,
   and a footer address that fits its column */
@media (min-width: 541px) and (max-width: 900px), (min-width: 541px) and (max-width: 960px) and (max-height: 1099px) {
  .movement-image {
    width: 75%;
    margin-inline: auto;
  }

  .page-about .board-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }

  .footer-addr {
    font-size: 1rem;
  }
}

/* iPad widths: About conferences run three across (six shown before "More") */
@media (min-width: 541px) and (max-width: 900px), (min-width: 541px) and (max-width: 960px) and (max-height: 1099px) {
  .about-conferences .posters {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* iPad widths: the Deals listing runs three cards across */
@media (min-width: 541px) and (max-width: 900px), (min-width: 541px) and (max-width: 960px) and (max-height: 1099px) {
  .page-deals .deals-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
  }
}

/* iPads held sideways (and iPad Pro upright), 961-1100px: the full nav doesn't fit, so the
   header uses the same hamburger menu as phones and smaller iPads (rules mirrored from the
   960px blocks above) */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .site-header {
    grid-template-columns: auto 1fr auto;
  }

  .site-nav,
  .header-action,
  .header-right {
    display: none;
  }

  .menu-toggle {
    display: flex;
  }
  .site-header.dock-header {
    padding: 20px 20px 24px;
    grid-template-columns: auto 1fr auto;
  }

  .site-header.dock-header .logo-full { height: 132px; }

  .site-header.dock-header .logo-mark { height: 46px; }

  .site-header.dock-header.scrolled {
    left: 0;
    right: 0;
    top: 0;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 28px;
    padding: 20px;
    background: rgba(244, 246, 250, 0.96);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 1px 0 var(--line);
  }

  .site-header.dock-header.scrolled .logo-full { height: 40px; }

  .site-header.dock-header.scrolled .dock-group {
    display: contents;
    padding: 0;
    background: none;
    backdrop-filter: none;
  }

  .site-header.dock-header.scrolled .dock-group .brand-lockup {
    position: relative;
    left: auto;
    top: auto;
    transform: none;
  }

  .site-header.dock-header.scrolled .brand-lockup {
    display: none;
  }

  .site-header.dock-header .menu-toggle {
    display: flex;
    position: absolute;
    top: 0;
    right: 20px;
    grid-column: 3;
    justify-self: end;
    z-index: 1;
  }

  .site-header.dock-header.scrolled {
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: none;
  }

  .mobile-nav.open {
    position: fixed;
    inset: 0;
    z-index: 90;
    overflow-y: auto;
    padding-top: calc(50svh - 97px);
  }

  .site-header.dock-header {
    padding-left: 40px;
  }

  .mobile-nav-inner {
    width: 100%;
    max-width: none;
    padding: 0 40px;
  }

  body.menu-open .site-header.dock-header .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    display: inline-grid;
    /* the logo file has ~20px of empty margin; pull the visible mark onto the links' edge */
    transform: translate(-20px, calc(50svh - 289px));
  }

  .brand-lockup {
    transition: opacity var(--duration-fast) var(--ease-smooth-out),
      visibility var(--duration-fast) var(--ease-smooth-out);
  }

  body.menu-open .site-header.dock-header.scrolled {
    padding-left: 40px;
  }

  body.menu-open .site-header.dock-header .logo-full {
    height: 132px;
    opacity: 1;
  }

  body.menu-open .site-header.dock-header .logo-mark {
    opacity: 0;
  }


  body:not(.menu-open) .site-header.dock-header:not(.scrolled) .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 19px - 40px);
  }

  /* the open menu places its logo on the links' edge from any scroll position */
  body.menu-open .site-header.dock-header .brand-lockup {
    left: 0;
  }

  /* with the menu open the home header ignores the announcement bar, so the
     logo and close button sit where they do on every other page */
  body.home.menu-open .site-header.dock-header,
  body.home.menu-open .site-header.dock-header.scrolled {
    top: 0;
  }

  .mobile-nav-inner {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px) + 50px);
  }

  body.menu-open .site-header.dock-header .dock-group .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 40px + 50px);
  }
}

/* 961-1100px home: the logo sits clear of the banner, level with the menu button,
   with room below it before the hero copy */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  body.home:not(.menu-open) .site-header.dock-header:not(.scrolled) {
    padding-top: 44px;
    align-items: start;
  }

  body.home:not(.menu-open) .site-header.dock-header:not(.scrolled) .menu-toggle {
    top: 44px;
  }

  body.home:not(.menu-open) .site-header.dock-header:not(.scrolled) .brand-lockup {
    top: 0;
  }

  .home .hero-inner {
    padding-top: 205px;
  }

  /* the footer shares the page copy edge */
  .site-footer {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px));
    padding-right: calc(var(--side) + clamp(22px, 4vw, 80px));
  }

  .footer-logo img {
    margin-left: -17px;
  }
}

/* 961-1100px: sections on the bare frame step in to the shared copy edge (as at iPad portrait) */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .page-section,
  .sector-transactions-inner {
    padding-left: clamp(22px, 4vw, 80px);
    padding-right: clamp(22px, 4vw, 80px);
  }

  body .precision-section {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px));
    padding-right: calc(var(--side) + clamp(22px, 4vw, 80px));
  }
}

/* 961-1100px: "Latest deals in" strips run three across, so a fourth card would sit alone */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .service-deals .deals-grid > :nth-child(n + 4) {
    display: none;
  }
}

/* iPads (portrait and landscape): smaller filter tags on Deals and the other tag filters */
@media (min-width: 541px) and (max-width: 1100px) {
  .tag-toggle span {
    min-height: 28px;
    padding: 0 12px;
    font-size: 0.76rem;
  }

  .tag-group-label {
    font-size: 0.74rem;
  }
}

/* 961-1100px deal pages: each "latest deals" strip is one row of three */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .single-deal .card-grid--four {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .single-deal .card-grid--four > :nth-child(n + 4) {
    display: none;
  }
}

/* deal pages: the deal team's cards take a subtler squircle than the site's people cards */
.single-deal .person-card img {
  border-radius: 12px;
  corner-shape: squircle;
}

.single-deal .person-card .person-meta {
  border-radius: 9px;
  corner-shape: squircle;
}

/* deal pages: the whole deal team card opens the member's page (site.js) */
.person-card:not(.is-flippable):has(.person-name a) {
  cursor: pointer;
}

/* Home "Why CapFive": more air between the heading and the intro */
.home .why-feature .why-feature-lede {
  margin-top: 28px;
}

.home .why-feature .why-feature-points {
  margin-top: 36px;
}

/* Home "Why CapFive": the points run a little wider than the default */
.home .why-feature .why-feature-points p {
  max-width: 460px;
}

/* a heading's blue line fills each line before wrapping; balanced wrapping would
   pull words down early to make its lines equal ("…the right / people on…") */
.heading-sentence-break {
  text-wrap: pretty;
}

/* "Why" feature points sit close together */
.why-feature .why-feature-points {
  gap: 10px;
}

/* "Why" feature points read at the same size as the intro paragraph above them */
.why-feature .why-feature-points p {
  font-size: 1.125rem;
  line-height: 1.55;
  letter-spacing: var(--tracking-lede);
}

/* Home "Industry Sectors": the intro paragraph runs wider, across the heading row */
.sectors-section .section-heading .sectors-intro {
  grid-column: 1 / -1;
  max-width: 690px;
}

/* Home Services list: the four services read as ordinary underlined links at body size */
.home .services-section .c-roll-title {
  font-size: 1.05rem;
  font-weight: var(--weight-regular);
  letter-spacing: normal;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

/* Home Services (side-by-side layouts): the text block sits centred against the photo */
@media (min-width: 901px) {
  .home .services-section .c-halfimg .c-halfimg-body {
    align-self: center;
    padding-top: 0;
    padding-bottom: 0;
  }
}

/* 961-1100px home (iPad landscape): calmer hero copy, the globe centred on the text
   block, and the stats row clear of the buttons */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .hero-copy {
    max-width: 400px;
    font-size: 1rem;
    line-height: 1.42;
  }

  .home .hero-actions {
    margin-top: 64px;
  }

  .home .hero-inner {
    align-items: center;
  }

  .home .hero-visual {
    align-self: center;
    margin-top: 0;
  }

  .home .hero-globe {
    width: 500px;
    max-width: none;
    flex: none;
    margin-inline: calc((100% - 500px) / 2);
    transform: translateY(44px);
  }

  .home .hero-stats {
    transform: none;
    margin-top: 48px;
  }
}

/* Home "Why CapFive": intro and points at body size */
.home .why-feature .why-feature-lede,
.home .why-feature .why-feature-points p {
  font-size: 1rem;
}

/* 961-1100px home: the recent deals cards run a little smaller */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .deal-rail .deal-card {
    zoom: 0.68;
  }

  .home .deals-section .section-heading {
    margin-bottom: 36px;
  }

  .home .deals-section {
    padding-top: 64px;
    padding-bottom: 56px;
  }

  .home .deals-section .deals-cta {
    margin-top: 8px;
  }

  .home .deals-section .section-heading h2 {
    margin-bottom: 0;
  }

  .home .deals-section .deals-intro {
    margin: 6px 0 0;
    font-size: 1rem;
    line-height: 1.55;
  }
}

/* 961-1100px home: "For independent M&A firms" copy steps in a little from the page edge */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .mna-section .mna-lab-copy {
    margin-left: 110px;
    width: 460px;
    max-width: none;
  }

  .home .sectors-section .section-heading .sectors-intro {
    max-width: 440px;
    font-size: 1em;
  }

  /* Industry Sectors cards run smaller, like the recent deals cards */
  .home .sc-slide {
    zoom: 0.66;
  }

  /* Recent deals and Industry Sectors headings share that inset */
  .home .deals-section .section-heading,
  .home .sectors-section .section-heading {
    margin-left: 110px;
  }

  /* the network artwork shifts right too, fading in from its left edge */
  .mna-section .mna-lab-art.is-full {
    left: 28%;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 25%);
    mask-image: linear-gradient(90deg, transparent, #000 25%);
  }
}

/* iPad Pro (961-1100px) home: the Why CapFive and Services bands fill the screen,
   their copy centred */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .why-feature {
    min-height: 100vh;
  }

  .home .why-feature-body {
    display: grid;
    align-content: center;
    padding: clamp(72px, 8vw, 140px) clamp(28px, 8vw, 120px);
  }

  .home .services-section .c-halfimg {
    height: 100vh;
  }

  .home .services-section .c-halfimg .c-halfimg-body {
    display: grid;
    align-content: center;
    padding: clamp(72px, 8vw, 140px) clamp(28px, 8vw, 120px);
  }

  .home .why-feature .why-feature-lede,
  .home .why-feature .why-feature-points p {
    max-width: 320px;
  }

  body.home .services-section .c-halfimg-body .c-lede {
    max-width: 320px;
    margin-top: 28px;
  }

  body.home .services-section .c-halfimg-body .c-roll-desc {
    max-width: 320px;
  }
}

/* iPad: page blocks and the why-inner take a wider side padding */
@media (min-width: 541px) and (max-width: 1100px) {
  .page-block > .block-inner,
  .why-inner {
    padding-left: clamp(22px, 8vw, 80px);
    padding-right: clamp(22px, 8vw, 80px);
  }
}

/* iPad Pro: the home body runs without its side padding */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  body.home .hero-inner,
  body.home .hero-stats,
  body.home .network-section,
  body.home .why-inner,
  body.home .movement-section,
  body.home .mna-lab,
  body.home .contact-inner,
  body.home .home-services-gallery-inner,
  body.home .page-head,
  body.home .page-section,
  body.home .deal-admin-bar,
  body.home .precision-intro,
  body.home .precision-grid,
  body.home .section-heading,
  body.home .page-block > .block-inner {
    padding-left: 0;
    padding-right: 0;
  }

  /* the hero stats line up on the hero copy's left edge */
  body.home .hero-stats {
    padding-left: 26px;
  }
}

/* iPad Pro: the Global infrastructure band fills the screen */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .movement-section {
    min-height: 100vh;
  }
}

/* iPad Pro: the Industry Sectors band fills the screen, its rail edge to edge, no side fades */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .sectors-section {
    min-height: 100vh;
    padding-top: 240px;
  }

  #sectors-title {
    font-size: clamp(1.8rem, 4.6vw, 2.79rem);
    line-height: 1em;
  }

  .sc-rail {
    --sc-inset: calc(var(--gutter) + 110px);
    --sc-edge: 0px;
    padding-inline: 0;
    margin: 220px calc(50% - 50vw) 0;
  }

  .sc-carousel {
    padding-inline: var(--sc-inset);
    scroll-padding-inline: var(--sc-inset);
    -webkit-mask-image: none;
    mask-image: none;
  }
}

/* 961-1100px home Services: copy sits a little closer to the photo, at body size */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .services-section .c-lede,
  .home .services-section .c-roll-title {
    font-size: 1rem;
  }

  /* Global route network: same text size, and the copy lines up with Services above */
  .home .movement-copy p:not(.eyebrow) {
    font-size: 1rem;
    max-width: 28ch;
  }

  .home .movement-copy {
    max-width: 250px;
    margin-left: -6px;
  }

  .home .movement-copy h2 {
    margin: 14px 0 52px;
  }

  .home .movement-copy .button {
    margin-top: 56px;
  }
}

/* 961-1100px: buttons a size smaller */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .button {
    min-height: 42px;
    min-width: 196px;
    padding: 0 18px;
    font-size: 0.68rem;
  }
}

/* 961-1100px home: the hero logo and copy step in a little from the page edge */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .hero-copy-col {
    padding-left: 50px;
  }

  .hero-mobile-logo {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 19px + 50px);
  }
}

/* 961-1100px open menu: the logo sits a little lower, closer to the links */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  body.menu-open .site-header.dock-header .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup,
  body.home.menu-open .site-header.dock-header:not(.scrolled) .dock-group .brand-lockup {
    top: 0;
    transform: translate(-20px, calc(50svh - 289px));
  }
}

/* 961-1100px: the Transactions by Sector chart runs a little smaller */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .sector-chart-3d {
    max-width: 760px;
    margin-inline: auto;
  }
}

/* ---------- Footer: logo and contact, the main section links, then the policies ----------
   (the side padding comes from the .site-footer rules above, which keep it on the page's
   copy edge at each width) */
body .site-footer.site-footer--simple {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  row-gap: 40px;
  /* the same copy edge as the page sections at every width */
  padding-left: calc((100vw - var(--container)) / 2 + clamp(22px, 4vw, 80px));
  padding-right: calc((100vw - var(--container)) / 2 + clamp(22px, 4vw, 80px));
}

.site-footer--simple .footer-logo img {
  margin-left: -17px;
}

.site-footer--simple .footer-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 24px;
}

.site-footer--simple .footer-logo {
  margin: 0;
}

.site-footer--simple .footer-contact {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-style: normal;
}

.site-footer--simple .footer-addr {
  margin: 0;
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-semibold);
  line-height: 1.5;
}

.site-footer--simple .footer-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 32px;
}

.site-footer--simple .footer-nav a {
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-semibold);
  transition: color var(--duration-quick) var(--ease-in-out);
}

.site-footer--simple .footer-nav a:hover,
.site-footer--simple .footer-nav a:focus-visible {
  color: var(--azure);
}

.site-footer--simple .footer-legal {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 28px;
  margin: 0;
  padding-top: 24px;
  border-top: 1px solid var(--line-strong);
}

.site-footer--simple .footer-legal a,
.site-footer--simple .footer-copy {
  font-size: 0.86rem;
}

.site-footer--simple .footer-copy {
  margin-right: auto;
  color: var(--muted);
}

/* ultrawide pages pad their copy with --pad-x rather than the hero gutter */
@media (min-width: 2200px) {
  body .site-footer.site-footer--simple {
    padding-left: calc((100vw - var(--container)) / 2 + var(--pad-x));
    padding-right: calc((100vw - var(--container)) / 2 + var(--pad-x));
  }
}

/* wide screens: brand on the left, the section links along the right, level with the address */
@media (min-width: 961px), (min-width: 901px) and (min-height: 1100px) {
  body .site-footer.site-footer--simple {
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 48px;
    align-items: end;
  }
}

/* tablets and up: the section links stack in pairs (About over Network, Services over
   Sectors, Deals over Join CapFive), with Contact on its own */
@media (min-width: 541px) {
  .site-footer--simple .footer-nav {
    display: grid;
    grid-auto-flow: column;
    grid-template-rows: repeat(2, auto);
    justify-content: start;
    gap: 12px 48px;
  }
}

/* phones: the section links sit in two even columns */
@media (max-width: 540px) {
  .site-footer.site-footer--simple {
    row-gap: 32px;
  }

  .site-footer--simple .footer-nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 20px;
  }

  .site-footer--simple .footer-copy {
    flex-basis: 100%;
    order: 1;
  }
}

/* Contact and Join heroes once the layout stacks: a taller photo band, copy centred in it */
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .page-block.has-split.contact-hero,
  .page-join main > .page-block.has-split:first-of-type {
    min-height: 540px;
    align-content: center;
  }
}

@media (max-width: 540px) {
  .page-block.has-split.contact-hero,
  .page-join main > .page-block.has-split:first-of-type {
    min-height: 480px;
  }
}

/* iPad portrait home hero (700-960px): text and globe side by side, the globe running
   off the right edge */
@media (min-width: 700px) and (max-width: 900px), (min-width: 700px) and (max-width: 960px) and (max-height: 1099px) {
  .home .hero-inner {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    align-items: center;
    gap: 24px;
  }

  .home .hero-copy {
    max-width: none;
    font-size: 1rem;
    line-height: 1.5;
  }

  .home .hero-actions {
    flex-wrap: wrap;
    gap: 12px;
  }

  .home .hero-visual {
    justify-content: flex-start;
    margin-right: calc(-1 * var(--side) - 160px);
  }

  .home .hero-globe {
    position: relative;
    left: 40px;
    top: -50px;
    width: 600px;
    max-width: none;
    flex: none;
  }

  /* page hero stats (About, Network, Services, Deals) also run in one row */
  .hero-stats.about-stats,
  .page-block.has-split .split-copy-inner .hero-stats.about-stats {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
  }

  .hero-stats.about-stats > div,
  .page-block.has-split .split-copy-inner .hero-stats.about-stats > div {
    padding: 24px 14px 4px 16px;
    border-left: 1px solid var(--line-strong);
  }

  /* "Get in touch": a short, centred headline block */
  .adviser-section #adviser-title {
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
  }

  /* Global infrastructure: the "View locations" button sits on the copy's left edge */
  .home .movement-copy .button {
    margin-left: 0;
    margin-right: 0;
  }

  /* the four stats run in one row, each with its divider, close under the buttons */
  .home .hero-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    transform: translateY(-114px);
    margin-bottom: -70px;
  }

  .home .hero-stats > div {
    padding: 24px 14px 4px 16px;
    border-left: 1px solid var(--line-strong);
  }
}

/* logged-in editors: the header always clears WordPress's toolbar. --banner-h is the home
   banner's bottom edge (0 once it has scrolled away), so the larger of the two wins. Below
   601px the toolbar scrolls away with the page, so nothing is needed there. */
@media (min-width: 601px) and (max-width: 1100px) {
  body.admin-bar .site-header.dock-header,
  body.admin-bar .site-header.dock-header.scrolled {
    top: max(var(--banner-h, 0px), var(--wp-admin--admin-bar--height, 32px));
  }
}

@media (min-width: 1101px) {
  body.admin-bar .site-header.dock-header.scrolled {
    top: calc(max(var(--banner-h, 0px), var(--wp-admin--admin-bar--height, 32px)) + 32px);
  }

  body.admin-bar .site-header.dock-header:not(.scrolled) {
    top: max(var(--banner-h, 0px), var(--wp-admin--admin-bar--height, 32px));
  }
}

/* About "About CapFive": once the photo stacks above the copy the section grows with it,
   rather than holding the side-by-side layout's fixed height */
@media (max-width: 900px) {
  .about-feature {
    height: auto;
  }
}

/* phones, Deals: the folded filters sit close under the listing heading */
@media (max-width: 540px) {
  .page-deals .block-head {
    margin-bottom: 20px;
    padding-bottom: 0;
  }

  .page-deals .block-head h2 {
    margin-bottom: 0;
  }

  /* an opened filter group leaves room between its label and its tags */
  .filter-tags .tag-group--fold .tag-list {
    margin-top: 12px;
  }
}

/* logged-in editors on phones: the header sits under WordPress's toolbar while it is on
   screen (site.js keeps --adminbar-bottom current as the toolbar scrolls away) */
@media (max-width: 600px) {
  body.admin-bar .site-header.dock-header,
  body.admin-bar .site-header.dock-header.scrolled {
    top: max(var(--banner-h, 0px), var(--adminbar-bottom, 0px));
  }
}

/* Network map on phones: a little larger than the screen, its edges running off both sides */
@media (max-width: 540px) {
  #member-firms .world-map,
  .network-locations .world-map {
    margin-left: calc(50% - 60vw - 20px);
    margin-right: calc(50% - 60vw + 20px);
  }

  #member-firms,
  .network-locations {
    overflow-x: clip;
  }
}

/* phones, home: below the fold the globe runs large and centred, the full screen width */
@media (max-width: 540px) {
  /* the stats' centre divider sits in the middle of the screen */
  .home .hero-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 0;
  }

  /* each stat centred in its half of the screen */
  .home .hero-stats > div {
    padding-left: 8px;
    padding-right: 8px;
    border-left: 0;
    text-align: center;
  }

  /* the number is a row of animated digits, so it is centred as a row */
  .home .hero-stats dd {
    justify-content: center;
  }

  .home .hero-globe {
    width: 100vw;
    max-width: none;
    flex: none;
    margin-inline: calc((100% - 100vw) / 2);
    margin-top: 120px;
  }
}

/* phones, home recent deals: each card snaps to the middle of the screen */
@media (max-width: 540px) {
  .home .deal-rail--swipe {
    scroll-padding-inline: 0;
  }

  .home .deal-rail--swipe .deal-track {
    padding-inline: calc((100vw - min(82vw, 340px)) / 2);
  }

  .home .deal-rail--swipe .deal-track > .deal-card {
    scroll-snap-align: center;
  }
}

/* phones, home "Why CapFive" heading: tighter tracking and a narrower measure */
@media (max-width: 540px) {
  .home #why-feature-title {
    max-width: 280px;
    letter-spacing: -0.02em;
  }
}

/* phones: buttons a size smaller, and the "For independent M&A firms" button sits further
   below its paragraph */
@media (max-width: 540px) {
  .button {
    min-height: 42px;
    min-width: 190px;
    padding: 0 18px;
    font-size: 0.68rem;
  }

  .mna-lab-copy .button {
    margin-top: 20px;
  }
}

/* phones: Industry Sectors cards a little smaller */
@media (max-width: 540px) {
  .sc-slide {
    width: min(70vw, 280px);
    padding: 20px 18px;
    border: 0;
  }

  .sectors-section .sc-rail {
    margin-top: 56px;
    margin-bottom: 32px;
  }

  .sc-line {
    font-size: 1.25rem;
  }
}

/* phones and iPads: the hero intro sits a little closer under the headline */
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  .hero-copy-col h1 {
    margin-bottom: 28px;
  }
}

/* phones, About, Network, Services and Deals hero stats: as on Home, two even columns with each number centred over
   its label, no divider lines */
@media (max-width: 540px) {
  .page-about .page-block.has-split .split-copy-inner .hero-stats,
  .page-network .page-block.has-split .split-copy-inner .hero-stats,
  .page-services .page-block.has-split .split-copy-inner .hero-stats,
  .page-deals .page-block.has-split .split-copy-inner .hero-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 0;
  }

  .page-about .page-block.has-split .split-copy-inner .hero-stats > div,
  .page-network .page-block.has-split .split-copy-inner .hero-stats > div,
  .page-services .page-block.has-split .split-copy-inner .hero-stats > div,
  .page-deals .page-block.has-split .split-copy-inner .hero-stats > div {
    padding-left: 8px;
    padding-right: 8px;
    border-left: 0;
    text-align: center;
  }

  .page-about .hero-stats dd,
  .page-network .hero-stats dd,
  .page-services .hero-stats dd,
  .page-deals .hero-stats dd {
    justify-content: center;
  }
}

/* phones: the small uppercase labels (stat labels and the like) track a little tighter */
@media (max-width: 540px) {
  :root {
    --tracking-label: 0.09em;
  }
}

/* phones: sector and service row headings */
@media (max-width: 540px) {
  .sector-edit-row h2,
  .sector-edit-row h3 {
    font-size: clamp(1.72rem, 2.3vw, 2rem);
  }

  .service-deals-title {
    font-size: 1.24em;
  }

  /* sector and service row photos run edge to edge */
  .sector-edit-row .sector-edit-fig {
    margin-inline: calc(50% - 50vw);
    margin-bottom: 16px;
  }

  /* their section would otherwise crop them back to its margins (the page still clips) */
  .page-section:has(.sector-edit-row) {
    overflow: visible;
  }

  /* a row's bold lead-in line ("Unlock the potential of your business sale.") gets a
     little room before the paragraph under it */
  .sector-edit-row p:has(> b:only-child) {
    padding-bottom: 10px;
  }

  /* Sectors page: the first row's photo sits flush against the top of the sector list */
  .page-sectors .sector-list {
    margin-top: 0;
    padding-top: 0;
  }

  .page-sectors .sector-list .sector-edit-row:first-child {
    padding-top: 0;
  }

  /* Services page: the same for its first service photo */
  .page-services .page-section:has(> .sector-edit) {
    padding-top: 0;
  }

  .page-services .sector-edit {
    margin-top: 0;
  }

  .page-services .sector-edit > .sector-edit-row:first-child {
    padding-top: 0;
  }

  /* less space after each "Latest deals in" strip */
  .service-deals {
    padding-bottom: clamp(32px, 9vw, 144px);
  }

  /* filter tags (Deals, Network, Professionals) */
  .tag-toggle span {
    min-height: 32px;
    padding: 0 14px;
    font-size: 0.8rem;
  }

  .tag-list {
    gap: 6px;
  }

  /* Deals: the search box comes first, straight under the heading, then the folded filters */
  .filter-tags {
    display: flex;
    flex-direction: column;
  }

  .filter-tags .tag-foot {
    display: contents;
  }

  .filter-tags .filter-search {
    order: -1;
    margin-bottom: 16px;
  }

  /* deal facts: "Advised by" takes the full width, everything after it pairs up in two columns */
  .single-deal .meta-list,
  .single-firm .meta-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 20px;
  }

  .single-deal .meta-list > :first-child,
  .single-deal .meta-list > div:has(a[href^="mailto:"]),
  .single-firm .meta-list > :first-child,
  .single-firm .meta-list > div:has(a[href^="mailto:"], a[href^="http"], a[href^="tel:"]) {
    grid-column: 1 / -1;
  }

  /* tighter deal facts: smaller labels, less space above and below each fact */
  .single-deal .meta-list dt {
    font-size: 0.6rem;
    /* the label sits just above its rule (lifted to suit the tighter 14px padding) */
    transform: translateY(-38px);
  }

  .single-deal .meta-list > div {
    padding-top: 14px;
    padding-bottom: 14px;
  }

  /* a long email address wraps inside its column rather than running past the edge */
  .single-deal .meta-list dd,
  .single-firm .meta-list dd {
    min-width: 0;
    margin: 12px 0 16px;
    overflow-wrap: anywhere;
  }

  .single-firm .meta-list dt {
    font-size: 0.6rem;
  }

  /* "Deal details": one column, the tombstone first, then the heading and the story */
  .single-deal .deal-body {
    display: flex;
    flex-direction: column;
  }

  .single-deal .deal-body > .deal-side {
    order: -1;
    width: 100%;
    margin-bottom: 40px;
  }

  .single-deal .deal-body .prose p {
    max-width: 94%;
    font-size: 0.96em;
  }

  .single-deal .deal-body .prose p.is-spacer {
    display: none;
  }

  /* the "Membership" band (deal pages, firm and member profiles): a slightly narrower lede */
  .member-band .member-band-lede {
    max-width: 264px;
  }

  /* the CapFive mark behind the deal facts, much larger (as on Contact and Join) */
  .deal-head-watermark {
    right: -58vw;
    bottom: -22vw;
    width: 118vw;
    max-width: none;
  }

  /* deal pages and member profiles: the content starts closer under the menu button */
  .single-deal .page-head,
  .single-firm .page-head,
  .author .page-head {
    padding-top: 100px;
  }

  /* member profiles: the bio reads at body size, with a little room under the firm line */
  .author .member-head .member-head-photo {
    margin-bottom: 24px;
  }

  .author .member-head-firm {
    margin-top: 32px;
  }

  .author .prose {
    margin-top: 56px;
  }

  .author .prose p {
    font-size: 0.96em;
  }

  /* footer: generous room above the logo and under it before the address */
  .site-footer--simple .footer-brand {
    gap: 56px;
  }

  body .site-footer.site-footer--simple {
    padding-top: 72px;
  }

  /* the progress line above each row's copy is left out on phones */
  .sector-edit-track {
    display: none;
  }
}

/* iPads and other hamburger widths (541-1100px): deal, firm and member pages start their
   content closer under the menu button (phones use 100px) */
@media (min-width: 541px) and (max-width: 1100px) {
  .single-deal .page-head,
  .single-firm .page-head,
  .author .page-head {
    padding-top: 120px;
  }
}

/* iPad Pro portrait and similar (901-1100px): a member's colleagues run four across */
@media (min-width: 901px) and (max-width: 1100px) {
  .author .member-colleagues .board-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
  }

  /* deal cards on member and firm pages run three across, so each is smaller */
  .author .card-grid--four,
  .single-firm .card-grid--four,
  .single-firm .deals-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  /* a firm's members and a deal's team run four across, as on member profiles */
  .single-deal .member-grid,
  .single-firm .board-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
  }

  .single-deal .member-grid .person-card {
    width: auto;
    min-width: 0;
    flex: none;
  }
}

/* tall hamburger screens (iPad Pro portrait, 961-1100px wide and 1100px+ tall): the open
   menu sits higher and a little further right, the logo above the links with room to spare */
@media (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  /* home: the hero starts under the logo instead of centring in the tall screen */
  .home .hero-inner {
    align-self: start;
    padding-top: 280px;
  }

  /* "For independent M&A firms" fills the tall screen, its copy stepped to the right */
  .mna-section,
  .mna-lab {
    min-height: 100vh;
  }

  .mna-section .mna-lab-copy {
    margin-left: 240px;
    width: 440px;
  }

  #mna-title {
    font-size: 2.6rem;
  }

  /* the network artwork sits smaller behind the stepped copy */
  .mna-section .mna-lab-art.is-full {
    transform: scale(0.6);
  }

  .mna-section .mna-lab-copy .button {
    margin-top: 48px;
  }

  /* iPad Pro page headers (About, Network, Services, Deals, Join, Contact): a larger
     headline stepped right, the copy centred, and the stats centred near the foot */
  .page-block.has-split .split-copy {
    align-items: stretch;
    padding-top: 180px;
    padding-left: calc(var(--gutter) + clamp(22px, 4vw, 80px) + 120px);
  }

  .page-block.has-split .split-copy-inner {
    display: flex;
    flex-direction: column;
  }

  .page-block.has-split .split-copy-inner .eyebrow {
    margin-top: auto;
  }

  .page-block.has-split .split-copy-inner .hero-stats,
  .page-block.has-split .split-copy-inner .hero-stats.about-stats--wide {
    width: var(--container);
    margin-left: calc(0px - (clamp(22px, 4vw, 80px) + 120px));
    margin-right: 0;
    margin-top: auto;
  }

  .page-block.has-split .split-copy-inner .hero-stats div {
    text-align: center;
  }

  .page-block.has-split .split-copy-inner .hero-stats dd {
    justify-content: center;
  }

  /* the Services header's dark gradient reaches higher up the photograph */
  .page-services .page-block.has-split::after {
    background: linear-gradient(0deg, rgba(1, 8, 15, 0.96) 0%, rgba(1, 8, 15, 0.68) 52%, rgba(1, 8, 15, 0.24) 88%, rgba(1, 8, 15, 0) 100%);
  }

  /* Join and Contact carry no stats row, so their copy centres on its own */
  .page-join .page-block.has-split .split-copy-inner,
  .page-contact .page-block.has-split .split-copy-inner {
    justify-content: center;
  }

  .page-join .page-block.has-split .split-copy-inner .eyebrow,
  .page-contact .page-block.has-split .split-copy-inner .eyebrow {
    margin-top: 0;
  }

  .page-block.has-split h1,
  #sectors-hero-title {
    font-size: 3.8rem;
    max-width: 560px;
  }

  /* the Sectors masthead's copy and tags centre together */
  .sectors-hero {
    grid-template-rows: auto auto;
    align-content: center;
    padding-top: 0;
    padding-bottom: 0;
  }

  .sectors-hero-inner {
    align-self: auto;
    padding-left: calc(clamp(22px, 4vw, 80px) + 120px);
  }

  /* the sector tags line up with the masthead copy */
  .sectors-hero-base {
    align-self: auto;
    padding-left: calc(clamp(22px, 4vw, 80px) + 120px);
  }


  #deals-results {
    font-size: 4.4vw;
  }

  .filter-search input {
    height: 48px;
    padding: 0 20px;
  }

  .tag-toggle span {
    background: rgba(144, 144, 144, 0.43);
    color: #fff;
  }

  .about-lede,
  .page-block.has-split .statement {
    max-width: 32ch;
  }

  /* Contact and Join: the enquiry heading reads larger with more room below */
  #enquiry .prose h2,
  #membership .prose h2 {
    font-size: 3.4rem;
  }

  #enquiry .prose h2 {
    margin-bottom: 96px;
  }

  #membership .prose p:not(.eyebrow) {
    margin-bottom: 96px;
  }

  /* Contact and Join form labels get room above and below */
  .join-field span {
    padding-top: 14px;
    padding-bottom: 14px;
  }

  /* the CapFive mark behind the Contact and Join forms runs bigger */
  body #enquiry .join-watermark,
  body #membership .join-watermark {
    right: -36vw;
    bottom: -14vw;
    width: min(70vw, 1100px);
    max-width: none;
  }

  /* Join "What members get": a full-height band with the photograph filling its half,
     as on the home page's Why CapFive */
  #benefits {
    min-height: 100vh;
    padding: 0;
  }

  #benefits > .block-inner {
    width: 100%;
    max-width: none;
    padding: 0;
  }

  #benefits .split {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0;
    align-items: stretch;
    min-height: 100vh;
  }

  #benefits .split-media {
    position: relative;
    overflow: hidden;
  }

  #benefits .split-media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    aspect-ratio: auto;
    object-fit: cover;
  }

  #benefits .split-body {
    align-self: center;
    padding: clamp(72px, 8vw, 140px) clamp(28px, 8vw, 120px);
  }

  /* "Get in touch" is a band, not a full screen, so the footer shows below it */
  .adviser-section {
    min-height: 720px;
  }

  .mobile-nav.open {
    padding-top: 470px;
  }

  .mobile-nav-inner {
    padding-left: calc(var(--side) + clamp(22px, 4vw, 80px) + 160px);
  }

  .menu-list a {
    font-size: 2.1rem;
    padding: 12px 0;
  }

  .menu-list a:hover,
  .menu-list a:focus-visible {
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 6px;
  }

  body.menu-open .site-header.dock-header .dock-group .brand-lockup,
  body.menu-open .site-header.dock-header.scrolled .dock-group .brand-lockup,
  body.home.menu-open .site-header.dock-header:not(.scrolled) .dock-group .brand-lockup {
    left: calc(var(--side) + clamp(22px, 4vw, 80px) - 40px + 160px);
    top: 0;
    transform: translate(-20px, 200px);
  }
}

/* iPads (up to 1100px): Industry Sectors cards without the white frame, as on phones */
@media (max-width: 1100px) {
  .sc-slide {
    border: 0;
  }
}

/* iPads: home Services intro at a narrower measure */
@media (min-width: 541px) and (max-width: 1100px) {
  .home .services-section .c-halfimg-body--wide .c-lede {
    max-width: 42ch;
  }
}

/* ---------- Footer (v2): brand line and one call to action, three labelled groups,
   then a quiet legal line, on the soft grey base and the page's copy edge ---------- */
body .site-footer.site-footer--v2 {
  display: block;
  padding: 96px calc((100vw - var(--container)) / 2 + clamp(22px, 4vw, 80px)) 40px;
  background: var(--ghost);
  color: var(--ink);
  font-size: 1rem;
}

.site-footer--v2 .footer-top {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px 48px;
  padding-bottom: 56px;
  border-bottom: 1px solid var(--line-strong);
}

.site-footer--v2 .footer-brand {
  display: flex;
  flex-direction: column;
  gap: 40px;
}

.site-footer--v2 .footer-logo {
  display: inline-block;
  margin: 0;
}

.site-footer--v2 .footer-logo img {
  display: block;
  width: 96px;
  height: auto;
  margin-left: -17px;
}

.site-footer--v2 .footer-tagline {
  max-width: 26ch;
  margin: 0;
  color: var(--navy);
  font-size: clamp(1.4rem, 2.2vw, 1.9rem);
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.032em;
}

.site-footer--v2 .footer-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 0;
  color: var(--azure);
  font-size: 0.8rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  border-bottom: 2px solid var(--green);
  transition: color var(--duration-quick) var(--ease-in-out);
}

.site-footer--v2 .footer-cta:hover,
.site-footer--v2 .footer-cta:focus-visible {
  color: var(--navy);
}

.site-footer--v2 .footer-groups {
  display: grid;
  /* the link columns sit close together; the address takes the remaining width */
  grid-template-columns: max-content max-content minmax(0, 1fr);
  gap: 40px clamp(56px, 7vw, 120px);
  padding: 56px 0;
}

.site-footer--v2 .footer-label {
  margin: 0 0 18px;
  color: var(--accent-blue);
  font-size: var(--type-label);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.site-footer--v2 .footer-group ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-footer--v2 .footer-group li a {
  display: inline-block;
  padding: 7px 0;
  color: var(--navy);
  font-size: 1rem;
  font-weight: var(--weight-regular);
  transition: color var(--duration-quick) var(--ease-in-out);
}

.site-footer--v2 .footer-group li a:hover,
.site-footer--v2 .footer-group li a:focus-visible {
  color: var(--azure);
}

.site-footer--v2 .footer-visit {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  font-style: normal;
}

.site-footer--v2 .footer-addr {
  margin: 0;
  color: var(--muted);
  font-size: 1rem;
  font-weight: var(--weight-regular);
  line-height: 1.6;
}

.site-footer--v2 .footer-detail {
  color: var(--navy);
  text-decoration: underline;
  text-decoration-color: var(--line-strong);
  text-underline-offset: 4px;
}

.site-footer--v2 .footer-detail:hover {
  color: var(--azure);
}

.site-footer--v2 .footer-bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 28px;
  padding-top: 28px;
  border-top: 1px solid var(--line-strong);
}

.site-footer--v2 .footer-copy {
  color: #5b6470;
  font-size: 0.86rem;
}

.site-footer--v2 .footer-legal {
  display: flex;
  gap: 8px 28px;
  margin: 0;
  padding: 0;
  border: 0;
}

.site-footer--v2 .footer-legal a {
  padding: 6px 0;
  color: #5b6470;
  font-size: 0.86rem;
  font-weight: var(--weight-regular);
}

.site-footer--v2 .footer-legal a:hover {
  color: var(--navy);
}

/* ultrawide pages pad their copy with --pad-x */
@media (min-width: 2200px) {
  body .site-footer.site-footer--v2 {
    padding-left: calc((100vw - var(--container)) / 2 + var(--pad-x));
    padding-right: calc((100vw - var(--container)) / 2 + var(--pad-x));
  }
}

/* phones: everything stacks; links get comfortable touch rows */
@media (max-width: 540px) {
  body .site-footer.site-footer--v2 {
    padding-top: 80px;
  }

  .site-footer--v2 .footer-top {
    flex-direction: column;
    align-items: flex-start;
    padding-bottom: 40px;
  }

  .site-footer--v2 .footer-groups {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 40px 0;
  }

  .site-footer--v2 .footer-visit {
    grid-column: 1 / -1;
  }

  .site-footer--v2 .footer-group li a {
    padding: 10px 0;
  }

  .site-footer--v2 .footer-bottom {
    flex-direction: column-reverse;
    align-items: flex-start;
  }
}

@media (min-width: 761px) and (max-width: 1100px) {
  .home .hero-mobile-logo {
    top: 114px;
  }

  .home .hero-inner {
    transform: translateY(46px);
  }

  .home .hero-stats {
    transform: translateY(-160px);
  }
}

@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  .home .hero-copy {
    max-width: 320px;
    font-size: 1.2rem;
    line-height: 1.42;
  }

  .home .hero-copy-col h1 {
    font-size: clamp(2.34rem, 4.4vw, 4.14rem);
    line-height: 1.03;
  }
}

/* ---------- Upright iPad mini and Air (700-900px wide, 1000px+ tall): full-height,
   evenly spaced sections in the spirit of the iPad Pro layout, kept single-column ---------- */
@media (min-width: 700px) and (max-width: 900px) and (min-height: 1000px) {
  /* home masthead fills the screen; the stats sit at its foot, clear of the buttons */
  body.home .hero {
    min-height: 100svh;
  }

  body.home .hero-inner {
    padding-top: 250px;
    transform: none;
  }

  body.home .hero-stats {
    transform: none;
    margin-bottom: 48px;
  }

  /* page headers (About, Network, Services, Deals, Join, Contact) fill the screen:
     copy centred, stats at the foot */
  body .page-block.has-split {
    min-height: 100svh;
    height: auto;
    max-height: none;
  }

  body .page-block.has-split .split-copy {
    min-height: 100svh;
    box-sizing: border-box;
    align-items: stretch;
    padding-top: 180px;
    padding-bottom: 72px;
  }

  body .page-block.has-split .split-copy-inner {
    display: flex;
    flex-direction: column;
    align-self: stretch;
  }

  body .page-block.has-split .split-copy-inner .eyebrow,
  body .page-block.has-split .split-copy-inner .hero-stats {
    margin-top: auto;
  }

  body.page-join .page-block.has-split .split-copy-inner,
  body.page-contact .page-block.has-split .split-copy-inner {
    justify-content: center;
  }

  body.page-join .page-block.has-split .split-copy-inner .eyebrow,
  body.page-contact .page-block.has-split .split-copy-inner .eyebrow {
    margin-top: 0;
  }

  body .page-block.has-split h1 {
    font-size: 3.1rem;
  }

  /* home Industry Sectors and the route network fill the screen, content centred */
  body.home .sectors-section {
    min-height: 100svh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-top: 88px;
    padding-bottom: 88px;
  }

  body.home .sectors-section .sectors-intro {
    width: auto;
    max-width: calc(100vw - 2 * (var(--side) + clamp(22px, 4vw, 80px)));
  }

  body.home .movement-section {
    min-height: 100svh;
    align-content: center;
    padding-top: 64px;
    padding-bottom: 64px;
  }

  /* About "How CapFive works" and Services "How we deliver" fill the screen */
  body .why-section.is-blue {
    min-height: 100svh;
    display: grid;
    align-content: center;
  }

  body .precision-section {
    min-height: 100svh;
    flex-direction: column;
    justify-content: center;
  }

  body .precision-section .precision-grid p {
    max-width: 44ch;
  }

  /* every section's copy starts on the same left edge as the page headers */
  body .why-section .why-inner,
  body .page-block > .block-inner {
    padding-left: clamp(22px, 4vw, 80px);
    padding-right: clamp(22px, 4vw, 80px);
  }

  /* "Get in touch" is a band, not a full screen, as on iPad Pro */
  body .adviser-section {
    min-height: 620px;
  }
}

/* phones: every page headline at one size, set tight */
@media (max-width: 540px) {
  body h1,
  body .page-block.has-split h1,
  body.home .hero-copy-col h1,
  body #sectors-hero-title {
    font-size: 2.2rem;
    line-height: 0.96;
  }
}

/* phones: page headers (not home) fill the screen, copy centred, stats at the foot */
@media (max-width: 540px) {
  body .page-block.has-split {
    min-height: 100svh;
    height: auto;
    max-height: none;
  }

  body .page-block.has-split .split-copy {
    min-height: 100svh;
    box-sizing: border-box;
    align-items: stretch;
    padding-top: 120px;
    padding-bottom: 48px;
  }

  body .page-block.has-split .split-copy-inner {
    display: flex;
    flex-direction: column;
    align-self: stretch;
  }

  body .page-block.has-split .split-copy-inner .eyebrow,
  body .page-block.has-split .split-copy-inner .hero-stats {
    margin-top: auto;
  }

  body.page-join .page-block.has-split .split-copy-inner,
  body.page-contact .page-block.has-split .split-copy-inner {
    justify-content: center;
  }

  body.page-join .page-block.has-split .split-copy-inner .eyebrow,
  body.page-contact .page-block.has-split .split-copy-inner .eyebrow {
    margin-top: 0;
  }
}

/* phones: the Sectors masthead tags get room below the intro line */
@media (max-width: 540px) {
  body .sectors-hero-index {
    margin-top: 40px;
  }
}

/* phones: Transactions by Sector fills the screen, the chart centred in it */
@media (max-width: 540px) {
  body .sector-transactions {
    min-height: 100svh;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-top: 80px;
    padding-bottom: 80px;
  }

  /* the chart keeps the same side margins as the masthead copy above it */
  body .sector-transactions-inner {
    box-sizing: border-box;
    padding-left: 22px;
    padding-right: 22px;
  }

}

/* phones and iPads: Transactions by Sector as a ranked table, each figure leading its row
   (desktop keeps the 3D chart) */
@media (max-width: 1100px) {
  body .sector-transactions h2 {
    font-size: 2rem;
    font-weight: 300;
    line-height: 1.02;
    letter-spacing: -0.03em;
    margin-bottom: 0;
  }

  body .sector-transactions-sub {
    display: block;
    color: var(--accent-blue);
  }

  body .sector-transactions .sector-chart-flat {
    margin-top: 56px;
    gap: 0;
    border-top: 1px solid rgba(0, 40, 72, 0.12);
  }

  body .sector-chart-flat li {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: center;
    gap: 0 14px;
    margin: 0;
    padding: 7px 0;
    border-bottom: 1px solid rgba(0, 40, 72, 0.08);
  }

  body .sector-chart-flat-head {
    display: contents;
  }

  body .sector-chart-flat-head > span:first-child {
    grid-column: 2;
    grid-row: 1;
    font-size: 0.82rem;
    line-height: 1.2;
  }

  body .sector-chart-flat-head span.sector-chart-flat-count {
    grid-column: 1;
    grid-row: 1 / span 2;
    text-align: right;
    font-size: 1.35rem;
    font-weight: 300;
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
    color: var(--navy);
  }

  body .sector-chart-flat-unit {
    display: none;
  }

  body .sector-chart-flat-track {
    grid-column: 2;
    grid-row: 2;
    display: block;
    height: 3px;
    margin-top: 5px;
    border-radius: 0;
    background: transparent;
  }

  body .sector-chart-flat-bar {
    display: block;
    height: 100%;
    border-radius: 0;
    background: var(--accent-blue);
  }
}

/* Sector entries: the index number, short deals label, count and short link are phone details */
.sector-edit-index,
.service-deals-title-short,
.service-deals-count,
.service-deals-more-short {
  display: none;
}

/* Sectors and Services pages at every size: each entry anchored by a large light index beside its
   name, then its latest deals (cards unchanged) under a short label, with how many more and a link */
body:is(.page-sectors, .page-services) .sector-edit-txt {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 18px;
  align-items: baseline;
}

body:is(.page-sectors, .page-services) .sector-edit-txt > * {
  grid-column: 1 / -1;
}

body:is(.page-sectors, .page-services) .sector-edit-txt .eyebrow {
  display: none;
}

body:is(.page-sectors, .page-services) .sector-edit-index {
  display: block;
  grid-column: 1;
  font-size: clamp(2.6rem, 3vw, 3.6rem);
  font-weight: 200;
  letter-spacing: -0.05em;
  line-height: 0.9;
  font-variant-numeric: tabular-nums;
  color: var(--accent-blue);
}

body:is(.page-sectors, .page-services) .sector-edit-txt :is(h2, h3) {
  grid-column: 2;
  margin-top: 0;
}

body:is(.page-sectors, .page-services) .service-deals-title > strong,
body:is(.page-sectors, .page-services) .service-deals-title > span {
  display: none;
}

body:is(.page-sectors, .page-services) .service-deals-title-short {
  display: inline;
  font-style: normal;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

body:is(.page-sectors, .page-services) .service-deals-title {
  margin-bottom: 14px;
  line-height: 1;
  padding: 8px 0 0;
}

body:is(.page-sectors, .page-services) .service-deals .section-more {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

body:is(.page-sectors, .page-services) .service-deals-count {
  display: inline;
  font-size: 0.86rem;
  color: var(--muted);
}

body.page-sectors .service-deals-count::after {
  content: " in this sector";
}

body.page-services .service-deals-count::after {
  content: " for this service";
}

body:is(.page-sectors, .page-services) .service-deals-more-full {
  display: none;
}

body:is(.page-sectors, .page-services) .service-deals-more-short {
  display: inline;
}

/* phones: the stacked entry gets room under its photo */
@media (max-width: 540px) {
  body:is(.page-sectors, .page-services) .sector-edit-txt {
    padding-top: 30px;
  }

  body:is(.page-sectors, .page-services) .sector-edit-txt > p:not(.eyebrow) {
    margin-top: 20px;
  }

  body:is(.page-sectors, .page-services) .sector-edit-txt :is(h2, h3) {
    margin-bottom: 0;
  }
}

/* Transactions by Sector at every size: "by Sector" on its own line in blue */
.sector-transactions-sub {
  display: block;
  color: var(--accent-blue);
}

/* iPads: the ranked table at a comfortable reading width, its heading a little larger */
@media (min-width: 541px) and (max-width: 1100px) {
  body .sector-transactions h2 {
    font-size: 2.6rem;
  }

  body .sector-transactions .sector-chart-flat {
    max-width: 640px;
  }
}

/* iPads: sector and service names read larger beside their number */
@media (min-width: 541px) and (max-width: 1100px) {
  body:is(.page-sectors, .page-services) .sector-edit-txt :is(h2, h3) {
    font-size: 2rem;
    line-height: 1.1;
  }
}

/* Services "What we bring to every mandate": the closing words in blue on their own line, and each
   point led by the large light index used for the service entries, its title and copy beside it */
.precision-title-sub {
  display: block;
  color: var(--accent-blue);
}

.precision-section .precision-grid article {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 18px;
  align-items: baseline;
  align-content: start;
}

.precision-section .precision-grid span.precision-index {
  grid-row: 1 / span 2;
  margin: 0;
  font-size: clamp(2.4rem, 3vw, 3.4rem);
  font-weight: 200;
  letter-spacing: -0.05em;
  line-height: 0.9;
  font-variant-numeric: tabular-nums;
  color: var(--accent-blue);
}

.precision-section .precision-grid h5 {
  grid-column: 2;
  margin: 0 0 8px;
  font-weight: var(--weight-medium, 500);
}

.precision-section .precision-grid p {
  grid-column: 2;
  color: rgba(255, 255, 255, 0.72);
}

/* phones and iPads: the points stack, their copy at full width */
@media (max-width: 960px) {
  .precision-section .precision-grid {
    gap: 34px;
  }

  .precision-section .precision-grid p {
    max-width: none;
  }
}

@media (max-width: 540px) {
  .precision-section .precision-grid h5 {
    font-size: 1.3rem;
  }

  .precision-section .precision-grid p {
    font-size: 0.98rem;
    line-height: 1.55;
  }
}

/* "What we bring to every mandate": a larger heading with clear air before the points */
body .precision-section #precision-title {
  font-size: clamp(2.4rem, 4.4vw, 3.6rem);
  line-height: 1.06;
}

body .precision-section .precision-intro {
  margin-bottom: clamp(56px, 7vw, 96px);
}

@media (min-width: 541px) and (max-width: 1100px) {
  body .precision-section #precision-title {
    font-size: 3rem;
  }

  body .precision-section .precision-intro {
    margin-bottom: 56px;
  }
}

/* iPad Pro (and the Surface Pro): the three points stack like on the smaller iPads, so each
   reads at a comfortable width and the tall section is filled rather than left mostly empty */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  body .precision-section .precision-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 34px;
  }

  /* the heading and points share one column centred on the screen, as on iPad mini, rather
     than hugging the left edge */
  body .precision-section .precision-intro,
  body .precision-section .precision-grid {
    width: 100%;
    max-width: 780px;
    margin-left: auto;
    margin-right: auto;
  }

  /* the copy wraps at the same measure as on iPad mini */
  body .precision-section .precision-grid p {
    max-width: 44ch;
  }
}

/* iPad Pro / Surface Pro upright: the iPad mini layout scaled up with the wider screen (x1.33),
   so the heading and points take the same share of the screen and sit as balanced */
@media (min-width: 961px) and (max-width: 1100px), (min-width: 901px) and (max-width: 1100px) and (min-height: 1100px) {
  body .precision-section #precision-title {
    font-size: 4rem;
  }

  body .precision-section .precision-intro .eyebrow {
    font-size: 1.1rem;
  }

  body .precision-section .precision-intro {
    margin-bottom: 75px;
  }

  body .precision-section .precision-grid {
    gap: 45px;
  }

  body .precision-section .precision-grid span.precision-index {
    font-size: 3.2rem;
  }

  body .precision-section .precision-grid h5 {
    font-size: 1.8rem;
  }

  body .precision-section .precision-grid p {
    font-size: 1.4rem;
  }
}

/* desktop and ultrawide: "What we bring" set a size down, in proportion with the rest of the page */
@media (min-width: 1101px) {
  body .precision-section #precision-title {
    font-size: clamp(2.6rem, 3.2vw, 3.6rem);
  }

  body .precision-section .precision-intro {
    margin-bottom: clamp(56px, 5vw, 88px);
  }

  body .precision-section .precision-grid span.precision-index {
    font-size: clamp(2rem, 2.4vw, 3rem);
  }

  body .precision-section .precision-grid h5 {
    font-size: clamp(1.2rem, 1.4vw, 1.6rem);
  }

  body .precision-section .precision-grid p {
    font-size: clamp(1rem, 1.1vw, 1.2rem);
  }
}

/* Services "Local expertise, global reach", editorial: photograph left, a two-tone heading, the
   copy and two live figures under a hairline on the right */
.local-editorial .block-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(56px, 6.5vw, 120px);
}

.local-editorial-photo {
  margin: 0;
}

.local-editorial-photo img {
  display: block;
  width: 100%;
  height: clamp(480px, 47vw, 820px);
  object-fit: cover;
}

.local-editorial h2 {
  margin-top: 16px;
  font-size: clamp(2.4rem, 3.9vw, 4.2rem);
  font-weight: 300;
  letter-spacing: -0.03em;
  line-height: 1.05;
}

.local-editorial-sub {
  display: block;
  color: var(--accent-blue);
}

.local-editorial-copy p {
  max-width: 32em;
  margin: 26px 0 0;
  color: var(--muted);
  font-size: clamp(1rem, 1.25vw, 1.2rem);
  line-height: 1.6;
}

.local-editorial-stats {
  display: flex;
  gap: 40px;
  margin: 44px 0 0;
  padding-top: 28px;
  border-top: 1px solid rgba(0, 40, 72, 0.14);
}

.local-editorial-stats dd {
  margin: 0;
  color: var(--navy);
  font-size: clamp(2rem, 2.4vw, 2.8rem);
  font-weight: 300;
  letter-spacing: -0.03em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.local-editorial-stats dt {
  margin-top: 8px;
  color: var(--muted);
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* iPads and phones: the photograph runs edge to edge on top, the copy beneath it */
@media (max-width: 1100px) {
  .local-editorial {
    padding-top: 0;
  }

  .local-editorial .block-inner {
    grid-template-columns: minmax(0, 1fr);
    gap: 48px;
  }

  .local-editorial-photo {
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
  }

  .local-editorial-photo img {
    height: clamp(300px, 70vw, 560px);
  }
}

/* Join "What members get": the last word in blue, each benefit led by the large light index
   used on Services and Sectors, between fine lines */
.join-benefits-sub {
  color: var(--accent-blue);
}

ol.join-benefits--numbered {
  list-style: none;
  margin: clamp(28px, 3vw, 44px) 0 0;
  padding: 0;
}

ol.join-benefits--numbered li {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 18px;
  align-items: baseline;
  padding: 18px 0;
  border-top: 1px solid rgba(0, 40, 72, 0.12);
  color: var(--navy);
  font-size: clamp(1rem, 1.2vw, 1.15rem);
  line-height: 1.55;
}

ol.join-benefits--numbered li:last-child {
  border-bottom: 1px solid rgba(0, 40, 72, 0.12);
}

.join-benefits-index {
  font-size: clamp(1.8rem, 2.2vw, 2.4rem);
  font-weight: 200;
  letter-spacing: -0.05em;
  line-height: 0.9;
  font-variant-numeric: tabular-nums;
  color: var(--accent-blue);
}

/* "Get in touch" runs a full screen at every size (captain, 2026-10-03) */
body .adviser-section {
  min-height: 100vh;
  min-height: 100svh;
}

/* "Get in touch" below desktop: the headline carries the full-height band and the
   button sits close under it, so eyebrow, headline and button read as one block */
@media (max-width: 1100px) {
  .adviser-section h2 {
    font-size: clamp(2.6rem, 10vw, 3.4rem);
    line-height: 1.02;
    letter-spacing: -0.03em;
    margin: 16px 0 0;
  }

  .adviser-section .button {
    margin-top: 40px;
  }
}

/* Events page: a big written headline on navy, then filters and every conference poster */
.events-hero {
  background: var(--navy-deep);
  color: #fff;
  padding: clamp(150px, 15vw, 220px) 0 clamp(72px, 8vw, 112px);
}

.events-inner {
  width: var(--container);
  margin: 0 auto;
  padding: 0 clamp(22px, 4vw, 80px);
  box-sizing: border-box;
}

.events-hero .eyebrow {
  margin: 0;
}

.events-hero h1 {
  max-width: 16ch;
  margin: 22px 0 0;
  color: #fff;
  font-size: clamp(2.8rem, 6.6vw, 6rem);
  font-weight: var(--weight-light);
  line-height: 1;
  letter-spacing: -0.04em;
}

.events-lede {
  max-width: 54ch;
  margin: 30px 0 0;
  color: rgba(255, 255, 255, 0.74);
  font-size: 1.08rem;
  line-height: 1.6;
}

.events-list {
  background: var(--ghost);
  padding: clamp(56px, 6vw, 88px) 0 clamp(88px, 9vw, 128px);
}

.events-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: clamp(32px, 4vw, 48px);
}

.events-year select {
  min-height: 44px;
  padding: 0 40px 0 16px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--navy);
  font: inherit;
}

.events-grid .posters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}

.events-grid .poster[hidden] {
  display: none;
}

.events-empty {
  color: var(--muted);
}

@media (max-width: 1100px) {
  .events-grid .posters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .events-grid .posters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------------------------------------------------------------------------
   Board roster (About > leadership), 2026-10: the board moved from flip cards
   to a character-select roster with an inspect-dossier panel (js/board-roster.js).
   --------------------------------------------------------------------------- */
.page-block.roster-section { background: var(--navy-deep); }
.roster-section .carousel-intro { color: rgba(238, 244, 250, .62); }

.roster-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }

.roster-count {
  flex: none;
  margin: 0;
  color: rgba(238, 244, 250, .55);
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: .12em;
  line-height: 1.8;
  text-align: right;
  text-transform: uppercase;
}

.roster-count b {
  display: block;
  color: #eef4fa;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.04em;
  line-height: 1;
}

.roster {
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(12px, 1.6vw, 22px);
}

.roster-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(238, 244, 250, .14);
  background: #002442;
  color: #eef4fa;
  font: inherit;
  text-align: left;
  cursor: pointer;
  opacity: 0;
  transform: translateY(-14px);
}

.roster-card.is-in {
  animation: roster-arrive 1s cubic-bezier(.22, 1, .36, 1) both;
  animation-delay: calc(var(--d, 0) * 110ms);
}

/* cards wipe in from the top down while they fade and settle */
@keyframes roster-arrive {
  0% { opacity: 0; transform: translateY(-14px); clip-path: inset(0 0 100% 0); }
  60% { opacity: 1; transform: translateY(3px); clip-path: inset(0 0 0 0); }
  100% { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
}

/* corner brackets that snap outwards on hover */
.roster-card::before,
.roster-card::after {
  content: "";
  position: absolute;
  z-index: 3;
  width: 14px;
  height: 14px;
  pointer-events: none;
  transition: all .45s cubic-bezier(.22, 1, .36, 1);
}

.roster-card::before { top: 8px; left: 8px; border-top: 1px solid rgba(255, 255, 255, .7); border-left: 1px solid rgba(255, 255, 255, .7); }
.roster-card::after { right: 8px; bottom: 8px; border-right: 1px solid rgba(238, 244, 250, .6); border-bottom: 1px solid rgba(238, 244, 250, .6); }
.roster-card:hover::before,
.roster-card:focus-visible::before { top: 4px; left: 4px; width: 22px; height: 22px; border-color: var(--green); }
.roster-card:hover::after,
.roster-card:focus-visible::after { right: 4px; bottom: 4px; width: 22px; height: 22px; border-color: var(--green); }
.roster-card:focus-visible { outline: 2px solid var(--accent-blue); outline-offset: 2px; }

.roster-port {
  position: relative;
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: var(--navy-deep);
}

.roster-port img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 18%;
  filter: grayscale(1) contrast(1.08);
  transform: scale(1.04);
  transition: filter .6s ease, transform 1.2s cubic-bezier(.22, 1, .36, 1);
}

.roster-card:hover .roster-port img,
.roster-card:focus-visible .roster-port img { filter: grayscale(0); transform: scale(1); }

/* a scanline sweeps the portrait on hover */
.roster-port::after {
  content: "";
  position: absolute;
  top: -30%;
  right: 0;
  left: 0;
  z-index: 2;
  height: 30%;
  background: linear-gradient(to bottom, transparent, rgba(149, 193, 31, .18), transparent);
  opacity: 0;
}

.roster-card:hover .roster-port::after { animation: roster-scan 1.1s cubic-bezier(.65, 0, .35, 1); }
@keyframes roster-scan { 0% { top: -30%; opacity: 1; } 100% { top: 100%; opacity: 0; } }

.roster-tag {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 2;
  color: #fff;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
  mix-blend-mode: difference;
}

.roster-tag.is-right { right: 14px; left: auto; }

.roster-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 12px;
  padding: 16px 16px 18px;
}

.roster-name,
.dossier-name {
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1;
}

.roster-name { font-size: clamp(1.2rem, 1.7vw, 1.5rem); }

.roster-stats,
.dossier-stats {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 5px 14px;
  margin: 0;
  font-family: var(--mono, ui-monospace, Menlo, monospace);
  font-size: 10px;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.roster-stats > span:nth-child(odd),
.dossier-stats > span:nth-child(odd) { color: #8ea6bd; }
.roster-stats > span:nth-child(even) { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.roster-stats .is-role,
.dossier-stats .is-role { color: var(--accent-blue); }

.roster-excerpt {
  display: -webkit-box;
  overflow: hidden;
  color: #8ea6bd;
  font-size: .86rem;
  line-height: 1.45;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

.roster-cta {
  display: flex;
  justify-content: space-between;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid rgba(238, 244, 250, .14);
  color: #8ea6bd;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
}

/* rollover: a light-blue line draws across the rule, the words turn light blue and the arrow slides on */
.roster-cta { position: relative; transition: color .35s ease; }
.roster-cta::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--accent-blue);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .55s cubic-bezier(.22, 1, .36, 1);
}
.roster-cta span:last-child { transition: transform .4s cubic-bezier(.22, 1, .36, 1); }
.roster-card:hover .roster-cta,
.roster-card:focus-visible .roster-cta { color: var(--accent-blue); }
.roster-card:hover .roster-cta::before,
.roster-card:focus-visible .roster-cta::before { transform: scaleX(1); }
.roster-card:hover .roster-cta span:last-child,
.roster-card:focus-visible .roster-cta span:last-child { transform: translateX(8px); }

/* the dossier: grows out of the card, then its content fades in piece by piece */
html.dossier-lock { overflow: hidden; }

.dossier {
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: clamp(12px, 4vw, 48px);
  background: rgba(0, 26, 48, 0);
  backdrop-filter: blur(0);
  -webkit-backdrop-filter: blur(0);
  transition: background .5s ease, backdrop-filter .5s ease, -webkit-backdrop-filter .5s ease;
}

.dossier[hidden] { display: none; }
.dossier.is-open { background: rgba(0, 10, 20, .6); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }

.dossier-panel {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  grid-template-rows: minmax(0, 1fr);
  width: min(980px, 100%);
  height: min(86vh, 760px);
  height: min(86dvh, 760px);
  overflow: hidden;
  border: 1px solid rgba(238, 244, 250, .14);
  background: #002442;
  color: #eef4fa;
  transition: transform .75s cubic-bezier(.16, 1, .3, 1), opacity .3s ease;
}

.dossier.is-closing .dossier-panel { opacity: 0; transform: translateY(16px) scale(.98); transition: transform .4s cubic-bezier(.7, 0, .84, 0), opacity .35s ease; }

.dossier-port { position: relative; min-height: 100%; overflow: hidden; background: var(--navy-deep); }

.dossier-port img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 18%;
  clip-path: inset(0 0 100% 0);
  transform: scale(1.12);
  transition: clip-path 1s cubic-bezier(.65, 0, .35, 1) .2s, transform 1.6s cubic-bezier(.16, 1, .3, 1) .2s;
}

.dossier.is-open .dossier-port img { clip-path: inset(0 0 0 0); transform: none; }

.dossier-body {
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-height: 0;
  padding: clamp(22px, 3vw, 44px) clamp(22px, 3vw, 44px) 64px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  /* fade the last lines so a long bio reads as scrollable rather than cut off */
  -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 48px), transparent);
  mask-image: linear-gradient(to bottom, #000 calc(100% - 48px), transparent);
}

.dossier-kicker {
  margin: 0;
  color: #8ea6bd;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .14em;
}

.dossier-name { margin: 0; font-size: clamp(1.9rem, 3.4vw, 2.9rem); }
.dossier-name .dw { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; }
.dossier-name .dw > span { display: inline-block; transform: translateY(105%); }
.dossier.is-open .dossier-name .dw > span { transform: none; transition: transform 1s cubic-bezier(.16, 1, .3, 1) calc(.35s + var(--w) * 90ms); }

/* the bio reads as quiet small print beside the name */
.dossier-bio { margin-top: 8px; padding-top: 18px; border-top: 1px solid rgba(238, 244, 250, .12); color: rgba(238, 244, 250, .7); font-size: .84rem; font-weight: 300; line-height: 1.75; }
.dossier-bio p { margin: 0 0 1.1em; max-width: 54ch; }

.dossier-firm {
  color: var(--accent-blue);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .12em;
  text-decoration: none;
  text-transform: uppercase;
}

.dossier-firm:hover { color: var(--green); }

/* kicker, details, each bio paragraph and the firm link fade up in turn */
.dossier-kicker,
.dossier-stats,
.dossier-bio p,
.dossier-firm,
.dossier-close { opacity: 0; transform: translateY(12px); filter: blur(4px); }

.dossier.is-open .dossier-kicker,
.dossier.is-open .dossier-stats,
.dossier.is-open .dossier-bio p,
.dossier.is-open .dossier-firm,
.dossier.is-open .dossier-close {
  opacity: 1;
  transform: none;
  filter: none;
  transition: opacity .8s ease var(--t), transform 1s cubic-bezier(.16, 1, .3, 1) var(--t), filter .8s ease var(--t);
}

.dossier-close { --t: .5s; }
.dossier-kicker { --t: .3s; }
.dossier-stats { --t: .6s; }
.dossier-bio p { --t: calc(.75s + var(--p, 0) * 120ms); }
.dossier-firm { --t: 1.1s; }

.dossier-close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 3;
  padding: 6px 10px;
  border: 1px solid rgba(238, 244, 250, .2);
  background: #002442;
  color: #eef4fa;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
}

@media (max-width: 980px) {
  .roster { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .roster-head { flex-direction: column; align-items: flex-start; }
  .roster-count { text-align: left; }
  .roster { grid-template-columns: minmax(0, 1fr); }
  .dossier { place-items: end center; padding: 0; }
  .dossier-panel { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); height: 92vh; height: 92dvh; }
  .dossier-port { aspect-ratio: 4 / 3; min-height: 0; }
  .dossier-body { padding: 22px 20px 32px; }
}

@media (prefers-reduced-motion: reduce) {
  .roster-card,
  .roster-card.is-in { opacity: 1; transform: none; animation: none; }
  .dossier *,
  .dossier-panel { transition: none !important; animation: none !important; }
  .dossier-port img,
  .dossier-name .dw > span,
  .dossier-kicker,
  .dossier-stats,
  .dossier-bio p,
  .dossier-firm,
  .dossier-close { clip-path: none; opacity: 1; transform: none; filter: none; }
}

/* display variant of a heading: the roster's oversized, tight, bold headline */
h1.is-display,
h2.is-display {
  font-size: clamp(2.6rem, 7.5vw, 6rem);
  font-weight: 700;
  letter-spacing: -.045em;
  line-height: .9;
}

h1.is-display + .statement,
h2.is-display + .statement { margin-top: 28px; }

/* ---------------------------------------------------------------------------
   Eyebrows, site-wide (2026-10-04): bold sans at 1.32rem, tight, in title case.
   --------------------------------------------------------------------------- */
body { counter-reset: eyebrow; }

.eyebrow,
.hero-eyebrow,
.adviser-eyebrow,
.contact-eyebrow {
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  text-transform: capitalize;
}

/* over a photograph (the split openings) the eyebrow is green */
.page-block.has-split .eyebrow { color: var(--green); }

/* (the "01 / " count before each eyebrow was dropped 2026-10-04) */

/* ---------------------------------------------------------------------------
   About > How CapFive works (2026-10): a sticky dark stage stepping through
   the four points as the reader scrolls (js/how-works.js).
   --------------------------------------------------------------------------- */
.how-works {
  --hw-fg: var(--navy);
  --hw-dim: var(--muted);
  --hw-rule: var(--line-strong);
  position: relative;
  height: calc(100vh * 4.4);
  height: calc(100svh * 4.4);
  background: var(--footer);
  color: var(--hw-fg);
}

.how-stage {
  position: sticky;
  top: 0;
  display: grid;
  grid-template-columns: minmax(0, 4fr) minmax(0, 7fr);
  gap: clamp(24px, 6vw, 96px);
  align-items: center;
  height: 100vh;
  height: 100svh;
  max-width: var(--container);
  margin: 0 auto;
  padding: clamp(96px, 12vh, 140px) 0;
}

.how-works h2 { margin: 0 0 32px; color: var(--hw-fg); }

.how-index { margin: 0; padding: 0; border-top: 1px solid var(--hw-rule); list-style: none; }

.how-index li {
  position: relative;
  display: grid;
  grid-template-columns: 3em 1fr;
  gap: 12px;
  padding: 18px 0;
  border-bottom: 1px solid var(--hw-rule);
  color: var(--hw-dim);
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: color .5s ease;
}

.how-index li::after { content: ""; position: absolute; left: 0; bottom: -1px; width: calc(var(--p, 0) * 100%); height: 1px; background: var(--hw-fg); }
.how-index li.is-on { color: var(--hw-fg); }
.how-index li.is-on .how-n { color: var(--green); }

.how-cta {
  display: inline-block;
  margin-top: 32px;
  color: var(--hw-fg);
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: .14em;
  text-decoration: none;
  text-transform: uppercase;
}

.how-cta:hover { color: var(--green); }

.how-panel { position: relative; min-height: clamp(320px, 52vh, 520px); }

.how-slide {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  pointer-events: none;
  will-change: transform;
  transition: transform .35s cubic-bezier(.22, 1, .36, 1);
}

.how-kicker {
  margin: 0 0 22px;
  color: var(--accent-blue);
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.how-slide h3 {
  max-width: 12ch;
  margin: 0;
  color: var(--hw-fg);
  font-size: clamp(2.4rem, 5.6vw, 5.2rem);
  font-weight: 700;
  letter-spacing: -.05em;
  line-height: .92;
}

.how-slide p:not(.how-kicker) {
  max-width: 46ch;
  margin: 32px 0 0;
  color: var(--hw-dim);
  font-size: clamp(1.05rem, 1.4vw, 1.25rem);
  font-weight: 300;
  line-height: 1.6;
}

.how-slide .how-kicker,
.how-slide h3,
.how-slide p { opacity: 0; transform: translateY(22px); transition: opacity .5s ease, transform .5s ease; }

.how-slide.is-on .how-kicker,
.how-slide.is-on h3,
.how-slide.is-on p { opacity: 1; transform: none; transition: opacity 1s ease, transform 1.2s cubic-bezier(.22, 1, .36, 1); }

.how-slide.is-on h3 { transition-delay: .08s; }
.how-slide.is-on p:not(.how-kicker) { transition-delay: .2s; }

@media (max-width: 1240px) {
  .how-stage { padding-right: var(--side); padding-left: var(--side); }
}

/* phones and small tablets: no sticky stage; the points stack and fade up as they arrive */
@media (max-width: 820px) {
  .how-works { height: auto; }
  .how-stage { position: relative; display: block; height: auto; padding: 96px var(--side) 72px; }
  .how-index, .how-cta { display: none; }
  .how-panel { min-height: 0; }
  .how-slide { position: relative; inset: auto; padding: 44px 0; border-top: 1px solid var(--hw-rule); }
  .how-slide .how-kicker,
  .how-slide h3,
  .how-slide p { opacity: 0; transform: translateY(22px); }
  .how-slide.is-seen .how-kicker,
  .how-slide.is-seen h3,
  .how-slide.is-seen p { opacity: 1; transform: none; transition: opacity 1s ease, transform 1.2s cubic-bezier(.22, 1, .36, 1); }
}

@media (prefers-reduced-motion: reduce) {
  .how-slide,
  .how-slide .how-kicker,
  .how-slide h3,
  .how-slide p { transition: none !important; }
  .how-slide.is-seen .how-kicker,
  .how-slide.is-seen h3,
  .how-slide.is-seen p { opacity: 1; transform: none; }
}


/* ---------------------------------------------------------------------------
   Restored 2026-10-04: these rules were removed by accident in d10667616 (Events
   page commit), which dropped the About manifesto, Contact and Join enquiry bands,
   the conference page, the About FAQ band and form scroll offsets.
   --------------------------------------------------------------------------- */
/* "Get in touch" below desktop: the headline carries the full-height band and the
   button sits close under it, so eyebrow, headline and button read as one block */
@media (max-width: 1100px) {
  .adviser-section h2 {
    font-size: clamp(2.6rem, 10vw, 4rem);
    line-height: 1.02;
    letter-spacing: -0.03em;
    margin: 16px 0 0;
  }

  .adviser-section .button {
    margin-top: 40px;
  }
}

/* About intro: the statement now carries a short paragraph, so it is set as large body
   copy rather than a one-line display headline, and on desktop the lede sits beside it
   so the block reads as one composition instead of a tall stack */
.about-intro .a7-statement {
  max-width: 44ch;
  font-size: clamp(1.5rem, 2.3vw, 2.15rem);
  line-height: 1.22;
}

@media (min-width: 1101px) {
  .about-intro .block-inner {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    column-gap: clamp(48px, 6vw, 112px);
    align-items: start;
  }

  .about-intro .block-inner > .eyebrow,
  .about-intro .a7-pillars,
  .about-intro .block-inner > p:last-child {
    grid-column: 1 / -1;
  }

  .about-intro .a7-lede {
    margin: 0.45em 0 0;
    max-width: 46ch;
  }

  .about-intro .a7-pillars.double-top {
    margin-top: 72px;
  }

  .about-intro .block-inner > p.double-top:last-child {
    margin-top: 40px;
  }
}

/* About: the intro as a navy manifesto - the promise set big, one short paragraph,
   three points and a light button; faint brand rings sit off to the right */
.about-manifesto {
  position: relative;
  overflow: hidden;
  padding: clamp(88px, 10vw, 140px) 0;
  background: var(--navy-deep);
  color: #fff;
}

.about-manifesto::before {
  content: "";
  position: absolute;
  right: -18vw;
  top: 50%;
  width: 70vw;
  height: 70vw;
  transform: translateY(-50%);
  border-radius: 50%;
  background: repeating-radial-gradient(circle at center, transparent 0 34px, rgba(31, 163, 209, 0.14) 34px 36px);
  -webkit-mask: linear-gradient(90deg, transparent 20%, #000 70%);
  mask: linear-gradient(90deg, transparent 20%, #000 70%);
  pointer-events: none;
}

.about-manifesto .block-inner {
  position: relative;
  width: var(--container);
  margin: 0 auto;
}

.about-manifesto .eyebrow {
  margin: 0;
  color: var(--accent-blue);
}

.about-manifesto .manifesto-lead {
  max-width: 18ch;
  margin: 28px 0 0;
  color: #fff;
  font-size: clamp(2.4rem, 5vw, 4.4rem);
  font-weight: var(--weight-light);
  line-height: 1.02;
  letter-spacing: -0.035em;
}

.about-manifesto .manifesto-lead em {
  color: var(--accent-blue);
  font-style: normal;
}

.about-manifesto .manifesto-sub {
  max-width: 54ch;
  margin: 30px 0 0;
  color: rgba(255, 255, 255, 0.74);
  font-size: 1.08rem;
  line-height: 1.6;
}

.about-manifesto .manifesto-points {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(24px, 4vw, 56px);
  margin-top: clamp(64px, 7vw, 96px);
}

.about-manifesto .manifesto-points > div {
  padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.18);
}

.about-manifesto .manifesto-points h3 {
  margin: 0 0 8px;
  color: #fff;
  font-size: 1rem;
  font-weight: var(--weight-semibold);
}

.about-manifesto .manifesto-points p {
  margin: 0;
  color: rgba(255, 255, 255, 0.68);
  font-size: 0.96rem;
  line-height: 1.55;
}

.about-manifesto .manifesto-cta {
  margin: 48px 0 0;
}

.about-manifesto .button-light {
  background: #fff;
  color: var(--navy);
}

.about-manifesto .button-light:hover,
.about-manifesto .button-light:focus-visible {
  background: var(--accent-blue);
  color: #fff;
}

@media (max-width: 900px) {
  .about-manifesto .manifesto-points {
    grid-template-columns: 1fr;
  }
}

/* Contact: the enquiry form sits on the very dark navy, labels and heading in white */
body.page-contact #enquiry.page-block {
  background: var(--navy-deep);
}

.page-contact #enquiry h2 {
  color: #fff;
}

.page-contact #enquiry .join-field > span {
  color: rgba(255, 255, 255, 0.86);
}

.page-contact #enquiry input,
.page-contact #enquiry select,
.page-contact #enquiry textarea {
  border-color: transparent;
}

.page-contact #enquiry .join-watermark {
  filter: brightness(0) invert(1);
  opacity: 0.05;
}

/* Network: under a filtered set of firm cards, the way back to every office */
.firm-show-all {
  margin: 40px 0 0;
  text-align: center;
}

/* Join: the membership enquiry sits on the very dark navy, as on Contact */
body.page-join #membership.page-block {
  background: var(--navy-deep);
}

body.page-join #membership h2 {
  color: #fff;
}

body.page-join #membership .prose p:not(.eyebrow) {
  color: rgba(255, 255, 255, 0.74);
}

body.page-join #membership .join-field span {
  color: rgba(255, 255, 255, 0.86);
}

body.page-join #membership input,
body.page-join #membership select,
body.page-join #membership textarea {
  border-color: transparent;
}

body.page-join #membership .join-watermark {
  filter: brightness(0) invert(1);
  opacity: 0.05;
}

/* About conferences: cards are links to the conference page and flip on hover */
.conference-posters a.poster {
  display: block;
  color: inherit;
  text-decoration: none;
}

@media (hover: hover) {
  /* flips over at once on hover, but waits a second after the pointer leaves before turning back */
  .conference-posters .poster .poster-inner { transition-delay: 1s; }
  .conference-posters .poster:hover .poster-inner,
  .conference-posters .poster:focus-visible .poster-inner {
    transform: rotateY(180deg);
    transition-delay: 0s;
  }
}

/* Conference page */
.event-hero {
  position: relative;
  overflow: hidden;
  background: var(--navy-deep);
  color: #fff;
  padding: clamp(140px, 14vw, 200px) 0 clamp(72px, 8vw, 112px);
}

/* a big CapFive mark sits faintly behind the conference hero, running off the right edge */
.event-hero::before {
  content: "";
  position: absolute;
  top: 50%;
  right: -12%;
  width: min(78vh, 760px);
  aspect-ratio: 1;
  background: #fff;
  -webkit-mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  opacity: 0.06;
  transform: translateY(-50%);
  pointer-events: none;
}

.event-hero-inner { position: relative; z-index: 1; }

.event-hero-inner,
.event-body-inner {
  width: var(--container);
  margin: 0 auto;
  padding: 0 clamp(22px, 4vw, 80px);
  box-sizing: border-box;
}

.event-hero-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 112px);
  align-items: end;
}

.event-back {
  display: table;
  margin-bottom: 40px;
  color: rgba(255, 255, 255, 0.7);
  font-size: var(--type-label);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  text-decoration: none;
}

.event-back:hover,
.event-back:focus-visible {
  color: #fff;
}

.event-hero .eyebrow {
  margin: 0;
}

.event-hero h1 {
  margin: 18px 0 0;
  color: #fff;
  font-size: clamp(2.6rem, 6vw, 5.2rem);
  font-weight: var(--weight-light);
  line-height: 1;
  letter-spacing: -0.035em;
}

.event-when {
  margin: 26px 0 0;
  color: rgba(255, 255, 255, 0.78);
  font-size: clamp(1.05rem, 1.5vw, 1.3rem);
}

.event-poster {
  margin: 0;
  justify-self: end;
  width: min(100%, 380px);
}

.event-poster img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  box-shadow: 0 30px 60px -30px rgba(0, 0, 0, 0.6);
}

.event-body {
  background: var(--paper);
  padding: clamp(72px, 8vw, 120px) 0;
}

.event-body-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 112px);
  align-items: start;
}

.event-lede {
  margin: 0;
  color: var(--navy);
  font-size: clamp(1.12rem, 1.45vw, 1.35rem);
  font-weight: var(--weight-light);
  line-height: 1.6;
  letter-spacing: -0.005em;
  max-width: 62ch;
}

.event-content {
  margin-top: 32px;
  color: var(--muted);
  line-height: 1.7;
}

.event-facts {
  position: sticky;
  top: 120px;
  padding: 28px;
  border-radius: var(--radius-md);
  background: var(--ghost);
}

.event-facts dl {
  margin: 0;
}

.event-facts dl > div {
  padding: 14px 0;
  border-bottom: 1px solid var(--line-strong);
}

.event-facts dl > div:first-child {
  padding-top: 0;
}

.event-facts dt {
  color: var(--faint);
  font-size: var(--type-label);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
}

.event-facts dd {
  margin: 4px 0 0;
  color: var(--navy);
  font-weight: var(--weight-medium);
}

.event-facts .button {
  margin-top: 24px;
}

@media (max-width: 900px) {
  .event-hero-inner,
  .event-body-inner {
    grid-template-columns: 1fr;
  }

  .event-poster {
    justify-self: start;
    width: min(100%, 320px);
  }

  .event-facts {
    position: static;
  }
}

/* About: the FAQ sits on the same neutral light grey as the enquiry and deals bands */
body.page-about #faq.page-block {
  background: #f0f0f0;
}

/* conference card backs: a long description is cut to six lines so it never spills
   past the card; the full text lives on the conference page */
.conference-posters .poster-face.back {
  overflow: hidden;
}

.conference-posters .back-body {
  display: -webkit-box;
  -webkit-line-clamp: 6;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Conference page: "More conferences" heading sits higher, with room before the posters */
body .event-more.page-block {
  padding-top: clamp(64px, 7vw, 96px);
}

body .event-more .block-inner {
  padding-top: 0;
}

body .event-more .conferences-heading {
  margin: 0 0 clamp(32px, 4vw, 56px);
}

body .event-more.page-block {
  min-height: 0;
  display: block;
}

/* Contact: arriving at the enquiry form leaves room for the floating menu */
#enquiry {
  scroll-margin-top: 40px;
}

/* Join: arriving at the membership form leaves room for the floating menu */
#membership {
  scroll-margin-top: 40px;
}


/* Closing call to action: the eyebrow and headline rise in as the band arrives, then the button fades on */
.adviser-inner.reveal .adviser-eyebrow,
.adviser-inner.reveal h2,
.adviser-inner.reveal .button { opacity: 0; }
.adviser-inner.reveal .adviser-eyebrow,
.adviser-inner.reveal h2 { transform: translateY(24px); filter: blur(6px); }
.adviser-inner.reveal.in .adviser-eyebrow,
.adviser-inner.reveal.in h2 {
  opacity: 1;
  transform: none;
  filter: none;
  transition: opacity 1.1s ease, transform 1.4s cubic-bezier(.22, 1, .36, 1), filter 1.1s ease;
}
.adviser-inner.reveal.in h2 { transition-delay: .18s; }
.adviser-inner.reveal.in .button { opacity: 1; transition: opacity 1.2s ease .95s; }

@media (prefers-reduced-motion: reduce) {
  .adviser-inner.reveal .adviser-eyebrow,
  .adviser-inner.reveal h2,
  .adviser-inner.reveal .button { opacity: 1; transform: none; filter: none; transition: none; }
}

/* Deal cards: when a deal has its own description, the card flips over on hover to show it large on the back,
   and waits a second after the pointer leaves before flipping back */
.deal-card.has-back {
  background: none;
  perspective: 1400px;
}

.deal-card-flip {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  transform-style: preserve-3d;
  transition: transform 700ms var(--ease-smooth-out, cubic-bezier(.22, 1, .36, 1)) 1s;
}

.deal-card-front {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #fff;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.deal-card-front a { pointer-events: auto; }

/* the logo arcs and the card's shadow travel with the front face, so nothing is left behind mid-flip */
body .deal-card.has-back,
body .deal-card.has-back:hover,
body .deal-track > .deal-card.has-back,
body .deal-track > .deal-card.has-back:hover { box-shadow: none; background: none; }
body .deal-card.has-back::after { display: none; }
.deal-card-front { box-shadow: 0 1px 2px rgba(0, 40, 72, 0.06), 0 10px 30px -12px rgba(0, 40, 72, 0.18); isolation: isolate; }
body .deal-card.has-back .deal-card-front::after {
  content: "";
  position: absolute;
  right: -45cqw;
  bottom: -35cqw;
  z-index: -1;
  width: 100cqw;
  aspect-ratio: 1;
  background: var(--svc);
  -webkit-mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  opacity: 0.05;
  pointer-events: none;
}
body .deal-card--buy.has-back .deal-card-front::after { opacity: 0.1; }
body .deal-card--equity.has-back .deal-card-front::after { opacity: 0.071; }
body .deal-card--debt.has-back .deal-card-front::after { opacity: 0.038; }

.deal-card-more {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-start;
  padding: 23cqw 7cqw 7cqw;
  background: var(--svc, var(--navy));
  color: #fff;
  transform: rotateY(180deg);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  overflow: hidden;
  isolation: isolate;
  pointer-events: none;
}

/* the back carries the same logo arcs as the front, in the colour of its text */
.deal-card-more::before {
  content: "";
  position: absolute;
  right: -45cqw;
  bottom: -35cqw;
  z-index: -1;
  width: 100cqw;
  aspect-ratio: 1;
  background: currentColor;
  -webkit-mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  mask: url("assets/capfive-mark.svg") center / contain no-repeat;
  opacity: 0.14;
  pointer-events: none;
}

/* the back takes its badge's colour; white text, except light blue on the navy debt card */
body .deal-card--debt .deal-card-more { color: var(--accent-blue); }

.deal-card-more p {
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  font-size: 8.2cqw;
  font-weight: 600;
  letter-spacing: -.02em;
  line-height: 1.18;
  -webkit-line-clamp: 10;
  line-clamp: 10;
  -webkit-box-orient: vertical;
}

@media (hover: hover) {
  .deal-card.has-back:hover .deal-card-flip { transform: rotateY(180deg); transition-delay: 0s; }
}

/* the pill stays visible and clickable above the description */
.deal-card .deal-card-pill { z-index: 3; }

/* Deals grid: each row of cards arrives as it scrolls into view (js/deal-reveal.js triggers it early).
   "backwards" fill hands the card back to its own hover lift once it has landed. */
/* confident, not loading: the row snaps in together with only a slight left-to-right offset, a quick fade and a short rise */
.deals-grid .deal-card.reveal:not(.in) { opacity: 0; }
.deals-grid .deal-card.reveal.in { animation: deal-snap .55s cubic-bezier(.2, .9, .25, 1.05) calc(var(--col, 0) * 55ms) backwards; }
.deals-grid .deal-card:nth-child(4n+2) { --col: 1; }
.deals-grid .deal-card:nth-child(4n+3) { --col: 2; }
.deals-grid .deal-card:nth-child(4n+4) { --col: 3; }
@keyframes deal-snap {
  0% { opacity: 0; transform: translateY(26px) scale(.985); }
  100% { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .deals-grid .deal-card.reveal:not(.in) { opacity: 1; }
  .deals-grid .deal-card.reveal.in { animation: none; }
}

/* Lab (?lab=sectors on Home): Industry Sectors with the board's display headline and borderless carousel cards */
.sectors-section.is-lab-bold h2 {
  max-width: 18ch;
  font-size: clamp(2.4rem, 5.4vw, 4.6rem);
  font-weight: 700;
  letter-spacing: -.045em;
  line-height: .9;
}
.sectors-section.is-lab-bold .sectors-intro {
  margin-top: 28px;
  font-size: var(--type-lede);
  font-weight: var(--weight-light);
  line-height: 1.35;
}
.sectors-section.is-lab-bold .sc-slide,
.sectors-section.is-lab-bold .sc-slide:hover {
  border: 0;
  box-shadow: none;
}

/* Network: on desktop the member map runs a little wider than the copy column */
@media (min-width: 1101px) {
  #member-firms .world-map { margin-inline: -64px; }
}

/* ---------- Short laptop screens (up to 980px tall): the home hero copy starts a clear gap
   below the big header logo instead of tucking right under it. The hero stays full height. */
@media (min-width: 1101px) and (max-height: 980px) {
  /* the copy sits centred in the space between the logo and the stats, so the gap above the
     eyebrow and the gap below the buttons stay even however short the window is */
  body.home .hero { grid-template-rows: 1fr auto; }
  body.home .hero-inner {
    /* "safe": on very short windows the copy starts under the logo rather than riding up into it */
    align-content: safe center;
    padding-top: calc(var(--header-logo-clearance) + 160px);
    padding-bottom: 8px;
  }
  body.home .hero-stats { margin-top: 24px; }
}

/* ---------- Site search: the menu's search opens a bar under the header; results on search.php ---------- */
.site-search {
  position: fixed;
  top: 104px;
  left: 50%;
  z-index: 60;
  width: min(720px, calc(100% - 32px));
  transform: translateX(-50%);
}

.site-search-form {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 8px 8px 22px;
  border-radius: 999px;
  background: #fff;
  box-shadow: 0 18px 50px -18px rgba(0, 40, 72, 0.35), 0 0 0 1px rgba(0, 40, 72, 0.08);
  animation: site-search-in 260ms var(--ease-smooth-out) both;
}

@keyframes site-search-in {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: none; }
}

.site-search-form input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: none;
  color: var(--navy);
  font: inherit;
  font-size: 1.05rem;
}

.site-search-go,
.search-page-form button {
  border: 0;
  border-radius: 999px;
  padding: 10px 20px;
  background: var(--accent-blue);
  color: #fff;
  font: inherit;
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
}

.site-search-close {
  width: 40px;
  height: 40px;
  border: 0;
  background: none;
  color: var(--navy);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
}

.search-page-form {
  display: flex;
  gap: 8px;
  max-width: 560px;
  padding: 6px 6px 6px 20px;
  border: 1px solid rgba(0, 40, 72, 0.14);
  border-radius: 999px;
  background: #fff;
}

.search-page-form input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: none;
  font: inherit;
  font-size: 1rem;
  color: var(--navy);
}

.search-results .search-count {
  margin: 0 0 32px;
  color: var(--muted);
}

.search-group + .search-group {
  margin-top: 64px;
}

.search-group-title span {
  color: var(--accent-blue);
}

.search-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  gap: 0 32px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.search-list a {
  display: block;
  padding: 14px 0;
  border-bottom: 1px solid rgba(0, 40, 72, 0.12);
  color: var(--navy);
  font-size: 1.1rem;
  font-weight: 600;
  text-decoration: none;
}

.search-list a:hover {
  color: var(--accent-blue);
}


/* a deal filter tag that is on carries a small cross, so it reads as tap-to-remove */
.tag-toggle input[type="checkbox"]:checked + span::after {
  content: "\00d7";
  margin-left: 8px;
  font-weight: 400;
  opacity: 0.85;
}

/* every hero stat reads label first, then the number: "FIRMS" above "39" */
body .hero-stats dt {
  order: -1;
  margin-bottom: 10px;
  /* the label's cap height sits level with the top of the stat's rule */
  margin-top: -0.2em;
  line-height: 1;
}

body .hero-stats > div,
body .page-block.has-split .split-copy-inner .hero-stats > div {
  padding-top: 0;
}

body .hero-stats dd {
  margin-bottom: 0;
}

/* leadership profile: website, LinkedIn and X sit in one row */
.dossier-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
  margin: 0;
}

.dossier-links [hidden] { display: none; }

/* the firm name on a leadership card is its own link */
.roster-firm {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: rgba(238, 244, 250, 0.35);
  text-underline-offset: 3px;
}

.roster-firm:hover {
  color: var(--accent-blue);
  text-decoration-color: currentColor;
}

.roster-card:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
}

/* ---------- Members: the member firm directory, in the Leadership roster's card style ---------- */
.firm-directory .roster-head { margin-bottom: 32px; }

.firm-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 24px;
  margin: 0 0 32px;
}

.firm-filter-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.firm-filter {
  padding: 8px 16px;
  border: 1px solid rgba(238, 244, 250, 0.22);
  border-radius: 999px;
  background: none;
  color: rgba(238, 244, 250, 0.78);
  font: inherit;
  font-size: 0.85rem;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.firm-filter:hover { border-color: rgba(238, 244, 250, 0.5); color: #fff; }
.firm-filter.is-on { border-color: var(--accent-blue); background: var(--accent-blue); color: #fff; }

.firm-search {
  width: min(320px, 100%);
  padding: 10px 18px;
  border: 1px solid rgba(238, 244, 250, 0.22);
  border-radius: 999px;
  outline: 0;
  background: rgba(255, 255, 255, 0.04);
  color: #fff;
  font: inherit;
  font-size: 0.9rem;
}

.firm-search::placeholder { color: rgba(238, 244, 250, 0.45); }
.firm-search:focus { border-color: var(--accent-blue); }

/* the firm's logo sits on a white panel in place of a portrait */
.firm-card { text-decoration: none; }
.firm-card[hidden] { display: none; }

.firm-port {
  aspect-ratio: 16 / 10;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
}

.firm-port img {
  position: static;
  width: auto;
  max-width: 62%;
  height: auto;
  max-height: 46%;
  object-fit: contain;
}

.firm-port .roster-tag { color: var(--navy); mix-blend-mode: normal; }

.firm-port-name {
  padding: 0 24px;
  color: var(--navy);
  font-size: 1.4rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  text-align: center;
}

.firm-empty {
  margin: 24px 0 0;
  color: rgba(238, 244, 250, 0.62);
}

/* a firm card keeps its navy on hover (a general link hover was turning it white) */
body .roster-section a.firm-card:hover,
body .roster-section a.firm-card:focus-visible {
  background: #002442;
  color: #eef4fa;
}

/* Advisory deals get their own blue, between azure (sell-side) and light blue (equity), since navy
   and azure are both taken; it replaces the grey on the badge, mark, card back and arrow */
:root { --mid-blue: #1089be; }
body .deal-card--other { --svc: var(--mid-blue); }
body .deal-card-pill--other { background: var(--mid-blue); }
body .deal-card--other .deal-card-stop { color: var(--mid-blue); }

/* conference hero: poster on the left, headline on the right; the watermark sits lower so it
   clears the menu and runs off the bottom-right corner */
@media (min-width: 901px) {
  body .event-hero-inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); }
  body .event-poster { order: -1; justify-self: start; }
}
body .event-hero::before { top: 72%; }

/* a firm's members, in the Leadership roster style: each card links to the member's profile */
body .roster-section a.member-roster-card,
body .roster-section a.member-roster-card:hover,
body .roster-section a.member-roster-card:focus-visible {
  background: #002442;
  color: #eef4fa;
  text-decoration: none;
}
.member-roster.is-clipped {
  overflow: hidden;
  transition: max-height 0.7s var(--ease-smooth-out);
}
@media (prefers-reduced-motion: reduce) {
  .member-roster.is-clipped { transition: none; }
}
.member-roster .person-photo-empty {
  position: absolute;
  inset: 0;
  height: 100%;
  color: rgba(238, 244, 250, 0.5);
  font-size: 2.4rem;
  font-weight: 700;
}
.roster-section.firm-members .section-more { margin-top: 32px; }
/* a long job title in the portrait's corner stops short of the number tag */
body .roster-tag.is-right {
  max-width: calc(100% - 96px);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* member cards: the firm name and View profile are their own links, each with a rollover;
   hovering the card still lifts the portrait and brackets */
body .roster-section .member-roster-card { background: #002442; color: #eef4fa; }
body .member-roster-card .roster-cta { color: #8ea6bd; text-decoration: none; }
body .member-roster-card:hover .roster-cta { color: #8ea6bd; }
body .member-roster-card:hover .roster-cta::before { transform: scaleX(0); }
body .member-roster-card:hover .roster-cta span:last-child { transform: none; }
body .member-roster-card .roster-cta:hover,
body .member-roster-card .roster-cta:focus-visible { color: var(--accent-blue); }
body .member-roster-card .roster-cta:hover::before,
body .member-roster-card .roster-cta:focus-visible::before { transform: scaleX(1); }
body .member-roster-card .roster-cta:hover span:last-child,
body .member-roster-card .roster-cta:focus-visible span:last-child { transform: translateX(8px); }
body .member-roster-card .roster-firm:hover,
body .member-roster-card .roster-firm:focus-visible { color: var(--accent-blue); text-decoration-color: currentColor; }

/* member profile: LinkedIn and X as one row of matching outline icons under the firm */
.member-head-links {
  display: flex;
  gap: 10px;
  margin: 22px 0 0;
}
.social-link {
  display: inline-grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(0, 40, 72, 0.22);
  border-radius: 50%;
  color: var(--navy);
  transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}
.social-link svg { width: 16px; height: 16px; fill: currentColor; }
.social-link:hover,
.social-link:focus-visible {
  border-color: var(--accent-blue);
  background: var(--accent-blue);
  color: #fff;
}

/* home, Recent deals on desktop: the carousel sits closer under its intro */
@media (min-width: 1101px) {
  body.home .deals-section .section-heading { margin-bottom: 44px; }
}


/* Deals page on desktop: bigger cards, three across (24 load per page, so rows stay full) */
@media (min-width: 961px) {
  body.page-deals .deals-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 28px;
  }
}

/* home, Recent deals: slightly bigger cards on desktop */
@media (min-width: 1101px) {
  body.home .deals-section .deal-card { zoom: 0.85; }
}

/* home, Recent deals: "View all deals" is a text link, not a button; the underline draws in
   and the arrow slides on hover */
.deals-all-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 6px 0;
  color: var(--navy);
  font-size: 0.8rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-label);
  text-decoration: none;
  text-transform: uppercase;
  transition: color .3s ease;
}
.deals-all-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0.35);
  transform-origin: left;
  transition: transform .5s cubic-bezier(.22, 1, .36, 1);
}
.deals-all-link span:last-child { font-size: 1.1em; transition: transform .4s cubic-bezier(.22, 1, .36, 1); }
.deals-all-link:hover,
.deals-all-link:focus-visible { color: var(--accent-blue); }
.deals-all-link:hover::after,
.deals-all-link:focus-visible::after { transform: scaleX(1); }
.deals-all-link:hover span:last-child,
.deals-all-link:focus-visible span:last-child { transform: translateX(6px); }
/* the link lines up with the heading's text edge, and sits nearer the cards */
@media (min-width: 1101px) {
  body.home .deals-section .deals-cta { margin-top: 36px; padding-inline: 57.6px; }
}

/* home, Industry sectors cards: the rollover washes the whole card blue (not a pale top fade),
   so the sentence reads in pale blue-white under the white sector name */
body .sc-scrim {
  background: linear-gradient(180deg, rgba(0, 92, 150, 0.88) 0%, rgba(0, 40, 72, 0.92) 100%);
}
body .sc-desc { color: #d8eaf6; }
body .sc-slide:hover .sc-line,
body .sc-slide:has(:focus-visible) .sc-line { color: #d8eaf6; }
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  body .sc-line { color: #d8eaf6; }
}

/* home headlines type on one letter at a time (js/scramble-heads.js): letters keep their place
   while hidden, and the newest one flips through random letters in its own colour before it lands */
.type-char { position: relative; }
.type-char.is-waiting { visibility: hidden; }
.type-char.is-flipping { color: transparent !important; }
.type-char.is-flipping::after {
  content: attr(data-glyph);
  position: absolute;
  left: 0;
  top: 0;
  /* the letter's inline box is its font's content area, so "normal" line height puts the
     flipping letter on the same baseline as the real one */
  line-height: normal;
  color: var(--glyph-color, inherit);
}

/* roster cards (Leadership, member firms, members): no corner strokes, kept minimal */
body .roster-card::before,
body .roster-card::after { display: none; }

/* flip cards carry their shadow on the front face, so the card itself must not clip it */
body .deal-card.has-back { overflow: visible; }

/* ---------- Site search popup: full screen over a blurred navy wash, live results as you type ---------- */
html.search-lock { overflow: hidden; }
body .site-search {
  position: fixed;
  inset: 0;
  top: 0;
  left: 0;
  z-index: 200;
  width: auto;
  transform: none;
  overflow-y: auto;
  background: rgba(0, 26, 48, 0.95);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  color: #eef4fa;
}
body .site-search[hidden] { display: none; }
body .site-search-inner {
  width: min(960px, calc(100% - 32px));
  margin: 0 auto;
  padding: clamp(80px, 16vh, 180px) 0 15vh;
}
body .site-search-form {
  padding: 0 0 14px;
  border-radius: 0;
  background: none;
  box-shadow: none;
  border-bottom: 1px solid rgba(238, 244, 250, 0.22);
  animation: none;
  gap: 16px;
}
body .site-search-form input {
  color: #fff;
  font-size: clamp(1.8rem, 4vw, 3.2rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.15;
}
body .site-search-form input::placeholder { color: rgba(238, 244, 250, 0.35); }
body .site-search-form input::-webkit-search-cancel-button { display: none; }
body .site-search-close { color: #eef4fa; font-size: 2.2rem; flex: none; }
body .site-search-close:hover { color: var(--accent-blue); }
.site-search-hint {
  margin: 14px 0 0;
  font-family: var(--mono, ui-monospace, monospace);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(238, 244, 250, 0.5);
}
.site-search-hint b {
  display: inline-block;
  min-width: 1.6em;
  margin-right: 4px;
  padding: 1px 5px;
  border: 1px solid rgba(238, 244, 250, 0.28);
  border-radius: 4px;
  color: #eef4fa;
  font-weight: 400;
  text-align: center;
}
.site-search-results { margin-top: 44px; transition: opacity 0.2s; }
.site-search.is-loading .site-search-results { opacity: 0.55; }
.site-search-groups {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 40px 48px;
}
.site-search-group h3 {
  margin: 0 0 12px;
  font-family: var(--mono, ui-monospace, monospace);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent-blue);
}
.site-search-group ul { margin: 0; padding: 0; list-style: none; }
.site-search-group a {
  display: block;
  margin: 0 -10px;
  padding: 8px 10px;
  border-radius: 6px;
  color: #eef4fa;
  font-size: 1.05rem;
  line-height: 1.35;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.site-search-group a:hover,
.site-search-group a.is-active { background: rgba(31, 163, 209, 0.2); color: #fff; }
.site-search-group mark { background: none; color: var(--accent-blue); }
.site-search-all {
  display: inline-block;
  margin-top: 44px;
  color: #fff;
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--accent-blue);
  text-underline-offset: 6px;
}
.site-search-all.is-active, .site-search-all:hover { color: var(--accent-blue); }
.site-search-empty { color: rgba(238, 244, 250, 0.6); font-size: 1.1rem; }

/* every page header's headline is bold */
body main h1,
body .page-head h1 { font-weight: 700; }

/* the About opening lede reads a size up */
body .split-copy-inner .about-lede { font-size: 1.32em; }

/* About opening: on desktop the headline runs 30% wider than the copy column (the photo
   behind is full bleed, so it can run on to the right) */
@media (min-width: 1101px) {
  body.page-about .split-copy-inner h1 { width: 130%; max-width: 130%; }
}

/* Conferences & community: "More conferences" is a text link, not a button */
body .conferences-more-link { border: 0; background: none; cursor: pointer; font-family: inherit; }
body .conferences-more-link:hover span:last-child,
body .conferences-more-link:focus-visible span:last-child { transform: translateY(3px); }

/* About opening: the dark rise from the bottom stays low, only under the stats */
body.page-about .page-block.has-split::after {
  background:
    linear-gradient(90deg, rgba(1, 8, 15, 0.66) 0%, rgba(1, 8, 15, 0.4) 50%, rgba(1, 8, 15, 0.14) 100%),
    linear-gradient(0deg, rgba(1, 8, 15, 0.85) 0%, rgba(1, 8, 15, 0.4) 10%, rgba(1, 8, 15, 0) 24%);
}

/* Conference page opening: the headline is bold and the whole copy block sits level with the
   top of the poster */
body .event-hero-copy h1 { font-weight: 700; }
@media (min-width: 901px) {
  body .event-hero-inner > .event-hero-copy { align-self: start; }
}

/* site search popup: the results read big, like the search line itself */
body .site-search-groups { grid-template-columns: 1fr; gap: 36px; }
body .site-search-group a {
  margin: 0 -14px;
  padding: 6px 14px;
  font-size: clamp(1.5rem, 2.6vw, 2.2rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.15;
}
body .site-search-group h3 { margin-bottom: 8px; }

/* How CapFive works: the points on the left keep the original interface feel (small monospace capitals
   on hairlines, the progress line filling under the active one), without running numbers or markers */
body .how-index li {
  grid-template-columns: 1fr;
  padding: 20px 0;
  font-size: 12px;
  letter-spacing: .12em;
}
body .how-index li.is-on { color: var(--hw-fg); }
body .how-kicker {
  font-family: inherit;
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  text-transform: none;
}

/* Sectors opening: the eyebrow is green, as on the other photo openings */
body .sectors-hero .eyebrow { color: var(--green); }

/* Deals opening, desktop: the lede runs half as wide again */
@media (min-width: 1101px) {
  body .page-block.has-split.deals-hero .about-lede { max-width: 606px; }
}

/* photo openings: the eyebrow is green even where it carries the accent class */
body .page-block.has-split .eyebrow, body .page-block.has-split .eyebrow-accent { color: var(--green); }

/* the part of any headline an editor wraps in <b> (or <i>, <strong>, <em>) reads in the accent blue */
body .heading-accent { color: var(--accent-blue); font-weight: inherit; font-style: normal; }

/* Sectors and Services: no running number beside each sector or service headline; the name takes the full width */
body:is(.page-sectors, .page-services) .sector-edit-txt .sector-edit-index { display: none; }
body:is(.page-sectors, .page-services) .sector-edit-txt :is(h2, h3) { grid-column: 1 / -1; }

/* Sectors opening: the headline wraps narrower */
body .sectors-hero-type { max-width: 660px; }

/* Inner pages: the large CapFive symbol above the opening eyebrow (js/hero-logo.js). The artwork has
   empty space around it (left 19.2%, top 21.3%, bottom 21.9% of the file), so the margins pull it back
   to sit on the text edge; the menu bar's own small logo is hidden on these pages. */
.hero-logo {
  --w: clamp(122px, 10.5vw, 162px);
  display: block;
  width: var(--w);
  /* the space under it is half the symbol's own height plus a little, so it sits well above the eyebrow */
  margin: calc(var(--w) * -0.213) 0 calc(var(--w) * -0.219 + var(--w) * 0.284 + 26px) calc(var(--w) * -0.1916);
  line-height: 0;
}
.hero-logo img { display: block; width: 100%; height: auto; }
.hero-logo.is-white img { filter: brightness(0) invert(1); }
@media (max-width: 760px) {
  .hero-logo { --w: 97px; }
}
body.has-hero-logo .site-header .brand-lockup { display: none; }

/* phones: with the logo above, the opening keeps clear space between its paragraph and the figures */
@media (max-width: 760px) {
  body.has-hero-logo .page-block.has-split .hero-stats { margin-top: 36px; }
}

/* deal cards: the CapFive mark on the front in the same colour as the card's service badge, a touch see-through */
body .deal-card::after,
body .deal-card--buy::after,
body .deal-card--equity::after,
body .deal-card--debt::after,
body .deal-card.has-back .deal-card-front::after,
body .deal-card--buy.has-back .deal-card-front::after,
body .deal-card--equity.has-back .deal-card-front::after,
body .deal-card--debt.has-back .deal-card-front::after { opacity: 0.8; }

/* Sectors and Services: "Latest deals" reads as an eyebrow (bold sans, title case) with more room above */
body:is(.page-sectors, .page-services) .service-deals-title-short {
  font-family: inherit;
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  text-transform: capitalize;
  color: var(--accent-blue);
}
body:is(.page-sectors, .page-services) .service-deals-title { padding-top: clamp(40px, 5vw, 72px); margin-bottom: 18px; }

/* Menu bar: the links read as one sentence, bold and a size up: "Home. About. Network." Each word
   carries its full stop and the words sit a space apart. On inner pages (desktop) the bar is no wider
   than its words and starts on the opening's text edge, above the logo and the headline. */
.site-header.dock-header .site-nav a,
.site-header.dock-header .header-right a {
  padding-left: 0;
  padding-right: 0;
  font-size: 1.12rem;
  font-weight: 700;
  letter-spacing: -0.025em;
}
.site-header.dock-header .site-nav,
.site-header.dock-header .header-right { gap: 0.3em; }
@media (min-width: 1101px) {
  body.has-hero-logo .site-header.dock-header.scrolled .dock-group {
    grid-column: 1 / 3;
    justify-self: start;
    margin-left: calc(var(--menu-left, 188px) - 28px - 20px);
    padding: 8px 20px;
  }
  body.has-hero-logo .site-header.dock-header.scrolled .header-right { padding: 8px 20px; }
}

/* Member firm page: the firm's logo leads, above the eyebrow; the firm name is set tighter */
.single-firm .page-head-logo { margin: 0 0 clamp(28px, 4vw, 48px); line-height: 0; }
.single-firm .page-head-logo img { display: block; width: auto; max-width: min(320px, 70vw); max-height: 96px; height: auto; object-fit: contain; object-position: left center; }
body.single-firm .page-head h1 { letter-spacing: -0.05em; }

/* Sectors: no progress line above each sector name; on desktop each sector (photo, text, latest
   deals) fits on one screen: a shorter photo, less space between, smaller deal cards */
body.page-sectors .sector-edit-track { display: none; }
@media (min-width: 1101px) {
  body.page-sectors .sector-edit-row { padding-top: 24px; padding-bottom: 0; }
  body.page-sectors .sector-edit-fig img { max-height: 30vh; object-fit: cover; }
  body.page-sectors .service-deals-title { padding-top: 28px; margin-bottom: 14px; }
  body.page-sectors .service-deals .section-more { margin-top: 16px; }
}
/* short laptop screens: the four deal cards run a little narrower so the sector still fits */
@media (min-width: 1101px) and (max-height: 880px) {
  body.page-sectors .service-deals .deals-grid { max-width: 74%; }
}

/* Sectors chart: a short line under the heading says how to read the chart */
.sector-transactions-intro { max-width: 46ch; margin: 14px 0 0; color: var(--muted); font-size: 1.05rem; line-height: 1.5; }
/* menu a touch bigger; the page you are on reads in blue */
.site-header.dock-header .site-nav a,
.site-header.dock-header .header-right a { font-size: 1.22rem; }
.site-header.dock-header .site-nav a[aria-current="page"],
.site-header.dock-header .header-right a[aria-current="page"],
.site-header.dock-header.scrolled.on-dark .site-nav a[aria-current="page"],
.site-header.dock-header.scrolled.on-dark .header-right a[aria-current="page"] { color: var(--accent-blue); }

/* menu bar: no underline; a hovered word goes green, the page you are on is light blue */
.site-header.dock-header .nav-underline,
.site-header.dock-header .header-right a::after,
.site-header.dock-header .header-search::after { display: none; }
.site-header.dock-header .site-nav a:hover,
.site-header.dock-header .header-right a:hover,
.site-header.dock-header .header-search:hover,
.site-header.dock-header.scrolled.on-dark .site-nav a:hover,
.site-header.dock-header.scrolled.on-dark .header-right a:hover,
.site-header.dock-header.scrolled.on-dark .header-search:hover { color: var(--green); }
.site-header.dock-header .site-nav a[aria-current="page"],
.site-header.dock-header .header-right a[aria-current="page"],
.site-header.dock-header.scrolled.on-dark .site-nav a[aria-current="page"],
.site-header.dock-header.scrolled.on-dark .header-right a[aria-current="page"] { color: var(--accent-blue); }

/* menu bar: no pill behind the words, no blur */
.site-header.dock-header.scrolled .dock-group,
.site-header.dock-header.scrolled .header-right,
.site-header.dock-header.scrolled.on-dark .dock-group,
.site-header.dock-header.scrolled.on-dark .header-right {
  background: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: none;
}

/* menu bar: Search is a word like the others ("Search. Member login. Contact.") */
.site-header.dock-header .header-search {
  width: auto;
  height: auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.22rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: inherit;
  color: inherit;
  cursor: pointer;
}
.site-header.dock-header .header-search[aria-expanded="true"] { color: var(--accent-blue); }

/* Sectors (trial): each sector's photo fills its whole block, edge to edge, under a white wash that
   keeps the navy text readable; the separate photo beside the text goes */
body.page-sectors .sector-block {
  position: relative;
  isolation: isolate;
  margin-inline: calc(50% - 50vw);
  padding: clamp(56px, 8vh, 96px) calc(50vw - 50%) clamp(56px, 8vh, 96px);
  background: #f4f6fa var(--sector-image) center / cover no-repeat;
}
body.page-sectors .sector-block::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(244, 246, 250, 0.86) 0%, rgba(244, 246, 250, 0.72) 55%, rgba(244, 246, 250, 0.58) 100%);
}
body.page-sectors .sector-block .sector-edit-fig { display: none; }
body.page-sectors .sector-block .sector-edit-row { display: block; padding-top: 0; }
body.page-sectors .sector-block .sector-edit-txt { max-width: 640px; }
body.page-sectors .sector-block .service-deals { padding-bottom: 0; }

/* Sectors and Services: no "N more in this sector" count beside the All deals link */
body:is(.page-sectors, .page-services) .service-deals .service-deals-count { display: none; }
body:is(.page-sectors, .page-services) .service-deals .section-more { justify-content: flex-end; }

/* Sectors: each sector stays pinned as you scroll and the next one slides up over it (desktop) */
@media (min-width: 1101px) {
  body.page-sectors .sector-block {
    position: sticky;
    top: var(--stick, 0px);
    min-height: 100vh;
    padding-top: 130px;
    box-shadow: 0 -24px 48px -24px rgba(0, 26, 48, 0.25);
  }
}

/* Sectors: each sector's content keeps the same side margins as the opening's text (js/sector-stack.js) */
body.page-sectors .sector-block { padding-left: var(--sector-edge, calc(50vw - 50%)); padding-right: var(--sector-edge, calc(50vw - 50%)); }

/* deal cards: the CapFive mark on the front is a light grey, whatever the service */
body .deal-card::after,
body .deal-card.has-back .deal-card-front::after { background: #e6eaef; opacity: 1; }


/* Sectors: the wash over each sector photo is the CapFive blue, with white type */
body.page-sectors .sector-block { background-color: #001a30; }
body.page-sectors .sector-block::before {
  background: linear-gradient(90deg, rgba(0, 40, 72, 0.9) 0%, rgba(0, 62, 110, 0.74) 55%, rgba(0, 110, 171, 0.55) 100%);
}
body.page-sectors .sector-block .sector-edit-txt h3 { color: #fff; }
body.page-sectors .sector-block .sector-edit-txt p { color: rgba(255, 255, 255, 1); }
body.page-sectors .sector-block .sector-edit-txt p b { color: var(--green); }
body.page-sectors .sector-block .service-deals-title-short { color: var(--green); }
body.page-sectors .sector-block .section-more a { color: #fff; }
/* the blue wash runs as a gradient: deep navy behind the text on the left and along the foot, clearing
   to the open photo top right */
body.page-sectors .sector-block::before {
  background:
    linear-gradient(100deg, rgba(0, 40, 72, 0.96) 0%, rgba(0, 52, 92, 0.82) 38%, rgba(0, 110, 171, 0.25) 75%, rgba(0, 110, 171, 0) 100%),
    linear-gradient(0deg, rgba(0, 40, 72, 0.85) 0%, rgba(0, 40, 72, 0) 45%);
}

/* Sectors: more room above "Latest deals" */
body.page-sectors .sector-block .service-deals-title { padding-top: clamp(72px, 9vh, 104px); }
body.page-sectors .sector-block .service-deals-title { margin-bottom: 48px; }

/* Sectors on desktop: the sectors sit on one stage, one screen tall, and slide in from the right
   (js/sector-stack.js); the sticky stacking is for smaller screens only */
@media (min-width: 1101px) {
  body.page-sectors .sector-list.is-sliding { padding-top: 0; padding-bottom: 0; }
  body.page-sectors .sector-stage {
    position: relative;
    width: 100%;
    height: 100vh;
    overflow: hidden;
  }
  body.page-sectors .sector-list.is-sliding { display: none; }
  body.page-sectors .sector-stage .sector-block {
    position: absolute;
    inset: 0;
    margin: 0;
    min-height: 0;
    height: 100vh;
    overflow: hidden;
    box-shadow: -30px 0 60px -30px rgba(0, 26, 48, 0.55);
  }
}
@media (min-width: 1101px) { body.page-sectors .sector-stage .sector-block { padding-top: 116px; padding-bottom: 32px; } }

/* Sectors: the text sits lower, clear of the menu, and the paragraph reads a size up */
body.page-sectors .sector-block .sector-edit-txt p:not(:has(b)) { font-size: 1.4em; line-height: 1.45; font-weight: 600; }
body.page-sectors .sector-block { padding-top: clamp(110px, 14vh, 150px); }
@media (min-width: 1101px) {
  body.page-sectors .sector-stage .sector-block { padding-top: clamp(140px, 18vh, 190px); }
}

/* deal cards: the front is the same solid service colour as the back, with white type; the badge
   turns white with the service colour as its text, and the mark is a faint white */
body .deal-card,
body .deal-card .deal-card-front { background: var(--svc); }
body .deal-card .deal-card-line { color: rgba(255, 255, 255, 0.72); }
body .deal-card .deal-card-name,
body .deal-card .deal-card-line b,
body .deal-card .deal-card-line.is-plain { color: #fff; }
body .deal-card .deal-card-line::after { color: #fff; }
body .deal-card .deal-card-row { border-color: rgba(255, 255, 255, 0.24); }
body .deal-card .deal-card-row dt { color: rgba(255, 255, 255, 0.66); }
body .deal-card .deal-card-row dd,
body .deal-card .deal-card-row dd a { color: #fff; }
body .deal-card .deal-card-rows { border-color: rgba(255, 255, 255, 0.24); }
body .deal-card .deal-card-pill { background: #fff; color: var(--svc); }
body .deal-card::after,
body .deal-card.has-back .deal-card-front::after { background: #fff; opacity: 0.12; }
body .deal-card .deal-card-stop { color: #fff; }

/* Sectors: the paragraphs run wider */
@media (min-width: 1101px) {
  body.page-sectors .sector-block .sector-edit-txt { max-width: 820px; }
  body.page-sectors .sector-block .sector-edit-row p:not(.eyebrow) { max-width: 760px; }
}

/* Sectors on desktop: "Latest deals" and the cards sit at the same height in every sector, anchored
   to the foot of the screen; the text above takes whatever room it needs */
@media (min-width: 1101px) {
  body.page-sectors .sector-stage .sector-block { display: flex; flex-direction: column; }
  body.page-sectors .sector-stage .sector-block .service-deals { margin-top: auto; }
  body.page-sectors .sector-stage .sector-block .service-deals-title { padding-top: 40px; }
}

/* Sectors: the blue wash runs from the bottom left corner, denser, clearing toward the top right */
body.page-sectors .sector-block::before {
  background: linear-gradient(35deg, rgba(0, 20, 40, 0.99) 0%, rgba(0, 26, 50, 0.97) 50%, rgba(0, 36, 68, 0.9) 70%, rgba(0, 58, 104, 0.66) 88%, rgba(0, 90, 150, 0.4) 100%);
}

/* Sectors: each heading is the sentence of all the sectors, its own one lit (js/sector-stack.js) */
body.page-sectors .sector-edit-row h3.sector-sentence {
  max-width: 960px;
  font-size: clamp(1.3rem, 1.9vw, 1.8rem);
  line-height: 1.2;
  letter-spacing: -0.03em;
}
body.page-sectors h3.sector-sentence a { color: rgba(255, 255, 255, 0.32); text-decoration: none; transition: color .25s ease; }
body.page-sectors h3.sector-sentence a:hover { color: var(--green); }
body.page-sectors h3.sector-sentence a[aria-current] { color: #fff; }
body.page-sectors .sector-edit-row h3.sector-sentence { margin-bottom: 18px; }
/* the sector sentence runs wider */
@media (min-width: 1101px) {
  body.page-sectors .sector-block .sector-edit-txt { max-width: 1120px; }
  body.page-sectors .sector-edit-row h3.sector-sentence { max-width: 1120px; }
}
/* sector sentence: names white, the current sector green, a hovered name light blue */
body.page-sectors h3.sector-sentence a { color: rgba(255, 255, 255, 0.9); }
body.page-sectors h3.sector-sentence a[aria-current] { color: var(--green); }
body.page-sectors h3.sector-sentence a:hover { color: var(--accent-blue); }

/* Sectors on desktop: tighter spacing and a wider paragraph give the deal cards more height */
@media (min-width: 1101px) {
  body.page-sectors .sector-stage .sector-block { padding-top: 112px; padding-bottom: 24px; }
  body.page-sectors .sector-stage .sector-block .sector-edit-row p:not(.eyebrow) { max-width: 780px; padding-bottom: 10px; }
  body.page-sectors .sector-stage .sector-block .service-deals-title { padding-top: 18px; margin-bottom: 22px; }
  body.page-sectors .sector-stage .sector-block .service-deals .section-more { margin-top: 10px; }
}
/* more room above each sector's green lead line */
body.page-sectors .sector-block .sector-edit-txt p:has(b) { padding-top: 22px; }

/* Sectors: the sector sentence sits well clear of the menu bar and is set smaller, a step below the
   paragraph, so it reads as a sub-menu rather than a headline */
body.page-sectors .sector-edit-row h3.sector-sentence { font-size: clamp(1rem, 1.25vw, 1.2rem); line-height: 1.35; letter-spacing: -0.015em; max-width: 1000px; }
@media (min-width: 1101px) {
  body.page-sectors .sector-stage .sector-block { padding-top: 150px; }
}

/* Sectors: the green lead line and the paragraph a size up */
body.page-sectors .sector-block .sector-edit-txt p:has(b) { font-size: clamp(1.6rem, 2.2vw, 2.1rem); line-height: 1.2; }
body.page-sectors .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) { font-size: clamp(1.35rem, 1.75vw, 1.65rem); line-height: 1.4; }
/* more room under the sector sub-menu */
body.page-sectors .sector-edit-row h3.sector-sentence { margin-bottom: 44px; }

/* Sectors on desktop: the deal cards have one fixed size, scaled to the screen height, and sit at the
   same distance from the foot of every sector, whatever the text above */
@media (min-width: 1101px) {
  body.page-sectors .sector-stage .sector-block { --card-h: clamp(250px, 36vh, 400px); }
  body.page-sectors .sector-stage .sector-block .service-deals {
    position: absolute;
    left: var(--sector-edge, 188px);
    right: var(--sector-edge, 188px);
    bottom: 28px;
    margin: 0;
  }
  body.page-sectors .sector-stage .sector-block .service-deals-title { padding-top: 0; margin-bottom: 18px; }
  body.page-sectors .sector-stage .sector-block .deals-grid {
    display: grid;
    grid-template-columns: repeat(4, calc(var(--card-h) / 1.4142));
    gap: 20px;
    max-width: none !important;
  }
  body.page-sectors .sector-stage .sector-block .deals-grid .deal-card { width: auto; height: var(--card-h); zoom: 1; }
}
/* room for the fixed cards: the text block above runs a little tighter */
@media (min-width: 1101px) {
  body.page-sectors .sector-stage .sector-block { padding-top: 140px; --card-h: clamp(275px, 37.4vh, 440px); }
  body.page-sectors .sector-stage .sector-edit-row h3.sector-sentence { margin-bottom: 52px; }
  body.page-sectors .sector-stage .sector-block .sector-edit-txt p:has(b) { padding-top: 6px; }
  body.page-sectors .sector-stage .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) { line-height: 1.34; }
}
@media (min-width: 1101px) and (max-height: 880px) {
  body.page-sectors .sector-stage .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) { font-size: 1.2rem; }
  body.page-sectors .sector-stage .sector-block .sector-edit-txt p:has(b) { font-size: 1.45rem; }
}

/* Sectors: the label reads "Latest deals in <sector>" */
body.page-sectors .service-deals-title .service-deals-title-short { display: none; }
body.page-sectors .service-deals-title > strong,
body.page-sectors .service-deals-title > span {
  display: inline;
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  text-transform: none;
  color: var(--green);
}

/* Sectors: the cards' label is just "Deals" */
body.page-sectors .service-deals-title > strong,
body.page-sectors .service-deals-title > span { display: none; }
body.page-sectors .service-deals-title .service-deals-title-short { display: inline; font-size: 0; }
body.page-sectors .service-deals-title .service-deals-title-short::after {
  content: "Deals";
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  color: var(--green);
}
/* more room under the cards' label */
@media (min-width: 1101px) { body.page-sectors .sector-stage .sector-block .service-deals-title { margin-bottom: 32px; } }

/* Services: the same stacked, sliding blocks as Sectors (js/sector-stack.js wraps each service) */
body.page-services .sector-block {
  position: relative;
  isolation: isolate;
  margin-inline: calc(50% - 50vw);
  padding: clamp(56px, 8vh, 96px) calc(50vw - 50%) clamp(56px, 8vh, 96px);
  background: #f4f6fa var(--sector-image) center / cover no-repeat;
}
body.page-services .sector-block::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(244, 246, 250, 0.86) 0%, rgba(244, 246, 250, 0.72) 55%, rgba(244, 246, 250, 0.58) 100%);
}
body.page-services .sector-block .sector-edit-fig { display: none; }
body.page-services .sector-block .sector-edit-row { display: block; padding-top: 0; }
body.page-services .sector-block .sector-edit-txt { max-width: 640px; }
body.page-services .sector-block .service-deals { padding-bottom: 0; }
@media (min-width: 1101px){
body.page-services .sector-block {
    position: sticky;
    top: var(--stick, 0px);
    min-height: 100vh;
    padding-top: 130px;
    box-shadow: 0 -24px 48px -24px rgba(0, 26, 48, 0.25);
  }
}
body.page-services .sector-block { padding-left: var(--sector-edge, calc(50vw - 50%)); padding-right: var(--sector-edge, calc(50vw - 50%)); }
body.page-services .sector-block { background-color: #001a30; }
body.page-services .sector-block::before {
  background: linear-gradient(90deg, rgba(0, 40, 72, 0.9) 0%, rgba(0, 62, 110, 0.74) 55%, rgba(0, 110, 171, 0.55) 100%);
}
body.page-services .sector-block .sector-edit-txt h3 { color: #fff; }
body.page-services .sector-block .sector-edit-txt p { color: rgba(255, 255, 255, 1); }
body.page-services .sector-block .sector-edit-txt p b { color: var(--green); }
body.page-services .sector-block .service-deals-title-short { color: var(--green); }
body.page-services .sector-block .section-more a { color: #fff; }
body.page-services .sector-block::before {
  background:
    linear-gradient(100deg, rgba(0, 40, 72, 0.96) 0%, rgba(0, 52, 92, 0.82) 38%, rgba(0, 110, 171, 0.25) 75%, rgba(0, 110, 171, 0) 100%),
    linear-gradient(0deg, rgba(0, 40, 72, 0.85) 0%, rgba(0, 40, 72, 0) 45%);
}
body.page-services .sector-block .service-deals-title { padding-top: clamp(72px, 9vh, 104px); }
body.page-services .sector-block .service-deals-title { margin-bottom: 48px; }
@media (min-width: 1101px){
body.page-services .sector-list.is-sliding { padding-top: 0; padding-bottom: 0; }
body.page-services .sector-stage {
    position: relative;
    width: 100%;
    height: 100vh;
    overflow: hidden;
  }
body.page-services .sector-list.is-sliding { display: none; }
body.page-services .sector-stage .sector-block {
    position: absolute;
    inset: 0;
    margin: 0;
    min-height: 0;
    height: 100vh;
    overflow: hidden;
    box-shadow: -30px 0 60px -30px rgba(0, 26, 48, 0.55);
  }
}
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { padding-top: 116px; padding-bottom: 32px; }
}
body.page-services .sector-block .sector-edit-txt p:not(:has(b)) { font-size: 1.4em; line-height: 1.45; font-weight: 600; }
body.page-services .sector-block { padding-top: clamp(110px, 14vh, 150px); }
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { padding-top: clamp(140px, 18vh, 190px); }
}
@media (min-width: 1101px){
body.page-services .sector-block .sector-edit-txt { max-width: 820px; }
body.page-services .sector-block .sector-edit-row p:not(.eyebrow) { max-width: 760px; }
}
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { display: flex; flex-direction: column; }
body.page-services .sector-stage .sector-block .service-deals { margin-top: auto; }
body.page-services .sector-stage .sector-block .service-deals-title { padding-top: 40px; }
}
body.page-services .sector-block::before {
  background: linear-gradient(35deg, rgba(0, 20, 40, 0.99) 0%, rgba(0, 26, 50, 0.97) 50%, rgba(0, 36, 68, 0.9) 70%, rgba(0, 58, 104, 0.66) 88%, rgba(0, 90, 150, 0.4) 100%);
}
body.page-services .sector-edit-row h3.sector-sentence {
  max-width: 960px;
  font-size: clamp(1.3rem, 1.9vw, 1.8rem);
  line-height: 1.2;
  letter-spacing: -0.03em;
}
body.page-services h3.sector-sentence a { color: rgba(255, 255, 255, 0.32); text-decoration: none; transition: color .25s ease; }
body.page-services h3.sector-sentence a:hover { color: var(--green); }
body.page-services h3.sector-sentence a[aria-current] { color: #fff; }
body.page-services .sector-edit-row h3.sector-sentence { margin-bottom: 18px; }
@media (min-width: 1101px){
body.page-services .sector-block .sector-edit-txt { max-width: 1120px; }
body.page-services .sector-edit-row h3.sector-sentence { max-width: 1120px; }
}
body.page-services h3.sector-sentence a { color: rgba(255, 255, 255, 0.9); }
body.page-services h3.sector-sentence a[aria-current] { color: var(--green); }
body.page-services h3.sector-sentence a:hover { color: var(--accent-blue); }
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { padding-top: 112px; padding-bottom: 24px; }
body.page-services .sector-stage .sector-block .sector-edit-row p:not(.eyebrow) { max-width: 780px; padding-bottom: 10px; }
body.page-services .sector-stage .sector-block .service-deals-title { padding-top: 18px; margin-bottom: 22px; }
body.page-services .sector-stage .sector-block .service-deals .section-more { margin-top: 10px; }
}
body.page-services .sector-block .sector-edit-txt p:has(b) { padding-top: 22px; }
body.page-services .sector-edit-row h3.sector-sentence { font-size: clamp(1rem, 1.25vw, 1.2rem); line-height: 1.35; letter-spacing: -0.015em; max-width: 1000px; }
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { padding-top: 150px; }
}
body.page-services .sector-block .sector-edit-txt p:has(b) { font-size: clamp(1.6rem, 2.2vw, 2.1rem); line-height: 1.2; }
body.page-services .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) { font-size: clamp(1.35rem, 1.75vw, 1.65rem); line-height: 1.4; }
body.page-services .sector-edit-row h3.sector-sentence { margin-bottom: 44px; }
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { --card-h: clamp(250px, 36vh, 400px); }
body.page-services .sector-stage .sector-block .service-deals {
    position: absolute;
    left: var(--sector-edge, 188px);
    right: var(--sector-edge, 188px);
    bottom: 28px;
    margin: 0;
  }
body.page-services .sector-stage .sector-block .service-deals-title { padding-top: 0; margin-bottom: 18px; }
body.page-services .sector-stage .sector-block .deals-grid {
    display: grid;
    grid-template-columns: repeat(4, calc(var(--card-h) / 1.4142));
    gap: 20px;
    max-width: none !important;
  }
body.page-services .sector-stage .sector-block .deals-grid .deal-card { width: auto; height: var(--card-h); zoom: 1; }
}
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block { padding-top: 140px; --card-h: clamp(275px, 37.4vh, 440px); }
body.page-services .sector-stage .sector-edit-row h3.sector-sentence { margin-bottom: 52px; }
body.page-services .sector-stage .sector-block .sector-edit-txt p:has(b) { padding-top: 6px; }
body.page-services .sector-stage .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) { line-height: 1.34; }
}
@media (min-width: 1101px) and (max-height: 880px){
body.page-services .sector-stage .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) { font-size: 1.2rem; }
body.page-services .sector-stage .sector-block .sector-edit-txt p:has(b) { font-size: 1.45rem; }
}
body.page-services .service-deals-title .service-deals-title-short { display: none; }
body.page-services .service-deals-title > strong, body.page-services .service-deals-title > span {
  display: inline;
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  text-transform: none;
  color: var(--green);
}
body.page-services .service-deals-title > strong, body.page-services .service-deals-title > span { display: none; }
body.page-services .service-deals-title .service-deals-title-short { display: inline; font-size: 0; }
body.page-services .service-deals-title .service-deals-title-short::after {
  content: "Deals";
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  color: var(--green);
}
@media (min-width: 1101px){
body.page-services .sector-stage .sector-block .service-deals-title { margin-bottom: 32px; }
}

/* Services: the stage replaces the section it was built from; on the stage each service shows its
   lead line and first paragraph, the rest stays for smaller screens */
.is-staged { display: none !important; }
@media (min-width: 1101px) {
  body.page-services .sector-stage .sector-edit-txt > div > p:not(:first-child) { display: none; }
  body.page-services .sector-stage .sector-edit-txt .eyebrow,
  body.page-services .sector-stage .sector-edit-index { display: none; }
}
body.page-services .sector-block .sector-edit-txt > div > p { color: #fff; font-weight: 600; }

/* Services: its service names are h2s; the same sub-menu sentence styling */
body.page-services .sector-edit-track { display: none; }
its own one lit (js/sector-stack.js) */
body.page-services .sector-edit-row h2.sector-sentence {
  max-width: 960px;
  font-size: clamp(1.3rem, 1.9vw, 1.8rem);
  line-height: 1.2;
  letter-spacing: -0.03em;
}
body.page-services h2.sector-sentence a { color: rgba(255, 255, 255, 0.32); text-decoration: none; transition: color .25s ease; }
body.page-services h2.sector-sentence a:hover { color: var(--green); }
body.page-services h2.sector-sentence a[aria-current] { color: #fff; }
body.page-services .sector-edit-row h2.sector-sentence { margin-bottom: 18px; }
body.page-services .sector-edit-row h2.sector-sentence { max-width: 1120px; }
a hovered name light blue */
body.page-services h2.sector-sentence a { color: rgba(255, 255, 255, 0.9); }
body.page-services h2.sector-sentence a[aria-current] { color: var(--green); }
body.page-services h2.sector-sentence a:hover { color: var(--accent-blue); }
so it reads as a sub-menu rather than a headline */
body.page-services .sector-edit-row h2.sector-sentence { font-size: clamp(1rem, 1.25vw, 1.2rem); line-height: 1.35; letter-spacing: -0.015em; max-width: 1000px; }
/* more room under the sector sub-menu */
body.page-services .sector-edit-row h2.sector-sentence { margin-bottom: 44px; }
body.page-services .sector-stage .sector-edit-row h2.sector-sentence { margin-bottom: 52px; }
body.page-services .sector-edit-row h2.sector-sentence {
  max-width: 960px;
  font-size: clamp(1.3rem, 1.9vw, 1.8rem);
  line-height: 1.2;
  letter-spacing: -0.03em;
}
body.page-services h2.sector-sentence a { color: rgba(255, 255, 255, 0.32); text-decoration: none; transition: color .25s ease; }
body.page-services h2.sector-sentence a:hover { color: var(--green); }
body.page-services h2.sector-sentence a[aria-current] { color: #fff; }
body.page-services .sector-edit-row h2.sector-sentence { margin-bottom: 18px; }
body.page-services .sector-edit-row h2.sector-sentence { max-width: 1120px; }
body.page-services h2.sector-sentence a { color: rgba(255, 255, 255, 0.9); }
body.page-services h2.sector-sentence a[aria-current] { color: var(--green); }
body.page-services h2.sector-sentence a:hover { color: var(--accent-blue); }
body.page-services .sector-edit-row h2.sector-sentence { font-size: clamp(1rem, 1.25vw, 1.2rem); line-height: 1.35; letter-spacing: -0.015em; max-width: 1000px; }
body.page-services .sector-edit-row h2.sector-sentence { margin-bottom: 44px; }
body.page-services .sector-stage .sector-edit-row h2.sector-sentence { margin-bottom: 52px; }
@media (min-width: 1101px) { body.page-services .sector-stage .sector-edit-row h2.sector-sentence { margin-bottom: 52px; } }

/* Services: the cards' label reads "Deals in <service>" */
body.page-services .service-deals-title .service-deals-title-short { display: none; }
body.page-services .service-deals-title > strong { display: none; }
body.page-services .service-deals-title > span {
  display: inline;
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  text-transform: none;
  color: var(--green);
}
body.page-services .service-deals-title > span::before { content: "Deals in "; }

/* deal cards: a drop shadow that reads on light and dark grounds alike */
body .deal-card:not(.has-back),
body .deal-card.has-back .deal-card-front {
  box-shadow: 0 2px 4px rgba(0, 16, 32, 0.12), 0 22px 44px -18px rgba(0, 10, 22, 0.6);
}
/* over the dark sector and service photos the shadow is deeper so it still shows */
:is(body.page-sectors, body.page-services) .sector-block .deal-card.has-back .deal-card-front,
:is(body.page-sectors, body.page-services) .sector-block .deal-card:not(.has-back) { box-shadow: 0 4px 10px rgba(0, 0, 0, 0.35), 0 30px 60px -16px rgba(0, 0, 0, 0.85); }

/* Join: the benefits run without numbers; the enquiry heading is blue */
body .join-benefits--numbered li { grid-template-columns: 1fr; }
body.page-join #membership .prose h2.join-enquiry-heading, body.page-join #membership h2.join-enquiry-heading * { color: var(--accent-blue); }

/* Contact: the enquiry heading in light blue */
body.page-contact #enquiry .prose h2.contact-enquiry-heading, body.page-contact #enquiry h2.contact-enquiry-heading * { color: var(--accent-blue); }

/* Join and Contact: the CapFive mark behind the enquiry form is a faint, see-through watermark */
body.page-join #membership .join-watermark, body.page-contact #enquiry .join-watermark, body #enquiry img.join-watermark, body #membership img.join-watermark { opacity: 0.08 !important; }

/* Contact panel: slides in from the right over the page (js/contact-drawer.js) */
.contact-drawer-scrim { position: fixed; inset: 0; z-index: 220; background: rgba(0, 20, 38, 0.55); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); visibility: hidden; opacity: 0; transition: opacity .35s ease, visibility .35s; }
.contact-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 230;
  width: min(620px, 100vw);
  overflow-y: auto;
  padding: clamp(72px, 10vh, 110px) clamp(24px, 4vw, 56px) 48px;
  background: #001a30; color: #fff;
  box-shadow: -30px 0 80px -20px rgba(0, 0, 0, 0.6);
  visibility: hidden; transform: translateX(100%); transition: transform .5s cubic-bezier(.22,1,.36,1), visibility .5s;
}
.contact-drawer.is-open, .contact-drawer-scrim.is-open { visibility: visible; transform: none; opacity: 1; }
html.contact-open { overflow: hidden; }
.contact-drawer-close { position: absolute; top: 22px; right: 22px; width: 44px; height: 44px; border: 0; background: none; color: #fff; font-size: 2rem; line-height: 1; cursor: pointer; }
.contact-drawer-close:hover { color: var(--accent-blue); }
.contact-drawer .prose { margin-bottom: 28px; }
.contact-drawer h2 { margin: 0 0 12px; color: var(--accent-blue); font-size: clamp(2rem, 3vw, 2.8rem); font-weight: 700; letter-spacing: -0.04em; line-height: 1; }
.contact-drawer .join-form { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 16px; }
.contact-drawer .join-form > *:not(.join-field), .contact-drawer .join-form > .join-field--wide { grid-column: 1 / -1; }
.contact-drawer label, .contact-drawer .join-field span { color: rgba(255, 255, 255, 0.85); }
.contact-drawer .join-hp { display: none; }
.contact-drawer-loading, .contact-drawer-note { color: rgba(255, 255, 255, 0.75); font-size: 1.1rem; }
.contact-drawer-error { margin: 0; color: #ffb4a8; }
@media (max-width: 640px) { .contact-drawer .join-form { grid-template-columns: 1fr; } }

/* deal page: the CapFive mark in the opening is a faint watermark behind the facts */
body.single-deal img.deal-head-watermark { opacity: 0.05 !important; z-index: 0; pointer-events: none; }

/* Leadership and member cards: portraits in full colour at rest (the hover zoom stays) */
body .roster-card .roster-port img { filter: none; }

/* About, Conferences & community: the content starts on the menu bar's left edge, the same distance in on the right */
@media (min-width: 1101px) {
  body .about-conferences > .block-inner { width: auto; max-width: none; margin: 0; padding-left: var(--menu-left, 188px); padding-right: var(--menu-left, 188px); }
}

/* Network: the map sits a little closer to the member firms intro */
#member-firms .world-map.add-top { margin-top: 8px; }

/* Home "Why CapFive" fills the screen on desktop and iPad */
@media (min-width: 901px) {
  body.home .why-feature { min-height: 100vh; min-height: 100svh; }
}

/* About "What CapFive does": each service heading links to its section on Services */
.about-does-points h3 a { color: inherit; text-decoration: none; transition: color .2s; }
.about-does-points h3 a:hover, .about-does-points h3 a:focus-visible { color: var(--azure); }

/* About: more air above "Conferences & community" */
body .about-conferences { padding-top: clamp(150px, 13vw, 220px); }

/* About stacking sections: each sits on its own background and casts a soft edge over the one it covers */
.stack-section { position: relative; }
.pin-spacer + .stack-section, .pin-spacer + .pin-spacer > .stack-section { box-shadow: 0 -24px 48px rgba(0, 20, 40, 0.12); }

/* Network: member firm cards built like the Members page's, on the light band */
.roster-card.is-light {
  border: 1px solid rgba(0, 40, 72, 0.1);
  background: #fff;
  color: var(--navy);
  box-shadow: 0 18px 40px -24px rgba(0, 30, 60, 0.28);
  transition: box-shadow .4s ease, transform .4s ease;
}
.roster-card.is-light:hover,
.roster-card.is-light:focus-visible { box-shadow: 0 26px 50px -24px rgba(0, 30, 60, 0.38); }
.roster-card.is-light .firm-port { border-bottom: 1px solid rgba(0, 40, 72, 0.08); }
.roster-card.is-light .roster-stats > span:nth-child(odd) { color: #7a8b9c; }
.roster-card.is-light .roster-stats > span:nth-child(even) { color: var(--navy); }
.roster-card.is-light .roster-stats .is-role { color: var(--azure); }
.roster-card.is-light .roster-stats .firm-offices { margin: 0; padding: 0; color: var(--navy); font-size: inherit; line-height: inherit; white-space: normal; }
.roster-card.is-light .firm-offices .firm-address { font-weight: inherit; }
.roster-card.is-light .roster-cta { border-top-color: rgba(0, 40, 72, 0.12); color: #7a8b9c; }
.roster-card.is-light:hover .roster-cta,
.roster-card.is-light:focus-visible .roster-cta { color: var(--azure); }
.roster-card.is-light .roster-cta::before { background: var(--azure); }
.firm-roster--light .roster-card[hidden] { display: none; }

/* Services "What we bring": the same side edges as the services above it */
body.page-services .precision-section { padding-left: var(--sector-edge, 188px); padding-right: var(--sector-edge, 188px); }

/* Services: each service's paragraph reads like the opening's lede ("So having the best team of advisers…") */
body.page-services .sector-block .sector-edit-txt p:not(.eyebrow):not(:has(b)) {
  color: rgba(255, 255, 255, 0.8);
  font-size: 1.3365rem;
  font-weight: var(--weight-light);
  line-height: 1.24;
  letter-spacing: normal;
}

/* FAQ answers keep the paragraphs, breaks and bold an editor typed */
.faq-item .faq-answer { max-width: 68ch; padding-bottom: 30px; }
.faq-item .faq-answer p { margin: 0 0 1em; }
.faq-item .faq-answer p:last-child { margin-bottom: 0; }
.faq-item .faq-answer b, .faq-item .faq-answer strong { color: var(--navy); font-weight: 700; }
.faq-item .faq-answer ul, .faq-item .faq-answer ol { margin: 0 0 1em; padding-left: 1.2em; color: var(--muted); font-size: var(--type-body-lg); line-height: 1.6; }
/* the FAQ ends with a way to ask more */
.faq-cta { margin: clamp(36px, 4vw, 56px) 0 0; }

/* Services: the deals row sits higher in each service, closer to its copy */
@media (min-width: 1101px) {
  body.page-services .sector-stage .sector-block { --card-h: clamp(240px, 33vh, 390px); }
  body.page-services .sector-stage .sector-block .service-deals { bottom: clamp(52px, 7vh, 96px); }
}

/* Sectors: the cards' label reads "Deals in the <sector> sector" */
body.page-sectors .service-deals-title .service-deals-title-short { display: none; }
body.page-sectors .service-deals-title > span {
  display: inline;
  font-size: 1.32rem;
  font-weight: 700;
  letter-spacing: -0.024em;
  text-transform: none;
  color: var(--green);
}
body.page-sectors .service-deals-title > span::before { content: "Deals in the "; }
body.page-sectors .service-deals-title > span::after { content: " sector"; }

/* deal cards: the deal type reads as an eyebrow (bold, title case), not a pill badge */
body .deal-card .deal-card-pill,
body .deal-card .deal-card-pill:hover {
  padding: 0;
  border-radius: 0;
  background: none;
  color: rgba(255, 255, 255, 0.86);
  font-size: 5.2cqw;
  font-weight: 700;
  letter-spacing: -0.02em;
  text-transform: capitalize;
}
body .deal-card .deal-card-pill:hover { color: #fff; }

/* Deals: the results grid lines up with the menu and headline on wide screens */
@media (min-width: 1101px) {
  body.page-deals .page-block:has(.deals-grid) > .block-inner {
    width: auto;
    max-width: none;
    margin-left: 0;
    margin-right: 0;
    padding-left: var(--menu-left, 188px);
    padding-right: var(--menu-left, 188px);
  }
}

/* Home opening, desktop: the copy sits in the middle of the space above the stats, the globe is
   large and half off the right edge of the screen, and the stats sit higher */
@media (min-width: 1101px) {
  body.home .hero .hero-inner {
    align-self: center;
    padding-top: clamp(96px, 12vh, 150px);
    transform: none;
  }
  body.home .hero .hero-visual {
    position: absolute;
    top: calc(50% + clamp(110px, 13vh, 170px));
    right: calc((100% - 100vw) / 2);
    width: clamp(520px, 42vw, 880px);
    transform: translate(-16%, -50%);
    z-index: 0;
  }
  body.home .hero .hero-globe { width: 100%; max-width: none; }
  body.home .hero .hero-copy-col { position: relative; z-index: 1; }
  body.home .hero .hero-stats { margin-bottom: clamp(56px, 9vh, 110px); }
}

/* the page logo above the eyebrow replaces the home opening's own logo at every size */
body.home.has-hero-logo .hero-mobile-logo { display: none !important; }

/* Home "Global Route Network": View locations is white at 90% opacity with a dark grey outline, navy type in sentence case */
body.home .movement-copy .button,
body.home .movement-copy .button:visited {
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid #4a4f55;
  color: var(--navy);
  text-transform: none;
  letter-spacing: -0.01em;
  font-size: 0.95rem;
  box-shadow: 0 2px 4px rgba(0, 30, 60, 0.06), 0 14px 30px -12px rgba(0, 30, 60, 0.28);
  transition: background-color .25s ease, color .25s ease, box-shadow .3s ease, transform .3s ease;
}
body.home .movement-copy .button:hover,
body.home .movement-copy .button:focus-visible {
  background: #fff;
  border-color: #2b2f33;
  color: var(--azure);
  box-shadow: 0 3px 6px rgba(0, 30, 60, 0.08), 0 20px 38px -14px rgba(0, 30, 60, 0.34);
  transform: translateY(-1px);
}

/* footer: Explore runs in two columns, reading down each one */
.site-footer--v2 .footer-group--explore ul {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  grid-template-rows: repeat(4, auto);
  grid-auto-flow: column;
  column-gap: clamp(32px, 3.5vw, 64px);
}
/* phones and iPads: Explore takes the full row so its two columns have room */
@media (max-width: 900px) {
  .site-footer--v2 .footer-group--explore { grid-column: 1 / -1; }
}

/* footer: more air between the logo and the line beside it */
.site-footer--v2 .footer-brand .footer-logo { margin-bottom: clamp(36px, 3.5vw, 56px); display: inline-block; }

/* About "Your adviser stays in the room": on wide screens the copy starts on the menu's left edge like every other section */
@media (min-width: 1101px) {
  body .about-manifesto > .block-inner {
    width: auto;
    margin: 0;
    padding-left: var(--menu-left, 188px);
    padding-right: var(--menu-left, 188px);
  }
}

/* About manifesto, desktop: the headline holds the left, its supporting paragraph answers it on the right
   (sitting on the headline's last line), and the three points run full width beneath */
@media (min-width: 1101px) {
  body .about-manifesto > .block-inner {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
    column-gap: clamp(48px, 6vw, 120px);
    align-items: end;
  }
  body .about-manifesto .eyebrow { grid-column: 1 / -1; justify-self: start; }
  body .about-manifesto .manifesto-lead { grid-column: 1; max-width: 16ch; }
  body .about-manifesto .manifesto-sub { grid-column: 2; max-width: 44ch; margin: 0 0 0.6em; font-size: 1.12rem; }
  body .about-manifesto .manifesto-points { grid-column: 1 / -1; }
  body .about-manifesto .manifesto-cta { grid-column: 1 / -1; }
}

/* Network: the member firm cards take the deep blue of the firm picker, logo on its white panel */
.roster-card.is-light {
  border: 1px solid rgba(238, 244, 250, 0.12);
  background: #072b4a;
  color: #fff;
  box-shadow: 0 18px 40px -22px rgba(0, 20, 40, 0.55);
}
.roster-card.is-light:hover,
.roster-card.is-light:focus-visible { border-color: var(--accent-blue); background: #0a3459; box-shadow: 0 26px 50px -22px rgba(0, 20, 40, 0.6); }
.roster-card.is-light .roster-name { color: #fff; }
.roster-card.is-light .roster-stats > span:nth-child(odd) { color: #8ea6bd; }
.roster-card.is-light .roster-stats > span:nth-child(even),
.roster-card.is-light .roster-stats .firm-offices { color: #fff; }
.roster-card.is-light .roster-stats .is-role { color: var(--accent-blue); }
.roster-card.is-light .roster-cta { border-top-color: rgba(238, 244, 250, 0.14); color: #8ea6bd; }
.roster-card.is-light:hover .roster-cta,
.roster-card.is-light:focus-visible .roster-cta { color: var(--accent-blue); }
.roster-card.is-light .roster-cta::before { background: var(--accent-blue); }
.roster-card.is-light .firm-port { border-bottom: 0; }
.roster-card.is-light .firm-offices .firm-address { color: #fff; }

/* deal page: room under the tombstone before the next section */
.single-deal .deal-body { padding-bottom: clamp(72px, 8vw, 120px); }
.single-deal .deal-confidential { color: var(--muted); font-size: 1.32rem; font-weight: 700; letter-spacing: -0.02em; }

/* deal admin actions: small white icons, each in a black circle */
.deal-admin { gap: 10px; margin-top: 22px; justify-content: center; }
.deal-admin-icon {
  display: inline-grid;
  place-items: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #111;
  color: #fff;
  cursor: pointer;
  transition: background-color .2s ease, transform .2s ease;
}
.deal-admin-icon:hover,
.deal-admin-icon:focus-visible { background: var(--azure); color: #fff; transform: translateY(-1px); }
.deal-admin-icon.is-danger:hover,
.deal-admin-icon.is-danger:focus-visible { background: #c0392b; }
.deal-admin-icon svg { display: block; }

/* Home "Global Route Network": View locations outline and text in light blue */
body.home .movement-copy .button,
body.home .movement-copy .button:visited { border-color: var(--accent-blue); color: var(--accent-blue); }
body.home .movement-copy .button:hover,
body.home .movement-copy .button:focus-visible { border-color: var(--accent-blue); background: var(--accent-blue); color: #fff; }
/* a touch smaller and rounder */
body.home .movement-copy .button {
  width: auto;
  min-width: 0;
  min-height: 38px;
  height: 38px;
  padding: 0 28px;
  border-radius: 12px;
  font-size: 0.9rem;
}

/* Home "Independent M&A firms": the same button as View locations */
body.home .mna-lab-copy .button,
body.home .mna-lab-copy .button:visited {
  width: auto;
  min-width: 0;
  min-height: 38px;
  height: 38px;
  padding: 0 28px;
  border: 1px solid var(--accent-blue);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.9);
  color: var(--accent-blue);
  font-size: 0.9rem;
  letter-spacing: -0.01em;
  text-transform: none;
  box-shadow: 0 2px 4px rgba(0, 30, 60, 0.06), 0 14px 30px -12px rgba(0, 30, 60, 0.28);
  transition: background-color .25s ease, color .25s ease, box-shadow .3s ease, transform .3s ease;
}
body.home .mna-lab-copy .button:hover,
body.home .mna-lab-copy .button:focus-visible {
  border-color: var(--accent-blue);
  background: var(--accent-blue);
  color: #fff;
  transform: translateY(-1px);
}

/* Home "Independent M&A firms": more room above Explore membership; the button mostly see-through */
body.home .mna-lab-copy .button { margin-top: 20px; background: rgba(255, 255, 255, 0.08); color: var(--accent-blue); }

/* "Find an adviser" band (every page): Contact us gets the same light-blue outline button, mostly see-through */
.adviser-section .adviser-inner .button,
.adviser-section .adviser-inner .button:visited {
  width: auto;
  min-width: 0;
  min-height: 38px;
  height: 38px;
  padding: 0 28px;
  border: 1px solid var(--accent-blue);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--accent-blue);
  font-size: 0.9rem;
  letter-spacing: -0.01em;
  text-transform: none;
  box-shadow: 0 2px 4px rgba(0, 30, 60, 0.06), 0 14px 30px -12px rgba(0, 30, 60, 0.28);
  transition: background-color .25s ease, color .25s ease, transform .3s ease;
}
.adviser-section .adviser-inner .button:hover,
.adviser-section .adviser-inner .button:focus-visible { border-color: var(--accent-blue); background: var(--accent-blue); color: #fff; transform: translateY(-1px); }

/* Sectors opening lede: the same size and style as the Network opening's */
body.page-sectors .sectors-hero .about-lede { font-size: 1.32em; max-width: 46ch; color: rgba(255, 255, 255, 0.8); line-height: 1.24; }

/* Sectors: the sector menu line sits 64px lower in each sector */
body.page-sectors .sector-block .sector-sentence { margin-top: 64px; }

/* Home opening: Find an adviser and Explore CapFive styled like View locations */
body.home .hero-actions .button,
body.home .hero-actions .button:visited {
  width: auto;
  min-width: 0;
  min-height: 38px;
  height: 38px;
  padding: 0 28px;
  border: 1px solid var(--accent-blue);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.9);
  color: var(--accent-blue);
  font-size: 0.9rem;
  letter-spacing: -0.01em;
  text-transform: none;
  box-shadow: 0 2px 4px rgba(0, 30, 60, 0.06), 0 14px 30px -12px rgba(0, 30, 60, 0.28);
  transition: background-color .25s ease, color .25s ease, box-shadow .3s ease, transform .3s ease;
}
body.home .hero-actions .button:hover,
body.home .hero-actions .button:focus-visible {
  border-color: var(--accent-blue);
  background: var(--accent-blue);
  color: #fff;
  transform: translateY(-1px);
}

/* Home Recent deals: no fade at the carousel's sides */
body.home .deal-rail::before,
body.home .deal-rail::after { content: none; display: none; background: none; }

/* Home "Why CapFive": eyebrow and headline sit over the photo, white on a navy wash from the bottom left;
   the bold part stays in the line, in light blue */
body.home .why-feature-media { position: relative; }
body.home .why-feature-media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(20deg, rgba(0, 20, 40, 0.92) 0%, rgba(0, 26, 50, 0.72) 38%, rgba(0, 36, 68, 0.2) 70%, rgba(0, 36, 68, 0) 100%);
  pointer-events: none;
}
body.home .why-feature-headline {
  position: absolute;
  left: clamp(28px, 6vw, 96px);
  right: clamp(28px, 6vw, 96px);
  bottom: clamp(40px, 8vh, 96px);
  z-index: 2;
}
body.home .why-feature-headline .eyebrow { color: var(--green); margin: 0 0 18px; }
body.home .why-feature-headline h2 {
  margin: 0;
  max-width: 20ch;
  color: #fff;
  font-size: clamp(1.9rem, 3vw, 3rem);
  line-height: 1.05;
}
body.home .why-feature-headline h2 .heading-accent,
body.home .why-feature-headline h2 b,
body.home .why-feature-headline h2 strong { display: inline; color: var(--accent-blue); }
/* the copy column now opens with the lede */
body.home .why-feature-body { align-content: center; }
/* the headline's first line keeps the white (another rule colours a heading's first line) */
body.home .why-feature-headline h2::first-line { color: #fff; }
/* stacked layouts: the photo grows to hold the headline instead of cutting it off */
@media (max-width: 900px), (max-width: 960px) and (max-height: 1099px) {
  body.home .why-feature-media { min-height: 0; height: auto; overflow: hidden; }
  body.home .why-feature-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
  body.home .why-feature-headline {
    position: relative;
    left: auto; right: auto; bottom: auto;
    padding: clamp(140px, 30vw, 260px) clamp(24px, 7vw, 60px) clamp(36px, 7vw, 56px);
  }
  body.home .why-feature-headline h2 { font-size: clamp(1.7rem, 6.4vw, 2.6rem); }
}
/* desktop: the Why CapFive headline sits in the middle of the photo */
@media (min-width: 901px) and (min-height: 1100px), (min-width: 961px) {
  body.home .why-feature-headline { top: 50%; bottom: auto; transform: translateY(-50%); }
}

/* Home Services fills the screen on desktop */
@media (min-width: 1101px) {
  body.home .services-section .c-halfimg { height: 100vh; height: 100svh; min-height: 100vh; }
}

/* "What we bring to every mandate": no numbers, each point's title and text on one column */
body .precision-section .precision-grid span.precision-index { display: none; }
body .precision-section .precision-grid article { grid-template-columns: minmax(0, 1fr); }
body .precision-section .precision-grid article > * { grid-column: 1; }

/* Home opening: Find an adviser and Explore CapFive in azure */
body.home .hero-actions .button,
body.home .hero-actions .button:visited { border-color: var(--azure); color: var(--azure); }
body.home .hero-actions .button:hover,
body.home .hero-actions .button:focus-visible { border-color: var(--azure); background: var(--azure); color: #fff; }

/* Home opening, desktop: the globe holds the left column, the copy the right */
@media (min-width: 1101px) {
  body.home .hero .hero-inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  body.home .hero .hero-visual {
    position: relative;
    top: auto;
    right: auto;
    width: auto;
    transform: none;
    grid-column: 1;
    grid-row: 1;
    justify-content: center;
  }
  body.home .hero .hero-globe { width: min(100%, 600px); }
  body.home .hero .hero-copy-col { grid-column: 2; grid-row: 1; }
}
/* the globe centres in the left half of the screen and drops level with the text block (hero-logo.js sets the drop) */
@media (min-width: 1101px) {
  body.home .hero .hero-visual { transform: translate(var(--globe-dx, 0px), var(--globe-dy, 0px)); }
}

/* Home Why CapFive: the wash over the photo is black */
body.home .why-feature-media::after {
  background: linear-gradient(20deg, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.68) 38%, rgba(0, 0, 0, 0.18) 70%, rgba(0, 0, 0, 0) 100%);
}
/* stronger: a black veil over the whole photo, deepest where the headline sits */
body.home .why-feature-media::after {
  background:
    linear-gradient(20deg, rgba(0, 0, 0, 0.92) 0%, rgba(0, 0, 0, 0.7) 40%, rgba(0, 0, 0, 0.35) 75%, rgba(0, 0, 0, 0.2) 100%),
    rgba(0, 0, 0, 0.25);
}
/* darker still */
body.home .why-feature-media::after {
  background:
    linear-gradient(20deg, rgba(0, 0, 0, 0.95) 0%, rgba(0, 0, 0, 0.82) 40%, rgba(0, 0, 0, 0.55) 75%, rgba(0, 0, 0, 0.4) 100%),
    rgba(0, 0, 0, 0.3);
}

/* Home opening, desktop: the copy column starts nearer the middle of the screen */
@media (min-width: 1101px) {
  body.home .hero .hero-inner { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); }
}

/* Home Why CapFive: the paragraph sits further right in its column */
@media (min-width: 1101px) {
  body.home .why-feature-body { padding-left: clamp(56px, 6vw, 110px); }
}
/* the bold words in the headline over the photo are green */
body.home .why-feature-headline h2 .heading-accent,
body.home .why-feature-headline h2 b,
body.home .why-feature-headline h2 strong { color: var(--green); }
/* the headline block sits centred across the photo */
body.home .why-feature-headline {
  left: 0;
  right: 0;
  width: fit-content;
  max-width: calc(100% - 2 * clamp(28px, 6vw, 96px));
  margin-inline: auto;
}

/* Home Why CapFive paragraph */
body.home .why-feature .why-feature-lede { max-width: 420px; color: #000; }

/* Home Why CapFive: the photo stands alone; the eyebrow, headline and both paragraphs sit in the right column */
body.home .why-feature-media::after { content: none; }
body.home .why-feature-body .eyebrow { margin: 0 0 18px; }
body.home .why-feature-body h2 {
  margin: 0 0 28px;
  max-width: 20ch;
  color: var(--navy);
  font-size: clamp(1.9rem, 3vw, 3rem);
  line-height: 1.05;
}
body.home .why-feature-body h2 .heading-accent { display: inline; color: var(--green); }
body.home .why-feature .why-feature-lede + .why-feature-lede { margin-top: 1.1em; }
/* Why CapFive headline: black, the bold part blue */
body.home .why-feature-body h2 { color: #000; }
body.home .why-feature-body h2::first-line { color: inherit; }
body.home .why-feature-body h2 .heading-accent { color: var(--accent-blue); }
