/* GSAP-модернизация панели — субтильно, без правок app.js.
 * Decoupled от showTab: слушаем смену .section.active через MutationObserver.
 * Всё под gsap.matchMedia('no-preference') — при prefers-reduced-motion НЕ анимируем.
 * Оффлайн-safe: если gsap не загрузился — тихий выход, UI без анимаций как раньше. */
(function () {
  if (typeof window.gsap === 'undefined') return;
  gsap.config({ nullTargetWarn: false });

  var mm = gsap.matchMedia();

  mm.add('(prefers-reduced-motion: no-preference)', function () {
    var CARD_SEL = '.card, .stat-card';

    function staggerCards(section) {
      if (!section) return;
      var cards = section.querySelectorAll(CARD_SEL);
      if (!cards.length) return;
      gsap.killTweensOf(cards);
      gsap.fromTo(
        cards,
        { opacity: 0, y: 10 },
        {
          opacity: 1, y: 0, duration: 0.32, stagger: 0.045,
          ease: 'power2.out', overwrite: 'auto',
          clearProps: 'opacity,transform'
        }
      );
    }

    // Карточки появляются стаггером при каждом открытии вкладки.
    var secObserver = new MutationObserver(function (muts) {
      for (var i = 0; i < muts.length; i++) {
        var t = muts[i].target;
        if (t.classList && t.classList.contains('active')) staggerCards(t);
      }
    });
    document.querySelectorAll('.section').forEach(function (s) {
      secObserver.observe(s, { attributes: true, attributeFilter: ['class'] });
    });

    // Всплытие модалок/оверлеев (нечасто → можно чуть выразительнее).
    var bodyObserver = new MutationObserver(function (muts) {
      for (var i = 0; i < muts.length; i++) {
        var added = muts[i].addedNodes;
        for (var j = 0; j < added.length; j++) {
          var n = added[j];
          if (n.nodeType !== 1) continue;
          var box = (n.matches && n.matches('.app-modal-box, .onboarding-overlay__card'))
            ? n
            : (n.querySelector && n.querySelector('.app-modal-box, .onboarding-overlay__card'));
          if (box) {
            gsap.from(box, {
              opacity: 0, scale: 0.96, y: -6, duration: 0.24,
              ease: 'back.out(1.3)', clearProps: 'all'
            });
          }
        }
      }
    });

    function init() {
      // Лёгкий въезд сайдбара + стаггер пунктов меню — один раз на загрузке.
      var side = document.getElementById('sidebar');
      if (side) gsap.from(side, { opacity: 0, x: -12, duration: 0.45, ease: 'power3.out', clearProps: 'all' });
      var links = document.querySelectorAll('.sidebar-nav .nav-link');
      if (links.length) {
        gsap.from(links, {
          opacity: 0, x: -8, duration: 0.3, stagger: 0.025,
          delay: 0.08, ease: 'power2.out', clearProps: 'all'
        });
      }
      // Карточки уже активной (восстановленной) вкладки.
      staggerCards(document.querySelector('.section.active'));
      bodyObserver.observe(document.body, { childList: true, subtree: true });
    }

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', function () { setTimeout(init, 30); });
    } else {
      setTimeout(init, 30);
    }

    return function () {
      secObserver.disconnect();
      bodyObserver.disconnect();
    };
  });
})();
