.service-motion {
  --motion-header: 84px;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(330px, .75fr);
  background: #080a0a;
  color: #e9eee9;
  border-top: 1px solid rgba(233, 238, 233, .16);
}

.service-motion__stage {
  position: sticky;
  top: var(--motion-header);
  height: calc(100svh - var(--motion-header));
  min-height: 560px;
  overflow: hidden;
  background: #080a0a;
}

.service-motion__media,
.service-motion__air-media {
  position: absolute;
  inset: clamp(24px, 4vw, 68px);
  overflow: hidden;
  border: 1px solid rgba(104, 244, 187, .28);
  background: #050706;
  box-shadow: 0 40px 90px rgba(0, 0, 0, .38);
}

.service-motion__media::after,
.service-motion__air-media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(8, 10, 10, .08), transparent 48%, rgba(8, 10, 10, .72));
}

.service-motion__frame,
.service-motion__air-media img,
.service-motion__air-media video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.service-motion__frame {
  opacity: 0;
  transform: scale(1.035);
  transition: opacity .48s ease, transform 1.1s cubic-bezier(.2, .75, .2, 1);
}

.service-motion__frame.is-active {
  z-index: 2;
  opacity: 1;
  transform: scale(1);
}

.service-motion__air-media video {
  z-index: 2;
  opacity: 0;
  transition: opacity .35s ease;
}

.service-motion__air-media.is-ready video { opacity: 1; }

.service-motion__scan {
  position: absolute;
  z-index: 5;
  top: 0;
  bottom: 0;
  left: var(--motion-progress, 0%);
  width: 1px;
  background: #68f4bb;
  box-shadow: 0 0 28px 5px rgba(104, 244, 187, .25);
  transition: left .55s cubic-bezier(.2, .75, .2, 1);
}

.service-motion__readout {
  position: absolute;
  z-index: 6;
  right: clamp(38px, 6vw, 96px);
  bottom: clamp(38px, 6vw, 96px);
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 180px;
  padding: 12px 14px;
  border: 1px solid rgba(104, 244, 187, .55);
  background: rgba(6, 10, 8, .78);
  backdrop-filter: blur(10px);
  color: #68f4bb;
  font: 500 8px/1 "IBM Plex Mono", monospace;
  letter-spacing: .08em;
}

.service-motion__readout i {
  height: 1px;
  flex: 1;
  background: linear-gradient(90deg, #68f4bb var(--motion-progress, 0%), rgba(104, 244, 187, .25) 0);
}

.service-motion__stage-copy {
  position: absolute;
  z-index: 7;
  top: clamp(42px, 6vw, 92px);
  left: clamp(42px, 6vw, 92px);
  max-width: min(620px, 70%);
  pointer-events: none;
}

.service-motion__stage-copy p {
  margin: 0 0 15px;
  color: #68f4bb;
  font: 500 8px/1 "IBM Plex Mono", monospace;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.service-motion__stage-copy h2 {
  margin: 0;
  max-width: 12ch;
  font-size: clamp(38px, 4.2vw, 76px);
  font-weight: 560;
  line-height: .92;
  letter-spacing: -.055em;
  text-shadow: 0 2px 35px rgba(0, 0, 0, .78);
}

.service-motion__chapters {
  position: relative;
  z-index: 8;
  margin: 0;
  padding: 0;
  list-style: none;
  border-left: 1px solid rgba(233, 238, 233, .16);
}

.service-motion__chapter {
  min-height: 76svh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 60px clamp(28px, 4vw, 72px);
  border-bottom: 1px solid rgba(233, 238, 233, .16);
  opacity: .35;
  transition: opacity .35s ease, background .35s ease;
}

.service-motion__chapter.is-active {
  opacity: 1;
  background: linear-gradient(90deg, rgba(104, 244, 187, .1), transparent 75%);
}

.service-motion__chapter span {
  margin-bottom: 28px;
  color: #68f4bb;
  font: 500 9px/1 "IBM Plex Mono", monospace;
  letter-spacing: .08em;
}

.service-motion__chapter h3 {
  margin: 0;
  font-size: clamp(28px, 3vw, 49px);
  font-weight: 560;
  line-height: .96;
  letter-spacing: -.045em;
}

.service-motion__chapter p {
  max-width: 39ch;
  margin: 24px 0 0;
  color: #93a099;
  font-size: 13px;
  line-height: 1.7;
}

.service-motion--air .service-motion__chapter { min-height: 72svh; }

.service-motion__hotspot {
  position: absolute;
  z-index: 6;
  left: var(--hotspot-x);
  top: var(--hotspot-y);
  display: flex;
  align-items: center;
  gap: 8px;
  color: #dfffee;
  font: 500 7px/1 "IBM Plex Mono", monospace;
  letter-spacing: .06em;
  text-transform: uppercase;
  opacity: .35;
  transform: translate(-50%, -50%);
  transition: opacity .35s ease, transform .35s ease;
}

.service-motion__hotspot::before {
  content: "";
  width: 7px;
  height: 7px;
  border: 1px solid #68f4bb;
  border-radius: 50%;
  box-shadow: 0 0 12px rgba(104, 244, 187, .5);
}

.service-motion__hotspot.is-active {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1.08);
}

@media (max-width: 900px) {
  .service-motion {
    --motion-header: 70px;
    display: block;
  }

  .service-motion__stage {
    z-index: 1;
    height: calc(100svh - var(--motion-header));
    min-height: 0;
  }

  .service-motion__media,
  .service-motion__air-media { inset: 14px; }

  .service-motion__stage-copy {
    top: 30px;
    left: 34px;
    max-width: calc(100% - 68px);
  }

  .service-motion__stage-copy h2 {
    font-size: clamp(31px, 7vw, 54px);
  }

  .service-motion__chapters {
    z-index: 8;
    margin-top: calc(-100svh + var(--motion-header));
    border-left: 0;
    pointer-events: none;
  }

  .service-motion__chapter,
  .service-motion--air .service-motion__chapter {
    min-height: calc(100svh - var(--motion-header));
    justify-content: flex-end;
    padding: clamp(250px, 41svh, 390px) clamp(22px, 7vw, 58px) 94px;
    opacity: 0;
    background: linear-gradient(180deg, transparent 38%, rgba(8, 10, 10, .58) 57%, #080a0a 88%);
  }

  .service-motion__chapter.is-active {
    opacity: 1;
    background: linear-gradient(180deg, transparent 34%, rgba(8, 10, 10, .62) 55%, #080a0a 88%);
  }

  .service-motion__readout {
    display: none;
  }

  .service-motion .gsap-text-word,
  .service-motion .gsap-text-copy,
  .service-motion .gsap-text-detail {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    filter: none !important;
  }
}

@media (max-width: 620px) {
  .service-motion__media,
  .service-motion__air-media { inset: 0; border-left: 0; border-right: 0; }

  .service-motion__stage-copy {
    top: 24px;
    left: 20px;
    max-width: calc(100% - 40px);
  }

  .service-motion__stage-copy h2 { font-size: clamp(27px, 8.5vw, 39px); }
  .service-motion__chapter,
  .service-motion--air .service-motion__chapter {
    min-height: calc(100svh - var(--motion-header));
    padding: clamp(225px, 39svh, 330px) 20px 82px;
  }
  .service-motion__chapter h3 { font-size: clamp(30px, 10vw, 42px); }
  .service-motion__chapter p { font-size: 12px; }
  .service-motion__hotspot { font-size: 6px; }
}

@media (prefers-reduced-motion: reduce) {
  .service-motion { display: block; }
  .service-motion__stage { position: relative; top: 0; height: min(72vw, 720px); min-height: 360px; }
  .service-motion__chapter,
  .service-motion--air .service-motion__chapter { min-height: auto; opacity: 1; }
  .service-motion__frame { transition: none; }
}
