/* Scroll suave quando a SANFONA (e-n-accordion) abre */
(function () {
function ready(fn){
if (document.readyState !== "loading") fn();
else document.addEventListener("DOMContentLoaded", fn);
}
ready(function(){
var wrappers = document.querySelectorAll(".thumb-acc-sanfona");
if (!wrappers.length) return;
wrappers.forEach(function(wrap){
var items = wrap.querySelectorAll(".e-n-accordion-item"); // detalhes da sanfona
items.forEach(function(item){
// 1) Se for , use o evento nativo "toggle"
if ("ontoggle" in document.createElement("details")) {
item.addEventListener("toggle", function(){
if (item.open) scrollToItem(item, wrap);
});
} else {
// 2) Fallback: escuta o clique no título e confere depois se abriu
var head = item.querySelector(".e-n-accordion-item-title");
if (head) {
head.addEventListener("click", function(){
setTimeout(function(){
var opened =
item.hasAttribute("open") ||
item.classList.contains("e-active") ||
head.getAttribute("aria-expanded") === "true";
if (opened) scrollToItem(item, wrap);
}, 60); // dá tempo do DOM aplicar o estado aberto
});
}
}
});
function scrollToItem(el, context){
// offset final vem de CSS var, admin bar e header sticky se existirem
var css = getComputedStyle(context);
var varOffset = parseInt((css.getPropertyValue("--scroll-offset") || "0").trim(), 10) || 0;
var offset = varOffset;
var admin = document.getElementById("wpadminbar");
if (admin) offset += admin.offsetHeight;
// pega o primeiro header sticky ativo (se houver)
var sticky = document.querySelector(".elementor-sticky--active");
if (sticky) offset += sticky.offsetHeight;
// rola até o topo do item, respeitando o offset calculado
var y = window.pageYOffset + el.getBoundingClientRect().top - offset;
window.scrollTo({ top: y, behavior: "smooth" });
}
});
});
})();