(() => { function getSiteBaseUrl() { const candidates = [ ...document.querySelectorAll('link[href*="assets/stylesheets/"]'), ...document.querySelectorAll('script[src*="assets/javascripts/"]') ]; for (const el of candidates) { const raw = el.getAttribute('href') || el.getAttribute('src'); if (!raw) continue; const absUrl = new URL(raw, window.location.href).href; const assetsIndex = absUrl.indexOf('/assets/'); if (assetsIndex !== -1) { return absUrl.slice(0, assetsIndex); } } return window.location.origin; } function getLogoPath(filename) { return `${getSiteBaseUrl()}/assets/branding/${filename}`; } function getScheme() { return ( document.body?.getAttribute('data-md-color-scheme') || document.documentElement?.getAttribute('data-md-color-scheme') || 'default' ); } function applyThemeLogo() { const logoSrc = getScheme() === 'slate' ? getLogoPath('icon-dark.png') : getLogoPath('icon-light.png'); const logos = document.querySelectorAll('.md-header__button.md-logo img'); logos.forEach(logo => { logo.setAttribute('src', logoSrc); }); } function observeThemeChanges() { const observer = new MutationObserver(mutations => { for (const mutation of mutations) { if (mutation.type === 'attributes' && mutation.attributeName === 'data-md-color-scheme') { applyThemeLogo(); break; } } }); if (document.body) { observer.observe(document.body, { attributes: true, attributeFilter: ['data-md-color-scheme'] }); } observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-md-color-scheme'] }); } function init() { applyThemeLogo(); observeThemeChanges(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init, { once: true }); } else { init(); } })();