.hero {
  --app-width: min(clamp(720px, 47.2vw, 960px), calc(100vw - 64px));
  --app-top: clamp(540px, 34vw, 620px);
  --panorama-width: max(100vw, 1000px);
  position: relative;
  isolation: isolate;
  height: calc(var(--app-top) + var(--app-width) * 0.56);
  min-height: 980px;
  padding-top: 142px;
  overflow: clip;
  background: #110c09;
}

.hero-copy {
  position: relative;
  z-index: 6;
  padding-inline: 24px;
  text-align: center;
}
.hero-copy-part {
  opacity: 0.001;
  transform: translateY(24px);
  transition:
    opacity 1s cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 1s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.page-ready .hero-copy-part {
  opacity: 1;
  transform: translateY(0);
}
.page-ready [data-hero-copy-part="title"] {
  transition-delay: 0.1s;
}
.page-ready [data-hero-copy-part="description"] {
  transition-delay: 0.2s;
}
.page-ready [data-hero-copy-part="action"] {
  transition-delay: 0.3s;
}
.eyebrow-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 30px;
  padding: 5px 14px;
  border: 1px solid rgb(255 255 255 / 7%);
  border-radius: 999px;
  background: rgb(255 255 255 / 8%);
  color: rgb(255 255 255 / 74%);
  font-size: 12px;
  backdrop-filter: blur(14px);
}
.live-dot {
  width: 6px;
  height: 6px;
  flex: none;
  border-radius: 50%;
  background: var(--orange);
  box-shadow: 0 0 14px rgb(255 138 50 / 70%);
}
.hero-copy h1 {
  max-width: 820px;
  margin: 28px auto 20px;
  color: var(--text);
  font-size: 56px;
  font-weight: 500;
  line-height: 1.14;
  letter-spacing: -0.04em;
  text-wrap: balance;
}
.hero-copy h1 span {
  color: #ffe7d4;
}
.hero-copy > p {
  max-width: 590px;
  margin-inline: auto;
  color: #c4b9b1;
  font-size: 16px;
  line-height: 1.65;
  text-wrap: balance;
}
.hero-actions {
  display: flex;
  justify-content: center;
  margin-top: 34px;
}
.hero-actions .primary {
  padding-inline: 28px;
  background: linear-gradient(#fff9f3, #fff0e4);
  border-color: #fffaf3;
  color: #241a13;
  box-shadow: 0 0 34px rgb(255 138 50 / 8%);
}
.hero-actions .primary:hover {
  background: white;
  box-shadow: 0 5px 34px rgb(255 138 50 / 24%);
}

.scene-layer {
  position: absolute;
  top: auto;
  bottom: 0;
  left: calc((100% - var(--panorama-width)) / 2);
  width: var(--panorama-width);
  pointer-events: none;
  transform: translate3d(
    0,
    calc(var(--layer-y, 0px) + var(--entrance-y, 0px)),
    0
  );
  transform-origin: center bottom;
}
.scene-layer img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: contain;
}
.scene-sky {
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
}
.scene-sky img {
  object-fit: fill;
}
.scene-mountains-far {
  z-index: 2;
  bottom: clamp(72px, 6.4vw, 96px);
  height: calc(var(--panorama-width) * 900 / 3840);
}
.scene-mountains-near {
  z-index: 3;
  bottom: 1px;
  height: calc(var(--panorama-width) * 720 / 3840);
}
.scene-forest {
  z-index: 5;
  height: calc(var(--panorama-width) * 480 / 3840);
}
.scene-app {
  position: absolute;
  z-index: 4;
  top: var(--app-top);
  left: calc((100% - var(--app-width)) / 2);
  width: var(--app-width);
  transform: translate3d(
    0,
    calc(var(--layer-y, 0px) + var(--entrance-y, 0px)),
    0
  );
}
.scene-app .app-window {
  position: relative;
  aspect-ratio: 2048 / 1190;
  overflow: hidden;
  border: 5px solid #171511;
  border-radius: 19px 19px 0 0;
  background: #141210;
  box-shadow:
    0 0 0 1px rgb(184 112 65 / 20%),
    0 30px 100px rgb(0 0 0 / 68%);
}
.scene-app .app-window img {
  width: 100%;
  height: auto;
  object-fit: contain;
}
.app-aura {
  position: absolute;
  inset: -28% -18%;
  z-index: -1;
  background: radial-gradient(
    ellipse at center,
    rgb(255 118 32 / 26%),
    transparent 62%
  );
  filter: blur(38px);
}
.scene-fade {
  position: absolute;
  z-index: 7;
  right: 0;
  bottom: 0;
  left: 0;
  height: 34px;
  background: linear-gradient(transparent, var(--bg));
  pointer-events: none;
}

.hero-entrance {
  opacity: 0;
  --entrance-y: 36px;
  transition:
    opacity 1s cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 1s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.hero-entrance--far {
  --entrance-y: 72px;
}
.hero-entrance--near {
  --entrance-y: 48px;
}
.hero-entrance--app {
  --entrance-y: 24px;
}
.page-ready .hero-entrance {
  opacity: 1;
  --entrance-y: 0px;
}
.scene-active .scene-layer,
.scene-active .scene-app {
  will-change: transform;
}

@media (min-width: 1600px) {
  .hero {
    --app-top: 590px;
    min-height: 1120px;
    padding-top: 166px;
  }
  .hero-copy h1 {
    font-size: 64px;
  }
}

@media (min-width: 2400px) {
  .hero {
    --panorama-width: 2400px;
  }
  .scene-layer:not(.scene-sky) {
    left: 0;
    width: 100%;
  }
  .scene-layer:not(.scene-sky) img {
    object-fit: fill;
  }
}

@media (max-width: 809px) {
  .hero {
    --app-top: 510px;
    --app-width: calc(100vw - 32px);
    --panorama-width: 1000px;
    height: 800px;
    min-height: 800px;
    padding-top: 122px;
  }
  .hero-copy {
    padding-inline: 16px;
  }
  .hero-copy h1 {
    margin-top: 25px;
    font-size: clamp(38px, 10vw, 52px);
    line-height: 1.15;
    letter-spacing: -0.035em;
  }
  .hero-copy > p {
    max-width: 360px;
    font-size: 14px;
  }
  .hero-actions {
    margin-top: 28px;
  }
  .eyebrow-pill {
    font-size: 10px;
  }
  .scene-app .app-window {
    border-width: 3px;
    border-radius: 9px 9px 0 0;
  }
  .scene-mountains-far {
    bottom: 64px;
  }
  .scene-fade {
    height: 44px;
  }
}

@media (max-width: 480px) {
  .hero {
    --app-top: 500px;
  }
  .hero-copy h1 {
    font-size: 38px;
  }
}

.motion-off .scene-layer,
.motion-off .scene-app,
.motion-off .hero-copy-part,
.motion-off .hero-entrance {
  opacity: 1 !important;
  transform: none !important;
}
@media (prefers-reduced-motion: reduce) {
  .scene-layer,
  .scene-app,
  .hero-copy-part,
  .hero-entrance {
    opacity: 1 !important;
    transform: none !important;
  }
}
