(() => {
  const BREAKPOINTS = [
    { name: 'sm', max: 639 },
    { name: 'md', max: 767 },
    { name: 'lg', max: 1023 },
    { name: 'xl', max: 1279 },
    { name: '2xl', max: Number.POSITIVE_INFINITY }
  ];

  const root = document.documentElement;

  function getBreakpoint(width) {
    for (const bp of BREAKPOINTS) {
      if (width <= bp.max) return bp.name;
    }
    return '2xl';
  }

  function applyResponsiveState() {
    const bp = getBreakpoint(window.innerWidth);
    root.setAttribute('data-vp-breakpoint', bp);
  }

  function optimizeMediaLoading() {
    document.querySelectorAll('img').forEach((img) => {
      if (!img.hasAttribute('loading')) img.setAttribute('loading', 'lazy');
      if (!img.hasAttribute('decoding')) img.setAttribute('decoding', 'async');
    });
  }

  function initCurrentYear() {
    const year = String(new Date().getFullYear());

    document.querySelectorAll('.js-current-year').forEach((el) => {
      el.textContent = year;
    });

    const byId = document.getElementById('current-year');
    if (byId) byId.textContent = year;

    const footerYear = document.getElementById('year-foot');
    if (footerYear) footerYear.textContent = year;
  }

  function initCounters() {
    const counters = document.querySelectorAll('.counter[data-target]');
    if (!counters.length) return;

    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

    const renderFinalValue = (el) => {
      const target = Number.parseFloat(el.getAttribute('data-target') || '0');
      const divisor = Number.parseFloat(el.getAttribute('data-divisor') || '1') || 1;
      const prefix = el.getAttribute('data-prefix') || '';
      const suffix = el.getAttribute('data-suffix') || '';
      const hasDecimals = el.hasAttribute('data-decimals');
      const decimals = hasDecimals ? Math.max(0, Number.parseInt(el.getAttribute('data-decimals') || '0', 10)) : 0;
      const value = target / divisor;
      const display = hasDecimals ? value.toFixed(decimals) : String(Math.round(value));
      el.textContent = `${prefix}${display}${suffix}`;
      el.classList.add('counted');
    };

    if (prefersReducedMotion || !('IntersectionObserver' in window)) {
      counters.forEach(renderFinalValue);
      return;
    }

    const animateCounter = (el) => {
      if (el.classList.contains('counted')) return;

      const target = Number.parseFloat(el.getAttribute('data-target') || '0');
      const divisor = Number.parseFloat(el.getAttribute('data-divisor') || '1') || 1;
      const prefix = el.getAttribute('data-prefix') || '';
      const suffix = el.getAttribute('data-suffix') || '';
      const hasDecimals = el.hasAttribute('data-decimals');
      const decimals = hasDecimals ? Math.max(0, Number.parseInt(el.getAttribute('data-decimals') || '0', 10)) : 0;
      const duration = Math.max(300, Number.parseInt(el.getAttribute('data-duration') || '1500', 10));
      const start = performance.now();

      const tick = (now) => {
        const progress = Math.min((now - start) / duration, 1);
        const eased = 1 - Math.pow(1 - progress, 3);
        const current = (target * eased) / divisor;
        const display = hasDecimals ? current.toFixed(decimals) : String(Math.round(current));
        el.textContent = `${prefix}${display}${suffix}`;

        if (progress < 1) {
          requestAnimationFrame(tick);
          return;
        }

        const finalValue = target / divisor;
        const finalDisplay = hasDecimals ? finalValue.toFixed(decimals) : String(Math.round(finalValue));
        el.textContent = `${prefix}${finalDisplay}${suffix}`;
        el.classList.add('counted');
      };

      requestAnimationFrame(tick);
    };

    const observer = new IntersectionObserver((entries, obs) => {
      entries.forEach((entry) => {
        if (!entry.isIntersecting) return;
        animateCounter(entry.target);
        obs.unobserve(entry.target);
      });
    }, { threshold: 0.35 });

    counters.forEach((el) => observer.observe(el));
  }

  function updateButtonIcon(button, iconName) {
    if (!button) return;

    const currentIcon = button.querySelector('[data-lucide], i, svg');
    if (!currentIcon) return;

    const iconClass = ((currentIcon.getAttribute('class') || 'w-6 h-6')
      .split(/\s+/)
      .filter(Boolean)
      .filter((cls) => cls !== 'lucide' && !cls.startsWith('lucide-'))
      .join(' ')) || 'w-6 h-6';

    button.innerHTML = `<i data-lucide="${iconName}" class="${iconClass}"></i>`;

    if (window.lucide && typeof window.lucide.createIcons === 'function') {
      window.lucide.createIcons();
    }
  }

  function initCheckboxMenus() {
    const menuToggle = document.getElementById('menu-toggle');
    if (!menuToggle) return;

    const closeMenu = () => {
      if (window.innerWidth < 1024) menuToggle.checked = false;
    };

    document.querySelectorAll('.mobile-link').forEach((link) => {
      link.addEventListener('click', closeMenu);
    });

    const checkboxMenu = document.getElementById('mobile-menu');
    if (checkboxMenu) {
      checkboxMenu.querySelectorAll('a[href^="#"]').forEach((link) => {
        link.addEventListener('click', closeMenu);
      });
    }
  }

  function initThoughtLeaderMenu() {
    const burgerBtn = document.getElementById('burger-btn');
    const mobileMenu = document.getElementById('mobile-menu');
    const menuBackdrop = document.getElementById('menu-backdrop');
    if (!burgerBtn || !mobileMenu || !menuBackdrop) return;

    const closeBtn = document.getElementById('menu-close-btn');
    const menuLinks = document.querySelectorAll('.menu-link');

    const openMenu = () => {
      burgerBtn.classList.add('active');
      mobileMenu.classList.add('active');
      menuBackdrop.classList.add('active');
      document.documentElement.style.overflow = 'hidden';
      document.body.style.overflow = 'hidden';
    };

    const closeMenu = () => {
      burgerBtn.classList.remove('active');
      mobileMenu.classList.remove('active');
      menuBackdrop.classList.remove('active');
      document.documentElement.style.overflow = '';
      document.body.style.overflow = '';
    };

    burgerBtn.addEventListener('click', () => {
      if (mobileMenu.classList.contains('active')) closeMenu();
      else openMenu();
    });

    menuBackdrop.addEventListener('click', closeMenu);
    if (closeBtn) closeBtn.addEventListener('click', closeMenu);
    menuLinks.forEach((link) => link.addEventListener('click', closeMenu));
  }

  function initMenuButtonOverlay() {
    const btn = document.getElementById('mobile-menu-button');
    const menu = document.getElementById('mobile-menu-overlay');
    if (!btn || !menu) return;

    let open = false;

    const syncState = () => {
      menu.classList.toggle('translate-x-full', !open);
      updateButtonIcon(btn, open ? 'x' : 'menu');
      btn.setAttribute('aria-expanded', open ? 'true' : 'false');
      btn.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
    };

    const toggle = () => {
      open = !open;
      syncState();
    };

    btn.addEventListener('click', toggle);
    document.querySelectorAll('.mobile-link').forEach((link) => {
      link.addEventListener('click', () => {
        if (!open) return;
        open = false;
        syncState();
      });
    });

    syncState();
  }

  function initMenuBtnCloseMenu() {
    const menuBtn = document.getElementById('menu-btn');
    const closeBtn = document.getElementById('close-menu');
    const mobileMenu = document.getElementById('mobile-menu');
    if (!menuBtn || !closeBtn || !mobileMenu) return;

    const toggleMenu = () => {
      const isClosed = mobileMenu.classList.contains('translate-y-full');
      mobileMenu.classList.toggle('translate-y-full', !isClosed);
      document.body.style.overflow = isClosed ? 'hidden' : '';
    };

    menuBtn.addEventListener('click', toggleMenu);
    closeBtn.addEventListener('click', toggleMenu);
    document.querySelectorAll('.mobile-link').forEach((link) => link.addEventListener('click', () => {
      if (!mobileMenu.classList.contains('translate-y-full')) toggleMenu();
    }));
  }

  function initMenuBtnSidePanel() {
    const menuBtn = document.getElementById('menu-btn');
    const menu = document.getElementById('menu');
    if (!menuBtn || !menu) return;

    let open = false;

    const syncState = () => {
      menu.classList.toggle('translate-x-full', !open);
      updateButtonIcon(menuBtn, open ? 'x' : 'menu');
    };

    menuBtn.addEventListener('click', () => {
      open = !open;
      syncState();
    });

    document.querySelectorAll('.m-link').forEach((link) => {
      link.addEventListener('click', () => {
        if (!open) return;
        open = false;
        syncState();
      });
    });

    syncState();
  }

  function initMobileMenuBtnMenu() {
    const btn = document.getElementById('mobile-menu-btn');
    const menu = document.getElementById('mobile-menu');
    if (!btn || !menu) return;

    const closeBtn = document.getElementById('close-menu-btn') || document.getElementById('mobile-menu-close');

    const isActiveMenu = () => menu.classList.contains('active');
    const isDropMenu = menu.classList.contains('-translate-y-[130%]') || menu.classList.contains('translate-y-0');
    const isOpacityMenu = menu.classList.contains('opacity-0') || menu.classList.contains('opacity-100');

    const setOpen = (open) => {
      if (isActiveMenu() || menu.classList.contains('mobile-menu')) {
        menu.classList.toggle('active', open);
        document.body.style.overflow = open ? 'hidden' : '';
      } else if (isDropMenu) {
        menu.classList.toggle('-translate-y-[130%]', !open);
        menu.classList.toggle('opacity-0', !open);
        menu.classList.toggle('pointer-events-none', !open);
        menu.classList.toggle('translate-y-0', open);
        menu.classList.toggle('opacity-100', open);
      } else if (isOpacityMenu) {
        menu.classList.toggle('opacity-0', !open);
        menu.classList.toggle('pointer-events-none', !open);
        menu.classList.toggle('opacity-100', open);
        menu.classList.toggle('pointer-events-auto', open);
        document.body.style.overflow = open ? 'hidden' : '';
      }

      btn.setAttribute('aria-expanded', open ? 'true' : 'false');
      btn.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
    };

    const isOpen = () => {
      if (menu.classList.contains('mobile-menu')) return menu.classList.contains('active');
      if (isDropMenu) return !menu.classList.contains('-translate-y-[130%]');
      if (isOpacityMenu) return !menu.classList.contains('opacity-0');
      return false;
    };

    const toggle = () => setOpen(!isOpen());
    const close = () => setOpen(false);

    btn.addEventListener('click', toggle);
    if (closeBtn) closeBtn.addEventListener('click', close);

    menu.querySelectorAll('a[href^="#"], .mobile-link').forEach((link) => {
      link.addEventListener('click', close);
    });

    if (isDropMenu) {
      window.addEventListener('resize', () => {
        if (window.innerWidth >= 768) close();
      });
    }
  }

  function initOpenCloseMenuButtons() {
    const mobileMenu = document.getElementById('mobile-menu');
    const openMenuBtn = document.getElementById('open-menu-btn');
    const closeMenuBtn = document.getElementById('close-menu-btn');
    if (!mobileMenu || !openMenuBtn || !closeMenuBtn) return;

    const setOpen = (open) => {
      mobileMenu.classList.toggle('open', open);
      mobileMenu.classList.toggle('translate-x-full', !open);
      mobileMenu.setAttribute('aria-hidden', open ? 'false' : 'true');
      openMenuBtn.setAttribute('aria-expanded', open ? 'true' : 'false');
      document.body.style.overflow = open ? 'hidden' : '';
    };

    openMenuBtn.addEventListener('click', () => setOpen(true));
    closeMenuBtn.addEventListener('click', () => setOpen(false));

    document.querySelectorAll('.mobile-link').forEach((link) => {
      link.addEventListener('click', () => setOpen(false));
    });

    window.addEventListener('keydown', (event) => {
      if (event.key === 'Escape' && mobileMenu.classList.contains('open')) setOpen(false);
    });
  }

  function initMobileMenus() {
    initCheckboxMenus();
    initThoughtLeaderMenu();
    initMenuButtonOverlay();
    initMenuBtnCloseMenu();
    initMenuBtnSidePanel();
    initMobileMenuBtnMenu();
    initOpenCloseMenuButtons();
    initBoardDirectorMenu();
  }

  function initBoardDirectorMenu() {
    const menuBtn = document.getElementById('menuBtn');
    const navOverlay = document.getElementById('nav-overlay');
    if (!menuBtn || !navOverlay) return;

    let open = false;
    const label = menuBtn.querySelector('.label-text');

    const syncState = () => {
      menuBtn.classList.toggle('open', open);
      menuBtn.classList.toggle('text-gold', open);
      navOverlay.classList.toggle('translate-y-[-100%]', !open);
      navOverlay.classList.toggle('translate-y-0', open);
      if (label) label.textContent = open ? 'Close' : 'Menu';
      navOverlay.setAttribute('aria-hidden', open ? 'false' : 'true');
      document.body.style.overflow = open ? 'hidden' : '';
    };

    menuBtn.addEventListener('click', () => {
      open = !open;
      syncState();
    });

    navOverlay.querySelectorAll('a').forEach((link) => {
      link.addEventListener('click', () => {
        if (!open) return;
        open = false;
        syncState();
      });
    });
  }

  function initSmoothAnchorScroll() {
    const anchors = Array.from(document.querySelectorAll('a[href^="#"], a[href*="#"]'));
    if (!anchors.length) return;

    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

    const getScrollOffset = () => {
      const customOffset = Number.parseInt(document.documentElement.getAttribute('data-vp-scroll-offset') || '', 10);
      if (!Number.isNaN(customOffset)) return customOffset;

      const candidates = [
        document.getElementById('main-header'),
        document.getElementById('navbar'),
        document.querySelector('header.fixed'),
        document.querySelector('nav.fixed')
      ].filter(Boolean);

      for (const el of candidates) {
        const rect = el.getBoundingClientRect();
        if (rect.height > 0 && rect.top <= 0) return Math.round(rect.height);
      }

      return 96;
    };

    anchors.forEach((anchor) => {
      if (anchor.hasAttribute('data-no-smooth-scroll')) return;

      anchor.addEventListener('click', (event) => {
        const href = anchor.getAttribute('href') || '';
        const hashIndex = href.indexOf('#');
        if (hashIndex < 0) return;

        const hash = href.slice(hashIndex);
        if (!hash || hash === '#') return;

        if (href.charAt(0) !== '#') {
          const targetUrl = new URL(anchor.href, window.location.href);
          if (targetUrl.pathname !== window.location.pathname || targetUrl.origin !== window.location.origin) return;
        }

        const id = decodeURIComponent(hash.slice(1));
        const target = document.getElementById(id) || document.querySelector(hash);
        if (!target) return;

        event.preventDefault();
        const offset = getScrollOffset();
        const top = Math.max(0, target.getBoundingClientRect().top + window.pageYOffset - offset);
        window.scrollTo({ top, behavior: prefersReducedMotion ? 'auto' : 'smooth' });
      }, { passive: false });
    });
  }

  function initRevealAnimations() {
    const revealItems = Array.from(document.querySelectorAll('.reveal, .reveal-up, .scroll-animate, .scroll-animate-left, .scroll-animate-right'));
    if (!revealItems.length) return;

    const markVisible = (el) => {
      el.classList.add('active');
      el.classList.add('visible');
      el.classList.add('is-visible');
    };

    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
    if (prefersReducedMotion || !('IntersectionObserver' in window)) {
      revealItems.forEach(markVisible);
      return;
    }

    const observer = new IntersectionObserver((entries, obs) => {
      entries.forEach((entry) => {
        if (!entry.isIntersecting) return;
        markVisible(entry.target);
        obs.unobserve(entry.target);
      });
    }, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });

    revealItems.forEach((el) => {
      if (el.classList.contains('active') || el.classList.contains('visible') || el.classList.contains('is-visible')) return;
      observer.observe(el);
    });
  }

  function initReadMoreBlocks() {
    const blocks = Array.from(document.querySelectorAll('[data-readmore]'));
    if (!blocks.length) return;

    const refreshers = [];

    blocks.forEach((block) => {
      const content = block.querySelector('[data-readmore-content]');
      if (!content) return;

      const lines = Math.max(2, Number.parseInt(block.getAttribute('data-readmore-lines') || '4', 10) || 4);
      block.style.setProperty('--vp-readmore-lines', String(lines));

      let toggle = block.querySelector('[data-readmore-toggle]');
      if (!toggle) {
        toggle = document.createElement('button');
        toggle.type = 'button';
        toggle.setAttribute('data-readmore-toggle', '');
        block.appendChild(toggle);
      }

      const moreLabel = block.getAttribute('data-readmore-more') || 'View More';
      const lessLabel = block.getAttribute('data-readmore-less') || 'View Less';
      let isExpanded = false;

      const syncToggleLabel = () => {
        toggle.textContent = isExpanded ? lessLabel : moreLabel;
        toggle.setAttribute('aria-expanded', isExpanded ? 'true' : 'false');
      };

      const setExpanded = (next) => {
        isExpanded = next;
        block.classList.toggle('is-expanded', isExpanded);
        syncToggleLabel();
      };

      toggle.addEventListener('click', () => setExpanded(!isExpanded));

      const refresh = () => {
        if (isExpanded) block.classList.remove('is-expanded');
        const hasOverflow = content.scrollHeight - content.clientHeight > 1;
        toggle.hidden = !hasOverflow;
        if (!hasOverflow) isExpanded = false;
        block.classList.toggle('is-expanded', isExpanded);
        syncToggleLabel();
      };

      refreshers.push(refresh);
      refresh();
    });

    if (!refreshers.length) return;

    const runRefresh = () => refreshers.forEach((fn) => fn());

    if (document.fonts && typeof document.fonts.ready?.then === 'function') {
      document.fonts.ready.then(runRefresh).catch(() => {});
    }

    let resizeTimer;
    window.addEventListener('resize', () => {
      clearTimeout(resizeTimer);
      resizeTimer = setTimeout(runRefresh, 120);
    }, { passive: true });
  }

  function handleResize() {
    applyResponsiveState();
  }

  function init() {
    root.classList.add('vp-js-ready');
    applyResponsiveState();
    optimizeMediaLoading();
    initCurrentYear();
    initCounters();
    initMobileMenus();
    initSmoothAnchorScroll();
    initRevealAnimations();
    initReadMoreBlocks();
    window.addEventListener('resize', handleResize, { passive: true });
  }

  window.VPSystem = {
    applyResponsiveState,
    optimizeMediaLoading,
    initCurrentYear,
    initCounters,
    initMobileMenus,
    initSmoothAnchorScroll,
    initRevealAnimations,
    initReadMoreBlocks
  };

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init, { once: true });
  } else {
    init();
  }
})();