(function () { 'use strict'; var root = document.documentElement; var reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; var revealNodes = Array.prototype.slice.call(document.querySelectorAll('.btp580-reveal')); function showAll() { revealNodes.forEach(function (node) { node.classList.add('is-visible'); }); } if (reducedMotion || !('IntersectionObserver' in window)) { showAll(); } else { var revealObserver = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (!entry.isIntersecting) return; entry.target.classList.add('is-visible'); revealObserver.unobserve(entry.target); }); }, { rootMargin: '0px 0px -7% 0px', threshold: 0.08 }); document.querySelectorAll('.btp580-domain').forEach(function (node, index) { node.style.transitionDelay = String(index * 65) + 'ms'; }); revealNodes.forEach(function (node) { revealObserver.observe(node); }); root.classList.add('btp580-ready'); } var interfaceField = document.querySelector('[data-btp580-interface]'); var precisePointer = window.matchMedia('(hover: hover) and (pointer: fine)').matches; if (interfaceField && precisePointer && !reducedMotion) { var frame = 0; var nextX = 0; var nextY = 0; function renderPointer() { frame = 0; interfaceField.style.setProperty('--btp580-shift-x', nextX.toFixed(2) + 'px'); interfaceField.style.setProperty('--btp580-shift-y', nextY.toFixed(2) + 'px'); } interfaceField.addEventListener('pointermove', function (event) { var rect = interfaceField.getBoundingClientRect(); nextX = ((event.clientX - rect.left) / rect.width - 0.5) * -10; nextY = ((event.clientY - rect.top) / rect.height - 0.5) * -7; if (!frame) frame = window.requestAnimationFrame(renderPointer); }, { passive: true }); interfaceField.addEventListener('pointerleave', function () { nextX = 0; nextY = 0; if (!frame) frame = window.requestAnimationFrame(renderPointer); }, { passive: true }); } }());