(function () {
  const API_URL = 'https://avatiah.com/api/latest.php';
  const UPDATE_INTERVAL = 30000; // 30 сек

  const script = document.currentScript;
  const containerId = script.dataset.container || 'avatiah-components';
  const width = script.dataset.width || '100%';
  const height = script.dataset.height || 'auto';
  const theme = script.dataset.theme || 'light';

  let container = document.getElementById(containerId);
  if (!container) {
    container = document.createElement('div');
    container.id = containerId;
    if (script.parentNode) {
      script.parentNode.insertBefore(container, script.nextSibling);
    } else {
      document.body.appendChild(container);
    }
  }

  const isDark = theme === 'dark';
  const bgColor = isDark ? '#1e293b' : '#ffffff';
  const textColor = isDark ? '#f1f5f9' : '#2c3e50';
  const borderColor = isDark ? '#334155' : '#e2e8f0';

  container.style.cssText = `
    width: ${width};
    height: ${height};
    background: ${bgColor};
    color: ${textColor};
    border-radius: 16px;
    padding: 1.5rem;
    box-shadow: 0 6px 20px rgba(0,0,0,0.15);
    border: 1px solid ${borderColor};
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-size: 14px;
    line-height: 1.6;
    overflow: hidden;
  `;

  // Веса из вашего метода (нормализованные)
  const weights = {
    pizza: 22.1,
    oil: 17.7,
    media: 13.3,
    navy: 10.6,
    vip: 8.8,
    gov: 7.1,
    gold: 6.2,
    energy: 5.3,
    cyber: 4.4,
    social: 4.4
  };

  const icons = {
    pizza: '🍕', oil: '🛢️', media: '📰', navy: '🚢',
    vip: '✈️', gov: '🏛️', gold: '💎', energy: '⚡',
    cyber: '🔒', social: '📱'
  };

  const names = {
    pizza: 'Индекс ночной активности (Пентагон/Белый дом)',
    oil: 'Волатильность нефти Brent',
    media: 'Медиа-активность об Израиле',
    navy: 'Активность ВМС США у берегов Израиля',
    vip: 'Дипломатические рейсы в Израиль',
    gov: 'Активность правительства США по Израилю',
    gold: 'Волатильность золота',
    energy: 'Энергетические рынки (газ)',
    cyber: 'Кибератаки на Израиль и союзников',
    social: 'Социальные медиа лидеров'
  };

  function render(data) {
    if (!data || !data.components) {
      container.innerHTML = `<div style="color: #e74c3c;">❌ Нет данных</div>`;
      return;
    }

    const c = data.components;
    let html = `
      <h3 style="font-size: 1.6rem; margin-bottom: 1.2rem; color: ${textColor};">
        🔍 Из чего состоит индекс безопасности
      </h3>
      <p style="margin-bottom: 1.5rem; opacity: 0.9;">
        Индекс рассчитывается на основе 10 ключевых OSINT-факторов. Все данные обновляются в реальном времени.
      </p>
      <div style="display: grid; gap: 1.2rem;">
    `;

    Object.keys(weights).forEach(id => {
      const raw = c[id]?.raw || 0;
      const score = c[id]?.score || 0;
      const weight = weights[id];
      const impact = (weight / 100 * score).toFixed(2);
      const icon = icons[id];
      const name = names[id];

      // Цвет по весу
      let weightClass = 'low';
      if (weight >= 15) weightClass = 'critical';
      else if (weight >= 10) weightClass = 'high';
      else if (weight >= 5) weightClass = 'medium';

      const weightColor = {
        critical: '#c0392b',
        high: '#e74c3c',
        medium: '#f39c12',
        low: '#3498db'
      }[weightClass];

      // Форматирование значения
      let valueDisplay = raw.toFixed(1);
      if (id === 'navy') valueDisplay = `${raw.toFixed(0)} группы`;
      else if (id === 'vip') valueDisplay = `${raw.toFixed(0)} рейсов`;
      else if (id === 'gov') valueDisplay = `${raw.toFixed(0)} события`;
      else if (['cyber', 'social'].includes(id)) valueDisplay = `Уровень ${raw.toFixed(0)}/5`;
      else if (['oil', 'gold', 'energy'].includes(id)) valueDisplay = `+${raw.toFixed(0)}%`;

      html += `
        <div style="
          background: ${isDark ? 'rgba(255,255,255,0.05)' : '#f8f9fa'};
          border-radius: 12px;
          padding: 1.2rem;
          border-left: 4px solid ${weightColor};
        ">
          <div style="display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 0.8rem;">
            <div style="font-weight: bold; font-size: 1.1rem; color: ${textColor}; display: flex; align-items: center; gap: 0.5rem;">
              <span style="font-size: 1.5rem;">${icon}</span>
              ${name}
            </div>
            <span style="
              background: ${weightColor};
              color: white;
              padding: 0.3rem 0.8rem;
              border-radius: 20px;
              font-weight: bold;
              font-size: 0.9rem;
            ">${weight}%</span>
          </div>
          <div style="margin: 0.8rem 0;">
            <strong>Текущее значение:</strong> ${valueDisplay}
          </div>
          <div style="background: ${isDark ? 'rgba(231,76,60,0.1)' : 'rgba(231,76,60,0.05)'}; padding: 0.8rem; border-radius: 8px; margin-top: 0.5rem;">
            <strong>Вклад в индекс:</strong> ${impact} балла (${weight}% × ${score.toFixed(1)})
          </div>
        </div>
      `;
    });

    html += `</div>`;
    container.innerHTML = html;
  }

  function fetchData() {
    fetch(API_URL)
      .then(res => {
        if (!res.ok) throw new Error('Network error');
        return res.json();
      })
      .then(render)
      .catch(err => {
        console.error('Avatiah Components Widget error:', err);
        container.innerHTML = `<div style="color: #e74c3c;">⚠️ Ошибка загрузки данных</div>`;
      });
  }

  fetchData();
  setInterval(fetchData, UPDATE_INTERVAL);
})();