.services-hero {
  min-height: clamp(520px, 50vw, 680px);
  display: grid;
  place-items: center;
  padding: clamp(78px, 9vw, 126px) 20px;
  color: var(--white);
  text-align: center;
  background-color: #0d3475;
  background-image: url("../images/professional-services-v4/services-heading.png");
  background-repeat: no-repeat;
  background-size: calc(100% + 80px) auto;
  background-position: center;
}

.services-hero-content {
  width: min(960px, 100%);
}

.services-title {
  margin: 0;
  color: var(--white);
  font-family: "Montserrat", Arial, sans-serif;
  font-size: clamp(42px, 5.3vw, 72px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: uppercase;
}

.services-subtitle {
  margin: 54px 0 0;
  color: rgba(255, 255, 255, 0.95);
  font-family: "Questrial", Arial, sans-serif;
  font-size: clamp(30px, 4vw, 52px);
  line-height: 1.06;
  letter-spacing: 0;
  text-transform: uppercase;
}

.services-overview {
  padding: clamp(80px, 8vw, 112px) 0 clamp(110px, 12vw, 168px);
  background: var(--paper);
}

.services-wrap {
  width: min(1080px, calc(100% - 36px));
  margin: 0 auto;
}

.intro-copy {
  width: min(960px, 100%);
  margin: 0 auto clamp(78px, 9vw, 124px);
  color: var(--ink);
  font-size: clamp(17px, 1.5vw, 22px);
  line-height: 1.45;
  text-align: center;
}

.service-journey {
  --marker-rotation: 0deg;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px minmax(0, 1fr);
  grid-template-rows: repeat(6, minmax(130px, auto));
  row-gap: clamp(52px, 8vw, 90px);
  align-items: center;
  min-height: 980px;
}

.service-journey::before {
  position: absolute;
  top: 36px;
  bottom: 36px;
  left: 50%;
  width: 1px;
  background: linear-gradient(180deg, rgba(17, 87, 160, 0), rgba(17, 87, 160, 0.24), rgba(17, 87, 160, 0));
  content: "";
  transform: translateX(-50%);
}

.journey-marker {
  position: absolute;
  left: 50%;
  z-index: 2;
  width: 48px;
  height: 48px;
  transform: translate(-50%, -50%) rotate(var(--marker-rotation));
  transition: top 500ms cubic-bezier(0.22, 1, 0.36, 1), transform 500ms ease;
}

.journey-marker img {
  width: 100%;
  height: 100%;
  filter: drop-shadow(0 12px 18px rgba(17, 87, 160, 0.18));
}

.service-step {
  width: min(390px, 100%);
  opacity: 0;
  transform: translateY(34px);
  transition: opacity 380ms ease, transform 420ms ease;
}

.service-step.has-entered,
.service-step.is-active {
  opacity: 1;
  transform: translateY(0);
}

.service-step:nth-of-type(1) {
  grid-row: 1;
}

.service-step:nth-of-type(2) {
  grid-row: 2;
}

.service-step:nth-of-type(3) {
  grid-row: 3;
}

.service-step:nth-of-type(4) {
  grid-row: 4;
}

.service-step:nth-of-type(5) {
  grid-row: 5;
}

.service-step:nth-of-type(6) {
  grid-row: 6;
}

.service-step-left {
  grid-column: 1;
  justify-self: end;
  text-align: right;
}

.service-step-right {
  grid-column: 3;
  justify-self: start;
  text-align: left;
}

.service-step h3 {
  margin: 0 0 10px;
  color: #111820;
  font-size: clamp(17px, 1.45vw, 22px);
  font-weight: 700;
  line-height: 1.25;
}

.service-step p {
  margin: 0;
  color: var(--ink);
  font-size: clamp(15px, 1.3vw, 19px);
  line-height: 1.42;
}

@media (prefers-reduced-motion: reduce) {
  .service-step,
  .journey-marker {
    transition: none;
  }

  .service-step {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 900px) {
  .services-hero {
    background-size: cover;
  }

  .service-journey {
    grid-template-columns: 58px minmax(0, 1fr);
    grid-template-rows: none;
    row-gap: 42px;
    min-height: 0;
  }

  .service-journey::before {
    left: 24px;
  }

  .journey-marker {
    left: 24px;
  }

  .service-step,
  .service-step-left,
  .service-step-right {
    grid-column: 2;
    justify-self: start;
    text-align: left;
    width: 100%;
  }
}

@media (max-width: 560px) {
  .services-hero {
    min-height: 470px;
    padding-inline: 16px;
  }

  .services-subtitle br {
    display: none;
  }

  .services-overview {
    padding-top: 64px;
  }

  .intro-copy {
    text-align: left;
  }
}

/* Match homepage V4 typography scale. */
.services-title {
  font-size: var(--hero-heading-size);
}

.services-subtitle {
  font-size: var(--section-heading-size);
}

.service-step h3 {
  font-size: var(--card-heading-size);
}

.intro-copy,
.service-step p {
  font-size: var(--body-copy-size);
}

/* Fixed V4 site-wide type scale. */
main h1 {
  font-size: 43px !important;
}

main h2 {
  font-size: 40px !important;
}

main p:not(.product-mark) {
  font-size: 19.4px !important;
}

.services-title {
  font-size: 58px !important;
}

.services-subtitle {
  font-size: 36px !important;
}

@media (max-width: 640px) {
  .services-title {
    font-size: clamp(43px, 12vw, 58px) !important;
  }

  .services-subtitle {
    font-size: clamp(22px, 6vw, 36px) !important;
  }
}
