{
  "version": 3,
  "sources": ["/cdn/shop/t/64/assets/br-about-home-a-hero.js?brv=donor-sticky-20260722d"],
  "sourcesContent": ["(() => {\n  const clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n  const lerp = (from, to, progress) => from + (to - from) * progress;\n\n  const desktopQuery = window.matchMedia('(min-width: 480px)');\n  const reduceMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n  const DESKTOP = {\n    heightStartVh: 50,\n    widthStart: 80,\n    radiusStart: 800,\n    frameScroll: 1500,\n    heightCompleteAt: 0.82,\n    startsAtPageTop: false,\n  };\n\n  const TINY = {\n    heightStartVh: 32.6336,\n    widthStart: 78.29,\n    radiusStart: 350.334,\n    frameScroll: 1810,\n    heightCompleteAt: 0.88,\n    startsAtPageTop: true,\n  };\n\n  const getScrollRoot = (section) => {\n    const wrapper = section.closest('.page-wrapper');\n\n    if (wrapper) {\n      const overflowY = window.getComputedStyle(wrapper).overflowY;\n      const canScroll = wrapper.scrollHeight > wrapper.clientHeight + 1;\n\n      if (canScroll && /(auto|scroll|overlay)/.test(overflowY)) {\n        return wrapper;\n      }\n    }\n\n    return document.scrollingElement || document.documentElement;\n  };\n\n  const getScrollState = (section) => {\n    const root = getScrollRoot(section);\n    const isDocument =\n      root === document.scrollingElement ||\n      root === document.documentElement ||\n      root === document.body;\n    const rootRect = isDocument ? { top: 0 } : root.getBoundingClientRect();\n\n    return {\n      root,\n      isDocument,\n      top: isDocument ? window.scrollY : root.scrollTop,\n      height: isDocument\n        ? window.innerHeight || document.documentElement.clientHeight\n        : root.clientHeight,\n      viewportTop: rootRect.top,\n    };\n  };\n\n  const absoluteTop = (element, scrollState) =>\n    element.getBoundingClientRect().top - scrollState.viewportTop + scrollState.top;\n\n  const updateSection = (section) => {\n    const mediaMaster = section.querySelector('.br-about-home-a-hero__media-master');\n    const wrap = section.querySelector('.br-about-home-a-hero__media-wrap');\n    const parallax = section.querySelector('.br-about-home-a-hero__parallax');\n    const firstFeature = section.querySelector('.br-about-home-a-hero__feature');\n\n    if (!mediaMaster || !wrap || !parallax) return;\n\n    const scrollState = getScrollState(section);\n    const viewportHeight = scrollState.height;\n    const config = desktopQuery.matches ? DESKTOP : TINY;\n\n    if (\n      !section.brAboutHomeAHeroMetrics ||\n      section.brAboutHomeAHeroMetrics.viewportWidth !== window.innerWidth ||\n      section.brAboutHomeAHeroMetrics.viewportHeight !== viewportHeight ||\n      section.brAboutHomeAHeroMetrics.scrollRoot !== scrollState.root\n    ) {\n      mediaMaster.style.height = `${config.heightStartVh}vh`;\n      wrap.style.width = `${config.widthStart}%`;\n      wrap.style.borderRadius = `${config.radiusStart}px`;\n      section.brAboutHomeAHeroMetrics = {\n        viewportWidth: window.innerWidth,\n        viewportHeight,\n        scrollRoot: scrollState.root,\n        mediaTop: absoluteTop(mediaMaster, scrollState),\n        parallaxTop: absoluteTop(parallax, scrollState),\n        parallaxHeight: parallax.offsetHeight,\n        firstFeatureTop: firstFeature ? absoluteTop(firstFeature, scrollState) : 0,\n      };\n    }\n\n    const metrics = section.brAboutHomeAHeroMetrics;\n    const startScroll = config.startsAtPageTop ? 0 : metrics.mediaTop;\n    const progress = clamp((scrollState.top - startScroll) / config.frameScroll, 0, 1);\n    const heightProgress = clamp(progress / config.heightCompleteAt, 0, 1);\n    const mediaHeight = lerp(config.heightStartVh, 100, heightProgress);\n    const mediaWidth = lerp(config.widthStart, 100, progress);\n    const radius = lerp(config.radiusStart, 16, progress);\n\n    section.style.setProperty('--br-about-home-a-hero-media-height', `${mediaHeight.toFixed(4)}vh`);\n    section.style.setProperty('--br-about-home-a-hero-media-width', `${mediaWidth.toFixed(4)}%`);\n    section.style.setProperty('--br-about-home-a-hero-media-radius', `${radius.toFixed(4)}px`);\n    mediaMaster.style.height = `${mediaHeight.toFixed(4)}vh`;\n    wrap.style.width = `${mediaWidth.toFixed(4)}%`;\n    wrap.style.borderRadius = `${radius.toFixed(4)}px`;\n\n    // Clip the story layer to the pill's rounded box, so white story text\n    // is never drawn over the paper while the stage is still growing (see\n    // the stylesheet). Insets are relative to the story layer's own box.\n    const pillBox = wrap.getBoundingClientRect();\n    const storyBox = parallax.getBoundingClientRect();\n    const inset = [\n      pillBox.top - storyBox.top,\n      storyBox.right - pillBox.right,\n      storyBox.bottom - pillBox.bottom,\n      pillBox.left - storyBox.left,\n    ].map((value) => `${Math.max(0, value).toFixed(2)}px`);\n\n    section.style.setProperty(\n      '--br-about-home-a-hero-story-clip',\n      `inset(${inset.join(' ')} round ${radius.toFixed(4)}px)`\n    );\n  };\n\n  // Reduced motion: no scroll-driven expansion \u2014 render the final\n  // expanded state (100vh / 100% / 16px radius, the progress = 1 values\n  // from updateSection) statically and skip the scroll wiring entirely.\n  const applyFinalState = (section) => {\n    const mediaMaster = section.querySelector('.br-about-home-a-hero__media-master');\n    const wrap = section.querySelector('.br-about-home-a-hero__media-wrap');\n\n    if (!mediaMaster || !wrap) return;\n\n    section.style.setProperty('--br-about-home-a-hero-media-height', '100vh');\n    section.style.setProperty('--br-about-home-a-hero-media-width', '100%');\n    section.style.setProperty('--br-about-home-a-hero-media-radius', '16px');\n    mediaMaster.style.height = '100vh';\n    wrap.style.width = '100%';\n    wrap.style.borderRadius = '16px';\n  };\n\n  let ticking = false;\n\n  const update = () => {\n    const sections = document.querySelectorAll('[data-br-about-home-a-hero]');\n\n    sections.forEach(updateSection);\n    ticking = false;\n  };\n\n  const requestUpdate = () => {\n    if (ticking) return;\n    ticking = true;\n    window.requestAnimationFrame(update);\n  };\n\n  if (reduceMotionQuery.matches) {\n    document.querySelectorAll('[data-br-about-home-a-hero]').forEach((section) => {\n      applyFinalState(section);\n\n      // Hold the video on its poster frame instead of playing \u2014 the\n      // reduced-motion idiom from br-cta-block.js. Without JS the video\n      // plays natively, as in the donor.\n      const video = section.querySelector('.br-about-home-a-hero__video');\n      if (video) {\n        video.removeAttribute('autoplay');\n        video.pause();\n      }\n    });\n    return;\n  }\n\n  update();\n  window.addEventListener('scroll', requestUpdate, { passive: true });\n  window.addEventListener('resize', requestUpdate);\n  window.addEventListener('pageshow', requestUpdate);\n  document.addEventListener('shopify:section:load', requestUpdate);\n  document.querySelectorAll('.page-wrapper').forEach((root) => {\n    root.addEventListener('scroll', requestUpdate, { passive: true });\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
