<?php
session_start();
require_once 'conexao.php';

date_default_timezone_set('America/Sao_Paulo');

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

if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    header('Location: login.php');
    exit;
}

$tenant_id = $_SESSION['tenant_id'] ?? null;
$usuario_id = $_SESSION['usuario_id'] ?? null;
$permissao = $_SESSION['permissao'] ?? 'usuario';
$is_admin = ($permissao === 'admin');
$is_super_admin = ($permissao === 'super_admin');

if (!$tenant_id) {
    die("Tenant não identificado.");
}

if (!isset($conn) || $conn->connect_errno) {
    die("Erro: Conexão com banco de dados não estabelecida corretamente.");
}

// ----------------------------
// FUNÇÕES DE PERMISSÃO
// ----------------------------

function usuarioPodeVerTodosClientes($conn, $usuario_id) {
    $stmt = $conn->prepare("SELECT ver_todos_clientes FROM usuarios WHERE id = ?");
    $stmt->bind_param("i", $usuario_id);
    $stmt->execute();
    $res = $stmt->get_result();
    
    if ($res->num_rows > 0) {
        $usuario = $res->fetch_assoc();
        $stmt->close();
        return (bool)$usuario['ver_todos_clientes'];
    }
    
    $stmt->close();
    return false;
}

$stmtPerm = $conn->prepare("SELECT ver_todos_clientes FROM usuarios WHERE id = ?");
$stmtPerm->bind_param("i", $usuario_id);
$stmtPerm->execute();
$resultPerm = $stmtPerm->get_result();
$linhaPerm = $resultPerm->fetch_assoc();
$ver_todas_atividades = isset($linhaPerm['ver_todos_clientes']) ? (int)$linhaPerm['ver_todos_clientes'] : 0;
$stmtPerm->close();

$pode_ver_todos = $is_admin || $is_super_admin || $ver_todas_atividades == 1;

// ----------------------------
// FUNÇÕES AUXILIARES PARA FILTROS
// ----------------------------

function carregarTiposAtividade($conn, $tenant_id) {
    $tipos = [];
    $sql = "SELECT DISTINCT tipo FROM atividades WHERE tenant_id = ? AND tipo IS NOT NULL AND tipo != '' ORDER BY tipo";
    $stmt = $conn->prepare($sql);
    if ($stmt) {
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $res = $stmt->get_result();
        $tipos = $res->fetch_all(MYSQLI_ASSOC);
        $stmt->close();
    }
    return $tipos;
}

function carregarUsuariosTenant($conn, $tenant_id) {
    $usuarios = [];
    $sql = "SELECT id, nome FROM usuarios WHERE tenant_id = ? AND ativo = 'sim' ORDER BY nome";
    $stmt = $conn->prepare($sql);
    if ($stmt) {
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $res = $stmt->get_result();
        $usuarios = $res->fetch_all(MYSQLI_ASSOC);
        $stmt->close();
    }
    return $usuarios;
}

function carregarFunis($conn, $tenant_id) {
    $funis = [];
    $sql = "SELECT id, nome FROM funis WHERE tenant_id = ? AND ativo = 1 ORDER BY nome";
    $stmt = $conn->prepare($sql);
    if ($stmt) {
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $res = $stmt->get_result();
        $funis = $res->fetch_all(MYSQLI_ASSOC);
        $stmt->close();
    }
    return $funis;
}

function carregarClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos) {
    $clientes = [];
    if ($pode_ver_todos) {
        $sql = "SELECT id, Nome_Cliente FROM clientes WHERE deletado_em IS NULL AND tenant_id = ? ORDER BY Nome_Cliente";
        $stmt = $conn->prepare($sql);
        if ($stmt) {
            $stmt->bind_param("i", $tenant_id);
            $stmt->execute();
            $res = $stmt->get_result();
            $clientes = $res->fetch_all(MYSQLI_ASSOC);
            $stmt->close();
        }
    } else {
        $sql = "SELECT c.id, c.Nome_Cliente 
                FROM clientes c
                LEFT JOIN permissoes_clientes pc ON c.id = pc.cliente_id AND pc.usuario_id = ?
                WHERE c.deletado_em IS NULL 
                AND c.tenant_id = ?
                AND (c.usuario_cadastro = ? OR pc.visualizar = 1)
                ORDER BY c.Nome_Cliente";
        $stmt = $conn->prepare($sql);
        if ($stmt) {
            $stmt->bind_param("iii", $usuario_id, $tenant_id, $usuario_id);
            $stmt->execute();
            $res = $stmt->get_result();
            $clientes = $res->fetch_all(MYSQLI_ASSOC);
            $stmt->close();
        }
    }
    return $clientes ?: [];
}

function carregarProdutos($conn, $tenant_id, $usuario_id, $pode_ver_todos) {
    $produtos = [];
    if ($pode_ver_todos) {
        $sql = "SELECT DISTINCT nome_produto FROM cliente_produtos WHERE tenant_id = ? AND nome_produto IS NOT NULL AND nome_produto != '' ORDER BY nome_produto";
        $stmt = $conn->prepare($sql);
        if ($stmt) {
            $stmt->bind_param("i", $tenant_id);
            $stmt->execute();
            $res = $stmt->get_result();
            $produtos = $res->fetch_all(MYSQLI_ASSOC);
            $stmt->close();
        }
    } else {
        $sql = "SELECT DISTINCT cp.nome_produto 
                FROM cliente_produtos cp
                JOIN clientes c ON cp.cliente_id = c.id
                LEFT JOIN permissoes_clientes pc ON c.id = pc.cliente_id AND pc.usuario_id = ?
                WHERE cp.tenant_id = ?
                AND cp.nome_produto IS NOT NULL
                AND cp.nome_produto != ''
                AND (c.usuario_cadastro = ? OR pc.visualizar = 1)
                ORDER BY cp.nome_produto";
        $stmt = $conn->prepare($sql);
        if ($stmt) {
            $stmt->bind_param("iii", $usuario_id, $tenant_id, $usuario_id);
            $stmt->execute();
            $res = $stmt->get_result();
            $produtos = $res->fetch_all(MYSQLI_ASSOC);
            $stmt->close();
        }
    }
    return $produtos ?: [];
}

function carregarTiposFormulario($conn, $tenant_id) {
    $tipos = [];
    $sql = "SELECT DISTINCT tipo FROM formularios WHERE tenant_id = ? AND tipo IS NOT NULL ORDER BY tipo";
    $stmt = $conn->prepare($sql);
    if ($stmt) {
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $res = $stmt->get_result();
        $tipos = $res->fetch_all(MYSQLI_ASSOC);
        $stmt->close();
    }
    return $tipos;
}

// ----------------------------
// FUNÇÕES DE DASHBOARD
// ----------------------------

// 1. PERFORMANCE DO FUNIL DE VENDAS
function carregarDadosPerformanceFunil($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $funil_id = null) {
    $sql = "SELECT 
                COALESCE(ef.nome, 'Sem Etapa') as etapa,
                ef.ordem,
                COUNT(c.id) as total_clientes,
                ROUND(COUNT(c.id) * 100.0 / NULLIF((SELECT COUNT(*) FROM clientes WHERE tenant_id = ? AND deletado_em IS NULL), 0), 2) as percentual
            FROM clientes c
            LEFT JOIN etapas_funis ef ON c.etapa_funil_id = ef.id
            WHERE c.deletado_em IS NULL 
              AND c.tenant_id = ?";
    
    $params = [$tenant_id, $tenant_id];
    $types = "ii";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($funil_id && $funil_id > 0) {
        $sql .= " AND c.funil_id = ?";
        $params[] = $funil_id;
        $types .= "i";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND c.Data_Cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND c.Data_Cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    $sql .= " GROUP BY ef.nome, ef.ordem
              ORDER BY CASE WHEN ef.nome IS NULL THEN 1 ELSE 0 END, ef.ordem";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'clientes' => [], 'percentuais' => [], 'total_clientes' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $clientes = [];
    $percentuais = [];
    
    foreach ($dados as $item) {
        $labels[] = $item['etapa'];
        $clientes[] = (int)$item['total_clientes'];
        $percentuais[] = (float)$item['percentual'];
    }
    
    return [
        'labels' => $labels,
        'clientes' => $clientes,
        'percentuais' => $percentuais,
        'total_clientes' => array_sum($clientes)
    ];
}

// 2. PRODUTOS MAIS VENDIDOS
function carregarDadosProdutosVendidos($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $cliente_id = null, $produto = null, $limit = 10) {
    $sql = "SELECT 
                cp.nome_produto,
                SUM(cp.quantidade) as total_quantidade,
                SUM(cp.valor * cp.quantidade) as valor_total,
                COUNT(DISTINCT cp.cliente_id) as total_clientes,
                COUNT(cp.id) as total_vendas
            FROM cliente_produtos cp
            JOIN clientes c ON cp.cliente_id = c.id
            WHERE cp.tenant_id = ?
              AND cp.nome_produto IS NOT NULL
              AND cp.nome_produto != ''";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND cp.data_cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND cp.data_cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    if ($cliente_id && $cliente_id > 0) {
        $sql .= " AND cp.cliente_id = ?";
        $params[] = $cliente_id;
        $types .= "i";
    }
    
    if ($produto && $produto != '') {
        $sql .= " AND cp.nome_produto = ?";
        $params[] = $produto;
        $types .= "s";
    }
    
    $sql .= " GROUP BY cp.nome_produto
              ORDER BY valor_total DESC
              LIMIT ?";
    
    $params[] = $limit;
    $types .= "i";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'quantidades' => [], 'valores' => [], 'clientes' => [], 'vendas' => [], 'total_valor' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $quantidades = [];
    $valores = [];
    $clientes = [];
    $vendas = [];
    
    foreach ($dados as $prod) {
        $labels[] = $prod['nome_produto'];
        $quantidades[] = (float)$prod['total_quantidade'];
        $valores[] = (float)$prod['valor_total'];
        $clientes[] = (int)$prod['total_clientes'];
        $vendas[] = (int)$prod['total_vendas'];
    }
    
    return [
        'labels' => $labels,
        'quantidades' => $quantidades,
        'valores' => $valores,
        'clientes' => $clientes,
        'vendas' => $vendas,
        'total_valor' => array_sum($valores)
    ];
}

// 3. ATIVIDADES POR USUÁRIO
function carregarDadosAtividadesPorUsuario($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $tipo_atividade = null, $filtro_usuario_id = null) {
    $sql = "SELECT 
                u.id,
                u.nome AS usuario_nome,
                COUNT(*) as total_atividades,
                SUM(CASE WHEN a.concluida = 1 THEN 1 ELSE 0 END) AS concluidas,
                SUM(CASE WHEN a.concluida = 0 AND a.data_agendada < NOW() THEN 1 ELSE 0 END) AS atrasadas,
                SUM(CASE WHEN a.concluida = 0 AND a.data_agendada >= NOW() THEN 1 ELSE 0 END) AS futuras,
                COUNT(DISTINCT a.cliente_id) as total_clientes
            FROM atividades a
            JOIN usuarios u ON a.usuario_id = u.id
            WHERE u.ativo = 'sim'
              AND u.tenant_id = ?
              AND a.tenant_id = ?
              AND a.data_agendada IS NOT NULL";
    
    $params = [$tenant_id, $tenant_id];
    $types = "ii";
    
    if (!$pode_ver_todos) {
        $sql .= " AND a.usuario_id = ?";
        $params[] = $usuario_id;
        $types .= "i";
    }
    
    if ($filtro_usuario_id && $filtro_usuario_id > 0 && $pode_ver_todos) {
        $sql .= " AND a.usuario_id = ?";
        $params[] = $filtro_usuario_id;
        $types .= "i";
    }
    
    if ($tipo_atividade && $tipo_atividade != '') {
        $sql .= " AND a.tipo = ?";
        $params[] = $tipo_atividade;
        $types .= "s";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND a.data_agendada >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND a.data_agendada <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    $sql .= " GROUP BY u.id, u.nome
              ORDER BY total_atividades DESC";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'concluidas' => [], 'atrasadas' => [], 'futuras' => [], 'clientes' => [], 'totais' => [], 'dados_completos' => []];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $concluidas = [];
    $atrasadas = [];
    $futuras = [];
    $clientes = [];
    $totais = [];
    
    foreach ($dados as $linha) {
        $labels[] = $linha['usuario_nome'];
        $concluidas[] = (int)$linha['concluidas'];
        $atrasadas[] = (int)$linha['atrasadas'];
        $futuras[] = (int)$linha['futuras'];
        $clientes[] = (int)$linha['total_clientes'];
        $totais[] = (int)$linha['total_atividades'];
    }
    
    return [
        'labels' => $labels,
        'concluidas' => $concluidas,
        'atrasadas' => $atrasadas,
        'futuras' => $futuras,
        'clientes' => $clientes,
        'totais' => $totais,
        'total_geral' => array_sum($totais),
        'dados_completos' => $dados
    ];
}

// 4. PRODUTIVIDADE POR USUÁRIO
function carregarDadosProdutividadeUsuario($conn, $tenant_id, $data_inicio = null, $data_fim = null) {
    try {
        $sql = "SELECT 
                    u.id,
                    u.nome,
                    COALESCE(atv.total_atividades, 0) as total_atividades,
                    COALESCE(atv.atividades_concluidas, 0) as atividades_concluidas,
                    COALESCE(atv.atividades_atrasadas, 0) as atividades_atrasadas,
                    COALESCE(atv.atividades_futuras, 0) as atividades_futuras,
                    COALESCE(prd.total_produtos, 0) as produtos_vendidos,
                    COALESCE(prd.valor_total, 0) as valor_total_vendas,
                    COALESCE(prd.total_clientes, 0) as clientes_atendidos,
                    CASE 
                        WHEN COALESCE(atv.total_atividades, 0) > 0 
                        THEN ROUND(COALESCE(atv.atividades_concluidas, 0) * 100.0 / atv.total_atividades, 2)
                        ELSE 0 
                    END as taxa_conclusao
                FROM usuarios u
                LEFT JOIN (
                    SELECT 
                        usuario_id,
                        COUNT(*) as total_atividades,
                        SUM(CASE WHEN concluida = 1 THEN 1 ELSE 0 END) as atividades_concluidas,
                        SUM(CASE WHEN concluida = 0 AND data_agendada < NOW() THEN 1 ELSE 0 END) as atividades_atrasadas,
                        SUM(CASE WHEN concluida = 0 AND data_agendada >= NOW() THEN 1 ELSE 0 END) as atividades_futuras
                    FROM atividades
                    WHERE tenant_id = ?";
        
        $params = [$tenant_id];
        $types = "i";
        
        if ($data_inicio && $data_inicio != '') {
            $sql .= " AND data_agendada >= ?";
            $params[] = $data_inicio . ' 00:00:00';
            $types .= "s";
        }
        
        if ($data_fim && $data_fim != '') {
            $sql .= " AND data_agendada <= ?";
            $params[] = $data_fim . ' 23:59:59';
            $types .= "s";
        }
        
        $sql .= " GROUP BY usuario_id
                ) atv ON u.id = atv.usuario_id
                LEFT JOIN (
                    SELECT 
                        usuario_id,
                        SUM(quantidade) as total_produtos,
                        SUM(valor * quantidade) as valor_total,
                        COUNT(DISTINCT cliente_id) as total_clientes
                    FROM cliente_produtos
                    WHERE tenant_id = ?";
        
        $params[] = $tenant_id;
        $types .= "i";
        
        if ($data_inicio && $data_inicio != '') {
            $sql .= " AND data_cadastro >= ?";
            $params[] = $data_inicio . ' 00:00:00';
            $types .= "s";
        }
        
        if ($data_fim && $data_fim != '') {
            $sql .= " AND data_cadastro <= ?";
            $params[] = $data_fim . ' 23:59:59';
            $types .= "s";
        }
        
        $sql .= " GROUP BY usuario_id
                ) prd ON u.id = prd.usuario_id
                WHERE u.tenant_id = ?
                  AND u.ativo = 'sim'
                ORDER BY atividades_concluidas DESC";
        
        $params[] = $tenant_id;
        $types .= "i";
        
        $stmt = $conn->prepare($sql);
        if (!$stmt) return ['labels' => [], 'atividades' => [], 'concluidas' => [], 'atrasadas' => [], 'futuras' => [], 'produtos' => [], 'vendas' => [], 'clientes' => [], 'taxas' => [], 'dados_completos' => []];
        
        $stmt->bind_param($types, ...$params);
        $stmt->execute();
        $res = $stmt->get_result();
        $dados = $res->fetch_all(MYSQLI_ASSOC);
        $stmt->close();
        
        $labels = [];
        $atividades = [];
        $concluidas = [];
        $atrasadas = [];
        $futuras = [];
        $produtos = [];
        $vendas = [];
        $clientes = [];
        $taxas = [];
        
        foreach ($dados as $item) {
            $labels[] = $item['nome'];
            $atividades[] = (int)$item['total_atividades'];
            $concluidas[] = (int)$item['atividades_concluidas'];
            $atrasadas[] = (int)$item['atividades_atrasadas'];
            $futuras[] = (int)$item['atividades_futuras'];
            $produtos[] = (int)$item['produtos_vendidos'];
            $vendas[] = (float)$item['valor_total_vendas'];
            $clientes[] = (int)$item['clientes_atendidos'];
            $taxas[] = (float)$item['taxa_conclusao'];
        }
        
        return [
            'labels' => $labels,
            'atividades' => $atividades,
            'concluidas' => $concluidas,
            'atrasadas' => $atrasadas,
            'futuras' => $futuras,
            'produtos' => $produtos,
            'vendas' => $vendas,
            'clientes' => $clientes,
            'taxas' => $taxas,
            'dados_completos' => $dados
        ];
        
    } catch (Exception $e) {
        error_log("Erro em carregarDadosProdutividadeUsuario: " . $e->getMessage());
        return ['labels' => [], 'atividades' => [], 'concluidas' => [], 'atrasadas' => [], 'futuras' => [], 'produtos' => [], 'vendas' => [], 'clientes' => [], 'taxas' => [], 'dados_completos' => []];
    }
}

// 5. ATIVIDADES POR CLIENTE
function carregarDadosAtividadesPorCliente($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $limit = 10) {
    $sql = "SELECT 
                c.id,
                c.Nome_Cliente as cliente_nome,
                COUNT(a.id) as total_atividades,
                SUM(CASE WHEN a.concluida = 1 THEN 1 ELSE 0 END) as concluidas,
                SUM(CASE WHEN a.concluida = 0 AND a.data_agendada < NOW() THEN 1 ELSE 0 END) as atrasadas,
                SUM(CASE WHEN a.concluida = 0 AND a.data_agendada >= NOW() THEN 1 ELSE 0 END) as futuras,
                COUNT(DISTINCT a.usuario_id) as total_usuarios
            FROM clientes c
            LEFT JOIN atividades a ON c.id = a.cliente_id AND a.tenant_id = c.tenant_id
            WHERE c.deletado_em IS NULL
              AND c.tenant_id = ?";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND a.data_agendada >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND a.data_agendada <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    $sql .= " GROUP BY c.id, c.Nome_Cliente
              HAVING total_atividades > 0
              ORDER BY total_atividades DESC
              LIMIT ?";
    
    $params[] = $limit;
    $types .= "i";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'atividades' => [], 'concluidas' => [], 'atrasadas' => [], 'futuras' => [], 'dados_completos' => []];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $atividades = [];
    $concluidas = [];
    $atrasadas = [];
    $futuras = [];
    
    foreach ($dados as $item) {
        $labels[] = $item['cliente_nome'];
        $atividades[] = (int)$item['total_atividades'];
        $concluidas[] = (int)$item['concluidas'];
        $atrasadas[] = (int)$item['atrasadas'];
        $futuras[] = (int)$item['futuras'];
    }
    
    return [
        'labels' => $labels,
        'atividades' => $atividades,
        'concluidas' => $concluidas,
        'atrasadas' => $atrasadas,
        'futuras' => $futuras,
        'dados_completos' => $dados
    ];
}











// 6. TAXA DE CONVERSÃO POR ORIGEM
function carregarDadosConversaoOrigem($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null) {
    $sql = "SELECT 
                COALESCE(o.nome, 'Sem origem') as origem,
                COUNT(DISTINCT c.id) as total_clientes,
                COUNT(DISTINCT cp.cliente_id) as clientes_concluidos,
                ROUND(COUNT(DISTINCT cp.cliente_id) * 100.0 / NULLIF(COUNT(DISTINCT c.id), 0), 2) as taxa_conversao
            FROM clientes c
            LEFT JOIN origens o ON c.origem_id = o.id
            LEFT JOIN cliente_produtos cp ON c.id = cp.cliente_id
            WHERE c.deletado_em IS NULL 
              AND c.tenant_id = ?";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND c.Data_Cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND c.Data_Cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    // CORREÇÃO: Agrupar APENAS pelo nome da origem (via JOIN)
    $sql .= " GROUP BY o.nome
              HAVING total_clientes >= 1
              ORDER BY taxa_conversao DESC";
    
    $stmt = $conn->prepare($sql);
    
    
    
    
    
    if (!$stmt) {
        error_log("Erro ao preparar consulta de conversão por origem: " . $conn->error);
        return ['labels' => [], 'clientes' => [], 'concluidos' => [], 'taxas' => [], 'media_taxa' => 0, 'dados_completos' => []];
    }
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $clientes = [];
    $concluidos = [];
    $taxas = [];
    
    foreach ($dados as $item) {
        $labels[] = $item['origem'];
        $clientes[] = (int)$item['total_clientes'];
        $concluidos[] = (int)$item['clientes_concluidos'];
        $taxas[] = (float)$item['taxa_conversao'];
    }
    
    $media_taxa = count($taxas) > 0 ? round(array_sum($taxas) / count($taxas), 2) : 0;
    
    return [
        'labels' => $labels,
        'clientes' => $clientes,
        'concluidos' => $concluidos,
        'taxas' => $taxas,
        'media_taxa' => $media_taxa,
        'dados_completos' => $dados
    ];
}

// 7. TEMPO POR ETAPA (DETALHADO)
function carregarDadosTempoEtapaDetalhado($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $funil_id = null, $cliente_id = null) {
    $sql = "SELECT 
                c.id as cliente_id,
                c.Nome_Cliente as cliente_nome,
                ef.nome as etapa_atual,
                c.Data_Cadastro as data_entrada,
                TIMESTAMPDIFF(DAY, c.Data_Cadastro, NOW()) as dias_na_etapa,
                TIMESTAMPDIFF(HOUR, c.Data_Cadastro, NOW()) as horas_na_etapa,
                c.funil_id,
                f.nome as funil_nome,
                c.status,
                CASE 
                    WHEN EXISTS (SELECT 1 FROM cliente_produtos cp WHERE cp.cliente_id = c.id) THEN 'Convertido'
                    WHEN c.status = 0 THEN 'Inativo'
                    ELSE 'Em andamento'
                END as status_descricao
            FROM clientes c
            LEFT JOIN etapas_funis ef ON c.etapa_funil_id = ef.id
            LEFT JOIN funis f ON c.funil_id = f.id
            WHERE c.deletado_em IS NULL
              AND c.tenant_id = ?
              AND c.etapa_funil_id IS NOT NULL";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($funil_id && $funil_id > 0) {
        $sql .= " AND c.funil_id = ?";
        $params[] = $funil_id;
        $types .= "i";
    }
    
    if ($cliente_id && $cliente_id > 0) {
        $sql .= " AND c.id = ?";
        $params[] = $cliente_id;
        $types .= "i";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND c.Data_Cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND c.Data_Cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    $sql .= " ORDER BY horas_na_etapa DESC, c.Nome_Cliente ASC";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['dados_completos' => [], 'total_registros' => 0, 'media_geral_horas' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $soma_horas = 0;
    foreach ($dados as $item) {
        $soma_horas += (float)$item['horas_na_etapa'];
    }
    $media_geral_horas = count($dados) > 0 ? round($soma_horas / count($dados), 1) : 0;
    
    return [
        'dados_completos' => $dados,
        'total_registros' => count($dados),
        'media_geral_horas' => $media_geral_horas
    ];
}

// 7.1 TEMPO MÉDIO POR ETAPA (AGRUPADO)
function carregarDadosTempoEtapa($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $funil_id = null) {
    $sql = "SELECT 
                ef.nome as etapa,
                ef.ordem,
                AVG(TIMESTAMPDIFF(HOUR, c.Data_Cadastro, NOW())) as tempo_medio_horas,
                COUNT(DISTINCT c.id) as total_clientes
            FROM clientes c
            LEFT JOIN etapas_funis ef ON c.etapa_funil_id = ef.id
            WHERE c.tenant_id = ?
              AND c.deletado_em IS NULL
              AND c.etapa_funil_id IS NOT NULL";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($funil_id && $funil_id > 0) {
        $sql .= " AND c.funil_id = ?";
        $params[] = $funil_id;
        $types .= "i";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND c.Data_Cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND c.Data_Cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    $sql .= " GROUP BY ef.nome, ef.ordem
              ORDER BY ef.ordem";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'tempos' => [], 'clientes' => [], 'tempo_medio_total' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $tempos = [];
    $clientes = [];
    
    foreach ($dados as $item) {
        if ($item['tempo_medio_horas'] !== null && $item['total_clientes'] > 0) {
            $labels[] = $item['etapa'];
            $tempos[] = round((float)$item['tempo_medio_horas'], 1);
            $clientes[] = (int)$item['total_clientes'];
        }
    }
    
    $tempo_medio_total = count($tempos) > 0 ? round(array_sum($tempos) / count($tempos), 1) : 0;
    
    return [
        'labels' => $labels,
        'tempos' => $tempos,
        'clientes' => $clientes,
        'tempo_medio_total' => $tempo_medio_total,
        'dados_completos' => $dados
    ];
}

// 8. CRESCIMENTO DE CLIENTES
function carregarDadosCrescimentoClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos, $ano = null) {
    $ano = $ano ?: date('Y');
    
    $sql = "SELECT 
                MONTH(Data_Cadastro) as mes,
                COUNT(id) as novos_clientes,
                SUM(CASE WHEN EXISTS (SELECT 1 FROM cliente_produtos cp WHERE cp.cliente_id = clientes.id) THEN 1 ELSE 0 END) as clientes_concluidos
            FROM clientes
            WHERE tenant_id = ?
              AND YEAR(Data_Cadastro) = ?
              AND deletado_em IS NULL";
    
    $params = [$tenant_id, $ano];
    $types = "ii";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = clientes.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    $sql .= " GROUP BY MONTH(Data_Cadastro)
              ORDER BY mes";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'novos' => [], 'concluidos' => [], 'total_novos' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $meses = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'];
    $novos = array_fill(0, 12, 0);
    $concluidos = array_fill(0, 12, 0);
    
    foreach ($dados as $item) {
        $mes = (int)$item['mes'] - 1;
        $novos[$mes] = (int)$item['novos_clientes'];
        $concluidos[$mes] = (int)$item['clientes_concluidos'];
    }
    
    return [
        'labels' => $meses,
        'novos' => $novos,
        'concluidos' => $concluidos,
        'total_novos' => array_sum($novos)
    ];
}

// 9. TICKET MÉDIO
function carregarDadosTicketMedio($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null) {
    $sql = "SELECT 
                COUNT(DISTINCT cp.cliente_id) as total_clientes,
                COUNT(cp.id) as total_vendas,
                SUM(cp.quantidade) as total_itens,
                SUM(cp.valor * cp.quantidade) as valor_total,
                ROUND(SUM(cp.valor * cp.quantidade) / NULLIF(COUNT(DISTINCT cp.cliente_id), 0), 2) as ticket_medio
            FROM cliente_produtos cp
            JOIN clientes c ON cp.cliente_id = c.id
            WHERE cp.tenant_id = ?
              AND cp.valor > 0";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND cp.data_cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND cp.data_cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['ticket_medio_geral' => 0, 'total_valor' => 0, 'total_clientes' => 0, 'total_vendas' => 0, 'total_itens' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_assoc();
    $stmt->close();
    
    return [
        'ticket_medio_geral' => (float)($dados['ticket_medio'] ?? 0),
        'total_valor' => (float)($dados['valor_total'] ?? 0),
        'total_clientes' => (int)($dados['total_clientes'] ?? 0),
        'total_vendas' => (int)($dados['total_vendas'] ?? 0),
        'total_itens' => (int)($dados['total_itens'] ?? 0)
    ];
}

// 10. FORMULÁRIOS
function carregarDadosFormularios($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $tipo_formulario = null, $funil_id = null) {
    
    // Buscar todos os formulários do tenant com seus respectivos tipos
    $sql_formularios = "SELECT id, nome, tipo FROM formularios WHERE tenant_id = ?";
    $params_form = [$tenant_id];
    $types_form = "i";
    
    if ($tipo_formulario && $tipo_formulario != '') {
        $sql_formularios .= " AND tipo = ?";
        $params_form[] = $tipo_formulario;
        $types_form .= "s";
    }
    
    $sql_formularios .= " ORDER BY nome";
    
    $stmt_form = $conn->prepare($sql_formularios);
    if (!$stmt_form) {
        error_log("Erro ao preparar consulta de formulários: " . $conn->error);
        return [
            'labels' => [],
            'envios' => [],
            'respostas' => [],
            'nao_respondidos' => [],
            'taxas' => [],
            'taxa_media' => 0,
            'total_envios' => 0,
            'total_respostas' => 0,
            'total_nao_respondidos' => 0,
            'dados_completos' => [],
            'detalhes_formularios' => []
        ];
    }
    
    $stmt_form->bind_param($types_form, ...$params_form);
    $stmt_form->execute();
    $res_form = $stmt_form->get_result();
    
    $formularios = [];
    while ($row = $res_form->fetch_assoc()) {
        $formularios[] = $row;
    }
    $stmt_form->close();
    
    if (empty($formularios)) {
        return [
            'labels' => [],
            'envios' => [],
            'respostas' => [],
            'nao_respondidos' => [],
            'taxas' => [],
            'taxa_media' => 0,
            'total_envios' => 0,
            'total_respostas' => 0,
            'total_nao_respondidos' => 0,
            'dados_completos' => [],
            'detalhes_formularios' => []
        ];
    }
    
    // Inicializar arrays de resultado
    $labels = [];
    $envios_array = [];
    $respostas_array = [];
    $nao_respondidos_array = [];
    $taxas = [];
    $tipos = [];
    $dados_completos = [];
    $detalhes_formularios = [];
    
    // Processar cada formulário de acordo com seu tipo
    foreach ($formularios as $form) {
        $form_id = $form['id'];
        $form_nome = $form['nome'];
        $form_tipo = $form['tipo'];
        
        $labels[] = $form_nome;
        $tipos[] = $form_tipo;
        
        if ($form_tipo == 'E-mail' || $form_tipo == 'email' || $form_tipo == 'Email') {
            // FORMULÁRIOS DO TIPO E-MAIL
            // Buscar envios de email para este formulário
            $sql_envios = "SELECT 
                                ef.id,
                                ef.cliente_id,
                                ef.data_envio,
                                ef.email_cliente,
                                c.Nome_Cliente as cliente_nome,
                                c.usuario_cadastro
                            FROM envios_formulario ef
                            LEFT JOIN clientes c ON ef.cliente_id = c.id
                            WHERE ef.tenant_id = ?
                              AND ef.formulario_id = ?";
            
            $params_envios = [$tenant_id, $form_id];
            $types_envios = "ii";
            
            if ($data_inicio && $data_inicio != '') {
                $sql_envios .= " AND ef.data_envio >= ?";
                $params_envios[] = $data_inicio . ' 00:00:00';
                $types_envios .= "s";
            }
            
            if ($data_fim && $data_fim != '') {
                $sql_envios .= " AND ef.data_envio <= ?";
                $params_envios[] = $data_fim . ' 23:59:59';
                $types_envios .= "s";
            }
            
            if (!$pode_ver_todos) {
                $sql_envios .= " AND (c.usuario_cadastro = ? OR EXISTS (
                                SELECT 1 FROM permissoes_clientes pc 
                                WHERE pc.cliente_id = c.id 
                                AND pc.usuario_id = ? 
                                AND pc.visualizar = 1
                            ))";
                $params_envios[] = $usuario_id;
                $params_envios[] = $usuario_id;
                $types_envios .= "ii";
            }
            
            $sql_envios .= " ORDER BY ef.data_envio DESC";
            
            $stmt_envios = $conn->prepare($sql_envios);
            if (!$stmt_envios) {
                error_log("Erro ao preparar consulta de envios para formulário $form_id: " . $conn->error);
                $envios_array[] = 0;
                $respostas_array[] = 0;
                $nao_respondidos_array[] = 0;
                $taxas[] = 0;
                continue;
            }
            
            $stmt_envios->bind_param($types_envios, ...$params_envios);
            $stmt_envios->execute();
            $res_envios = $stmt_envios->get_result();
            $envios = $res_envios->fetch_all(MYSQLI_ASSOC);
            $stmt_envios->close();
            
            $total_envios = count($envios);
            $total_respostas = 0;
            
            // Para cada envio, verificar se houve resposta
            foreach ($envios as $envio) {
                $cliente_id = $envio['cliente_id'];
                $data_envio = $envio['data_envio'];
                
                // Buscar na tabela cliente_logs se houve resposta para este envio
                $sql_resposta = "SELECT 
                                    id,
                                    acao,
                                    data_hora
                                 FROM cliente_logs 
                                 WHERE tenant_id = ? 
                                   AND cliente_id = ? 
                                   AND acao = 'Formulário respondido por e-mail'";
                
                $params_resp = [$tenant_id, $cliente_id];
                $types_resp = "ii";
                
                // A resposta deve ser após o envio (até 30 dias depois)
                $data_limite_inicio = date('Y-m-d H:i:s', strtotime($data_envio));
                $data_limite_fim = date('Y-m-d H:i:s', strtotime($data_envio . ' +30 days'));
                
                $sql_resposta .= " AND data_hora >= ? AND data_hora <= ?";
                $params_resp[] = $data_limite_inicio;
                $params_resp[] = $data_limite_fim;
                $types_resp .= "ss";
                
                $sql_resposta .= " ORDER BY data_hora DESC LIMIT 1";
                
                $stmt_resp = $conn->prepare($sql_resposta);
                $foi_respondido = false;
                $data_resposta = null;
                
                if ($stmt_resp) {
                    $stmt_resp->bind_param($types_resp, ...$params_resp);
                    $stmt_resp->execute();
                    $res_resp = $stmt_resp->get_result();
                    $resposta = $res_resp->fetch_assoc();
                    $stmt_resp->close();
                    
                    if ($resposta) {
                        $foi_respondido = true;
                        $total_respostas++;
                        $data_resposta = $resposta['data_hora'];
                    }
                }
                
                // Adicionar aos detalhes
                $detalhes_formularios[] = [
                    'id' => $envio['id'],
                    'data_envio' => $envio['data_envio'],
                    'email_cliente' => $envio['email_cliente'],
                    'cliente_nome' => $envio['cliente_nome'] ?? 'Cliente não identificado',
                    'formulario_nome' => $form_nome,
                    'formulario_tipo' => 'E-mail',
                    'status_resposta' => $foi_respondido ? 'Respondido' : 'Não respondido',
                    'data_resposta' => $data_resposta,
                    'resposta_acao' => $foi_respondido ? 'Formulário respondido por e-mail' : null
                ];
            }
            
            $envios_array[] = $total_envios;
            $respostas_array[] = $total_respostas;
            $nao_respondidos_array[] = $total_envios - $total_respostas;
            $taxas[] = $total_envios > 0 ? round(($total_respostas / $total_envios) * 100, 2) : 0;
            
        } else if ($form_tipo == 'Funil' || $form_tipo == 'questionário' || $form_tipo == 'questionario') {
            // FORMULÁRIOS DO TIPO FUNIL (QUESTIONÁRIOS)
            // Buscar todas as respostas de questionário para este formulário nos logs
            $sql_respostas = "SELECT 
                                cl.id,
                                cl.cliente_id,
                                cl.data_hora as data_resposta,
                                cl.acao,
                                cl.detalhes,
                                cl.nome_usuario,
                                c.Nome_Cliente as cliente_nome,
                                c.Email as email_cliente,
                                c.usuario_cadastro
                              FROM cliente_logs cl
                              JOIN clientes c ON cl.cliente_id = c.id
                              WHERE cl.tenant_id = ?
                                AND (cl.acao = 'questionario_aprovado' OR cl.acao = 'questionario_reprovado')
                                AND cl.detalhes LIKE ?";
            
            // Buscar no campo detalhes o nome do formulário
            $params_resp_funil = [$tenant_id, '%' . $form_nome . '%'];
            $types_resp_funil = "is";
            
            if ($data_inicio && $data_inicio != '') {
                $sql_respostas .= " AND cl.data_hora >= ?";
                $params_resp_funil[] = $data_inicio . ' 00:00:00';
                $types_resp_funil .= "s";
            }
            
            if ($data_fim && $data_fim != '') {
                $sql_respostas .= " AND cl.data_hora <= ?";
                $params_resp_funil[] = $data_fim . ' 23:59:59';
                $types_resp_funil .= "s";
            }
            
            if (!$pode_ver_todos) {
                $sql_respostas .= " AND (c.usuario_cadastro = ? OR EXISTS (
                                SELECT 1 FROM permissoes_clientes pc 
                                WHERE pc.cliente_id = c.id 
                                AND pc.usuario_id = ? 
                                AND pc.visualizar = 1
                            ))";
                $params_resp_funil[] = $usuario_id;
                $params_resp_funil[] = $usuario_id;
                $types_resp_funil .= "ii";
            }
            
            $sql_respostas .= " ORDER BY cl.data_hora DESC";
            
            $stmt_resp_funil = $conn->prepare($sql_respostas);
            if (!$stmt_resp_funil) {
                error_log("Erro ao preparar consulta de respostas para formulário $form_id: " . $conn->error);
                $envios_array[] = 0;
                $respostas_array[] = 0;
                $nao_respondidos_array[] = 0;
                $taxas[] = 0;
                continue;
            }
            
            $stmt_resp_funil->bind_param($types_resp_funil, ...$params_resp_funil);
            $stmt_resp_funil->execute();
            $res_resp_funil = $stmt_resp_funil->get_result();
            $respostas_funil = $res_resp_funil->fetch_all(MYSQLI_ASSOC);
            $stmt_resp_funil->close();
            
            $total_respostas = count($respostas_funil);
            $total_envios = $total_respostas; // Para funil, cada resposta é um "envio"
            
            foreach ($respostas_funil as $resposta) {
                $detalhes_info = $resposta['detalhes'] ?? '';
                
                $detalhes_formularios[] = [
                    'id' => $resposta['id'],
                    'data_envio' => $resposta['data_resposta'],
                    'email_cliente' => $resposta['email_cliente'] ?? 'N/A',
                    'cliente_nome' => $resposta['cliente_nome'] ?? 'Cliente não identificado',
                    'formulario_nome' => $form_nome,
                    'formulario_tipo' => 'Funil',
                    'status_resposta' => 'Respondido',
                    'data_resposta' => $resposta['data_resposta'],
                    'resposta_acao' => $resposta['acao'],
                    'responsavel' => $resposta['nome_usuario'] ?? 'Sistema',
                    'detalhes' => $detalhes_info
                ];
            }
            
            $envios_array[] = $total_envios;
            $respostas_array[] = $total_respostas;
            $nao_respondidos_array[] = 0;
            $taxas[] = $total_envios > 0 ? 100 : 0;
            
        } else {
            // Outros tipos de formulário
            $envios_array[] = 0;
            $respostas_array[] = 0;
            $nao_respondidos_array[] = 0;
            $taxas[] = 0;
        }
    }
    
    // Calcular totais
    $total_envios = array_sum($envios_array);
    $total_respostas = array_sum($respostas_array);
    $total_nao_respondidos = array_sum($nao_respondidos_array);
    $taxa_media = $total_envios > 0 ? round(($total_respostas / $total_envios) * 100, 2) : 0;
    
    // Preparar dados completos para tabela de resumo
    foreach ($formularios as $index => $form) {
        $dados_completos[] = [
            'formulario' => $form['nome'],
            'tipo' => $form['tipo'],
            'total_envios' => $envios_array[$index] ?? 0,
            'total_respostas' => $respostas_array[$index] ?? 0,
            'total_nao_respondidos' => $nao_respondidos_array[$index] ?? 0,
            'taxa_resposta' => $taxas[$index] ?? 0
        ];
    }
    
    // Ordenar detalhes por data (mais recentes primeiro)
    usort($detalhes_formularios, function($a, $b) {
        return strtotime($b['data_envio']) - strtotime($a['data_envio']);
    });
    
    // Limitar detalhes para não sobrecarregar (últimos 500)
    $detalhes_formularios = array_slice($detalhes_formularios, 0, 500);
    
    return [
        'labels' => $labels,
        'envios' => $envios_array,
        'respostas' => $respostas_array,
        'nao_respondidos' => $nao_respondidos_array,
        'taxas' => $taxas,
        'tipos' => $tipos,
        'taxa_media' => $taxa_media,
        'total_envios' => $total_envios,
        'total_respostas' => $total_respostas,
        'total_nao_respondidos' => $total_nao_respondidos,
        'dados_completos' => $dados_completos,
        'detalhes_formularios' => $detalhes_formularios
    ];
}

// 11. CLIENTES PERDIDOS E RECUPERADOS - CORRIGIDO
function carregarDadosRecuperacaoClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null) {
    
    // Buscar TODOS os clientes que foram perdidos no período (baseado em data_perdido)
    $sql_perdidos = "SELECT 
                        cp.id,
                        cp.cliente_id,
                        cp.data_perdido,
                        cp.data_restaurado,
                        cp.motivo,
                        cp.usuario_id as usuario_perdeu_id,
                        cp.nome_usuario as usuario_perdeu_nome,
                        cp.observacoes,
                        cp.restaurado,
                        c.Nome_Cliente,
                        c.Email,
                        c.Telefone,
                        c.usuario_cadastro
                     FROM clientes_perdidos cp
                     INNER JOIN clientes c ON cp.cliente_id = c.id
                     WHERE cp.tenant_id = ?";
    
    $params_perdidos = [$tenant_id];
    $types_perdidos = "i";
    
    // Filtrar por data de PERDA (sempre filtrar pela data em que foi perdido)
    if (!empty($data_inicio)) {
        $sql_perdidos .= " AND DATE(cp.data_perdido) >= ?";
        $params_perdidos[] = $data_inicio;
        $types_perdidos .= "s";
    }
    
    if (!empty($data_fim)) {
        $sql_perdidos .= " AND DATE(cp.data_perdido) <= ?";
        $params_perdidos[] = $data_fim;
        $types_perdidos .= "s";
    }
    
    // Filtrar por permissão do usuário
    if (!$pode_ver_todos) {
        $sql_perdidos .= " AND (c.usuario_cadastro = ? OR EXISTS (
                        SELECT 1 FROM permissoes_clientes pc 
                        WHERE pc.cliente_id = c.id 
                        AND pc.usuario_id = ? 
                        AND pc.visualizar = 1
                    ))";
        $params_perdidos[] = $usuario_id;
        $params_perdidos[] = $usuario_id;
        $types_perdidos .= "ii";
    }
    
    $sql_perdidos .= " ORDER BY cp.data_perdido DESC";
    
    $stmt_perdidos = $conn->prepare($sql_perdidos);
    if (!$stmt_perdidos) {
        error_log("Erro na consulta de perdidos: " . $conn->error);
        return [
            'total_perdidos' => 0,
            'detalhes_perdidos' => [],
            'total_recuperados' => 0,
            'detalhes_recuperados' => [],
            'recuperados_manual' => 0,
            'recuperados_automatico' => 0,
            'recuperados_por_fluxo' => [],
            'taxa_recuperacao' => 0
        ];
    }
    
    $stmt_perdidos->bind_param($types_perdidos, ...$params_perdidos);
    $stmt_perdidos->execute();
    $res_perdidos = $stmt_perdidos->get_result();
    $detalhes_perdidos = $res_perdidos->fetch_all(MYSQLI_ASSOC);
    $total_perdidos = count($detalhes_perdidos);
    $stmt_perdidos->close();
    
    // Para cada cliente perdido, buscar informações de recuperação nos logs
    $recuperados_manual = 0;
    $recuperados_automatico = 0;
    $recuperados_por_fluxo = [];
    $detalhes_recuperados = [];
    
    foreach ($detalhes_perdidos as $perdido) {
        // Se já tem data_restaurado na tabela, já foi recuperado
        if (!empty($perdido['data_restaurado']) && $perdido['restaurado'] == 1) {
            
            // Buscar no log quem recuperou
            $sql_log = "SELECT 
                            cl.nome_usuario,
                            cl.data_hora,
                            cl.detalhes
                        FROM cliente_logs cl
                        WHERE cl.cliente_id = ? 
                          AND cl.tenant_id = ? 
                          AND cl.acao = 'Cliente restaurado'
                          AND DATE(cl.data_hora) = DATE(?)
                        ORDER BY cl.data_hora DESC
                        LIMIT 1";
            
            $stmt_log = $conn->prepare($sql_log);
            $responsavel = 'Sistema'; // default
            $detalhes_log = '';
            
            if ($stmt_log) {
                $stmt_log->bind_param("iis", $perdido['cliente_id'], $tenant_id, $perdido['data_restaurado']);
                $stmt_log->execute();
                $res_log = $stmt_log->get_result();
                $log_info = $res_log->fetch_assoc();
                $stmt_log->close();
                
                if ($log_info) {
                    $responsavel = $log_info['nome_usuario'] ?? 'Sistema';
                    $detalhes_log = $log_info['detalhes'] ?? '';
                }
            }
            
            // Classificar recuperação
            $tipo_recuperacao = ($responsavel == 'Sistema') ? 'automatico' : 'manual';
            
            if ($tipo_recuperacao == 'automatico') {
                $recuperados_automatico++;
                
                // Tentar identificar o fluxo
                $fluxo_nome = 'Fluxo Automático';
                
                // Procurar nas observações da tabela clientes_perdidos
                if (!empty($perdido['observacoes'])) {
                    if (preg_match('/fluxo ["\']([^"\']+)["\']/i', $perdido['observacoes'], $matches)) {
                        $fluxo_nome = $matches[1];
                    } elseif (preg_match('/fluxo "([^"]+)"/i', $perdido['observacoes'], $matches)) {
                        $fluxo_nome = $matches[1];
                    } elseif (preg_match('/fluxo\s+([^,\s]+)/i', $perdido['observacoes'], $matches)) {
                        $fluxo_nome = 'Fluxo: ' . $matches[1];
                    } elseif (stripos($perdido['observacoes'], 'recuperar') !== false) {
                        $fluxo_nome = 'Fluxo Recuperar';
                    }
                }
                
                // Procurar nos detalhes do log
                if (!empty($detalhes_log) && $fluxo_nome == 'Fluxo Automático') {
                    if (preg_match('/fluxo ["\']([^"\']+)["\']/i', $detalhes_log, $matches)) {
                        $fluxo_nome = $matches[1];
                    }
                }
                
                if (!isset($recuperados_por_fluxo[$fluxo_nome])) {
                    $recuperados_por_fluxo[$fluxo_nome] = 0;
                }
                $recuperados_por_fluxo[$fluxo_nome]++;
                
            } else {
                $recuperados_manual++;
            }
            
            // Adicionar aos detalhes de recuperados
            $detalhes_recuperados[] = [
                'id' => $perdido['id'],
                'cliente_id' => $perdido['cliente_id'],
                'Nome_Cliente' => $perdido['Nome_Cliente'],
                'data_perdido' => $perdido['data_perdido'],
                'data_restaurado' => $perdido['data_restaurado'],
                'motivo' => $perdido['motivo'],
                'nome_usuario' => $responsavel,
                'tipo_recuperacao' => $tipo_recuperacao,
                'observacoes' => $perdido['observacoes']
            ];
        }
    }
    
    // Calcular taxa de recuperação
    $taxa_recuperacao = 0;
    $total_recuperados = count($detalhes_recuperados);
    if ($total_perdidos > 0) {
        $taxa_recuperacao = round(($total_recuperados / $total_perdidos) * 100, 2);
    }
    
    return [
        'total_perdidos' => $total_perdidos,
        'detalhes_perdidos' => $detalhes_perdidos,
        'total_recuperados' => $total_recuperados,
        'detalhes_recuperados' => $detalhes_recuperados,
        'recuperados_manual' => $recuperados_manual,
        'recuperados_automatico' => $recuperados_automatico,
        'recuperados_por_fluxo' => $recuperados_por_fluxo,
        'taxa_recuperacao' => $taxa_recuperacao
    ];
}

// 12. FLUXOS AUTOMATIZADOS
function carregarDadosFluxosAutomatizados($conn, $tenant_id, $data_inicio = null, $data_fim = null) {
    try {
        $sql = "SELECT 
                    f.id,
                    f.nome, 
                    f.ultima_execucao,
                    f.ativo
                FROM fluxos_automatizados f
                WHERE f.tenant_id = ? 
                  AND f.ativo = 1
                ORDER BY f.nome";
        
        $stmt = $conn->prepare($sql);
        if (!$stmt) {
            return [
                'labels' => [], 
                'atividades' => [], 
                'emails' => [], 
                'concluidas' => [], 
                'total_fluxos' => 0, 
                'total_agendamentos' => 0,
                'recuperados_por_fluxo' => [],
                'total_recuperados_automatico' => 0,
                'execucoes_por_dia' => [],
                'dias' => []
            ];
        }
        
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $res = $stmt->get_result();
        $fluxos = $res->fetch_all(MYSQLI_ASSOC);
        $stmt->close();
        
        if (empty($fluxos)) {
            return [
                'labels' => [], 
                'atividades' => [], 
                'emails' => [], 
                'concluidas' => [], 
                'total_fluxos' => 0,
                'total_agendamentos' => 0,
                'recuperados_por_fluxo' => [],
                'total_recuperados_automatico' => 0,
                'execucoes_por_dia' => [],
                'dias' => []
            ];
        }
        
        $labels = [];
        $atividades = [];
        $emails = [];
        $concluidas = [];
        $total_agendamentos = 0;
        $recuperados_por_fluxo = [];
        $execucoes_por_dia = [];
        $dias = [];
        
        for ($i = 29; $i >= 0; $i--) {
            $data = date('Y-m-d', strtotime("-$i days"));
            $dias[] = date('d/m', strtotime($data));
            $execucoes_por_dia[$data] = 0;
        }
        
        foreach ($fluxos as $fluxo) {
            $fluxo_id = $fluxo['id'];
            $labels[] = $fluxo['nome'];
            
            // ATIVIDADES GERADAS
            $sql_atividades = "SELECT 
                                    COUNT(*) as total,
                                    SUM(CASE WHEN concluida = 1 THEN 1 ELSE 0 END) as concluidas
                               FROM atividades 
                               WHERE criado_por_fluxo = ? 
                                 AND tenant_id = ?";
            
            $params_atv = [$fluxo_id, $tenant_id];
            $types_atv = "ii";
            
            if ($data_inicio && $data_inicio != '') {
                $sql_atividades .= " AND data_agendada >= ?";
                $params_atv[] = $data_inicio . ' 00:00:00';
                $types_atv .= "s";
            }
            
            if ($data_fim && $data_fim != '') {
                $sql_atividades .= " AND data_agendada <= ?";
                $params_atv[] = $data_fim . ' 23:59:59';
                $types_atv .= "s";
            }
            
            $stmt = $conn->prepare($sql_atividades);
            if ($stmt) {
                $stmt->bind_param($types_atv, ...$params_atv);
                $stmt->execute();
                $res_atv = $stmt->get_result();
                $atv_data = $res_atv->fetch_assoc();
                $stmt->close();
                
                $total_atividades = (int)($atv_data['total'] ?? 0);
                $total_concluidas = (int)($atv_data['concluidas'] ?? 0);
            } else {
                $total_atividades = 0;
                $total_concluidas = 0;
            }
            
            // EMAILS AGENDADOS
            $total_emails_fluxo = 0;
            $checkTable = $conn->query("SHOW TABLES LIKE 'emails_agendados'");
            if ($checkTable && $checkTable->num_rows > 0) {
                $sql_emails = "SELECT COUNT(*) as total 
                               FROM emails_agendados 
                               WHERE fluxo_id = ? 
                                 AND tenant_id = ?";
                
                $params_email = [$fluxo_id, $tenant_id];
                $types_email = "ii";
                
                if ($data_inicio && $data_inicio != '') {
                    $sql_emails .= " AND data_agendamento >= ?";
                    $params_email[] = $data_inicio . ' 00:00:00';
                    $types_email .= "s";
                }
                
                if ($data_fim && $data_fim != '') {
                    $sql_emails .= " AND data_agendamento <= ?";
                    $params_email[] = $data_fim . ' 23:59:59';
                    $types_email .= "s";
                }
                
                $stmt = $conn->prepare($sql_emails);
                if ($stmt) {
                    $stmt->bind_param($types_email, ...$params_email);
                    $stmt->execute();
                    $res_email = $stmt->get_result();
                    $email_data = $res_email->fetch_assoc();
                    $stmt->close();
                    
                    $total_emails_fluxo = (int)($email_data['total'] ?? 0);
                }
            }
            
            // CLIENTES RECUPERADOS POR ESTE FLUXO
            $sql_recuperados = "SELECT COUNT(DISTINCT cp.cliente_id) as total, DATE(cp.data_restaurado) as data
                                FROM clientes_perdidos cp
                                JOIN atividades a ON cp.cliente_id = a.cliente_id 
                                    AND a.tenant_id = cp.tenant_id
                                WHERE cp.tenant_id = ?
                                  AND cp.restaurado = 1
                                  AND a.criado_por_fluxo = ?
                                  AND DATE(a.data_conclusao) = DATE(cp.data_restaurado)";
            
            $params_rec = [$tenant_id, $fluxo_id];
            $types_rec = "ii";
            
            if ($data_inicio && $data_inicio != '') {
                $sql_recuperados .= " AND cp.data_restaurado >= ?";
                $params_rec[] = $data_inicio . ' 00:00:00';
                $types_rec .= "s";
            }
            
            if ($data_fim && $data_fim != '') {
                $sql_recuperados .= " AND cp.data_restaurado <= ?";
                $params_rec[] = $data_fim . ' 23:59:59';
                $types_rec .= "s";
            }
            
            $sql_recuperados .= " GROUP BY DATE(cp.data_restaurado)";
            
            $stmt = $conn->prepare($sql_recuperados);
            if ($stmt) {
                $stmt->bind_param($types_rec, ...$params_rec);
                $stmt->execute();
                $res_rec = $stmt->get_result();
                $recuperados_datas = $res_rec->fetch_all(MYSQLI_ASSOC);
                $stmt->close();
                
                $recuperados_fluxo = 0;
                foreach ($recuperados_datas as $rec) {
                    $recuperados_fluxo += (int)$rec['total'];
                    $data = $rec['data'];
                    if (isset($execucoes_por_dia[$data])) {
                        $execucoes_por_dia[$data] += (int)$rec['total'];
                    }
                }
            } else {
                $recuperados_fluxo = 0;
            }
            
            if ($recuperados_fluxo > 0) {
                $recuperados_por_fluxo[$fluxo['nome']] = $recuperados_fluxo;
            }
            
            $atividades[] = $total_atividades;
            $emails[] = $total_emails_fluxo;
            $concluidas[] = $total_concluidas;
            $total_agendamentos += ($total_atividades + $total_emails_fluxo);
        }
        
        $execucoes_por_dia_array = array_values($execucoes_por_dia);
        
        return [
            'labels' => $labels,
            'atividades' => $atividades,
            'emails' => $emails,
            'concluidas' => $concluidas,
            'total_fluxos' => count($fluxos),
            'total_agendamentos' => $total_agendamentos,
            'recuperados_por_fluxo' => $recuperados_por_fluxo,
            'total_recuperados_automatico' => array_sum($recuperados_por_fluxo),
            'execucoes_por_dia' => $execucoes_por_dia_array,
            'dias' => $dias
        ];
        
    } catch (Exception $e) {
        error_log("Erro em carregarDadosFluxosAutomatizados: " . $e->getMessage());
        return [
            'labels' => [], 
            'atividades' => [], 
            'emails' => [], 
            'concluidas' => [], 
            'total_fluxos' => 0,
            'total_agendamentos' => 0,
            'recuperados_por_fluxo' => [],
            'total_recuperados_automatico' => 0,
            'execucoes_por_dia' => [],
            'dias' => []
        ];
    }
}

// 13. EVOLUÇÃO DE VENDAS
function carregarDadosEvolucaoVendas($conn, $tenant_id, $usuario_id, $pode_ver_todos, $data_inicio = null, $data_fim = null, $cliente_id = null, $produto = null) {
    $sql = "SELECT 
                DATE(cp.data_cadastro) as data, 
                SUM(cp.valor * cp.quantidade) as valor_total,
                COUNT(DISTINCT cp.cliente_id) as clientes,
                COUNT(cp.id) as vendas
            FROM cliente_produtos cp
            JOIN clientes c ON cp.cliente_id = c.id
            WHERE cp.tenant_id = ?";
    
    $params = [$tenant_id];
    $types = "i";
    
    if (!$pode_ver_todos) {
        $sql .= " AND (c.usuario_cadastro = ? OR EXISTS (
                    SELECT 1 FROM permissoes_clientes pc 
                    WHERE pc.cliente_id = c.id 
                    AND pc.usuario_id = ? 
                    AND pc.visualizar = 1
                ))";
        $params[] = $usuario_id;
        $params[] = $usuario_id;
        $types .= "ii";
    }
    
    if ($data_inicio && $data_inicio != '') {
        $sql .= " AND cp.data_cadastro >= ?";
        $params[] = $data_inicio . ' 00:00:00';
        $types .= "s";
    }
    
    if ($data_fim && $data_fim != '') {
        $sql .= " AND cp.data_cadastro <= ?";
        $params[] = $data_fim . ' 23:59:59';
        $types .= "s";
    }
    
    if ($cliente_id && $cliente_id > 0) {
        $sql .= " AND cp.cliente_id = ?";
        $params[] = $cliente_id;
        $types .= "i";
    }
    
    if ($produto && $produto != '') {
        $sql .= " AND cp.nome_produto = ?";
        $params[] = $produto;
        $types .= "s";
    }
    
    $sql .= " GROUP BY DATE(cp.data_cadastro)
              ORDER BY DATE(cp.data_cadastro)";
    
    $stmt = $conn->prepare($sql);
    if (!$stmt) return ['labels' => [], 'valores' => [], 'clientes' => [], 'vendas' => [], 'total_valor' => 0];
    
    $stmt->bind_param($types, ...$params);
    $stmt->execute();
    $res = $stmt->get_result();
    $dados = $res->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
    
    $labels = [];
    $valores = [];
    $clientes = [];
    $vendas = [];
    
    foreach ($dados as $item) {
        $labels[] = date('d/m', strtotime($item['data']));
        $valores[] = (float)$item['valor_total'];
        $clientes[] = (int)$item['clientes'];
        $vendas[] = (int)$item['vendas'];
    }
    
    return [
        'labels' => $labels,
        'valores' => $valores,
        'clientes' => $clientes,
        'vendas' => $vendas,
        'total_valor' => array_sum($valores)
    ];
}

// 14. FUNÇÃO PARA EXPORTAR DADOS
function exportarDadosCSV($dados, $nome_arquivo) {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="' . $nome_arquivo . '_' . date('Y-m-d') . '.csv"');
    
    $output = fopen('php://output', 'w');
    fputs($output, "\xEF\xBB\xBF"); // BOM para UTF-8
    
    if (!empty($dados)) {
        fputcsv($output, array_keys($dados[0]), ';');
        foreach ($dados as $linha) {
            fputcsv($output, $linha, ';');
        }
    }
    
    fclose($output);
    exit;
}

// ----------------------------
// PROCESSAMENTO DOS FILTROS
// ----------------------------

$data_fim_padrao = date('Y-m-d');
$data_inicio_padrao = date('Y-m-d', strtotime('-30 days'));

$filtros = [
    'data_inicio' => $_GET['data_inicio'] ?? $data_inicio_padrao,
    'data_fim' => $_GET['data_fim'] ?? $data_fim_padrao,
    'cliente_id' => isset($_GET['cliente_id']) && $_GET['cliente_id'] > 0 ? (int)$_GET['cliente_id'] : null,
    'produto' => $_GET['produto'] ?? '',
    'tipo_grafico' => $_GET['tipo_grafico'] ?? 'dashboard_completo',
    'eixo_y' => $_GET['eixo_y'] ?? 'valor_total',
    'tipo_visualizacao' => $_GET['tipo_visualizacao'] ?? 'bar',
    'ano' => $_GET['ano'] ?? date('Y'),
    'tipo_atividade' => $_GET['tipo_atividade'] ?? '',
    'filtro_usuario_id' => isset($_GET['filtro_usuario_id']) && $_GET['filtro_usuario_id'] > 0 ? (int)$_GET['filtro_usuario_id'] : null,
    'funil_id' => isset($_GET['funil_id']) && $_GET['funil_id'] > 0 ? (int)$_GET['funil_id'] : null,
    'tipo_formulario' => $_GET['tipo_formulario'] ?? '',
    'exportar' => $_GET['exportar'] ?? '',
    'cliente_tempo_id' => isset($_GET['cliente_tempo_id']) && $_GET['cliente_tempo_id'] > 0 ? (int)$_GET['cliente_tempo_id'] : null,
    'pagina' => isset($_GET['pagina']) ? (int)$_GET['pagina'] : 1,
    'limite' => 20
];

// ----------------------------
// EXPORTAÇÃO DE DADOS
// ----------------------------
if ($filtros['exportar'] == 'formularios') {
    $dados_exportar = carregarDadosFormularios($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['tipo_formulario'], $filtros['funil_id']);
    if (!empty($dados_exportar['detalhes_formularios'])) {
        exportarDadosCSV($dados_exportar['detalhes_formularios'], 'formularios');
    }
}

if ($filtros['exportar'] == 'tempo_etapa') {
    $dados_exportar = carregarDadosTempoEtapaDetalhado($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['funil_id'], $filtros['cliente_tempo_id']);
    if (!empty($dados_exportar['dados_completos'])) {
        exportarDadosCSV($dados_exportar['dados_completos'], 'tempo_etapa');
    }
}

if ($filtros['exportar'] == 'atividades') {
    $dados_exportar = carregarDadosAtividadesPorUsuario($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['tipo_atividade'], $filtros['filtro_usuario_id']);
    if (!empty($dados_exportar['dados_completos'])) {
        exportarDadosCSV($dados_exportar['dados_completos'], 'atividades_usuarios');
    }
}

// Carregar dados para filtros
$tipos_atividade = carregarTiposAtividade($conn, $tenant_id);
$usuarios_tenant = carregarUsuariosTenant($conn, $tenant_id);
$funis = carregarFunis($conn, $tenant_id);
$clientes = carregarClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos);
$produtos = carregarProdutos($conn, $tenant_id, $usuario_id, $pode_ver_todos);
$tipos_formulario = carregarTiposFormulario($conn, $tenant_id);

// Carregar dados para o dashboard
$dados_funil = carregarDadosPerformanceFunil($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['funil_id']);
$dados_vendas = carregarDadosProdutosVendidos($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['cliente_id'], $filtros['produto'], 8);
$dados_atividades_usuarios = carregarDadosAtividadesPorUsuario($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['tipo_atividade'], $filtros['filtro_usuario_id']);
$dados_atividades_clientes = carregarDadosAtividadesPorCliente($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], 8);
$dados_conversao = carregarDadosConversaoOrigem($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim']);
$dados_tempo_etapa = carregarDadosTempoEtapa($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['funil_id']);
$dados_tempo_etapa_detalhado = carregarDadosTempoEtapaDetalhado($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['funil_id'], $filtros['cliente_tempo_id']);
$dados_ticket = carregarDadosTicketMedio($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim']);
$dados_recuperacao = carregarDadosRecuperacaoClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim']);
$dados_formularios = carregarDadosFormularios($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['tipo_formulario'], $filtros['funil_id']);
$dados_crescimento = carregarDadosCrescimentoClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['ano']);
$dados_fluxos = carregarDadosFluxosAutomatizados($conn, $tenant_id, $filtros['data_inicio'], $filtros['data_fim']);
$dados_produtividade = carregarDadosProdutividadeUsuario($conn, $tenant_id, $filtros['data_inicio'], $filtros['data_fim']);

// Mensagem de sucesso
if (isset($_SESSION['mensagem'])) {
    echo '<div class="mensagem-flutuante" id="mensagemFlutuante">'
       . htmlspecialchars($_SESSION['mensagem'])
       . '</div>';
    
    unset($_SESSION['mensagem']);
}

// Função para paginação
function paginarDados($dados, $pagina, $limite) {
    $total = count($dados);
    $inicio = ($pagina - 1) * $limite;
    $dados_paginados = array_slice($dados, $inicio, $limite);
    $total_paginas = ceil($total / $limite);
    
    return [
        'dados' => $dados_paginados,
        'total' => $total,
        'pagina_atual' => $pagina,
        'total_paginas' => $total_paginas,
        'inicio' => $inicio + 1,
        'fim' => min($inicio + $limite, $total)
    ];
}

// Paginar dados de recuperação
$perdidos_paginados = paginarDados($dados_recuperacao['detalhes_perdidos'], $filtros['pagina'], $filtros['limite']);
$recuperados_paginados = paginarDados($dados_recuperacao['detalhes_recuperados'], $filtros['pagina'], $filtros['limite']);
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SON - Dashboard</title>
    <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 name="csrf-token" content="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
    <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/chart.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f8fafc;
            color: #1e293b;
            line-height: 1.5;
        }
        
        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #ffffff;
            padding: 12px 24px;
            z-index: 1000;
            box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid #e2e8f0;
        }
        
        .header-fixed img {
            height: 45px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
            font-weight: 600;
            color: #0f172a;
        }
        
        .sidebar {
            position: fixed;
            left: 0;
            top: 69px;
            height: calc(100vh - 69px);
            width: 72px;
            background: white;
            box-shadow: 1px 0 10px rgba(0,0,0,0.05);
            z-index: 999;
            transition: width 0.25s ease;
            overflow-x: hidden;
            border-right: 1px solid #e2e8f0;
        }
        
        .sidebar:hover {
            width: 240px;
        }
        
        .sidebar-menu {
            list-style: none;
            padding: 16px 0;
            margin: 0;
        }
        
        .sidebar-menu li {
            border-bottom: 1px solid #f1f5f9;
        }
        
        .sidebar-menu a {
            display: flex;
            align-items: center;
            padding: 14px 20px;
            text-decoration: none;
            color: #475569;
            white-space: nowrap;
            font-weight: 500;
            transition: all 0.2s;
        }
        
        .sidebar-menu a:hover {
            background-color: #f1f5f9;
            color: #0284c7;
        }
        
        .sidebar-menu i {
            width: 24px;
            height: 24px;
            margin-right: 16px;
            text-align: center;
            flex-shrink: 0;
            font-size: 1.2rem;
        }
        
        .sidebar-menu .menu-text {
            opacity: 0;
            transition: opacity 0.2s ease;
            font-size: 0.95rem;
        }
        
        .sidebar:hover .menu-text {
            opacity: 1;
        }
        
        .content-wrapper {
            margin-top: 20px;
            padding: 60px;
            margin-left: 72px;
            transition: none;
            position: relative;
            z-index: 1;
            min-height: calc(100vh - 69px);
            background-color: #f8fafc;
        }
        
        .container {
            max-width: 1600px;
            margin: 0 auto;
            background: white;
            padding: 28px;
            border-radius: 20px;
            box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05), 0 2px 4px -1px rgba(0,0,0,0.03);
        }
        
        .top-bar {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 28px;
        }
        
        h1 {
            color: #0f172a;
            border-bottom: 3px solid #0284c7;
            padding-bottom: 12px;
            margin-bottom: 0;
            font-size: 1.875rem;
            font-weight: 700;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .filtros-container {
            display: flex;
            gap: 16px;
            margin-bottom: 28px;
            align-items: flex-end;
            flex-wrap: wrap;
            background: #f8fafc;
            padding: 24px;
            border-radius: 16px;
            border: 1px solid #e2e8f0;
        }
        
        .filtro-group {
            display: flex;
            flex-direction: column;
            min-width: 180px;
        }
        
        .filtro-group label {
            font-size: 0.75rem;
            font-weight: 700;
            color: #475569;
            margin-bottom: 6px;
            text-transform: uppercase;
            letter-spacing: 0.05em;
        }
        
        .filtro-group select,
        .filtro-group input {
            padding: 10px 14px;
            border: 1px solid #cbd5e1;
            border-radius: 10px;
            font-size: 0.95rem;
            background-color: white;
            transition: all 0.2s;
        }
        
        .filtro-group select:focus,
        .filtro-group input:focus {
            outline: none;
            border-color: #0284c7;
            box-shadow: 0 0 0 3px rgba(2,132,199,0.1);
        }
        
        .filtro-actions {
            display: flex;
            gap: 12px;
            align-items: center;
        }
        
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 10px;
            color: white;
            cursor: pointer;
            font-size: 0.95rem;
            font-weight: 600;
            transition: all 0.2s;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .btn-primary {
            background: linear-gradient(135deg, #0284c7, #0369a1);
            box-shadow: 0 4px 6px -1px rgba(2,132,199,0.2);
        }
        
        .btn-primary:hover {
            transform: translateY(-1px);
            box-shadow: 0 6px 10px -1px rgba(2,132,199,0.3);
        }
        
        .btn-secondary {
            background: #64748b;
        }
        
        .btn-secondary:hover {
            background: #475569;
        }
        
        .btn-success {
            background: linear-gradient(135deg, #10b981, #059669);
        }
        
        .btn-success:hover {
            background: linear-gradient(135deg, #059669, #047857);
        }
        
        .dashboard-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));
            gap: 24px;
            margin-top: 28px;
        }
        
        .dashboard-card {
            background: white;
            border-radius: 16px;
            padding: 24px;
            box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
            border: 1px solid #e2e8f0;
            transition: all 0.3s;
            display: flex;
            flex-direction: column;
        }
        
        .dashboard-card:hover {
            transform: translateY(-4px);
            box-shadow: 0 12px 20px -8px rgba(0,0,0,0.1);
            border-color: #cbd5e1;
        }
        
        .card-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 16px;
            padding-bottom: 12px;
            border-bottom: 2px solid #f1f5f9;
        }
        
        .card-title {
            font-size: 1.1rem;
            font-weight: 700;
            color: #0f172a;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .card-title i {
            font-size: 1.3rem;
        }
        
        .card-content {
            min-height: 200px;
            position: relative;
            flex: 1;
        }
        
        .mini-chart {
            height: 180px;
            width: 100%;
            margin-bottom: 16px;
        }
        
        .valor-destaque {
            font-size: 2.5rem;
            font-weight: 800;
            color: #0284c7;
            text-align: center;
            padding: 20px 0;
            line-height: 1.2;
        }
        
        .metricas-extra {
            display: flex;
            justify-content: space-around;
            margin-top: 16px;
            padding-top: 16px;
            border-top: 1px solid #f1f5f9;
        }
        
        .metrica-item {
            text-align: center;
        }
        
        .metrica-valor {
            font-size: 1.4rem;
            font-weight: 700;
            color: #0f172a;
        }
        
        .metrica-label {
            font-size: 0.75rem;
            color: #64748b;
            text-transform: uppercase;
            letter-spacing: 0.05em;
            margin-top: 4px;
        }
        
        .chart-container {
            background: white;
            border-radius: 16px;
            padding: 24px;
            margin-top: 28px;
            box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
            border: 1px solid #e2e8f0;
        }
        
        .chart-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 24px;
            padding-bottom: 16px;
            border-bottom: 2px solid #f1f5f9;
            flex-wrap: wrap;
            gap: 16px;
        }
        
        .chart-title {
            font-size: 1.4rem;
            font-weight: 700;
            color: #0f172a;
        }
        
        .chart-wrapper {
            position: relative;
            height: 420px;
            width: 100%;
        }
        
        .chart-type-selector {
            display: flex;
            gap: 6px;
            background: #f1f5f9;
            padding: 4px;
            border-radius: 12px;
        }
        
        .chart-type-btn {
            padding: 8px 16px;
            border: none;
            border-radius: 10px;
            background: transparent;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.85rem;
            font-weight: 600;
            color: #64748b;
            transition: all 0.2s;
        }
        
        .chart-type-btn.active,
        .chart-type-btn:hover {
            background: white;
            color: #0284c7;
            box-shadow: 0 2px 4px rgba(0,0,0,0.05);
        }
        
        .export-buttons {
            display: flex;
            gap: 8px;
        }
        
        .btn-export {
            padding: 8px 16px;
            background: #f1f5f9;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            color: #475569;
            font-size: 0.85rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        
        .btn-export:hover {
            background: #e2e8f0;
            color: #0f172a;
        }
        
        .no-data {
            text-align: center;
            padding: 48px;
            color: #94a3b8;
            background: white;
            border-radius: 16px;
            border: 2px dashed #cbd5e1;
        }
        
        .no-data i {
            font-size: 3rem;
            margin-bottom: 16px;
        }
        
        .admin-fixed-btn {
            position: fixed;
            bottom: 30px;
            right: 30px;
            background: linear-gradient(135deg, #8b5cf6, #7c3aed);
            color: white;
            width: 60px;
            height: 60px;
            border-radius: 30px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            box-shadow: 0 10px 25px -5px rgba(124,58,237,0.4);
            z-index: 999;
            cursor: pointer;
            transition: all 0.3s;
        }
        
        .admin-fixed-btn:hover {
            transform: scale(1.1);
            box-shadow: 0 15px 30px -5px rgba(124,58,237,0.5);
        }
        
        .admin-fixed-btn .tooltip {
            position: absolute;
            right: 70px;
            background: #1e293b;
            color: white;
            padding: 8px 16px;
            border-radius: 8px;
            font-size: 14px;
            white-space: nowrap;
            opacity: 0;
            transition: opacity 0.3s;
            pointer-events: none;
            font-weight: 500;
        }
        
        .admin-fixed-btn:hover .tooltip {
            opacity: 1;
        }
        
        .mensagem-flutuante {
            position: fixed;
            top: 90px;
            right: 25px;
            padding: 16px 24px;
            background: linear-gradient(135deg, #10b981, #059669);
            color: white;
            border-radius: 12px;
            z-index: 2000;
            box-shadow: 0 10px 15px -3px rgba(16,185,129,0.2);
            animation: slideIn 0.3s ease-out;
            font-weight: 600;
        }
        
        @keyframes slideIn {
            from { transform: translateY(-20px); opacity: 0; }
            to { transform: translateY(0); opacity: 1; }
        }
        
        .badge {
            display: inline-block;
            padding: 4px 12px;
            border-radius: 20px;
            font-size: 0.75rem;
            font-weight: 700;
            text-transform: uppercase;
        }
        
        .badge-success {
            background: #d1fae5;
            color: #065f46;
        }
        
        .badge-warning {
            background: #fed7aa;
            color: #92400e;
        }
        
        .badge-danger {
            background: #fee2e2;
            color: #991b1b;
        }
        
        .badge-info {
            background: #dbeafe;
            color: #1e40af;
        }
        
        .badge-primary {
            background: #e0f2fe;
            color: #0369a1;
        }
        
        .badge-purple {
            background: #ede9fe;
            color: #6d28d9;
        }
        
        .badge-orange {
            background: #ffedd5;
            color: #c2410c;
        }
        
        table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.9rem;
        }
        
        table th {
            background: #f8fafc;
            padding: 14px 12px;
            text-align: left;
            font-weight: 700;
            color: #475569;
            border-bottom: 2px solid #e2e8f0;
            white-space: nowrap;
        }
        
        table td {
            padding: 12px;
            border-bottom: 1px solid #f1f5f9;
            color: #334155;
        }
        
        table tr:hover {
            background: #f8fafc;
        }
        
        .pagination {
            display: flex;
            justify-content: flex-end;
            margin-top: 16px;
            gap: 8px;
            align-items: center;
        }
        
        .pagination button {
            padding: 8px 14px;
            border: 1px solid #cbd5e1;
            background: white;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.2s;
            font-size: 0.9rem;
            display: flex;
            align-items: center;
            gap: 5px;
        }
        
        .pagination button:hover {
            background: #f1f5f9;
            border-color: #94a3b8;
        }
        
        .pagination button:disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }
        
        .pagination span {
            color: #64748b;
            font-size: 0.9rem;
        }
        
        .pagination-info {
            color: #64748b;
            font-size: 0.85rem;
        }
        
        .status-badge {
            display: inline-block;
            padding: 4px 12px;
            border-radius: 30px;
            font-size: 0.75rem;
            font-weight: 700;
            white-space: nowrap;
        }
        
        .status-respondido {
            background: #d1fae5;
            color: #065f46;
        }
        
        .status-nao-respondido {
            background: #fee2e2;
            color: #991b1b;
        }
        
        .status-auto {
            background: #8b5cf6;
            color: white;
            padding: 3px 8px;
            border-radius: 20px;
            font-size: 0.7rem;
            font-weight: 600;
            display: inline-flex;
            align-items: center;
            gap: 3px;
            white-space: nowrap;
        }
        
        .status-manual {
            background: #f97316;
            color: white;
            padding: 3px 8px;
            border-radius: 20px;
            font-size: 0.7rem;
            font-weight: 600;
            display: inline-flex;
            align-items: center;
            gap: 3px;
            white-space: nowrap;
        }
        
        .status-sistema {
            background: #8b5cf6;
            color: white;
            padding: 3px 8px;
            border-radius: 20px;
            font-size: 0.7rem;
            font-weight: 600;
            display: inline-flex;
            align-items: center;
            gap: 3px;
            white-space: nowrap;
        }
        
        @media (max-width: 1024px) {
            .content-wrapper {
                margin-left: 72px;
                padding: 20px;
            }
            
            .dashboard-grid {
                grid-template-columns: 1fr;
            }
        }
        
        @media (max-width: 768px) {
            .content-wrapper {
                padding: 16px;
                margin-left: 0;
            }
            
            .sidebar {
                width: 0;
                display: none;
            }
            
            .filtros-container {
                flex-direction: column;
                align-items: stretch;
            }
            
            .filtro-group {
                width: 100%;
            }
            
            .chart-wrapper {
                height: 300px;
            }
        }
    </style>
</head>
<body>

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

<div class="content-wrapper">
    <div class="container">
        <div class="top-bar">
            <h1>
                <i class="fas fa-chart-pie" style="color: #0284c7;"></i>
                Dashboard
            </h1>
        </div>

        <!-- FILTROS PRINCIPAIS -->
        <div class="filtros-container">
            <form method="GET" action="<?= htmlspecialchars($_SERVER['PHP_SELF']) ?>" style="display: flex; gap: 16px; width: 100%; flex-wrap: wrap; align-items: flex-end;">
                <div class="filtro-group">
                    <label>Data Início</label>
                    <input type="date" name="data_inicio" value="<?= htmlspecialchars($filtros['data_inicio']) ?>">
                </div>
                
                <div class="filtro-group">
                    <label>Data Fim</label>
                    <input type="date" name="data_fim" value="<?= htmlspecialchars($filtros['data_fim']) ?>">
                </div>
                
                <div class="filtro-group">
                    <label>Tipo de Análise</label>
                    <select name="tipo_grafico">
                        <option value="dashboard_completo" <?= $filtros['tipo_grafico'] == 'dashboard_completo' ? 'selected' : '' ?>>📊 Dashboard Completo</option>
                        <option value="performance_funil" <?= $filtros['tipo_grafico'] == 'performance_funil' ? 'selected' : '' ?>>🎯 Performance do Funil</option>
                        <option value="produtos_vendidos" <?= $filtros['tipo_grafico'] == 'produtos_vendidos' ? 'selected' : '' ?>>🏷️ Produtos Mais Vendidos</option>
                        <option value="atividades_detalhadas" <?= $filtros['tipo_grafico'] == 'atividades_detalhadas' ? 'selected' : '' ?>>✅ Atividades por Usuário</option>
                        <option value="atividades_clientes" <?= $filtros['tipo_grafico'] == 'atividades_clientes' ? 'selected' : '' ?>>👥 Atividades por Cliente</option>
                        <option value="tempo_etapa" <?= $filtros['tipo_grafico'] == 'tempo_etapa' ? 'selected' : '' ?>>⏱️ Tempo por Etapa</option>
                        <option value="conversao_origem" <?= $filtros['tipo_grafico'] == 'conversao_origem' ? 'selected' : '' ?>>🔄 Conversão por Origem</option>
                        <option value="crescimento_clientes" <?= $filtros['tipo_grafico'] == 'crescimento_clientes' ? 'selected' : '' ?>>📈 Crescimento de Clientes</option>
                        <option value="ticket_medio" <?= $filtros['tipo_grafico'] == 'ticket_medio' ? 'selected' : '' ?>>💰 Ticket Médio</option>
                        <option value="produtividade_usuario" <?= $filtros['tipo_grafico'] == 'produtividade_usuario' ? 'selected' : '' ?>>👤 Produtividade</option>
                        <option value="recuperacao_clientes" <?= $filtros['tipo_grafico'] == 'recuperacao_clientes' ? 'selected' : '' ?>>🔄 Recuperação de Clientes</option>
                        <option value="fluxos_automatizados" <?= $filtros['tipo_grafico'] == 'fluxos_automatizados' ? 'selected' : '' ?>>🤖 Fluxos Automatizados</option>
                        <option value="formularios" <?= $filtros['tipo_grafico'] == 'formularios' ? 'selected' : '' ?>>📋 Formulários</option>
                        <option value="evolucao_vendas" <?= $filtros['tipo_grafico'] == 'evolucao_vendas' ? 'selected' : '' ?>>📊 Evolução de Vendas</option>
                    </select>
                </div>
                
                <!-- FILTROS ESPECÍFICOS PARA ATIVIDADES -->
                <?php if ($filtros['tipo_grafico'] == 'atividades_detalhadas' || $filtros['tipo_grafico'] == 'dashboard_completo'): ?>
                    <?php if (!empty($tipos_atividade)): ?>
                    <div class="filtro-group">
                        <label>Tipo de Atividade</label>
                        <select name="tipo_atividade">
                            <option value="">Todos</option>
                            <?php foreach ($tipos_atividade as $tipo): ?>
                                <option value="<?= htmlspecialchars($tipo['tipo']) ?>" <?= $filtros['tipo_atividade'] == $tipo['tipo'] ? 'selected' : '' ?>>
                                    <?= htmlspecialchars($tipo['tipo']) ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <?php endif; ?>
                    
                    <?php if ($pode_ver_todos && !empty($usuarios_tenant)): ?>
                    <div class="filtro-group">
                        <label>Usuário</label>
                        <select name="filtro_usuario_id">
                            <option value="">Todos</option>
                            <?php foreach ($usuarios_tenant as $user): ?>
                                <option value="<?= $user['id'] ?>" <?= $filtros['filtro_usuario_id'] == $user['id'] ? 'selected' : '' ?>>
                                    <?= htmlspecialchars($user['nome']) ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <?php endif; ?>
                <?php endif; ?>
                
                <!-- FILTROS ESPECÍFICOS PARA FUNIL -->
                <?php if (in_array($filtros['tipo_grafico'], ['performance_funil', 'tempo_etapa', 'dashboard_completo', 'formularios'])): ?>
                    <?php if (!empty($funis)): ?>
                    <div class="filtro-group">
                        <label>Funil</label>
                        <select name="funil_id">
                            <option value="">Todos</option>
                            <?php foreach ($funis as $funil): ?>
                                <option value="<?= $funil['id'] ?>" <?= $filtros['funil_id'] == $funil['id'] ? 'selected' : '' ?>>
                                    <?= htmlspecialchars($funil['nome']) ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <?php endif; ?>
                <?php endif; ?>
                
                <!-- FILTROS ESPECÍFICOS PARA FORMULÁRIOS -->
                <?php if ($filtros['tipo_grafico'] == 'formularios'): ?>
                    <?php if (!empty($tipos_formulario)): ?>
                    <div class="filtro-group">
                        <label>Tipo de Formulário</label>
                        <select name="tipo_formulario">
                            <option value="">Todos</option>
                            <?php foreach ($tipos_formulario as $tipo): ?>
                                <option value="<?= htmlspecialchars($tipo['tipo']) ?>" <?= $filtros['tipo_formulario'] == $tipo['tipo'] ? 'selected' : '' ?>>
                                    <?= htmlspecialchars($tipo['tipo']) ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <?php endif; ?>
                <?php endif; ?>
                
                <!-- FILTROS ESPECÍFICOS PARA TEMPO POR ETAPA -->
                <?php if ($filtros['tipo_grafico'] == 'tempo_etapa'): ?>
                    <?php if (!empty($clientes)): ?>
                    <div class="filtro-group">
                        <label>Cliente</label>
                        <select name="cliente_tempo_id">
                            <option value="">Todos</option>
                            <?php foreach ($clientes as $c): ?>
                                <option value="<?= $c['id'] ?>" <?= $filtros['cliente_tempo_id'] == $c['id'] ? 'selected' : '' ?>>
                                    <?= htmlspecialchars(substr($c['Nome_Cliente'], 0, 40)) ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <?php endif; ?>
                <?php endif; ?>
                
                <?php if ($filtros['tipo_grafico'] == 'crescimento_clientes'): ?>
                <div class="filtro-group">
                    <label>Ano</label>
                    <select name="ano">
                        <?php for ($i = date('Y') - 3; $i <= date('Y') + 1; $i++): ?>
                            <option value="<?= $i ?>" <?= $filtros['ano'] == $i ? 'selected' : '' ?>><?= $i ?></option>
                        <?php endfor; ?>
                    </select>
                </div>
                <?php endif; ?>
                
                <?php if (!empty($clientes) && in_array($filtros['tipo_grafico'], ['produtos_vendidos', 'evolucao_vendas', 'atividades_clientes'])): ?>
                <div class="filtro-group">
                    <label>Cliente</label>
                    <select name="cliente_id">
                        <option value="">Todos</option>
                        <?php foreach ($clientes as $c): ?>
                            <option value="<?= $c['id'] ?>" <?= $filtros['cliente_id'] == $c['id'] ? 'selected' : '' ?>>
                                <?= htmlspecialchars(substr($c['Nome_Cliente'], 0, 30)) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <?php endif; ?>
                
                <?php if (!empty($produtos) && $filtros['tipo_grafico'] == 'produtos_vendidos'): ?>
                <div class="filtro-group">
                    <label>Produto</label>
                    <select name="produto">
                        <option value="">Todos</option>
                        <?php foreach ($produtos as $p): ?>
                            <option value="<?= htmlspecialchars($p['nome_produto']) ?>" <?= $filtros['produto'] == $p['nome_produto'] ? 'selected' : '' ?>>
                                <?= htmlspecialchars($p['nome_produto']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <?php endif; ?>
                
                <?php if (in_array($filtros['tipo_grafico'], ['produtos_vendidos', 'evolucao_vendas'])): ?>
                <div class="filtro-group">
                    <label>Métrica</label>
                    <select name="eixo_y">
                        <option value="valor_total" <?= $filtros['eixo_y'] == 'valor_total' ? 'selected' : '' ?>>Valor (R$)</option>
                        <option value="quantidade" <?= $filtros['eixo_y'] == 'quantidade' ? 'selected' : '' ?>>Quantidade</option>
                    </select>
                </div>
                <?php endif; ?>
                
                <input type="hidden" name="pagina" value="1">
                
                <div class="filtro-actions">
                    <button type="submit" class="btn btn-primary">
                        <i class="fas fa-filter"></i> Aplicar
                    </button>
                    <a href="?" class="btn btn-secondary">
                        <i class="fas fa-times"></i> Limpar
                    </a>
                </div>
            </form>
        </div>

        <?php if ($filtros['tipo_grafico'] == 'dashboard_completo'): ?>
            <!-- DASHBOARD COMPLETO -->
            <div class="dashboard-grid">
                <!-- Card 1: Performance do Funil -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-funnel-dollar" style="color: #0284c7;"></i> Funil de Vendas</h3>
                        <a href="?tipo_grafico=performance_funil&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>&funil_id=<?= $filtros['funil_id'] ?>" style="color: #0284c7;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_funil['labels'])): ?>
                            <div class="mini-chart">
                                <canvas id="chartFunil"></canvas>
                            </div>
                            <div style="text-align: center; margin-top: 12px; font-weight: 600;">
                                <span class="badge badge-info"><?= $dados_funil['total_clientes'] ?> clientes no funil</span>
                            </div>
                            <?php if ($filtros['funil_id']): ?>
                                <?php 
                                    $funil_nome = 'Todos';
                                    foreach ($funis as $funil) {
                                        if ($funil['id'] == $filtros['funil_id']) {
                                            $funil_nome = $funil['nome'];
                                            break;
                                        }
                                    }
                                ?>
                                <div style="text-align: center; margin-top: 8px; font-size: 0.85rem; color: #64748b;">
                                    <i class="fas fa-filter"></i> Funil: <?= htmlspecialchars($funil_nome) ?>
                                </div>
                            <?php endif; ?>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-chart-pie fa-3x"></i>
                                <p style="margin-top: 12px;">Sem dados no período</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 2: Produtos Mais Vendidos -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-tag" style="color: #10b981;"></i> Top Produtos</h3>
                        <a href="?tipo_grafico=produtos_vendidos&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #10b981;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_vendas['labels'])): ?>
                            <div class="mini-chart">
                                <canvas id="chartVendas"></canvas>
                            </div>
                            <div style="text-align: center; margin-top: 12px; font-weight: 600;">
                                <span class="badge badge-success">R$ <?= number_format($dados_vendas['total_valor'], 2, ',', '.') ?> em vendas</span>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-box-open fa-3x"></i>
                                <p style="margin-top: 12px;">Nenhuma venda no período</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 3: Atividades por Usuário -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-tasks" style="color: #f59e0b;"></i> Atividades por Usuário</h3>
                        <a href="?tipo_grafico=atividades_detalhadas&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>&tipo_atividade=<?= $filtros['tipo_atividade'] ?>&filtro_usuario_id=<?= $filtros['filtro_usuario_id'] ?>" style="color: #f59e0b;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_atividades_usuarios['labels'])): ?>
                            <div class="mini-chart">
                                <canvas id="chartAtividadesUsuarios"></canvas>
                            </div>
                            <div class="metricas-extra">
                                <div class="metrica-item">
                                    <div class="metrica-valor"><?= array_sum($dados_atividades_usuarios['concluidas']) ?></div>
                                    <div class="metrica-label">Concluídas</div>
                                </div>
                                <div class="metrica-item">
                                    <div class="metrica-valor" style="color: #ef4444;"><?= array_sum($dados_atividades_usuarios['atrasadas']) ?></div>
                                    <div class="metrica-label">Atrasadas</div>
                                </div>
                                <div class="metrica-item">
                                    <div class="metrica-valor" style="color: #f59e0b;"><?= array_sum($dados_atividades_usuarios['futuras']) ?></div>
                                    <div class="metrica-label">Futuras</div>
                                </div>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-calendar-times fa-3x"></i>
                                <p style="margin-top: 12px;">Sem atividades no período</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 4: Atividades por Cliente -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-users" style="color: #8b5cf6;"></i> Atividades por Cliente</h3>
                        <a href="?tipo_grafico=atividades_clientes&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #8b5cf6;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_atividades_clientes['labels'])): ?>
                            <div class="mini-chart">
                                <canvas id="chartAtividadesClientes"></canvas>
                            </div>
                            <div style="text-align: center; margin-top: 12px; font-weight: 600;">
                                <span class="badge badge-info"><?= count($dados_atividades_clientes['labels']) ?> clientes com atividades</span>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-user-slash fa-3x"></i>
                                <p style="margin-top: 12px;">Sem atividades por cliente</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 5: Tempo por Etapa -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-hourglass-half" style="color: #14b8a6;"></i> Tempo por Etapa</h3>
                        <a href="?tipo_grafico=tempo_etapa&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>&funil_id=<?= $filtros['funil_id'] ?>" style="color: #14b8a6;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_tempo_etapa['labels'])): ?>
                            <div class="mini-chart">
                                <canvas id="chartTempoEtapa"></canvas>
                            </div>
                            <div style="text-align: center; margin-top: 12px; font-weight: 600;">
                                <span class="badge badge-warning"><?= $dados_tempo_etapa['tempo_medio_total'] ?>h média total</span>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-clock fa-3x"></i>
                                <p style="margin-top: 12px;">Sem dados de tempo</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 6: Ticket Médio -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-ticket-alt" style="color: #f97316;"></i> Ticket Médio</h3>
                        <a href="?tipo_grafico=ticket_medio&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #f97316;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <div class="valor-destaque" style="color: #f97316;">
                            R$ <?= number_format($dados_ticket['ticket_medio_geral'], 2, ',', '.') ?>
                        </div>
                        <div class="metricas-extra">
                            <div class="metrica-item">
                                <div class="metrica-valor"><?= $dados_ticket['total_vendas'] ?></div>
                                <div class="metrica-label">Vendas</div>
                            </div>
                            <div class="metrica-item">
                                <div class="metrica-valor"><?= $dados_ticket['total_clientes'] ?></div>
                                <div class="metrica-label">Clientes</div>
                            </div>
                            <div class="metrica-item">
                                <div class="metrica-valor"><?= $dados_ticket['total_itens'] ?></div>
                                <div class="metrica-label">Itens</div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- Card 7: Conversão por Origem -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-chart-line" style="color: #ec4899;"></i> Conversão por Origem</h3>
                        <a href="?tipo_grafico=conversao_origem&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #ec4899;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_conversao['labels'])): ?>
                            <div style="display: flex; flex-direction: column; gap: 12px;">
                                <?php 
                                $count = 0;
                                foreach ($dados_conversao['labels'] as $idx => $origem): 
                                    if ($count >= 5) break;
                                    $count++;
                                ?>
                                <div style="display: flex; justify-content: space-between; align-items: center;">
                                    <span style="font-size: 0.9rem; color: #475569; max-width: 60%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                                        <?= htmlspecialchars($origem) ?>
                                    </span>
                                    <span style="font-weight: 700; color: <?= $dados_conversao['taxas'][$idx] > 50 ? '#10b981' : ($dados_conversao['taxas'][$idx] > 30 ? '#f59e0b' : '#ef4444') ?>;">
                                        <?= $dados_conversao['taxas'][$idx] ?>%
                                    </span>
                                </div>
                                <?php endforeach; ?>
                            </div>
                            <div style="text-align: center; margin-top: 16px; padding-top: 12px; border-top: 1px solid #f1f5f9;">
                                <span class="badge badge-info">Média: <?= $dados_conversao['media_taxa'] ?>%</span>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-chart-line fa-3x"></i>
                                <p style="margin-top: 12px;">Sem dados de conversão</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 8: Formulários -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-clipboard-list" style="color: #6366f1;"></i> Formulários</h3>
                        <a href="?tipo_grafico=formularios&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #6366f1;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if ($dados_formularios['total_envios'] > 0): ?>
                            <div style="display: flex; justify-content: space-around; text-align: center; padding: 15px 0;">
                                <div>
                                    <div style="font-size: 2.2rem; font-weight: 700; color: #0284c7;"><?= $dados_formularios['total_envios'] ?></div>
                                    <div style="color: #64748b; font-size: 0.8rem;">Envios</div>
                                </div>
                                <div>
                                    <div style="font-size: 2.2rem; font-weight: 700; color: #10b981;"><?= $dados_formularios['total_respostas'] ?></div>
                                    <div style="color: #64748b; font-size: 0.8rem;">Respostas</div>
                                </div>
                                <div>
                                    <div style="font-size: 1.8rem; font-weight: 700; color: #ef4444;"><?= $dados_formularios['total_nao_respondidos'] ?></div>
                                    <div style="color: #64748b; font-size: 0.8rem;">Não respondidos</div>
                                </div>
                            </div>
                            <div style="text-align: center; margin-top: 8px;">
                                <span class="badge badge-primary">Taxa: <?= $dados_formularios['taxa_media'] ?>%</span>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-clipboard-list fa-3x"></i>
                                <p style="margin-top: 12px;">Nenhum formulário enviado</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 9: Recuperação de Clientes -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-user-slash" style="color: #ef4444;"></i> Recuperação</h3>
                        <a href="?tipo_grafico=recuperacao_clientes&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #ef4444;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <div style="display: flex; justify-content: space-around; text-align: center; padding: 15px 0;">
                            <div>
                                <div style="font-size: 2rem; font-weight: 700; color: #ef4444;"><?= $dados_recuperacao['total_perdidos'] ?></div>
                                <div style="color: #64748b; font-size: 0.8rem;">Perdidos</div>
                            </div>
                            <div>
                                <div style="font-size: 2rem; font-weight: 700; color: #10b981;"><?= $dados_recuperacao['total_recuperados'] ?></div>
                                <div style="color: #64748b; font-size: 0.8rem;">Recuperados</div>
                            </div>
                            <div>
                                <div style="font-size: 1.6rem; font-weight: 700; color: #0284c7;"><?= $dados_recuperacao['taxa_recuperacao'] ?>%</div>
                                <div style="color: #64748b; font-size: 0.8rem;">Taxa</div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- Card 10: Fluxos Automatizados -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-robot" style="color: #64748b;"></i> Fluxos Automatizados</h3>
                        <a href="?tipo_grafico=fluxos_automatizados&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #64748b;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <div style="display: flex; justify-content: space-around; text-align: center; padding: 15px 0;">
                            <div>
                                <div style="font-size: 2rem; font-weight: 700; color: #0284c7;"><?= $dados_fluxos['total_fluxos'] ?></div>
                                <div style="color: #64748b; font-size: 0.8rem;">Fluxos</div>
                            </div>
                            <div>
                                <div style="font-size: 2rem; font-weight: 700; color: #f59e0b;"><?= $dados_fluxos['total_agendamentos'] ?></div>
                                <div style="color: #64748b; font-size: 0.8rem;">Agendamentos</div>
                            </div>
                            <div>
                                <div style="font-size: 2rem; font-weight: 700; color: #10b981;"><?= $dados_fluxos['total_recuperados_automatico'] ?></div>
                                <div style="color: #64748b; font-size: 0.8rem;">Recuperados</div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- Card 11: Produtividade -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-tachometer-alt" style="color: #14b8a6;"></i> Produtividade</h3>
                        <a href="?tipo_grafico=produtividade_usuario&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>" style="color: #14b8a6;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <?php if (!empty($dados_produtividade['labels'])): ?>
                            <div style="display: flex; flex-direction: column; gap: 12px;">
                                <?php 
                                $count = 0;
                                foreach ($dados_produtividade['labels'] as $idx => $usuario): 
                                    if ($count >= 5) break;
                                    $count++;
                                ?>
                                <div style="display: flex; justify-content: space-between; align-items: center;">
                                    <span style="font-size: 0.9rem; color: #475569; max-width: 50%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                                        <?= htmlspecialchars($usuario) ?>
                                    </span>
                                    <div style="display: flex; gap: 12px;">
                                        <span style="font-size: 0.8rem; color: #10b981;">
                                            <i class="fas fa-check-circle"></i> <?= $dados_produtividade['concluidas'][$idx] ?>
                                        </span>
                                        <span style="font-size: 0.8rem; color: #f59e0b;">
                                            <i class="fas fa-calendar"></i> <?= $dados_produtividade['futuras'][$idx] ?>
                                        </span>
                                        <span style="font-size: 0.8rem; color: #ef4444;">
                                            <i class="fas fa-exclamation-circle"></i> <?= $dados_produtividade['atrasadas'][$idx] ?>
                                        </span>
                                    </div>
                                </div>
                                <?php endforeach; ?>
                            </div>
                            <div style="text-align: center; margin-top: 16px; padding-top: 12px; border-top: 1px solid #f1f5f9;">
                                <span class="badge badge-info">
                                    <?= array_sum($dados_produtividade['concluidas']) ?> concluídas, 
                                    <?= array_sum($dados_produtividade['futuras']) ?> futuras, 
                                    <?= array_sum($dados_produtividade['atrasadas']) ?> atrasadas
                                </span>
                            </div>
                        <?php else: ?>
                            <div style="text-align: center; padding: 30px; color: #94a3b8;">
                                <i class="fas fa-tachometer-alt fa-3x"></i>
                                <p style="margin-top: 12px;">Sem dados de produtividade</p>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
                
                <!-- Card 12: Crescimento -->
                <div class="dashboard-card">
                    <div class="card-header">
                        <h3 class="card-title"><i class="fas fa-chart-bar" style="color: #8b5cf6;"></i> Crescimento</h3>
                        <a href="?tipo_grafico=crescimento_clientes&ano=<?= $filtros['ano'] ?>" style="color: #8b5cf6;">
                            <i class="fas fa-expand"></i>
                        </a>
                    </div>
                    <div class="card-content">
                        <div style="text-align: center; padding: 15px 0;">
                            <div style="font-size: 2.2rem; font-weight: 700; color: #8b5cf6;"><?= $dados_crescimento['total_novos'] ?></div>
                            <div style="color: #64748b; font-size: 0.8rem;">Novos clientes em <?= $filtros['ano'] ?></div>
                        </div>
                    </div>
                </div>
            </div>
            
            <!-- DETALHAMENTO DE CLIENTES PERDIDOS E RECUPERADOS -->
            <?php if (!empty($dados_recuperacao['detalhes_perdidos']) || !empty($dados_recuperacao['detalhes_recuperados'])): ?>
            <div style="margin-top: 30px;">
                <h2 style="font-size: 1.3rem; margin-bottom: 20px; color: #0f172a;">Detalhamento de Perdas e Recuperações</h2>
                <div style="display: flex; gap: 20px; flex-wrap: wrap;">
                    
                    <?php if (!empty($dados_recuperacao['detalhes_perdidos'])): ?>
                    <div style="flex: 1; min-width: 300px; background: white; border-radius: 16px; padding: 20px; border: 1px solid #fee2e2;">
                        <h3 style="color: #ef4444; margin-bottom: 15px; display: flex; align-items: center; gap: 8px;">
                            <i class="fas fa-user-slash"></i> Clientes Perdidos no Período
                        </h3>
                        <div style="overflow-x: auto; max-height: 400px; overflow-y: auto;">
                            <table style="width: 100%; font-size: 0.85rem;">
                                <thead style="background: #fee2e2; position: sticky; top: 0;">
                                    <tr>
                                        <th>Cliente</th>
                                        <th>Data</th>
                                        <th>Motivo</th>
                                        <th>Perdido por</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php 
                                    $contador_perdidos = 0;
                                    foreach ($dados_recuperacao['detalhes_perdidos'] as $perdido): 
                                        if ($contador_perdidos >= 20) break;
                                        $contador_perdidos++;
                                    ?>
                                    <tr>
                                        <td style="font-weight: 600; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($perdido['Nome_Cliente'] ?? 'N/A') ?></td>
                                        <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($perdido['data_perdido'])) ?></td>
                                        <td style="max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"><?= htmlspecialchars(substr($perdido['motivo'] ?? '', 0, 50)) ?><?= strlen($perdido['motivo'] ?? '') > 50 ? '...' : '' ?></td>
                                        <td>
                                            <?php if ($perdido['usuario_perdeu_nome'] == 'Sistema'): ?>
                                                <span class="status-auto">
                                                    <i class="fas fa-robot"></i> Sistema
                                                </span>
                                            <?php else: ?>
                                                <span class="status-manual">
                                                    <i class="fas fa-user"></i> <?= htmlspecialchars($perdido['usuario_perdeu_nome'] ?? 'Usuário') ?>
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                    </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                        <?php if (count($dados_recuperacao['detalhes_perdidos']) > 20): ?>
                        <div class="pagination-info" style="text-align: right; margin-top: 10px;">
                            <i class="fas fa-info-circle"></i> Mostrando 20 de <?= count($dados_recuperacao['detalhes_perdidos']) ?> registros
                        </div>
                        <?php endif; ?>
                    </div>
                    <?php endif; ?>
                    
                    <?php if (!empty($dados_recuperacao['detalhes_recuperados'])): ?>
                    <div style="flex: 1; min-width: 300px; background: white; border-radius: 16px; padding: 20px; border: 1px solid #bbf7d0;">
                        <h3 style="color: #10b981; margin-bottom: 15px; display: flex; align-items: center; gap: 8px;">
                            <i class="fas fa-user-check"></i> Clientes Recuperados no Período
                        </h3>
                        <div style="overflow-x: auto; max-height: 400px; overflow-y: auto;">
                            <table style="width: 100%; font-size: 0.85rem;">
                                <thead style="background: #dcfce7; position: sticky; top: 0;">
                                    <tr>
                                        <th>Cliente</th>
                                        <th>Data Perda</th>
                                        <th>Data Recuperação</th>
                                        <th>Tipo</th>
                                        <th>Recuperado por</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php 
                                    $contador_recuperados = 0;
                                    foreach ($dados_recuperacao['detalhes_recuperados'] as $recuperado): 
                                        if ($contador_recuperados >= 20) break;
                                        $contador_recuperados++;
                                    ?>
                                    <tr>
                                        <td style="font-weight: 600; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($recuperado['Nome_Cliente'] ?? 'N/A') ?></td>
                                        <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($recuperado['data_perdido'] ?? $recuperado['data_restaurado'])) ?></td>
                                        <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($recuperado['data_restaurado'])) ?></td>
                                        <td>
                                            <?php if ($recuperado['tipo_recuperacao'] == 'automatico'): ?>
                                                <span class="status-auto">
                                                    <i class="fas fa-robot"></i> Auto
                                                </span>
                                            <?php else: ?>
                                                <span class="status-manual">
                                                    <i class="fas fa-user"></i> Manual
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($recuperado['nome_usuario'] == 'Sistema'): ?>
                                                <span class="status-sistema">
                                                    <i class="fas fa-robot"></i> Sistema
                                                </span>
                                            <?php else: ?>
                                                <span style="color: #f97316; font-weight: 600; white-space: nowrap;">
                                                    <?= htmlspecialchars($recuperado['nome_usuario'] ?? 'Usuário') ?>
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                    </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                        <?php if (count($dados_recuperacao['detalhes_recuperados']) > 20): ?>
                        <div class="pagination-info" style="text-align: right; margin-top: 10px;">
                            <i class="fas fa-info-circle"></i> Mostrando 20 de <?= count($dados_recuperacao['detalhes_recuperados']) ?> registros
                        </div>
                        <?php endif; ?>
                    </div>
                    <?php endif; ?>
                    
                </div>
            </div>
            <?php endif; ?>
            
            <script>
                // Gráfico do Funil
                <?php if (!empty($dados_funil['labels'])): ?>
                new Chart(document.getElementById('chartFunil'), {
                    type: 'doughnut',
                    data: {
                        labels: <?= json_encode(array_slice($dados_funil['labels'], 0, 5)) ?>,
                        datasets: [{
                            data: <?= json_encode(array_slice($dados_funil['clientes'], 0, 5)) ?>,
                            backgroundColor: ['#0284c7', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6']
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: { legend: { display: false } },
                        cutout: '70%'
                    }
                });
                <?php endif; ?>
                
                // Gráfico de Vendas
                <?php if (!empty($dados_vendas['labels'])): ?>
                new Chart(document.getElementById('chartVendas'), {
                    type: 'bar',
                    data: {
                        labels: <?= json_encode(array_slice($dados_vendas['labels'], 0, 5)) ?>,
                        datasets: [{
                            label: 'Valor (R$)',
                            data: <?= json_encode(array_slice($dados_vendas['valores'], 0, 5)) ?>,
                            backgroundColor: '#10b981',
                            borderRadius: 8
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: { legend: { display: false } },
                        scales: {
                            y: {
                                beginAtZero: true,
                                ticks: {
                                    callback: function(value) {
                                        return 'R$ ' + value.toFixed(0);
                                    }
                                }
                            }
                        }
                    }
                });
                <?php endif; ?>
                
                // Gráfico de Atividades por Usuário
                <?php if (!empty($dados_atividades_usuarios['labels'])): ?>
                new Chart(document.getElementById('chartAtividadesUsuarios'), {
                    type: 'bar',
                    data: {
                        labels: <?= json_encode(array_slice($dados_atividades_usuarios['labels'], 0, 5)) ?>,
                        datasets: [
                            {
                                label: 'Concluídas',
                                data: <?= json_encode(array_slice($dados_atividades_usuarios['concluidas'], 0, 5)) ?>,
                                backgroundColor: '#10b981'
                            },
                            {
                                label: 'Futuras',
                                data: <?= json_encode(array_slice($dados_atividades_usuarios['futuras'], 0, 5)) ?>,
                                backgroundColor: '#f59e0b'
                            },
                            {
                                label: 'Atrasadas',
                                data: <?= json_encode(array_slice($dados_atividades_usuarios['atrasadas'], 0, 5)) ?>,
                                backgroundColor: '#ef4444'
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: { legend: { display: false } },
                        scales: { x: { stacked: false }, y: { beginAtZero: true, stacked: false } }
                    }
                });
                <?php endif; ?>
                
                // Gráfico de Atividades por Cliente
                <?php if (!empty($dados_atividades_clientes['labels'])): ?>
                new Chart(document.getElementById('chartAtividadesClientes'), {
                    type: 'bar',
                    data: {
                        labels: <?= json_encode(array_slice($dados_atividades_clientes['labels'], 0, 5)) ?>,
                        datasets: [
                            {
                                label: 'Concluídas',
                                data: <?= json_encode(array_slice($dados_atividades_clientes['concluidas'], 0, 5)) ?>,
                                backgroundColor: '#10b981'
                            },
                            {
                                label: 'Futuras',
                                data: <?= json_encode(array_slice($dados_atividades_clientes['futuras'], 0, 5)) ?>,
                                backgroundColor: '#f59e0b'
                            },
                            {
                                label: 'Atrasadas',
                                data: <?= json_encode(array_slice($dados_atividades_clientes['atrasadas'], 0, 5)) ?>,
                                backgroundColor: '#ef4444'
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: { legend: { display: false } },
                        scales: { x: { stacked: false }, y: { beginAtZero: true, stacked: false } }
                    }
                });
                <?php endif; ?>
                
                // Gráfico de Tempo por Etapa
                <?php if (!empty($dados_tempo_etapa['labels'])): ?>
                new Chart(document.getElementById('chartTempoEtapa'), {
                    type: 'bar',
                    data: {
                        labels: <?= json_encode(array_slice($dados_tempo_etapa['labels'], 0, 5)) ?>,
                        datasets: [{
                            label: 'Horas',
                            data: <?= json_encode(array_slice($dados_tempo_etapa['tempos'], 0, 5)) ?>,
                            backgroundColor: '#14b8a6',
                            borderRadius: 8
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: { legend: { display: false } },
                        scales: {
                            y: {
                                beginAtZero: true,
                                ticks: {
                                    callback: function(value) {
                                        return value + 'h';
                                    }
                                }
                            }
                        }
                    }
                });
                <?php endif; ?>
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'atividades_detalhadas'): ?>
            <?php
            $dados_atividades_detalhadas = carregarDadosAtividadesPorUsuario($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['tipo_atividade'], $filtros['filtro_usuario_id']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-tasks" style="color: #f59e0b;"></i>
                        Atividades por Usuário
                    </div>
                    <div style="display: flex; gap: 12px; align-items: center;">
                        <div class="export-buttons">
                            <a href="?exportar=atividades&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>&tipo_atividade=<?= $filtros['tipo_atividade'] ?>&filtro_usuario_id=<?= $filtros['filtro_usuario_id'] ?>" class="btn-export">
                                <i class="fas fa-file-excel"></i> Exportar
                            </a>
                        </div>
                        <div class="chart-type-selector">
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                                <i class="fas fa-chart-bar"></i> Barras
                            </button>
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                                <i class="fas fa-chart-bar"></i> Horizontal
                            </button>
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'stacked' ? 'active' : '' ?>" onclick="mudarTipo('bar', true)">
                                <i class="fas fa-chart-bar"></i> Empilhado
                            </button>
                        </div>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                
                <?php if ($pode_ver_todos): ?>
                <div style="margin-top: 24px; background: #f8fafc; padding: 20px; border-radius: 12px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; display: flex; align-items: center; gap: 8px;">
                        <i class="fas fa-filter"></i> Filtros aplicados:
                    </h3>
                    <div style="display: flex; gap: 16px; flex-wrap: wrap;">
                        <?php if ($filtros['tipo_atividade']): ?>
                            <span class="badge badge-info">
                                <i class="fas fa-tag"></i> Tipo: <?= htmlspecialchars($filtros['tipo_atividade']) ?>
                            </span>
                        <?php endif; ?>
                        <?php if ($filtros['filtro_usuario_id']): ?>
                            <?php 
                                $nome_usuario_filtro = 'Usuário';
                                foreach ($usuarios_tenant as $user) {
                                    if ($user['id'] == $filtros['filtro_usuario_id']) {
                                        $nome_usuario_filtro = $user['nome'];
                                        break;
                                    }
                                }
                            ?>
                            <span class="badge badge-info">
                                <i class="fas fa-user"></i> Usuário: <?= htmlspecialchars($nome_usuario_filtro) ?>
                            </span>
                        <?php endif; ?>
                        <?php if (!$filtros['tipo_atividade'] && !$filtros['filtro_usuario_id']): ?>
                            <span style="color: #64748b;">Nenhum filtro específico aplicado</span>
                        <?php endif; ?>
                    </div>
                </div>
                <?php endif; ?>
                
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Detalhamento por Usuário</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Usuário</th>
                                    <th>Total</th>
                                    <th>Concluídas</th>
                                    <th>Futuras</th>
                                    <th>Atrasadas</th>
                                    <th>Clientes</th>
                                    <th>Taxa</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($dados_atividades_detalhadas['dados_completos'] ?? [] as $usuario): ?>
                                <tr>
                                    <td style="font-weight: 600;"><?= htmlspecialchars($usuario['usuario_nome']) ?></td>
                                    <td style="text-align: center; font-weight: 700;"><?= $usuario['total_atividades'] ?></td>
                                    <td style="text-align: center; color: #10b981; font-weight: 600;"><?= $usuario['concluidas'] ?></td>
                                    <td style="text-align: center; color: #f59e0b; font-weight: 600;"><?= $usuario['futuras'] ?></td>
                                    <td style="text-align: center; color: #ef4444; font-weight: 600;"><?= $usuario['atrasadas'] ?></td>
                                    <td style="text-align: center;"><?= $usuario['total_clientes'] ?></td>
                                    <td style="text-align: center;">
                                        <span class="badge <?= $usuario['total_atividades'] > 0 && ($usuario['concluidas'] / $usuario['total_atividades']) > 0.7 ? 'badge-success' : 'badge-warning' ?>">
                                            <?= $usuario['total_atividades'] > 0 ? round(($usuario['concluidas'] / $usuario['total_atividades']) * 100, 1) : 0 ?>%
                                        </span>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : 'bar' ?>',
                    data: {
                        labels: <?= json_encode($dados_atividades_detalhadas['labels']) ?>,
                        datasets: [
                            {
                                label: 'Concluídas',
                                data: <?= json_encode($dados_atividades_detalhadas['concluidas']) ?>,
                                backgroundColor: '#10b981',
                                borderRadius: 6
                            },
                            {
                                label: 'Futuras',
                                data: <?= json_encode($dados_atividades_detalhadas['futuras']) ?>,
                                backgroundColor: '#f59e0b',
                                borderRadius: 6
                            },
                            {
                                label: 'Atrasadas',
                                data: <?= json_encode($dados_atividades_detalhadas['atrasadas']) ?>,
                                backgroundColor: '#ef4444',
                                borderRadius: 6
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: { position: 'top' },
                            tooltip: { mode: 'index', intersect: false }
                        },
                        scales: {
                            y: {
                                beginAtZero: true,
                                stacked: <?= $filtros['tipo_visualizacao'] == 'stacked' ? 'true' : 'false' ?>,
                                grid: { color: '#e2e8f0' }
                            },
                            x: {
                                stacked: <?= $filtros['tipo_visualizacao'] == 'stacked' ? 'true' : 'false' ?>,
                                grid: { display: false }
                            }
                        }
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'tempo_etapa'): ?>
            <?php
            $dados_tempo_etapa = carregarDadosTempoEtapa($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['funil_id']);
            $dados_tempo_etapa_detalhado = carregarDadosTempoEtapaDetalhado($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['funil_id'], $filtros['cliente_tempo_id']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-hourglass-half" style="color: #14b8a6;"></i>
                        Tempo por Etapa
                    </div>
                    <div style="display: flex; gap: 12px; align-items: center;">
                        <div class="export-buttons">
                            <a href="?exportar=tempo_etapa&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>&funil_id=<?= $filtros['funil_id'] ?>&cliente_tempo_id=<?= $filtros['cliente_tempo_id'] ?>" class="btn-export">
                                <i class="fas fa-file-excel"></i> Exportar
                            </a>
                        </div>
                        <div class="chart-type-selector">
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                                <i class="fas fa-chart-bar"></i> Barras
                            </button>
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'line' ? 'active' : '' ?>" onclick="mudarTipo('line')">
                                <i class="fas fa-chart-line"></i> Linha
                            </button>
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                                <i class="fas fa-chart-bar"></i> Horizontal
                            </button>
                        </div>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                
                <?php if ($filtros['funil_id']): ?>
                    <?php 
                        $funil_nome = 'Todos';
                        foreach ($funis as $funil) {
                            if ($funil['id'] == $filtros['funil_id']) {
                                $funil_nome = $funil['nome'];
                                break;
                            }
                        }
                    ?>
                    <div style="margin-top: 16px; text-align: center;">
                        <span class="badge badge-info">
                            <i class="fas fa-filter"></i> Funil: <?= htmlspecialchars($funil_nome) ?>
                        </span>
                    </div>
                <?php endif; ?>
                
                <?php if ($filtros['cliente_tempo_id']): ?>
                    <?php 
                        $cliente_nome = 'Todos';
                        foreach ($clientes as $cliente) {
                            if ($cliente['id'] == $filtros['cliente_tempo_id']) {
                                $cliente_nome = $cliente['Nome_Cliente'];
                                break;
                            }
                        }
                    ?>
                    <div style="margin-top: 16px; text-align: center;">
                        <span class="badge badge-primary">
                            <i class="fas fa-filter"></i> Cliente: <?= htmlspecialchars(substr($cliente_nome, 0, 50)) ?>
                        </span>
                    </div>
                <?php endif; ?>
                
                <?php if (!empty($dados_tempo_etapa['labels'])): ?>
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Tempo Médio por Etapa</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Etapa</th>
                                    <th>Tempo Médio</th>
                                    <th>Clientes</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($dados_tempo_etapa['dados_completos'] ?? [] as $etapa): ?>
                                <tr>
                                    <td style="font-weight: 600;"><?= htmlspecialchars($etapa['etapa']) ?></td>
                                    <td style="text-align: center; font-weight: 700;">
                                        <?= round($etapa['tempo_medio_horas'], 1) ?> horas
                                    </td>
                                    <td style="text-align: center;"><?= $etapa['total_clientes'] ?> clientes</td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
                
                <div style="margin-top: 32px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Detalhamento por Cliente</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Cliente</th>
                                    <th>Etapa Atual</th>
                                    <th>Data Entrada</th>
                                    <th>Dias na Etapa</th>
                                    <th>Horas na Etapa</th>
                                    <th>Funil</th>
                                    <th>Status</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php 
                                $count = 0;
                                foreach ($dados_tempo_etapa_detalhado['dados_completos'] ?? [] as $cliente): 
                                    if ($count >= 20) break;
                                    $count++;
                                ?>
                                <tr>
                                    <td style="font-weight: 600; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($cliente['cliente_nome'] ?? 'N/A') ?></td>
                                    <td style="white-space: nowrap;"><?= htmlspecialchars($cliente['etapa_atual'] ?? 'Sem etapa') ?></td>
                                    <td style="white-space: nowrap;"><?= date('d/m/Y', strtotime($cliente['data_entrada'])) ?></td>
                                    <td style="text-align: center;"><?= $cliente['dias_na_etapa'] ?> dias</td>
                                    <td style="text-align: center; font-weight: 700;"><?= round($cliente['horas_na_etapa'], 1) ?> h</td>
                                    <td style="white-space: nowrap;"><?= htmlspecialchars($cliente['funil_nome'] ?? 'Sem funil') ?></td>
                                    <td>
                                        <?php if ($cliente['status_descricao'] == 'Convertido'): ?>
                                            <span class="badge badge-success">Convertido</span>
                                        <?php elseif ($cliente['status_descricao'] == 'Inativo'): ?>
                                            <span class="badge badge-danger">Inativo</span>
                                        <?php else: ?>
                                            <span class="badge badge-warning">Em andamento</span>
                                        <?php endif; ?>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                    <?php if ($dados_tempo_etapa_detalhado['total_registros'] > 20): ?>
                    <div style="text-align: right; margin-top: 12px;" class="pagination-info">
                        <i class="fas fa-info-circle"></i> Mostrando 20 de <?= $dados_tempo_etapa_detalhado['total_registros'] ?> registros. Utilize o filtro de cliente para visualizar um específico.
                    </div>
                    <?php endif; ?>
                </div>
                <?php endif; ?>
            </div>
            
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : $filtros['tipo_visualizacao'] ?>',
                    data: {
                        labels: <?= json_encode($dados_tempo_etapa['labels']) ?>,
                        datasets: [{
                            label: 'Tempo Médio (horas)',
                            data: <?= json_encode($dados_tempo_etapa['tempos']) ?>,
                            backgroundColor: 'rgba(20,184,166,0.2)',
                            borderColor: '#14b8a6',
                            borderWidth: 3,
                            pointBackgroundColor: '#14b8a6',
                            pointBorderColor: 'white',
                            pointBorderWidth: 2,
                            pointRadius: 5,
                            pointHoverRadius: 7,
                            fill: true,
                            tension: 0.4
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: { display: false },
                            tooltip: { 
                                callbacks: {
                                    label: function(context) {
                                        return context.raw + ' horas';
                                    }
                                }
                            }
                        },
                        scales: {
                            y: {
                                beginAtZero: true,
                                grid: { color: '#e2e8f0' },
                                ticks: {
                                    callback: function(value) {
                                        return value + 'h';
                                    }
                                }
                            }
                        }
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'formularios'): ?>
            <?php
            $dados_formularios = carregarDadosFormularios($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['tipo_formulario'], $filtros['funil_id']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-clipboard-list" style="color: #6366f1;"></i>
                        Formulários
                    </div>
                    <div style="display: flex; gap: 12px; align-items: center;">
                        <div class="export-buttons">
                            <a href="?exportar=formularios&data_inicio=<?= $filtros['data_inicio'] ?>&data_fim=<?= $filtros['data_fim'] ?>&tipo_formulario=<?= $filtros['tipo_formulario'] ?>" class="btn-export">
                                <i class="fas fa-file-excel"></i> Exportar
                            </a>
                        </div>
                        <div class="chart-type-selector">
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                                <i class="fas fa-chart-bar"></i> Barras
                            </button>
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                                <i class="fas fa-chart-bar"></i> Horizontal
                            </button>
                            <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                                <i class="fas fa-chart-pie"></i> Pizza
                            </button>
                        </div>
                    </div>
                </div>
                
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                
                <?php if ($filtros['tipo_formulario']): ?>
                <div style="margin-top: 16px; text-align: center;">
                    <span class="badge badge-info">
                        <i class="fas fa-filter"></i> Tipo: <?= htmlspecialchars($filtros['tipo_formulario']) ?>
                    </span>
                </div>
                <?php endif; ?>
                
                <div style="margin-top: 24px; display: flex; flex-wrap: wrap; gap: 20px; justify-content: space-around;">
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.5rem; font-weight: 800; color: #0284c7;"><?= $dados_formularios['total_envios'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Total de Envios</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.5rem; font-weight: 800; color: #10b981;"><?= $dados_formularios['total_respostas'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Total de Respostas</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2rem; font-weight: 800; color: #ef4444;"><?= $dados_formularios['total_nao_respondidos'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Não Respondidos</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2rem; font-weight: 800; color: #f59e0b;"><?= $dados_formularios['taxa_media'] ?>%</div>
                        <div style="color: #64748b; font-weight: 600;">Taxa Média</div>
                    </div>
                </div>
                
                <?php if (!empty($dados_formularios['labels'])): ?>
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Resumo por Formulário</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Formulário</th>
                                    <th>Tipo</th>
                                    <th>Envios</th>
                                    <th>Respostas</th>
                                    <th>Não Respondidos</th>
                                    <th>Taxa</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($dados_formularios['dados_completos'] ?? [] as $form): ?>
                                <tr>
                                    <td style="font-weight: 600;"><?= htmlspecialchars($form['formulario']) ?></td>
                                    <td><span class="badge badge-primary"><?= htmlspecialchars($form['tipo'] ?? 'E-mail') ?></span></td>
                                    <td style="text-align: center;"><?= $form['total_envios'] ?></td>
                                    <td style="text-align: center; color: #10b981; font-weight: 600;"><?= $form['total_respostas'] ?></td>
                                    <td style="text-align: center; color: #ef4444;"><?= $form['total_nao_respondidos'] ?></td>
                                    <td style="text-align: center;">
                                        <span class="badge <?= $form['taxa_resposta'] > 50 ? 'badge-success' : ($form['taxa_resposta'] > 30 ? 'badge-warning' : 'badge-danger') ?>">
                                            <?= $form['taxa_resposta'] ?>%
                                        </span>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
                
                <div style="margin-top: 32px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Últimos Envios e Respostas</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Data</th>
                                    <th>Formulário</th>
                                    <th>Tipo</th>
                                    <th>Cliente</th>
                                    <th>Email</th>
                                    <th>Status</th>
                                    <th>Data Resposta</th>
                                    <th>Ação</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php 
                                $count = 0;
                                foreach ($dados_formularios['detalhes_formularios'] ?? [] as $envio): 
                                    if ($count >= 20) break;
                                    $count++;
                                ?>
                                <tr>
                                    <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($envio['data_envio'])) ?></td>
                                    <td style="font-weight: 600; white-space: nowrap;"><?= htmlspecialchars($envio['formulario_nome'] ?? 'N/A') ?></td>
                                    <td><span class="badge badge-primary"><?= htmlspecialchars($envio['formulario_tipo'] ?? 'E-mail') ?></span></td>
                                    <td style="white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($envio['cliente_nome'] ?? 'N/A') ?></td>
                                    <td style="white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($envio['email_cliente'] ?? 'N/A') ?></td>
                                    <td>
                                        <?php if ($envio['status_resposta'] == 'Respondido'): ?>
                                            <span class="status-badge status-respondido"><i class="fas fa-check-circle"></i> Respondido</span>
                                        <?php else: ?>
                                            <span class="status-badge status-nao-respondido"><i class="fas fa-times-circle"></i> Não respondido</span>
                                        <?php endif; ?>
                                    </td>
                                    <td style="white-space: nowrap;"><?= isset($envio['data_resposta']) ? date('d/m/Y H:i', strtotime($envio['data_resposta'])) : '—' ?></td>
                                    <td>
                                        <?php if (isset($envio['resposta_acao'])): ?>
                                            <span style="font-size: 0.75rem; color: #64748b;">
                                                <?= htmlspecialchars($envio['resposta_acao']) ?>
                                            </span>
                                        <?php endif; ?>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                    <?php if (count($dados_formularios['detalhes_formularios'] ?? []) > 20): ?>
                    <div style="text-align: right; margin-top: 12px;" class="pagination-info">
                        <i class="fas fa-info-circle"></i> Mostrando 20 de <?= count($dados_formularios['detalhes_formularios']) ?> registros. Utilize a exportação para ver todos.
                    </div>
                    <?php endif; ?>
                </div>
                <?php endif; ?>
            </div>
            
            <script>
                <?php if ($filtros['tipo_visualizacao'] == 'pie'): ?>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: 'pie',
                    data: {
                        labels: <?= json_encode($dados_formularios['labels']) ?>,
                        datasets: [{
                            data: <?= json_encode($dados_formularios['envios']) ?>,
                            backgroundColor: ['#0284c7', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6', '#6366f1', '#ec4899', '#14b8a6'],
                            borderWidth: 0
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            title: {
                                display: true,
                                text: 'Distribuição de Envios por Formulário'
                            }
                        }
                    }
                });
                <?php elseif ($filtros['tipo_visualizacao'] == 'horizontalBar'): ?>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: 'horizontalBar',
                    data: {
                        labels: <?= json_encode($dados_formularios['labels']) ?>,
                        datasets: [
                            {
                                label: 'Respostas',
                                data: <?= json_encode($dados_formularios['respostas']) ?>,
                                backgroundColor: '#10b981',
                                borderRadius: 6
                            },
                            {
                                label: 'Não Respondidos',
                                data: <?= json_encode($dados_formularios['nao_respondidos']) ?>,
                                backgroundColor: '#ef4444',
                                borderRadius: 6
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        scales: {
                            x: { beginAtZero: true, stacked: true },
                            y: { stacked: true }
                        }
                    }
                });
                <?php else: ?>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: 'bar',
                    data: {
                        labels: <?= json_encode($dados_formularios['labels']) ?>,
                        datasets: [
                            {
                                label: 'Respostas',
                                data: <?= json_encode($dados_formularios['respostas']) ?>,
                                backgroundColor: '#10b981',
                                borderRadius: 6
                            },
                            {
                                label: 'Não Respondidos',
                                data: <?= json_encode($dados_formularios['nao_respondidos']) ?>,
                                backgroundColor: '#ef4444',
                                borderRadius: 6
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        scales: {
                            y: { beginAtZero: true, stacked: true },
                            x: { stacked: true }
                        }
                    }
                });
                <?php endif; ?>
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'produtividade_usuario'): ?>
            <?php
            $dados_produtividade = carregarDadosProdutividadeUsuario($conn, $tenant_id, $filtros['data_inicio'], $filtros['data_fim']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-tachometer-alt" style="color: #14b8a6;"></i>
                        Produtividade por Usuário
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Detalhamento de Produtividade</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Usuário</th>
                                    <th>Atividades</th>
                                    <th>Concluídas</th>
                                    <th>Futuras</th>
                                    <th>Atrasadas</th>
                                    <th>Taxa</th>
                                    <th>Vendas</th>
                                    <th>Valor</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($dados_produtividade['dados_completos'] ?? [] as $usuario): ?>
                                <tr>
                                    <td style="font-weight: 600;"><?= htmlspecialchars($usuario['nome']) ?></td>
                                    <td style="text-align: center;"><?= $usuario['total_atividades'] ?></td>
                                    <td style="text-align: center; color: #10b981; font-weight: 600;"><?= $usuario['atividades_concluidas'] ?></td>
                                    <td style="text-align: center; color: #f59e0b; font-weight: 600;"><?= $usuario['atividades_futuras'] ?></td>
                                    <td style="text-align: center; color: #ef4444; font-weight: 600;"><?= $usuario['atividades_atrasadas'] ?></td>
                                    <td style="text-align: center;">
                                        <span class="badge <?= $usuario['taxa_conclusao'] > 70 ? 'badge-success' : ($usuario['taxa_conclusao'] > 50 ? 'badge-warning' : 'badge-danger') ?>">
                                            <?= $usuario['taxa_conclusao'] ?>%
                                        </span>
                                    </td>
                                    <td style="text-align: center;"><?= $usuario['produtos_vendidos'] ?></td>
                                    <td style="text-align: center; font-weight: 600;">
                                        R$ <?= number_format($usuario['valor_total_vendas'], 2, ',', '.') ?>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : 'bar' ?>',
                    data: {
                        labels: <?= json_encode($dados_produtividade['labels']) ?>,
                        datasets: [
                            {
                                label: 'Atividades Concluídas',
                                data: <?= json_encode($dados_produtividade['concluidas']) ?>,
                                backgroundColor: '#10b981'
                            },
                            {
                                label: 'Atividades Futuras',
                                data: <?= json_encode($dados_produtividade['futuras']) ?>,
                                backgroundColor: '#f59e0b'
                            },
                            {
                                label: 'Atividades Atrasadas',
                                data: <?= json_encode($dados_produtividade['atrasadas']) ?>,
                                backgroundColor: '#ef4444'
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        scales: {
                            y: { beginAtZero: true, stacked: false },
                            x: { stacked: false }
                        }
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'atividades_clientes'): ?>
            <?php
            $dados_atividades_clientes_detalhado = carregarDadosAtividadesPorCliente($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], 20);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-users" style="color: #8b5cf6;"></i>
                        Atividades por Cliente
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                <div style="margin-top: 20px;">
                    <h3 style="color: #0f172a; font-size: 1.2rem;">Detalhamento por Cliente</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Cliente</th>
                                    <th>Total</th>
                                    <th>Concluídas</th>
                                    <th>Futuras</th>
                                    <th>Atrasadas</th>
                                    <th>Taxa</th>
                                    <th>Usuários</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($dados_atividades_clientes_detalhado['dados_completos'] ?? [] as $cliente): ?>
                                <tr>
                                    <td style="font-weight: 600; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($cliente['cliente_nome']) ?></td>
                                    <td style="text-align: center; font-weight: 700;"><?= $cliente['total_atividades'] ?></td>
                                    <td style="text-align: center; color: #10b981; font-weight: 600;"><?= $cliente['concluidas'] ?></td>
                                    <td style="text-align: center; color: #f59e0b; font-weight: 600;"><?= $cliente['futuras'] ?></td>
                                    <td style="text-align: center; color: #ef4444; font-weight: 600;"><?= $cliente['atrasadas'] ?></td>
                                    <td style="text-align: center;">
                                        <?= $cliente['total_atividades'] > 0 ? round(($cliente['concluidas'] / $cliente['total_atividades']) * 100, 1) : 0 ?>%
                                    </td>
                                    <td style="text-align: center;"><?= $cliente['total_usuarios'] ?></td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : 'bar' ?>',
                    data: {
                        labels: <?= json_encode($dados_atividades_clientes_detalhado['labels']) ?>,
                        datasets: [
                            {
                                label: 'Concluídas',
                                data: <?= json_encode($dados_atividades_clientes_detalhado['concluidas']) ?>,
                                backgroundColor: '#10b981'
                            },
                            {
                                label: 'Futuras',
                                data: <?= json_encode($dados_atividades_clientes_detalhado['futuras']) ?>,
                                backgroundColor: '#f59e0b'
                            },
                            {
                                label: 'Atrasadas',
                                data: <?= json_encode($dados_atividades_clientes_detalhado['atrasadas']) ?>,
                                backgroundColor: '#ef4444'
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        scales: {
                            y: { beginAtZero: true }
                        }
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'performance_funil'): ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-funnel-dollar" style="color: #0284c7;"></i>
                        Performance do Funil
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                            <i class="fas fa-chart-pie"></i> Pizza
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'doughnut' ? 'active' : '' ?>" onclick="mudarTipo('doughnut')">
                            <i class="fas fa-circle"></i> Rosca
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                <?php if ($filtros['funil_id']): ?>
                    <?php 
                        $funil_nome = 'Todos';
                        foreach ($funis as $funil) {
                            if ($funil['id'] == $filtros['funil_id']) {
                                $funil_nome = $funil['nome'];
                                break;
                            }
                        }
                    ?>
                    <div style="margin-top: 16px; text-align: center;">
                        <span class="badge badge-info">
                            <i class="fas fa-filter"></i> Funil: <?= htmlspecialchars($funil_nome) ?>
                        </span>
                    </div>
                <?php endif; ?>
            </div>
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : $filtros['tipo_visualizacao'] ?>',
                    data: {
                        labels: <?= json_encode($dados_funil['labels']) ?>,
                        datasets: [{
                            label: 'Clientes',
                            data: <?= json_encode($dados_funil['clientes']) ?>,
                            backgroundColor: ['#0284c7', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6', '#6366f1', '#ec4899', '#14b8a6'],
                            borderWidth: <?= in_array($filtros['tipo_visualizacao'], ['pie', 'doughnut']) ? '0' : '2' ?>,
                            borderColor: '#ffffff'
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            title: {
                                display: true,
                                text: <?= json_encode($filtros['funil_id'] ? 'Performance do Funil - ' . ($funil_nome ?? '') : 'Performance do Funil') ?>
                            }
                        }
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'produtos_vendidos'): ?>
            <?php
            $dados_produtos = carregarDadosProdutosVendidos($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['cliente_id'], $filtros['produto'], 15);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-tag" style="color: #10b981;"></i>
                        Produtos Mais Vendidos
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                            <i class="fas fa-chart-pie"></i> Pizza
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
            </div>
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'pie' ? 'pie' : ($filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : 'bar') ?>',
                    data: {
                        labels: <?= json_encode($dados_produtos['labels']) ?>,
                        datasets: [{
                            label: '<?= $filtros['eixo_y'] == 'valor_total' ? 'Valor (R$)' : 'Quantidade' ?>',
                            data: <?= json_encode($filtros['eixo_y'] == 'valor_total' ? $dados_produtos['valores'] : $dados_produtos['quantidades']) ?>,
                            backgroundColor: '#10b981',
                            borderColor: '#059669',
                            borderWidth: <?= $filtros['tipo_visualizacao'] == 'pie' ? '0' : '2' ?>
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'crescimento_clientes'): ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-chart-bar" style="color: #8b5cf6;"></i>
                        Crescimento de Clientes - <?= $filtros['ano'] ?>
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'line' ? 'active' : '' ?>" onclick="mudarTipo('line')">
                            <i class="fas fa-chart-line"></i> Linha
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
            </div>
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : $filtros['tipo_visualizacao'] ?>',
                    data: {
                        labels: <?= json_encode($dados_crescimento['labels']) ?>,
                        datasets: [
                            {
                                label: 'Novos Clientes',
                                data: <?= json_encode($dados_crescimento['novos']) ?>,
                                backgroundColor: 'rgba(139,92,246,0.2)',
                                borderColor: '#8b5cf6',
                                borderWidth: 3,
                                pointBackgroundColor: '#8b5cf6',
                                pointBorderColor: 'white',
                                pointBorderWidth: 2,
                                pointRadius: 4,
                                pointHoverRadius: 6,
                                fill: true,
                                tension: 0.4
                            },
                            {
                                label: 'Clientes Convertidos',
                                data: <?= json_encode($dados_crescimento['concluidos']) ?>,
                                backgroundColor: 'rgba(16,185,129,0.2)',
                                borderColor: '#10b981',
                                borderWidth: 3,
                                pointBackgroundColor: '#10b981',
                                pointBorderColor: 'white',
                                pointBorderWidth: 2,
                                pointRadius: 4,
                                pointHoverRadius: 6,
                                fill: true,
                                tension: 0.4
                            }
                        ]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'ticket_medio'): ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-ticket-alt" style="color: #f97316;"></i>
                        Ticket Médio
                    </div>
                </div>
                <div style="text-align: center; padding: 40px;">
                    <div style="font-size: 4rem; font-weight: 800; color: #f97316; margin-bottom: 20px;">
                        R$ <?= number_format($dados_ticket['ticket_medio_geral'], 2, ',', '.') ?>
                    </div>
                    <div style="display: flex; justify-content: center; gap: 40px; margin-top: 30px; flex-wrap: wrap;">
                        <div style="text-align: center;">
                            <div style="font-size: 1.8rem; font-weight: 700; color: #0f172a;"><?= $dados_ticket['total_valor'] ? 'R$ ' . number_format($dados_ticket['total_valor'], 2, ',', '.') : 'R$ 0,00' ?></div>
                            <div style="color: #64748b; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em;">Total Vendido</div>
                        </div>
                        <div style="text-align: center;">
                            <div style="font-size: 1.8rem; font-weight: 700; color: #0f172a;"><?= $dados_ticket['total_clientes'] ?></div>
                            <div style="color: #64748b; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em;">Clientes</div>
                        </div>
                        <div style="text-align: center;">
                            <div style="font-size: 1.8rem; font-weight: 700; color: #0f172a;"><?= $dados_ticket['total_vendas'] ?></div>
                            <div style="color: #64748b; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em;">Vendas</div>
                        </div>
                        <div style="text-align: center;">
                            <div style="font-size: 1.8rem; font-weight: 700; color: #0f172a;"><?= $dados_ticket['total_itens'] ?></div>
                            <div style="color: #64748b; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em;">Itens</div>
                        </div>
                    </div>
                </div>
            </div>
            
        <?php elseif ($filtros['tipo_grafico'] == 'conversao_origem'): ?>
            <?php
            $dados_conversao = carregarDadosConversaoOrigem($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-chart-line" style="color: #ec4899;"></i>
                        Taxa de Conversão por Origem
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                            <i class="fas fa-chart-pie"></i> Pizza
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'doughnut' ? 'active' : '' ?>" onclick="mudarTipo('doughnut')">
                            <i class="fas fa-circle"></i> Rosca
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
                
                <?php if (!empty($dados_conversao['labels'])): ?>
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Detalhamento por Origem</h3>
                    <div style="overflow-x: auto;">
                        <table>
                            <thead>
                                <tr>
                                    <th>Origem</th>
                                    <th>Total Clientes</th>
                                    <th>Convertidos</th>
                                    <th>Taxa</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($dados_conversao['dados_completos'] ?? [] as $origem): ?>
                                <tr>
                                    <td style="font-weight: 600; white-space: nowrap;"><?= htmlspecialchars($origem['origem']) ?></td>
                                    <td style="text-align: center;"><?= $origem['total_clientes'] ?></td>
                                    <td style="text-align: center; color: #10b981; font-weight: 600;"><?= $origem['clientes_concluidos'] ?></td>
                                    <td style="text-align: center;">
                                        <span class="badge <?= $origem['taxa_conversao'] > 50 ? 'badge-success' : ($origem['taxa_conversao'] > 30 ? 'badge-warning' : 'badge-danger') ?>">
                                            <?= $origem['taxa_conversao'] ?>%
                                        </span>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
                <?php endif; ?>
            </div>
            
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : $filtros['tipo_visualizacao'] ?>',
                    data: {
                        labels: <?= json_encode($dados_conversao['labels']) ?>,
                        datasets: [{
                            label: 'Taxa de Conversão (%)',
                            data: <?= json_encode($dados_conversao['taxas']) ?>,
                            backgroundColor: [
                                '#ec4899', '#f43f5e', '#8b5cf6', '#6366f1', '#14b8a6', 
                                '#f59e0b', '#10b981', '#0284c7', '#ef4444', '#8b5cf6'
                            ],
                            borderWidth: <?= in_array($filtros['tipo_visualizacao'], ['pie', 'doughnut']) ? '0' : '2' ?>,
                            borderColor: '#ffffff'
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            tooltip: {
                                callbacks: {
                                    label: function(context) {
                                        let label = context.label || '';
                                        let value = context.raw || 0;
                                        return label + ': ' + value.toFixed(1) + '%';
                                    }
                                }
                            }
                        },
                        scales: <?= in_array($filtros['tipo_visualizacao'], ['pie', 'doughnut']) ? '{}' : '{
                            y: {
                                beginAtZero: true,
                                max: 100,
                                grid: { color: "#e2e8f0" },
                                ticks: {
                                    callback: function(value) {
                                        return value + "%";
                                    }
                                }
                            }
                        }' ?>
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'fluxos_automatizados'): ?>
            <?php
            $dados_fluxos = carregarDadosFluxosAutomatizados($conn, $tenant_id, $filtros['data_inicio'], $filtros['data_fim']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-robot" style="color: #64748b;"></i>
                        Fluxos Automatizados
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                            <i class="fas fa-chart-pie"></i> Pizza
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'line' ? 'active' : '' ?>" onclick="mudarTipo('line')">
                            <i class="fas fa-chart-line"></i> Linha
                        </button>
                    </div>
                </div>
                
                <?php if ($filtros['tipo_visualizacao'] == 'line'): ?>
                <div class="chart-wrapper">
                    <canvas id="graficoLinha"></canvas>
                </div>
                <script>
                    new Chart(document.getElementById('graficoLinha'), {
                        type: 'line',
                        data: {
                            labels: <?= json_encode($dados_fluxos['dias']) ?>,
                            datasets: [{
                                label: 'Recuperações Automáticas',
                                data: <?= json_encode($dados_fluxos['execucoes_por_dia']) ?>,
                                backgroundColor: 'rgba(100,116,139,0.1)',
                                borderColor: '#64748b',
                                borderWidth: 3,
                                pointBackgroundColor: '#64748b',
                                pointBorderColor: 'white',
                                pointBorderWidth: 2,
                                pointRadius: 4,
                                pointHoverRadius: 6,
                                fill: true,
                                tension: 0.3
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false,
                            plugins: {
                                title: {
                                    display: true,
                                    text: 'Evolução de Recuperações Automáticas (últimos 30 dias)',
                                    font: { size: 14 }
                                }
                            },
                            scales: {
                                y: {
                                    beginAtZero: true,
                                    ticks: { stepSize: 1 }
                                }
                            }
                        }
                    });
                </script>
                <?php elseif ($filtros['tipo_visualizacao'] == 'pie' || $filtros['tipo_visualizacao'] == 'doughnut'): ?>
                <div class="chart-wrapper" style="height: 350px;">
                    <canvas id="graficoPizza"></canvas>
                </div>
                <script>
                    new Chart(document.getElementById('graficoPizza'), {
                        type: '<?= $filtros['tipo_visualizacao'] ?>',
                        data: {
                            labels: <?= json_encode($dados_fluxos['labels']) ?>,
                            datasets: [{
                                data: <?= json_encode($dados_fluxos['atividades']) ?>,
                                backgroundColor: [
                                    '#0284c7', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6',
                                    '#6366f1', '#ec4899', '#14b8a6', '#f97316', '#64748b'
                                ],
                                borderWidth: 0
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false,
                            plugins: {
                                title: {
                                    display: true,
                                    text: 'Distribuição de Atividades por Fluxo',
                                    font: { size: 14 }
                                }
                            }
                        }
                    });
                </script>
                <?php elseif ($filtros['tipo_visualizacao'] == 'horizontalBar'): ?>
                <div class="chart-wrapper">
                    <canvas id="graficoHorizontal"></canvas>
                </div>
                <script>
                    new Chart(document.getElementById('graficoHorizontal'), {
                        type: 'horizontalBar',
                        data: {
                            labels: <?= json_encode($dados_fluxos['labels']) ?>,
                            datasets: [
                                {
                                    label: 'Atividades',
                                    data: <?= json_encode($dados_fluxos['atividades']) ?>,
                                    backgroundColor: '#0284c7'
                                },
                                {
                                    label: 'E-mails',
                                    data: <?= json_encode($dados_fluxos['emails']) ?>,
                                    backgroundColor: '#10b981'
                                }
                            ]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false,
                            scales: {
                                x: { beginAtZero: true }
                            }
                        }
                    });
                </script>
                <?php else: ?>
                <div class="chart-wrapper">
                    <canvas id="graficoBarras"></canvas>
                </div>
                <script>
                    new Chart(document.getElementById('graficoBarras'), {
                        type: 'bar',
                        data: {
                            labels: <?= json_encode($dados_fluxos['labels']) ?>,
                            datasets: [
                                {
                                    label: 'Atividades',
                                    data: <?= json_encode($dados_fluxos['atividades']) ?>,
                                    backgroundColor: '#0284c7'
                                },
                                {
                                    label: 'E-mails',
                                    data: <?= json_encode($dados_fluxos['emails']) ?>,
                                    backgroundColor: '#10b981'
                                }
                            ]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false,
                            scales: {
                                y: { beginAtZero: true }
                            }
                        }
                    });
                </script>
                <?php endif; ?>
                
                <div style="margin-top: 24px; display: flex; flex-wrap: wrap; gap: 20px; justify-content: space-around;">
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.5rem; font-weight: 800; color: #0284c7;"><?= $dados_fluxos['total_fluxos'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Fluxos Ativos</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.5rem; font-weight: 800; color: #f59e0b;"><?= $dados_fluxos['total_agendamentos'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Agendamentos</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.5rem; font-weight: 800; color: #10b981;"><?= $dados_fluxos['total_recuperados_automatico'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Recuperados</div>
                    </div>
                </div>
                
                <?php if (!empty($dados_fluxos['recuperados_por_fluxo'])): ?>
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Recuperações por Fluxo Automatizado</h3>
                    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px;">
                        <?php foreach ($dados_fluxos['recuperados_por_fluxo'] as $fluxo => $qtd): ?>
                        <div style="background: #f8fafc; border-radius: 12px; padding: 16px; display: flex; justify-content: space-between; align-items: center;">
                            <span style="font-weight: 600; color: #0f172a; max-width: 70%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                                <?= htmlspecialchars($fluxo) ?>
                            </span>
                            <span style="background: #8b5cf6; color: white; padding: 6px 16px; border-radius: 30px; font-weight: 700;">
                                <?= $qtd ?> recuperado<?= $qtd > 1 ? 's' : '' ?>
                            </span>
                        </div>
                        <?php endforeach; ?>
                    </div>
                </div>
                <?php endif; ?>
            </div>
            
        <?php elseif ($filtros['tipo_grafico'] == 'evolucao_vendas'): ?>
            <?php
            $dados_evolucao = carregarDadosEvolucaoVendas($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim'], $filtros['cliente_id'], $filtros['produto']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-chart-line" style="color: #0284c7;"></i>
                        Evolução de Vendas
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'line' ? 'active' : '' ?>" onclick="mudarTipo('line')">
                            <i class="fas fa-chart-line"></i> Linha
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
            </div>
            <script>
                new Chart(document.getElementById('graficoDetalhado'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : $filtros['tipo_visualizacao'] ?>',
                    data: {
                        labels: <?= json_encode($dados_evolucao['labels']) ?>,
                        datasets: [{
                            label: '<?= $filtros['eixo_y'] == 'valor_total' ? 'Valor (R$)' : 'Quantidade' ?>',
                            data: <?= json_encode($dados_evolucao['valores']) ?>,
                            backgroundColor: 'rgba(2,132,199,0.1)',
                            borderColor: '#0284c7',
                            borderWidth: 3,
                            pointBackgroundColor: '#0284c7',
                            pointBorderColor: 'white',
                            pointBorderWidth: 2,
                            pointRadius: 5,
                            pointHoverRadius: 7,
                            fill: true,
                            tension: 0.4
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        scales: {
                            y: {
                                beginAtZero: true,
                                ticks: {
                                    callback: function(value) {
                                        return <?= $filtros['eixo_y'] == 'valor_total' ? "'R$ ' + value.toFixed(2)" : 'value' ?>;
                                    }
                                }
                            }
                        }
                    }
                });
            </script>
            
        <?php elseif ($filtros['tipo_grafico'] == 'recuperacao_clientes'): ?>
            <?php
            $dados_recuperacao = carregarDadosRecuperacaoClientes($conn, $tenant_id, $usuario_id, $pode_ver_todos, $filtros['data_inicio'], $filtros['data_fim']);
            ?>
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <i class="fas fa-user-slash" style="color: #ef4444;"></i>
                        Recuperação de Clientes - <?= date('d/m/Y', strtotime($filtros['data_inicio'])) ?> a <?= date('d/m/Y', strtotime($filtros['data_fim'])) ?>
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                            <i class="fas fa-chart-pie"></i> Pizza
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'doughnut' ? 'active' : '' ?>" onclick="mudarTipo('doughnut')">
                            <i class="fas fa-circle"></i> Rosca
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                    </div>
                </div>
                
                <div class="chart-wrapper" style="height: 350px;">
                    <canvas id="graficoRecuperacao"></canvas>
                </div>
                
                <div style="margin-top: 24px; display: flex; flex-wrap: wrap; gap: 20px; justify-content: space-around;">
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.2rem; font-weight: 800; color: #ef4444;"><?= $dados_recuperacao['total_perdidos'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Perdidos no Período</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 2.2rem; font-weight: 800; color: #10b981;"><?= $dados_recuperacao['total_recuperados'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Recuperados no Período</div>
                    </div>
                    <div style="background: #f8fafc; border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center;">
                        <div style="font-size: 1.8rem; font-weight: 800; color: #0284c7;"><?= $dados_recuperacao['taxa_recuperacao'] ?>%</div>
                        <div style="color: #64748b; font-weight: 600;">Taxa de Recuperação</div>
                    </div>
                </div>
                
                <div style="margin-top: 24px; display: flex; flex-wrap: wrap; gap: 20px; justify-content: space-around;">
                    <div style="background: linear-gradient(135deg, #fff5f0, #fff); border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center; border: 1px solid #ffddd6;">
                        <div style="font-size: 2rem; font-weight: 800; color: #f97316;"><?= $dados_recuperacao['recuperados_manual'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Recuperação Manual</div>
                        <div style="font-size: 0.8rem; color: #f97316; margin-top: 8px;">
                            <i class="fas fa-user"></i> Ação humana
                        </div>
                    </div>
                    <div style="background: linear-gradient(135deg, #f5f3ff, #fff); border-radius: 12px; padding: 20px; flex: 1; min-width: 200px; text-align: center; border: 1px solid #e0e7ff;">
                        <div style="font-size: 2rem; font-weight: 800; color: #8b5cf6;"><?= $dados_recuperacao['recuperados_automatico'] ?></div>
                        <div style="color: #64748b; font-weight: 600;">Recuperação Automática</div>
                        <div style="font-size: 0.8rem; color: #8b5cf6; margin-top: 8px;">
                            <i class="fas fa-robot"></i> Fluxos automatizados
                        </div>
                    </div>
                </div>
                
                <?php if (!empty($dados_recuperacao['recuperados_por_fluxo'])): ?>
                <div style="margin-top: 24px;">
                    <h3 style="font-size: 1.1rem; margin-bottom: 16px; color: #0f172a;">Recuperações por Fluxo Automatizado</h3>
                    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px;">
                        <?php foreach ($dados_recuperacao['recuperados_por_fluxo'] as $fluxo => $qtd): ?>
                        <div style="background: #f8fafc; border-radius: 12px; padding: 16px; display: flex; justify-content: space-between; align-items: center;">
                            <span style="font-weight: 600; color: #0f172a; max-width: 70%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
                                <?= htmlspecialchars($fluxo) ?>
                            </span>
                            <span style="background: #8b5cf6; color: white; padding: 6px 16px; border-radius: 30px; font-weight: 700;">
                                <?= $qtd ?> recuperado<?= $qtd > 1 ? 's' : '' ?>
                            </span>
                        </div>
                        <?php endforeach; ?>
                    </div>
                </div>
                <?php endif; ?>
                
                <?php if (!empty($dados_recuperacao['detalhes_perdidos']) || !empty($dados_recuperacao['detalhes_recuperados'])): ?>
                <div style="margin-top: 30px; display: flex; gap: 20px; flex-wrap: wrap;">
                    
                    <?php if (!empty($dados_recuperacao['detalhes_perdidos'])): ?>
                    <div style="flex: 1; min-width: 300px;">
                        <h3 style="color: #ef4444; margin-bottom: 15px;">Clientes Perdidos no Período</h3>
                        <div style="overflow-x: auto; max-height: 400px; overflow-y: auto; border: 1px solid #fee2e2; border-radius: 12px;">
                            <table style="width: 100%; font-size: 0.85rem;">
                                <thead style="background: #fee2e2; position: sticky; top: 0;">
                                    <tr>
                                        <th>Cliente</th>
                                        <th>Data</th>
                                        <th>Motivo</th>
                                        <th>Perdido por</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php 
                                    $contador = 0;
                                    foreach ($perdidos_paginados['dados'] as $perdido): 
                                        $contador++;
                                    ?>
                                    <tr>
                                        <td style="font-weight: 600; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($perdido['Nome_Cliente'] ?? 'N/A') ?></td>
                                        <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($perdido['data_perdido'])) ?></td>
                                        <td style="max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"><?= htmlspecialchars(substr($perdido['motivo'] ?? '', 0, 50)) ?><?= strlen($perdido['motivo'] ?? '') > 50 ? '...' : '' ?></td>
                                        <td>
                                            <?php if ($perdido['usuario_perdeu_nome'] == 'Sistema'): ?>
                                                <span class="status-auto">
                                                    <i class="fas fa-robot"></i> Sistema
                                                </span>
                                            <?php else: ?>
                                                <span class="status-manual">
                                                    <i class="fas fa-user"></i> <?= htmlspecialchars($perdido['usuario_perdeu_nome'] ?? 'Usuário') ?>
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                    </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                        
                        <?php if ($perdidos_paginados['total_paginas'] > 1): ?>
                        <div class="pagination">
                            <span class="pagination-info">
                                Mostrando <?= $perdidos_paginados['inicio'] ?> - <?= $perdidos_paginados['fim'] ?> de <?= $perdidos_paginados['total'] ?> registros
                            </span>
                            <div>
                                <?php if ($perdidos_paginados['pagina_atual'] > 1): ?>
                                <a href="?<?= http_build_query(array_merge($_GET, ['pagina' => $perdidos_paginados['pagina_atual'] - 1])) ?>">
                                    <button><i class="fas fa-chevron-left"></i> Anterior</button>
                                </a>
                                <?php endif; ?>
                                
                                <span>Página <?= $perdidos_paginados['pagina_atual'] ?> de <?= $perdidos_paginados['total_paginas'] ?></span>
                                
                                <?php if ($perdidos_paginados['pagina_atual'] < $perdidos_paginados['total_paginas']): ?>
                                <a href="?<?= http_build_query(array_merge($_GET, ['pagina' => $perdidos_paginados['pagina_atual'] + 1])) ?>">
                                    <button>Próxima <i class="fas fa-chevron-right"></i></button>
                                </a>
                                <?php endif; ?>
                            </div>
                        </div>
                        <?php endif; ?>
                    </div>
                    <?php endif; ?>
                    
                    <?php if (!empty($dados_recuperacao['detalhes_recuperados'])): ?>
                    <div style="flex: 1; min-width: 300px;">
                        <h3 style="color: #10b981; margin-bottom: 15px;">Clientes Recuperados no Período</h3>
                        <div style="overflow-x: auto; max-height: 400px; overflow-y: auto; border: 1px solid #bbf7d0; border-radius: 12px;">
                            <table style="width: 100%; font-size: 0.85rem;">
                                <thead style="background: #dcfce7; position: sticky; top: 0;">
                                    <tr>
                                        <th>Cliente</th>
                                        <th>Data Perda</th>
                                        <th>Data Recuperação</th>
                                        <th>Tipo</th>
                                        <th>Recuperado por</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php 
                                    $contador = 0;
                                    foreach ($recuperados_paginados['dados'] as $recuperado): 
                                        $contador++;
                                    ?>
                                    <tr>
                                        <td style="font-weight: 600; white-space: nowrap; max-width: 200px; overflow: hidden; text-overflow: ellipsis;"><?= htmlspecialchars($recuperado['Nome_Cliente'] ?? 'N/A') ?></td>
                                        <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($recuperado['data_perdido'] ?? $recuperado['data_restaurado'])) ?></td>
                                        <td style="white-space: nowrap;"><?= date('d/m/Y H:i', strtotime($recuperado['data_restaurado'])) ?></td>
                                        <td>
                                            <?php if ($recuperado['tipo_recuperacao'] == 'automatico'): ?>
                                                <span class="status-auto">
                                                    <i class="fas fa-robot"></i> Auto
                                                </span>
                                            <?php else: ?>
                                                <span class="status-manual">
                                                    <i class="fas fa-user"></i> Manual
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <?php if ($recuperado['nome_usuario'] == 'Sistema'): ?>
                                                <span class="status-sistema">
                                                    <i class="fas fa-robot"></i> Sistema
                                                </span>
                                            <?php else: ?>
                                                <span style="color: #f97316; font-weight: 600; white-space: nowrap;">
                                                    <?= htmlspecialchars($recuperado['nome_usuario'] ?? 'Usuário') ?>
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                    </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                        
                        <?php if ($recuperados_paginados['total_paginas'] > 1): ?>
                        <div class="pagination">
                            <span class="pagination-info">
                                Mostrando <?= $recuperados_paginados['inicio'] ?> - <?= $recuperados_paginados['fim'] ?> de <?= $recuperados_paginados['total'] ?> registros
                            </span>
                            <div>
                                <?php if ($recuperados_paginados['pagina_atual'] > 1): ?>
                                <a href="?<?= http_build_query(array_merge($_GET, ['pagina' => $recuperados_paginados['pagina_atual'] - 1])) ?>">
                                    <button><i class="fas fa-chevron-left"></i> Anterior</button>
                                </a>
                                <?php endif; ?>
                                
                                <span>Página <?= $recuperados_paginados['pagina_atual'] ?> de <?= $recuperados_paginados['total_paginas'] ?></span>
                                
                                <?php if ($recuperados_paginados['pagina_atual'] < $recuperados_paginados['total_paginas']): ?>
                                <a href="?<?= http_build_query(array_merge($_GET, ['pagina' => $recuperados_paginados['pagina_atual'] + 1])) ?>">
                                    <button>Próxima <i class="fas fa-chevron-right"></i></button>
                                </a>
                                <?php endif; ?>
                            </div>
                        </div>
                        <?php endif; ?>
                    </div>
                    <?php endif; ?>
                    
                </div>
                <?php endif; ?>
            </div>
            
            <script>
                new Chart(document.getElementById('graficoRecuperacao'), {
                    type: '<?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'horizontalBar' : $filtros['tipo_visualizacao'] ?>',
                    data: {
                        labels: ['Perdidos', 'Recuperados'],
                        datasets: [{
                            data: [
                                <?= $dados_recuperacao['total_perdidos'] ?>, 
                                <?= $dados_recuperacao['total_recuperados'] ?>
                            ],
                            backgroundColor: ['#ef4444', '#10b981'],
                            borderWidth: <?= in_array($filtros['tipo_visualizacao'], ['pie', 'doughnut']) ? '0' : '2' ?>,
                            borderColor: '#ffffff',
                            hoverOffset: 8
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: { position: 'top' },
                            tooltip: {
                                callbacks: {
                                    label: function(context) {
                                        let label = context.label || '';
                                        let value = context.raw || 0;
                                        let total = context.dataset.data.reduce((a, b) => a + b, 0);
                                        let percentage = total > 0 ? ((value / total) * 100).toFixed(1) : 0;
                                        return label + ': ' + value + ' (' + percentage + '%)';
                                    }
                                }
                            }
                        }
                    }
                });
            </script>
            
        <?php else: ?>
            <!-- GRÁFICOS DETALHADOS PARA OUTRAS MÉTRICAS -->
            <div class="chart-container">
                <div class="chart-header">
                    <div class="chart-title">
                        <?php 
                        $titulo = ucfirst(str_replace('_', ' ', $filtros['tipo_grafico']));
                        echo $titulo;
                        ?>
                    </div>
                    <div class="chart-type-selector">
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'bar' ? 'active' : '' ?>" onclick="mudarTipo('bar')">
                            <i class="fas fa-chart-bar"></i> Barras
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'line' ? 'active' : '' ?>" onclick="mudarTipo('line')">
                            <i class="fas fa-chart-line"></i> Linha
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'pie' ? 'active' : '' ?>" onclick="mudarTipo('pie')">
                            <i class="fas fa-chart-pie"></i> Pizza
                        </button>
                        <button class="chart-type-btn <?= $filtros['tipo_visualizacao'] == 'horizontalBar' ? 'active' : '' ?>" onclick="mudarTipo('horizontalBar')">
                            <i class="fas fa-chart-bar"></i> Horizontal
                        </button>
                    </div>
                </div>
                <div class="chart-wrapper">
                    <canvas id="graficoDetalhado"></canvas>
                </div>
            </div>
            <div style="text-align: center; padding: 40px; color: #94a3b8;">
                <i class="fas fa-info-circle fa-3x"></i>
                <p style="margin-top: 16px;">Selecione uma opção no menu para visualizar os dados</p>
            </div>
        <?php endif; ?>
    </div>
</div>

<?php if (in_array($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>
    function mudarTipo(tipo, stacked = false) {
        const url = new URL(window.location.href);
        url.searchParams.set('tipo_visualizacao', tipo);
        if (stacked) {
            url.searchParams.set('tipo_visualizacao', 'stacked');
        }
        window.location.href = url.toString();
    }
    
    function atualizarDashboard() {
        window.location.reload();
    }
    
    // Auto-hide mensagem flutuante
    setTimeout(function() {
        const msg = document.getElementById('mensagemFlutuante');
        if (msg) {
            msg.style.opacity = '0';
            setTimeout(() => msg.style.display = 'none', 300);
        }
    }, 3000);
</script>

<?php include 'sino_notificacoes.php'; ?>
</body>
</html>