<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://www.pandoraburo.ru/" xml:lang="ru">
  <id>https://www.pandoraburo.ru/midas-2</id>
  <link href="https://www.pandoraburo.ru/midas-2.xml" rel="self"/>
  <title>Мидас</title>
  <subtitle type="html">
&lt;html lang="ru"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;title&gt;Игра Мидас - Симулятор финансового мышления&lt;/title&gt;
    &lt;style&gt;
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Georgia', serif;
            background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
            color: #e0e0e0;
            min-height: 100vh;
            overflow-x: hidden;
        }

        .marble-bg {
            background: linear-gradient(45deg, #2c3e50 25%, #34495e 25%, #34495e 50%, #2c3e50 50%, #2c3e50 75%, #34495e 75%, #34495e);
            background-size: 40px 40px;
        }

        .gold {
            color: #ffd700;
            text-shadow: 0 0 10px rgba(255, 215, 0, 0.5);
        }

        .gold-btn {
            background: linear-gradient(135deg, #ffd700 0%, #ffed4e 100%);
            color: #1a1a2e;
            border: 2px solid #ffed4e;
            padding: 12px 24px;
            border-radius: 8px;
            font-weight: bold;
            cursor: pointer;
            transition: all 0.3s;
            box-shadow: 0 4px 15px rgba(255, 215, 0, 0.3);
        }

        .gold-btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(255, 215, 0, 0.5);
        }

        .gold-btn:active {
            transform: translateY(0);
        }

        #game-container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
            min-height: 100vh;
        }

        .top-bar {
            display: flex;
            justify-content: space-between;
            align-items: center;
            background: rgba(0, 0, 0, 0.5);
            padding: 15px 20px;
            border-radius: 12px;
            margin-bottom: 20px;
            border: 1px solid rgba(255, 215, 0, 0.3);
        }

        .balance {
            display: flex;
            gap: 20px;
        }

        .balance-item {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 18px;
        }

        .balance-icon {
            width: 24px;
            height: 24px;
            border-radius: 50%;
        }

        .gold-icon {
            background: radial-gradient(circle, #ffd700 0%, #ffed4e 100%);
        }

        .water-icon {
            background: radial-gradient(circle, #4fc3f7 0%, #29b6f6 100%);
        }

        .screen {
            display: none;
            animation: fadeIn 0.3s;
        }

        .screen.active {
            display: block;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .nav-tabs {
            display: flex;
            gap: 10px;
            margin-bottom: 20px;
        }

        .nav-tab {
            flex: 1;
            padding: 12px;
            background: rgba(0, 0, 0, 0.3);
            border: 1px solid rgba(255, 215, 0, 0.2);
            border-radius: 8px;
            cursor: pointer;
            text-align: center;
            transition: all 0.3s;
        }

        .nav-tab:hover {
            background: rgba(255, 215, 0, 0.1);
            border-color: rgba(255, 215, 0, 0.5);
        }

        .nav-tab.active {
            background: rgba(255, 215, 0, 0.2);
            border-color: #ffd700;
        }

        .card {
            background: rgba(0, 0, 0, 0.4);
            border: 1px solid rgba(255, 215, 0, 0.3);
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 15px;
        }

        @keyframes goldShine {
            0% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.5); }
            50% { box-shadow: 0 0 40px rgba(255, 215, 0, 0.8); }
            100% { box-shadow: 0 0 20px rgba(255, 215, 0, 0.5); }
        }

        .gold-shine {
            animation: goldShine 2s infinite;
        }

        @media (max-width: 768px) {
            .balance {
                flex-direction: column;
                gap: 10px;
            }

            .nav-tabs {
                flex-direction: column;
            }
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="game-container"&gt;
        &lt;div class="top-bar"&gt;
            &lt;div class="balance"&gt;
                &lt;div class="balance-item"&gt;
                    &lt;div class="balance-icon gold-icon"&gt;&lt;/div&gt;
                    &lt;span&gt;Золото: &lt;span id="gold-balance" class="gold"&gt;1000&lt;/span&gt;&lt;/span&gt;
                &lt;/div&gt;
                &lt;div class="balance-item"&gt;
                    &lt;div class="balance-icon water-icon"&gt;&lt;/div&gt;
                    &lt;span&gt;Вода: &lt;span id="water-balance"&gt;500&lt;/span&gt;&lt;/span&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div&gt;
                &lt;span&gt;День: &lt;span id="day-counter"&gt;1&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class="nav-tabs"&gt;
            &lt;div class="nav-tab active" data-screen="hub"&gt;?️ Кабинет&lt;/div&gt;
            &lt;div class="nav-tab" data-screen="market"&gt;? Агора&lt;/div&gt;
            &lt;div class="nav-tab" data-screen="vault"&gt;? Сейф&lt;/div&gt;
            &lt;div class="nav-tab" data-screen="quests"&gt;? Квесты&lt;/div&gt;
        &lt;/div&gt;
                
        &lt;div id="hub-screen" class="screen active"&gt;
            &lt;div class="card"&gt;
                &lt;h2 class="gold"&gt;?️ Кабинет Алхимика&lt;/h2&gt;
                &lt;p style="margin-bottom: 20px;"&gt;Вы наследник Мидаса. Управляйте золотом мудро.&lt;/p&gt;
                
                &lt;div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; margin-bottom: 20px;"&gt;
                    &lt;div class="card" style="cursor: pointer;" onclick="switchScreen('market')"&gt;
                        &lt;h3 class="gold"&gt;? Агора (Рынок)&lt;/h3&gt;
                        &lt;p&gt;Покупайте активы: нефть, пшеницу, акции&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class="card" style="cursor: pointer;" onclick="switchScreen('vault')"&gt;
                        &lt;h3 class="gold"&gt;? Золотой Сейф&lt;/h3&gt;
                        &lt;p&gt;Превращайте активы в золото через Прикосновение Мидаса&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class="card" style="cursor: pointer;"&gt;
                        &lt;h3 class="gold"&gt;⚗️ Алхимическая Печь&lt;/h3&gt;
                        &lt;p&gt;Объединяйте сырьё в ликвидные слитки&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div style="display: flex; justify-content: space-between; align-items: center; padding: 15px; background: rgba(0,0,0,0.3); border-radius: 8px;"&gt;
                    &lt;div&gt;
                        &lt;div style="font-size: 14px; color: #aaa;"&gt;Индекс страха (VIX)&lt;/div&gt;
                        &lt;div id="vix-value" style="font-size: 24px; font-weight: bold; color: #4fc3f7;"&gt;25.3&lt;/div&gt;
                    &lt;/div&gt;
                    &lt;button class="gold-btn" id="sobriety-btn"&gt;
                        ?️ Режим Трезвости (зажать)
                    &lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        
        &lt;div id="market-screen" class="screen"&gt;
            &lt;div class="card"&gt;
                &lt;h2 class="gold"&gt;? Агора — Рынок Активов&lt;/h2&gt;
                &lt;p style="margin-bottom: 20px;"&gt;Выберите актив для покупки&lt;/p&gt;
                
                &lt;div id="assets-list" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px;"&gt;
                    
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        
        &lt;div id="vault-screen" class="screen"&gt;
            &lt;div class="card"&gt;
                &lt;h2 class="gold"&gt;? Золотой Сейф&lt;/h2&gt;
                &lt;p style="margin-bottom: 20px;"&gt;Ваши заблокированные активы&lt;/p&gt;
                
                &lt;div id="vault-items" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 15px;"&gt;
                    &lt;div class="card" style="text-align: center; color: #888;"&gt;
                        &lt;p&gt;Сейф пуст. Используйте Прикосновение Мидаса на активы.&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        
        &lt;div id="quests-screen" class="screen"&gt;
            &lt;div class="card"&gt;
                &lt;h2 class="gold"&gt;? Квесты и Достижения&lt;/h2&gt;
                &lt;p style="margin-bottom: 20px;"&gt;Выполняйте задания для получения наград&lt;/p&gt;
                
                &lt;div id="quests-list"&gt;
                    &lt;div class="card"&gt;
                        &lt;h3&gt;Первое Прикосновение&lt;/h3&gt;
                        &lt;p&gt;Превратите первый актив в золото&lt;/p&gt;
                        &lt;div style="margin-top: 10px; color: #4fc3f7;"&gt;Награда: 100 Воды&lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class="card"&gt;
                        &lt;h3&gt;Пережить Кризис&lt;/h3&gt;
                        &lt;p&gt;Выживите после обвала рынка на 20%&lt;/p&gt;
                        &lt;div style="margin-top: 10px; color: #4fc3f7;"&gt;Награда: 200 Воды&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
            
    &lt;style&gt;
        /* Оверлей на весь экран */
        .overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.85);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 1000;
            backdrop-filter: blur(5px);
        }

        /* Анимация Прикосновения Мидаса */
        .midas-animation {
            text-align: center;
            animation: pulseGold 1.5s infinite;
        }

        .hand-icon {
            font-size: 80px;
            margin-bottom: 20px;
            filter: drop-shadow(0 0 15px #ffd700);
        }

        @keyframes pulseGold {
            0% { transform: scale(1); filter: brightness(1); }
            50% { transform: scale(1.05); filter: brightness(1.3); }
            100% { transform: scale(1); filter: brightness(1); }
        }

        /* Модальное окно */
        .modal {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.8);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 999;
        }

        .modal-content {
            background: linear-gradient(135deg, #2c3e50 0%, #1a1a2e 100%);
            border: 2px solid #ffd700;
            border-radius: 16px;
            padding: 30px;
            max-width: 500px;
            width: 90%;
            text-align: center;
            box-shadow: 0 0 30px rgba(255, 215, 0, 0.3);
            animation: slideDown 0.3s ease-out;
        }

        @keyframes slideDown {
            from { transform: translateY(-50px); opacity: 0; }
            to { transform: translateY(0); opacity: 1; }
        }

        /* Карточка актива на рынке */
        .asset-card {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 215, 0, 0.2);
            border-radius: 10px;
            padding: 15px;
            cursor: pointer;
            transition: all 0.2s;
            position: relative;
            overflow: hidden;
        }

        .asset-card:hover {
            border-color: #ffd700;
            transform: translateY(-3px);
            background: rgba(255, 215, 0, 0.05);
        }

        .asset-card.hidden-risk::after {
            content: "???";
            position: absolute;
            top: 10px;
            right: 10px;
            color: #ffd700;
            font-weight: bold;
        }

        /* Режим Трезвости (глобальный класс) */
        body.sobriety-mode .asset-card {
            border-color: #ff4444;
            background: rgba(255, 68, 68, 0.1);
        }
        
        body.sobriety-mode .gold {
            color: #aaa;
            text-shadow: none;
        }

        body.sobriety-mode .top-bar {
            border-color: #ff4444;
        }

        /* Уведомления (Toasts) */
        .toast {
            background: rgba(0, 0, 0, 0.9);
            border-left: 4px solid #ffd700;
            color: #fff;
            padding: 15px 20px;
            margin-bottom: 10px;
            border-radius: 4px;
            animation: slideInRight 0.3s ease-out;
            max-width: 300px;
        }

        @keyframes slideInRight {
            from { transform: translateX(100%); opacity: 0; }
            to { transform: translateX(0); opacity: 1; }
        }

        .toast.error { border-left-color: #ff4444; }
        .toast.success { border-left-color: #4caf50; }
    &lt;/style&gt;

    
    &lt;div id="midas-overlay" class="overlay" style="display: none;"&gt;
        &lt;div class="midas-animation"&gt;
            &lt;div class="hand-icon"&gt;?️&lt;/div&gt;
            &lt;h2 class="gold"&gt;ПРИКОСНОВЕНИЕ МИДАСА&lt;/h2&gt;
            &lt;p&gt;Актив превращается в золото и блокируется...&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    
    &lt;div id="event-modal" class="modal" style="display: none;"&gt;
        &lt;div class="modal-content"&gt;
            &lt;h2 class="gold" id="event-title"&gt;⚡ ЧЁРНЫЙ ЛЕБЕДЬ&lt;/h2&gt;
            &lt;p id="event-description" style="margin: 20px 0; font-size: 18px; line-height: 1.5;"&gt;
                Рынок обрушился! Ваши золотые активы под угрозой ликвидации.
            &lt;/p&gt;
            &lt;div id="event-choices" style="display: flex; gap: 10px; justify-content: center; flex-wrap: wrap;"&gt;
                
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    
    &lt;div id="toast-container"&gt;&lt;/div&gt;
        
    &lt;script&gt;
        // Данные активов (будут рендериться на рынке)
        const assetsData = [
            { id: 1, name: 'Нефть', icon: '?️', price: 150, volatility: 'Высокая', hiddenRisk: 30 },
            { id: 2, name: 'Пшеница', icon: '?', price: 80, volatility: 'Низкая', hiddenRisk: 10 },
            { id: 3, name: 'Акции "Олимп"', icon: '?', price: 200, volatility: 'Средняя', hiddenRisk: 50 },
            { id: 4, name: 'Земля', icon: '?️', price: 300, volatility: 'Низкая', hiddenRisk: 5 },
            { id: 5, name: 'Вино', icon: '?', price: 120, volatility: 'Средняя', hiddenRisk: 25 },
            { id: 6, name: 'Рабы', icon: '⛓️', price: 50, volatility: 'Высокая', hiddenRisk: 70 }
        ];

        // Состояние игры
        let gameState = {
            gold: 1000,
            water: 500,
            day: 1,
            inventory: [], // активы в инвентаре (не в сейфе)
            vault: [], // активы в золотом сейфе (заблокированы)
            vix: 25.3
        };

        // Рендер карточек активов на рынке
        function renderAssets() {
            const assetsList = document.getElementById('assets-list');
            assetsList.innerHTML = '';

            assetsData.forEach(asset =&gt; {
                const card = document.createElement('div');
                card.className = 'asset-card';
                card.innerHTML = `
                    &lt;div style="font-size: 40px; text-align: center; margin-bottom: 10px;"&gt;${asset.icon}&lt;/div&gt;
                    &lt;h3 style="text-align: center; margin-bottom: 10px;"&gt;${asset.name}&lt;/h3&gt;
                    &lt;div style="display: flex; justify-content: space-between; margin-bottom: 5px;"&gt;
                        &lt;span&gt;Цена:&lt;/span&gt;
                        &lt;span class="gold"&gt;${asset.price} ?&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div style="display: flex; justify-content: space-between; margin-bottom: 10px;"&gt;
                        &lt;span&gt;Волатильность:&lt;/span&gt;
                        &lt;span&gt;${asset.volatility}&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;button class="gold-btn" style="width: 100%; padding: 8px;" onclick="buyAsset(${asset.id})"&gt;
                        Купить
                    &lt;/button&gt;
                `;
                assetsList.appendChild(card);
            });
        }

        // Покупка актива
        function buyAsset(assetId) {
            const asset = assetsData.find(a =&gt; a.id === assetId);
            if (!asset) return;

            if (gameState.water &lt; asset.price) {
                showToast('Недостаточно Воды для покупки!', 'error');
                return;
            }

            gameState.water -= asset.price;
            gameState.inventory.push({ ...asset, purchaseDay: gameState.day });
            
            updateUI();
            showToast(`Вы купили ${asset.name}!`, 'success');
        }

        // Прикосновение Мидаса — ключевая механика
        function midasTouch(inventoryIndex) {
            const asset = gameState.inventory[inventoryIndex];
            if (!asset) return;

            // Показываем анимацию
            const overlay = document.getElementById('midas-overlay');
            overlay.style.display = 'flex';

            // Вибрация (если поддерживается)
            if (navigator.vibrate) {
                navigator.vibrate([100, 50, 100]);
            }

            // Через 2 секунды завершаем трансформацию
            setTimeout(() =&gt; {
                overlay.style.display = 'none';

                // Удаляем из инвентаря
                gameState.inventory.splice(inventoryIndex, 1);

                // Добавляем в сейф с удвоенной стоимостью и таймером
                const lockedDays = Math.floor(Math.random() * 5) + 3; // 3-7 дней
                gameState.vault.push({
                    ...asset,
                    goldenValue: asset.price * 2,
                    lockedUntil: gameState.day + lockedDays,
                    lockedDays: lockedDays
                });

                updateUI();
                showToast(`${asset.name} превращён в золото! Заблокирован на ${lockedDays} дн.`, 'success');
            }, 2000);
        }

        // Обновление UI
        function updateUI() {
            document.getElementById('gold-balance').textContent = gameState.gold;
            document.getElementById('water-balance').textContent = gameState.water;
            document.getElementById('day-counter').textContent = gameState.day;
            document.getElementById('vix-value').textContent = gameState.vix.toFixed(1);
        }

        // Уведомления (Toasts)
        function showToast(message, type = 'info') {
            const container = document.getElementById('toast-container');
            const toast = document.createElement('div');
            toast.className = `toast ${type}`;
            toast.textContent = message;
            container.appendChild(toast);

            setTimeout(() =&gt; {
                toast.style.opacity = '0';
                setTimeout(() =&gt; toast.remove(), 300);
            }, 3000);
        }

        // Инициализация при загрузке
        document.addEventListener('DOMContentLoaded', () =&gt; {
            renderAssets();
            updateUI();
        });
    &lt;/script&gt;

    
    &lt;div id="inventory-section" style="margin-top: 20px;"&gt;
        &lt;div class="card"&gt;
            &lt;h3 class="gold"&gt;? Ваш Инвентарь&lt;/h3&gt;
            &lt;div id="inventory-list" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin-top: 15px;"&gt;
                
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;style&gt;
        /* Позиционирование контейнера уведомлений */
        #toast-container {
            position: fixed;
            top: 20px;
            right: 20px;
            z-index: 2000;
        }

        /* Стили для карточек инвентаря */
        .inventory-card {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 215, 0, 0.3);
            border-radius: 8px;
            padding: 10px;
            text-align: center;
            cursor: pointer;
            transition: all 0.2s;
        }

        .inventory-card:hover {
            border-color: #ffd700;
            transform: scale(1.05);
        }

        .inventory-card .midas-btn {
            background: linear-gradient(135deg, #ffd700 0%, #ffed4e 100%);
            color: #1a1a2e;
            border: none;
            padding: 5px 10px;
            border-radius: 4px;
            font-size: 12px;
            cursor: pointer;
            margin-top: 8px;
            width: 100%;
        }

        .inventory-card .midas-btn:hover {
            background: linear-gradient(135deg, #ffed4e 0%, #ffd700 100%);
        }
    &lt;/style&gt;

    &lt;script&gt;
        // Рендер инвентаря
        function renderInventory() {
            const inventoryList = document.getElementById('inventory-list');
            if (!inventoryList) return;

            inventoryList.innerHTML = '';

            if (gameState.inventory.length === 0) {
                inventoryList.innerHTML = '&lt;p style="color: #888; grid-column: 1/-1; text-align: center;"&gt;Инвентарь пуст. Купите активы на Агоре.&lt;/p&gt;';
                return;
            }

            gameState.inventory.forEach((asset, index) =&gt; {
                const card = document.createElement('div');
                card.className = 'inventory-card';
                card.innerHTML = `
                    &lt;div style="font-size: 30px;"&gt;${asset.icon}&lt;/div&gt;
                    &lt;div style="font-size: 14px; margin: 5px 0;"&gt;${asset.name}&lt;/div&gt;
                    &lt;div style="font-size: 12px; color: #ffd700;"&gt;${asset.price} ?&lt;/div&gt;
                    &lt;button class="midas-btn" onclick="midasTouch(${index})"&gt;
                        ?️ Прикоснуться
                    &lt;/button&gt;
                `;
                inventoryList.appendChild(card);
            });
        }

        // Обновляем функцию updateUI, чтобы включала рендер инвентаря
        const originalUpdateUI = updateUI;
        updateUI = function() {
            originalUpdateUI();
            renderInventory();
        };
    &lt;/script&gt;
        
    &lt;style&gt;
        .vault-card {
            background: linear-gradient(135deg, rgba(255, 215, 0, 0.1) 0%, rgba(0, 0, 0, 0.4) 100%);
            border: 2px solid #ffd700;
            border-radius: 12px;
            padding: 15px;
            position: relative;
            transition: all 0.3s;
        }

        .vault-card.cracking {
            border-color: #ff4444;
            background: linear-gradient(135deg, rgba(255, 68, 68, 0.2) 0%, rgba(0, 0, 0, 0.4) 100%);
            animation: shake 0.5s infinite;
        }

        @keyframes shake {
            0%, 100% { transform: translateX(0); }
            25% { transform: translateX(-2px); }
            75% { transform: translateX(2px); }
        }

        .timer-badge {
            position: absolute;
            top: -10px;
            right: 10px;
            background: #1a1a2e;
            border: 1px solid #ffd700;
            color: #ffd700;
            padding: 4px 10px;
            border-radius: 20px;
            font-size: 12px;
            font-weight: bold;
        }

        .timer-badge.danger {
            border-color: #ff4444;
            color: #ff4444;
        }

        .vault-value {
            font-size: 18px;
            font-weight: bold;
            color: #ffd700;
            margin: 10px 0;
        }

        .claim-btn {
            background: linear-gradient(135deg, #4caf50 0%, #45a049 100%);
            color: white;
            border: none;
            padding: 8px 16px;
            border-radius: 6px;
            cursor: pointer;
            width: 100%;
            font-weight: bold;
            margin-top: 10px;
        }

        .claim-btn:disabled {
            background: #555;
            cursor: not-allowed;
            color: #888;
        }
    &lt;/style&gt;

    
    &lt;script&gt;
        // Функция отрисовки содержимого Сейфа
        function renderVault() {
            const vaultList = document.getElementById('vault-items');
            if (!vaultList) return;

            vaultList.innerHTML = '';

            if (gameState.vault.length === 0) {
                vaultList.innerHTML = `
                    &lt;div class="card" style="text-align: center; color: #888; grid-column: 1/-1;"&gt;
                        &lt;p style="font-size: 40px; margin-bottom: 10px;"&gt;?&lt;/p&gt;
                        &lt;p&gt;Сейф пуст.&lt;/p&gt;
                        &lt;p style="font-size: 14px; margin-top: 10px;"&gt;Используйте «Прикосновение Мидаса» в инвентаре, чтобы заблокировать активы и удвоить их стоимость.&lt;/p&gt;
                    &lt;/div&gt;
                `;
                return;
            }

            gameState.vault.forEach((asset, index) =&gt; {
                const daysLeft = asset.lockedUntil - gameState.day;
                const isUnlocked = daysLeft &lt;= 0;
                
                // Проверка риска: если Воды меньше 50, актив "трескается"
                const isCracking = gameState.water &lt; 50 &amp;&amp; !isUnlocked;
                const crackClass = isCracking ? 'cracking' : '';
                const timerClass = isCracking ? 'danger' : '';

                const card = document.createElement('div');
                card.className = `vault-card ${crackClass}`;
                
                let statusText = isUnlocked 
                    ? '&lt;span style="color: #4caf50;"&gt;✅ Разблокировано&lt;/span&gt;' 
                    : `&lt;span class="timer-badge ${timerClass}"&gt;⏳ ${daysLeft} дн.&lt;/span&gt;`;

                let actionButton = isUnlocked
                    ? `&lt;button class="claim-btn" onclick="claimGold(${index})"&gt;Забрать золото (+${asset.goldenValue} ?)&lt;/button&gt;`
                    : `&lt;button class="claim-btn" disabled&gt;Заблокировано&lt;/button&gt;`;

                card.innerHTML = `
                    ${statusText}
                    &lt;div style="font-size: 40px; text-align: center; margin: 15px 0;"&gt;${asset.icon}&lt;/div&gt;
                    &lt;h3 style="text-align: center;"&gt;${asset.name}&lt;/h3&gt;
                    &lt;div style="text-align: center; margin-top: 10px;"&gt;
                        &lt;div style="font-size: 12px; color: #aaa; text-decoration: line-through;"&gt;Было: ${asset.price} ?&lt;/div&gt;
                        &lt;div class="vault-value"&gt;Стало: ${asset.goldenValue} ?&lt;/div&gt;
                    &lt;/div&gt;
                    ${isCracking ? '&lt;div style="color: #ff4444; font-size: 12px; text-align: center; margin-top: 5px;"&gt;⚠️ Критический недостаток Воды! Риск ликвидации!&lt;/div&gt;' : ''}
                    ${actionButton}
                `;
                
                vaultList.appendChild(card);
            });
        }

        // Забрать золото из сейфа
        function claimGold(index) {
            const asset = gameState.vault[index];
            if (!asset) return;

            gameState.water += asset.goldenValue;
            gameState.vault.splice(index, 1);
            
            updateUI();
            showToast(`Вы забрали ${asset.goldenValue} Воды из сейфа!`, 'success');
        }

        // Обновленная функция updateUI, которая теперь обновляет ВСЁ
        function updateUI() {
            document.getElementById('gold-balance').textContent = gameState.gold;
            document.getElementById('water-balance').textContent = gameState.water;
            document.getElementById('day-counter').textContent = gameState.day;
            document.getElementById('vix-value').textContent = gameState.vix.toFixed(1);
            
            renderInventory();
            renderVault();
        }
    &lt;/script&gt;
        
    &lt;style&gt;
        .event-choice-btn {
            background: rgba(255, 255, 255, 0.1);
            border: 1px solid #ffd700;
            color: #ffd700;
            padding: 12px 20px;
            border-radius: 8px;
            cursor: pointer;
            font-size: 14px;
            transition: all 0.2s;
            flex: 1;
            min-width: 140px;
        }

        .event-choice-btn:hover {
            background: rgba(255, 215, 0, 0.2);
            transform: translateY(-2px);
        }

        .event-choice-btn.danger {
            border-color: #ff4444;
            color: #ff4444;
        }
        .event-choice-btn.danger:hover {
            background: rgba(255, 68, 68, 0.2);
        }

        .next-day-btn {
            background: linear-gradient(135deg, #ff9800 0%, #f57c00 100%);
            color: white;
            border: none;
            padding: 15px 30px;
            border-radius: 8px;
            font-size: 16px;
            font-weight: bold;
            cursor: pointer;
            width: 100%;
            margin-top: 20px;
            box-shadow: 0 4px 15px rgba(255, 152, 0, 0.3);
            transition: all 0.3s;
        }

        .next-day-btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(255, 152, 0, 0.5);
        }

        .test-event-btn {
            background: rgba(255, 68, 68, 0.2);
            border: 1px dashed #ff4444;
            color: #ff4444;
            padding: 8px;
            border-radius: 6px;
            cursor: pointer;
            font-size: 12px;
            margin-top: 10px;
            width: 100%;
        }
    &lt;/style&gt;

    
    &lt;script&gt;
        // База данных событий
        const blackSwanEvents = [
            {
                id: 'barbarians',
                title: '⚔️ Набег варваров!',
                description: 'Рынок в панике! Ликвидность иссякла. Ваши золотые активы в сейфе теряют 20% стоимости, если вы не защитите их.',
                choices: [
                    { 
                        text: 'Откупиться (-150 ?)', 
                        class: '',
                        action: () =&gt; {
                            if (gameState.water &gt;= 150) {
                                gameState.water -= 150;
                                showToast('Вы откупились. Золотые активы спасены!', 'success');
                            } else {
                                showToast('Не хватает Воды! Пришлось продать часть активов в убыток.', 'error');
                                applyMarketCrash(0.8); // Обесценивание на 20%
                            }
                        }
                    },
                    { 
                        text: 'Держать оборону (Риск 50%)', 
                        class: 'danger',
                        action: () =&gt; {
                            if (Math.random() &gt; 0.5) {
                                showToast('Оборона устояла! Рынок стабилизировался.', 'success');
                            } else {
                                showToast('Оборона прорвана! Потеряно 30% стоимости в сейфе.', 'error');
                                applyMarketCrash(0.7);
                            }
                        }
                    }
                ]
            },
            {
                id: 'drought',
                title: '? Великая Засуха',
                description: 'Урожай погиб. Цены на продовольствие взлетели, но спрос на предметы роскоши упал.',
                choices: [
                    { 
                        text: 'Скупить пшеницу впрок (-200 ?)', 
                        class: '',
                        action: () =&gt; {
                            if (gameState.water &gt;= 200) {
                                gameState.water -= 200;
                                gameState.gold += 300; // Бонус за спекуляцию
                                showToast('Гениальная спекуляция! Вы заработали на дефиците.', 'success');
                            } else {
                                showToast('Не хватило капитала для спекуляции.', 'error');
                            }
                        }
                    },
                    { 
                        text: 'Переждать бурю', 
                        class: '',
                        action: () =&gt; {
                            showToast('Вы пережили засуху, но ничего не заработали.', 'info');
                        }
                    }
                ]
            },
            {
                id: 'audit',
                title: '? Налоговая проверка',
                description: 'Алхимическая гильдия требует уплаты скрытых налогов за использование магии Мидаса.',
                choices: [
                    { 
                        text: 'Заплатить налог (-10% Воды)', 
                        class: '',
                        action: () =&gt; {
                            const tax = Math.floor(gameState.water * 0.1);
                            gameState.water -= tax;
                            showToast(`Налог уплачен: -${tax} ?. Репутация сохранена.`, 'success');
                        }
                    },
                    { 
                        text: 'Попытаться обмануть (Риск)', 
                        class: 'danger',
                        action: () =&gt; {
                            if (Math.random() &gt; 0.7) {
                                showToast('Вас не поймали! Вы сэкономили.', 'success');
                            } else {
                                const fine = Math.floor(gameState.water * 0.3);
                                gameState.water = Math.max(0, gameState.water - fine);
                                showToast(`Мошенничество раскрыто! Штраф: -${fine} ?`, 'error');
                            }
                        }
                    }
                ]
            }
        ];

        // Показать модальное окно события
        function showEventModal(event) {
            const modal = document.getElementById('event-modal');
            document.getElementById('event-title').textContent = event.title;
            document.getElementById('event-description').textContent = event.description;
            
            const choicesContainer = document.getElementById('event-choices');
            choicesContainer.innerHTML = '';

            event.choices.forEach(choice =&gt; {
                const btn = document.createElement('button');
                btn.className = `event-choice-btn ${choice.class}`;
                btn.textContent = choice.text;
                btn.onclick = () =&gt; {
                    choice.action();
                    modal.style.display = 'none';
                    updateUI();
                };
                choicesContainer.appendChild(btn);
            });

            modal.style.display = 'flex';
        }

        // Применение обесценивания к сейфу (для механики краша)
        function applyMarketCrash(multiplier) {
            gameState.vault.forEach(asset =&gt; {
                asset.goldenValue = Math.floor(asset.goldenValue * multiplier);
            });
        }

        // Завершить день (основной цикл игры)
        function advanceDay() {
            gameState.day++;
            
            // Ежедневный налог на содержание сейфа (10 воды за каждый заблокированный актив)
            const dailyTax = gameState.vault.length * 10;
            gameState.water -= dailyTax;
            
            if (gameState.water &lt; 0) {
                gameState.water = 0;
                showToast('ВНИМАНИЕ: Вода закончилась! Ваши активы в сейфе под угрозой ликвидации (трескаются).', 'error');
            } else if (dailyTax &gt; 0) {
                showToast(`Списан налог за содержание сейфа: -${dailyTax} ?`, 'info');
            }

            // Случайное изменение VIX (индекса страха)
            gameState.vix = Math.max(10, Math.min(80, gameState.vix + (Math.random() * 20 - 10)));

            updateUI();

            // 30% шанс на событие "Чёрный лебедь"
            if (Math.random() &lt; 0.3) {
                setTimeout(() =&gt; {
                    const randomEvent = blackSwanEvents[Math.floor(Math.random() * blackSwanEvents.length)];
                    showEventModal(randomEvent);
                }, 500);
            } else {
                showToast(`День ${gameState.day} начался. Рынок спокоен.`, 'success');
            }
        }

        // Добавляем кнопку завершения дня в Хаб (инжектим через JS, чтобы не ломать структуру)
        document.addEventListener('DOMContentLoaded', () =&gt; {
            const hubScreen = document.getElementById('hub-screen');
            if (hubScreen) {
                const dayBtnContainer = document.createElement('div');
                dayBtnContainer.innerHTML = `
                    &lt;button class="next-day-btn" onclick="advanceDay()"&gt;
                        ? Завершить день и перейти к следующему
                    &lt;/button&gt;
                    &lt;button class="test-event-btn" onclick="showEventModal(blackSwanEvents[0])"&gt;
                        ? [Тест] Вызвать Чёрного лебедя вручную
                    &lt;/button&gt;
                `;
                hubScreen.querySelector('.card').appendChild(dayBtnContainer);
            }
        });
    &lt;/script&gt;
        
    &lt;script&gt;
        // Переключение между экранами
        function switchScreen(screenName) {
            // Скрываем все экраны
            document.querySelectorAll('.screen').forEach(screen =&gt; {
                screen.classList.remove('active');
            });

            // Показываем нужный экран
            const targetScreen = document.getElementById(`${screenName}-screen`);
            if (targetScreen) {
                targetScreen.classList.add('active');
            }

            // Обновляем активную вкладку
            document.querySelectorAll('.nav-tab').forEach(tab =&gt; {
                tab.classList.remove('active');
                if (tab.dataset.screen === screenName) {
                    tab.classList.add('active');
                }
            });

            // Обновляем данные на экране
            updateUI();
        }

        // Инициализация навигации
        document.addEventListener('DOMContentLoaded', () =&gt; {
            document.querySelectorAll('.nav-tab').forEach(tab =&gt; {
                tab.addEventListener('click', () =&gt; {
                    const screenName = tab.dataset.screen;
                    switchScreen(screenName);
                });
            });

            // Закрытие модального окна по клику вне его
            const eventModal = document.getElementById('event-modal');
            if (eventModal) {
                eventModal.addEventListener('click', (e) =&gt; {
                    if (e.target === eventModal) {
                        eventModal.style.display = 'none';
                    }
                });
            }
        });

        // Дополнительные экономические механики

        // Пассивный доход от инвентаря (активы не в сейфе приносят небольшой доход)
        function calculatePassiveIncome() {
            let income = 0;
            gameState.inventory.forEach(asset =&gt; {
                // Базовый доход 1% от стоимости актива за день
                income += Math.floor(asset.price * 0.01);
            });
            return income;
        }

        // Инфляция (цены на рынке растут каждый день)
        function applyInflation() {
            const inflationRate = 1.02; // 2% инфляции за день
            assetsData.forEach(asset =&gt; {
                asset.price = Math.floor(asset.price * inflationRate);
            });
            renderAssets();
        }

        // Обновленная функция advanceDay с учетом пассивного дохода и инфляции
        const originalAdvanceDay = advanceDay;
        advanceDay = function() {
            // Пассивный доход
            const passiveIncome = calculatePassiveIncome();
            if (passiveIncome &gt; 0) {
                gameState.water += passiveIncome;
                showToast(`Пассивный доход от инвентаря: +${passiveIncome} ?`, 'success');
            }

            // Вызываем оригинальную функцию
            originalAdvanceDay();

            // Применяем инфляцию
            applyInflation();
        };

        // Проверка на банкротство
        function checkBankruptcy() {
            if (gameState.water &lt;= 0 &amp;&amp; gameState.vault.length === 0 &amp;&amp; gameState.inventory.length === 0) {
                setTimeout(() =&gt; {
                    showToast('? БАНКРОТСТВО! У вас закончились ресурсы. Игра окончена.', 'error');
                    // Здесь можно добавить экран Game Over
                }, 1000);
            }
        }

        // Добавляем проверку банкротства в updateUI
        const originalUpdateUI2 = updateUI;
        updateUI = function() {
            originalUpdateUI2();
            checkBankruptcy();
        };

        // Функция сброса игры (для тестирования)
        function resetGame() {
            if (confirm('Вы уверены, что хотите начать заново? Весь прогресс будет потерян.')) {
                gameState = {
                    gold: 1000,
                    water: 500,
                    day: 1,
                    inventory: [],
                    vault: [],
                    vix: 25.3
                };
                
                // Сброс цен активов
                assetsData[0].price = 150;
                assetsData[1].price = 80;
                assetsData[2].price = 200;
                assetsData[3].price = 300;
                assetsData[4].price = 120;
                assetsData[5].price = 50;
                
                updateUI();
                renderAssets();
                showToast('Игра сброшена. Начинаем заново!', 'success');
            }
        }

        // Добавляем кнопку сброса в топ-бар
        document.addEventListener('DOMContentLoaded', () =&gt; {
            const topBar = document.querySelector('.top-bar');
            if (topBar) {
                const resetBtn = document.createElement('button');
                resetBtn.textContent = '? Сброс';
                resetBtn.style.cssText = 'background: rgba(255, 68, 68, 0.2); border: 1px solid #ff4444; color: #ff4444; padding: 5px 10px; border-radius: 4px; cursor: pointer; font-size: 12px;';
                resetBtn.onclick = resetGame;
                topBar.appendChild(resetBtn);
            }
        });

        // Консольная команда для разработчика (показать состояние игры)
        window.showGameState = function() {
            console.log('=== СОСТОЯНИЕ ИГРЫ ===');
            console.log('Золото:', gameState.gold);
            console.log('Вода:', gameState.water);
            console.log('День:', gameState.day);
            console.log('Инвентарь:', gameState.inventory);
            console.log('Сейф:', gameState.vault);
            console.log('VIX:', gameState.vix);
            console.log('=====================');
            return gameState;
        };

        console.log('%c? Игра Мидас загружена!', 'color: #ffd700; font-size: 16px; font-weight: bold;');
        console.log('%cВведите showGameState() для просмотра состояния игры', 'color: #4fc3f7;');
    &lt;/script&gt;
        
    &lt;script&gt;
        // Менеджер звуков и вибрации (генерация на лету, без внешних файлов)
        const SoundManager = {
            ctx: null,
            init: function() {
                if (!this.ctx) {
                    this.ctx = new (window.AudioContext || window.webkitAudioContext)();
                }
                if (this.ctx.state === 'suspended') {
                    this.ctx.resume();
                }
            },
            play: function(type) {
                this.init();
                const osc = this.ctx.createOscillator();
                const gain = this.ctx.createGain();
                osc.connect(gain);
                gain.connect(this.ctx.destination);

                const now = this.ctx.currentTime;

                switch(type) {
                    case 'midas': // Звон золота (высокий, блестящий)
                        osc.type = 'sine';
                        osc.frequency.setValueAtTime(800, now);
                        osc.frequency.exponentialRampToValueAtTime(1200, now + 0.1);
                        gain.gain.setValueAtTime(0.3, now);
                        gain.gain.exponentialRampToValueAtTime(0.01, now + 0.6);
                        osc.start(now);
                        osc.stop(now + 0.6);
                        break;
                    case 'error': // Ошибка / Треск (низкий, резкий)
                        osc.type = 'sawtooth';
                        osc.frequency.setValueAtTime(150, now);
                        osc.frequency.linearRampToValueAtTime(80, now + 0.3);
                        gain.gain.setValueAtTime(0.2, now);
                        gain.gain.linearRampToValueAtTime(0.01, now + 0.3);
                        osc.start(now);
                        osc.stop(now + 0.3);
                        break;
                    case 'success': // Успех (приятный аккорд)
                        osc.type = 'triangle';
                        osc.frequency.setValueAtTime(400, now);
                        osc.frequency.setValueAtTime(600, now + 0.1);
                        gain.gain.setValueAtTime(0.2, now);
                        gain.gain.linearRampToValueAtTime(0.01, now + 0.4);
                        osc.start(now);
                        osc.stop(now + 0.4);
                        break;
                    case 'crash': // Обвал рынка (тяжелый, низкий)
                        osc.type = 'square';
                        osc.frequency.setValueAtTime(100, now);
                        osc.frequency.exponentialRampToValueAtTime(40, now + 0.6);
                        gain.gain.setValueAtTime(0.3, now);
                        gain.gain.linearRampToValueAtTime(0.01, now + 0.6);
                        osc.start(now);
                        osc.stop(now + 0.6);
                        break;
                    case 'water': // Капля воды (покупка/доход)
                        osc.type = 'sine';
                        osc.frequency.setValueAtTime(1200, now);
                        osc.frequency.exponentialRampToValueAtTime(800, now + 0.15);
                        gain.gain.setValueAtTime(0.15, now);
                        gain.gain.exponentialRampToValueAtTime(0.01, now + 0.2);
                        osc.start(now);
                        osc.stop(now + 0.2);
                        break;
                }
            },
            vibrate: function(pattern) {
                if (navigator.vibrate) {
                    navigator.vibrate(pattern);
                }
            }
        };

        // === Интеграция звуков и вибрации в существующие функции игры ===
        
        // 1. Прикосновение Мидаса
        const originalMidasTouch = window.midasTouch;
        window.midasTouch = function(index) {
            SoundManager.play('midas');
            SoundManager.vibrate([50, 50, 100]); // Короткая двойная вибрация
            originalMidasTouch(index);
        };

        // 2. Уведомления (Toasts)
        const originalShowToast = window.showToast;
        window.showToast = function(message, type = 'info') {
            originalShowToast(message, type);
            if (type === 'error') {
                SoundManager.play('error');
                SoundManager.vibrate([200]); // Длинная вибрация
            } else if (type === 'success') {
                SoundManager.play('success');
                SoundManager.vibrate([50]); // Короткая вибрация
            }
        };

        // 3. События (Чёрный лебедь)
        const originalShowEventModal = window.showEventModal;
        window.showEventModal = function(event) {
            SoundManager.play('crash');
            SoundManager.vibrate([100, 50, 100, 50, 200]); // Тревожная вибрация
            originalShowEventModal(event);
        };

        // 4. Покупка актива
        const originalBuyAsset = window.buyAsset;
        window.buyAsset = function(id) {
            const asset = assetsData.find(a =&gt; a.id === id);
            if (gameState.water &gt;= asset.price) {
                SoundManager.play('water');
            }
            originalBuyAsset(id);
        };

        // 5. Разблокировка AudioContext по первому клику (требование современных браузеров)
        document.addEventListener('click', () =&gt; {
            SoundManager.init();
        }, { once: true });
    &lt;/script&gt;
        
    &lt;script&gt;
        // Состояние режима трезвости
        let isSobrietyMode = false;

        // Включение режима трезвости
        function enableSobrietyMode() {
            if (isSobrietyMode) return;
            isSobrietyMode = true;
            document.body.classList.add('sobriety-mode');
            
            // Меняем текст кнопки
            const btn = document.getElementById('sobriety-btn');
            if (btn) {
                btn.textContent = '?️ Режим Трезвости АКТИВЕН';
                btn.style.background = 'linear-gradient(135deg, #ff4444 0%, #cc0000 100%)';
                btn.style.color = 'white';
                btn.style.borderColor = '#ff4444';
            }

            // Перерисовываем активы с показом скрытых рисков
            renderAssets();
            
            // Звук "прозрения"
            if (typeof SoundManager !== 'undefined') {
                SoundManager.play('success');
            }
        }

        // Выключение режима трезвости
        function disableSobrietyMode() {
            if (!isSobrietyMode) return;
            isSobrietyMode = false;
            document.body.classList.remove('sobriety-mode');
            
            // Возвращаем текст кнопки
            const btn = document.getElementById('sobriety-btn');
            if (btn) {
                btn.textContent = '?️ Режим Трезвости (зажать)';
                btn.style.background = '';
                btn.style.color = '';
                btn.style.borderColor = '';
            }

            // Перерисовываем активы без скрытых рисков
            renderAssets();
        }

        // Обновленная функция renderAssets с учетом режима трезвости
        const originalRenderAssets = window.renderAssets;
        window.renderAssets = function() {
            const assetsList = document.getElementById('assets-list');
            if (!assetsList) return;

            assetsList.innerHTML = '';

            assetsData.forEach(asset =&gt; {
                const card = document.createElement('div');
                card.className = 'asset-card';
                
                // В режиме трезвости показываем скрытый риск
                const hiddenRiskHTML = isSobrietyMode 
                    ? `&lt;div style="margin-top: 10px; padding: 8px; background: rgba(255, 68, 68, 0.2); border: 1px solid #ff4444; border-radius: 4px;"&gt;
                         &lt;div style="font-size: 11px; color: #ff4444; font-weight: bold;"&gt;⚠️ СКРЫТЫЙ РИСК&lt;/div&gt;
                         &lt;div style="font-size: 13px; color: #ff8888;"&gt;Вероятность потери: ${asset.hiddenRisk}%&lt;/div&gt;
                         &lt;div style="font-size: 11px; color: #aaa; margin-top: 4px;"&gt;Реальная ликвидность: ${asset.hiddenRisk &gt; 50 ? 'Низкая' : asset.hiddenRisk &gt; 25 ? 'Средняя' : 'Высокая'}&lt;/div&gt;
                       &lt;/div&gt;`
                    : `&lt;div class="hidden-risk" style="position: absolute; top: 10px; right: 10px; color: #ffd700; font-weight: bold; font-size: 18px;"&gt;???&lt;/div&gt;`;

                // В режиме трезвости показываем реальную доходность с учетом инфляции
                const realYieldHTML = isSobrietyMode
                    ? `&lt;div style="margin-top: 8px; padding: 6px; background: rgba(79, 195, 247, 0.1); border-radius: 4px; font-size: 11px; color: #4fc3f7;"&gt;
                         ? Реальная доходность (с учетом инфляции 2%/день): &lt;strong&gt;${(asset.price * 0.01 - asset.price * 0.02).toFixed(1)} ?/день&lt;/strong&gt;
                       &lt;/div&gt;`
                    : '';

                card.innerHTML = `
                    &lt;div style="font-size: 40px; text-align: center; margin-bottom: 10px;"&gt;${asset.icon}&lt;/div&gt;
                    &lt;h3 style="text-align: center; margin-bottom: 10px;"&gt;${asset.name}&lt;/h3&gt;
                    &lt;div style="display: flex; justify-content: space-between; margin-bottom: 5px;"&gt;
                        &lt;span&gt;Цена:&lt;/span&gt;
                        &lt;span class="gold"&gt;${asset.price} ?&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div style="display: flex; justify-content: space-between; margin-bottom: 10px;"&gt;
                        &lt;span&gt;Волатильность:&lt;/span&gt;
                        &lt;span&gt;${asset.volatility}&lt;/span&gt;
                    &lt;/div&gt;
                    ${hiddenRiskHTML}
                    ${realYieldHTML}
                    &lt;button class="gold-btn" style="width: 100%; padding: 8px; margin-top: 10px;" onclick="buyAsset(${asset.id})"&gt;
                        Купить
                    &lt;/button&gt;
                `;
                assetsList.appendChild(card);
            });
        };

        // Инициализация обработчиков кнопки "Режим Трезвости"
        document.addEventListener('DOMContentLoaded', () =&gt; {
            const sobrietyBtn = document.getElementById('sobriety-btn');
            if (sobrietyBtn) {
                // Для мыши (ПК)
                sobrietyBtn.addEventListener('mousedown', (e) =&gt; {
                    e.preventDefault();
                    enableSobrietyMode();
                });
                sobrietyBtn.addEventListener('mouseup', disableSobrietyMode);
                sobrietyBtn.addEventListener('mouseleave', disableSobrietyMode);

                // Для тачскринов (мобильные)
                sobrietyBtn.addEventListener('touchstart', (e) =&gt; {
                    e.preventDefault();
                    enableSobrietyMode();
                });
                sobrietyBtn.addEventListener('touchend', disableSobrietyMode);
                sobrietyBtn.addEventListener('touchcancel', disableSobrietyMode);

                // Предотвращаем контекстное меню на мобильных при долгом нажатии
                sobrietyBtn.addEventListener('contextmenu', (e) =&gt; {
                    e.preventDefault();
                });
            }
        });

        // Дополнительная визуализация: в режиме трезвости VIX "дергается" сильнее
        const originalUpdateUI3 = window.updateUI;
        window.updateUI = function() {
            originalUpdateUI3();
            
            const vixElement = document.getElementById('vix-value');
            if (vixElement &amp;&amp; isSobrietyMode) {
                // Добавляем визуальную тревогу к VIX
                vixElement.style.color = gameState.vix &gt; 50 ? '#ff4444' : gameState.vix &gt; 30 ? '#ff9800' : '#4fc3f7';
                vixElement.style.textShadow = '0 0 10px currentColor';
            } else if (vixElement) {
                vixElement.style.color = '#4fc3f7';
                vixElement.style.textShadow = 'none';
            }
        };
    &lt;/script&gt;

    
    &lt;style&gt;
        .sobriety-hint {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            background: rgba(0, 0, 0, 0.9);
            border: 1px solid #ffd700;
            color: #ffd700;
            padding: 10px 20px;
            border-radius: 8px;
            font-size: 12px;
            z-index: 100;
            animation: fadeInUp 0.5s ease-out;
            pointer-events: none;
        }

        @keyframes fadeInUp {
            from { transform: translate(-50%, 20px); opacity: 0; }
            to { transform: translate(-50%, 0); opacity: 1; }
        }
    &lt;/style&gt;

    &lt;script&gt;
        // Показываем подсказку о режиме трезвости при первом запуске
        document.addEventListener('DOMContentLoaded', () =&gt; {
            if (!localStorage.getItem('midasSobrietyHintShown')) {
                setTimeout(() =&gt; {
                    const hint = document.createElement('div');
                    hint.className = 'sobriety-hint';
                    hint.textContent = '? Совет: зажмите кнопку "Режим Трезвости", чтобы увидеть скрытые риски активов';
                    document.body.appendChild(hint);

                    setTimeout(() =&gt; {
                        hint.style.opacity = '0';
                        hint.style.transition = 'opacity 0.5s';
                        setTimeout(() =&gt; hint.remove(), 500);
                    }, 5000);

                    localStorage.setItem('midasSobrietyHintShown', 'true');
                }, 2000);
            }
        });
    &lt;/script&gt;
        
    &lt;script&gt;
        // === СИСТЕМА КВЕСТОВ ===
        const questsData = [
            {
                id: 'first_touch',
                title: '?️ Первое Прикосновение',
                description: 'Превратите первый актив в золото',
                reward: 100,
                check: () =&gt; gameState.vault.length &gt;= 1 || gameState.day &gt; 1 &amp;&amp; totalMidasTouches &gt;= 1
            },
            {
                id: 'survive_crash',
                title: '?️ Пережить Кризис',
                description: 'Переживите событие "Чёрный лебедь" без банкротства',
                reward: 200,
                check: () =&gt; survivedEvents &gt;= 1
            },
            {
                id: 'rich_vault',
                title: '? Золотой Запас',
                description: 'Накопите в сейфе активов на сумму более 1000 ?',
                reward: 300,
                check: () =&gt; gameState.vault.reduce((sum, a) =&gt; sum + a.goldenValue, 0) &gt;= 1000
            },
            {
                id: 'sobriety_master',
                title: '?️ Мастер Трезвости',
                description: 'Используйте режим Трезвости 5 раз',
                reward: 150,
                check: () =&gt; sobrietyUses &gt;= 5
            },
            {
                id: 'diversified',
                title: '? Диверсификация',
                description: 'Имейте в инвентаре минимум 3 разных актива',
                reward: 250,
                check: () =&gt; gameState.inventory.length &gt;= 3
            },
            {
                id: 'survivor_10',
                title: '? Выживший',
                description: 'Достигните 10-го игрового дня',
                reward: 500,
                check: () =&gt; gameState.day &gt;= 10
            }
        ];

        // Счетчики для квестов (сохраняются отдельно)
        let totalMidasTouches = 0;
        let survivedEvents = 0;
        let sobrietyUses = 0;
        let completedQuests = [];

        // Проверка выполнения квестов
        function checkQuests() {
            questsData.forEach(quest =&gt; {
                if (!completedQuests.includes(quest.id) &amp;&amp; quest.check()) {
                    completeQuest(quest);
                }
            });
        }

        // Завершение квеста
        function completeQuest(quest) {
            completedQuests.push(quest.id);
            gameState.water += quest.reward;
            showToast(`? Квест выполнен: "${quest.title}"! +${quest.reward} ?`, 'success');
            if (typeof SoundManager !== 'undefined') {
                SoundManager.play('success');
            }
            saveGame();
            renderQuests();
        }

        // Рендер списка квестов (заменяет статичный HTML)
        function renderQuests() {
            const questsList = document.getElementById('quests-list');
            if (!questsList) return;

            questsList.innerHTML = '';

            questsData.forEach(quest =&gt; {
                const isCompleted = completedQuests.includes(quest.id);
                const card = document.createElement('div');
                card.className = 'card';
                card.style.opacity = isCompleted ? '0.6' : '1';
                card.style.borderColor = isCompleted ? '#4caf50' : '';
                
                card.innerHTML = `
                    &lt;h3&gt;${isCompleted ? '✅' : '?'} ${quest.title}&lt;/h3&gt;
                    &lt;p style="margin: 8px 0; color: #ccc;"&gt;${quest.description}&lt;/p&gt;
                    &lt;div style="margin-top: 10px; display: flex; justify-content: space-between; align-items: center;"&gt;
                        &lt;span style="color: #4fc3f7; font-weight: bold;"&gt;Награда: ${quest.reward} ?&lt;/span&gt;
                        ${isCompleted 
                            ? '&lt;span style="color: #4caf50; font-size: 12px;"&gt;ВЫПОЛНЕН&lt;/span&gt;' 
                            : '&lt;span style="color: #ff9800; font-size: 12px;"&gt;В ПРОЦЕССЕ&lt;/span&gt;'}
                    &lt;/div&gt;
                `;
                questsList.appendChild(card);
            });
        }

        // === СИСТЕМА РЕЙТИНГА ===
        function calculatePlayerRating() {
            const vaultValue = gameState.vault.reduce((sum, a) =&gt; sum + a.goldenValue, 0);
            const inventoryValue = gameState.inventory.reduce((sum, a) =&gt; sum + a.price, 0);
            const totalCapital = gameState.water + vaultValue + inventoryValue + gameState.gold;
            
            // Бонус за выполненные квесты
            const questBonus = completedQuests.length * 50;
            
            return totalCapital + questBonus;
        }

        function getRankTitle(rating) {
            if (rating &gt;= 10000) return '? Царь Мидас';
            if (rating &gt;= 5000) return '? Мастер Алхимии';
            if (rating &gt;= 2000) return '⭐ Опытный Торговец';
            if (rating &gt;= 1000) return '? Начинающий Инвестор';
            return '? Стажёр';
        }

        // Добавляем отображение рейтинга в топ-бар
        function renderRating() {
            const rating = calculatePlayerRating();
            const rank = getRankTitle(rating);
            
            // Ищем или создаем контейнер рейтинга
            let ratingContainer = document.getElementById('rating-display');
            if (!ratingContainer) {
                const topBar = document.querySelector('.top-bar');
                if (topBar) {
                    ratingContainer = document.createElement('div');
                    ratingContainer.id = 'rating-display';
                    ratingContainer.style.cssText = 'text-align: center; padding: 0 15px; border-left: 1px solid rgba(255, 215, 0, 0.3); border-right: 1px solid rgba(255, 215, 0, 0.3);';
                    topBar.insertBefore(ratingContainer, topBar.children[1]);
                }
            }
            
            if (ratingContainer) {
                ratingContainer.innerHTML = `
                    &lt;div style="font-size: 11px; color: #aaa;"&gt;Рейтинг&lt;/div&gt;
                    &lt;div style="font-size: 18px; font-weight: bold; color: #ffd700;"&gt;${rating}&lt;/div&gt;
                    &lt;div style="font-size: 10px; color: #ccc;"&gt;${rank}&lt;/div&gt;
                `;
            }
        }

        // === СОХРАНЕНИЕ И ЗАГРУЗКА ПРОГРЕССА ===
        const SAVE_KEY = 'midas_game_save';

        function saveGame() {
            const saveData = {
                gameState: gameState,
                totalMidasTouches: totalMidasTouches,
                survivedEvents: survivedEvents,
                sobrietyUses: sobrietyUses,
                completedQuests: completedQuests,
                assetsPrices: assetsData.map(a =&gt; a.price),
                savedAt: new Date().toISOString()
            };
            try {
                localStorage.setItem(SAVE_KEY, JSON.stringify(saveData));
            } catch (e) {
                console.warn('Не удалось сохранить игру:', e);
            }
        }

        function loadGame() {
            try {
                const saveStr = localStorage.getItem(SAVE_KEY);
                if (!saveStr) return false;

                const saveData = JSON.parse(saveStr);
                
                // Восстанавливаем состояние
                if (saveData.gameState) gameState = saveData.gameState;
                if (saveData.totalMidasTouches !== undefined) totalMidasTouches = saveData.totalMidasTouches;
                if (saveData.survivedEvents !== undefined) survivedEvents = saveData.survivedEvents;
                if (saveData.sobrietyUses !== undefined) sobrietyUses = saveData.sobrietyUses;
                if (saveData.completedQuests) completedQuests = saveData.completedQuests;
                if (saveData.assetsPrices) {
                    saveData.assetsPrices.forEach((price, i) =&gt; {
                        if (assetsData[i]) assetsData[i].price = price;
                    });
                }
                
                console.log(`%c? Игра загружена! Сохранение от: ${new Date(saveData.savedAt).toLocaleString()}`, 'color: #4caf50;');
                return true;
            } catch (e) {
                console.warn('Не удалось загрузить сохранение:', e);
                return false;
            }
        }

        // === ИНТЕГРАЦИЯ С СУЩЕСТВУЮЩИМИ ФУНКЦИЯМИ ===
        
        // Перехватываем midasTouch для счетчика
        const originalMidasTouch2 = window.midasTouch;
        window.midasTouch = function(index) {
            totalMidasTouches++;
            originalMidasTouch2(index);
            checkQuests();
            saveGame();
        };

        // Перехватываем showEventModal для счетчика выживших событий
        const originalShowEventModal2 = window.showEventModal;
        window.showEventModal = function(event) {
            originalShowEventModal2(event);
            // Считаем событие "пережитым" после выбора
            const choicesContainer = document.getElementById('event-choices');
            if (choicesContainer) {
                const buttons = choicesContainer.querySelectorAll('button');
                buttons.forEach(btn =&gt; {
                    const originalClick = btn.onclick;
                    btn.onclick = function() {
                        survivedEvents++;
                        if (originalClick) originalClick();
                        checkQuests();
                        saveGame();
                    };
                });
            }
        };

        // Перехватываем enableSobrietyMode для счетчика
        const originalEnableSobriety = window.enableSobrietyMode;
        window.enableSobrietyMode = function() {
            if (!isSobrietyMode) {
                sobrietyUses++;
                checkQuests();
                saveGame();
            }
            originalEnableSobriety();
        };

        // Обновляем updateUI, чтобы включал квесты и рейтинг
        const originalUpdateUI4 = window.updateUI;
        window.updateUI = function() {
            originalUpdateUI4();
            renderQuests();
            renderRating();
        };

        // Автосохранение каждые 30 секунд
        setInterval(() =&gt; {
            saveGame();
        }, 30000);

        // === ИНИЦИАЛИЗАЦИЯ ПРИ ЗАГРУЗКЕ ===
        document.addEventListener('DOMContentLoaded', () =&gt; {
            // Пробуем загрузить сохранение
            const loaded = loadGame();
            
            // Рендерим всё
            renderAssets();
            renderInventory();
            renderVault();
            renderQuests();
            renderRating();
            updateUI();

            if (loaded) {
                showToast('? Прогресс восстановлен из сохранения', 'success');
            } else {
                showToast('? Добро пожаловать в Игру Мидас!', 'success');
            }
        });

        // Сохранение перед закрытием вкладки
        window.addEventListener('beforeunload', () =&gt; {
            saveGame();
        });
    &lt;/script&gt;

    
    &lt;/div&gt; 
&lt;/body&gt;
&lt;/html&gt;</subtitle>
  <updated>2026-09-18T09:27:14Z</updated>
  <logo>https://pandoraburo.ru/ssl/u/pic/ef/f66878aa6d11f1abb9f7ceed6face4/-/image%20%284%29.jpg</logo>
  <author>
    <name>1592962</name>
    <uri>https://www.pandoraburo.ru/</uri>
  </author>
</feed>
