/**
 * WMD Solutions Base Theme - Hero Banner styles.
 * Loaded only when a hero banner block is present.
 * Header styles live in header.css.
 * Nav styles live in css/components/menu.css.
 * Overlay utilities live in base.css.
 *
 * Subtheme override tokens (set in each subtheme's :root):
 *   --header-height             Desktop header height (default 120px).
 *                               Used to reserve clearance at the top of
 *                               .hero-content-overlay so content doesn't
 *                               collide with the transparent header.
 *   --header-height-mobile      Mobile header height (default 70px).
 *   --header-hero-bg            Translucent header tint over node heroes.
 *   --header-scroll-bg          Scrolled-state header background.
 *   --header-scroll-blur        Scrolled-state backdrop-filter blur.
 *   --header-transparent-color  Nav link color while header is over hero.
 *   --header-scrolled-color     Nav link color once scrolled.
 *   --hero-content-gap          Extra space between header and content (desktop, default 1rem).
 *   --hero-content-gap-mobile   Extra space between header and content (mobile, default 0.75rem).
 *   --hero-content-padding-y    Bottom padding inside content overlay (default 2rem).
 *   --hero-content-padding-y-mobile  Bottom padding on mobile (default 1.5rem).
 *   --hero-content-padding-x    Horizontal padding (default 0 — container handles it).
 *   --hero-card-bg / --hero-card-blur / --hero-card-radius / --hero-card-padding
 *                               Frosted-glass card wrapping referenced blocks.
 */

/* ======================================================
   Z-INDEX STACK
   0: hero-bg-image
   1: hero-bg-video
   2: wmd-overlay-gradient
   3: hero-content-overlay
   200: site-header (transparent, absolute)
   ====================================================== */

/* ======================================================
   HERO BANNER BASE
   ====================================================== */

.hero-banner {
  position: relative;
  width: 100%;
  overflow: hidden;
  display: flex;
  align-items: center;
}

.hero-height--full {
  min-height: 100vh;
}

.hero-height--half {
  min-height: 50vh;
}

.hero-height--auto {
  min-height: var(--hero-min-height, 400px);
}

/* ======================================================
   VIDEO BACKGROUND
   ====================================================== */

.hero-bg-video {
  position: absolute;
  top: 50%;
  left: 50%;
  min-width: 100%;
  min-height: 100%;
  width: auto;
  height: auto;
  transform: translate(-50%, -50%);
  z-index: 1;
  object-fit: cover;
}

/* ======================================================
   IMAGE BACKGROUND
   ====================================================== */

.hero-bg-image {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  z-index: 0;
}

/* ======================================================
   OVERLAY - sits above both video and image
   ====================================================== */

.hero-banner .wmd-overlay-gradient {
  z-index: 2;
}

/* ======================================================
   CONTENT OVERLAY - sits above everything
   ====================================================== */

.hero-content-overlay {
  position: relative;
  z-index: 3;
  width: 100%;
  /* Reserve exactly enough top clearance for the absolute header.
     The hero flex container centers content vertically, so we only
     need to prevent header collision — not add extra breathing room.
     Override --header-height per subtheme in :root. */
  padding: calc(var(--header-height, 120px) + var(--hero-content-gap, 1rem))
           var(--hero-content-padding-x, 0)
           var(--hero-content-padding-y, 2rem);
  text-align: center;
}

.hero-text--light .hero-content-overlay {
  color: #ffffff;
}

.hero-text--light .hero-content-overlay a {
  color: #ffffff;
}

.hero-text--dark .hero-content-overlay {
  color: #111111;
}

/* ======================================================
   HERO CONTENT CARD
   Frosted glass card wrapping each referenced block.
   Slide-down entry animation on load.
   ====================================================== */

.hero-content-overlay .block {
  display: inline-block;
  text-align: center;
  background: var(--hero-card-bg, rgba(0, 0, 0, 0.25));
  backdrop-filter: blur(var(--hero-card-blur, 6px));
  -webkit-backdrop-filter: blur(var(--hero-card-blur, 6px));
  border-radius: var(--hero-card-radius, 6px);
  padding: var(--hero-card-padding, 2rem 2.5rem);
  animation: heroSlideDown 0.8s ease forwards;
}

@keyframes heroSlideDown {
  from {
    opacity: 0;
    transform: translateY(-30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ======================================================
   MOBILE HERO
   No video, no image — dark bg + content only. Fast.
   ====================================================== */

@media (max-width: 767px) {
  

  .hero-bg-video {
    display: none !important;
  }

  .hero-has-video .hero-bg-image {
    display: block !important;
  }

  .hero-height--full {
    min-height: unset;
  }

  .hero-content-overlay {
    /* Shorter mobile header — reduce reserved clearance accordingly.
       Override --header-height-mobile per subtheme. */
    padding: calc(var(--header-height-mobile, 70px) + var(--hero-content-gap-mobile, 0.75rem))
             var(--hero-content-padding-x, 0)
             var(--hero-content-padding-y-mobile, 1.5rem);
  }

  .hero-content-overlay .block {
    display: block;
  }
}

/* ======================================================
   TRANSPARENT HEADER OVER HERO
   ====================================================== */

.transparent-header .site-header {
  position: absolute;
  top: var(--drupal-displace-offset-top, 0px);
  left: 0;
  width: 100%;
  z-index: 200;
  background: transparent !important;
}

/* White text/icons on transparent header */
.transparent-header .site-header .nav-link,
.transparent-header .site-header .navbar-brand,
.transparent-header .site-header .navbar-toggler {
  color: var(--header-transparent-color, #ffffff) !important;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}

.transparent-header .site-header .nav-link:hover {
  color: var(--header-transparent-hover, rgba(255, 255, 255, 0.85)) !important;
}

.transparent-header .site-header .header-top {
  color: var(--header-transparent-color, #ffffff);
  border-bottom-color: rgba(255, 255, 255, 0.2);
}

.transparent-header .site-header .header-top a {
  color: var(--header-transparent-color, #ffffff);
}

.transparent-header .site-header .cart-block--icon-wrapper svg {
  color: var(--header-transparent-color, #ffffff) !important;
}

.transparent-header .site-header .navbar-toggler-icon {
  filter: invert(1);
}

/* Transparent + sticky: switch to fixed after scroll */
.transparent-header.sticky-header .site-header {
  position: absolute;
}

.transparent-header.sticky-header.scrolled .site-header {
  position: fixed;
  top: var(--drupal-displace-offset-top, 0px);
  background: var(--header-scroll-bg, rgba(255, 255, 255, 0.75)) !important;
  backdrop-filter: blur(var(--header-scroll-blur, 8px));
  -webkit-backdrop-filter: blur(var(--header-scroll-blur, 8px));
  box-shadow: var(--header-sticky-shadow);
}

/* Restore configurable color after scroll */
.transparent-header.sticky-header.scrolled .site-header .nav-link,
.transparent-header.sticky-header.scrolled .site-header .navbar-brand {
  color: var(--header-scrolled-color, var(--color-text)) !important;
  text-shadow: none;
}

.transparent-header.sticky-header.scrolled .site-header .cart-block--icon-wrapper svg {
  color: var(--header-scrolled-color, var(--color-text)) !important;
}

.transparent-header.sticky-header.scrolled .site-header .navbar-toggler-icon {
  filter: none;
}

.transparent-header.sticky-header.scrolled .site-header .header-top {
  color: var(--header-scrolled-color, var(--color-text));
}

/* ======================================================
   HAS-HERO-IMAGE — Node pages with banner fields.
   Semi-transparent header sits absolute over the node
   hero div. Opacity controlled by --header-hero-bg in
   each subtheme. Falls back to 40% black.
   Does NOT activate full transparent-header behavior —
   that is reserved for hero_banner blocks.
   ====================================================== */

.has-hero-image .site-header {
  position: absolute;
  top: var(--drupal-displace-offset-top, 0px);
  left: 0;
  width: 100%;
  z-index: 200;
  background: var(--header-hero-bg, rgba(0, 0, 0, 0.35)) !important;
}

.has-hero-image .site-header .nav-link,
.has-hero-image .site-header .navbar-brand,
.has-hero-image .site-header .site-slogan,
.has-hero-image .site-header .navbar-toggler {
  color: var(--header-transparent-color, #ffffff) !important;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}

.has-hero-image .site-header .nav-link:hover {
  color: var(--header-transparent-hover, rgba(255, 255, 255, 0.85)) !important;
}

.has-hero-image .site-header .header-top {
  color: var(--header-transparent-color, #ffffff);
  border-bottom-color: rgba(255, 255, 255, 0.15);
}

.has-hero-image .site-header .header-top a {
  color: var(--header-transparent-color, #ffffff);
}

.has-hero-image .site-header .navbar-toggler-icon {
  filter: invert(1);
}

/* Scrolled — switch to fixed solid */
.has-hero-image.sticky-header.scrolled .site-header {
  position: fixed;
  top: var(--drupal-displace-offset-top, 0px);
  background: var(--header-scroll-bg, rgba(0, 0, 0, 0.92)) !important;
  backdrop-filter: blur(var(--header-scroll-blur, 0px));
  box-shadow: var(--header-sticky-shadow);
}

.has-hero-image.sticky-header.scrolled .site-header .nav-link,
.has-hero-image.sticky-header.scrolled .site-header .navbar-brand {
  color: var(--header-scrolled-color, #ffffff) !important;
  text-shadow: none;
}

.has-hero-image.sticky-header.scrolled .site-header .navbar-toggler-icon {
  filter: none;
}
