<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Avatiah Security Index: геополитический риск Израиль, OSINT индекс, мониторинг ситуации на Ближнем Востоке">
    <meta name="keywords" content="Индекс напряженности Израиль, геополитический риск Ближний Восток, OSINT индекс, военные корабли Израиль, киберугрозы Израиль">
    <title>Avatiah Security Index: Израиль</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script>
    <style>
        :root {
            --bg-dark: #0f1419;
            --card-bg: #1a2332;
            --card-hover: #2a3a4a;
            --text-primary: #ffffff;
            --text-secondary: #8899a6;
            --risk-low: #27ae60;
            --risk-medium: #f39c12;
            --risk-high: #e74c3c;
            --risk-critical: #8e44ad;
        }
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        body {
            background: var(--bg-dark);
            color: var(--text-primary);
            min-height: 100vh;
            padding: 1rem;
        }
        .container {
            max-width: 1600px;
            margin: 0 auto;
        }
        .header {
            text-align: center;
            margin-bottom: 2rem;
            background: rgba(26, 35, 50, 0.7);
            padding: 2rem;
            border-radius: 15px;
            backdrop-filter: blur(10px);
            border: 1px solid var(--card-hover);
        }
        .header h1 {
            font-size: 2.8rem;
            margin-bottom: 0.5rem;
            text-shadow: 0 2px 4px rgba(0,0,0,0.5);
        }
        .focus-region {
            background: rgba(231, 76, 60, 0.15);
            border: 1px solid var(--risk-high);
            padding: 1rem;
            border-radius: 10px;
            margin-top: 1rem;
            display: inline-block;
        }
        /* === ГЛАВНЫЙ ИНДЕКС === */
        .main-index-section {
            text-align: center;
            margin: 2rem 0;
            position: relative;
        }
        .main-index-value {
            font-size: 7rem;
            font-weight: bold;
            background: linear-gradient(90deg, var(--risk-low), var(--risk-medium), var(--risk-high), var(--risk-critical));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            margin: 1rem 0;
            text-shadow: 0 4px 8px rgba(0,0,0,0.3);
        }
        .risk-scale {
            height: 20px;
            background: linear-gradient(to right, 
                var(--risk-low) 0%, 
                var(--risk-medium) 35%, 
                var(--risk-high) 70%, 
                var(--risk-critical) 100%);
            border-radius: 10px;
            margin: 1.5rem auto;
            max-width: 800px;
            position: relative;
            box-shadow: 0 2px 5px rgba(0,0,0,0.3);
        }
        .risk-marker {
            position: absolute;
            top: -10px;
            transform: translateX(-50%);
            font-size: 2rem;
            animation: bounce 2s infinite;
        }
        @keyframes bounce {
            0%, 100% { transform: translateX(-50%) translateY(0); }
            50% { transform: translateX(-50%) translateY(-8px); }
        }
        /* === ВРЕМЕННАЯ ШКАЛА === */
        .time-filter {
            display: flex;
            justify-content: center;
            gap: 1rem;
            margin: 1.5rem 0;
            flex-wrap: wrap;
        }
        .time-btn {
            background: var(--card-bg);
            color: var(--text-secondary);
            border: 1px solid var(--card-hover);
            padding: 0.5rem 1.2rem;
            border-radius: 20px;
            cursor: pointer;
            transition: all 0.3s ease;
        }
        .time-btn.active, .time-btn:hover {
            background: var(--risk-medium);
            color: white;
            border-color: var(--risk-medium);
        }
        /* === КАРТОЧКИ ПОКАЗАТЕЛЕЙ === */
        .components-section {
            background: var(--card-bg);
            border-radius: 15px;
            padding: 2rem;
            margin: 2rem 0;
            box-shadow: 0 5px 15px rgba(0,0,0,0.3);
            border: 1px solid var(--card-hover);
        }
        .components-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
            gap: 1.5rem;
        }
        .component-card {
            background: rgba(30, 40, 55, 0.6);
            border-radius: 12px;
            padding: 1.5rem;
            transition: all 0.3s ease;
            cursor: pointer;
            border: 1px solid var(--card-hover);
        }
        .component-card:hover {
            transform: translateY(-3px);
            background: rgba(40, 55, 75, 0.7);
            box-shadow: 0 5px 15px rgba(0,0,0,0.4);
            border-color: #4a5568;
        }
        .component-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 1rem;
        }
        .component-name {
            font-size: 1.2rem;
            font-weight: bold;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }
        .component-icon {
            font-size: 1.5rem;
        }
        .component-weight {
            background: var(--risk-medium);
            color: white;
            padding: 0.3rem 0.8rem;
            border-radius: 15px;
            font-size: 0.9rem;
            font-weight: bold;
        }
        .mini-chart-container {
            height: 60px;
            margin: 1rem 0;
            opacity: 0.8;
        }
        .component-current {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: 1rem;
            padding-top: 1rem;
            border-top: 1px solid var(--card-hover);
        }
        .current-value {
            font-size: 1.8rem;
            font-weight: bold;
        }
        .trend-indicator {
            display: flex;
            align-items: center;
            gap: 0.3rem;
            font-size: 1rem;
        }
        .trend-up { color: var(--risk-high); }
        .trend-down { color: var(--risk-low); }
        /* === МОБИЛЬНАЯ АДАПТАЦИЯ === */
        @media (max-width: 768px) {
            .components-grid {
                grid-template-columns: 1fr;
            }
            .main-index-value {
                font-size: 5rem;
            }
            .header h1 {
                font-size: 2rem;
            }
        }
        /* === МОДАЛЬНОЕ ОКНО === */
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.8);
            z-index: 1000;
            align-items: center;
            justify-content: center;
        }
        .modal-content {
            background: var(--card-bg);
            border-radius: 15px;
            padding: 2rem;
            max-width: 800px;
            width: 90%;
            border: 1px solid var(--card-hover);
            max-height: 80vh;
            overflow-y: auto;
        }
        .close-modal {
            float: right;
            font-size: 1.5rem;
            cursor: pointer;
            color: var(--text-secondary);
        }
        .close-modal:hover {
            color: white;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>🎯 Avatiah Security Index: Израиль</h1>
            <p class="subtitle">Комплексный анализ геополитической ситуации в режиме реального времени</p>
            <div class="focus-region">
                <strong>🔴 Фокус региона:</strong> Израиль и угрозы его безопасности
            </div>
        </div>

        <!-- ГЛАВНЫЙ ИНДЕКС -->
        <div class="main-index-section">
            <div class="main-index-value" id="main-index-value">-- / 10</div>
            <div class="risk-scale">
                <div class="risk-marker" id="risk-marker">▼</div>
            </div>
            <div id="index-status" style="font-size: 1.5rem; margin-top: 1rem; font-weight: bold;"></div>
        </div>

        <!-- ВРЕМЕННАЯ ШКАЛА -->
        <div class="time-filter">
            <button class="time-btn active" data-period="24h">24 часа</button>
            <button class="time-btn" data-period="week">Неделя</button>
            <button class="time-btn" data-period="month">Месяц</button>
            <button class="time-btn" data-period="year">Год</button>
        </div>

        <!-- ПОКАЗАТЕЛИ -->
        <div class="components-section">
            <h2 class="component-title">🔍 Из чего состоит индекс безопасности</h2>
            <div class="components-grid" id="components-grid">
                <!-- Карточки будут сгенерированы JS -->
            </div>
        </div>
    </div>

    <!-- МОДАЛЬНОЕ ОКНО -->
    <div class="modal" id="detailModal">
        <div class="modal-content">
            <span class="close-modal" onclick="closeModal()">&times;</span>
            <h2 id="modal-title">Детали показателя</h2>
            <div id="modal-content"></div>
            <div class="chart-container" style="height: 300px; margin-top: 1rem;">
                <canvas id="detailChart"></canvas>
            </div>
        </div>
    </div>

    <script>
        // Данные для мини-графиков (симуляция)
        function generateMiniData() {
            const data = [];
            for (let i = 0; i < 24; i++) {
                data.push(Math.random() * 10);
            }
            return data;
        }

        // Рендер карточек показателей
        function renderComponents(components) {
            const container = document.getElementById('components-grid');
            container.innerHTML = '';
            
            const factors = [
                { id: 'pizza', name: 'Индекс ночной активности', icon: '🍕', weight: '22.1%' },
                { id: 'oil', name: 'Волатильность нефти Brent', icon: '🛢️', weight: '17.7%' },
                { id: 'media', name: 'Медиа-активность об Израиле', icon: '📰', weight: '13.3%' },
                { id: 'navy', name: 'Активность ВМС США', icon: '🚢', weight: '10.6%' },
                { id: 'vip', name: 'Дипломатические рейсы', icon: '✈️', weight: '8.8%' },
                { id: 'gov', name: 'Активность правительства США', icon: '🏛️', weight: '7.1%' },
                { id: 'gold', name: 'Волатильность золота', icon: '💎', weight: '6.2%' },
                { id: 'cyber', name: 'Кибератаки', icon: '🔒', weight: '4.4%' },
                { id: 'energy', name: 'Энергетические рынки', icon: '⚡', weight: '5.3%' },
                { id: 'social', name: 'Соцсети лидеров', icon: '📱', weight: '4.4%' }
            ];

            factors.forEach(factor => {
                const value = components[factor.id]?.raw || 0;
                const score = components[factor.id]?.score || 0;
                const miniData = generateMiniData();
                const trend = Math.random() > 0.5 ? 'up' : 'down';
                
                const card = document.createElement('div');
                card.className = 'component-card';
                card.innerHTML = `
                    <div class="component-header">
                        <div class="component-name">
                            <span class="component-icon">${factor.icon}</span>
                            ${factor.name}
                        </div>
                        <div class="component-weight">${factor.weight}</div>
                    </div>
                    <div class="mini-chart-container">
                        <canvas id="mini-chart-${factor.id}"></canvas>
                    </div>
                    <div class="component-current">
                        <div class="current-value">${value.toFixed(1)}</div>
                        <div class="trend-indicator ${trend === 'up' ? 'trend-up' : 'trend-down'}">
                            ${trend === 'up' ? '▲' : '▼'} 
                            <span>${Math.abs((Math.random() * 10).toFixed(1))}%</span>
                        </div>
                    </div>
                `;
                container.appendChild(card);

                // Инициализация мини-графика
                const ctx = document.getElementById(`mini-chart-${factor.id}`).getContext('2d');
                new Chart(ctx, {
                    type: 'line',
                    data: {
                        labels: Array.from({length: 24}, (_, i) => i),
                        datasets: [{
                            data: miniData,
                            borderColor: trend === 'up' ? '#e74c3c' : '#27ae60',
                            borderWidth: 2,
                            fill: false,
                            tension: 0.4
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        scales: { x: { display: false }, y: { display: false } },
                        plugins: { legend: { display: false } },
                        elements: { point: { radius: 0 } }
                    }
                });

                // Обработчик клика
                card.addEventListener('click', () => openDetailModal(factor, value, score));
            });
        }

        // Модальное окно
        function openDetailModal(factor, value, score) {
            document.getElementById('modal-title').textContent = factor.name;
            document.getElementById('modal-content').innerHTML = `
                <p><strong>Текущее значение:</strong> ${value.toFixed(1)}</p>
                <p><strong>Влияние на индекс:</strong> ${(parseFloat(factor.weight) * score / 10).toFixed(2)} баллов</p>
                <p><strong>Источники:</strong> ${getSources(factor.id)}</p>
                <div style="margin-top: 1rem;">
                    <h3>Исторический контекст</h3>
                    <p>Максимальное значение: 5.2x (июнь 2025, перед войной Иран-Израиль)</p>
                    <p>Минимальное значение: 1.0x (январь 2020, период стабильности)</p>
                </div>
                <div style="margin-top: 1rem;">
                    <h3>Что делают аналитики</h3>
                    <p>При значении >3.5x активируется команда быстрого реагирования для мониторинга AAL 3.</p>
                </div>
            `;
            document.getElementById('detailModal').style.display = 'flex';
        }

        function closeModal() {
            document.getElementById('detailModal').style.display = 'none';
        }

        // Источники для каждого фактора
        function getSources(factorId) {
            const sources = {
                pizza: 'whitehouse.gov, defense.gov',
                oil: 'Bloomberg, Reuters, ICE Futures',
                media: 'GDELT Project, News API',
                navy: 'navy.mil, USNI News, AIS-данные',
                vip: 'FlightRadar24, ADS-B Exchange',
                gov: 'WhiteHouse.gov, Congress.gov',
                gold: 'Bloomberg, Kitco, CME Group',
                cyber: 'US-CERT, ENISA, Threat Intelligence',
                energy: 'ICE, EEX, Bloomberg Energy',
                social: 'Twitter/X API, Telegram'
            };
            return sources[factorId] || 'OSINT-источники';
        }

        // Обновление главного индекса
        function updateMainIndex(index, aal) {
            document.getElementById('main-index-value').textContent = `${index.toFixed(1)} / 10`;
            
            // Позиция маркера на шкале риска
            const marker = document.getElementById('risk-marker');
            const scaleWidth = document.querySelector('.risk-scale').offsetWidth;
            const markerPosition = (index / 10) * scaleWidth;
            marker.style.left = `${markerPosition}px`;
            
            // Статус AAL
            let statusText;
            if (aal === 5) statusText = "НОРМАЛЬНАЯ СИТУАЦИЯ (AAL 5)";
            else if (aal === 4) statusText = "ПОВЫШЕННАЯ УГРОЗА (AAL 4)";
            else if (aal === 3) statusText = "ВЫСОКАЯ УГРОЗА (AAL 3)";
            else if (aal === 2) statusText = "КРИТИЧЕСКАЯ УГРОЗА (AAL 2)";
            else statusText = "МАКСИМАЛЬНАЯ УГРОЗА (AAL 1)";
            
            document.getElementById('index-status').textContent = statusText;
            document.getElementById('index-status').style.color = 
                aal === 5 ? '#27ae60' : 
                aal === 4 ? '#f39c12' : 
                aal === 3 ? '#e67e22' : 
                aal === 2 ? '#e74c3c' : '#8e44ad';
        }

        // Загрузка данных
        async function loadRealData() {
            try {
                const response = await fetch('api/latest.php');
                if (!response.ok) throw new Error(`HTTP ${response.status}`);
                const data = await response.json();
                
                updateMainIndex(data.security_index, data.aal_level);
                renderComponents(data.components);
                
            } catch (error) {
                console.error('Ошибка загрузки данных:', error);
            }
        }

        // Инициализация
        document.addEventListener('DOMContentLoaded', () => {
            loadRealData();
            setInterval(loadRealData, 30000);
            
            // Обработчики временной шкалы
            document.querySelectorAll('.time-btn').forEach(btn => {
                btn.addEventListener('click', function() {
                    document.querySelectorAll('.time-btn').forEach(b => b.classList.remove('active'));
                    this.classList.add('active');
                    // Здесь можно добавить логику загрузки данных за выбранный период
                });
            });
        });
    </script>
</body>
</html>