illustration

Coming Soon

New WordPress website is being built and will be published soon

(function () { var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; if ('IntersectionObserver' in window && !reduceMotion) { var io = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { entry.target.classList.add('is-visible'); io.unobserve(entry.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' }); document.querySelectorAll('.lbr-wrap .reveal').forEach(function (section) { io.observe(section); }); } else { document.querySelectorAll('.lbr-wrap .reveal').forEach(function (section) { section.classList.add('is-visible'); }); } if (!reduceMotion) { var zeroCells = [ document.querySelectorAll('.lbr-wrap .readout .val')[2], document.querySelectorAll('.lbr-wrap .readout .val')[3] ]; zeroCells.forEach(function (el, i) { if (!el) return; var startVal = 30; var duration = 650; var delay = 520 + i * 90; var start = null; function step(ts) { if (start === null) start = ts; var progress = Math.min((ts - start) / duration, 1); var eased = 1 - Math.pow(1 - progress, 3); el.textContent = Math.round(startVal * (1 - eased)); if (progress < 1) requestAnimationFrame(step); } setTimeout(function () { requestAnimationFrame(step); }, delay); }); } })();