<?php
// sino_notificacoes.php - Sistema de Notificações Flutuante com Opção de Adiar
// Versão corrigida - Botão Adiar visível

// Iniciar sessão se não estiver iniciada
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Verificar se o usuário está logado
if (!isset($_SESSION['logado'])) {
    exit;
}

require_once 'conexao.php';

// Verificar CSRF token - criar se não existir
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// Verifica o tenant_id
$tenant_id = $_SESSION['tenant_id'] ?? null;
if (!$tenant_id || !is_numeric($tenant_id)) {
    exit;
}

// Informações da sessão
$usuario_id = $_SESSION['usuario_id'] ?? null;
$permissao = $_SESSION['permissao'] ?? 'usuario';

// Se não tiver usuário ID, não continua
if (!$usuario_id) {
    exit;
}

// ========== FUNÇÃO PARA ADIAR ATIVIDADE ==========
if (isset($_POST['acao']) && $_POST['acao'] === 'adiar_atividade') {
    header('Content-Type: application/json');
    
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        echo json_encode(['success' => false, 'message' => 'Token CSRF inválido']);
        exit;
    }
    
    if (!isset($_POST['atividade_id']) || !isset($_POST['minutos_adiar'])) {
        echo json_encode(['success' => false, 'message' => 'Dados incompletos']);
        exit;
    }
    
    $atividade_id = (int)$_POST['atividade_id'];
    $minutos_adiar = (int)$_POST['minutos_adiar'];
    
    // Validar valores
    if ($atividade_id <= 0 || $minutos_adiar <= 0) {
        echo json_encode(['success' => false, 'message' => 'Valores inválidos']);
        exit;
    }
    
    // Verificar se a atividade existe e usuário tem permissão
    $sql_verificar = "SELECT a.* 
                      FROM atividades a 
                      WHERE a.id = ? AND a.tenant_id = ? AND a.ativo = 1";
    
    $stmt_verificar = $conn->prepare($sql_verificar);
    $stmt_verificar->bind_param("ii", $atividade_id, $tenant_id);
    $stmt_verificar->execute();
    $result_verificar = $stmt_verificar->get_result();
    
    if ($result_verificar->num_rows === 0) {
        $stmt_verificar->close();
        echo json_encode(['success' => false, 'message' => 'Atividade não encontrada']);
        exit;
    }
    
    $atividade = $result_verificar->fetch_assoc();
    $stmt_verificar->close();
    
    // Verificar permissões (simplificado para testes)
    $tem_permissao = false;
    
    // Administradores sempre podem
    if ($permissao === 'admin' || $permissao === 'super_admin') {
        $tem_permissao = true;
    }
    // Usuário responsável pode
    elseif ($atividade['usuario_id'] == $usuario_id) {
        $tem_permissao = true;
    }
    // Verificar compartilhamento
    else {
        $sql_compartilhada = "SELECT 1 FROM compartilhamento_agenda 
                             WHERE usuario_proprietario_id = ? 
                             AND usuario_compartilhado_id = ? 
                             AND ativo = 1";
        $stmt_comp = $conn->prepare($sql_compartilhada);
        $stmt_comp->bind_param("ii", $atividade['usuario_id'], $usuario_id);
        $stmt_comp->execute();
        $result_comp = $stmt_comp->get_result();
        
        if ($result_comp->num_rows > 0) {
            $tem_permissao = true;
        }
        $stmt_comp->close();
    }
    
    if (!$tem_permissao) {
        echo json_encode(['success' => false, 'message' => 'Sem permissão para adiar esta atividade']);
        exit;
    }
    
    // Calcular nova data/hora
    $nova_data = date('Y-m-d H:i:s', strtotime("+{$minutos_adiar} minutes", strtotime($atividade['data_agendada'])));
    
    // Atualizar a atividade
    $sql_atualizar = "UPDATE atividades SET data_agendada = ?, ultima_notificacao = NULL WHERE id = ? AND tenant_id = ?";
    $stmt_atualizar = $conn->prepare($sql_atualizar);
    $stmt_atualizar->bind_param("sii", $nova_data, $atividade_id, $tenant_id);
    
    if ($stmt_atualizar->execute()) {
        echo json_encode([
            'success' => true, 
            'message' => "Atividade adiada em {$minutos_adiar} minutos",
            'nova_data' => $nova_data,
            'nova_data_formatada' => date('d/m/Y H:i', strtotime($nova_data))
        ]);
    } else {
        echo json_encode(['success' => false, 'message' => 'Erro ao adiar atividade']);
    }
    
    $stmt_atualizar->close();
    exit;
}

// ========== FUNÇÃO PARA MARCAR NOTIFICAÇÃO COMO LIDA ==========
if (isset($_POST['acao']) && $_POST['acao'] === 'marcar_lida') {
    header('Content-Type: application/json');
    
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        echo json_encode(['success' => false, 'message' => 'Token CSRF inválido']);
        exit;
    }
    
    if (!isset($_POST['notificacao_id'])) {
        echo json_encode(['success' => false, 'message' => 'ID da notificação não fornecido']);
        exit;
    }
    
    $notificacao_id = $_POST['notificacao_id'];
    
    if (strpos($notificacao_id, 'atv_') === 0) {
        $parts = explode('_', $notificacao_id);
        $atividade_id = $parts[1] ?? null;
        
        if ($atividade_id && is_numeric($atividade_id)) {
            $agora = date('Y-m-d H:i:00');
            $sql = "UPDATE atividades SET ultima_notificacao = ? WHERE id = ? AND tenant_id = ?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("sii", $agora, $atividade_id, $tenant_id);
            $stmt->execute();
            $stmt->close();
        }
    }
    
    echo json_encode(['success' => true, 'message' => 'Notificação marcada como lida']);
    exit;
}

// ========== FUNÇÃO PARA MARCAR TODAS COMO LIDAS ==========
if (isset($_POST['acao']) && $_POST['acao'] === 'marcar_todas_lidas') {
    header('Content-Type: application/json');
    
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        echo json_encode(['success' => false, 'message' => 'Token CSRF inválido']);
        exit;
    }
    
    $agora = date('Y-m-d H:i:00');
    $sql = "UPDATE atividades SET ultima_notificacao = ? 
            WHERE tenant_id = ? 
            AND ativo = 1 
            AND concluida = 0
            AND (ultima_notificacao IS NULL OR ultima_notificacao != ?)";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sis", $agora, $tenant_id, $agora);
    $stmt->execute();
    $stmt->close();
    
    echo json_encode(['success' => true, 'message' => 'Todas as notificações marcadas como lidas']);
    exit;
}

// Buscar se o usuário pode ver todos os clientes
$ver_todos_clientes = 0;
$stmtPerm = $conn->prepare("SELECT ver_todos_clientes FROM usuarios WHERE id = ?");
$stmtPerm->bind_param("i", $usuario_id);
$stmtPerm->execute();
$resultPerm = $stmtPerm->get_result();

if ($resultPerm->num_rows > 0) {
    $linhaPerm = $resultPerm->fetch_assoc();
    $ver_todos_clientes = isset($linhaPerm['ver_todos_clientes']) ? (int)$linhaPerm['ver_todos_clientes'] : 0;
}
$stmtPerm->close();

// Configurar fuso horário
date_default_timezone_set('America/Sao_Paulo');




// ========== FUNÇÃO PARA BUSCAR NOTIFICAÇÕES PENDENTES ==========
function buscarNotificacoesPendentes($conn, $usuario_id, $tenant_id, $ver_todos_clientes, $permissao) {
    $agora = date('Y-m-d H:i:00');
    $notificacoes = [];
    
    // Configurações de tempo para notificações
    $opcoes_notificacao = [
        1 => 5,     // 5 minutos antes
        2 => 15,    // 15 minutos antes  
        3 => 30,    // 30 minutos antes
        4 => 60,    // 1 hora antes
        5 => 1440   // 1 dia antes
    ];
    
    // 🔴 CORREÇÃO: Admin só vê atividades que são do próprio usuário OU compartilhadas com ele
    // NUNCA vê atividades de outros usuários sem compartilhamento
    
    // Buscar IDs de usuários cujas agendas estão compartilhadas com este usuário
    $compartilhados_ids = [];
    if ($permissao === 'admin' || $permissao === 'super_admin' || $ver_todos_clientes == 1) {
        // Admin pode ver atividades compartilhadas com ele, mas NÃO todas automaticamente
        $sql_compartilhados = "SELECT usuario_proprietario_id 
                              FROM compartilhamento_agenda 
                              WHERE usuario_compartilhado_id = ? 
                              AND tenant_id = ? 
                              AND ativo = 1";
        $stmt_comp = $conn->prepare($sql_compartilhados);
        $stmt_comp->bind_param("ii", $usuario_id, $tenant_id);
        $stmt_comp->execute();
        $result_comp = $stmt_comp->get_result();
        while ($row = $result_comp->fetch_assoc()) {
            $compartilhados_ids[] = $row['usuario_proprietario_id'];
        }
        $stmt_comp->close();
    }
    
    // Buscar atividades que precisam de notificação
    foreach ($opcoes_notificacao as $opcao_id => $minutos_antes) {
        $horario_verificacao = date('Y-m-d H:i:00', strtotime("+$minutos_antes minutes"));
        
        // 🔴 CORREÇÃO: Construir SQL com filtro CORRETO de permissões
        $sql = "SELECT a.*, u.email, u.nome as usuario_nome, c.Nome_Cliente 
                FROM atividades a 
                LEFT JOIN usuarios u ON a.usuario_id = u.id 
                LEFT JOIN clientes c ON a.cliente_id = c.id 
                WHERE a.ativo = 1 
                AND a.concluida = 0 
                AND a.notificacao_minutos_antes = ?
                AND a.data_agendada = ?
                AND (a.ultima_notificacao IS NULL OR a.ultima_notificacao != ?)
                AND a.tenant_id = ?";
        
        // 🔴 FILTRO DE PERMISSÃO - OBRIGATÓRIO PARA TODOS OS USUÁRIOS
        // Ninguém vê atividades de outros usuários sem permissão explícita
        $sql .= " AND (";
        
        // 1. Atividades do próprio usuário
        $sql .= " a.usuario_id = ? ";
        
        // 2. Atividades compartilhadas com este usuário
        if (!empty($compartilhados_ids)) {
            $placeholders = implode(',', array_fill(0, count($compartilhados_ids), '?'));
            $sql .= " OR a.usuario_id IN ($placeholders) ";
        }
        
        $sql .= ")";
        
        $sql .= " ORDER BY a.data_agendada ASC";
        
        // Preparar parâmetros para bind
        $params = [$opcao_id, $horario_verificacao, $horario_verificacao, $tenant_id, $usuario_id];
        $types = "issii";
        
        // Adicionar IDs compartilhados
        foreach ($compartilhados_ids as $id) {
            $params[] = $id;
            $types .= "i";
        }
        
        $stmt = $conn->prepare($sql);
        $stmt->bind_param($types, ...$params);
        $stmt->execute();
        $result = $stmt->get_result();
        
        // 🔴 AGORA processa sem precisar de filtros adicionais
        while ($atividade = $result->fetch_assoc()) {
            $compartilhada = ($atividade['usuario_id'] != $usuario_id);
            $notificacoes[] = processarAtividadeParaNotificacao($atividade, $minutos_antes, $compartilhada);
        }
        $stmt->close();
    }
    
    // Buscar atividades atrasadas - MESMA LÓGICA CORRIGIDA
    $sql_atrasadas = "SELECT a.*, u.email, u.nome as usuario_nome, c.Nome_Cliente 
                     FROM atividades a 
                     LEFT JOIN usuarios u ON a.usuario_id = u.id 
                     LEFT JOIN clientes c ON a.cliente_id = c.id 
                     WHERE a.ativo = 1 
                     AND a.concluida = 0 
                     AND a.data_agendada < ?
                     AND a.tenant_id = ?";
    
    // 🔴 FILTRO DE PERMISSÃO para atrasadas
    $sql_atrasadas .= " AND (";
    $sql_atrasadas .= " a.usuario_id = ? ";
    
    if (!empty($compartilhados_ids)) {
        $placeholders = implode(',', array_fill(0, count($compartilhados_ids), '?'));
        $sql_atrasadas .= " OR a.usuario_id IN ($placeholders) ";
    }
    
    $sql_atrasadas .= ")";
    
    $sql_atrasadas .= " ORDER BY a.data_agendada ASC";
    
    // Preparar parâmetros
    $params_atrasadas = [$agora, $tenant_id, $usuario_id];
    $types_atrasadas = "sii";
    
    foreach ($compartilhados_ids as $id) {
        $params_atrasadas[] = $id;
        $types_atrasadas .= "i";
    }
    
    $stmt_atrasadas = $conn->prepare($sql_atrasadas);
    $stmt_atrasadas->bind_param($types_atrasadas, ...$params_atrasadas);
    $stmt_atrasadas->execute();
    $result_atrasadas = $stmt_atrasadas->get_result();
    
    while ($atividade = $result_atrasadas->fetch_assoc()) {
        $uma_hora_atras = date('Y-m-d H:i:00', strtotime('-1 hour'));
        
        if (empty($atividade['ultima_notificacao']) || $atividade['ultima_notificacao'] < $uma_hora_atras) {
            $compartilhada = ($atividade['usuario_id'] != $usuario_id);
            $notificacoes[] = processarAtividadeParaNotificacao($atividade, 0, $compartilhada, true);
        }
    }
    $stmt_atrasadas->close();
    
    return $notificacoes;
}
// ========== FUNÇÃO PARA PROCESSAR ATIVIDADE PARA NOTIFICAÇÃO ==========
function processarAtividadeParaNotificacao($atividade, $minutos_antes = 0, $compartilhada = false, $atrasada = false) {
    $dataHora = new DateTime($atividade['data_agendada']);
    $agora = new DateTime();
    
    // Determinar se está atrasada (comparação mais precisa)
    $esta_atrasada = $atrasada || ($agora > $dataHora);
    
    // Calcular minutos de diferença
    $diferenca = $dataHora->diff($agora);
    $minutos_diferenca = ($diferenca->days * 24 * 60) + ($diferenca->h * 60) + $diferenca->i;
    if ($agora > $dataHora) {
        $minutos_diferenca = -$minutos_diferenca;
    }
    
    // Determinar tipo e título
    $tipo = 'info';
    $titulo = '';
    
    if ($esta_atrasada) {
        $titulo = "🔴 ATRASADA: " . htmlspecialchars($atividade['nome']);
        $tipo = 'alerta';
    } else if ($minutos_antes > 0) {
        if ($minutos_antes == 1440) {
            $titulo = "📅 AMANHÃ: " . htmlspecialchars($atividade['nome']);
        } else if ($minutos_antes == 60) {
            $titulo = "⏰ EM 1 HORA: " . htmlspecialchars($atividade['nome']);
        } else {
            $titulo = "⏰ EM " . $minutos_antes . " MIN: " . htmlspecialchars($atividade['nome']);
        }
        $tipo = 'lembrete';
    }
    
    // Formatar data e hora
    $data_formatada = $dataHora->format('d/m/Y H:i');
    $hora_apenas = $dataHora->format('H:i');
    $dia_semana = $dataHora->format('D');
    
    $dias_semana = [
        'Sun' => 'Dom',
        'Mon' => 'Seg', 
        'Tue' => 'Ter',
        'Wed' => 'Qua',
        'Thu' => 'Qui',
        'Fri' => 'Sex',
        'Sat' => 'Sáb'
    ];
    
    $dia_semana_pt = $dias_semana[$dia_semana] ?? $dia_semana;
    
    // Construir mensagem
    $mensagem = "📅 $dia_semana_pt, " . $dataHora->format('d/m') . " às $hora_apenas";
    
    if ($atividade['duracao_minutos']) {
        $mensagem .= " • ⏱️ " . formatarDuracaoParaNotificacao($atividade['duracao_minutos']);
    }
    
    if ($atividade['Nome_Cliente']) {
        $mensagem .= " • 👤 " . htmlspecialchars($atividade['Nome_Cliente']);
    }
    
    if ($compartilhada) {
        $mensagem .= " • 👥 " . htmlspecialchars($atividade['usuario_nome']);
    }
    
    // Informação adicional baseada no status
    if ($esta_atrasada) {
        $atraso_minutos = abs($minutos_diferenca);
        $horas = floor($atraso_minutos / 60);
        $minutos = $atraso_minutos % 60;
        
        if ($horas > 0) {
            $mensagem .= "\n🔴 ATRASADA " . $horas . "h" . ($minutos > 0 ? $minutos . "min" : "");
        } else {
            $mensagem .= "\n🔴 ATRASADA " . $atraso_minutos . " minutos";
        }
    } else if ($minutos_diferenca < 30 && $minutos_diferenca >= 0) {
        $mensagem .= "\n🟡 EM " . $minutos_diferenca . " minutos";
    }
    
    // Calcular timestamp único para a notificação
    $timestamp = strtotime($atividade['data_agendada']) . '_' . $minutos_antes . '_' . ($esta_atrasada ? '1' : '0');
    
    return [
        'id' => 'atv_' . $atividade['id'] . '_' . md5($timestamp),
        'titulo' => $titulo,
        'mensagem' => $mensagem,
        'tipo' => $tipo,
        'atividade_id' => $atividade['id'],
        'atividade_nome' => $atividade['nome'],
        'data_agendada' => $atividade['data_agendada'],
        'hora_agendada' => $hora_apenas,
        'duracao_minutos' => $atividade['duracao_minutos'],
        'Nome_Cliente' => $atividade['Nome_Cliente'],
        'usuario_nome' => $atividade['usuario_nome'],
        'compartilhada' => $compartilhada,
        'atrasada' => $esta_atrasada, // Usando a variável calculada
        'minutos_antes' => $minutos_antes,
        'data_criacao' => date('Y-m-d H:i:s')
    ];
}

// ========== FUNÇÃO AUXILIAR PARA FORMATAR DURAÇÃO ==========
function formatarDuracaoParaNotificacao($minutos) {
    if ($minutos < 60) {
        return $minutos . ' min';
    } else {
        $horas = floor($minutos / 60);
        $minutos_restantes = $minutos % 60;
        if ($minutos_restantes == 0) {
            return $horas . 'h';
        } else {
            return $horas . 'h' . $minutos_restantes . 'min';
        }
    }
}

// Buscar notificações para este usuário
$notificacoes = buscarNotificacoesPendentes($conn, $usuario_id, $tenant_id, $ver_todos_clientes, $permissao);

// Filtrar duplicados
$notificacoes_unicas = [];
$ids_vistos = [];

foreach ($notificacoes as $notificacao) {
    $id_base = $notificacao['atividade_id'] . '_' . $notificacao['minutos_antes'] . '_' . ($notificacao['atrasada'] ? '1' : '0');
    
    if (!in_array($id_base, $ids_vistos)) {
        $ids_vistos[] = $id_base;
        $notificacoes_unicas[] = $notificacao;
    }
}

$notificacoes = $notificacoes_unicas;
$total_notificacoes = count($notificacoes);

// Se for uma requisição AJAX para buscar notificações
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest' && !isset($_POST['acao'])) {
    header('Content-Type: application/json');
    echo json_encode([
        'success' => true,
        'notificacoes' => $notificacoes,
        'total_notificacoes' => $total_notificacoes,
        'timestamp' => date('Y-m-d H:i:s')
    ]);
    exit;
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Notificações</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <style>
        /* Estilos do Sino de Notificações */
        .sino-notificacoes-wrapper {
            position: fixed;
            bottom: 30px;
            right: 30px;
            z-index: 9999;
        }
        
        .sino-botao {
            width: 60px;
            height: 60px;
            border-radius: 50%;
            background: linear-gradient(135deg, #6c757d, #495057);
            color: white;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            cursor: pointer;
            box-shadow: 0 4px 15px rgba(0,0,0,0.2);
            transition: all 0.3s ease;
            border: 2px solid transparent;
            position: relative;
        }
        
        .sino-botao:hover {
            transform: translateY(-3px) scale(1.05);
            box-shadow: 0 6px 20px rgba(0,0,0,0.25);
            background: linear-gradient(135deg, #5a6268, #3d4348);
        }
        
        .sino-botao.marca-agua {
            opacity: 0.3;
            background: linear-gradient(135deg, #adb5bd, #868e96);
        }
        
        .sino-botao.marca-agua:hover {
            opacity: 0.7;
            transform: translateY(-3px) scale(1.05);
        }
        
        .sino-botao.com-notificacoes {
            background: linear-gradient(135deg, #dc3545, #c82333);
            animation: pulse-alerta 2s infinite;
            border: 2px solid #ff6b6b;
        }
        
        .sino-botao.com-notificacoes:hover {
            background: linear-gradient(135deg, #bd2130, #a71e2a);
        }
        
        .badge-notificacao {
            position: absolute;
            top: -5px;
            right: -5px;
            background: #ff6b6b;
            color: white;
            border-radius: 50%;
            width: 24px;
            height: 24px;
            font-size: 12px;
            font-weight: bold;
            display: flex;
            align-items: center;
            justify-content: center;
            border: 2px solid white;
            box-shadow: 0 2px 5px rgba(0,0,0,0.2);
        }
        
        .painel-notificacoes {
            position: absolute;
            bottom: 70px;
            right: 0;
            width: 500px; /* Aumentado para caber mais botões */
            max-height: 600px;
            background: white;
            border-radius: 12px;
            box-shadow: 0 8px 30px rgba(0,0,0,0.15);
            display: none;
            flex-direction: column;
            overflow: hidden;
            border: 1px solid #dee2e6;
            z-index: 10000;
        }
        
        .painel-notificacoes.visivel {
            display: flex;
            animation: slide-up 0.3s ease-out;
        }
        
        .cabecalho-painel {
            background: linear-gradient(135deg, #007bff, #0056b3);
            color: white;
            padding: 15px 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid rgba(255,255,255,0.1);
        }
        
        .cabecalho-painel h4 {
            margin: 0;
            font-size: 16px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .contador-painel {
            font-size: 12px;
            opacity: 0.9;
            font-weight: normal;
            margin-left: 8px;
        }
        
        .botoes-cabecalho {
            display: flex;
            gap: 8px;
        }
        
        .btn-acao-painel {
            background: rgba(255,255,255,0.2);
            border: none;
            color: white;
            padding: 6px 12px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 12px;
            transition: background 0.3s;
            display: flex;
            align-items: center;
            gap: 5px;
        }
        
        .btn-acao-painel:hover {
            background: rgba(255,255,255,0.3);
        }
        
        .lista-notificacoes {
            flex: 1;
            overflow-y: auto;
            max-height: 450px;
            background: #f8f9fa;
        }
        
        .notificacao-item {
            padding: 16px 20px;
            border-bottom: 1px solid #e9ecef;
            cursor: pointer;
            transition: background 0.2s;
            position: relative;
            background: white;
        }
        
        .notificacao-item:hover {
            background: #f8f9fa;
        }
        
        .notificacao-item.nao-lida {
            background: #f0f7ff;
            border-left: 4px solid #007bff;
        }
        
        .notificacao-item.nao-lida:hover {
            background: #e3f2fd;
        }
        
        .notificacao-item.lida {
            opacity: 0.8;
            background: #f8f9fa;
            border-left: 4px solid #28a745;
        }
        
        .notificacao-item.atividade-hoje {
            border-left: 4px solid #dc3545;
            background: #fff5f5;
        }
        
        .notificacao-item.atividade-amanha {
            border-left: 4px solid #ffc107;
            background: #fffcf5;
        }
        
        .notificacao-item.atividade-futura {
            border-left: 4px solid #28a745;
            background: #f5fff7;
        }
        
        .notificacao-item.atividade-atrasada {
            border-left: 4px solid #dc3545;
            background: #ffeaea;
            animation: pulse-bg 2s infinite;
        }
        
        .icone-notificacao {
            font-size: 20px;
            color: #007bff;
            width: 40px;
            text-align: center;
            flex-shrink: 0;
        }
        
        .conteudo-notificacao {
            flex: 1;
            min-width: 0;
        }
        
        .cabecalho-notificacao {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 8px;
        }
        
        .titulo-notificacao {
            font-weight: 600;
            color: #333;
            font-size: 14px;
            margin: 0;
            flex: 1;
        }
        
        .tempo-notificacao {
            color: #6c757d;
            font-size: 11px;
            white-space: nowrap;
            margin-left: 10px;
        }
        
        .mensagem-notificacao {
            color: #666;
            font-size: 13px;
            line-height: 1.4;
            margin-bottom: 8px;
            word-break: break-word;
            white-space: pre-line;
        }
        
        .info-atividade {
            margin-top: 8px;
            padding: 6px 10px;
            background: #f8f9fa;
            border-radius: 4px;
            border-left: 3px solid #007bff;
        }
        
        .info-atividade .info-item {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 12px;
            color: #495057;
            margin-bottom: 4px;
        }
        
        .info-atividade .info-item:last-child {
            margin-bottom: 0;
        }
        
        .acoes-notificacao {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-top: 12px;
        }
        
        .btn-acao-notificacao {
            background: none;
            border: 1px solid #dee2e6;
            color: #6c757d;
            padding: 6px 12px; /* Aumentado */
            border-radius: 4px;
            font-size: 12px; /* Aumentado */
            cursor: pointer;
            transition: all 0.2s;
            display: flex;
            align-items: center;
            gap: 5px;
            flex: 1;
            min-width: 120px;
            justify-content: center;
            text-align: center;
        }
        
        .btn-acao-notificacao.btn-marcar-lida {
            background: #28a745;
            color: white;
            border-color: #28a745;
        }
        
        .btn-acao-notificacao.btn-ver-atividade {
            background: #007bff;
            color: white;
            border-color: #007bff;
        }
        
        .btn-acao-notificacao.btn-adiar {
            background: #ffc107;
            color: #212529;
            border-color: #ffc107;
            font-weight: 500;
        }
        
        .btn-acao-notificacao:hover {
            opacity: 0.9;
            transform: translateY(-2px);
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
        
        .btn-fechar-item {
            position: absolute;
            top: 10px;
            right: 10px;
            background: none;
            border: none;
            color: #adb5bd;
            cursor: pointer;
            font-size: 16px;
            padding: 2px 6px;
            border-radius: 3px;
            transition: all 0.2s;
            opacity: 0;
        }
        
        .notificacao-item:hover .btn-fechar-item {
            opacity: 1;
        }
        
        .btn-fechar-item:hover {
            color: #dc3545;
            background: #f8f9fa;
        }
        
        .sem-notificacoes {
            padding: 50px 20px;
            text-align: center;
            color: #999;
            background: white;
        }
        
        .sem-notificacoes i {
            font-size: 48px;
            margin-bottom: 15px;
            opacity: 0.3;
        }
        
        .sem-notificacoes p {
            margin: 0;
            font-size: 14px;
        }
        
        /* Modal para adiar atividade */
        .modal-adiar {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.5);
            z-index: 10002;
            align-items: center;
            justify-content: center;
        }
        
        .modal-adiar.visivel {
            display: flex;
            animation: fade-in 0.3s ease-out;
        }
        
        .modal-conteudo {
            background: white;
            border-radius: 8px;
            width: 90%;
            max-width: 450px;
            box-shadow: 0 10px 40px rgba(0,0,0,0.2);
            overflow: hidden;
        }
        
        .modal-cabecalho {
            background: linear-gradient(135deg, #007bff, #0056b3);
            color: white;
            padding: 15px 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .modal-cabecalho h5 {
            margin: 0;
            font-size: 16px;
            display: flex;
            align-items: center;
            gap: 10px;
        }
        
        .modal-corpo {
            padding: 20px;
        }
        
        .modal-rodape {
            padding: 15px 20px;
            background: #f8f9fa;
            border-top: 1px solid #dee2e6;
            display: flex;
            justify-content: flex-end;
            gap: 10px;
        }
        
        .form-group {
            margin-bottom: 15px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: 500;
            color: #495057;
            font-size: 14px;
        }
        
        .opcoes-adiar {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 10px;
            margin-top: 10px;
        }
        
        .opcao-adiar {
            background: #f8f9fa;
            border: 2px solid #e9ecef;
            border-radius: 6px;
            padding: 12px;
            text-align: center;
            cursor: pointer;
            transition: all 0.2s;
        }
        
        .opcao-adiar:hover {
            border-color: #007bff;
            background: #e7f3ff;
        }
        
        .opcao-adiar.selecionada {
            border-color: #007bff;
            background: #d4edff;
        }
        
        .opcao-adiar .tempo {
            font-weight: bold;
            font-size: 16px;
            color: #007bff;
        }
        
        .opcao-adiar .descricao {
            font-size: 12px;
            color: #6c757d;
            margin-top: 4px;
        }
        
        .btn-modal {
            padding: 8px 16px;
            border-radius: 4px;
            border: none;
            cursor: pointer;
            font-size: 14px;
            transition: all 0.2s;
        }
        
        .btn-modal-primario {
            background: #007bff;
            color: white;
        }
        
        .btn-modal-primario:hover {
            background: #0056b3;
        }
        
        .btn-modal-secundario {
            background: #6c757d;
            color: white;
        }
        
        .btn-modal-secundario:hover {
            background: #545b62;
        }
        
        @keyframes pulse-alerta {
            0% { box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.4); }
            70% { box-shadow: 0 0 0 10px rgba(220, 53, 69, 0); }
            100% { box-shadow: 0 0 0 0 rgba(220, 53, 69, 0); }
        }
        
        @keyframes pulse-bg {
            0% { background-color: #ffeaea; }
            50% { background-color: #ffd6d6; }
            100% { background-color: #ffeaea; }
        }
        
        @keyframes slide-up {
            from {
                opacity: 0;
                transform: translateY(20px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        
        @keyframes fade-in {
            from { opacity: 0; }
            to { opacity: 1; }
        }
        
        /* Estilo específico para atividades atrasadas */
        .atividade-atrasada .btn-adiar {
            animation: pulse-btn 2s infinite;
        }
        
        @keyframes pulse-btn {
            0% { box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.4); }
            70% { box-shadow: 0 0 0 8px rgba(255, 193, 7, 0); }
            100% { box-shadow: 0 0 0 0 rgba(255, 193, 7, 0); }
        }
        
        /* Responsividade */
        @media (max-width: 768px) {
            .sino-notificacoes-wrapper {
                bottom: 20px;
                right: 20px;
            }
            
            .sino-botao {
                width: 50px;
                height: 50px;
                font-size: 20px;
            }
            
            .painel-notificacoes {
                width: calc(100vw - 40px);
                right: -10px;
                bottom: 60px;
                max-height: 500px;
            }
            
            .badge-notificacao {
                width: 20px;
                height: 20px;
                font-size: 10px;
            }
            
            .lista-notificacoes {
                max-height: 350px;
            }
            
            .opcoes-adiar {
                grid-template-columns: 1fr;
            }
            
            .acoes-notificacao {
                flex-direction: column;
            }
            
            .btn-acao-notificacao {
                width: 100%;
                margin-bottom: 5px;
            }
        }
    </style>
</head>
<body>
<div class="sino-notificacoes-wrapper">
    <div class="sino-botao <?php echo $total_notificacoes == 0 ? 'marca-agua' : 'com-notificacoes'; ?>" 
         id="botao-sino" 
         title="<?php echo $total_notificacoes == 0 ? 'Notificações (nenhuma)' : 'Notificações (' . $total_notificacoes . ' novas)'; ?>">
        <i class="fas fa-bell"></i>
        <?php if ($total_notificacoes > 0): ?>
        <div class="badge-notificacao"><?php echo $total_notificacoes > 99 ? '99+' : $total_notificacoes; ?></div>
        <?php endif; ?>
    </div>
    
    <div class="painel-notificacoes" id="painel-notificacoes">
        <div class="cabecalho-painel">
            <h4>
                <i class="fas fa-bell"></i> Notificações
                <?php if ($total_notificacoes > 0): ?>
                <span class="contador-painel" id="contador-painel">(<?php echo $total_notificacoes; ?> novas)</span>
                <?php endif; ?>
            </h4>
            <div class="botoes-cabecalho">
                <button class="btn-acao-painel" id="btn-marcar-todas" title="Marcar todas como lidas">
                    <i class="fas fa-check-double"></i>
                </button>
                <button class="btn-acao-painel" id="btn-fechar-painel" title="Fechar painel">
                    <i class="fas fa-times"></i>
                </button>
            </div>
        </div>
        
        <div class="lista-notificacoes" id="lista-notificacoes">
            <?php if (empty($notificacoes)): ?>
            <div class="sem-notificacoes">
                <i class="fas fa-bell-slash"></i>
                <p>Nenhuma notificação</p>
                <p style="font-size: 12px; margin-top: 10px; color: #6c757d;">
                    As notificações aparecerão automaticamente para atividades próximas
                </p>
            </div>
            <?php else: ?>
                <?php foreach ($notificacoes as $index => $notificacao): ?>
                <?php 
                $classe = 'nao-lida notificacao-nova';
                $hoje = date('Y-m-d');
                $data_atividade = date('Y-m-d', strtotime($notificacao['data_agendada']));
                
                if ($notificacao['atrasada']) {
                    $classe .= ' atividade-atrasada';
                } else if ($data_atividade == $hoje) {
                    $classe .= ' atividade-hoje';
                } else {
                    $amanha = date('Y-m-d', strtotime('+1 day'));
                    if ($data_atividade == $amanha) {
                        $classe .= ' atividade-amanha';
                    } else {
                        $classe .= ' atividade-futura';
                    }
                }
                
                $icone = 'fa-bell';
                if ($notificacao['atrasada']) {
                    $icone = 'fa-exclamation-triangle';
                } else if ($notificacao['minutos_antes'] > 0) {
                    $icone = 'fa-clock';
                }
                
                // DEBUG: Verificar se está detectando atrasada
                $data_hora_atividade = new DateTime($notificacao['data_agendada']);
                $agora = new DateTime();
                $esta_atrasada_debug = $agora > $data_hora_atividade;
                ?>
                <div class="notificacao-item <?php echo $classe; ?>" 
                     data-id="<?php echo htmlspecialchars($notificacao['id']); ?>"
                     data-atividade-id="<?php echo htmlspecialchars($notificacao['atividade_id']); ?>"
                     data-index="<?php echo $index; ?>"
                     data-atrasada="<?php echo $notificacao['atrasada'] ? 'true' : 'false'; ?>"
                     id="notificacao-<?php echo htmlspecialchars($notificacao['id']); ?>">
                    <div style="display: flex; gap: 12px;">
                        <div class="icone-notificacao">
                            <i class="fas <?php echo $icone; ?>"></i>
                        </div>
                        <div class="conteudo-notificacao">
                            <div class="cabecalho-notificacao">
                                <div class="titulo-notificacao"><?php echo htmlspecialchars($notificacao['titulo']); ?></div>
                                <div class="tempo-notificacao" id="tempo-<?php echo htmlspecialchars($notificacao['id']); ?>">Agora mesmo</div>
                            </div>
                            <div class="mensagem-notificacao"><?php echo nl2br(htmlspecialchars($notificacao['mensagem'])); ?></div>
                            <div class="info-atividade">
                                <?php if ($notificacao['atividade_nome']): ?>
                                <div class="info-item">
                                    <i class="fas fa-tasks"></i>
                                    <span><?php echo htmlspecialchars($notificacao['atividade_nome']); ?></span>
                                </div>
                                <?php endif; ?>
                                
                                <?php if ($notificacao['hora_agendada']): ?>
                                <div class="info-item">
                                    <i class="far fa-clock"></i>
                                    <span><?php echo htmlspecialchars($notificacao['hora_agendada']); ?></span>
                                </div>
                                <?php endif; ?>
                                
                                <?php if ($notificacao['duracao_minutos']): ?>
                                <div class="info-item">
                                    <i class="fas fa-hourglass-half"></i>
                                    <span><?php echo formatarDuracaoParaNotificacao($notificacao['duracao_minutos']); ?></span>
                                </div>
                                <?php endif; ?>
                                
                                <?php if ($notificacao['Nome_Cliente']): ?>
                                <div class="info-item">
                                    <i class="fas fa-user"></i>
                                    <span><?php echo htmlspecialchars($notificacao['Nome_Cliente']); ?></span>
                                </div>
                                <?php endif; ?>
                                
                                <?php if ($notificacao['compartilhada'] && $notificacao['usuario_nome']): ?>
                                <div class="info-item">
                                    <i class="fas fa-share-alt"></i>
                                    <span>Compartilhada por: <?php echo htmlspecialchars($notificacao['usuario_nome']); ?></span>
                                </div>
                                <?php endif; ?>
                                
                                <!-- DEBUG: Mostrar status -->
                                <div class="info-item" style="font-size: 10px; color: #999;">
                                    <i class="fas fa-bug"></i>
                                    <span>Status: <?php echo $notificacao['atrasada'] ? 'ATRASADA' : 'NO PRAZO'; ?></span>
                                    <span> | Debug: <?php echo $esta_atrasada_debug ? 'AGORA ATRASADA' : 'AGORA OK'; ?></span>
                                </div>
                            </div>
                            <div class="acoes-notificacao">
                                <button class="btn-acao-notificacao btn-marcar-lida" 
                                        data-notificacao-id="<?php echo htmlspecialchars($notificacao['id']); ?>"
                                        data-atividade-id="<?php echo htmlspecialchars($notificacao['atividade_id']); ?>">
                                    <i class="fas fa-check"></i> Marcar como lida
                                </button>
                                <?php if ($notificacao['atividade_id']): ?>
                                <button class="btn-acao-notificacao btn-ver-atividade" 
                                        data-atividade-id="<?php echo htmlspecialchars($notificacao['atividade_id']); ?>">
                                    <i class="fas fa-eye"></i> Ver atividade
                                </button>
                                <?php endif; ?>
                                
                                <!-- BOTÃO ADIAR - AGORA APARECE SEMPRE PARA TESTES -->
                                <?php if ($notificacao['atividade_id']): ?>
                                <button class="btn-acao-notificacao btn-adiar" 
                                        data-atividade-id="<?php echo htmlspecialchars($notificacao['atividade_id']); ?>"
                                        data-atividade-nome="<?php echo htmlspecialchars($notificacao['atividade_nome']); ?>"
                                        data-hora-agendada="<?php echo htmlspecialchars($notificacao['hora_agendada']); ?>"
                                        data-atrasada="<?php echo $notificacao['atrasada'] ? 'true' : 'false'; ?>">
                                    <i class="fas fa-clock"></i> 
                                    <?php if ($notificacao['atrasada']): ?>
                                    Adiar (Atrasada)
                                    <?php else: ?>
                                    Adiar (Agendada)
                                    <?php endif; ?>
                                </button>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                    <button class="btn-fechar-item btn-fechar-notificacao" 
                            data-notificacao-id="<?php echo htmlspecialchars($notificacao['id']); ?>">
                        ×
                    </button>
                </div>
                <?php endforeach; ?>
            <?php endif; ?>
        </div>
        
        <div class="rodape-painel">
            <button class="btn-ver-todas" id="btn-ver-todas">
                <i class="fas fa-history"></i> Ver calendário completo
            </button>
        </div>
    </div>
</div>

<!-- Modal para adiar atividade -->
<div class="modal-adiar" id="modal-adiar">
    <div class="modal-conteudo">
        <div class="modal-cabecalho">
            <h5><i class="fas fa-clock"></i> Adiar Atividade</h5>
            <button class="btn-fechar-item" id="btn-fechar-modal">×</button>
        </div>
        <div class="modal-corpo">
            <div class="form-group">
                <label id="modal-titulo">Adiar atividade</label>
                <p id="modal-descricao" style="font-size: 13px; color: #6c757d; margin: 5px 0 15px 0;"></p>
                
                <label>Selecione por quanto tempo adiar:</label>
                <div class="opcoes-adiar" id="opcoes-adiar">
                    <div class="opcao-adiar" data-minutos="15">
                        <div class="tempo">15 min</div>
                        <div class="descricao">Adiar por 15 minutos</div>
                    </div>
                    <div class="opcao-adiar" data-minutos="30">
                        <div class="tempo">30 min</div>
                        <div class="descricao">Adiar por 30 minutos</div>
                    </div>
                    <div class="opcao-adiar" data-minutos="60">
                        <div class="tempo">1 hora</div>
                        <div class="descricao">Adiar por 1 hora</div>
                    </div>
                    <div class="opcao-adiar" data-minutos="120">
                        <div class="tempo">2 horas</div>
                        <div class="descricao">Adiar por 2 horas</div>
                    </div>
                    <div class="opcao-adiar" data-minutos="240">
                        <div class="tempo">4 horas</div>
                        <div class="descricao">Adiar por 4 horas</div>
                    </div>
                    <div class="opcao-adiar" data-minutos="1440">
                        <div class="tempo">1 dia</div>
                        <div class="descricao">Adiar para amanhã</div>
                    </div>
                </div>
            </div>
            <div class="form-group">
                <label>Ou especifique os minutos:</label>
                <input type="number" id="minutos-personalizados" class="form-control" 
                       min="1" max="10080" placeholder="Digite os minutos" style="width: 100%; padding: 8px;">
            </div>
        </div>
        <div class="modal-rodape">
            <button class="btn-modal btn-modal-secundario" id="btn-cancelar-adiar">Cancelar</button>
            <button class="btn-modal btn-modal-primario" id="btn-confirmar-adiar">Adiar Atividade</button>
        </div>
    </div>
</div>

<script>
(function() {
    'use strict';
    
    const config = {
        intervaloAtualizacao: 60000,
        endpointNotificacoes: 'sino_notificacoes.php',
        csrfToken: '<?php echo $_SESSION["csrf_token"] ?? ""; ?>',
        usuarioId: <?php echo $usuario_id; ?>,
        tenantId: <?php echo $tenant_id; ?>
    };
    
    console.log('🔧 Configurações carregadas:', config);
    console.log('CSRF Token:', config.csrfToken);
    
    let estado = {
        painelAberto: false,
        intervaloAtualizacao: null,
        timeoutFecharAuto: null,
        carregando: false,
        notificacoes: <?php echo json_encode($notificacoes); ?>,
        totalNotificacoes: <?php echo $total_notificacoes; ?>,
        notificacoesLidas: JSON.parse(localStorage.getItem('notificacoesLidas_sino')) || [],
        atividadeAdiar: null,
        minutosAdiar: 15
    };
    
    console.log('📊 Estado inicial:', {
        totalNotificacoes: estado.totalNotificacoes,
        notificacoes: estado.notificacoes,
        notificacoesComAdiar: estado.notificacoes.filter(n => n.atrasada).length
    });
    
    const elementos = {
        botaoSino: document.getElementById('botao-sino'),
        painel: document.getElementById('painel-notificacoes'),
        lista: document.getElementById('lista-notificacoes'),
        btnMarcarTodas: document.getElementById('btn-marcar-todas'),
        btnFecharPainel: document.getElementById('btn-fechar-painel'),
        btnVerTodas: document.getElementById('btn-ver-todas'),
        contadorPainel: document.getElementById('contador-painel'),
        modalAdiar: document.getElementById('modal-adiar'),
        modalTitulo: document.getElementById('modal-titulo'),
        modalDescricao: document.getElementById('modal-descricao'),
        opcoesAdiar: document.getElementById('opcoes-adiar'),
        minutosPersonalizados: document.getElementById('minutos-personalizados'),
        btnFecharModal: document.getElementById('btn-fechar-modal'),
        btnCancelarAdiar: document.getElementById('btn-cancelar-adiar'),
        btnConfirmarAdiar: document.getElementById('btn-confirmar-adiar')
    };
    
    // Funções auxiliares
    function formatarTempoRelativo(dataString) {
        if (!dataString) return '';
        
        const data = new Date(dataString);
        const agora = new Date();
        const diffMs = agora - data;
        const diffSegundos = Math.floor(diffMs / 1000);
        const diffMinutos = Math.floor(diffSegundos / 60);
        const diffHoras = Math.floor(diffMinutos / 60);
        const diffDias = Math.floor(diffHoras / 24);
        
        if (diffSegundos < 60) return 'Agora mesmo';
        if (diffMinutos < 60) return `Há ${diffMinutos} min`;
        if (diffHoras < 24) return `Há ${diffHoras} h`;
        if (diffDias === 1) return 'Ontem';
        if (diffDias < 7) return `Há ${diffDias} dias`;
        if (diffDias < 30) return `Há ${Math.floor(diffDias / 7)} sem`;
        
        return data.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit' });
    }
    
    function mostrarMensagemRapida(texto, tipo = 'info') {
        const mensagensAntigas = document.querySelectorAll('.mensagem-rapida-sino');
        mensagensAntigas.forEach(msg => msg.remove());
        
        const cores = {
            'success': '#28a745',
            'error': '#dc3545',
            'warning': '#ffc107',
            'info': '#17a2b8'
        };
        
        const div = document.createElement('div');
        div.className = 'mensagem-rapida-sino';
        div.style.cssText = `
            position: fixed;
            top: 20px;
            right: 20px;
            padding: 12px 20px;
            border-radius: 4px;
            z-index: 10001;
            animation: fade-in 0.3s ease-out;
            box-shadow: 0 4px 12px rgba(0,0,0,0.15);
            font-size: 14px;
            background: ${cores[tipo] || '#007bff'};
            color: white;
        `;
        div.textContent = texto;
        document.body.appendChild(div);
        
        setTimeout(() => {
            if (div.parentNode) {
                div.style.opacity = '0';
                div.style.transform = 'translateY(-10px)';
                setTimeout(() => {
                    if (div.parentNode) {
                        div.parentNode.removeChild(div);
                    }
                }, 300);
            }
        }, 3000);
    }
    
    function escapeHtml(text) {
        if (!text) return '';
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }
    
    // Funções principais
    function inicializar() {
        console.log('🚀 Sino de notificações inicializando...');
        
        // Verificar botões de adiar
        const botoesAdiar = document.querySelectorAll('.btn-adiar');
        console.log(`🔍 Encontrados ${botoesAdiar.length} botões "Adiar" no carregamento`);
        
        // Eventos principais
        elementos.botaoSino.addEventListener('click', togglePainel);
        elementos.btnMarcarTodas.addEventListener('click', marcarTodasComoLidas);
        elementos.btnFecharPainel.addEventListener('click', fecharPainel);
        elementos.btnVerTodas.addEventListener('click', verCalendario);
        
        // Eventos do modal de adiar
        elementos.btnFecharModal.addEventListener('click', fecharModalAdiar);
        elementos.btnCancelarAdiar.addEventListener('click', fecharModalAdiar);
        elementos.btnConfirmarAdiar.addEventListener('click', confirmarAdiar);
        
        // Selecionar opção de adiar
        elementos.opcoesAdiar.addEventListener('click', function(e) {
            const opcao = e.target.closest('.opcao-adiar');
            if (opcao) {
                // Remover seleção anterior
                document.querySelectorAll('.opcao-adiar').forEach(el => {
                    el.classList.remove('selecionada');
                });
                
                // Selecionar nova opção
                opcao.classList.add('selecionada');
                estado.minutosAdiar = parseInt(opcao.dataset.minutos);
                elementos.minutosPersonalizados.value = '';
                console.log('⏰ Tempo selecionado:', estado.minutosAdiar, 'minutos');
            }
        });
        
        // Personalizar minutos
        elementos.minutosPersonalizados.addEventListener('input', function() {
            if (this.value) {
                // Remover seleção das opções
                document.querySelectorAll('.opcao-adiar').forEach(el => {
                    el.classList.remove('selecionada');
                });
                
                estado.minutosAdiar = parseInt(this.value) || 0;
                console.log('⏰ Tempo personalizado:', estado.minutosAdiar, 'minutos');
            }
        });
        
        // Delegação de eventos para notificações dinâmicas
        elementos.lista.addEventListener('click', function(e) {
            const target = e.target;
            
            // Marcar como lida
            if (target.classList.contains('btn-marcar-lida') || target.closest('.btn-marcar-lida')) {
                e.stopPropagation();
                const btn = target.classList.contains('btn-marcar-lida') ? target : target.closest('.btn-marcar-lida');
                const notificacaoId = btn.dataset.notificacaoId;
                const atividadeId = btn.dataset.atividadeId;
                if (notificacaoId) {
                    console.log('✅ Marcando como lida:', notificacaoId);
                    marcarComoLida(notificacaoId, atividadeId);
                }
            }
            
            // Ver atividade
            if (target.classList.contains('btn-ver-atividade') || target.closest('.btn-ver-atividade')) {
                e.stopPropagation();
                const btn = target.classList.contains('btn-ver-atividade') ? target : target.closest('.btn-ver-atividade');
                const atividadeId = btn.dataset.atividadeId;
                if (atividadeId) {
                    console.log('👁️ Ver atividade:', atividadeId);
                    verAtividade(atividadeId);
                }
            }
            
            // Adiar atividade - MUDANÇA AQUI: Agora funciona para TODAS as atividades
            if (target.classList.contains('btn-adiar') || target.closest('.btn-adiar')) {
                e.stopPropagation();
                const btn = target.classList.contains('btn-adiar') ? target : target.closest('.btn-adiar');
                const atividadeId = btn.dataset.atividadeId;
                const atividadeNome = btn.dataset.atividadeNome;
                const horaAgendada = btn.dataset.horaAgendada;
                const atrasada = btn.dataset.atrasada === 'true';
                
                console.log('⏰ Clicou em "Adiar":', {
                    atividadeId,
                    atividadeNome,
                    horaAgendada,
                    atrasada
                });
                
                if (atividadeId) {
                    abrirModalAdiar(atividadeId, atividadeNome, horaAgendada, atrasada);
                }
            }
            
            // Fechar notificação
            if (target.classList.contains('btn-fechar-notificacao') || target.closest('.btn-fechar-notificacao')) {
                e.stopPropagation();
                const btn = target.classList.contains('btn-fechar-notificacao') ? target : target.closest('.btn-fechar-notificacao');
                const notificacaoId = btn.dataset.notificacaoId;
                if (notificacaoId) {
                    console.log('🗑️ Fechando notificação:', notificacaoId);
                    fecharNotificacao(notificacaoId);
                }
            }
            
            // Clicar na notificação
            if (target.classList.contains('notificacao-item') || target.closest('.notificacao-item')) {
                const notificacaoItem = target.classList.contains('notificacao-item') ? target : target.closest('.notificacao-item');
                if (e.target.tagName === 'BUTTON' || e.target.tagName === 'A' || e.target.closest('button') || e.target.closest('a')) {
                    return;
                }
                e.stopPropagation();
                const notificacaoId = notificacaoItem.dataset.id;
                const atividadeId = notificacaoItem.dataset.atividadeId;
                if (notificacaoId && atividadeId) {
                    console.log('📱 Clicou na notificação:', notificacaoId);
                    marcarComoLida(notificacaoId, atividadeId);
                }
            }
        });
        
        // Fechar painel ao clicar fora
        document.addEventListener('click', function(e) {
            if (estado.painelAberto && 
                !elementos.painel.contains(e.target) && 
                !elementos.botaoSino.contains(e.target)) {
                fecharPainel();
            }
        });
        
        // Fechar modal ao clicar fora
        elementos.modalAdiar.addEventListener('click', function(e) {
            if (e.target === elementos.modalAdiar) {
                fecharModalAdiar();
            }
        });
        
        // Atualização periódica
        estado.intervaloAtualizacao = setInterval(carregarNovasNotificacoes, config.intervaloAtualizacao);
        
        // Quando a página ganha foco
        document.addEventListener('visibilitychange', function() {
            if (!document.hidden) {
                console.log('📱 Página visível, verificando novas notificações...');
                carregarNovasNotificacoes();
            }
        });
        
        // Atualizar tempos das notificações
        setInterval(atualizarTemposNotificacoes, 60000);
        
        // Filtrar notificações já lidas
        estado.notificacoes = estado.notificacoes.filter(notif => 
            !estado.notificacoesLidas.includes(notif.id)
        );
        estado.totalNotificacoes = estado.notificacoes.length;
        
        atualizarInterface();
        console.log('✅ Sino de notificações inicializado com sucesso');
        
        // Log das notificações carregadas
        estado.notificacoes.forEach((notif, index) => {
            console.log(`📄 Notificação ${index + 1}:`, {
                id: notif.id,
                titulo: notif.titulo,
                atrasada: notif.atrasada,
                atividade_id: notif.atividade_id,
                data_agendada: notif.data_agendada
            });
        });
    }
    
    function abrirModalAdiar(atividadeId, atividadeNome, horaAgendada, atrasada = false) {
        estado.atividadeAdiar = {
            id: atividadeId,
            nome: atividadeNome,
            hora: horaAgendada,
            atrasada: atrasada
        };
        
        console.log('📋 Abrindo modal para adiar:', estado.atividadeAdiar);
        
        // Configurar modal
        elementos.modalTitulo.textContent = `Adiar: ${atividadeNome}`;
        
        let descricao = `Agendada para ${horaAgendada}`;
        if (atrasada) {
            descricao += ' (ATRASADA)';
        }
        elementos.modalDescricao.textContent = descricao;
        
        // Resetar seleção
        document.querySelectorAll('.opcao-adiar').forEach(el => {
            el.classList.remove('selecionada');
        });
        elementos.minutosPersonalizados.value = '';
        estado.minutosAdiar = 15;
        
        // Selecionar primeira opção por padrão
        const primeiraOpcao = elementos.opcoesAdiar.querySelector('.opcao-adiar');
        if (primeiraOpcao) {
            primeiraOpcao.classList.add('selecionada');
        }
        
        // Mostrar modal
        elementos.modalAdiar.classList.add('visivel');
        console.log('✅ Modal aberto');
    }
    
    function fecharModalAdiar() {
        elementos.modalAdiar.classList.remove('visivel');
        estado.atividadeAdiar = null;
        console.log('📪 Modal fechado');
    }
    
    async function confirmarAdiar() {
        if (!estado.atividadeAdiar) {
            mostrarMensagemRapida('Nenhuma atividade selecionada', 'error');
            return;
        }
        
        if (!estado.minutosAdiar || estado.minutosAdiar <= 0) {
            mostrarMensagemRapida('Selecione um tempo válido para adiar', 'error');
            return;
        }
        
        console.log('🚀 Confirmando adiamento:', {
            atividade: estado.atividadeAdiar,
            minutos: estado.minutosAdiar,
            csrfToken: config.csrfToken
        });
        
        try {
            const formData = new FormData();
            formData.append('acao', 'adiar_atividade');
            formData.append('atividade_id', estado.atividadeAdiar.id);
            formData.append('minutos_adiar', estado.minutosAdiar);
            formData.append('csrf_token', config.csrfToken);
            
            console.log('📤 Enviando requisição para:', config.endpointNotificacoes);
            
            const resposta = await fetch(config.endpointNotificacoes, {
                method: 'POST',
                body: formData
            });
            
            console.log('📥 Resposta recebida. Status:', resposta.status);
            
            const dados = await resposta.json();
            console.log('📊 Dados da resposta:', dados);
            
            if (dados.success) {
                mostrarMensagemRapida(dados.message, 'success');
                
                // Remover notificações desta atividade
                const antes = estado.notificacoes.length;
                estado.notificacoes = estado.notificacoes.filter(notif => 
                    notif.atividade_id != estado.atividadeAdiar.id
                );
                const depois = estado.notificacoes.length;
                estado.totalNotificacoes = estado.notificacoes.length;
                
                console.log(`🗑️ Removidas ${antes - depois} notificações da atividade ${estado.atividadeAdiar.id}`);
                
                // Atualizar interface
                atualizarInterface();
                if (estado.painelAberto) {
                    renderizarListaNotificacoes();
                }
                
                fecharModalAdiar();
                
                // Recarregar notificações após 2 segundos
                setTimeout(() => {
                    carregarNovasNotificacoes();
                }, 2000);
            } else {
                mostrarMensagemRapida(dados.message || 'Erro ao adiar atividade', 'error');
            }
        } catch (erro) {
            console.error('❌ Erro ao adiar atividade:', erro);
            mostrarMensagemRapida('Erro de conexão ao adiar atividade', 'error');
        }
    }
    
    async function carregarNovasNotificacoes() {
        try {
            const timestamp = new Date().getTime();
            const resposta = await fetch(`${config.endpointNotificacoes}?_=${timestamp}`, {
                method: 'GET',
                headers: {
                    'Cache-Control': 'no-cache',
                    'Pragma': 'no-cache',
                    'X-Requested-With': 'XMLHttpRequest'
                }
            });
            
            if (!resposta.ok) return;
            
            const dados = await resposta.json();
            
            if (dados.success) {
                const novasNotificacoes = dados.notificacoes.filter(notif => 
                    !estado.notificacoesLidas.includes(notif.id) &&
                    !estado.notificacoes.some(n => n.id === notif.id)
                );
                
                if (novasNotificacoes.length > 0) {
                    estado.notificacoes = [...estado.notificacoes, ...novasNotificacoes];
                    estado.totalNotificacoes = estado.notificacoes.length;
                    
                    atualizarInterface();
                    
                    if (estado.painelAberto) {
                        renderizarListaNotificacoes();
                    }
                    
                    console.log('📊 Novas notificações adicionadas:', novasNotificacoes.length);
                    console.log('Notificações atrasadas:', novasNotificacoes.filter(n => n.atrasada).length);
                    
                    // Tocar som de notificação
                    try {
                        const audio = new Audio('data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ');
                        audio.volume = 0.3;
                        audio.play();
                    } catch (e) {}
                }
            }
        } catch (erro) {
            console.error('❌ Erro ao carregar notificações:', erro);
        }
    }
    
    function togglePainel(e) {
        e.stopPropagation();
        e.preventDefault();
        
        if (estado.painelAberto) {
            fecharPainel();
        } else {
            abrirPainel();
        }
    }
    
    function abrirPainel() {
        console.log('📂 Abrindo painel de notificações');
        estado.painelAberto = true;
        elementos.painel.classList.add('visivel');
        renderizarListaNotificacoes();
        
        // Log dos botões adiar visíveis
        const botoesAdiarVisiveis = elementos.lista.querySelectorAll('.btn-adiar');
        console.log(`🔍 Botões "Adiar" visíveis no painel: ${botoesAdiarVisiveis.length}`);
        
        if (estado.timeoutFecharAuto) {
            clearTimeout(estado.timeoutFecharAuto);
        }
        
        estado.timeoutFecharAuto = setTimeout(() => {
            if (estado.painelAberto) fecharPainel();
        }, 300000);
    }
    
    function fecharPainel() {
        console.log('📪 Fechando painel de notificações');
        estado.painelAberto = false;
        elementos.painel.classList.remove('visivel');
        
        if (estado.timeoutFecharAuto) {
            clearTimeout(estado.timeoutFecharAuto);
            estado.timeoutFecharAuto = null;
        }
    }
    
    function atualizarInterface() {
        const botaoSino = elementos.botaoSino;
        const totalNotificacoes = estado.totalNotificacoes;
        
        botaoSino.classList.remove('marca-agua', 'com-notificacoes');
        
        const badgeExistente = botaoSino.querySelector('.badge-notificacao');
        if (badgeExistente) badgeExistente.remove();
        
        if (totalNotificacoes === 0) {
            botaoSino.classList.add('marca-agua');
            botaoSino.title = 'Notificações (nenhuma)';
        } else {
            botaoSino.classList.add('com-notificacoes');
            botaoSino.title = `Notificações (${totalNotificacoes} novas)`;
            
            const badge = document.createElement('div');
            badge.className = 'badge-notificacao';
            badge.textContent = totalNotificacoes > 99 ? '99+' : totalNotificacoes;
            botaoSino.appendChild(badge);
            
            // Atualizar título da página
            const tituloOriginal = document.title.replace(/^\(\d+\)\s*/, '');
            document.title = `(${totalNotificacoes}) ${tituloOriginal}`;
        }
        
        if (elementos.contadorPainel) {
            elementos.contadorPainel.textContent = totalNotificacoes > 0 ? `(${totalNotificacoes} novas)` : '';
        }
    }
    
    function renderizarListaNotificacoes() {
        const lista = elementos.lista;
        const notificacoes = estado.notificacoes;
        
        lista.innerHTML = '';
        
        if (notificacoes.length === 0) {
            lista.innerHTML = `
                <div class="sem-notificacoes">
                    <i class="fas fa-bell-slash"></i>
                    <p>Nenhuma notificação</p>
                    <p style="font-size: 12px; margin-top: 10px; color: #6c757d;">
                        As notificações aparecerão automaticamente para atividades próximas
                    </p>
                </div>
            `;
            return;
        }
        
        let totalComAdiar = 0;
        
        notificacoes.forEach((notificacao, index) => {
            const div = document.createElement('div');
            div.dataset.id = notificacao.id;
            div.dataset.atividadeId = notificacao.atividade_id;
            div.dataset.index = index;
            div.dataset.atrasada = notificacao.atrasada;
            
            const estaLida = estado.notificacoesLidas.includes(notificacao.id);
            let classeExtra = estaLida ? 'lida' : 'nao-lida notificacao-nova';
            
            const hoje = new Date().toISOString().split('T')[0];
            const dataAtividade = new Date(notificacao.data_agendada).toISOString().split('T')[0];
            
            // Verificar se está realmente atrasada agora
            const dataHoraAtividade = new Date(notificacao.data_agendada);
            const agora = new Date();
            const realmenteAtrasada = agora > dataHoraAtividade;
            
            if (realmenteAtrasada) {
                classeExtra += ' atividade-atrasada';
            } else if (dataAtividade === hoje) {
                classeExtra += ' atividade-hoje';
            } else {
                const amanha = new Date();
                amanha.setDate(amanha.getDate() + 1);
                const amanhaStr = amanha.toISOString().split('T')[0];
                
                if (dataAtividade === amanhaStr) {
                    classeExtra += ' atividade-amanha';
                } else {
                    classeExtra += ' atividade-futura';
                }
            }
            
            div.className = `notificacao-item ${classeExtra}`;
            div.id = `notificacao-${notificacao.id}`;
            
            let icone = 'fa-bell';
            if (realmenteAtrasada) {
                icone = 'fa-exclamation-triangle';
            } else if (notificacao.minutos_antes > 0) {
                icone = 'fa-clock';
            }
            
            const tempo = formatarTempoRelativo(notificacao.data_criacao);
            
            // Calcular atraso em minutos
            const atrasoMinutos = realmenteAtrasada ? 
                Math.floor((agora - dataHoraAtividade) / (1000 * 60)) : 0;
            
            div.innerHTML = `
                <div style="display: flex; gap: 12px;">
                    <div class="icone-notificacao">
                        <i class="fas ${icone}"></i>
                    </div>
                    <div class="conteudo-notificacao">
                        <div class="cabecalho-notificacao">
                            <div class="titulo-notificacao">${escapeHtml(notificacao.titulo)}</div>
                            <div class="tempo-notificacao" id="tempo-${notificacao.id}">${tempo}</div>
                        </div>
                        <div class="mensagem-notificacao">${escapeHtml(notificacao.mensagem).replace(/\n/g, '<br>')}</div>
                        <div class="info-atividade">
                            ${notificacao.atividade_nome ? `
                                <div class="info-item">
                                    <i class="fas fa-tasks"></i>
                                    <span>${escapeHtml(notificacao.atividade_nome)}</span>
                                </div>
                            ` : ''}
                            ${notificacao.hora_agendada ? `
                                <div class="info-item">
                                    <i class="far fa-clock"></i>
                                    <span>${escapeHtml(notificacao.hora_agendada)}</span>
                                </div>
                            ` : ''}
                            ${notificacao.duracao_minutos ? `
                                <div class="info-item">
                                    <i class="fas fa-hourglass-half"></i>
                                    <span>${formatarDuracaoParaNotificacaoHTML(notificacao.duracao_minutos)}</span>
                                </div>
                            ` : ''}
                            ${notificacao.Nome_Cliente ? `
                                <div class="info-item">
                                    <i class="fas fa-user"></i>
                                    <span>${escapeHtml(notificacao.Nome_Cliente)}</span>
                                </div>
                            ` : ''}
                            ${notificacao.compartilhada && notificacao.usuario_nome ? `
                                <div class="info-item">
                                    <i class="fas fa-share-alt"></i>
                                    <span>Compartilhada por: ${escapeHtml(notificacao.usuario_nome)}</span>
                                </div>
                            ` : ''}
                            ${realmenteAtrasada ? `
                                <div class="info-item" style="color: #dc3545;">
                                    <i class="fas fa-exclamation-circle"></i>
                                    <span><strong>ATRASADA:</strong> ${atrasoMinutos} minutos</span>
                                </div>
                            ` : ''}
                        </div>
                        <div class="acoes-notificacao">
                            <button class="btn-acao-notificacao btn-marcar-lida" 
                                    data-notificacao-id="${notificacao.id}"
                                    data-atividade-id="${notificacao.atividade_id}">
                                <i class="fas fa-check"></i> Marcar como lida
                            </button>
                            ${notificacao.atividade_id ? `
                                <button class="btn-acao-notificacao btn-ver-atividade" 
                                        data-atividade-id="${notificacao.atividade_id}">
                                    <i class="fas fa-eye"></i> Ver atividade
                                </button>
                            ` : ''}
                            <!-- BOTÃO ADIAR - SEMPRE VISÍVEL -->
                            ${notificacao.atividade_id ? `
                                <button class="btn-acao-notificacao btn-adiar" 
                                        data-atividade-id="${notificacao.atividade_id}"
                                        data-atividade-nome="${escapeHtml(notificacao.atividade_nome)}"
                                        data-hora-agendada="${escapeHtml(notificacao.hora_agendada)}"
                                        data-atrasada="${realmenteAtrasada}">
                                    <i class="fas fa-clock"></i> 
                                    ${realmenteAtrasada ? 'Adiar (Atrasada)' : 'Adiar (Agendada)'}
                                </button>
                            ` : ''}
                        </div>
                    </div>
                </div>
                <button class="btn-fechar-item btn-fechar-notificacao" 
                        data-notificacao-id="${notificacao.id}">
                    ×
                </button>
            `;
            
            lista.appendChild(div);
            
            if (notificacao.atividade_id) {
                totalComAdiar++;
            }
        });
        
        console.log(`✅ Painel renderizado: ${notificacoes.length} notificações, ${totalComAdiar} com botão "Adiar"`);
    }
    
    function formatarDuracaoParaNotificacaoHTML(minutos) {
        if (minutos < 60) {
            return minutos + ' min';
        } else {
            const horas = Math.floor(minutos / 60);
            const minutosRestantes = minutos % 60;
            if (minutosRestantes === 0) {
                return horas + 'h';
            } else {
                return horas + 'h' + (minutosRestantes < 10 ? '0' : '') + minutosRestantes + 'min';
            }
        }
    }
    
    async function marcarComoLida(notificacaoId, atividadeId) {
        if (estado.notificacoesLidas.includes(notificacaoId)) return;
        
        console.log(`✅ Marcando como lida: ${notificacaoId}`);
        
        estado.notificacoesLidas.push(notificacaoId);
        estado.notificacoes = estado.notificacoes.filter(n => n.id !== notificacaoId);
        estado.totalNotificacoes = estado.notificacoes.length;
        
        localStorage.setItem('notificacoesLidas_sino', JSON.stringify(estado.notificacoesLidas));
        
        atualizarInterface();
        
        const elementoNotificacao = document.getElementById(`notificacao-${notificacaoId}`);
        if (elementoNotificacao) {
            elementoNotificacao.style.opacity = '0.5';
            elementoNotificacao.style.transform = 'translateX(20px)';
            
            setTimeout(() => {
                elementoNotificacao.remove();
                if (estado.totalNotificacoes === 0 && estado.painelAberto) {
                    renderizarListaNotificacoes();
                }
            }, 300);
        }
        
        mostrarMensagemRapida('Notificação marcada como lida', 'success');
        
        // Enviar para servidor
        try {
            const formData = new FormData();
            formData.append('acao', 'marcar_lida');
            formData.append('notificacao_id', notificacaoId);
            formData.append('csrf_token', config.csrfToken);
            
            await fetch(config.endpointNotificacoes, {
                method: 'POST',
                body: formData
            });
            console.log('✅ Notificação marcada como lida no servidor');
        } catch (erro) {
            console.warn('⚠ Não foi possível salvar no servidor:', erro);
        }
    }
    
    async function marcarTodasComoLidas() {
        if (estado.totalNotificacoes === 0) return;
        
        if (!confirm(`Deseja marcar todas as ${estado.totalNotificacoes} notificações como lidas?`)) return;
        
        console.log(`✅ Marcando todas as ${estado.totalNotificacoes} notificações como lidas`);
        
        estado.notificacoes.forEach(notif => {
            if (!estado.notificacoesLidas.includes(notif.id)) {
                estado.notificacoesLidas.push(notif.id);
            }
        });
        
        estado.notificacoes = [];
        estado.totalNotificacoes = 0;
        
        localStorage.setItem('notificacoesLidas_sino', JSON.stringify(estado.notificacoesLidas));
        atualizarInterface();
        
        if (estado.painelAberto) {
            const notificacoesElementos = document.querySelectorAll('.notificacao-item');
            notificacoesElementos.forEach((elemento, index) => {
                setTimeout(() => {
                    elemento.style.opacity = '0.5';
                    elemento.style.transform = 'translateX(20px)';
                    setTimeout(() => {
                        elemento.remove();
                        if (index === notificacoesElementos.length - 1) {
                            renderizarListaNotificacoes();
                        }
                    }, 300);
                }, index * 100);
            });
        }
        
        try {
            const formData = new FormData();
            formData.append('acao', 'marcar_todas_lidas');
            formData.append('csrf_token', config.csrfToken);
            
            await fetch(config.endpointNotificacoes, {
                method: 'POST',
                body: formData
            });
            console.log('✅ Todas as notificações marcadas como lidas no servidor');
        } catch (erro) {
            console.warn('⚠ Não foi possível salvar no servidor:', erro);
        }
        
        mostrarMensagemRapida('Todas as notificações foram marcadas como lidas', 'success');
    }
    
    function fecharNotificacao(notificacaoId) {
        estado.notificacoes = estado.notificacoes.filter(n => n.id !== notificacaoId);
        estado.totalNotificacoes = estado.notificacoes.length;
        
        atualizarInterface();
        
        const elementoNotificacao = document.getElementById(`notificacao-${notificacaoId}`);
        if (elementoNotificacao) {
            elementoNotificacao.style.opacity = '0.5';
            elementoNotificacao.style.transform = 'translateX(20px)';
            
            setTimeout(() => {
                elementoNotificacao.remove();
                if (estado.totalNotificacoes === 0 && estado.painelAberto) {
                    renderizarListaNotificacoes();
                }
            }, 300);
        }
        
        mostrarMensagemRapida('Notificação removida', 'info');
    }
    
    function verAtividade(atividadeId) {
        window.location.href = `calendario.php?detalhes=${atividadeId}`;
        fecharPainel();
    }
    
    function verCalendario() {
        window.location.href = 'calendario.php';
        fecharPainel();
    }
    
    function atualizarTemposNotificacoes() {
        if (!estado.painelAberto) return;
        
        const elementosTempo = document.querySelectorAll('.tempo-notificacao');
        elementosTempo.forEach(elemento => {
            const id = elemento.id.replace('tempo-', '');
            const notificacao = estado.notificacoes.find(n => n.id === id);
            
            if (notificacao && notificacao.data_criacao) {
                elemento.textContent = formatarTempoRelativo(notificacao.data_criacao);
            }
        });
    }
    
    // API pública
    window.sinoNotificacoes = {
        abrirPainel: abrirPainel,
        fecharPainel: fecharPainel,
        carregarNotificacoes: carregarNovasNotificacoes,
        marcarComoLida: marcarComoLida,
        marcarTodasComoLidas: marcarTodasComoLidas,
        fecharNotificacao: fecharNotificacao,
        verAtividade: verAtividade,
        adiarAtividade: abrirModalAdiar,
        getEstado: () => ({ ...estado })
    };
    
    // Inicializar
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', inicializar);
    } else {
        inicializar();
    }
    
})();
</script>
</body>
</html>