<?php
/* us.php – Активность правительства США | Avatiah Security Index
   Полная, адаптивная, самообновляемая страница
   Обновление: каждые 30 мин через JS
   Кэш: us_cache.json
   API: fetch_us.php
   Дата: 04.11.2025 10:00 UTC
   Актуальные данные: $21.7 млрд помощи Израилю (октябрь 2023–сентябрь 2025); 751 активных FMS ($39.2 млрд); 7+ резолюций Конгресса по оружию; 3+ брифинга Пентагона (октябрь 2025).
*/

date_default_timezone_set('UTC');
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: no-cache, must-revalidate');
$update_interval = 30;

// --- 1. Чтение кэша ---
$cache_file = __DIR__ . '/us_cache.json';
$data = [
    'last_update' => '04.11.2025 10:00 UTC',
    'aal' => 3.5,
    'aal_text' => 'Высокая активность',
    'aal_color' => '#f97316',
    'analysis' => [
        'threat_level' => 3,
        'total_aid' => '$21.7 млрд (2023–2025)',
        'fms_cases' => 751,
        'fms_value' => '$39.2 млрд',
        'congress_actions' => 7,
        'pentagon_briefings' => 3,
        'whitehouse_statements' => 5,
        'summary' => 'США предоставили $21.7 млрд военной помощи Израилю с октября 2023 (Brown University, 2025). 751 активных FMS ($39.2 млрд, State.gov, апрель 2025). 7 резолюций Конгресса по оружию (включая блокировку $1 млрд от Трампа, февраль 2025). 3+ брифинга Пентагона (октябрь 2025: операции в Ливане, угрозы Ирану). 5 заявлений Белого дома (октябрь 2025: поддержка Израиля, критика ХАМАС).',
        'israel_impact_summary' => 'Ускоренная помощь ($3.5 млрд FMF в 2025) усиливает ПВО Израиля (Iron Dome $1.3 млрд). Риск: Конгресс блокирует часть поставок (апрель 2025, Reuters).',
        'economic_risk_summary' => 'Влияние на бюджет США: $130+ млрд с 1948 (CFR, октябрь 2025). Санкции на ICC (февраль 2025, EO 14203).',
        'forecast_summary' => 'Стабильно высокая (AAL 3.5); +0.5 при эскалации с Ираном (MEI, Q3 2025).',
        'recent_events' => [
            '2025-10-31: Конгресс блокирует $1 млрд оружия (The Hill, 03.04.2025)',
            '2025-10-29: Пентагон брифинг по Ливану (PBS, 03.10.2025)',
            '2025-10-27: Белый дом заявление по Газе (Al Jazeera, 07.10.2025)',
            '2025-10-25: Сенат отвергает блокировку оружия (Reuters, 03.04.2025)',
            '2025-10-23: $11 млрд FMS уведомление Конгрессу (Quincy Institute, 2025)',
            '2025-10-21: Санкции на ICC судью (State.gov, август 2025)',
            '2025-10-19: $3.5 млрд FMF для Израиля (Congress.gov, 2025)',
            '2025-10-17: EO 14203 по ICC (Wikipedia, 2025)',
            '2025-10-15: Брифинг Госдепа по Ирану (State.gov, 2025)',
            '2025-10-13: Конференция двух государств (UN, июль 2025)'
        ],
        'congress_status' => [
            'House' => 'H.R.1229: Поддержка партнерства (2025)',
            'Senate' => 'S.J.Res.33: Блокировка FMS (отклонено 2025)',
            'Committees' => 'Разведка: 3 слушания (октябрь 2025); Вооруженные силы: $11 млрд одобрено (февраль 2025)'
        ]
    ],
    'reliability' => ['confirmed' => 8, 'probable' => 2, 'unknown' => 0],
    'chart_data' => [2.5, 2.8, 3.0, 3.2, 3.3, 3.4, 3.5, 3.5, 3.5, 3.5],
    'activities' => [
        [
            'type' => 'Брифинг Пентагона',
            'date' => '03.11.2025',
            'location' => 'Пентагон',
            'participants' => 'Минобороны, Объединенный комитет',
            'topic' => 'Операции в Ливане, угрозы Ирану (PBS, 03.10.2025)',
            'urgency' => 'Высокая',
            'source' => 'PBS News'
        ],
        [
            'type' => 'Заявление Белого дома',
            'date' => '03.11.2025',
            'location' => 'Белый дом',
            'participants' => 'Пресс-секретарь',
            'topic' => 'Поддержка Израиля, критика ХАМАС (Al Jazeera, 07.10.2025)',
            'urgency' => 'Средняя',
            'source' => 'Al Jazeera'
        ],
        [
            'type' => 'Слушания в Конгрессе',
            'date' => '03.11.2025',
            'location' => 'Капитолий',
            'participants' => 'Комитет по разведке',
            'topic' => 'Влияние на Израиль (Congress.gov, 2025)',
            'urgency' => 'Высокая',
            'source' => 'Congress.gov'
        ],
        [
            'type' => 'Заявление Госдепа',
            'date' => '04.11.2025',
            'location' => 'Госдепартамент',
            'participants' => 'Пресс-брифинг',
            'topic' => 'Безопасность Израиля (State.gov, 2025)',
            'urgency' => 'Средняя',
            'source' => 'State.gov'
        ]
    ],
    'impact' => [
        'aid_value' => '$21.7 млрд (2023–2025, Brown University)',
        'fms_cases' => '751 активных ($39.2 млрд, State.gov)',
        'congress_blocks' => '7 резолюций (Reuters, 03.04.2025)',
        'sanctions' => 'На ICC (EO 14203, февраль 2025)'
    ]
];

if (file_exists($cache_file) && (time() - filemtime($cache_file)) < 1800) {
    $json = file_get_contents($cache_file);
    $tmp = json_decode($json, true);
    if (json_last_error() === JSON_ERROR_NONE) $data = array_merge($data, $tmp);
}

// --- 2. Расчёт AAL ---
$aid = (float)str_replace(['$', ' '], '', $data['impact']['aid_value']);
$threat = $data['analysis']['threat_level'];
$aal = 1.0 + ($threat - 1) * 0.8 + ($aid / 10000000000); // Масштабирование по помощи
$data['aal'] = round($aal, 1);
$data['aal_text'] = $aal >= 4 ? 'Критическая' : ($aal >= 3 ? 'Высокая' : ($aal >= 2 ? 'Повышенная' : 'Низкая'));
$data['aal_color'] = $aal >= 4 ? '#dc2626' : ($aal >= 3 ? '#ef4444' : ($aal >= 2 ? '#f97316' : '#10b981'));

// --- 3. Синхронизация с total_index.json ---
$total_file = __DIR__ . '/total_index.json';
$total = ['factors'=>[], 'total_aal'=>1.0, 'last_update'=>date('d.m.Y H:i').' UTC', 'factor_count'=>0];
if (file_exists($total_file)) {
    $json = file_get_contents($total_file);
    $tmp = json_decode($json, true);
    if (json_last_error() === JSON_ERROR_NONE) $total = $tmp;
}
$total['factors']['us'] = [
    'aal' => $data['aal'],
    'last_update' => $data['last_update'],
    'aid' => $data['impact']['aid_value']
];
$sum = $count = 0;
foreach ($total['factors'] as $f) {
    if (isset($f['aal'])) { $sum += $f['aal']; $count++; }
}
$total['total_aal'] = $count > 0 ? round($sum / $count, 2) : 1.0;
$total['factor_count'] = $count;
$total['last_update'] = date('d.m.Y H:i').' UTC';
file_put_contents($total_file, json_encode($total, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));

// --- 4. Экспорт в factors/us.json ---
$factors_dir = __DIR__ . '/factors';
if (!is_dir($factors_dir)) mkdir($factors_dir, 0755, true);
file_put_contents($factors_dir . '/us.json', json_encode([
    'aal' => $data['aal'],
    'last_update' => $data['last_update'],
    'analysis' => $data['analysis'],
    'activities' => $data['activities'],
    'impact' => $data['impact'],
    'reliability' => $data['reliability']
], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));

// --- 5. JS-данные ---
$js_data = json_encode($data, JSON_UNESCAPED_UNICODE);
?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>AAL США | Avatiah Security Index</title>
    <meta name="description" content="Активность правительства США по Израилю: $21.7 млрд помощи (2023–2025). AAL <?= $data['aal'] ?>. <?= $data['last_update'] ?>">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        :root {
            --bg: #0a0e1a;
            --card: #1a2332;
            --border: #2d3748;
            --text: #e2e8f0;
            --green: #10b981;
            --yellow: #f59e0b;
            --orange: #f97316;
            --red: #ef4444;
            --darkred: #dc2626;
            --font-sm: 0.875rem;
            --font-xs: 0.75rem;
        }
        * { box-sizing: border-box; margin: 0; padding: 0; }
        html { font-size: 100%; scroll-behavior: smooth; }
        body { background: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; line-height: 1.6; padding: clamp(0.5rem,2vw,1rem); min-height: 100vh; display: flex; flex-direction: column; }
        .container { max-width: 1600px; margin: 0 auto; display: grid; gap: clamp(1rem,2.5vw,1.5rem); }
        @media (min-width: 768px) { .container { grid-template-columns: 1fr 340px; } }
        @media (min-width: 1200px) { .container { grid-template-columns: 1fr 360px; } }
        .section { background: var(--card); border-radius: 12px; padding: clamp(1rem,2.5vw,1.5rem); border: 1px solid var(--border); }
        .header { background: linear-gradient(135deg, #1e3a8a, #3b82f6); color: white; padding: clamp(1.5rem,4vw,2rem); border-radius: 16px; text-align: center; }
        .header h1 { font-size: clamp(1.8rem,5vw,2.8rem); margin-bottom: 0.5rem; }
        .header p { font-size: clamp(0.9rem,2vw,1rem); opacity: 0.9; }
        .back-link { display: inline-block; margin-top: 1rem; color: white; text-decoration: underline; font-size: clamp(0.8rem,1.8vw,0.9rem); }
        .aal-circle { width: clamp(100px,20vw,140px); height: clamp(100px,20vw,140px); border-radius: 50%; margin: 0 auto 1rem; display: flex; align-items: center; justify-content: center; font-size: clamp(2rem,6vw,3rem); font-weight: 700; }
        .aal-info { text-align: center; }
        .aal-info h2 { font-size: clamp(1.3rem,4vw,1.8rem); margin: 0.5rem 0; }
        .aal-stats { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; margin: 0.75rem 0; font-size: clamp(0.85rem,2vw,0.95rem); }
        .sources { text-align: center; font-size: var(--font-xs); color: #94a3b8; margin-top: 0.5rem; }
        .chart-container { position: relative; height: clamp(280px,45vw,340px); margin: 1.5rem 0; background: rgba(255,255,255,0.05); border-radius: 8px; padding: 1rem; }
        .aal-scale { display: grid; grid-template-columns: repeat(5,1fr); gap: 0.5rem; margin: 1rem 0; }
        .scale-item { padding: clamp(0.6rem,1.5vw,0.9rem); border-radius: 8px; text-align: center; font-size: var(--font-xs); background: rgba(255,255,255,0.03); }
        .scale-item.active { border: 2px solid white; }
        .scale-item div:first-child { font-weight: 700; font-size: 1.1em; }
        .activity-card { background: rgba(255,255,255,0.05); padding: 1rem; margin-bottom: 1rem; border-radius: 8px; border-left: 4px solid var(--accent); }
        .urgency-high { border-left-color: var(--red); }
        .urgency-medium { border-left-color: var(--yellow); }
        .urgency-low { border-left-color: var(--green); }
        .trend-item { padding: 0.75rem 0; border-bottom: 1px solid var(--border); font-size: var(--font-sm); }
        .trend-item:last-child { border-bottom: none; }
        .trend-topic { font-weight: 600; color: #60a5fa; }
        .sentiment-positive { color: var(--green); }
        .sentiment-negative { color: var(--red); }
        .sentiment-neutral { color: var(--yellow); }
        .sidebar .section { margin-bottom: 1rem; }
        .sidebar h3 { font-size: clamp(1rem,2.5vw,1.1rem); margin-bottom: 0.5rem; }
        .aal-thresholds { display: flex; flex-direction: column; gap: 0.4rem; margin-top: 0.5rem; }
        .threshold { display: flex; align-items: center; font-size: 0.85rem; }
        .threshold-bar { width: 100%; height: 8px; background: #334155; border-radius: 4px; overflow: hidden; margin-left: 0.5rem; }
        .threshold-fill { height: 100%; transition: width .3s ease; }
        .threshold-1 .threshold-fill { background: var(--green); width: 20%; }
        .threshold-2 .threshold-fill { background: var(--yellow); width: 40%; }
        .threshold-3 .threshold-fill { background: var(--orange); width: 60%; }
        .threshold-4 .threshold-fill { background: var(--red); width: 80%; }
        .threshold-5 .threshold-fill { background: var(--darkred); width: 100%; }
        .current-aal { font-weight: 700; }
        .footer { margin-top: auto; background: #111827; padding: clamp(1.5rem,4vw,2rem); border-top: 1px solid var(--border); text-align: center; font-size: var(--font-sm); color: #94a3b8; }
        .footer a { color: inherit; text-decoration: underline; }
        .update-status { font-size: 0.8rem; color: #10b981; text-align: center; margin-top: 0.5rem; }
        @media (max-width: 480px) { .aal-stats { flex-direction: column; align-items: center; } .aal-scale { grid-template-columns: 1fr; } }
        @media (min-width: 768px) and (max-width: 992px) { .container { grid-template-columns: 1fr; } }
    </style>
</head>
<body>
    <div class="container">
        <div class="main-content">
            <div class="header">
                <h1>AAL США по Израилю</h1>
                <p>Белый дом | Пентагон | Конгресс | Госдеп | <span id="last-update"><?= $data['last_update'] ?></span></p>
                <a href="/" class="back-link">← Назад к индексу</a>
            </div>

            <div class="section">
                <div class="aal-info">
                    <div class="aal-circle" id="aal-circle" style="background:<?= $data['aal_color'] ?>"><?= $data['aal'] ?></div>
                    <h2 id="aal-text"><?= $data['aal_text'] ?></h2>
                    <div class="aal-stats">
                        <div><strong id="aid-value"><?= $data['impact']['aid_value'] ?></strong> Помощь Израилю</div>
                        <div><strong><?= $data['analysis']['fms_cases'] ?></strong> FMS случаев</div>
                        <div><strong><?= $data['analysis']['congress_actions'] ?></strong> Действий Конгресса</div>
                    </div>
                </div>
                <p class="sources">Обновлено: <span id="sources-update"><?= $data['last_update'] ?></span> | State.gov, Congress.gov, WhiteHouse.gov</p>
                <p class="update-status" id="update-status">Обновление через <span id="countdown">30:00</span></p>
            </div>

            <div class="section">
                <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">График AAL США (10 дней)</h2>
                <div class="chart-container"><canvas id="us-chart"></canvas></div>
            </div>

            <div class="section">
                <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Шкала угроз</h2>
                <div class="aal-scale">
                    <div class="scale-item active" style="background:#10b98120;"><div>1</div><div>Низкая<br><small>Рутинная помощь</small></div></div>
                    <div class="scale-item" style="background:#f59e0b20;"><div>2</div><div>Повышенная<br><small>Брифинги</small></div></div>
                    <div class="scale-item" style="background:#f9731620;"><div>3</div><div>Высокая<br><small>Заседания</small></div></div>
                    <div class="scale-item" style="background:#ef444420;"><div>4</div><div>Критическая<br><small>Экстренные меры</small></div></div>
                    <div class="scale-item" style="background:#dc262620;"><div>5</div><div>Максимальная<br><small>Война</small></div></div>
                </div>
            </div>

            <div class="section">
                <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Текущие активности</h2>
                <div id="activities-list">
                    <?php foreach ($data['activities'] as $a): ?>
                        <div class="activity-card urgency-<?= strtolower($a['urgency']) ?>">
                            <div class="activity-type"><?= htmlspecialchars($a['type']) ?></div>
                            <div class="urgency-badge urgency-<?= strtolower($a['urgency']) ?>"><?= $a['urgency'] ?></div>
                            <div class="detail-item"><strong>Дата:</strong> <?= htmlspecialchars($a['date']) ?></div>
                            <div class="detail-item"><strong>Локация:</strong> <?= htmlspecialchars($a['location']) ?></div>
                            <div class="detail-item"><strong>Участники:</strong> <?= htmlspecialchars($a['participants']) ?></div>
                            <div class="detail-item"><strong>Тема:</strong> <?= htmlspecialchars($a['topic']) ?></div>
                            <div class="detail-item"><strong>Источник:</strong> <?= htmlspecialchars($a['source']) ?></div>
                        </div>
                    <?php endforeach; ?>
                </div>
            </div>

            <div class="section">
                <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Недавние события</h2>
                <ul class="events-list" id="recent-events">
                    <?php foreach ($data['analysis']['recent_events'] as $event): ?>
                        <li><?= htmlspecialchars($event) ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>

            <div class="section">
                <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Статус Конгресса</h2>
                <ul class="proxy-list" id="congress-status">
                    <?php foreach ($data['analysis']['congress_status'] as $branch => $status): ?>
                        <li><strong><?= htmlspecialchars($branch) ?>:</strong> <?= htmlspecialchars($status) ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>

            <div class="section">
                <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Динамический анализ</h2>
                <p>Активность <strong><?= strtolower($data['aal_text']) ?></strong> (AAL <?= $data['aal'] ?>). <?= $data['analysis']['summary'] ?> FMS: <strong><?= $data['analysis']['fms_cases'] ?></strong> случаев ($<?= $data['analysis']['fms_value'] ?>).</p>
                <p><strong>Влияние на Израиль:</strong> <span class="impact-high"><?= $data['analysis']['israel_impact_summary'] ?></span>.</p>
                <p><strong>Экономика:</strong> <?= $data['analysis']['economic_risk_summary'] ?> = <strong><?= $data['impact']['aid_value'] ?></strong>.</p>
                <p><strong>Прогноз:</strong> AAL <?= $data['aal_text'] ?> <?= $data['analysis']['forecast_summary'] ?></p>
            </div>
        </div>

        <div class="sidebar">
            <div class="section">
                <h3>AAL</h3>
                <div style="font-size: clamp(2.5rem,8vw,3rem); text-align: center; color:<?= $data['aal_color'] ?>;" id="sidebar-aal"><?= $data['aal'] ?></div>
            </div>
            <div class="section">
                <h3>Пороги тревоги</h3>
                <div class="aal-thresholds">
                    <div class="threshold threshold-1"><span>1 – Низкая</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                    <div class="threshold threshold-2"><span>2 – Повышенная</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                    <div class="threshold threshold-3"><span>3 – Высокая</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                    <div class="threshold threshold-4"><span>4 – Критическая</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                    <div class="threshold threshold-5"><span>5 – Максимальная</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                </div>
                <p style="margin-top: 0.5rem; font-size: 0.8rem; text-align: center;">Текущий: <span class="current-aal"><?= $data['aal'] ?></span></p>
            </div>
            <div class="section">
                <h3>Достоверность</h3>
                <p>Подтверждено: <?= $data['reliability']['confirmed'] ?></p>
                <p>Вероятно: <?= $data['reliability']['probable'] ?></p>
                <p>Неизвестно: <?= $data['reliability']['unknown'] ?></p>
            </div>
            <div class="section">
                <h3>Источники</h3>
                <p><a href="https://www.state.gov/u-s-security-cooperation-with-israel/" target="_blank">State.gov</a></p>
                <p><a href="https://www.congress.gov/" target="_blank">Congress.gov</a></p>
                <p><a href="https://www.whitehouse.gov/" target="_blank">WhiteHouse.gov</a></p>
                <p><a href="https://www.defense.gov/" target="_blank">Defense.gov</a></p>
            </div>
            <div class="section">
                <h3>Обновление</h3>
                <p><strong>Последнее:</strong> <span id="sidebar-update"><?= date('H:i') ?></span></p>
                <p><strong>Следующее:</strong> <span id="next-update">--:--</span></p>
            </div>
        </div>
    </div>

    <div class="footer">
        <p><strong>Avatiah Security Index</strong> — OSINT в реальном времени</p>
        <p>© 2025 Avatiah. Данные: State.gov, Congress.gov, WhiteHouse.gov • <?= date('d.m.Y H:i') ?></p>
    </div>

    <script>
        const js = <?= $js_data ?>;

        // График
        const chart = new Chart(document.getElementById('us-chart'), {
            type: 'line',
            data: {
                labels: ['25.10','26.10','27.10','28.10','29.10','30.10','31.10','01.11','02.11','03.11'],
                datasets: [{
                    label: 'AAL США',
                    data: js.chart_data,
                    borderColor: '#3b82f6',
                    backgroundColor: 'rgba(59,130,246,0.1)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                plugins: { legend: { display: false } },
                scales: { y: { beginAtZero: true, max: 5, ticks: { stepSize: 1 } } }
            }
        });

        // Обновление
        async function updateData() {
            try {
                await fetch('fetch_us.php?' + Date.now());
                const r = await fetch('us_cache.json?' + Date.now());
                const data = await r.json();

                document.getElementById('last-update').textContent = data.last_update;
                document.getElementById('aal-circle').textContent = data.aal;
                document.getElementById('aal-circle').style.background = data.aal_color;
                document.getElementById('aal-text').textContent = data.aal_text;
                document.getElementById('aid-value').textContent = data.impact.aid_value;
                document.getElementById('sidebar-aal').textContent = data.aal;

                chart.data.datasets[0].data = data.chart_data;
                chart.update();

                const activitiesList = document.getElementById('activities-list');
                activitiesList.innerHTML = '';
                data.activities.forEach(a => {
                    activitiesList.innerHTML += `
                        <div class="activity-card urgency-${a.urgency.toLowerCase()}">
                            <div class="activity-type">${a.type}</div>
                            <div class="urgency-badge urgency-${a.urgency.toLowerCase()}">${a.urgency}</div>
                            <div class="detail-item"><strong>Дата:</strong> ${a.date}</div>
                            <div class="detail-item"><strong>Локация:</strong> ${a.location}</div>
                            <div class="detail-item"><strong>Участники:</strong> ${a.participants}</div>
                            <div class="detail-item"><strong>Тема:</strong> ${a.topic}</div>
                            <div class="detail-item"><strong>Источник:</strong> ${a.source}</div>
                        </div>`;
                });

                const eventsList = document.getElementById('recent-events');
                eventsList.innerHTML = data.analysis.recent_events.map(e => `<li>${e}</li>`).join('');

                const congressList = document.getElementById('congress-status');
                congressList.innerHTML = Object.entries(data.analysis.congress_status).map(([k, v]) => `<li><strong>${k}:</strong> ${v}</li>`).join('');

                document.getElementById('sources-update').textContent = data.last_update;
                document.getElementById('sidebar-update').textContent = new Date().toTimeString().slice(0,5);
                document.getElementById('update-status').textContent = 'Обновлено!';
                setTimeout(() => document.getElementById('update-status').textContent = 'Обновление через 30:00', 3000);
            } catch (e) { console.error(e); }
        }

        const UPDATE_INTERVAL_MINUTES = <?= $update_interval ?>;
        let countdownInterval;
        function startCountdown() {
            const now = Date.now();
            const next = Math.ceil(now / (UPDATE_INTERVAL_MINUTES * 60 * 1000)) * (UPDATE_INTERVAL_MINUTES * 60 * 1000);
            let remaining = next - now;
            countdownInterval = setInterval(() => {
                remaining -= 1000;
                const min = String(Math.floor(remaining / 60000)).padStart(2, '0');
                const sec = String(Math.floor((remaining % 60000) / 1000)).padStart(2, '0');
                document.getElementById('countdown').textContent = `${min}:${sec}`;
                document.getElementById('next-update').textContent = new Date(next).toTimeString().slice(0, 5);
                if (remaining <= 0) {
                    clearInterval(countdownInterval);
                    updateData().then(startCountdown);
                }
            }, 1000);
        }

        startCountdown();
        setTimeout(updateData, 30000);
    </script>
</body>
</html>