1!function(){const e="scroll-trigger--offscreen",t="scroll-trigger--cancel";function n(n,r){n.forEach(((n,o)=>{if(n.isIntersecting){const t=n.target;t.classList.contains(e)&&(t.classList.remove(e),t.hasAttribute("data-cascade")&&t.setAttribute("style",`--animation-order: ${o};`)),r.unobserve(t)}else n.target.classList.add(e),n.target.classList.remove(t)}))}function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=Array.from(e.getElementsByClassName("scroll-trigger"));if(0===r.length)return;if(t)return void r.forEach((e=>{e.classList.add("scroll-trigger--design-mode")}));const o=new IntersectionObserver(n,{rootMargin:"0px 0px -50px 0px"});r.forEach((e=>o.observe(e)))}function o(e){const t=window.innerHeight,n=window.scrollY,r=e.getBoundingClientRect().top+n,o=e.offsetHeight;if(r>n+t)return 0;if(r+o<n)return 100;let s=(n+t-r)/((t+o)/100);return Math.round(s)}window.addEventListener("DOMContentLoaded",(()=>{r(),function(){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const e=Array.from(document.getElementsByClassName("animate--zoom-in"));0!==e.length&&e.forEach((e=>{let t=!1;new IntersectionObserver((e=>{e.forEach((e=>{t=e.isIntersecting}))})).observe(e),e.style.setProperty("--zoom-in-ratio",1+.002*o(e)),window.addEventListener("scroll",throttle((()=>{t&&e.style.setProperty("--zoom-in-ratio",1+.002*o(e))})),{passive:!0})}))}()})),Shopify.designMode&&(document.addEventListener("shopify:section:load",(e=>r(e.target,!0))),document.addEventListener("shopify:section:reorder",(()=>r(document,!0))))}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.