<?php
session_start();

// Verificar se o usuário está logado
if (!isset($_SESSION['logado'], $_SESSION['usuario_id'], $_SESSION['tenant_id']) || $_SESSION['logado'] !== true) {
    header('Location: login.php');
    exit;
}

// Verificar tenant_id
$tenant_id = $_SESSION['tenant_id'] ?? null;
if (!$tenant_id) {
    die("Tenant não identificado.");
}

// Verificar permissões do usuário atual
$usuario_id = $_SESSION['usuario_id'] ?? null;
$permissao = $_SESSION['permissao'] ?? 'usuario';
$is_admin = ($permissao === 'admin');

// CSRF token
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

require_once 'conexao.php';

// ========== FUNÇÕES DE CONTROLE DE ACESSO ========== //

function usuarioPodeVisualizarFunil($conn, $usuario_id, $funil_id) {
    global $is_admin;
    if ($is_admin) return true;
    
    $stmt = $conn->prepare("SELECT 1 FROM permissoes_funis WHERE usuario_id = ? AND funil_id = ? AND visualizar = 1");
    $stmt->bind_param("ii", $usuario_id, $funil_id);
    $stmt->execute();
    return $stmt->get_result()->num_rows > 0;
}

function usuarioPodeEditarFunil($conn, $usuario_id, $funil_id) {
    global $is_admin;
    if ($is_admin) return true;
    
    $stmt = $conn->prepare("SELECT 1 FROM permissoes_funis WHERE usuario_id = ? AND funil_id = ? AND editar = 1");
    $stmt->bind_param("ii", $usuario_id, $funil_id);
    $stmt->execute();
    return $stmt->get_result()->num_rows > 0;
}

function usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id) {
    global $is_admin;
    if ($is_admin) return true;
    
    $stmt = $conn->prepare("SELECT 1 FROM permissoes_funis WHERE usuario_id = ? AND funil_id = ? AND gerenciar = 1");
    $stmt->bind_param("ii", $usuario_id, $funil_id);
    $stmt->execute();
    return $stmt->get_result()->num_rows > 0;
}

function funilTemClientes($conn, $funil_id, $tenant_id) {
    // Contar apenas clientes ativos que não estão perdidos
    $stmt = $conn->prepare("SELECT COUNT(*) as total 
                           FROM clientes c
                           LEFT JOIN clientes_perdidos cp ON c.id = cp.cliente_id AND cp.restaurado = 0
                           WHERE (c.funil_id = ? OR (c.funil_id IS NULL AND ? IN (
                               SELECT id FROM funis WHERE padrao = 1 AND tenant_id = ?
                           )))
                           AND c.tenant_id = ? 
                           AND cp.id IS NULL
                           AND c.status = 1");
    
    $stmt->bind_param("iiii", $funil_id, $funil_id, $tenant_id, $tenant_id);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    $total_clientes = $row['total'];
    $stmt->close();
    
    return $total_clientes > 0;
}

function obterContagemClientesPorFunil($conn, $tenant_id) {
    $clientes_por_funil = [];
    
    // Obter o ID do funil padrão
    $stmt_padrao = $conn->prepare("SELECT id FROM funis WHERE tenant_id = ? AND padrao = 1 AND ativo = 1");
    $stmt_padrao->bind_param("i", $tenant_id);
    $stmt_padrao->execute();
    $result_padrao = $stmt_padrao->get_result();
    $funil_padrao_id = null;
    if ($row_padrao = $result_padrao->fetch_assoc()) {
        $funil_padrao_id = $row_padrao['id'];
    }
    $stmt_padrao->close();
    
    // Contar clientes com funil_id específico
    $sql_clientes_ativos = "SELECT c.funil_id, COUNT(*) as total 
                           FROM clientes c
                           LEFT JOIN clientes_perdidos cp ON c.id = cp.cliente_id AND cp.restaurado = 0
                           WHERE c.tenant_id = ? 
                           AND c.funil_id IS NOT NULL 
                           AND cp.id IS NULL
                           AND c.status = 1
                           GROUP BY c.funil_id";
    
    $stmt = $conn->prepare($sql_clientes_ativos);
    $stmt->bind_param("i", $tenant_id);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        $clientes_por_funil[$row['funil_id']] = (int)$row['total'];
    }
    $stmt->close();
    
    // Contar clientes com funil_id NULL (funil padrão)
    if ($funil_padrao_id !== null) {
        $sql_clientes_null = "SELECT COUNT(*) as total 
                             FROM clientes c
                             LEFT JOIN clientes_perdidos cp ON c.id = cp.cliente_id AND cp.restaurado = 0
                             WHERE c.tenant_id = ? 
                             AND c.funil_id IS NULL 
                             AND cp.id IS NULL
                             AND c.status = 1";
        
        $stmt_null = $conn->prepare($sql_clientes_null);
        $stmt_null->bind_param("i", $tenant_id);
        $stmt_null->execute();
        $result_null = $stmt_null->get_result();
        if ($row_null = $result_null->fetch_assoc()) {
            $total_null = (int)$row_null['total'];
            if ($total_null > 0) {
                $clientes_por_funil[$funil_padrao_id] = ($clientes_por_funil[$funil_padrao_id] ?? 0) + $total_null;
            }
        }
        $stmt_null->close();
    }
    
    return $clientes_por_funil;
}

// ========== HANDLERS DE AÇÕES ========== //

// Ativar funil
if (isset($_GET['ativar'])) {
    $funil_id = intval($_GET['ativar']);
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para esta ação";
        header("Location: funis.php");
        exit;
    }

    $token = $_GET['csrf_token'] ?? '';
    if (!isset($_GET['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $stmt = $conn->prepare("UPDATE funis SET ativo = TRUE WHERE id = ? AND tenant_id = ?");
    $stmt->bind_param("ii", $funil_id, $tenant_id);
    
    if ($stmt->execute()) {
        $_SESSION['mensagem'] = "Funil ativado com sucesso!";
    } else {
        $_SESSION['erro'] = "Erro ao ativar funil";
    }
    $stmt->close();
    header("Location: " . $_SERVER['HTTP_REFERER']);
    exit;
}

// Desativar funil (COM VERIFICAÇÃO DE CLIENTES)
if (isset($_GET['desativar'])) {
    $funil_id = intval($_GET['desativar']);
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para esta ação";
        header("Location: funis.php");
        exit;
    }

    $token = $_GET['csrf_token'] ?? '';
    if (!isset($_GET['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    // VERIFICAÇÃO: Não permitir desativar se houver clientes
    if (funilTemClientes($conn, $funil_id, $tenant_id)) {
        $clientes_count = obterContagemClientesPorFunil($conn, $tenant_id);
        $contagem = $clientes_count[$funil_id] ?? 0;
        $_SESSION['erro'] = "Não é possível desativar o funil pois existem $contagem cliente(s) ativo(s) vinculado(s). Transfira os clientes para outro funil antes de desativar.";
        header("Location: funis.php");
        exit;
    }

    $stmt = $conn->prepare("UPDATE funis SET ativo = FALSE WHERE id = ? AND tenant_id = ?");
    $stmt->bind_param("ii", $funil_id, $tenant_id);
    if ($stmt->execute()) {
        $_SESSION['mensagem'] = "Funil desativado com sucesso!";
    } else {
        $_SESSION['erro'] = "Erro ao desativar funil";
    }
    $stmt->close();
    header("Location: " . $_SERVER['HTTP_REFERER']);
    exit;
}

// Excluir funil
if (isset($_GET['excluir'])) {
    $funil_id = intval($_GET['excluir']);
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para esta ação";
        header("Location: funis.php");
        exit;
    }

    $token = $_GET['csrf_token'] ?? '';
    if (!isset($_GET['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    if (funilTemClientes($conn, $funil_id, $tenant_id)) {
        $clientes_count = obterContagemClientesPorFunil($conn, $tenant_id);
        $contagem = $clientes_count[$funil_id] ?? 0;
        $_SESSION['erro'] = "Não é possível excluir o funil pois existem $contagem cliente(s) ativo(s) vinculado(s). Transfira os clientes para outro funil antes de excluir.";
        header("Location: funis.php");
        exit;
    }

    $conn->begin_transaction();
    try {
        $stmt = $conn->prepare("SELECT id FROM funis WHERE id = ? AND tenant_id = ?");
        $stmt->bind_param("ii", $funil_id, $tenant_id);
        $stmt->execute();
        if ($stmt->get_result()->num_rows === 0) {
            throw new Exception("Funil não encontrado ou não pertence ao seu tenant");
        }
        $stmt->close();

        // Remover permissões
        $stmt = $conn->prepare("DELETE FROM permissoes_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id);
        $stmt->execute();
        $stmt->close();

        // Remover etapas
        $stmt = $conn->prepare("DELETE FROM etapas_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id);
        $stmt->execute();
        $stmt->close();

        // Remover funil
        $stmt = $conn->prepare("DELETE FROM funis WHERE id = ? AND tenant_id = ?");
        $stmt->bind_param("ii", $funil_id, $tenant_id);
        $stmt->execute();
        $stmt->close();

        $conn->commit();
        $_SESSION['mensagem'] = "Funil excluído com sucesso!";
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['erro'] = "Erro ao excluir funil: " . $e->getMessage();
    }
    header("Location: " . $_SERVER['HTTP_REFERER']);
    exit;
}

// Gerenciar permissões
if (isset($_POST['salvar_permissoes'])) {
    $funil_id = intval($_POST['funil_id']);
    
    if (!usuarioPodeGerenciarFunil($conn, $usuario_id, $funil_id)) {
        $_SESSION['erro'] = "Você não tem permissão para gerenciar este funil";
        header("Location: funis.php");
        exit;
    }

    $token = $_POST['csrf_token'] ?? '';
    if (!isset($_POST['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $conn->begin_transaction();
    try {
        // Remover permissões existentes
        $stmt = $conn->prepare("DELETE FROM permissoes_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id);
        $stmt->execute();
        $stmt->close();

        // Inserir novas permissões
        if (!empty($_POST['permissoes'])) {
            $stmt = $conn->prepare("INSERT INTO permissoes_funis (funil_id, usuario_id, visualizar, editar, gerenciar) VALUES (?, ?, ?, ?, ?)");
            
            foreach ($_POST['permissoes'] as $usuario_permissao_id => $permissoes) {
                $visualizar = isset($permissoes['visualizar']) ? 1 : 0;
                $editar = isset($permissoes['editar']) ? 1 : 0;
                $gerenciar = isset($permissoes['gerenciar']) ? 1 : 0;
                
                if ($visualizar || $editar || $gerenciar) {
                    $stmt->bind_param("iiiii", $funil_id, $usuario_permissao_id, $visualizar, $editar, $gerenciar);
                    $stmt->execute();
                }
            }
            $stmt->close();
        }

        $conn->commit();
        $_SESSION['mensagem'] = "Permissões atualizadas com sucesso!";
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['erro'] = "Erro ao salvar permissões: " . $e->getMessage();
    }
    header("Location: funis.php?funil=$funil_id");
    exit;
}

// Criar novo funil (CORRIGIDO)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['criar_funil'])) {
    $token = $_POST['csrf_token'] ?? '';
    if (!isset($_POST['csrf_token']) || $token !== $_SESSION['csrf_token']) {
        $_SESSION['erro'] = "Token de segurança inválido!";
        header("Location: funis.php");
        exit;
    }

    $nome_funil = trim($_POST['nome_funil']);
    
    // CORREÇÃO: Capturar os dados das etapas corretamente
    $etapas_nomes = [];
    $etapas_ordem = [];
    $tipos_entrada = $_POST['tipos_entrada'] ?? [];
    $formularios_ids = $_POST['formularios_ids'] ?? [];
    
    // Processar as etapas - corrigindo a forma de capturar os dados
    foreach ($_POST['etapas'] as $index => $etapa_data) {
        if (isset($etapa_data['nome']) && !empty(trim($etapa_data['nome']))) {
            $etapas_nomes[$index] = trim($etapa_data['nome']);
            $etapas_ordem[$index] = isset($etapa_data['ordem']) ? intval($etapa_data['ordem']) : ($index + 1);
        }
    }

    if (empty($nome_funil)) {
        $_SESSION['erro'] = "O nome do funil é obrigatório.";
    } elseif (empty($etapas_nomes)) {
        $_SESSION['erro'] = "Adicione pelo menos uma etapa válida.";
    } else {
        $conn->begin_transaction();
        try {
            // Insere o novo funil
            $stmt = $conn->prepare("INSERT INTO funis (tenant_id, nome, ativo, data_criacao) VALUES (?, ?, TRUE, NOW())");
            $stmt->bind_param("is", $tenant_id, $nome_funil);
            $stmt->execute();
            $funil_id = $conn->insert_id;
            $stmt->close();

            // Insere as etapas - CORRIGIDO
            $stmt = $conn->prepare("INSERT INTO etapas_funis (funil_id, nome, ordem, tipo_entrada, questionario_id) VALUES (?, ?, ?, ?, ?)");
            
            foreach ($etapas_nomes as $index => $nome_etapa) {
                $tipo_entrada = $tipos_entrada[$index] ?? 'manual';
                $formulario_id = null;
                
                if ($tipo_entrada === 'questionario' && isset($formularios_ids[$index]) && !empty($formularios_ids[$index])) {
                    $formulario_id = intval($formularios_ids[$index]);
                }
                
                $ordem = $etapas_ordem[$index] ?? ($index + 1);
                
                $stmt->bind_param("isisi", $funil_id, $nome_etapa, $ordem, $tipo_entrada, $formulario_id);
                if (!$stmt->execute()) {
                    throw new Exception("Erro ao inserir etapa: " . $stmt->error);
                }
            }
            $stmt->close();

            // Por padrão, o criador tem todas as permissões
            $stmt = $conn->prepare("INSERT INTO permissoes_funis (funil_id, usuario_id, visualizar, editar, gerenciar) VALUES (?, ?, 1, 1, 1)");
            $stmt->bind_param("ii", $funil_id, $usuario_id);
            $stmt->execute();
            $stmt->close();

            $conn->commit();
            $_SESSION['mensagem'] = "Funil criado e ativado com sucesso!";
            header("Location: funis.php?funil=$funil_id");
            exit;
        } catch (Exception $e) {
            $conn->rollback();
            $_SESSION['erro'] = "Erro ao criar funil: " . $e->getMessage();
            error_log("Erro ao criar funil: " . $e->getMessage());
        }
    }
}

// ========== CONSULTAS ========== //

// Obter formulários disponíveis (que serão usados como questionários)
$questionarios = [];
$stmt_questionarios = $conn->prepare("SELECT id, nome FROM formularios WHERE tenant_id = ? AND tipo = 'questionario' ORDER BY nome ASC");
$stmt_questionarios->bind_param("i", $tenant_id);
$stmt_questionarios->execute();
$result_questionarios = $stmt_questionarios->get_result();
while ($row = $result_questionarios->fetch_assoc()) {
    $questionarios[$row['id']] = $row;
}
$stmt_questionarios->close();

// Obter funis que o usuário pode visualizar
$funis = [];
if ($is_admin) {
    $stmt = $conn->prepare("SELECT * FROM funis WHERE tenant_id = ? ORDER BY ativo DESC, nome ASC");
    $stmt->bind_param("i", $tenant_id);
} else {
    $stmt = $conn->prepare("SELECT f.* FROM funis f 
                          JOIN permissoes_funis pf ON f.id = pf.funil_id 
                          WHERE f.tenant_id = ? AND pf.usuario_id = ? AND pf.visualizar = 1
                          ORDER BY f.ativo DESC, f.nome ASC");
    $stmt->bind_param("ii", $tenant_id, $usuario_id);
}
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    $funis[$row['id']] = $row;
}
$stmt->close();

// Obter etapas de cada funil
foreach ($funis as $id => $funil) {
    $etapas = [];
    $stmt = $conn->prepare("SELECT e.*, f.nome as questionario_nome FROM etapas_funis e LEFT JOIN formularios f ON e.questionario_id = f.id WHERE e.funil_id = ? ORDER BY ordem ASC");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $res_etapas = $stmt->get_result();
    while ($row = $res_etapas->fetch_assoc()) {
        $etapas[] = $row;
    }
    $funis[$id]['etapas'] = $etapas;
    $stmt->close();
}

// Obter contagem de clientes por funil
$clientes_por_funil = obterContagemClientesPorFunil($conn, $tenant_id);

// Obter usuários do tenant para gerenciamento de permissões
$usuarios_tenant = [];
$stmt = $conn->prepare("SELECT id, nome, email FROM usuarios WHERE tenant_id = ? AND id != ? ORDER BY nome ASC");
$stmt->bind_param("ii", $tenant_id, $usuario_id);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    $usuarios_tenant[$row['id']] = $row;
}
$stmt->close();

// Obter permissões se estiver visualizando um funil específico
$permissoes_funil = [];
$funil_selecionado = null;
if (isset($_GET['funil'])) {
    $funil_id = intval($_GET['funil']);
    
    if (isset($funis[$funil_id])) {
        $funil_selecionado = $funis[$funil_id];
        
        // Obter permissões deste funil
        $stmt = $conn->prepare("SELECT * FROM permissoes_funis WHERE funil_id = ?");
        $stmt->bind_param("i", $funil_id);
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_assoc()) {
            $permissoes_funil[$row['usuario_id']] = $row;
        }
        $stmt->close();
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon_io/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon_io/favicon-32x32.png">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SON - Gerenciar Funis</title>
    <meta name="csrf-token" content="<?php echo $_SESSION['csrf_token']; ?>">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
        }
        
        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #f5f5f5;
            padding: 15px 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .header-fixed img {
            height: 50px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        /* Menu Lateral Recolhível - AGORA NA ESQUERDA */
        .sidebar {
            position: fixed;
            left: 0;
            top: 80px;
            height: calc(100vh - 80px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        .sidebar-menu {
            list-style: none;
            padding: 0;
            margin: 0;
        }
        
        .sidebar-menu li {
            border-bottom: 1px solid #eee;
        }
        
        .sidebar-menu a {
            display: flex;
            align-items: center;
            padding: 15px 20px;
            text-decoration: none;
            color: #333;
            white-space: nowrap;
            transition: background-color 0.3s;
        }
        
        .sidebar-menu i {
            width: 24px;
            height: 24px;
            margin-right: 15px;
            text-align: center;
            flex-shrink: 0;
        }
        
        .sidebar-menu .menu-text {
            opacity: 0;
            transition: opacity 0.3s ease;
        }

        /* Classes para menu */
        .menu-btn-success {
            color: #6B8E23;
        }
        
        .menu-btn-primary {
            color: #0000FF;
        }
        
        .menu-btn-danger {
            color: #e74c3c;
        }
        
        /* Conteúdo Principal - CORRIGIDO */
        .main-content {
            margin-top: 20px;
            padding: 60px;
            margin-left: 80px;
            transition: margin-left 0.3s ease;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: white;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
        }
        
        h1 {
            color: #333;
            border-bottom: 1px solid #eee;
            padding-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .form-group {
            margin-bottom: 15px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        
        .form-group input, 
        .form-group select, 
        .form-group textarea {
            width: 100%;
            padding: 10px;
            margin-top: 5px;
            border: 1px solid #ddd;
            border-radius: 4px;
            box-sizing: border-box;
            font-size: 16px;
        }
        
        button {
            background-color:rgb(76, 175, 175);
            color: white;
            padding: 12px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            margin-top: 20px;
            font-size: 16px;
            transition: background-color 0.3s;
            display: inline-flex;
            align-items: center;
            gap: 8px;
        }
        
        button:hover {
            background-color:rgba(127, 141, 167, 1);
        }
        
        .required:after {
            content: " *";
            color: red;
        }
        
        /* Mensagens */
        .mensagem-flutuante {
            position: fixed;
            top: 80px;
            right: 20px;
            padding: 15px 25px;
            border-radius: 4px;
            color: white;
            z-index: 2000;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            animation: slideIn 0.5s, fadeOut 0.5s 2.5s forwards;
        }
        
        .mensagem-sucesso {
            background-color:rgb(254, 254, 254);
        }
        
        .mensagem-erro {
            background-color: #e74c3c;
        }
        
        @keyframes slideIn {
            from { transform: translateX(100%); opacity: 0; }
            to { transform: translateX(0); opacity: 1; }
        }
        
        @keyframes fadeOut {
            from { opacity: 1; }
            to { opacity: 0; }
        }
        
        /* Lista de Funis */
        .funil-list {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
            gap: 20px;
            margin-top: 20px;
        }
        
        .funil-item {
            border: 1px solid #ddd;
            padding: 15px;
            border-radius: 5px;
            background: #fff;
            position: relative;
        }
        
        .funil-item.active {
            border-left: 4px solid #2ecc71;
        }
        
        .funil-item.inactive {
            border-left: 4px solid #e74c3c;
        }
        
        .funil-status {
            font-size: 12px;
            font-weight: bold;
            padding: 3px 8px;
            border-radius: 3px;
        }
        
        .status-active {
            background: #d4edda;
            color: #155724;
        }
        
        .status-inactive {
            background: #f8d7da;
            color: #721c24;
        }
        
        .etapas-container {
            margin-top: 15px;
            max-height: 150px;
            overflow-y: auto;
            padding-right: 5px;
        }
        
        .etapa-item {
            display: flex;
            align-items: center;
            margin-bottom: 8px;
        }
        
        .etapa-tipo {
            margin-left: 10px;
            padding: 2px 6px;
            border-radius: 3px;
            font-size: 11px;
            font-weight: bold;
        }
        
        .tipo-manual {
            background: #e8f4fd;
            color: #2980b9;
        }
        
        .tipo-agendamento {
            background: #fef5e7;
            color: #e67e22;
        }
        
        .tipo-questionario {
            background: #f3e8fd;
            color: #8e44ad;
        }
        
        .questionario-info {
            margin-left: 10px;
            font-size: 10px;
            color: #666;
            font-style: italic;
        }
        
        .funil-acoes {
            margin-top: 15px;
            display: flex;
            justify-content: flex-end;
            flex-wrap: wrap;
            gap: 5px;
        }
        
        /* Modal de Permissões */
        .modal-permissoes {
            display: none;
            position: fixed;
            z-index: 2000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
        }
        
        .modal-permissoes-content {
            background-color: #fefefe;
            margin: 5% auto;
            padding: 20px;
            border-radius: 8px;
            width: 80%;
            max-width: 800px;
            max-height: 80vh;
            overflow-y: auto;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
        }
        
        .permissoes-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
            gap: 15px;
            margin-top: 15px;
        }
        
        .permissao-item {
            border: 1px solid #ddd;
            padding: 15px;
            border-radius: 5px;
            background: #f9f9f9;
        }
        
        .permissao-nome {
            font-weight: bold;
            margin-bottom: 10px;
            border-bottom: 1px solid #eee;
            padding-bottom: 5px;
        }
        
        .user-info {
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .user-initial {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: #ccc;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            font-size: 1.2em;
        }
        
        .permissao-opcoes label {
            display: flex;
            align-items: center;
            margin-bottom: 8px;
            cursor: pointer;
        }
        
        /* Botões do menu */
        .menu-btn-primary {
            color: #0000FF;
        }
        
        .menu-btn-success {
            color:rgb(255, 255, 255);
        }
        
        .menu-btn-danger {
            color: #e74c3c;
        }

        .btn {
            padding: 8px 16px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-weight: bold;
            margin-right: 10px;
            text-decoration: none;
            display: inline-block;
            transition: background-color 0.3s;
        }
        
        .btn-primary {
            background-color: #007bff;
            color: white;
        }
        
        .btn-success {
            background-color: #28a745;
            color: white;
        }
        
        .btn-danger {
            background-color: #dc3545;
            color: white;
        }
        
        .btn-warning {
            background-color: #ffc107;
            color: #212529;
        }
        
        .btn-secondary {
            background-color: #6c757d;
            color: white;
        }
        
        .btn:hover {
            opacity: 0.9;
        }
        
        /* Botão Fixo para Administração */
        .admin-fixed-btn {
            position: fixed;
            bottom: 30px;
            right: 30px;
            background: #8e44ad;
            color: white;
            width: 60px;
            height: 60px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
            z-index: 999;
            cursor: pointer;
            transition: all 0.3s;
        }

        .admin-fixed-btn:hover {
            transform: scale(1.1);
            box-shadow: 0 6px 12px rgba(0,0,0,0.3);
        }

        .admin-fixed-btn .tooltip {
            position: absolute;
            right: 70px;
            background: #333;
            color: white;
            padding: 5px 10px;
            border-radius: 4px;
            font-size: 14px;
            white-space: nowrap;
            opacity: 0;
            transition: opacity 0.3s;
            pointer-events: none;
        }

        .admin-fixed-btn:hover .tooltip {
            opacity: 1;
        }
        
        /* Etapas do formulário */
        #etapas-container {
            margin-top: 10px;
        }
        
        .etapa-input {
            display: flex;
            margin-bottom: 10px;
            gap: 10px;
            align-items: center;
        }
        
        .etapa-input input {
            flex-grow: 1;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .etapa-input select {
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            width: 150px;
        }
        
        .questionario-select {
            width: 200px;
            display: none;
        }
        
        .etapa-ordem {
            background: #007bff;
            color: white;
            border-radius: 50%;
            width: 24px;
            height: 24px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 10px;
            font-size: 12px;
            flex-shrink: 0;
        }
        
        .alert {
            padding: 15px;
            margin-bottom: 20px;
            border-radius: 4px;
        }
        
        .alert-success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .alert-danger {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        @media (max-width: 768px) {
            .header-fixed {
                padding: 12px 15px;
            }
            
            .header-fixed h2 {
                font-size: 1.3rem;
            }
            
            .main-content {
                margin-left: 0;
                padding: 80px 15px 15px 15px;
            }
            
            .container {
                padding: 18px;
            }
            
            .funil-list {
                grid-template-columns: 1fr;
            }
            
            .etapa-input {
                flex-direction: column;
            }
            
            .etapa-input select {
                width: 100%;
            }
            
            .questionario-select {
                width: 100%;
            }
        }
    </style>
</head>
<body>
  <div class="header-fixed">
    <img src="tvitec.png" alt="Logo TVITEC" style="height:40px; margin-right: 15px;">

    <div class="user-info" style="display:flex; align-items:center; gap:10px;">
      <?php if (!empty($_SESSION['foto_perfil'])): ?>
        <img src="<?php echo htmlspecialchars($_SESSION['foto_perfil']); ?>" class="user-photo" alt="Foto do usuário" style="width:40px; height:40px; border-radius:50%;">
      <?php else: ?>
        <div class="user-initial" style="width:40px; height:40px; border-radius:50%; background:#ccc; display:flex; align-items:center; justify-content:center; font-weight:bold; font-size:1.2em;">
          <?php echo strtoupper(substr($_SESSION['nome_usuario'] ?? 'U', 0, 1)); ?>
        </div>
      <?php endif; ?>
      <div style="text-align:left;">
        <div style="font-weight: bold; color: #333; font-size: 1.1em;">
          <?php echo htmlspecialchars($_SESSION['nome_usuario'] ?? 'Usuário'); ?>
        </div>
        <div style="font-size: 0.9em; color: #555;">
          <?php echo htmlspecialchars($_SESSION['email_usuario'] ?? ''); ?>
        </div>
      </div>
    </div>
  </div>

  <?php include 'menu_lateral.php'; ?>

  <!-- CONTEÚDO PRINCIPAL CORRIGIDO -->
  <div class="main-content">
    <div class="container">
      <?php if (isset($_SESSION['mensagem'])): ?>
        <div class="mensagem-flutuante mensagem-sucesso">
          <?php echo $_SESSION['mensagem']; ?>
          <button onclick="this.parentElement.style.display='none'" style="background:none; border:none; color:white; cursor:pointer; margin-left:10px;">×</button>
        </div>
        <?php unset($_SESSION['mensagem']); ?>
      <?php endif; ?>
      
      <?php if (isset($_SESSION['erro'])): ?>
        <div class="mensagem-flutuante mensagem-erro">
          <?php echo $_SESSION['erro']; ?>
          <button onclick="this.parentElement.style.display='none'" style="background:none; border:none; color:white; cursor:pointer; margin-left:10px;">×</button>
        </div>
        <?php unset($_SESSION['erro']); ?>
      <?php endif; ?>

      <h1><i class="fas fa-filter"></i> Gerenciar Funis</h1>

      <!-- Formulário para criar novo funil -->
      <div style="margin-bottom: 30px; padding: 20px; border: 1px solid #ddd; border-radius: 5px;">
        <h2 style="margin-top: 0;">Criar Novo Funil</h2>
        <form method="POST" action="funis.php">
          <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
          
          <div class="form-group">
            <label for="nome_funil" class="required">Nome do Funil</label>
            <input type="text" id="nome_funil" name="nome_funil" required>
          </div>
          
          <div class="form-group">
            <label class="required">Etapas do Funil</label>
            <div id="etapas-container">
              <div class="etapa-input">
                <div class="etapa-ordem">1</div>
                <input type="hidden" name="etapas[0][ordem]" value="1">
                <input type="text" name="etapas[0][nome]" placeholder="Nome da etapa" required>
                
                <select name="tipos_entrada[0]" class="tipo-entrada-select" onchange="toggleQuestionarioSelect(this, 0)">
                  <option value="manual">Manual</option>
                  <option value="agendamento">Agendamento</option>
                  <option value="questionario">Questionário</option>
                </select>
                
                <select name="formularios_ids[0]" class="questionario-select" id="questionario-0" style="display: none;">
                  <option value="">Selecione um formulário</option>
                  <?php foreach ($questionarios as $id => $questionario): ?>
                    <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($questionario['nome']); ?></option>
                  <?php endforeach; ?>
                </select>
                
                <button type="button" class="btn btn-danger" onclick="removerEtapa(this)" disabled>
                  <i class="fas fa-times"></i>
                </button>
              </div>
            </div>
            <button type="button" class="btn btn-primary" onclick="adicionarEtapa()">
              <i class="fas fa-plus"></i> Adicionar Etapa
            </button>
          </div>
          
          <button type="submit" name="criar_funil" class="btn btn-success">
            <i class="fas fa-plus"></i> Criar Funil
          </button>
        </form>
      </div>

      <!-- Lista de Funis -->
      <h2>Funis do Sistema</h2>
      
      <?php if (empty($funis)): ?>
        <p>Nenhum funil cadastrado ainda.</p>
      <?php else: ?>
        <div class="funil-list">
          <?php foreach ($funis as $funil): ?>
            <?php 
            $clientes_ativos_count = $clientes_por_funil[$funil['id']] ?? 0;
            $tem_clientes = funilTemClientes($conn, $funil['id'], $tenant_id);
            ?>
            
            <div class="funil-item <?php echo $funil['ativo'] ? 'active' : 'inactive'; ?>">
              
              <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;">
                <div style="display: flex; align-items: center; gap: 10px; flex-grow: 1;">
                  <h3 style="margin: 0;"><?php echo htmlspecialchars($funil['nome']); ?></h3>
                  <?php if ($clientes_ativos_count > 0): ?>
                    <div style="background: #3498db; color: white; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: bold;" title="<?php echo $clientes_ativos_count; ?> cliente(s) ativo(s)">
                      <?php echo $clientes_ativos_count; ?>
                    </div>
                  <?php endif; ?>
                </div>
                <div class="funil-status <?php echo $funil['ativo'] ? 'status-active' : 'status-inactive'; ?>">
                  <?php echo $funil['ativo'] ? 'ATIVO' : 'INATIVO'; ?>
                </div>
              </div>
              
              <p style="margin-top: 0;"><small>Criado em: <?php echo date('d/m/Y', strtotime($funil['data_criacao'])); ?></small></p>
              
              <div class="etapas-container">
                <?php foreach ($funil['etapas'] as $index => $etapa): ?>
                  <div class="etapa-item">
                    <div class="etapa-ordem"><?php echo $index + 1; ?></div>
                    <div style="flex-grow: 1;">
                      <?php echo htmlspecialchars($etapa['nome']); ?>
                      <?php if ($etapa['tipo_entrada'] !== 'manual'): ?>
                        <span class="etapa-tipo <?php echo 'tipo-' . $etapa['tipo_entrada']; ?>">
                          <?php 
                          if ($etapa['tipo_entrada'] == 'agendamento') {
                            echo 'Agendamento';
                          } elseif ($etapa['tipo_entrada'] == 'questionario') {
                            echo 'Questionário';
                          } else {
                            echo 'Manual';
                          }
                          ?>
                        </span>
                        <?php if ($etapa['tipo_entrada'] === 'questionario' && !empty($etapa['questionario_nome'])): ?>
                          <span class="questionario-info">(<?php echo htmlspecialchars($etapa['questionario_nome']); ?>)</span>
                        <?php endif; ?>
                      <?php endif; ?>
                    </div>
                  </div>
                <?php endforeach; ?>
              </div>
              
              <div class="funil-acoes">
                <?php if (usuarioPodeVisualizarFunil($conn, $usuario_id, $funil['id'])): ?>
                  <a href="index.php?funil=<?php echo $funil['id']; ?>" class="btn btn-primary">
                    <i class="fas fa-eye"></i> Visualizar
                  </a>
                <?php endif; ?>
                
                <?php if (usuarioPodeEditarFunil($conn, $usuario_id, $funil['id'])): ?>
                  <a href="editar_funil.php?id=<?php echo $funil['id']; ?>" class="btn btn-primary">
                    <i class="fas fa-edit"></i> Editar
                  </a>
                <?php endif; ?>
                
                <?php if (usuarioPodeGerenciarFunil($conn, $usuario_id, $funil['id'])): ?>
                  <?php if ($funil['ativo']): ?>
                    <?php if ($tem_clientes): ?>
                      <button type="button" class="btn btn-warning" onclick="mostrarErroDesativar(<?php echo $clientes_ativos_count; ?>)">
                        <i class="fas fa-pause"></i> Desativar
                      </button>
                    <?php else: ?>
                      <a href="funis.php?desativar=<?php echo $funil['id']; ?>&csrf_token=<?php echo $_SESSION['csrf_token']; ?>" class="btn btn-warning">
                        <i class="fas fa-pause"></i> Desativar
                      </a>
                    <?php endif; ?>
                  <?php else: ?>
                    <a href="funis.php?ativar=<?php echo $funil['id']; ?>&csrf_token=<?php echo $_SESSION['csrf_token']; ?>" class="btn btn-success">
                      <i class="fas fa-play"></i> Ativar
                    </a>
                  <?php endif; ?>
                  
                  <button type="button" class="btn btn-primary" onclick="abrirModalPermissoes(<?php echo $funil['id']; ?>, '<?php echo htmlspecialchars(addslashes($funil['nome'])); ?>')">
                    <i class="fas fa-users"></i> Permissões
                  </button>
                  
                  <?php if ($tem_clientes): ?>
                    <button type="button" class="btn btn-danger" onclick="mostrarErroExcluir(<?php echo $clientes_ativos_count; ?>)">
                      <i class="fas fa-trash"></i> Excluir
                    </button>
                  <?php else: ?>
                    <a href="funis.php?excluir=<?php echo $funil['id']; ?>&csrf_token=<?php echo $_SESSION['csrf_token']; ?>" class="btn btn-danger" onclick="return confirm('Tem certeza que deseja excluir este funil? Esta ação não pode ser desfeita.')">
                      <i class="fas fa-trash"></i> Excluir
                    </a>
                  <?php endif; ?>
                <?php endif; ?>
              </div>
            </div>
          <?php endforeach; ?>
        </div>
      <?php endif; ?>
    </div>
  </div>

  <!-- Modal de Permissões -->
  <div id="modalPermissoes" class="modal-permissoes">
    <div class="modal-permissoes-content">
      <span style="float: right; cursor: pointer; font-size: 24px;" onclick="fecharModalPermissoes()">&times;</span>
      <h2 id="modalPermissoesTitulo">Gerenciar Permissões</h2>
      
      <form method="POST" action="funis.php">
        <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
        <input type="hidden" name="salvar_permissoes" value="1">
        <input type="hidden" id="funil_id" name="funil_id" value="">
        
        <div class="permissoes-grid" id="permissoesGrid">
          <!-- As permissões serão carregadas aqui via JavaScript -->
        </div>
        
        <div style="text-align: right; margin-top: 20px;">
          <button type="button" class="btn btn-secondary" onclick="fecharModalPermissoes()">Cancelar</button>
          <button type="submit" class="btn btn-success">Salvar Permissões</button>
        </div>
      </form>
    </div>
  </div>

  <!-- Botão Fixo para Administração -->
  <?php if (in_array($_SESSION['permissao'] ?? '', ['super_admin'])): ?>
    <div class="admin-fixed-btn" onclick="window.location.href='gerenciar_sistema.php'">
      <i class="fas fa-cog"></i>
      <span class="tooltip">Administração</span>
    </div>
  <?php endif; ?>

  <script>
    // Função para mostrar erro quando tentar excluir funil com clientes
    function mostrarErroExcluir(quantidadeClientes) {
      Swal.fire({
        icon: 'error',
        title: 'Não é possível excluir',
        html: `Este funil possui <strong>${quantidadeClientes}</strong> cliente(s) ativo(s) vinculado(s).<br><br>Transfira os clientes para outro funil antes de excluir.`,
        confirmButtonText: 'Entendi',
        confirmButtonColor: '#e74c3c'
      });
    }

    // Função para mostrar erro quando tentar desativar funil com clientes
    function mostrarErroDesativar(quantidadeClientes) {
      Swal.fire({
        icon: 'error',
        title: 'Não é possível desativar',
        html: `Este funil possui <strong>${quantidadeClientes}</strong> cliente(s) ativo(s) vinculado(s).<br><br>Transfira os clientes para outro funil antes de desativar.`,
        confirmButtonText: 'Entendi',
        confirmButtonColor: '#f39c12'
      });
    }

    // Contador para novas etapas
    let etapaCounter = 1;
    
    // Função para adicionar etapas ao formulário
    function adicionarEtapa() {
      const container = document.getElementById('etapas-container');
      
      const index = etapaCounter++;
      
      const div = document.createElement('div');
      div.className = 'etapa-input';
      div.innerHTML = `
        <div class="etapa-ordem">${index + 1}</div>
        <input type="hidden" name="etapas[${index}][ordem]" value="${index + 1}">
        <input type="text" name="etapas[${index}][nome]" placeholder="Nome da etapa" required>
        
        <select name="tipos_entrada[${index}]" class="tipo-entrada-select" onchange="toggleQuestionarioSelect(this, ${index})">
          <option value="manual">Manual</option>
          <option value="agendamento">Agendamento</option>
          <option value="questionario">Questionário</option>
        </select>
        
        <select name="formularios_ids[${index}]" class="questionario-select" id="questionario-${index}" style="display: none;">
          <option value="">Selecione um formulário</option>
          <?php foreach ($questionarios as $id => $questionario): ?>
            <option value="<?php echo $id; ?>"><?php echo htmlspecialchars($questionario['nome']); ?></option>
          <?php endforeach; ?>
        </select>
        
        <button type="button" class="btn btn-danger" onclick="removerEtapa(this)">
          <i class="fas fa-times"></i>
        </button>
      `;
      container.appendChild(div);
      
      // Habilitar botões de remover de todas as etapas
      const botoesRemover = container.querySelectorAll('.btn-danger');
      botoesRemover.forEach(btn => btn.disabled = false);
    }
    
    function removerEtapa(button) {
      const etapaDiv = button.closest('.etapa-input');
      const container = document.getElementById('etapas-container');
      
      if (container.children.length > 1) {
        etapaDiv.remove();
        reordenarEtapas();
        
        // Desabilitar botão de remover se só restar uma etapa
        if (container.children.length === 1) {
          container.querySelector('.btn-danger').disabled = true;
        }
      }
    }
    
    function toggleQuestionarioSelect(select, index) {
      const questionarioSelect = document.getElementById('questionario-' + index);
      
      if (select.value === 'questionario') {
        questionarioSelect.style.display = 'block';
        questionarioSelect.required = true;
      } else {
        questionarioSelect.style.display = 'none';
        questionarioSelect.required = false;
      }
    }
    
    // Função para reordenar as etapas após remoção
    function reordenarEtapas() {
      const container = document.getElementById('etapas-container');
      const etapas = container.querySelectorAll('.etapa-input');
      
      etapas.forEach((etapa, index) => {
        // Atualizar o número de ordem
        const ordemElement = etapa.querySelector('.etapa-ordem');
        if (ordemElement) {
          ordemElement.textContent = index + 1;
        }
        
        // Atualizar o valor do campo hidden de ordem
        const ordemInput = etapa.querySelector('input[name$="[ordem]"]');
        if (ordemInput) {
          ordemInput.value = index + 1;
          ordemInput.name = `etapas[${index}][ordem]`;
        }
        
        // Atualizar os índices dos campos
        const nomeInput = etapa.querySelector('input[name$="[nome]"]');
        const tipoSelect = etapa.querySelector('.tipo-entrada-select');
        const questionarioSelect = etapa.querySelector('.questionario-select');
        
        if (nomeInput) {
          nomeInput.name = `etapas[${index}][nome]`;
        }
        
        if (tipoSelect) {
          tipoSelect.name = `tipos_entrada[${index}]`;
          tipoSelect.setAttribute('onchange', `toggleQuestionarioSelect(this, ${index})`);
        }
        
        if (questionarioSelect) {
          questionarioSelect.name = `formularios_ids[${index}]`;
          questionarioSelect.id = `questionario-${index}`;
        }
      });
      
      // Atualizar o contador
      etapaCounter = etapas.length;
    }
    
    // Modal de Permissões
    function abrirModalPermissoes(funilId, funilNome) {
      document.getElementById('modalPermissoesTitulo').textContent = `Permissões: ${funilNome}`;
      document.getElementById('funil_id').value = funilId;
      
      carregarPermissoes(funilId);
      
      document.getElementById('modalPermissoes').style.display = 'block';
    }
    
    function fecharModalPermissoes() {
      document.getElementById('modalPermissoes').style.display = 'none';
    }
    
    function carregarPermissoes(funilId) {
      const grid = document.getElementById('permissoesGrid');
      grid.innerHTML = '<p>Carregando permissões...</p>';
      
      const usuarios = <?php echo json_encode($usuarios_tenant); ?>;
      const permissoes = <?php echo json_encode($permissoes_funil); ?>;
      
      let html = '';
      
      if (Object.keys(usuarios).length === 0) {
        html = '<p>Não há outros usuários no seu tenant para gerenciar permissões.</p>';
      } else {
        for (const usuarioId in usuarios) {
          const usuario = usuarios[usuarioId];
          const permissao = permissoes[usuarioId] || { visualizar: 0, editar: 0, gerenciar: 0 };
          
          html += `
            <div class="permissao-item">
              <div class="permissao-nome">
                <div class="user-info">
                  <div class="user-initial">
                    ${usuario.nome ? usuario.nome.charAt(0).toUpperCase() : 'U'}
                  </div>
                  <div>
                    <div>${usuario.nome || 'Usuário'}</div>
                    <div style="font-size: 0.8em; color: #666;">${usuario.email || ''}</div>
                  </div>
                </div>
              </div>
              <div class="permissao-opcoes">
                <label>
                  <input type="checkbox" name="permissoes[${usuarioId}][visualizar]" value="1" ${permissao.visualizar ? 'checked' : ''}>
                  Visualizar funil
                </label>
                <label>
                  <input type="checkbox" name="permissoes[${usuarioId}][editar]" value="1" ${permissao.editar ? 'checked' : ''}>
                  Editar funil
                </label>
                <label>
                  <input type="checkbox" name="permissoes[${usuarioId}][gerenciar]" value="1" ${permissao.gerenciar ? 'checked' : ''}>
                  Gerenciar funil
                </label>
              </div>
            </div>
          `;
        }
      }
      
      grid.innerHTML = html;
    }
    
    // Fechar modal ao clicar fora
    window.onclick = function(event) {
      const modal = document.getElementById('modalPermissoes');
      if (event.target === modal) {
        fecharModalPermissoes();
      }
    }
    
    // Inicialização
    document.addEventListener('DOMContentLoaded', function() {
      // Garantir que o botão de remover da primeira etapa esteja desabilitado
      const container = document.getElementById('etapas-container');
      if (container.children.length === 1) {
        container.children[0].querySelector('.btn-danger').disabled = true;
      }
      
      // Fechar mensagens flutuantes manualmente
      document.addEventListener('click', function(e) {
        if (e.target.classList.contains('mensagem-flutuante') || e.target.parentElement.classList.contains('mensagem-flutuante')) {
          e.target.style.display = 'none';
        }
      });
    });
  </script>
  <?php include 'sino_notificacoes.php'; ?>
</body>
</html>
<?php
$conn->close();
?>