<?php
// Evita que o painel trave ao processar backups grandes
ini_set('memory_limit', '-1'); 
set_time_limit(0);

session_start();
require_once 'config.php';

$pdo = getConexaoAtiva();
$pdo->exec("SET NAMES utf8mb4");

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---
$nome_painel = 'TOP IPTV';
$logo_url = '';
$cor_primaria = '#007bff';

try {
    $tabela_existe = $pdo->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        $config_painel = $pdo->query("SELECT * FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC);
        if ($config_painel) {
            $nome_painel = !empty($config_painel['nome_painel']) ? $config_painel['nome_painel'] : $nome_painel;
            $logo_url = !empty($config_painel['logo_url']) ? $config_painel['logo_url'] : $logo_url;
            $cor_primaria = !empty($config_painel['cor_primaria']) ? $config_painel['cor_primaria'] : $cor_primaria;
        }
    }
} catch (Exception $e) {}

if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit; }

$role = $_SESSION['user_role'] ?? 'reseller'; 
$nome_usuario = $_SESSION['username'] ?? 'Usuário';
$user_id_logado = $_SESSION['user_id'];

// SOMENTE ADMIN PODE FAZER BACKUP
if ($role !== 'admin') {
    header("Location: dashboard.php");
    exit;
}

try { $user_credits = $pdo->query("SELECT credits FROM reg_users WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0; } catch (Exception $e) { $user_credits = 0; }

$mensagem = "";

// ==============================================================================
// 1. ROTINA DE GERAR BACKUP (DOWNLOAD)
// ==============================================================================
if (isset($_POST['fazer_backup'])) {
    $tables = [];
    $stmt = $pdo->query("SHOW TABLES");
    while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
        $tables[] = $row[0];
    }

    $sql_dump = "-- ==========================================================\n";
    $sql_dump .= "-- Backup do Painel: " . $nome_painel . "\n";
    $sql_dump .= "-- Data de Geração: " . date('d/m/Y H:i:s') . "\n";
    $sql_dump .= "-- ==========================================================\n\n";
    $sql_dump .= "SET FOREIGN_KEY_CHECKS=0;\n\n";

    foreach ($tables as $table) {
        $sql_dump .= "-- Estrutura da tabela `$table`\n";
        $sql_dump .= "DROP TABLE IF EXISTS `$table`;\n";
        
        $row2 = $pdo->query("SHOW CREATE TABLE `$table`")->fetch(PDO::FETCH_NUM);
        $sql_dump .= $row2[1] . ";\n\n";

        $stmt_data = $pdo->query("SELECT * FROM `$table`");
        $linhas = $stmt_data->fetchAll(PDO::FETCH_ASSOC);
        
        if (count($linhas) > 0) {
            $sql_dump .= "-- Dados da tabela `$table`\n";
            foreach ($linhas as $row_data) {
                $keys = array_keys($row_data);
                $keys_str = "`" . implode("`, `", $keys) . "`";
                $values_str = "";
                foreach ($row_data as $v) {
                    if ($v === null) {
                        $values_str .= "NULL,";
                    } else {
                        // O PDO::quote trata as aspas e previne erros na hora de restaurar
                        $values_str .= $pdo->quote($v) . ","; 
                    }
                }
                $values_str = rtrim($values_str, ",");
                $sql_dump .= "INSERT INTO `$table` ($keys_str) VALUES ($values_str);\n";
            }
            $sql_dump .= "\n\n";
        }
    }
    $sql_dump .= "SET FOREIGN_KEY_CHECKS=1;\n";

    // Força o navegador a baixar o arquivo
    $nome_arquivo = 'backup_' . preg_replace('/[^A-Za-z0-9_]/', '', str_replace(' ', '_', strtolower($nome_painel))) . '_' . date('Y-m-d_H-i') . '.sql';
    header('Content-Type: application/sql');
    header('Content-Disposition: attachment; filename="' . $nome_arquivo . '"');
    header('Content-Length: ' . strlen($sql_dump));
    echo $sql_dump;
    exit;
}

// ==============================================================================
// 2. ROTINA DE RESTAURAR BACKUP (IMPORTAR .SQL)
// ==============================================================================
if (isset($_POST['importar_backup']) && isset($_FILES['arquivo_sql'])) {
    $arquivo = $_FILES['arquivo_sql']['tmp_name'];
    $nome_arq = $_FILES['arquivo_sql']['name'];
    
    if (empty($arquivo)) {
        $mensagem = "<div class='alert error' style='background:rgba(220,53,69,0.1); border:1px solid var(--danger); color:var(--danger); padding:15px; border-radius:8px; margin-bottom:20px;'><i class='fas fa-times-circle'></i> Por favor, selecione um arquivo .sql para restaurar.</div>";
    } else {
        $extensao = strtolower(pathinfo($nome_arq, PATHINFO_EXTENSION));
        if ($extensao !== 'sql') {
            $mensagem = "<div class='alert error' style='background:rgba(220,53,69,0.1); border:1px solid var(--danger); color:var(--danger); padding:15px; border-radius:8px; margin-bottom:20px;'><i class='fas fa-times-circle'></i> Formato inválido! Envie apenas arquivos .sql.</div>";
        } else {
            try {
                // Leitura Linha a Linha (Protege contra arquivos gigantes)
                $templine = '';
                $lines = file($arquivo);
                
                $pdo->exec("SET FOREIGN_KEY_CHECKS=0;");
                foreach ($lines as $line) {
                    // Pula comentários e linhas vazias
                    if (substr($line, 0, 2) == '--' || $line == '') continue;
                    
                    $templine .= $line;
                    
                    // Se a linha termina com ponto e vírgula, executa o comando
                    if (substr(trim($line), -1, 1) == ';') {
                        $pdo->exec($templine);
                        $templine = '';
                    }
                }
                $pdo->exec("SET FOREIGN_KEY_CHECKS=1;");
                
                $mensagem = "<div class='alert success' style='background:rgba(40,167,69,0.1); border:1px solid var(--success); color:var(--success); padding:15px; border-radius:8px; margin-bottom:20px;'><i class='fas fa-check-circle'></i> <b>Backup Restaurado com Sucesso!</b> O banco de dados foi atualizado.</div>";
                
            } catch (Exception $e) {
                $mensagem = "<div class='alert error' style='background:rgba(220,53,69,0.1); border:1px solid var(--danger); color:var(--danger); padding:15px; border-radius:8px; margin-bottom:20px;'><i class='fas fa-exclamation-triangle'></i> <b>Erro ao restaurar:</b> " . $e->getMessage() . "</div>";
            }
        }
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Backup do Sistema - <?php echo htmlspecialchars($nome_painel); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        :root { 
            --bg-dark: #0f1114; 
            --bg-sidebar: #1e2227; 
            --bg-card: #272c33; 
            --text-main: #d1d5da; 
            --text-muted: #8a94a1; 
            --accent: <?php echo $cor_primaria; ?>; 
            --border-color: #3a4149; 
            --success: #28a745; 
            --danger: #dc3545; 
            --warning: #f39c12;
            --info: #17a2b8;
        }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }

        /* SIDEBAR */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; transition: all 0.3s ease; z-index: 1001; }
        .sidebar-header { padding: 25px 20px; text-align: center; font-size: 22px; font-weight: bold; border-bottom: 1px solid var(--border-color); color: white; }
        .sidebar-logo { max-width: 180px; max-height: 60px; object-fit: contain; }
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(255, 255, 255, 0.05); color: var(--accent); padding: 4px 10px; border-radius: 4px; font-size: 11px; text-transform: uppercase; font-weight: bold; margin-top: 5px; display: inline-block; }
        .user-info .credits-badge { display: block; margin-top: 10px; color: var(--success); font-weight: bold; font-size: 13px; }
        
        .menu-list { list-style: none; padding: 0; margin: 0; flex: 1; overflow-y: auto; }
        .menu-item { padding: 14px 25px; color: var(--text-main); text-decoration: none; display: flex; align-items: center; transition: 0.2s; font-size: 15px; border-left: 4px solid transparent; cursor: pointer; }
        .menu-item i:first-child { margin-right: 15px; width: 20px; text-align: center; font-size: 16px; color: var(--text-muted); }
        .menu-item:hover, .menu-item.active { background: #2c3138; color: white; border-left-color: var(--accent); }
        
        .submenu { display: none; background: #121519; list-style: none; padding: 0; margin: 0; }
        .submenu .menu-item { padding-left: 52px; font-size: 14px; border-left: none; }
        .arrow-icon { margin-left: auto; transition: 0.3s; font-size: 12px; }
        .rotate { transform: rotate(180deg); }
        .menu-category { padding: 20px 25px 8px; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; letter-spacing: 1px; }
        .logout-btn { padding: 15px; background-color: var(--danger); color: white; text-align: center; text-decoration: none; font-weight: bold; margin-top: auto; }

        /* MAIN CONTENT */
        .main { flex: 1; display: flex; flex-direction: column; overflow-y: auto; width: 100%; position: relative; }
        .topbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); }
        .content-area { padding: 25px; flex: 1; max-width: 1000px; margin: 0 auto; width: 100%; box-sizing: border-box; }
        .mode-badge { padding: 6px 15px; background: rgba(0, 123, 255, 0.15); color: var(--accent); border-radius: 20px; font-size: 12px; font-weight: bold; border: 1px solid var(--accent); white-space: nowrap; display: inline-block; }

        /* GRID E CARDS DE BACKUP */
        .backup-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin-top: 20px; }
        .backup-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 10px; padding: 30px; text-align: center; position: relative; overflow: hidden; }
        
        .backup-icon { font-size: 50px; margin-bottom: 15px; }
        .backup-title { font-size: 20px; color: white; font-weight: bold; margin-bottom: 10px; }
        .backup-desc { font-size: 14px; color: var(--text-muted); margin-bottom: 25px; line-height: 1.5; }
        
        .btn-blue { background: var(--accent); color: white; border: none; padding: 14px 20px; border-radius: 6px; font-weight: bold; cursor: pointer; width: 100%; transition: 0.2s; font-size: 15px; }
        .btn-blue:hover { filter: brightness(0.9); }
        
        .btn-green { background: var(--success); color: white; border: none; padding: 14px 20px; border-radius: 6px; font-weight: bold; cursor: pointer; width: 100%; transition: 0.2s; font-size: 15px; margin-top: 15px; }
        .btn-green:hover { filter: brightness(0.9); }

        input[type="file"] { width: 100%; padding: 12px; background: #121519; border: 1px dashed var(--border-color); color: white; border-radius: 6px; box-sizing: border-box; font-size: 14px; cursor: pointer; }
        input[type="file"]::file-selector-button { background: #2c3138; color: white; border: none; padding: 8px 15px; border-radius: 4px; cursor: pointer; margin-right: 10px; font-weight: bold; }

        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 24px; cursor: pointer; }
        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; }

        @media (max-width: 768px) {
            .sidebar { position: fixed; left: -260px; height: 100%; }
            .sidebar.active { left: 0; }
            .sidebar-overlay.active { display: block; }
            .menu-toggle { display: block; margin-right: 15px; }
            .topbar { padding: 15px 20px; justify-content: flex-start; }
            .topbar-right { margin-left: auto; }
            .content-area { padding: 15px; }
        }
    </style>
</head>
<body>

    <div class="sidebar-overlay" id="overlay"></div>

    <nav class="sidebar" id="sidebar">
        <div class="sidebar-header">
            <?php if(!empty($logo_url) && file_exists($logo_url)): ?>
                <img src="<?php echo htmlspecialchars($logo_url); ?>" alt="Logo" class="sidebar-logo">
            <?php else: ?>
                <?php echo htmlspecialchars($nome_painel); ?>
            <?php endif; ?>
        </div>
        <div class="user-info">
            <div style="color:white; font-size: 14px;">Olá, <strong><?php echo htmlspecialchars($nome_usuario); ?></strong></div>
            <span class="badge"><?php echo $role === 'admin' ? 'Administrador' : 'Revendedor'; ?></span>
            <div class="credits-badge"><i class="fas fa-coins"></i> Saldo: <?php echo number_format($user_credits, 1); ?></div>
        </div>
        
        <div class="menu-list">
            <a href="dashboard.php" class="menu-item active"><i class="fas fa-chart-line"></i> Dashboard</a>
            <a href="perfil.php" class="menu-item active"><i class="fas fa-user-circle"></i> Meu Perfil</a>
            
            <a href="lancamentos.php" class="menu-item active"><i class="fas fa-fire"></i> Últimos Adicionados</a>
            
            <a href="ajuda.php" class="menu-item active"><i class="fas fa-question-circle"></i> Material de Ajuda</a>
            
            <div class="menu-category">Gestão</div>
            <a href="clientes.php" class="menu-item active"><i class="fas fa-users"></i> Clientes IPTV</a>
            <a href="testes.php" class="menu-item active"><i class="fas fa-vial"></i> Gerenciar Testes</a>
            <a href="online.php" class="menu-item active"><i class="fas fa-plug"></i> Clientes Online</a>
            <a href="revendedores.php" class="menu-item active"><i class="fas fa-user-tie"></i> Revendedores</a>
            <a href="migrar_clientes.php" class="menu-item active"><i class="fas fa-exchange-alt"></i> Migrar Clientes</a>
            <a href="logs_creditos.php" class="menu-item active"><i class="fas fa-list-alt"></i> Extrato de Créditos</a>
            <a href="marketing.php" class="menu-item active"><i class="fas fa-bullhorn"></i> Central de Marketing</a>
            
            
            <div class="menu-category">Clientes P2P</div>
            <a href="p2p_clientes.php" class="menu-item active"><i class="fas fa-tv"></i> Clientes P2P</a>
            
            <?php if (!empty($api_conf['api_binstream_url'])): ?>
                <a href="binstream_p2p.php" class="menu-item active"><i class="fas fa-tv"></i> Binstream P2P</a>
            <?php endif; ?>

            <div class="menu-category">Integração & Cobrança</div>
            <a href="pagamentos.php" class="menu-item active"><i class="fas fa-dollar-sign"></i> Pagamento Automático</a>
            <a href="cobranca.php" class="menu-item active"><i class="fas fa-comment-dollar"></i> Central de Cobrança</a>
            <a href="admin_planos.php" class="menu-item active"><i class="fas fa-tags"></i> Meus Planos de Venda</a>
            <a href="comprar_creditos.php" class="menu-item active"><i class="fas fa-shopping-cart"></i> Comprar Créditos</a>
            
            <div class="menu-item active" onclick="toggleSubmenu('appsSub')">
                <i class="fas fa-rocket"></i><span>Aplicações</span><i class="fas fa-chevron-down arrow-icon" id="arrow-appsSub"></i>
            </div>
            <div class="submenu" id="appsSub">
                <a href="loja_apps.php" class="menu-item active"><i class="fas fa-store"></i> Loja de Aplicativos</a>
                <?php if($role === 'admin'): ?>
                    <a href="admin_loja.php" class="menu-item active"><i class="fas fa-cogs"></i> Gerenciar Loja</a>
                <?php endif; ?>
                <a href="chatbot.php" class="menu-item active"><i class="fab fa-whatsapp"></i> Chatbot Automático</a>
            </div>
           <a href="admin_player_revenda.php" class="menu-item active"><i class="fas fa-play-circle"></i> WebPlayer</a>
            
   <div class="menu-category">Segurança</div>
            <a href="historico_logins.php" class="menu-item active"><i class="fas fa-shield-alt"></i> Sessões Ativas</a>

            <?php if($role === 'admin'): ?>
                <div class="menu-category">Administração</div>
                <a href="admin_monitor.php" class="menu-item active"><i class="fas fa-heartbeat"></i> Monitor do Servidor</a>
                <a href="admin_template.php" class="menu-item active"><i class="fas fa-edit"></i> Editor de Template</a>
                <a href="admin_lb.php" class="menu-item active"><i class="fas fa-server"></i> Load Balancers</a>
                <a href="guia_cloudflare.php" class="menu-item active"><i class="fas fa-cloud"></i> Guia Cloudflare</a>
                 <a href="admin_loja_creditos.php" class="menu-item active"><i class="fas fa-store"></i> Configurar Loja (PIX)</a>
                 <a href="integracoes_api.php" class="menu-item active"><i class="fas fa-plug"></i> Integrações API</a>
                 <a href="integracoes_api_whatsapp.php" class="menu-item active"><i class="fas fa-plug"></i> Integrações API WhatsApp</a>
                 <a href="admin_robo.php" class="menu-item active"><i class="fas fa-robot"></i> Robô de Cobrança</a>
                 <a href="admin_anti_bloqueio.php" class="menu-item active"><i class="fas fa-bolt"></i> Botão de Pânico</a>
                 <a href="admin_anti_fraude.php" class="menu-item active"><i class="fas fa-user-secret"></i> Radar Anti-Fraude</a>  
                 <a href="admin_watchdog.php" class="menu-item active"><i class="fas fa-dog"></i> Watchdog LB</a>  
                 
                 <a href="admin_epg_sync.php" class="menu-item active">
        <i class="fas fa-clock"></i> Sincronizar EPG
    </a>

 <div class="menu-item active" onclick="toggleSubmenu('painelSub')">
                    <i class="fas fa-desktop"></i><span>Painel</span><i class="fas fa-chevron-down arrow-icon" id="arrow-painelSub"></i>
                </div>
                <div class="submenu" id="painelSub">
                    <a href="personalizacao.php" class="menu-item active"><i class="fas fa-paint-brush"></i> Personalização</a>
                </div>
             
                <div class="menu-item active" onclick="toggleSubmenu('adminSub')">
                    <i class="fas fa-toolbox"></i><span>Ferramentas</span><i class="fas fa-chevron-down arrow-icon" id="arrow-adminSub"></i>
                </div>
                <div class="submenu" id="adminSub">
                    <a href="importar.php" class="menu-item active"><i class="fas fa-file-import"></i> Importador</a>
                    <a href="importar3.php" class="menu-item active"><i class="fas fa-file-import"></i> Importador Turbo</a>
                    <a href="dns_manager.php" class="menu-item active"><i class="fas fa-link"></i> Alterar DNS</a>
                    <a href="admin_logos.php" class="menu-item active"><i class="fas fa-image"></i> Alterar Logos</a>
                    <a href="mover_conteudos.php" class="menu-item active"><i class="fas fa-exchange-alt"></i> Mover Conteúdos</a>
                    <a href="limpeza.php" class="menu-item active"><i class="fas fa-trash-alt"></i> Limpeza de Dados</a>
                    <a href="limpar_duplicados.php" class="menu-item active"><i class="fas fa-copy"></i> Limpeza de Duplicados</a>
                    <a href="backup.php" class="menu-item active"><i class="fas fa-database"></i> Backup do Sistema</a>
                    <a href="seguranca.php" class="menu-item active"><i class="fas fa-shield-alt"></i> Sistema de Segurança</a>
                    <a href="configuracoes.php" class="menu-item active"><i class="fas fa-tools"></i> Configurações</a>
                </div>

                 <?php if($role === 'admin'): ?>
    <div class="menu-category">Financeiro</div>
     <!-- NOVO MENU FINANCEIRO COM SUBMENU -->
            <div class="menu-item active" onclick="toggleSubmenu('finSub')">
                <i class="fas fa-hand-holding-usd"></i><span>Financeiro</span><i class="fas fa-chevron-down arrow-icon rotate" id="arrow-finSub"></i>
            </div>
            <div class="submenu" id="finSub" style="display: block;">
                <a href="financeiro.php" class="menu-item active">Faturamento</a>
            </div>
    
    <?php endif; ?>

                <div class="menu-category">Conteúdos</div>
                <a href="categorias.php" class="menu-item active"><i class="fas fa-folder-open"></i><span>Categorias</span></a>
                <div class="menu-item active" onclick="toggleSubmenu('contentSub')">
                    <i class="fas fa-layer-group"></i><span>Mídias</span><i class="fas fa-chevron-down arrow-icon" id="arrow-contentSub"></i>
                </div>
                <div class="submenu" id="contentSub">
                    <a href="bouquets.php" class="menu-item active">Editar Bouquets</a>
                    <a href="canais.php" class="menu-item active">Canais Ao Vivo</a>
                    <a href="filmes.php" class="menu-item active">Filmes (VOD)</a>
                    <a href="series.php" class="menu-item active">Séries</a>
                </div>
                 <a href="admin_autofix_vod.php" class="menu-item active"><i class="fas fa-magic"></i> Auto-Fix TMDB</a>
            <?php endif; ?>
        </div>
        <a href="logout.php" class="logout-btn"><i class="fas fa-power-off"></i> Sair</a>
    </nav>

    <div class="main">
        <header class="topbar">
            <div style="display: flex; align-items: center;">
                <button class="menu-toggle" id="btn-menu"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; color: white;">Gerenciador de Banco de Dados</h2>
            </div>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-shield-alt"></i> SEGURANÇA TOTAL</span>
            </div>
        </header>

        <div class="content-area">
            
            <p style="color: var(--text-muted); font-size: 14px; margin-bottom: 25px;">Faça o download de toda a estrutura e dados do seu painel para o seu computador, ou restaure um backup antigo. É recomendado fazer o backup <b>antes</b> de executar limpezas pesadas ou grandes importações.</p>

            <?php echo $mensagem; ?>

            <div class="backup-grid">
                
                <div class="backup-card" style="border-top: 4px solid var(--accent);">
                    <i class="fas fa-cloud-download-alt backup-icon" style="color: var(--accent);"></i>
                    <div class="backup-title">Fazer Backup</div>
                    <div class="backup-desc">Gera um arquivo <b>.sql</b> contendo todos os clientes, canais, revendedores e configurações atuais do seu servidor.</div>
                    
                    <form method="POST">
                        <button type="submit" name="fazer_backup" class="btn-blue">
                            <i class="fas fa-download"></i> BAIXAR ARQUIVO .SQL
                        </button>
                    </form>
                </div>

                <div class="backup-card" style="border-top: 4px solid var(--success);">
                    <i class="fas fa-cloud-upload-alt backup-icon" style="color: var(--success);"></i>
                    <div class="backup-title">Restaurar Backup</div>
                    <div class="backup-desc" style="color: #e74c3c;"><b>Atenção:</b> Esta ação irá sobrescrever o banco de dados atual com os dados do arquivo selecionado.</div>
                    
                    <form method="POST" enctype="multipart/form-data" onsubmit="return confirm('Você tem CERTEZA ABSOLUTA que deseja restaurar? Isso apagará os dados atuais do painel!');">
                        <input type="file" name="arquivo_sql" accept=".sql" required>
                        <button type="submit" name="importar_backup" class="btn-green">
                            <i class="fas fa-upload"></i> RESTAURAR DADOS
                        </button>
                    </form>
                </div>

            </div>

        </div>
        <?php include 'rodape.php'; ?>
    </div>

    <script>
        // Lógica do Menu Lateral Responsivo e Submenus
        const btnMenu = document.getElementById('btn-menu');
        const sidebar = document.getElementById('sidebar');
        const overlay = document.getElementById('overlay');
        function toggleMenu() { sidebar.classList.toggle('active'); overlay.classList.toggle('active'); }
        btnMenu.onclick = toggleMenu;
        overlay.onclick = toggleMenu;

        function toggleSubmenu(id) {
            const sub = document.getElementById(id);
            const arrow = document.getElementById('arrow-' + id);
            if (sub.style.display === "block") { sub.style.display = "none"; if(arrow) arrow.classList.remove('rotate'); } 
            else { sub.style.display = "block"; if(arrow) arrow.classList.add('rotate'); }
        }
    </script>
</body>
</html>