
/* Применяем стили ко всем устройствам — без медиа-запросов */
.danjus-text,
.tn-atom.danjus-text {
  text-align: justify !important;
  text-indent: 0 !important;
  hyphens: auto !important;
  -webkit-hyphens: auto !important;
  -ms-hyphens: auto !important; /* для старых Edge */
  overflow-wrap: break-word !important;
  word-wrap: break-word !important;
  /* Убираем влияние line-height и letter-spacing на переносы */
  line-height: 1.6 !important;
}

/* Защита: не трогаем заголовки и кнопки даже на мобилке */
.danjus-text.t-title,
.danjus-text.h1,
.danjus-text.h2,
.t-btn .danjus-text {
  text-align: inherit !important;
}



(function () {
  const shortWords = [
    'в', 'с', 'к', 'о', 'у', 'и', 'а', 'я',
    'на', 'по', 'за', 'из', 'от', 'до', 'об', 'со', 'ко',
    'без', 'над', 'под', 'для', 'про', 'через', 'при', 'из-за', 'из-под'
  ];
  const pattern = new RegExp(`\\b(${shortWords.map(w => w.replace('-', '\\-')).join('|')})\\s+(\\S)`, 'gi');

  function processTextNode(node) {
    if (node.nodeType !== Node.TEXT_NODE) return;
    const text = node.textContent;
    if (!text || text.length < 10) return;
    const newText = text.replace(pattern, `$1\u00A0$2`);
    if (newText !== text) node.textContent = newText;
  }

  function processElement(el) {
    if (!el || el.nodeType !== Node.ELEMENT_NODE || el.classList.contains('danjus-processed')) return;

    // Пропускаем, если это явно не текст (например, иконка)
    if (el.closest && el.closest('.t-icon, .t-btn, .t-input, .t-slds__bullet')) return;

    // Обрабатываем ВСЕ текстовые узлы внутри
    const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
    let node;
    while (node = walker.nextNode()) {
      processTextNode(node);
    }

    // Принудительно добавляем класс для стилей (на случай, если его не было)
    el.classList.add('danjus-text', 'danjus-processed');
  }

  function applyToAll() {
    // 1. Все элементы с классом danjus-text (включая мобильные версии)
    document.querySelectorAll('.danjus-text').forEach(processElement);

    // 2. Все .tn-atom с длинным текстом (стандартные блоки Tilda)
    document.querySelectorAll('.tn-atom').forEach(el => {
      if (el.textContent.trim().length > 200 && !el.classList.contains('danjus-processed')) {
        processElement(el);
      }
    });

    // 3. Все Zero Blocks — на случай, если вы забыли класс
    document.querySelectorAll('.t-zero').forEach(zero => {
      // Ищем ВСЁ текстовое содержимое, включая вложенные блоки
      const allTextContainers = zero.querySelectorAll('p, div, span, section, article, li, td, blockquote');
      allTextContainers.forEach(el => {
        if (el.textContent.trim().length > 200) {
          processElement(el);
        }
      });
      // И корневой текст Zero Block’а
      if (zero.textContent.trim().length > 200) {
        processElement(zero);
      }
    });
  }

  // === ЗАПУСК НА ВСЕХ УСТРОЙСТВАХ ===
  // Запускаем сразу
  if (document.readyState === 'complete') {
    applyToAll();
  } else {
    window.addEventListener('load', applyToAll);
  }

  // Повтор с задержкой — для lazy-блоков и анимаций (особенно на мобилке)
  [500, 1200, 2500].forEach(ms => setTimeout(applyToAll, ms));

  // MutationObserver — ловит динамические блоки (в т.ч. мобильные версии при ресайзе)
  const observer = new MutationObserver(() => {
    requestAnimationFrame(applyToAll);
  });
  observer.observe(document.body, { childList: true, subtree: true });

  // Дополнительно: перезапуск при изменении ориентации (на мобилке)
  window.addEventListener('orientationchange', () => setTimeout(applyToAll, 600));
})();
