/* CyberFortress Professional Services Page Scripts Hosted externally on HubSpot File Manager to avoid WordPress inline-script stripping in Custom HTML blocks. */ (function() { "use strict"; /* ---- Scroll Reveal ---- */ function initReveal() { var els = document.querySelectorAll(".cf-ps .ps-reveal"); if (!els.length) return; if (!("IntersectionObserver" in window)) { els.forEach(function(e) { e.classList.add("ps-visible"); }); return; } var obs = new IntersectionObserver(function(entries) { entries.forEach(function(en) { if (en.isIntersecting) { en.target.classList.add("ps-visible"); obs.unobserve(en.target); } }); }, { threshold: 0.15, rootMargin: "0px 0px -40px 0px" }); els.forEach(function(e) { obs.observe(e); }); } /* ---- Modal ---- */ function initModal() { var overlay = document.getElementById("cfps-modal"); var closeBtn = document.getElementById("cfps-modal-close"); if (!overlay) return; var triggers = document.querySelectorAll(".cf-ps .ps-modal-trigger"); triggers.forEach(function(t) { t.addEventListener("click", function(e) { e.preventDefault(); overlay.classList.add("active"); document.body.style.overflow = "hidden"; loadHsForm(); }); }); function closeModal() { overlay.classList.remove("active"); document.body.style.overflow = ""; } if (closeBtn) closeBtn.addEventListener("click", closeModal); overlay.addEventListener("click", function(e) { if (e.target === overlay) closeModal(); }); document.addEventListener("keydown", function(e) { if (e.key === "Escape" && overlay.classList.contains("active")) closeModal(); }); } /* ---- HubSpot Form ---- */ var hsLoaded = false; function loadHsForm() { if (hsLoaded) return; if (typeof hbspt === "undefined") { setTimeout(loadHsForm, 300); return; } hsLoaded = true; hbspt.forms.create({ portalId: "45830035", formId: "97edfdfe-50a0-4381-866f-b7f0522c8dcb", target: "#cfps-hs-form", region: "na2", css: "" }); } /* ---- Init ---- */ if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", function() { initReveal(); initModal(); }); } else { initReveal(); initModal(); } })();