/* ==========================================================================
   Components — §4 of the Design System
   ========================================================================== */

/* ---------------------------------------------------------------------- */
/* 4.1 Navigation                                                         */
/* ---------------------------------------------------------------------- */
.nav {
  position: sticky;
  top: 0;
  z-index: 100;
  height: 96px;
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-line);
}
@media (max-width: 767px) {
  .nav { height: 64px; }
}

.nav__inner {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.nav__logo { height: 30px; width: auto; }
@media (max-width: 767px) {
  .nav__logo { height: 22px; }
}

.nav__links {
  display: flex;
  align-items: center;
  gap: 48px;
}
@media (max-width: 1023px) {
  .nav__links { display: none; }
}

.nav__link {
  position: relative;
  padding-bottom: 8px;
  color: var(--color-ink);
}

.nav__link-underline {
  position: absolute;
  left: 0;
  bottom: -4px;
  display: flex;
  align-items: center;
  gap: 0;
  width: 100%;
  height: 3px;
  pointer-events: none;
}
.nav__link-underline circle {
  transition: opacity 150ms var(--ease-draw);
}
.nav__link-underline rect {
  transform-origin: left center;
  transition: transform 150ms var(--ease-draw);
}

.nav__link:not([aria-current="page"]) .nav__link-underline {
  opacity: 0;
}
.nav__link[aria-current="page"] {
  color: var(--color-purple);
}
.nav__link[aria-current="page"] .nav__link-underline {
  opacity: 1;
}

.nav__cta { display: flex; align-items: center; gap: var(--space-4); }
@media (max-width: 1023px) {
  .nav__cta .btn { display: none; }
}

/* Mobile hamburger */
.nav__hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 20px;
  height: 20px;
  background: none;
  border: none;
  padding: 0;
}
.nav__hamburger span {
  display: block;
  width: 100%;
  height: 1.4px;
  background: var(--color-ink);
  transition: transform 200ms var(--ease-state), opacity 200ms var(--ease-state);
}
@media (max-width: 1023px) {
  .nav__hamburger { display: flex; }
}
.nav__hamburger[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(6.4px) rotate(45deg);
}
.nav__hamburger[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}
.nav__hamburger[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-6.4px) rotate(-45deg);
}

/* Mobile menu panel — minimal, same tokens as desktop nav, no new visual language */
.nav__mobile-panel {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-line);
  padding: var(--space-4) var(--margin-mobile) var(--space-6);
}
.nav__mobile-panel[data-open="true"] { display: block; }
.nav__mobile-panel .nav__link {
  display: block;
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--color-line);
}
.nav__mobile-panel .nav__link:last-of-type { border-bottom: none; }
.nav__mobile-panel .btn { margin-top: var(--space-4); width: 100%; text-align: center; }

/* ---------------------------------------------------------------------- */
/* 4.2 Buttons                                                             */
/* ---------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 2px;
  border: none;
  transition: background-color 150ms var(--ease-state), color 150ms var(--ease-state), border-color 150ms var(--ease-state);
  white-space: nowrap;
}

.btn--large { padding: 18px 36px; }
.btn--compact { padding: 14px 28px; }

/* Slightly wider primary Contact Us buttons, per refinement pass */
.btn--large.btn--wide { padding-left: 50px; padding-right: 50px; }
.btn--compact.btn--wide { padding-left: 34px; padding-right: 34px; }

.btn--primary {
  background: var(--color-ink);
  color: var(--color-white);
}
.btn--primary:hover { background: var(--color-purple); }

.btn--ghost {
  background: transparent;
  color: var(--color-ink);
  border: 1.4px solid var(--color-ink);
}
.btn--ghost:hover {
  color: var(--color-purple);
  border-color: var(--color-purple);
}

/* ---------------------------------------------------------------------- */
/* 4.5 Chip / Tag                                                          */
/* ---------------------------------------------------------------------- */
.chip {
  display: inline-flex;
  align-items: center;
  padding: 7px 14px;
  border-radius: 20px;
}
.chip--tint { background: var(--color-purple-tint); color: var(--color-purple); }
.chip--neutral { background: var(--color-bg-alt); color: var(--color-ink-soft); }
.chip--outline { border: 1px solid var(--color-line); color: var(--color-ink-soft); background: transparent; }

/* ---------------------------------------------------------------------- */
/* 3. Node system primitives                                              */
/* ---------------------------------------------------------------------- */
.pathway-svg { display: block; width: 100%; height: auto; }
.pathway-svg .pw-line-rest {
  stroke: var(--color-ink);
  stroke-opacity: 0.38;
  stroke-width: 1.1px;
  fill: none;
}
.pathway-svg .pw-line-active {
  stroke: var(--color-purple);
  fill: none;
  stroke-linecap: butt;
}
.pathway-svg .pw-node-rest {
  fill: none;
  stroke: var(--color-ink);
  stroke-width: 1.25px;
}
.pathway-svg .pw-node-active {
  fill: var(--color-purple);
  stroke: none;
}
.pathway-svg .pw-node-satellite {
  fill: none;
  stroke: var(--color-ink);
  stroke-width: 1.1px;
}
.pathway-svg .pw-branch-line {
  stroke: var(--color-ink);
  stroke-opacity: 0.35;
  stroke-width: 1px;
  fill: none;
}

/* Approach pathway scroll-fill (§7.3): each stage's node, incoming line
   segment, and satellite branches reveal together, staggered left→right. */
[data-approach-pathway] .pw-fill-1,
[data-approach-pathway] .pw-fill-2,
[data-approach-pathway] .pw-fill-3,
[data-approach-pathway] .pw-node-1,
[data-approach-pathway] .pw-node-2,
[data-approach-pathway] .pw-node-3,
[data-approach-pathway] .pw-branch-1,
[data-approach-pathway] .pw-branch-2,
[data-approach-pathway] .pw-branch-3,
[data-approach-pathway] .pw-sat-1,
[data-approach-pathway] .pw-sat-2,
[data-approach-pathway] .pw-sat-3 {
  opacity: 0;
  transition: opacity 380ms var(--ease-draw);
}
[data-approach-pathway][data-revealed="true"] .pw-fill-1,
[data-approach-pathway][data-revealed="true"] .pw-node-1,
[data-approach-pathway][data-revealed="true"] .pw-branch-1,
[data-approach-pathway][data-revealed="true"] .pw-sat-1 {
  opacity: 1;
  transition-delay: 0ms;
}
[data-approach-pathway][data-revealed="true"] .pw-fill-2,
[data-approach-pathway][data-revealed="true"] .pw-node-2,
[data-approach-pathway][data-revealed="true"] .pw-branch-2,
[data-approach-pathway][data-revealed="true"] .pw-sat-2 {
  opacity: 1;
  transition-delay: 180ms;
}
[data-approach-pathway][data-revealed="true"] .pw-fill-3,
[data-approach-pathway][data-revealed="true"] .pw-node-3,
[data-approach-pathway][data-revealed="true"] .pw-branch-3,
[data-approach-pathway][data-revealed="true"] .pw-sat-3 {
  opacity: 1;
  transition-delay: 360ms;
}

.cluster-icon circle.node-rest {
  fill: none; stroke: var(--color-ink); stroke-width: 1.2px;
}
.cluster-icon circle.node-active { fill: var(--color-purple); }
.cluster-icon line {
  stroke: var(--color-ink); stroke-width: 1px; stroke-opacity: 0.4;
}

.ring-accent {
  position: absolute;
  pointer-events: none;
}
.ring-accent svg polygon {
  fill: none;
  stroke: var(--color-ink);
  stroke-opacity: 0.07;
  stroke-width: 1px;
}
.ring-accent--hero {
  top: -60px;
  right: -80px;
  width: 300px;
  height: 300px;
}
@media (max-width: 1023px) {
  .ring-accent--hero { width: 200px; height: 200px; top: -30px; right: -60px; }
}
@media (max-width: 767px) {
  .ring-accent--hero { width: 140px; height: 140px; top: -10px; right: -40px; }
}

/* ---------------------------------------------------------------------- */
/* Credibility strip — typography-only, no boxes/icons/badges              */
/* ---------------------------------------------------------------------- */
.credibility-strip {
  padding: 40px 0;
  border-top: 1px solid var(--color-line);
  border-bottom: 1px solid var(--color-line);
}
.credibility-strip__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-5) var(--space-6);
}
.credibility-strip__item {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding-left: var(--space-6);
  position: relative;
}
.credibility-strip__item:first-child { padding-left: 0; }
.credibility-strip__item:not(:first-child)::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 1px;
  height: 22px;
  background: var(--color-line-strong);
}
.credibility-strip__figure {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 19px;
  color: var(--color-ink);
}
.credibility-strip__label {
  font-family: var(--font-body);
  font-size: var(--type-body-m-size);
  color: var(--color-ink-soft);
}
.credibility-strip__item--plain .credibility-strip__label {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 17px;
  color: var(--color-ink);
}

@media (max-width: 1023px) {
  .credibility-strip__inner { justify-content: flex-start; }
}
@media (max-width: 767px) {
  .credibility-strip { padding: 32px 0; }
  .credibility-strip__inner {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-4);
  }
  .credibility-strip__item { padding-left: 0; }
  .credibility-strip__item:not(:first-child)::before { display: none; }
}

/* ---------------------------------------------------------------------- */
/* Hero (§5.2)                                                             */
/* ---------------------------------------------------------------------- */
.hero {
  padding: 130px 0 170px;
  overflow: hidden;
}
@media (max-width: 767px) {
  .hero { padding: 56px 0 64px; }
}

.hero__inner {
  display: grid;
  grid-template-columns: minmax(640px, 1.15fr) minmax(160px, 0.55fr);
  gap: var(--space-6);
  align-items: start;
  position: relative;
}
@media (max-width: 1023px) {
  .hero__inner { grid-template-columns: 1fr; }
  .hero__pathway-col { display: none; }
}

.hero__eyebrow { margin-bottom: var(--space-4); display: block; color: var(--color-purple); }
.hero__heading { color: var(--color-ink); max-width: 14ch; }
.hero__sub { margin-top: var(--space-4); max-width: 46ch; color: var(--color-ink-soft); }

.hero__actions {
  margin-top: var(--space-5);
  display: flex;
  align-items: center;
  gap: var(--space-4);
  flex-wrap: wrap;
}
.hero__tagline { color: var(--color-purple-light); }

.hero__pathway-col { position: relative; padding-top: var(--space-4); }

/* Vertical pathway (hero) — angular single line, one active node, §3.1/§5.2/§7.3 */
.hero__pathway { position: relative; }
.hero__pathway-item {
  position: relative;
  padding-left: var(--space-5);
  padding-bottom: 56px;
  border-left: 1.1px solid var(--color-line-strong);
  opacity: 0;
  transition: opacity 260ms var(--ease-draw);
}
.hero__pathway-item:last-child { padding-bottom: 0; border-left-color: transparent; }
.hero__pathway-item::before {
  content: "";
  position: absolute;
  left: -5px;
  top: 2px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--color-bg);
  border: 1.25px solid var(--color-ink);
}
.hero__pathway-item--active::before {
  width: 12px;
  height: 12px;
  left: -6.5px;
  background: var(--color-purple);
  border: none;
}
.hero__pathway-item .type-label { color: var(--color-ink-faint); }
.hero__pathway-item--active .type-label { color: var(--color-purple); }

/* Reveal sequence, §7.3: 0ms Proof, 260ms Promise + line, 520ms Translation fills */
.hero__pathway[data-state="start"] .hero__pathway-item:nth-child(1) { opacity: 1; }
.hero__pathway[data-state="mid"] .hero__pathway-item:nth-child(1),
.hero__pathway[data-state="mid"] .hero__pathway-item:nth-child(2) { opacity: 1; }
.hero__pathway[data-state="end"] .hero__pathway-item { opacity: 1; }

/* ---------------------------------------------------------------------- */
/* Section rhythm — standard vs. closing sections (§5.2 desktop/mobile pairs)*/
/* ---------------------------------------------------------------------- */
.section-pad { padding: 120px 0; }
.section-pad-close { padding: 150px 0; }
.section-pad-bottom { padding-bottom: 120px; }
@media (max-width: 767px) {
  .section-pad { padding: 64px 0; }
  .section-pad-close { padding: 76px 0; }
  .section-pad-bottom { padding-bottom: 64px; }
}

/* ---------------------------------------------------------------------- */
/* Why Private Equity Engage Us — section rhythm                          */
/* ---------------------------------------------------------------------- */
.section--why-pe { padding: 144px 0; }
@media (max-width: 767px) {
  .section--why-pe { padding: 72px 0; }
}

/* ---------------------------------------------------------------------- */
/* 4.6 Capability Card ("Why Private Equity Engage Us")                   */
/* ---------------------------------------------------------------------- */
.capability-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-6);
  margin-top: var(--space-7);
}
@media (max-width: 1023px) {
  .capability-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .capability-grid { grid-template-columns: 1fr; gap: 0; margin-top: var(--space-6); }
}

.capability-card {
  position: relative;
  padding-right: var(--space-6);
  padding-top: var(--space-2);
  padding-bottom: var(--space-2);
}
.capability-card:not(:last-child) {
  border-right: 1px solid var(--color-line);
}
@media (max-width: 1023px) {
  .capability-card:nth-child(2n) { border-right: none; }
}
@media (max-width: 767px) {
  .capability-card {
    border-right: none !important;
    border-bottom: 1px solid var(--color-line);
    padding: var(--space-5) 0;
  }
  .capability-card:last-child { border-bottom: none; }
}

.capability-card__icon { width: 44px; height: 44px; margin-bottom: var(--space-4); }
.capability-card__title { margin-top: var(--space-4); color: var(--color-ink); }
.capability-card__body { margin-top: var(--space-3); color: var(--color-ink-soft); max-width: 280px; }

/* ---------------------------------------------------------------------- */
/* 4.7 Our Approach — Ascending Pathway                                    */
/* ---------------------------------------------------------------------- */
.approach {
  margin-top: var(--space-7);
}
.approach__header { max-width: 640px; }

.approach__pathway {
  margin-top: var(--space-6);
  position: relative;
}

.approach__stage-card {
  max-width: 320px;
}
.approach__stage-card .type-label { display: block; margin-bottom: var(--space-2); color: var(--color-purple); }
.approach__stage-card .type-h3 { margin-bottom: var(--space-2); }
.approach__stage-card .type-body-m { color: var(--color-ink-soft); }

.approach__satellite-label {
  font-family: var(--font-body);
  font-size: var(--type-body-s-size);
  color: var(--color-ink-soft);
}

/* Mobile vertical variant */
.approach__mobile-list { display: none; }
@media (max-width: 1023px) {
  .approach__pathway--desktop { display: none; }
  .approach__mobile-list { display: block; margin-top: var(--space-5); }
}

.approach__mobile-item {
  position: relative;
  padding-left: var(--space-5);
  padding-bottom: var(--space-6);
  border-left: 1.5px solid var(--color-line-strong);
}
.approach__mobile-item:last-child { padding-bottom: 0; border-left-color: transparent; }
.approach__mobile-item::before {
  content: "";
  position: absolute;
  left: -6.5px;
  top: 2px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--color-purple);
}
.approach__mobile-item:nth-child(2)::before { width: 13px; height: 13px; left: -7.5px; }
.approach__mobile-item:nth-child(3)::before { width: 16px; height: 16px; left: -9px; }
.approach__mobile-item .type-label { color: var(--color-purple); display: block; margin-bottom: var(--space-2); }
.approach__mobile-item .type-h3 { margin-bottom: var(--space-2); }
.approach__mobile-item .type-body-m { color: var(--color-ink-soft); }

/* ---------------------------------------------------------------------- */
/* 4.3 Selected Engagements — Row                                          */
/* ---------------------------------------------------------------------- */
.engagements-list { margin-top: var(--space-6); }

.engagement-row {
  display: flex;
  align-items: center;
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--color-line);
  cursor: default;
}
.engagement-row:first-child { border-top: 1px solid var(--color-line); }

.engagement-row__index {
  color: var(--color-ink-faint);
  transition: color 220ms var(--ease-state);
}
.engagement-row__name {
  flex: 1 1 auto;
  min-width: 0;
  margin-right: var(--space-4);
}
.engagement-row__meta {
  display: block;
  color: var(--color-ink-faint);
  margin-bottom: var(--space-1);
}
.engagement-row__heading {
  color: var(--color-ink);
  transition: color 220ms var(--ease-state);
}

.engagement-row__figure-wrap {
  flex: 0 0 180px;
  position: relative;
  text-align: right;
}
@media (max-width: 1023px) {
  .engagement-row__figure-wrap { flex-basis: 160px; }
}

.engagement-row__figure,
.engagement-row__reveal {
  transition: opacity 220ms var(--ease-state);
}
.engagement-row__figure { color: var(--color-ink); }
.engagement-row__reveal {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 380px;
  max-width: 60vw;
  text-align: left;
  color: var(--color-ink-soft);
  opacity: 0;
  pointer-events: none;
}
.engagement-row[data-expanded="true"] .engagement-row__figure { opacity: 0; }
.engagement-row[data-expanded="true"] .engagement-row__reveal { opacity: 1; }
.engagement-row[data-expanded="true"] .engagement-row__index,
.engagement-row[data-expanded="true"] .engagement-row__heading { color: var(--color-purple); }

@media (hover: hover) {
  .engagement-row:hover .engagement-row__figure { opacity: 0; }
  .engagement-row:hover .engagement-row__reveal { opacity: 1; }
  .engagement-row:hover .engagement-row__index,
  .engagement-row:hover .engagement-row__heading { color: var(--color-purple); }
}

/* Focus-within also reveals (keyboard access, §9) */
.engagement-row:focus-within .engagement-row__figure { opacity: 0; }
.engagement-row:focus-within .engagement-row__reveal { opacity: 1; }
.engagement-row:focus-within .engagement-row__index,
.engagement-row:focus-within .engagement-row__heading { color: var(--color-purple); }

.engagement-row__button {
  flex: 0 0 36px;
  margin-right: var(--space-3);
  background: none; border: none; padding: 0; text-align: left;
  display: block;
}

/* Touch/mobile: tap-to-expand, stacked layout (§4.3 mobile, §9, §11.6) */
@media (max-width: 767px) {
  .engagement-row {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-3);
    padding: var(--space-4) 0;
  }
  .engagement-row__name { margin-right: 0; width: 100%; }
  .engagement-row__button { flex: none; margin-right: 0; }
  .engagement-row__figure-wrap {
    flex: none;
    width: 100%;
    text-align: left;
  }
  .engagement-row__reveal {
    position: static;
    transform: none;
    width: 100%;
    max-width: none;
    text-align: left;
    display: none;
  }
  .engagement-row[data-expanded="true"] .engagement-row__reveal { display: block; opacity: 1; }
  .engagement-row[data-expanded="true"] .engagement-row__figure { display: none; }
  .engagement-row__tap-hint {
    color: var(--color-ink-faint);
  }
}

/* ---------------------------------------------------------------------- */
/* Metric component                                                       */
/* ---------------------------------------------------------------------- */
.metric__number { color: var(--color-ink); }
.metric__label { display: block; margin-top: var(--space-2); color: var(--color-ink-faint); }

/* ---------------------------------------------------------------------- */
/* Contact modes / form (§4.8, adapted per approved decision — form)       */
/* ---------------------------------------------------------------------- */
.contact-panel {
  border: 1px solid var(--color-line);
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  margin-top: var(--space-6);
}
@media (max-width: 1023px) {
  .contact-panel { grid-template-columns: 1fr; }
}

.contact-panel__left {
  padding: var(--space-7) var(--space-6);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
@media (max-width: 1023px) {
  .contact-panel__left { padding: var(--space-6); }
}
@media (max-width: 767px) {
  .contact-panel__left { padding: var(--space-5) var(--margin-mobile); }
}

.contact-panel__right {
  padding: var(--space-7) var(--space-6);
  border-left: 1px solid var(--color-line);
}
@media (max-width: 1023px) {
  .contact-panel__right { border-left: none; border-top: 1px solid var(--color-line); }
}
@media (max-width: 767px) {
  .contact-panel__right { padding: var(--space-5) var(--margin-mobile); }
}

.contact-ring-icon { width: 46px; height: 46px; margin-bottom: var(--space-4); }

.contact-panel__body { color: var(--color-ink-soft); max-width: 44ch; }

.form-field { margin-bottom: var(--space-4); }
.form-field label {
  display: block;
  margin-bottom: var(--space-2);
  color: var(--color-ink-soft);
}
.form-field input,
.form-field textarea {
  width: 100%;
  border: none;
  border-bottom: 1px solid var(--color-line-strong);
  background: transparent;
  padding: var(--space-2) 0;
  font-family: var(--font-body);
  font-size: var(--type-body-m-size);
  color: var(--color-ink);
  transition: border-color 150ms var(--ease-state);
}
.form-field input:focus,
.form-field textarea:focus {
  outline: none;
  border-color: var(--color-purple);
}
.form-field textarea { resize: vertical; min-height: 96px; }

.form__submit { margin-top: var(--space-4); }

.form__note {
  margin-top: var(--space-3);
  color: var(--color-ink-faint);
}

.form__status {
  margin-top: var(--space-3);
  color: var(--color-purple);
  display: none;
}
.form__status[data-visible="true"] { display: block; }

/* ---------------------------------------------------------------------- */
/* Footer (§5.1)                                                          */
/* ---------------------------------------------------------------------- */
.footer {
  padding: 80px 0 64px;
  border-top: 1px solid var(--color-line);
}
.footer__divider {
  display: block;
  width: 100%;
  height: 12px;
  margin-bottom: 56px;
}
.footer__divider line {
  stroke: var(--color-line-strong);
  stroke-width: 1px;
}
.footer__divider circle {
  fill: var(--color-purple);
}
.footer__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.footer__logo { height: 24px; }
.footer__links { display: flex; gap: var(--space-5); }
.footer__copy { color: var(--color-ink-faint); }

@media (max-width: 767px) {
  .footer { padding: 56px 0 44px; }
  .footer__divider { margin-bottom: 40px; }
  .footer__inner {
    flex-direction: column;
    gap: var(--space-5);
    text-align: center;
  }
  .footer__links {
    flex-direction: column;
    gap: 16px;
    align-items: center;
  }
}

/* ---------------------------------------------------------------------- */
/* Page header (subpages)                                                 */
/* ---------------------------------------------------------------------- */
.page-header { padding-top: var(--space-7); padding-bottom: var(--space-7); }
.page-header__eyebrow { display: block; margin-bottom: var(--space-3); color: var(--color-purple); }
.page-header__body { margin-top: var(--space-4); max-width: 60ch; color: var(--color-ink-soft); }

/* ---------------------------------------------------------------------- */
/* Pillar cards (Our Approach subpage — editorial cards, §4.6 family)     */
/* ---------------------------------------------------------------------- */
.pillar-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-7) var(--space-6);
  margin-top: var(--space-7);
}
@media (max-width: 767px) {
  .pillar-grid { grid-template-columns: 1fr; gap: var(--space-6); margin-top: var(--space-6); }
}

.pillar-card__index { color: var(--color-ink-faint); display: block; margin-bottom: var(--space-3); }
.pillar-card__title { color: var(--color-ink); margin-bottom: var(--space-3); }
.pillar-card__tagline { color: var(--color-purple-light); display: block; margin-bottom: var(--space-4); }
.pillar-card__body { color: var(--color-ink-soft); max-width: 46ch; }

.supporting-caps {
  margin-top: var(--space-8);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-line);
}
.supporting-caps__label { display: block; margin-bottom: var(--space-4); color: var(--color-ink-faint); }
.supporting-caps__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
}

/* ====================================================================== */
/* Final implementation QA overrides — shared grid, editorial rhythm      */
/* ====================================================================== */

/* Prevent any wide decorative/absolute element from creating horizontal
   scroll that can make page content appear cropped at the left edge. */
html, body { overflow-x: clip; }

/* Subpage headers use a nested container + header block. This avoids the
   previous combined max-width/padding element and guarantees the same left
   edge as the navigation and homepage hero. */
.page-header {
  width: 100%;
  max-width: 100%;
  padding: clamp(64px, 6vw, 92px) 0 clamp(56px, 5vw, 80px);
}
.page-header .type-h2 {
  max-width: 22ch;
  overflow-wrap: break-word;
}
.page-header__body { max-width: 58ch; }

/* Stable breathing room after section links, preventing buttons from
   visually colliding with the next section at high browser zoom levels. */
.section-link-row {
  margin-top: 56px;
  padding-bottom: 24px;
}

/* Keep supporting capabilities visually inside their own section. */
.supporting-caps { margin-bottom: 40px; }

/* Engagement rows: one explicit editorial grid instead of flex-space
   distribution. Number, title and evidence now share fixed axes. */
.engagement-row {
  display: grid;
  grid-template-columns: 48px minmax(280px, 430px) minmax(280px, 1fr);
  column-gap: clamp(28px, 3vw, 52px);
  align-items: center;
  min-height: 142px;
  padding: 30px 0;
}
.engagement-row__button {
  width: 48px;
  margin: 0;
  align-self: center;
}
.engagement-row__name {
  width: auto;
  margin: 0;
  max-width: 430px;
}
.engagement-row__meta { margin-bottom: 6px; }
.engagement-row__heading { max-width: 22ch; }
.engagement-row__figure-wrap {
  width: 100%;
  min-width: 0;
  max-width: 460px;
  justify-self: end;
  flex: none;
}
.engagement-row__reveal {
  width: min(440px, 100%);
  max-width: 100%;
  text-align: left;
}

/* The standalone list is intentionally a little tighter than the homepage. */
.engagements-page .engagement-row {
  min-height: 136px;
  padding: 28px 0;
}
.engagements-page .engagements-list { margin-top: 0; }

/* Node junctions: a background-coloured halo masks connector strokes under
   active circles, so every line terminates optically at the circumference. */
.pathway-svg .pw-node-active {
  fill: var(--color-purple);
  stroke: var(--color-bg);
  stroke-width: 5px;
  paint-order: stroke fill;
}
.section--bg-alt .pathway-svg .pw-node-active {
  stroke: var(--color-bg-alt);
}

/* Ensure the pathway never leaks beyond its container. */
.approach__pathway { overflow: hidden; }
.pathway-svg { overflow: visible; }

@media (max-width: 1199px) and (min-width: 768px) {
  .engagement-row {
    grid-template-columns: 42px minmax(230px, 0.9fr) minmax(260px, 1.1fr);
    column-gap: 28px;
  }
  .engagement-row__button { width: 42px; }
  .engagement-row__heading { max-width: 18ch; }
}

@media (max-width: 767px) {
  .page-header {
    padding: 52px 0 48px;
  }
  .page-header .type-h2 { max-width: 100%; }
  .section-link-row {
    margin-top: 40px;
    padding-bottom: 16px;
  }
  .engagement-row {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr);
    column-gap: 16px;
    row-gap: 12px;
    min-height: 0;
    padding: 28px 0;
    align-items: start;
  }
  .engagement-row__button {
    grid-column: 1;
    grid-row: 1 / span 2;
    width: 32px;
  }
  .engagement-row__name {
    grid-column: 2;
    grid-row: 1;
    width: 100%;
  }
  .engagement-row__figure-wrap {
    grid-column: 2;
    grid-row: 2;
    width: 100%;
    justify-self: stretch;
    text-align: left;
  }
  .engagement-row__heading { max-width: 100%; }
  .engagement-row__reveal { width: 100%; }
  .supporting-caps { margin-bottom: 16px; }
}

/* Additional visual QA fixes from live-site review */
@media (max-width: 1199px) {
  .approach__pathway--desktop { display: none; }
  .approach__mobile-list { display: block; margin-top: var(--space-5); }
}

/* Cleaner cluster junctions on the alternate background. */
.cluster-icon circle.node-active,
.cluster-icon circle.node-rest {
  stroke: var(--color-bg-alt);
  stroke-width: 3px;
  paint-order: stroke fill;
}
.cluster-icon circle.node-rest {
  fill: var(--color-bg-alt);
  stroke: var(--color-ink);
  stroke-width: 1.2px;
}
.cluster-icon circle.node-active {
  fill: var(--color-purple);
}

/* Slightly tighter subpage pacing; removes large unproductive gaps. */
.approach-page .approach__pathway { margin-top: 32px; }
.engagements-page { padding-top: 0; }

/* Closing sections remain generous without producing empty-screen gaps. */
.section-pad-close { padding-top: 112px; padding-bottom: 112px; }
@media (max-width: 767px) {
  .section-pad-close { padding-top: 68px; padding-bottom: 68px; }
}
