/**
 * Section: Hero
 *
 * Figma: 1400×690 card inset 20px, photograph with a left-to-right dark
 * scrim, 68px Libre Caslon title over it.
 */

.vu-section--hero {
  padding-block-end: var(--vu-space-5);
	padding-top: var(--vu-space-5);
}

.vu-hero {
  position: relative;
  isolation: isolate;
  height: calc(100vh - 80px - 40px); 
  min-height: calc(100vh - 80px - 40px);
  margin-inline: var(--vu-space-5);
  overflow: hidden;
  color: #fff;
  /* The photograph and scrim are absolutely-positioned layers, so if the
     image fails to load the white text would otherwise sit on the
     section's cream at 1.1:1 — unreadable. An ink base guarantees the
     text stays legible regardless, and gives contrast checkers a real
     ancestor background to measure against. */
  background-color: var(--vu-ink);
}
.logged-in.admin-bar .vu-hero {
	height: calc(100vh - 80px - 40px - 32px); 
  	min-height: calc(100vh - 80px - 40px - 32px);
}

.vu-hero__media,
.vu-hero__scrim {
  position: absolute;
  inset: 0;
  z-index: -1;
}

.vu-hero__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* The scrim is what makes white text legible over the photograph.
 *
 * Figma specifies a 913px band, multiply blend at 75% opacity. Measured
 * against the actual photograph that yields 2.73:1 on the title and
 * 2.21:1 on the subtitle — both below WCAG 1.4.3 AA (3:1 for large text,
 * 4.5:1 for the 22px subtitle, which is not large enough to qualify).
 *
 * So the band is widened and the falloff pushed back, and the blend mode
 * is normal rather than multiply: multiply's result depends on whatever
 * is underneath, meaning contrast would silently change with the photo.
 * A normal-blend gradient darkens predictably whatever is behind it.
 */
.vu-hero__scrim {
  inset-inline-end: auto;
  width: 78%;
  background-image: linear-gradient(
    to right,
    rgba(28, 28, 28, 0.82) 0%,
    rgba(28, 28, 28, 0.7) 40%,
    rgba(28, 28, 28, 0.35) 72%,
    rgba(28, 28, 28, 0) 100%
  );
}

.vu-hero__body {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: calc(100vh - 80px - 40px); 
  min-height: calc(100vh - 80px - 40px);
  padding: 211px 80px 60px; 
}
.logged-in.admin-bar .vu-hero__body {
	height: calc(100vh - 80px - 40px - 32px); 
  min-height: calc(100vh - 80px - 40px - 32px);
}

.vu-hero__copy {
  display: flex;
  flex-direction: column;
  gap: 30px;
  align-items: flex-start;
  max-width: 535px;
}

.vu-hero__title {
  font-family: var(--vu-font-serif);
  font-weight: 400;
  font-size: 68px;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: #fff;
}

.vu-hero__subtitle {
  font-weight: 500;
  font-size: 22px;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

.vu-hero__actions {
  display: flex;
  flex-direction: column;
  gap: 30px;
  align-items: flex-start;
}

.vu-button--light {
  background-color: #fff;
  color: var(--vu-ink);
border: 2px solid #fff;
}

.vu-button--light:hover {
  background-color: transparent;
	color: #fff;
	
}

/* ------------------------------------------------------- Arrow links */
.vu-hero__links {
  display: flex;
  flex-direction: column;
}

.vu-hero__link {
  display: inline-flex;
  align-items: flex-start;
  gap: 10px;
  /* 44px target without visually padding the text — SC 2.5.8. */
  padding-block: 10px;
  font-weight: 500;
  font-size: var(--vu-body-size);
  letter-spacing: var(--vu-body-track);
  color: #fff;
  text-decoration: none;
}

.vu-hero__arrow {
  flex-shrink: 0;
  margin-block-start: 3px;
}

/* Underline is part of the design, not just a hover affordance — it is
   what marks these as links against the surrounding white text. */
/* .vu-hero__link-text {
  text-decoration: underline;
  text-underline-offset: 6px;
  text-decoration-thickness: 1px;
} */

/* .vu-hero__link:hover .vu-hero__link-text {
  text-decoration-thickness: 2px;
} */

.vu-hero__link {
    position: relative;
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    color: #fff;
}

.vu-hero__link-text {
    position: relative;
    display: inline-block;
}

.vu-hero__link-text::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -4px;
    width: 100%;
    height: 2px;
    background-color: #fff;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.3s ease-in-out;
}

.vu-hero__link:hover .vu-hero__link-text::after {
    transform: scaleX(1);
}

/* Now an interactive link, so it needs a real target area and a focus
   ring that reads against the photograph. */
.vu-hero__scroll {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin-inline-start: -14px;   /* keep the glyph optically aligned left */
  color: #fff;
  opacity: 0.9;
  transition: opacity var(--vu-transition), translate var(--vu-transition);
}

.vu-hero__scroll:hover {
  opacity: 1;
  translate: 0 4px;
}

.vu-hero__scroll:focus-visible {
  outline: var(--vu-focus-width) solid var(--vu-focus-colour-on-dark);
  outline-offset: 2px;
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .vu-hero__scroll:hover {
    translate: none;
  }
}

/* ================================================================
 * Mobile
 * ============================================================== */
@media (max-width: 1500px) {
	.vu-hero__body {
		padding: 80px 80px 60px;
	}
	.vu-hero__links {
		gap: 0;
	}
	.vu-hero__arrow {
    margin-block-start: 3px;
}
}
@media (max-width: 1023px) {
  .vu-hero,
  .vu-hero__body {
    min-height: 560px;
  }

  .vu-hero__body {
    padding: 120px var(--vu-gutter) 40px;
  }

  /* At narrow widths the text sits over the whole photograph, so the
     scrim has to cover it rather than fading out two-thirds across. */
  .vu-hero__scrim {
    width: 100%;
    background-image: linear-gradient(to bottom, rgba(28, 28, 28, 0.85), rgba(28, 28, 28, 0.55));
  }

  .vu-hero__title {
    font-size: 44px;
  }

  .vu-hero__subtitle {
    font-size: 18px;
  }
}

@media (max-width: 767px) {
/*   .vu-hero {
    margin-inline: 0;
  } */

  .vu-hero__title {
    font-size: 38px;
  }
}
