/* Crisp hero boundaries with normal breathing room after removing the fade. */
.tf-aerless .ae-hero::after,
.tf-aerless .ae-detail-hero::after,
.tf-software .sw-main:has(.sw-hero) .sw-hero::after,
.tf-software .sw-main:has(.sw-detail-hero) .sw-detail-hero::after {
  content:none;
}

.tf-aerless .ae-hero,
.tf-aerless .ae-detail-hero:not(.ae-detail-hero-compact),
.tf-software .sw-main:has(.sw-hero) .sw-hero,
.tf-software .sw-main:has(.sw-detail-hero) .sw-detail-hero {
  padding-bottom:48px;
}
/* Let content determine height so a viewport minimum cannot recreate the gap. */
.tf-aerless .ae-hero,
.tf-software .sw-main:has(.sw-hero) .sw-hero {
  min-height:0;
}
@media(max-width:809px) {
  .tf-aerless .ae-hero,
  .tf-aerless .ae-detail-hero:not(.ae-detail-hero-compact),
  .tf-software .sw-main:has(.sw-hero) .sw-hero,
  .tf-software .sw-main:has(.sw-detail-hero) .sw-detail-hero {
    padding-bottom:32px;
  }
}
/* The former deep shadow relied on fade padding and must not bleed into
   the following light section now the hero has a compact lower edge. */
.tf-software .sw-main:has(.sw-hero) .sw-hero-visual .sw-demo,
.tf-software .sw-main:has(.sw-detail-hero) .sw-detail-hero .sw-blueprint,
.tf-aerless .ae-hero .ae-hero-art img {
  box-shadow:none;
}

/* Space after the dark hero belongs to the following light section. */
.tf-software .sw-detail-hero + .sw-work-feature,
.tf-aerless .ae-detail-hero + .sh-supply {
  padding-top:48px;
}
@media(max-width:809px) {
  .tf-software .sw-detail-hero + .sw-work-feature,
  .tf-aerless .ae-detail-hero + .sh-supply {
    padding-top:32px;
  }
}
