About — Graph Technology Institute Skip to main contentGTIGraph Technology InstituteAboutGraph of GraphsResearchEventsGet Involved © The Graph Technology Institute. All rights reserved.501(c)(3) Tax-Exempt Organization 40); }, { passive: true }); })(); /* ============================================ MOBILE MENU ============================================ */ function toggleMobileMenu() { var menu = document.querySelector('.mobile-menu'); var btn = document.querySelector('.hamburger'); var open = menu.classList.toggle('open'); btn.classList.toggle('active', open); btn.setAttribute('aria-expanded', open); menu.setAttribute('aria-hidden', !open); document.body.style.overflow = open ? 'hidden' : ''; } /* ============================================ REVEAL ON SCROLL ============================================ */ (function() { var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); } }); }, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' }); document.querySelectorAll('.reveal').forEach(function(el) { observer.observe(el); }); })(); ' + '
' + m.label + '
' + m.text + ''; }).join(''); results.classList.toggle('has-results', matches.length > 0); activeResult = -1; }); document.querySelector('.search-input').addEventListener('keydown', function(e) { var items = document.querySelectorAll('.search-result'); if (e.key === 'ArrowDown') { e.preventDefault(); activeResult = Math.min(activeResult + 1, items.length - 1); } else if (e.key === 'ArrowUp') { e.preventDefault(); activeResult = Math.max(activeResult - 1, 0); } else if (e.key === 'Enter' && activeResult >= 0) { items[activeResult].click(); return; } items.forEach(function(el, i) { el.classList.toggle('active', i === activeResult); }); }); function goTo(el) { var href = el.getAttribute('data-href'); toggleSearch(); window.location.href = href; } document.addEventListener('keydown', function(e) { if ((e.ctrlKey || e.metaKey) && e.key === 'k') { e.preventDefault(); toggleSearch(); } if (e.key === 'Escape') { var o = document.querySelector('.search-overlay'); if (o && o.classList.contains('open')) toggleSearch(); } }); document.querySelector('.search-overlay').addEventListener('click', function(e) { if (e.target === this) toggleSearch(); }); /script>