:root {
  --edge-pad: 48px;
  --top-pad: 18px;

  /* shared media controls */
  --hero-desktop-focus: center center;
  --hero-mobile-focus: center center;

  /* switch to vertical/mobile media earlier */
  --hero-video-switch: 980px;
}

/* =========================
   HERO
   ========================= */

.hero {
  position: relative;
  min-height: clamp(760px, 92vh, 980px);
  min-height: clamp(760px, 92svh, 980px);
  display: grid;
  align-items: end;
  box-sizing: border-box;
  padding: 170px 0 60px;
  overflow: hidden;
  isolation: isolate;
}

/* Logo */
.hero-brand {
  position: absolute;
  top: var(--top-pad);
  left: var(--edge-pad);
  z-index: 10050;
}

.hero-brand::before {
  content: "";
  position: absolute;
  inset: -36px;
  z-index: -1;
  border-radius: 999px;
  background:
    radial-gradient(circle at 45% 35%, rgba(0, 0, 0, .55) 0%, rgba(0, 0, 0, .20) 45%, rgba(0, 0, 0, 0) 72%),
    radial-gradient(circle at 50% 55%, rgba(0, 0, 0, .30) 0%, rgba(0, 0, 0, 0) 65%);
  filter: blur(10px);
  opacity: .95;
}

.hero-logo {
  width: auto;
  height: clamp(150px, 10vw, 180px);
  filter: drop-shadow(0 14px 32px rgba(0, 0, 0, .45));
}

/* =========================
   MEDIA LAYER
   ========================= */

.hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background: #0b0d0d;
}

.hero-poster,
.hero-video,
.hero-overlay {
  position: absolute;
  inset: 0;
}

.hero-poster,
.hero-video {
  z-index: 0;
}

.hero-poster-img,
.hero-video {
  width: 100%;
  height: 100%;
  display: block;
  filter: saturate(1.06) contrast(1.06);
}

/* default crop behavior */
.hero-poster-img,
.hero-video {
  object-fit: cover;
  object-position: var(--hero-mobile-focus);
}

.hero-overlay {
  z-index: 1;
  background:
    radial-gradient(900px 700px at 18% 12%, rgba(18, 192, 138, .18), transparent 60%),
    linear-gradient(180deg, rgba(0, 0, 0, .15), rgba(0, 0, 0, .82) 70%, rgba(0, 0, 0, .92));
}

/* =========================
   CONTENT
   ========================= */

.hero-content {
  position: relative;
  z-index: 2;
  padding-bottom: 18px;
}

.hero h1 {
  margin: 0 0 14px;
  max-width: 18ch;
  font-size: clamp(2.2rem, 4.2vw, 4.2rem);
  line-height: 1.05;
  letter-spacing: -.04em;
  font-weight: 650;
}

.hero p {
  margin: 0 0 22px;
  max-width: 62ch;
  color: rgba(255, 255, 255, .78);
  font-size: 1.05rem;
  line-height: 1.75;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

/* =========================
   IMAGE HERO ONLY
   framed / blurred contain style
   ========================= */

.hero--image .hero-media::before {
  content: "";
  position: absolute;
  inset: -24px;
  z-index: 0;
  background: var(--hero-blur-bg, var(--hero-img, none)) center center / cover no-repeat;
  filter: blur(22px) saturate(1.04) brightness(.82);
  transform: scale(1.08);
  opacity: .95;
}

.hero--image .hero-poster,
.hero--image .hero-video {
  z-index: 1;
}

.hero--image .hero-poster-img {
  object-fit: contain;
  object-position: center center;
  background: transparent;
  position: relative;
  z-index: 1;
}

.hero--image .hero-overlay {
  z-index: 2;
  background:
    radial-gradient(900px 700px at 18% 12%, rgba(18, 192, 138, .18), transparent 60%),
    linear-gradient(180deg, rgba(0, 0, 0, .12), rgba(0, 0, 0, .74) 68%, rgba(0, 0, 0, .90));
}

.hero--image .hero-content,
.hero--image .hero-brand {
  z-index: 3;
}

/* =========================
   VIDEO HERO ONLY
   poster behaves exactly like video
   ========================= */

.hero--video .hero-poster,
.hero--video .hero-video {
  z-index: 0;
}

.hero--video .hero-poster-img,
.hero--video .hero-video {
  object-fit: cover;
}

.hero--video .hero-overlay {
  z-index: 1;
}

.hero--video .hero-content,
.hero--video .hero-brand {
  z-index: 2;
}

/* desktop focus for wider screens */
@media (min-width: 981px) {

  .hero-poster-img,
  .hero-video {
    object-position: var(--hero-desktop-focus, center center);
  }
}

/* =========================
   RESPONSIVE
   ========================= */

@media (max-width: 980px) {
  .hero {
    padding: 128px 0 44px;
  }

  .hero-brand {
    top: calc(var(--top-pad) + env(safe-area-inset-top));
    left: calc(var(--edge-pad) + env(safe-area-inset-left));
  }

  .hero-logo,
  .hero-logo--spa {
    height: clamp(96px, 22vw, 132px);
  }

  .hero-content {
    padding-bottom: 10px;
  }

  .hero h1 {
    max-width: 22ch;
    font-size: clamp(2rem, 7vw, 3rem);
    line-height: 1.08;
    letter-spacing: -.03em;
  }

  .hero p {
    margin-bottom: 18px;
    max-width: 56ch;
    font-size: 1.02rem;
    line-height: 1.6;
  }

  .hero-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .hero-actions .btn {
    width: 100%;
    min-height: 44px;
    justify-content: center;
  }

  .hero-overlay {
    background:
      radial-gradient(700px 520px at 18% 10%, rgba(18, 192, 138, .16), transparent 60%),
      linear-gradient(180deg, rgba(0, 0, 0, .20), rgba(0, 0, 0, .86) 70%, rgba(0, 0, 0, .94));
  }
}

@media (max-width: 420px) {
  .hero {
    padding: 118px 0 38px;
  }

  .hero h1 {
    max-width: 24ch;
    font-size: 2rem;
  }

  .hero-logo {
    height: 92px;
  }
}

/* full-height desktop feel */
@media (min-width: 768px) {
  .hero {
    min-height: 100svh;
  }
}

/* switch to portrait/mobile treatment sooner */
@media (max-width: 980px),
(max-aspect-ratio: 11/10) {

  .hero--video .hero-poster-img,
  .hero--video .hero-video {
    object-position: var(--hero-mobile-focus, center center);
  }
}