(function () {
  'use strict';

  const PATH_RE = /^\/pl\/chatium\/school\/enter\/?$/;
  if (!PATH_RE.test(location.pathname)) return;

  const BODY_CLASS = 'psych-chatium-app-ui';

  const qs = (s, r = document) => r.querySelector(s);

  function loadStyle(href) {
    if (document.querySelector(`link[href="${href}"]`)) return;
    const link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = href;
    document.head.appendChild(link);
  }

  function loadScript(src) {
    if (document.querySelector(`script[src="${src}"]`)) return;
    const script = document.createElement('script');
    script.src = src;
    script.defer = true;
    document.head.appendChild(script);
  }

  function connectAccountTheme() {
    /*
     * Эта страница Chatium не наследует layout аккаунта.
     * Подключаем только ресурсы бокового меню, чтобы она выглядела
     * как остальные пользовательские страницы.
     */
    loadStyle('/pl/layout/97913/1/sidebar_level-1.css');
    loadStyle('/pl/layout/97913/2/sidebar_level-2.css');
    loadScript('/pl/layout/97913/0/sidebar-JS.js');
  }

  function decorate() {
    document.body.classList.add(BODY_CLASS);

    const root = qs('.folder-container-inner-padding');
    if (!root || qs('.psych-chatium-app-shell', root)) return;

    const container = qs('.container.chatium-container.course-content', root);
    if (!container) return;

    container.classList.add('psych-chatium-app-shell');

    const head = qs('.chatium-head-block', container);
    if (head) {
      const h1 = qs('h1', head);
      if (h1) h1.textContent = 'Мобильное приложение';
      head.classList.add('psych-chatium-app-head');
    }

    const row = qs(':scope > .row', container);
    if (row) row.classList.add('psych-chatium-app-grid');

    const qrCol = row?.querySelector('.col-md-5');
    const infoCol = row?.querySelector('.col-md-7');

    if (qrCol) qrCol.classList.add('psych-chatium-app-qr-col');
    if (infoCol) infoCol.classList.add('psych-chatium-app-info-col');

    const qrWidget = qs('.chatium-enter-widget', container);
    if (qrWidget) qrWidget.classList.add('psych-chatium-app-qr-card');

    const qrImage = qs('.code-img', container);
    if (qrImage) qrImage.classList.add('psych-chatium-app-qr');

    if (infoCol) {
      const introText = Array.from(infoCol.childNodes).find(node =>
        node.nodeType === Node.TEXT_NODE && node.textContent.trim()
      );

      if (introText) {
        const lead = document.createElement('p');
        lead.className = 'psych-chatium-app-lead';
        lead.textContent = introText.textContent.trim();
        introText.replaceWith(lead);
      }

      const ol = qs('ol', infoCol);
      if (ol) ol.classList.add('psych-chatium-app-steps');

      const storeLinks = Array.from(infoCol.querySelectorAll('a')).filter(a =>
        /redirectToStore/.test(a.href)
      );

      if (storeLinks.length) {
        const stores = document.createElement('div');
        stores.className = 'psych-chatium-app-stores';

        storeLinks.forEach(a => {
          a.classList.add('psych-chatium-app-store');
          stores.appendChild(a);
        });

        infoCol.appendChild(stores);
      }
    }

    const folderMenu = qs('.folder-menu.screen-viewer-menu');
    if (folderMenu) folderMenu.classList.add('psych-chatium-app-folder-menu');
  }

  function init() {
    connectAccountTheme();
    decorate();

    const observer = new MutationObserver(() => decorate());
    observer.observe(document.body, { childList: true, subtree: true });
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init, { once: true });
  } else {
    init();
  }
})();
