<!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>SplitBot</title>
    <script src="https://telegram.org/js/telegram-web-app.js"></script>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        :root {
            --bg: #070b18;
            --sidebar-bg: #0d1324;
            --card-bg: #111827cc;
            --card-solid: #111827;
            --accent: #7c3aed;
            --accent-hover: #6d28d9;
            --text: #ffffff;
            --text-secondary: #94a3b8;
            --border: #1e293b;
            --success: #22c55e;
            --warning: #f59e0b;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            background: var(--bg);
            color: var(--text);
            min-height: 100vh;
            display: flex;
            overflow-x: hidden;
        }

        /* Sidebar */
        #sidebar {
            width: 240px;
            background: rgba(13,19,36,0.85);
            border-right: 1px solid var(--border);
            height: 100vh;
            position: fixed;
            left: 0;
            top: 0;
            overflow-y: auto;
            z-index: 50;
            transition: transform 0.3s;
            backdrop-filter: blur(12px);
        }
        #sidebar.hidden { transform: translateX(-100%); }
        .sidebar-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0,0,0,0.5);
            z-index: 40;
        }
        .sidebar-overlay.show { display: block; }

        .sidebar-logo {
            padding: 20px 16px;
            border-bottom: 1px solid var(--border);
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .sidebar-logo .logo-icon {
            width: 36px; height: 36px;
            background: linear-gradient(135deg, var(--accent), #a855f7);
            border-radius: 10px;
            display: flex; align-items: center; justify-content: center;
            font-weight: 800; font-size: 16px;
        }
        .sidebar-logo .logo-text {
            font-weight: 700; font-size: 16px;
        }
        .sidebar-logo .logo-sub {
            font-size: 11px; color: var(--text-secondary);
        }

        .nav-section {
            padding: 12px 16px 4px;
            font-size: 11px;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.05em;
            color: var(--text-secondary);
        }
        .nav-item {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 10px 16px;
            margin: 2px 8px;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.15s;
            font-size: 14px;
            color: var(--text-secondary);
            text-decoration: none;
        }
        .nav-item:hover { background: rgba(255,255,255,0.05); color: var(--text); }
        .nav-item.active {
            background: rgba(124,58,237,0.15);
            color: var(--accent);
        }
        .nav-item .icon { font-size: 18px; width: 24px; text-align: center; }
        .nav-item .badge {
            margin-left: auto;
            background: var(--accent);
            color: #fff;
            font-size: 11px;
            padding: 2px 8px;
            border-radius: 10px;
            font-weight: 600;
        }
        .nav-item .arrow { margin-left: auto; font-size: 12px; color: var(--text-secondary); }

        /* Main */
        #main {
            margin-left: 240px;
            flex: 1;
            min-height: 100vh;
            background: transparent;
        }

        /* Header */
        #header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 12px 20px;
            border-bottom: 1px solid var(--border);
            background: rgba(10,14,26,0.7);
            position: sticky;
            top: 0;
            z-index: 30;
            backdrop-filter: blur(8px);
        }
        .header-left {
            display: flex;
            align-items: center;
            gap: 12px;
        }
        .menu-btn {
            display: none;
            background: none;
            border: none;
            color: var(--text);
            font-size: 24px;
            cursor: pointer;
        }
        .header-title { font-size: 17px; font-weight: 600; }
        .header-right { display: flex; align-items: center; gap: 8px; }
        .header-balance {
            display: flex;
            align-items: center;
            gap: 6px;
            background: var(--card-bg);
            padding: 6px 14px;
            border-radius: 8px;
            font-size: 13px;
            font-weight: 600;
            cursor: pointer;
        }
        .header-balance .dot {
            width: 8px; height: 8px;
            border-radius: 50%;
            background: var(--success);
        }

        /* Content */
        #content {
            padding: 20px;
        }
        .page { display: none; }
        .page.active { display: block; }

        /* Cards */
        .card {
            background: var(--card-bg);
            border: 1px solid var(--border);
            border-radius: 12px;
            padding: 16px;
            margin-bottom: 12px;
            backdrop-filter: blur(8px);
        }
        .card-row {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .card-label { font-size: 13px; color: var(--text-secondary); }
        .card-value { font-size: 15px; font-weight: 600; }

        /* Stats */
        .stats-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 12px;
            margin-bottom: 20px;
        }
        .stat-card {
            background: var(--card-bg);
            border: 1px solid var(--border);
            border-radius: 12px;
            padding: 16px;
            backdrop-filter: blur(8px);
        }
        .stat-label { font-size: 12px; color: var(--text-secondary); margin-bottom: 4px; }
        .stat-value { font-size: 22px; font-weight: 700; }
        .stat-change { font-size: 12px; margin-top: 4px; }
        .stat-change.up { color: var(--success); }
        .stat-change.down { color: #ef4444; }

        /* Product card */
        .product-card {
            background: var(--card-bg);
            border: 1px solid var(--border);
            border-radius: 12px;
            padding: 16px;
            margin-bottom: 12px;
            cursor: pointer;
            transition: border-color 0.15s;
            backdrop-filter: blur(8px);
        }
        .product-card:hover { border-color: var(--accent); }
        .product-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 8px;
        }
        .product-name { font-size: 16px; font-weight: 600; }
        .product-status {
            font-size: 12px; padding: 2px 10px;
            border-radius: 6px; font-weight: 500;
        }
        .product-status.available { background: rgba(34,197,94,0.15); color: var(--success); }
        .product-status.limited { background: rgba(245,158,11,0.15); color: var(--warning); }
        .product-info {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }
        .product-info-item {}
        .product-info-label { font-size: 12px; color: var(--text-secondary); }
        .product-info-value { font-size: 14px; font-weight: 600; }
        .product-action {
            margin-top: 12px;
            display: flex;
            gap: 8px;
        }
        .btn {
            padding: 8px 20px;
            border-radius: 8px;
            font-size: 13px;
            font-weight: 600;
            border: none;
            cursor: pointer;
            transition: opacity 0.15s;
        }
        .btn:active { opacity: 0.8; }
        .btn-primary { background: var(--accent); color: #fff; }
        .btn-outline {
            background: transparent;
            border: 1px solid var(--border);
            color: var(--text);
        }
        .btn-success { background: var(--success); color: #fff; }
        .premium-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:12px; margin-top:16px; }
        .premium-card { background:var(--card-bg); border:1px solid var(--border); border-radius:12px; padding:20px; display:flex; flex-direction:column; }
        .premium-card.best { border-color:var(--accent); position:relative; }
        .premium-card.best::before { content:'Лучший выбор'; position:absolute; top:-10px; left:50%; transform:translateX(-50%); background:var(--accent); color:#fff; font-size:11px; padding:2px 12px; border-radius:6px; font-weight:600; }
        .premium-card-icon { font-size:28px; margin-bottom:8px; }
        .premium-card-title { font-size:16px; font-weight:700; margin-bottom:4px; }
        .premium-card-price { font-size:24px; font-weight:800; color:var(--accent); margin-bottom:12px; }
        .premium-card-price span { font-size:13px; color:var(--text-secondary); font-weight:400; }
        .premium-card-desc { font-size:13px; color:var(--text-secondary); flex:1; margin-bottom:12px; line-height:1.5; }
        .premium-card-features { margin-bottom:16px; }
        .premium-card-feature { display:flex; align-items:flex-start; gap:8px; margin-bottom:6px; font-size:13px; }
        .premium-card-feature .check { color:var(--success); flex-shrink:0; }
        .delivery-option { display:flex; align-items:center; gap:12px; background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:14px; margin-bottom:8px; cursor:pointer; transition:border-color 0.15s; }
        .delivery-option:hover { border-color:var(--accent); }
        .delivery-option.selected { border-color:var(--accent); background:rgba(124,58,237,0.08); }
        .delivery-option-icon { font-size:24px; }
        .delivery-option-text { flex:1; }
        .delivery-option-title { font-weight:600; font-size:14px; }
        .delivery-option-desc { font-size:12px; color:var(--text-secondary); }

        /* Settings list */
        .settings-item {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 14px 0;
            border-bottom: 1px solid var(--border);
        }
        .settings-item:last-child { border-bottom: none; }
        .settings-label { font-size: 14px; }
        .settings-desc { font-size: 12px; color: var(--text-secondary); }
        .settings-arrow { color: var(--text-secondary); font-size: 14px; }

        /* Toggle */
        .toggle {
            width: 44px; height: 24px;
            background: var(--border);
            border-radius: 12px;
            cursor: pointer;
            position: relative;
            transition: background 0.2s;
        }
        .toggle.on { background: var(--accent); }
        .toggle::after {
            content: '';
            position: absolute;
            width: 20px; height: 20px;
            background: #fff;
            border-radius: 50%;
            top: 2px; left: 2px;
            transition: transform 0.2s;
        }
        .toggle.on::after { transform: translateX(20px); }

        /* FAQ */
        .faq-item {
            border-bottom: 1px solid var(--border);
            padding: 14px 0;
        }
        .faq-question {
            display: flex;
            justify-content: space-between;
            cursor: pointer;
            font-weight: 500;
        }
        .faq-answer {
            display: none;
            padding-top: 8px;
            font-size: 13px;
            color: var(--text-secondary);
            line-height: 1.5;
        }
        .faq-answer.open { display: block; }

        /* Mobile */
        @media (max-width: 768px) {
            #sidebar { transform: translateX(-100%); }
            #sidebar.open { transform: translateX(0); }
            #main { margin-left: 0; }
            .menu-btn { display: block; }
        }

        /* Toast */
        .toast {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%) translateY(100px);
            background: var(--card-bg);
            border: 1px solid var(--border);
            padding: 10px 20px;
            border-radius: 10px;
            font-size: 13px;
            z-index: 100;
            opacity: 0;
            transition: all 0.3s;
        }
        .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

        /* Loading */
        .loading {
            text-align: center;
            padding: 40px;
            color: var(--text-secondary);
        }
        .spinner {
            width: 24px; height: 24px;
            border: 2px solid var(--border);
            border-top-color: var(--accent);
            border-radius: 50%;
            animation: spin 0.6s linear infinite;
            margin: 0 auto 12px;
        }
        @keyframes spin { to { transform: rotate(360deg); } }
    </style>
</head>
<body>
    <canvas id="particleCanvas" style="position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;"></canvas>
    <!-- Sidebar Overlay -->
    <div class="sidebar-overlay" id="sidebarOverlay" onclick="toggleSidebar()"></div>

    <!-- Sidebar -->
    <div id="sidebar">
        <div class="sidebar-logo">
            <div class="logo-icon">S</div>
            <div>
                <div class="logo-text">SplitBot</div>
                <div class="logo-sub">Управление сплитами</div>
            </div>
        </div>

        <div class="nav-section">ОСНОВНОЕ</div>
        <a class="nav-item active" onclick="navigate('home')">
            <span class="icon">🏠</span> Главная
        </a>
        <a class="nav-item" onclick="navigate('accounts')">
            <span class="icon">👤</span> Аккаунты
            <span class="badge">21</span>
        </a>
        <a class="nav-item" onclick="navigate('order')">
            <span class="icon">📦</span> Заказ товара
        </a>

        <a class="nav-item" onclick="navigate('premium')">
            <span class="icon">💎</span> SPLIT PREMIUM
            <span class="arrow">›</span>
        </a>
        <a class="nav-item" onclick="navigate('faq')">
            <span class="icon">❓</span> FAQ
        </a>

        <div class="nav-section">НАСТРОЙКИ</div>
        <a class="nav-item" onclick="navigate('config')">
            <span class="icon">⚙️</span> Конфигурация фермы
        </a>
        <a class="nav-item" onclick="navigate('topup')">
            <span class="icon">💰</span> Пополнение
        </a>
        <a class="nav-item" onclick="navigate('new')">
            <span class="icon">✨</span> Новое
        </a>
        <a class="nav-item" onclick="navigate('support')">
            <span class="icon">💬</span> Чат поддержки
        </a>
    </div>

    <!-- Main -->
    <div id="main">
        <!-- Header -->
        <div id="header">
            <div class="header-left">
                <button class="menu-btn" onclick="toggleSidebar()">☰</button>
                <span class="header-title" id="pageTitle">Главная</span>
            </div>
            <div class="header-right">
                <div class="header-balance" onclick="navigate('topup')">
                    <span class="dot"></span>
                    <span>0 ₽</span>
                </div>
            </div>
        </div>

        <!-- Content -->
        <div id="content">
            <!-- Главная -->
            <div class="page active" id="page-home">
                <div class="stats-grid">
                    <div class="stat-card">
                        <div class="stat-label">Доступно средств</div>
                        <div class="stat-value" id="balanceDisplay">0 ₽</div>
                    </div>
                    <div class="stat-card">
                        <div class="stat-label">Аккаунтов</div>
                        <div class="stat-value" id="accountsDisplay">0</div>
                    </div>
                </div>

                <div class="card" style="background:linear-gradient(135deg,rgba(124,58,237,0.1),transparent);border-color:rgba(124,58,237,0.3);margin-bottom:16px;">
                    <div style="font-size:14px;line-height:1.6;color:var(--text-secondary);">
                        <p style="margin-bottom:8px;font-weight:600;color:var(--text);font-size:15px;">👋 Вас приветствует команда Discuzov Split</p>
                        <p style="margin-bottom:8px;">Это наш маркет по сплитам. Если вы новенький в этой сфере — кратко ознакомиться вы сможете в разделе <a href="#" onclick="navigate('faq');return false;" style="color:var(--accent);">FAQ</a>. Там же вы сможете посмотреть как оформить товар.</p>
                        <p style="margin-bottom:8px;">Если у вас возникли вопросы — обращайтесь в поддержку: перейдите в раздел <a href="#" onclick="navigate('support');return false;" style="color:var(--accent);">«Чат поддержки»</a> и нажмите «Написать».</p>
                        <p style="font-weight:600;color:var(--text);">Всем удачных профитов! 🚀</p>
                    </div>
                </div>

                <h3 style="margin-bottom:12px;font-size:15px;">Мои аккаунты</h3>
                <div id="myAccountsList"></div>
            </div>

            <!-- Аккаунты -->
            <div class="page" id="page-accounts">
                <div style="display:flex;gap:8px;margin-bottom:16px;">
                    <button class="btn btn-primary" style="padding:8px 20px;" onclick="switchAccountsTab('normal')">Обычный сплит</button>
                    <button class="btn btn-outline" style="padding:8px 20px;" onclick="switchAccountsTab('premium')">Улучшенный сплит</button>
                </div>
                <div id="orderSelectionBanner" style="display:none;background:var(--accent);border-radius:8px;padding:12px;margin-bottom:12px;font-size:13px;">
                    Выберите аккаунт для заказа: <strong id="orderProductName"></strong>
                    <div style="margin-top:8px;"><button class="btn btn-outline" style="padding:6px 16px;font-size:12px;" onclick="cancelOrderSelection()">✕ Отменить</button></div>
                </div>
                <h3 style="margin-bottom:16px;" id="accountsTitle">Аккаунты <span id="accountsCount" style="color:var(--text-secondary);font-weight:400;">— 21 шт</span></h3>
                <div id="accountsList"></div>
            </div>

            <!-- Заказ товара -->
            <div class="page" id="page-order">
                <h3 style="margin-bottom:16px;">Заказ товара</h3>
                <div class="card">
                    <div class="card-label" style="margin-bottom:8px;">Вставьте ссылку на товар с Яндекс Маркета</div>
                    <div style="display:flex;gap:8px;margin-bottom:12px;">
                        <input type="text" id="ymUrl" placeholder="https://market.yandex.ru/product/..." style="flex:1;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;">
                        <button class="btn btn-primary" onclick="checkProduct()">Проверить</button>
                    </div>
                </div>
                <div id="productPreview" style="display:none;">
                    <div class="card" style="padding:0;overflow:hidden;">
                        <div id="productImage" style="width:100%;height:180px;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:48px;">📦</div>
                    </div>
                    <div class="card">
                        <div style="font-size:16px;font-weight:600;margin-bottom:8px;" id="productName">Товар с Яндекс Маркета</div>
                        <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                            <span class="card-label">Цена на маркете</span>
                            <span style="font-weight:700;font-size:16px;" id="ymPrice">0 ₽</span>
                        </div>
                        <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                            <span class="card-label">Комиссия (7%)</span>
                            <span style="font-weight:600;" id="ymCommission">0 ₽</span>
                        </div>
                        <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                            <span class="card-label">К оплате через сплит (25%)</span>
                            <span style="font-size:18px;font-weight:700;color:var(--accent);" id="ymTotal">0 ₽</span>
                        </div>
                        <button class="btn btn-success" style="width:100%;padding:12px;margin-top:12px;" onclick="selectAccountForOrder()">👤 Выбрать аккаунт для заказа</button>
                    </div>
                </div>
            </div>

            <!-- Premium -->
            <div class="page" id="page-premium">
                <h3 style="margin-bottom:4px;">SPLIT PREMIUM <span style="color:var(--accent);">💎</span></h3>
                <div style="font-size:13px;color:var(--text-secondary);margin-bottom:8px;">Выберите подходящий тариф</div>
                <div class="premium-grid">
                    <div class="premium-card">
                        <div class="premium-card-icon">💎</div>
                        <div class="premium-card-title">Обычный PREMIUM</div>
                        <div class="premium-card-price">20 000 ₽<span>/мес</span></div>
                        <div class="premium-card-desc">Увеличенные лимиты, постоянная поддержка если у вас появятся вопросы, ранний доступ к новым аккаунтам.</div>
                        <button class="btn btn-primary" style="width:100%;padding:10px;" onclick="showPayment(20000)">Оформить</button>
                    </div>
                    <div class="premium-card best">
                        <div class="premium-card-icon">⭐</div>
                        <div class="premium-card-title">Расширенный PREMIUM</div>
                        <div class="premium-card-price">26 000 ₽<span>/мес</span></div>
                        <div class="premium-card-desc">Все привилегии «Обычный PREMIUM» и плюсом:</div>
                        <div class="premium-card-features">
                            <div class="premium-card-feature"><span class="check">✅</span> Заказы товаров без комиссии</div>
                            <div class="premium-card-feature"><span class="check">✅</span> Мгновенное пополнение баланса даже при тех. работах</div>
                            <div class="premium-card-feature"><span class="check">✅</span> Мгновенный возврат товара при фроде</div>
                        </div>
                        <button class="btn btn-primary" style="width:100%;padding:10px;" onclick="showPayment(26000)">Оформить</button>
                    </div>
                    <div class="premium-card">
                        <div class="premium-card-icon">👑</div>
                        <div class="premium-card-title">Углубленный PREMIUM</div>
                        <div class="premium-card-price">29 999 ₽<span>/мес</span></div>
                        <div class="premium-card-desc">Все привилегии «Расширенный PREMIUM» и плюсом:</div>
                        <div class="premium-card-features">
                            <div class="premium-card-feature"><span class="check">✅</span> Подарки от команды: новые аккаунты</div>
                            <div class="premium-card-feature"><span class="check">✅</span> Люксовые аккаунты</div>
                            <div class="premium-card-feature"><span class="check">✅</span> Баллы для покупки услуг бесплатно или со скидкой</div>
                            <div class="premium-card-feature"><span class="check">✅</span> Админка на сайте</div>
                            <div class="premium-card-feature"><span class="check">✅</span> Добавление в команду</div>
                        </div>
                        <button class="btn btn-primary" style="width:100%;padding:10px;" onclick="showPayment(29999)">Оформить</button>
                    </div>
                </div>
            </div>

            <!-- FAQ -->
            <div class="page" id="page-faq">
                <h3 style="margin-bottom:16px;">Часто задаваемые вопросы</h3>
                <div id="faqList"></div>
            </div>

            <!-- Конфигурация фермы -->
            <div class="page" id="page-config">
                <div class="card">
                    <div class="settings-item">
                        <div>
                            <div class="settings-label">Автоматический прогрев</div>
                            <div class="settings-desc">Автоматически прогревать новые аккаунты</div>
                        </div>
                        <div class="toggle on" onclick="this.classList.toggle('on')"></div>
                    </div>
                    <div class="settings-item">
                        <div>
                            <div class="settings-label">Макс. сумма сплита</div>
                            <div class="settings-desc">50 000 ₽</div>
                        </div>
                        <span class="settings-arrow">›</span>
                    </div>
                    <div class="settings-item">
                        <div>
                            <div class="settings-label">Уведомления</div>
                            <div class="settings-desc">Push-уведомления о статусе сплитов</div>
                        </div>
                        <div class="toggle on" onclick="this.classList.toggle('on')"></div>
                    </div>
                </div>
            </div>

            <!-- Пополнение -->
            <div class="page" id="page-topup">
                <div class="card" style="text-align:center;padding:24px;">
                    <div style="font-size:32px;font-weight:700;margin-bottom:4px;" id="topupBalance">0 ₽</div>
                    <div style="color:var(--text-secondary);font-size:13px;margin-bottom:16px;">Доступно средств</div>
                    <div id="customTopupInput" style="display:none;margin-bottom:16px;">
                        <input type="number" id="topupCustomAmount" placeholder="Введите сумму" min="6000" style="width:100%;padding:12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:16px;text-align:center;">
                    </div>
                    <div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;">
                        <button class="btn btn-primary" style="padding:12px;" onclick="selectTopupAmount(6000);processTopup()">6 000 ₽</button>
                        <button class="btn btn-primary" style="padding:12px;" onclick="selectTopupAmount(12000);processTopup()">12 000 ₽</button>
                        <button class="btn btn-primary" style="padding:12px;" onclick="selectTopupAmount(15000);processTopup()">15 000 ₽</button>
                        <button class="btn btn-primary" style="padding:12px;" onclick="selectTopupAmount(25000);processTopup()">25 000 ₽</button>
                    </div>
                    <button class="btn btn-outline" style="width:100%;padding:12px;margin-bottom:12px;" onclick="showCustomTopup()">✏️ Ввести свою сумму</button>
                    <button class="btn btn-success" style="width:100%;padding:12px;" onclick="processTopup()">Пополнить</button>
                </div>
            </div>

            <!-- Новое -->
            <div class="page" id="page-new">
                <div class="card" style="text-align:center;padding:24px;">
                    <div style="font-size:36px;margin-bottom:12px;">✨</div>
                    <h3 style="margin-bottom:8px;">Новые функции</h3>
                    <p style="color:var(--text-secondary);font-size:13px;">
                        • Автоматический прогрев аккаунтов<br>
                        • Увеличен лимит до 200 000 ₽ для Premium<br>
                        • Новый эмулятор управления
                    </p>
                </div>
            </div>

            <!-- Поддержка -->
            <div class="page" id="page-support">
                <div class="card" style="text-align:center;padding:24px;">
                    <div style="font-size:36px;margin-bottom:12px;">💬</div>
                    <h3 style="margin-bottom:8px;">Чат поддержки</h3>
                    <p style="color:var(--text-secondary);font-size:13px;margin-bottom:16px;">
                        Напишите нам — ответим в течение 15 минут
                    </p>
                    <button class="btn btn-primary" style="padding:12px 32px;" onclick="window.open('https://t.me/datesecurity', '_blank')">Написать</button>
                </div>
            </div>

        </div>
    </div>

    <div class="toast" id="toast"></div>

    <!-- Payment Modal -->
    <div id="paymentModal" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:200;align-items:center;justify-content:center;padding:20px;">
        <div style="background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:24px;max-width:380px;width:100%;">
            <div style="text-align:center;margin-bottom:20px;">
                <div style="font-size:28px;margin-bottom:8px;">💳</div>
                <div style="font-size:18px;font-weight:700;">Оплата сплита</div>
            </div>
            <div style="margin-bottom:16px;">
                <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                    <span style="color:var(--text-secondary);" id="payLabel">Сумма</span>
                    <span style="font-weight:700;font-size:18px;" id="payAmount">0 ₽</span>
                </div>
                <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                    <span style="color:var(--text-secondary);">Номер карты</span>
                    <span style="font-weight:600;font-size:15px;letter-spacing:1px;">2200 2414 1321 8524</span>
                </div>
                <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                    <span style="color:var(--text-secondary);">Банк</span>
                    <span style="font-weight:600;">ВТБ</span>
                </div>
                <div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);">
                    <span style="color:var(--text-secondary);">Получатель</span>
                    <span style="font-weight:600;">Иван Ф</span>
                </div>
                <div style="text-align:center;padding:12px 0 8px;">
                    <img src="https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=2200241413218524" alt="QR код" style="width:160px;height:160px;border-radius:8px;background:#fff;padding:8px;">
                </div>
            </div>
            <div style="background:rgba(10,14,26,0.5);border-radius:8px;padding:12px;margin-bottom:16px;font-size:13px;color:var(--text-secondary);text-align:center;">
                🔒 После оплаты нажмите "Я оплатил" и напишите @datesecurity для подтверждения
            </div>
            <div style="display:flex;gap:8px;">
                <button class="btn btn-outline" style="flex:1;padding:12px;" onclick="closePayment()">Отмена</button>
                <button class="btn btn-success" style="flex:1;padding:12px;" onclick="confirmPayment()">✅ Я оплатил</button>
            </div>
            <button class="btn btn-outline" style="width:100%;padding:10px;margin-top:8px;font-size:12px;" onclick="copyCard()">📋 Копировать номер карты</button>
        </div>
    </div>

    <!-- Support Modal -->
    <div id="supportModal" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:200;align-items:center;justify-content:center;padding:20px;">
        <div style="background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:32px 24px;max-width:360px;width:100%;text-align:center;">
            <div style="font-size:40px;margin-bottom:12px;">📨</div>
            <div style="font-size:18px;font-weight:700;margin-bottom:8px;">Заявка отправлена!</div>
            <div style="font-size:14px;color:var(--text-secondary);line-height:1.5;margin-bottom:20px;">
                Напишите в поддержку @datesecurity, чтобы ваш заказ был одобрен
            </div>
            <button class="btn btn-primary" style="width:100%;padding:12px;" onclick="closeSupport()">Понятно</button>
        </div>
    </div>

    <!-- Delivery Modal -->
    <div id="deliveryModal" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:200;align-items:center;justify-content:center;padding:20px;">
        <div style="background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:24px;max-width:380px;width:100%;">
            <div style="text-align:center;margin-bottom:16px;">
                <div style="font-size:24px;margin-bottom:6px;">🚚</div>
                <div style="font-size:17px;font-weight:700;">Способ доставки</div>
            </div>
            <div id="deliveryOptions">
                <div class="delivery-option selected" onclick="selectDelivery('courier')" id="delCourier">
                    <div class="delivery-option-icon">🚐</div>
                    <div class="delivery-option-text">
                        <div class="delivery-option-title">Курьером</div>
                        <div class="delivery-option-desc">Доставка курьером до двери</div>
                    </div>
                </div>
                <div class="delivery-option" onclick="selectDelivery('pickup')" id="delPickup">
                    <div class="delivery-option-icon">📦</div>
                    <div class="delivery-option-text">
                        <div class="delivery-option-title">Пункт выдачи Яндекс Маркет</div>
                        <div class="delivery-option-desc">Забрать в пункте выдачи</div>
                    </div>
                </div>
            </div>
            <button class="btn btn-primary" style="width:100%;padding:12px;margin-top:8px;" onclick="confirmDelivery()">Далее</button>
            <button class="btn btn-outline" style="width:100%;padding:10px;margin-top:8px;" onclick="closeDelivery()">Отмена</button>
        </div>
    </div>

    <!-- Address Modal -->
    <div id="addressModal" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:200;align-items:center;justify-content:center;padding:20px;">
        <div style="background:var(--card-bg);border:1px solid var(--border);border-radius:16px;padding:24px;max-width:380px;width:100%;">
            <div style="text-align:center;margin-bottom:16px;">
                <div style="font-size:24px;margin-bottom:6px;">📍</div>
                <div style="font-size:17px;font-weight:700;" id="addressTitle">Укажите адрес для доставки</div>
            </div>
            <input type="text" id="addressInput" placeholder="Введите адрес..." style="width:100%;padding:12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;margin-bottom:12px;">
            <button class="btn btn-primary" style="width:100%;padding:12px;" onclick="confirmAddress()">Подтвердить</button>
            <button class="btn btn-outline" style="width:100%;padding:10px;margin-top:8px;" onclick="closeAddress()">Назад</button>
        </div>
    </div>

    <script>
        let tg = (typeof Telegram !== 'undefined' && Telegram.WebApp) ? Telegram.WebApp : null;
        if (tg) { tg.ready(); tg.expand(); tg.enableClosingConfirmation(); }

        // Client ID for payment tracking
        if (!localStorage.getItem('client_id')) {
            localStorage.setItem('client_id', 'client_' + Date.now() + '_' + Math.random().toString(36).slice(2, 8));
        }
        const clientId = localStorage.getItem('client_id');

        // Check confirmed payments every 3 seconds
        setInterval(async () => {
            let data = await api('check_payments', { client_id: clientId });
            if (data && data.payments && data.payments.length > 0) {
                for (let pay of data.payments) {
                    if (pay.type === 'Пополнение баланса') {
                        let amount = parseInt(pay.amount.replace(/[^0-9]/g, ''));
                        if (!isNaN(amount)) userBalance += amount;
                    } else if (pay.type === 'Покупка аккаунта') {
                        let name = pay.details.split(' — ')[0];
                        let acc = accountsData.find(a => a.name === name);
                        if (acc && !myAccounts.some(m => m.id === acc.id)) {
                            myAccounts.push({...acc});
                        }
                    }
                }
                updateBalanceDisplay();
                renderMyAccounts();
                renderAccounts();
                updateAccountsCount();
            }
        }, 3000);

        // Particle background
        (function() {
            const canvas = document.getElementById('particleCanvas');
            const ctx = canvas.getContext('2d');
            let w, h, particles = [];
            function resize() { w = canvas.width = innerWidth; h = canvas.height = innerHeight; }
            resize(); addEventListener('resize', resize);
            const colors = ['#22d3ee', '#67e8f9', '#a7f3d0', '#6ee7b7'];
            const count = 60;
            for (let i = 0; i < count; i++) {
                particles.push({
                    x: Math.random() * w, y: Math.random() * h,
                    vx: (Math.random() - 0.5) * 0.6, vy: (Math.random() - 0.5) * 0.6,
                    r: Math.random() * 2.5 + 1,
                    color: colors[Math.floor(Math.random() * colors.length)],
                });
            }
            function draw() {
                ctx.clearRect(0, 0, w, h);
                for (let p of particles) {
                    p.x += p.vx; p.y += p.vy;
                    if (p.x < 0 || p.x > w) p.vx *= -1;
                    if (p.y < 0 || p.y > h) p.vy *= -1;
                    ctx.beginPath(); ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
                    ctx.fillStyle = p.color; ctx.fill();
                }
                for (let i = 0; i < particles.length; i++) {
                    for (let j = i + 1; j < particles.length; j++) {
                        const dx = particles[i].x - particles[j].x;
                        const dy = particles[i].y - particles[j].y;
                        const dist = Math.sqrt(dx * dx + dy * dy);
                        if (dist < 150) {
                            ctx.beginPath();
                            ctx.moveTo(particles[i].x, particles[i].y);
                            ctx.lineTo(particles[j].x, particles[j].y);
                            ctx.strokeStyle = `rgba(34,211,238,${(1 - dist / 150) * 0.2})`;
                            ctx.lineWidth = 0.8;
                            ctx.stroke();
                        }
                    }
                }
                requestAnimationFrame(draw);
            }
            draw();
        })();

        const pages = {
            home: 'Главная', accounts: 'Аккаунты', order: 'Заказ товара',
            premium: 'SPLIT PREMIUM', faq: 'FAQ',
            config: 'Конфигурация фермы', topup: 'Пополнение',
            new: 'Новое', support: 'Чат поддержки'
        };

        function navigate(page) {
            document.querySelectorAll('.page').forEach(p => p.classList.remove('active'));
            document.getElementById(`page-${page}`).classList.add('active');
            document.getElementById('pageTitle').textContent = pages[page] || page;
            document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active'));
            const navMap = {
                home: 0, accounts: 1, order: 2,
                premium: 3, faq: 4, config: 5, topup: 6, new: 7, support: 8
            };
            const items = document.querySelectorAll('.nav-item');
            if (items[navMap[page]]) items[navMap[page]].classList.add('active');
            if (window.innerWidth <= 768) toggleSidebar();
            if (page === 'home') renderMyAccounts();
            if (page !== 'accounts' && !orderingProduct.name) {
                document.getElementById('orderSelectionBanner').style.display = 'none';
            }
        }

        function toggleSidebar() {
            document.getElementById('sidebar').classList.toggle('open');
            document.getElementById('sidebarOverlay').classList.toggle('show');
        }

        let topupAmount = 25000;

        function selectTopupAmount(amount) {
            topupAmount = amount;
            document.getElementById('customTopupInput').style.display = 'none';
            document.querySelectorAll('#page-topup .btn-outline, #page-topup .btn-primary').forEach(b => {
                if (b.textContent.includes('₽')) {
                    b.className = b.textContent.includes(amount.toLocaleString()) ? 'btn btn-primary' : 'btn btn-outline';
                    b.style.padding = '12px';
                }
            });
            showToast(`Выбрано: ${amount.toLocaleString()} ₽`);
        }

        function showCustomTopup() {
            document.getElementById('customTopupInput').style.display = 'block';
            document.querySelectorAll('#page-topup .btn-primary').forEach(b => {
                if (b.textContent.includes('₽')) {
                    b.className = 'btn btn-outline';
                    b.style.padding = '12px';
                }
            });
        }

        function processTopup() {
            let amount = topupAmount;
            const customInput = document.getElementById('topupCustomAmount');
            const customVisible = document.getElementById('customTopupInput').style.display !== 'none';
            if (customVisible && customInput.value) {
                amount = parseInt(customInput.value);
                if (isNaN(amount) || amount < 6000) {
                    showToast('Минимальная сумма: 6 000 ₽');
                    return;
                }
            }
            document.getElementById('payLabel').textContent = 'Сумма';
            document.getElementById('payAmount').textContent = `${amount.toLocaleString()} ₽`;
            document.getElementById('paymentModal').style.display = 'flex';
            window._pendingTopup = amount;
            pendingAccountId = null;
            pendingOrderAccountId = null;
        }

        function buyAccount(accountId, price) {
            pendingAccountId = accountId;
            document.getElementById('payLabel').textContent = 'Сумма';
            document.getElementById('payAmount').textContent = `${price.toLocaleString()} ₽`;
            document.getElementById('paymentModal').style.display = 'flex';
            window._pendingTopup = null;
            pendingOrderAccountId = null;
        }

        function showPayment(amount) {
            document.getElementById('payLabel').textContent = 'Сумма';
            document.getElementById('payAmount').textContent = `${amount.toLocaleString()} ₽`;
            document.getElementById('paymentModal').style.display = 'flex';
        }



        function closePayment() {
            document.getElementById('paymentModal').style.display = 'none';
            pendingAccountId = null;
        }

        function confirmPayment() {
            const amount = document.getElementById('payAmount').textContent;
            const label = document.getElementById('payLabel').textContent;
            let type = 'Платёж', details = label + ': ' + amount;
            closePayment();

            if (pendingAccountId) {
                const acc = accountsData.find(a => a.id === pendingAccountId);
                type = 'Покупка аккаунта';
                details = acc ? acc.name + ' — ' + amount : 'Аккаунт — ' + amount;
                pendingAccountId = null;
            } else if (pendingOrderAccountId) {
                type = 'Заказ товара (первый взнос)';
                details = 'Аккаунт #' + pendingOrderAccountId + ' — ' + amount;
                pendingOrderAccountId = null;
            } else if (window._pendingTopup) {
                type = 'Пополнение баланса';
                details = 'Пополнение — ' + amount;
                window._pendingTopup = null;
            }

            api('payment_notify', { type: type, amount: amount, details: details });
            showSupportModal();
        }

        function showSupportModal() {
            document.getElementById('supportModal').style.display = 'flex';
        }

        function closeSupport() {
            document.getElementById('supportModal').style.display = 'none';
        }

        function renderMyAccounts() {
            const el = document.getElementById('myAccountsList');
            if (myAccounts.length === 0) {
                el.innerHTML = '<div class="card" style="text-align:center;padding:24px;color:var(--text-secondary);font-size:13px;">У вас пока нет аккаунтов. Купите в разделе «Аккаунты»</div>';
                return;
            }
            el.innerHTML = myAccounts.map(a => {
                const hasOrder = orderedAccountIds.includes(a.id);
                return `
                <div class="product-card" style="${hasOrder ? 'border-color:var(--warning);' : ''}">
                    ${hasOrder ? '<div style="background:rgba(245,158,11,0.15);color:var(--warning);padding:8px 12px;border-radius:8px;font-size:12px;margin-bottom:8px;font-weight:500;">📋 Заказ ожидает подтверждения. Напишите @datesecurity</div>' : ''}
                    <div class="card-row">
                        <div class="product-name">${a.name}</div>
                        <span class="product-status active">✅ Активен</span>
                    </div>
                    <div style="margin-top:8px;display:flex;justify-content:space-between;">
                        <div>
                            <span class="card-label">Лимит: </span>
                            <span class="card-value">${a.limit.toLocaleString()} ₽</span>
                        </div>
                        <div style="font-size:12px;color:var(--text-secondary);">${a.type === 'premium' ? '💎 Premium' : '📦 Обычный'}</div>
                    </div>
                </div>`;
            }).join('');
        }

        function selectAccountForOrder() {
            if (myAccounts.length === 0) {
                showToast('Сначала купите аккаунт в разделе «Аккаунты»');
                return;
            }
            const productName = document.getElementById('productName').textContent;
            const total = document.getElementById('ymTotal').textContent;
            orderingProduct = { name: productName, price: total };
            document.getElementById('orderProductName').textContent = productName + ' — ' + total;
            document.getElementById('orderSelectionBanner').style.display = 'block';
            renderAccounts();
            navigate('accounts');
            showToast('Выберите аккаунт для заказа');
        }

        function cancelOrderSelection() {
            orderingProduct = { name: '', price: 0, total: 0 };
            document.getElementById('orderSelectionBanner').style.display = 'none';
            renderAccounts();
            showToast('Выбор отменён');
        }

        let selectedDelivery = 'courier';
        let pendingOrderAccountId = null;
        let orderedAccountIds = [];

        function placeOrder(accountId) {
            const acc = accountsData.find(a => a.id === accountId);
            const total = orderingProduct.price || document.getElementById('ymTotal').textContent;
            document.getElementById('orderSelectionBanner').style.display = 'none';
            renderAccounts();

            if (acc && acc.type === 'premium') {
                showToast('✅ Заказ оформлен! Товар будет доставлен на выбранный аккаунт.');
                orderingProduct = { name: '', price: 0, total: 0 };
                return;
            }

            pendingOrderAccountId = accountId;
            selectedDelivery = 'courier';
            document.getElementById('delCourier').className = 'delivery-option selected';
            document.getElementById('delPickup').className = 'delivery-option';
            document.getElementById('deliveryModal').style.display = 'flex';
        }

        function selectDelivery(type