Skip to content
/* AE_LIMO_P1_V2: crawlability + a11y hardening (no design change) */
(function(){
if (window.__aeP1v2) return;
window.__aeP1v2 = true;
function fixAnchors(){
var anchors = document.querySelectorAll('a');
anchors.forEach(function(a){
var href = (a.getAttribute('href') || '').trim();
if (href && href !== '#' && !/^javascript:/i.test(href)) return;
if (a.hasAttribute('data-bs-toggle') || a.hasAttribute('data-toggle')) return;
var role = (a.getAttribute('role') || '').toLowerCase();
if (role === 'button' || role === 'tab') return;
if (a.hasAttribute('aria-controls')) return;
if (!a.getAttribute('href') || href === '#' || /^javascript:/i.test(href)) {
a.setAttribute('href', window.location.pathname + (window.location.search || ''));
if (!a.getAttribute('aria-label') && !a.textContent.trim()) a.setAttribute('aria-label', 'Visit page');
}
});
}
function fixListItems(){
var listItems = document.querySelectorAll('li');
listItems.forEach(function(li){
var p = li.parentElement;
if (!p) return;
var tag = p.tagName;
if (tag === 'UL' || tag === 'OL' || tag === 'MENU') return;
var ul = document.createElement('ul');
ul.style.listStyle = 'none';
ul.style.margin = '0';
ul.style.padding = '0';
p.insertBefore(ul, li);
ul.appendChild(li);
});
}
function sanitizeAria(){
var needsChildren = {
listbox: ['option'],
menu: ['menuitem','menuitemcheckbox','menuitemradio'],
tablist: ['tab'],
radiogroup: ['radio'],
tree: ['treeitem'],
grid: ['row']
};
Object.keys(needsChildren).forEach(function(role){
document.querySelectorAll('[role="' + role + '"]').forEach(function(el){
var req = needsChildren[role];
var ok = req.some(function(r){ return !!el.querySelector('[role="' + r + '"]'); });
if (!ok) {
el.removeAttribute('role');
el.removeAttribute('aria-activedescendant');
}
});
});
document.querySelectorAll('[role="option"]').forEach(function(el){
if (!el.closest('[role="listbox"]')) el.removeAttribute('role');
});
document.querySelectorAll('[role="tab"]').forEach(function(el){
if (!el.closest('[role="tablist"]')) el.removeAttribute('role');
});
}
function fixContrast(){
if (document.getElementById('ae-limo-contrast-fix')) return;
var style = document.createElement('style');
style.id = 'ae-limo-contrast-fix';
style.textContent = '\n .wpcf7 form, .wpcf7-form { color: #111827 !important; }\n .wpcf7-form label, .wpcf7-form p, .wpcf7-form span { color: #111827 !important; }\n .wpcf7-form input, .wpcf7-form textarea, .wpcf7-form select { color: #111827 !important; }\n .wpcf7-form input::placeholder, .wpcf7-form textarea::placeholder { color: #4b5563 !important; opacity: 1 !important; }\n ';
document.head.appendChild(style);
}
function runAll(){
fixAnchors();
fixListItems();
sanitizeAria();
fixContrast();
}
runAll();
document.addEventListener('DOMContentLoaded', runAll);
var mo = new MutationObserver(function(){ runAll(); });
mo.observe(document.documentElement, {childList:true, subtree:true});
})();