(function () {
  'use strict';

  function closeSubmenu(li) {
    li.classList.remove('is-open');
    const btn = li.querySelector(':scope > .submenu-toggle');
    const sub = li.querySelector(':scope > .submenu');
    if (btn) btn.setAttribute('aria-expanded', 'false');
    if (sub) sub.hidden = true;
  }

  function openSubmenu(li) {
    li.classList.add('is-open');
    const btn = li.querySelector(':scope > .submenu-toggle');
    const sub = li.querySelector(':scope > .submenu');
    if (btn) btn.setAttribute('aria-expanded', 'true');
    if (sub) sub.hidden = false;
  }

  function handleToggleClick(e) {
    const btn = e.currentTarget;
    const li = btn.closest('.has-children');
    if (!li) return;

    const group = li.parentElement; // the current <ul>
    const isOpen = li.classList.contains('is-open');

    // Close all siblings at this level
    Array.from(group.children).forEach(function (sib) {
      if (sib !== li && sib.classList && sib.classList.contains('has-children')) {
        closeSubmenu(sib);
      }
    });

    // Toggle current
    if (isOpen) closeSubmenu(li);
    else openSubmenu(li);
  }

  function init(root) {
    // Ensure all submenus start hidden for A11y
    root.querySelectorAll('.submenu').forEach(function (ul) {
      ul.hidden = true;
    });

    // Bind toggles
    root.querySelectorAll('.submenu-toggle').forEach(function (btn) {
      btn.removeEventListener('click', handleToggleClick);
      btn.addEventListener('click', handleToggleClick);
    });
  }

  document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('[data-mobile-accordion]').forEach(init);
  });
})();
