(function () { const root = document.documentElement; const KEY = "otb-theme"; function applyTheme(theme) { const resolved = theme === "light" ? "light" : "dark"; root.setAttribute("data-theme", resolved); document.body.classList.toggle("otb-dark", resolved === "dark"); document.body.classList.toggle("otb-light", resolved === "light"); const toggle = document.getElementById("otbThemeToggle") || document.getElementById("themeToggle"); if (toggle) toggle.checked = resolved === "light"; } function savedTheme() { try { return localStorage.getItem(KEY) || "dark"; } catch (e) { return "dark"; } } function saveTheme(theme) { try { localStorage.setItem(KEY, theme); } catch (e) {} } function setupMenu() { const btn = document.getElementById("otbMenuToggle"); const nav = document.getElementById("otbNavWrap"); if (!btn || !nav) return; btn.addEventListener("click", function () { const open = nav.classList.toggle("otb-nav-open"); btn.setAttribute("aria-expanded", open ? "true" : "false"); }); } document.addEventListener("DOMContentLoaded", function () { applyTheme(savedTheme()); const toggle = document.getElementById("otbThemeToggle") || document.getElementById("themeToggle"); if (toggle) { toggle.addEventListener("change", function () { const next = toggle.checked ? "light" : "dark"; saveTheme(next); applyTheme(next); }); } setupMenu(); }); })();