(() => { if (window.__wsapBootInitialized) return; window.__wsapBootInitialized = true; const getCurrentTheme = () => document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light"; const updateThemeToggleLabels = (theme) => { const label = theme === "dark" ? "Switch to light mode" : "Switch to dark mode"; document.querySelectorAll(".theme-toggle").forEach((button) => { if (button instanceof HTMLElement) { button.setAttribute("aria-label", label); button.setAttribute("title", label); } }); }; const applyTheme = (theme, persist = true) => { document.documentElement.setAttribute("data-theme", theme); updateThemeToggleLabels(theme); if (!persist) return; try { localStorage.setItem("theme", theme); } catch { // Ignore read/write failures in strict privacy modes. } }; const initThemeToggle = () => { applyTheme(getCurrentTheme(), false); document.addEventListener("click", (event) => { const eventTarget = event.target; if (!(eventTarget instanceof Element)) return; const toggleButton = eventTarget.closest(".theme-toggle"); if (!(toggleButton instanceof HTMLElement)) return; const currentTheme = getCurrentTheme(); const nextTheme = currentTheme === "dark" ? "light" : "dark"; applyTheme(nextTheme); }); }; const loadAnalytics = () => { if (document.querySelector('script[data-goatcounter-script="true"]')) return; const script = document.createElement("script"); script.src = "/count.js"; script.async = true; script.defer = true; script.setAttribute("data-goatcounter", `${window.location.origin}/count`); script.setAttribute("data-goatcounter-script", "true"); document.head.appendChild(script); }; const scheduleAnalytics = () => { if ("requestIdleCallback" in window) { window.requestIdleCallback(loadAnalytics, { timeout: 3000 }); return; } window.setTimeout(loadAnalytics, 1500); }; const init = () => { initThemeToggle(); if (document.readyState === "complete") scheduleAnalytics(); else window.addEventListener("load", scheduleAnalytics, { once: true }); }; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init, { once: true }); return; } init(); })();