.hapo-growth-ecosystem {
  --hapo-growth-green: #00c968;
  --hapo-growth-ink: #09090b;
  --hapo-growth-muted: #747474;
  width: 100%;
  padding: 124px 32px;
  background: #fffef6;
  color: var(--hapo-growth-ink);
  font-family: "Manrope", sans-serif;
}

.hapo-growth-ecosystem--width-full {
  position: relative;
  left: 50%;
  width: 100vw;
  margin-left: -50vw;
}

.hapo-growth-ecosystem__header {
  margin: 0 auto 60px;
  text-align: center;
}

.hapo-growth-ecosystem__eyebrow {
  margin: 0 0 10px;
  color: var(--hapo-growth-green);
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -1px;
  line-height: 1.25;
  text-transform: uppercase;
}

.hapo-growth-ecosystem__header h2,
.hapo-growth-ecosystem__header h3 {
  margin: 0;
  font-size: 40px;
  font-weight: 800;
  letter-spacing: -1.3px;
  line-height: 1.2;
  text-transform: uppercase;
}

.hapo-growth-ecosystem__title-line {
  display: block;
  width: 150px;
  height: 4px;
  margin: 27px auto 0;
  background: var(--hapo-growth-green);
}

.hapo-growth-ecosystem__layout {
  display: grid;
  max-width: 1144px;
  grid-template-columns: 507px minmax(0, 1fr);
  gap: 122px;
  align-items: start;
  margin: 0 auto;
}

.hapo-growth-ecosystem__art img {
  display: block;
  width: 100%;
  height: auto;
}

.hapo-growth-ecosystem__steps {
  display: grid;
  min-height: 628px;
  grid-template-rows: repeat(5, 1fr);
  margin: 0;
  padding: 0;
  list-style: none;
}

.hapo-growth-ecosystem__step {
  position: relative;
  display: flex;
  align-items: center;
}

.hapo-growth-ecosystem__step::before {
  position: absolute;
  top: 50%;
  right: calc(100% + 18px);
  width: 66px;
  border-top: 1px dashed #8b8b84;
  content: "";
}

.hapo-growth-ecosystem__step-copy {
  max-width: 500px;
}

.hapo-growth-ecosystem__step h3 {
  margin: 0;
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -.48px;
  line-height: 1.28;
}

.hapo-growth-ecosystem__step p {
  margin: 7px 0 0;
  color: var(--hapo-growth-muted);
  font-size: 18px;
  font-weight: 500;
  letter-spacing: -.18px;
  line-height: 1.35;
}

.hapo-growth-ecosystem__empty {
  margin: 0;
  padding: 20px;
  border: 1px dashed #a8aaa2;
  color: #65675f;
}

@media (max-width: 1100px) {
  .hapo-growth-ecosystem__layout {
    grid-template-columns: minmax(370px, 507px) minmax(0, 1fr);
    gap: 82px;
  }
}

@media (max-width: 767px) {
  .hapo-growth-ecosystem {
    box-sizing: border-box;
    padding: 64px 13px 58px;
    background: #faf9ef;
  }

  .hapo-growth-ecosystem__header {
    margin-bottom: 28px;
  }

  .hapo-growth-ecosystem__eyebrow {
    margin-bottom: 6px;
    font-size: 22px;
    letter-spacing: -.4px;
  }

  .hapo-growth-ecosystem__header h2,
  .hapo-growth-ecosystem__header h3 {
    font-size: 28px;
    letter-spacing: -.84px;
  }

  .hapo-growth-ecosystem__title-line {
    width: 80px;
    height: 3px;
    margin-top: 10px;
  }

  .hapo-growth-ecosystem__layout {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
  }

  .hapo-growth-ecosystem__art {
    width: min(100%, 316px);
    margin: 0 auto;
    transform: translateX(-14px);
  }

  .hapo-growth-ecosystem__steps {
    position: relative;
    isolation: isolate;
    box-sizing: border-box;
    min-width: 0;
    width: 100%;
    min-height: 510px;
    grid-template-rows: repeat(5, 1fr);
    gap: 0;
    padding: 16px 12px;
    border: 1px solid #d4f2d7;
    border-radius: 6px;
    background: #fff;
    text-align: center;
  }

  @supports ((-webkit-mask-composite: xor) or (mask-composite: exclude)) {
    .hapo-growth-ecosystem__steps::before {
      position: absolute;
      z-index: 1;
      inset: -1px;
      padding: 2px;
      border-radius: inherit;
      background: conic-gradient(from var(--hapo-growth-border-angle), transparent 0deg 35deg, #1cca67 55deg 75deg, transparent 95deg 360deg);
      -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
      -webkit-mask-composite: xor;
      mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
      mask-composite: exclude;
      pointer-events: none;
      content: "";
      animation: hapo-growth-border-run 5s linear infinite;
    }
  }

  .hapo-growth-ecosystem__step {
    display: block;
    margin: 0 !important;
    padding-top: 9px;
  }

  .hapo-growth-ecosystem__step-copy {
    min-width: 0;
    max-width: none;
  }

  .hapo-growth-ecosystem__step:not(:last-child)::after {
    position: absolute;
    bottom: -5px;
    left: 50%;
    width: 22px;
    height: 22px;
    background: #00b958;
    clip-path: polygon(31% 0, 69% 0, 69% 53%, 100% 53%, 50% 100%, 0 53%, 31% 53%);
    content: "";
    transform: translateX(-50%);
  }

  .hapo-growth-ecosystem__step:first-child::after {
    background: #ffd21b;
  }

  .hapo-growth-ecosystem__step:nth-child(2)::after {
    background: #5dd355;
  }

  .hapo-growth-ecosystem__step::before {
    display: none;
  }

  .hapo-growth-ecosystem__step h3 {
    font-size: 16px;
    line-height: 1.25;
  }

  .hapo-growth-ecosystem__step p {
    margin-top: 4px;
    font-size: 13px;
    line-height: 1.3;
  }
}

@property --hapo-growth-border-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

@keyframes hapo-growth-border-run {
  to { --hapo-growth-border-angle: 360deg; }
}

@media (prefers-reduced-motion: reduce) {
  .hapo-growth-ecosystem__steps::before {
    animation: none;
    opacity: 0;
  }
}

@media (max-width: 359px) {
  .hapo-growth-ecosystem__art {
    transform: none;
  }
}

/* Motion pass — 2026-10-20 (user-approved proposal).
   - Reveal once on scroll: the five funnel layers settle top to bottom (120ms stagger), each
     stage's copy and dashed connector follow the matching layer.
   - Linked highlight: hovering (or tapping) a stage lifts the matching funnel layer and dims the rest.
   - Sheen: a soft light passes down the funnel every 7s, masked to the funnel shape.
   The funnel stays one PNG; layers are clip-path slices of it (cut in the 12px gaps at
   125 / 248.5 / 381.5 / 508.5 of 628px). Without JS or with reduced motion everything is static and visible. */
.hapo-growth-ecosystem__art {
  position: relative;
  isolation: isolate;
}

.hapo-growth-ecosystem__art .hapo-growth-ecosystem__base {
  visibility: hidden;
}

.hapo-growth-ecosystem__layer {
  --hapo-growth-layer-i: 0;
  position: absolute;
  inset: 0;
  display: block;
  cursor: pointer;
  transform-origin: 50% var(--hapo-growth-layer-origin, 50%);
  transition: opacity .35s ease, filter .35s ease, transform .45s cubic-bezier(.16, 1, .3, 1);
}

.hapo-growth-ecosystem__layer img {
  display: block;
  width: 100%;
  height: auto;
}

.hapo-growth-ecosystem__layer--1 { --hapo-growth-layer-i: 0; --hapo-growth-layer-origin: 10%; clip-path: inset(0 0 80.1% 0); }
.hapo-growth-ecosystem__layer--2 { --hapo-growth-layer-i: 1; --hapo-growth-layer-origin: 30%; clip-path: inset(19.9% 0 60.43% 0); }
.hapo-growth-ecosystem__layer--3 { --hapo-growth-layer-i: 2; --hapo-growth-layer-origin: 50%; clip-path: inset(39.57% 0 39.25% 0); }
.hapo-growth-ecosystem__layer--4 { --hapo-growth-layer-i: 3; --hapo-growth-layer-origin: 71%; clip-path: inset(60.75% 0 19.03% 0); }
.hapo-growth-ecosystem__layer--5 { --hapo-growth-layer-i: 4; --hapo-growth-layer-origin: 90%; clip-path: inset(80.97% 0 0 0); }

.hapo-growth-ecosystem__sheen {
  position: absolute;
  z-index: 2;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  -webkit-mask-image: var(--hapo-growth-mask);
  mask-image: var(--hapo-growth-mask);
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
}

.hapo-growth-ecosystem__sheen::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 26%;
  background: linear-gradient(180deg, transparent 0%, rgb(255 255 255 / 0%) 15%, rgb(255 255 255 / 30%) 50%, rgb(255 255 255 / 0%) 85%, transparent 100%);
  content: "";
  opacity: 0;
  transform: translateY(-100%);
}

/* Linked highlight */
.hapo-growth-ecosystem[data-active] .hapo-growth-ecosystem__layer {
  opacity: .42;
  filter: saturate(.55);
}

.hapo-growth-ecosystem[data-active="1"] .hapo-growth-ecosystem__layer--1,
.hapo-growth-ecosystem[data-active="2"] .hapo-growth-ecosystem__layer--2,
.hapo-growth-ecosystem[data-active="3"] .hapo-growth-ecosystem__layer--3,
.hapo-growth-ecosystem[data-active="4"] .hapo-growth-ecosystem__layer--4,
.hapo-growth-ecosystem[data-active="5"] .hapo-growth-ecosystem__layer--5 {
  z-index: 1;
  opacity: 1;
  filter: brightness(1.07) saturate(1.15);
  transform: scale(1.03);
}

.hapo-growth-ecosystem__step {
  cursor: default;
  transition: opacity .35s ease, transform .45s cubic-bezier(.16, 1, .3, 1);
}

.hapo-growth-ecosystem__step h3 {
  transition: color .3s ease;
}

.hapo-growth-ecosystem__step::before {
  transform-origin: left center;
  transition: border-color .3s ease, transform .5s cubic-bezier(.16, 1, .3, 1);
}

.hapo-growth-ecosystem[data-active] .hapo-growth-ecosystem__step {
  opacity: .5;
}

.hapo-growth-ecosystem[data-active] .hapo-growth-ecosystem__step.is-active {
  opacity: 1;
  transform: translateX(6px);
}

.hapo-growth-ecosystem__step.is-active h3 {
  color: #00a957;
}

.hapo-growth-ecosystem__step.is-active::before {
  border-top: 2px solid var(--hapo-growth-green);
}

/* Reveal once on scroll (classes added by assets/js/hapo-growth-ecosystem.js) */
.hapo-growth-ecosystem.is-armed:not(.is-inview) .hapo-growth-ecosystem__layer,
.hapo-growth-ecosystem.is-armed:not(.is-inview) .hapo-growth-ecosystem__step,
.hapo-growth-ecosystem.is-armed:not(.is-inview) .hapo-growth-ecosystem__title-line {
  opacity: 0;
}

.hapo-growth-ecosystem.is-armed:not(.is-inview) .hapo-growth-ecosystem__step::before {
  transform: scaleX(0);
}

.hapo-growth-ecosystem.is-inview .hapo-growth-ecosystem__title-line {
  animation: hapo-growth-line-in .8s cubic-bezier(.16, 1, .3, 1) backwards;
}

.hapo-growth-ecosystem.is-inview .hapo-growth-ecosystem__layer {
  animation: hapo-growth-layer-in .75s cubic-bezier(.16, 1, .3, 1) backwards;
  animation-delay: calc(var(--hapo-growth-layer-i) * 120ms + 100ms);
}

.hapo-growth-ecosystem.is-inview .hapo-growth-ecosystem__step {
  animation: hapo-growth-step-in .7s cubic-bezier(.16, 1, .3, 1) backwards;
  animation-delay: calc(var(--hapo-growth-i, 0) * 120ms + 260ms);
}

.hapo-growth-ecosystem.is-inview .hapo-growth-ecosystem__step::before {
  animation: hapo-growth-connector-in .6s cubic-bezier(.16, 1, .3, 1) backwards;
  animation-delay: calc(var(--hapo-growth-i, 0) * 120ms + 420ms);
}

.hapo-growth-ecosystem.is-inview .hapo-growth-ecosystem__sheen::before {
  animation: hapo-growth-sheen 7s cubic-bezier(.45, 0, .55, 1) 1.4s infinite;
}

@keyframes hapo-growth-line-in {
  from { transform: scaleX(0); }
}

@keyframes hapo-growth-layer-in {
  from { opacity: 0; transform: translateY(-18px) scale(.97); }
}

@keyframes hapo-growth-step-in {
  from { opacity: 0; transform: translateX(22px); }
}

@keyframes hapo-growth-connector-in {
  from { transform: scaleX(0); }
}

@keyframes hapo-growth-sheen {
  0% { opacity: 0; transform: translateY(-100%); }
  6% { opacity: 1; }
  32% { opacity: 1; transform: translateY(390%); }
  36%, 100% { opacity: 0; transform: translateY(390%); }
}

@media (max-width: 767px) {
  .hapo-growth-ecosystem__step {
    cursor: pointer;
  }

  .hapo-growth-ecosystem[data-active] .hapo-growth-ecosystem__step.is-active {
    transform: none;
  }

  .hapo-growth-ecosystem.is-inview .hapo-growth-ecosystem__step {
    animation-name: hapo-growth-step-in-mobile;
  }

  @keyframes hapo-growth-step-in-mobile {
    from { opacity: 0; transform: translateY(10px); }
  }
}

@media (prefers-reduced-motion: reduce) {
  .hapo-growth-ecosystem__layer,
  .hapo-growth-ecosystem__step,
  .hapo-growth-ecosystem__step h3,
  .hapo-growth-ecosystem__step::before {
    transition: none;
  }

  .hapo-growth-ecosystem__sheen {
    display: none;
  }

  .hapo-growth-ecosystem[data-active] .hapo-growth-ecosystem__step.is-active,
  .hapo-growth-ecosystem[data-active] .hapo-growth-ecosystem__layer {
    transform: none;
  }
}
