<?php
session_start();
if (!isset($_SESSION['logado'])) { header("Location: login.php"); exit; }
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Monitor Live | Pro</title>
    <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700&display=swap" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    
    <style>
        :root {
            --primary-glow: #00f2ff;
            --secondary-glow: #7000ff;
            --bg-dark: #0a0a12;
            --glass-bg: rgba(20, 20, 30, 0.6);
            --glass-border: rgba(255, 255, 255, 0.08);
            --text-main: #ffffff;
            --text-muted: #8b9bb4;
        }

        body {
            background-color: var(--bg-dark);
            background-image: 
                radial-gradient(circle at 10% 20%, rgba(112, 0, 255, 0.15) 0%, transparent 40%),
                radial-gradient(circle at 90% 80%, rgba(0, 242, 255, 0.1) 0%, transparent 40%);
            color: var(--text-main);
            font-family: 'Outfit', sans-serif;
            min-height: 100vh;
            overflow-x: hidden;
        }

        /* --- Estilo Glassmorphism (Vidro) --- */
        .glass-panel {
            background: var(--glass-bg);
            backdrop-filter: blur(12px);
            -webkit-backdrop-filter: blur(12px);
            border: 1px solid var(--glass-border);
            border-radius: 16px;
            box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3);
        }

        /* --- Header --- */
        .page-header {
            padding: 30px 0;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .brand-title {
            font-size: 1.8rem;
            font-weight: 700;
            background: linear-gradient(90deg, #fff, var(--primary-glow));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            letter-spacing: -0.5px;
        }

        .btn-back {
            background: rgba(255,255,255,0.05);
            color: #fff;
            border: 1px solid var(--glass-border);
            border-radius: 50px;
            padding: 8px 20px;
            transition: 0.3s;
            text-decoration: none;
            font-size: 0.9rem;
        }
        .btn-back:hover {
            background: rgba(255,255,255,0.1);
            color: var(--primary-glow);
            border-color: var(--primary-glow);
        }

        /* --- Cards de Estatísticas (Topo) --- */
        .stat-card {
            padding: 20px;
            position: relative;
            overflow: hidden;
            transition: transform 0.3s;
        }
        .stat-card:hover { transform: translateY(-5px); }
        .stat-card::before {
            content: '';
            position: absolute;
            top: 0; left: 0; width: 4px; height: 100%;
            background: var(--primary-glow);
            border-radius: 4px;
        }
        .stat-card.vod::before { background: var(--secondary-glow); }
        
        .stat-value { font-size: 2.2rem; font-weight: 700; line-height: 1; }
        .stat-label { color: var(--text-muted); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 1px; }
        .stat-icon { position: absolute; right: 20px; top: 50%; transform: translateY(-50%); font-size: 2.5rem; opacity: 0.1; }

        /* --- Lista de Usuários (Cards Flutuantes) --- */
        .user-row {
            display: grid;
            grid-template-columns: 60px 2fr 1.5fr 2fr 1fr;
            align-items: center;
            padding: 15px 20px;
            margin-bottom: 12px;
            border-radius: 12px;
            background: rgba(255, 255, 255, 0.02);
            border: 1px solid transparent;
            transition: 0.3s;
            animation: slideIn 0.4s ease-out forwards;
        }

        .user-row:hover {
            background: rgba(255, 255, 255, 0.05);
            border-color: rgba(255, 255, 255, 0.1);
            transform: scale(1.005);
        }

        /* Avatar */
        .user-avatar {
            width: 40px; height: 40px;
            background: linear-gradient(135deg, #333, #111);
            border-radius: 10px;
            display: flex; align-items: center; justify-content: center;
            color: #fff;
            font-weight: bold;
            box-shadow: 0 4px 10px rgba(0,0,0,0.3);
        }

        /* Badges */
        .badge-custom {
            padding: 5px 10px;
            border-radius: 6px;
            font-size: 0.75rem;
            font-weight: 600;
            text-transform: uppercase;
        }
        .badge-ip { background: rgba(0, 242, 255, 0.1); color: var(--primary-glow); border: 1px solid rgba(0, 242, 255, 0.2); font-family: monospace; }
        .badge-time { background: rgba(255, 165, 0, 0.1); color: #ffa500; border: 1px solid rgba(255, 165, 0, 0.2); }
        
        /* Status Pulsante */
        .status-dot {
            height: 10px; width: 10px;
            background-color: #00ff88;
            border-radius: 50%;
            display: inline-block;
            box-shadow: 0 0 0 0 rgba(0, 255, 136, 0.7);
            animation: pulse-green 2s infinite;
        }

        @keyframes pulse-green {
            0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(0, 255, 136, 0.7); }
            70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(0, 255, 136, 0); }
            100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(0, 255, 136, 0); }
        }
        
        @keyframes slideIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

        /* Responsividade */
        @media (max-width: 768px) {
            .user-row {
                grid-template-columns: 50px 1fr auto;
                grid-template-areas: 
                    "icon name status"
                    "icon content content"
                    "none info info";
                gap: 5px;
            }
            .u-icon { grid-area: icon; }
            .u-name { grid-area: name; }
            .u-status { grid-area: status; justify-self: end; }
            .u-content { grid-area: content; font-size: 0.9rem; opacity: 0.8; }
            .u-info { grid-area: info; display: flex; gap: 10px; margin-top: 5px; }
            
            .hide-mobile { display: none; }
        }
    </style>
</head>
<body>

<div class="container pt-3 pb-5">
    <div class="page-header">
        <div>
            <div class="brand-title"><i class="fa-solid fa-satellite-dish me-2"></i> MONITOR LIVE</div>
            <div class="text-muted small">Tempo Real <span class="mx-2">•</span> <span id="clock">00:00:00</span></div>
        </div>
        <a href="index.php" class="btn-back"><i class="fa-solid fa-arrow-left me-2"></i> Sair</a>
    </div>

    <div class="row g-3 mb-4">
        <div class="col-12 col-md-4">
            <div class="glass-panel stat-card">
                <div class="stat-value text-white" id="count_total">0</div>
                <div class="stat-label mt-1">Total Online</div>
                <i class="fa-solid fa-users stat-icon"></i>
            </div>
        </div>
        <div class="col-6 col-md-4">
            <div class="glass-panel stat-card">
                <div class="stat-value" style="color: var(--primary-glow)" id="count_live">0</div>
                <div class="stat-label mt-1">Canais TV</div>
                <i class="fa-solid fa-tv stat-icon"></i>
            </div>
        </div>
        <div class="col-6 col-md-4">
            <div class="glass-panel stat-card vod">
                <div class="stat-value" style="color: var(--secondary-glow)" id="count_vod">0</div>
                <div class="stat-label mt-1">Filmes / Séries</div>
                <i class="fa-solid fa-film stat-icon"></i>
            </div>
        </div>
    </div>

    <div class="glass-panel p-3">
        <div class="d-flex justify-content-between align-items-center mb-3 px-2">
            <h5 class="m-0 fw-600"><i class="fa-solid fa-tower-broadcast me-2 text-success"></i> Conexões Ativas</h5>
            <div class="badge bg-dark border border-secondary text-secondary">Atualizando...</div>
        </div>

        <div id="users_container">
            <div class="text-center py-5">
                <div class="spinner-border text-primary" role="status"></div>
                <div class="mt-3 text-muted small">Escaneando conexões...</div>
            </div>
        </div>
    </div>
</div>

<script>
    // Relógio no topo
    setInterval(() => {
        document.getElementById('clock').innerText = new Date().toLocaleTimeString();
    }, 1000);

    // Função Principal
    async function fetchLiveUsers() {
        try {
            const response = await fetch('api_live.php');
            const users = await response.json();
            renderBoard(users);
        } catch (error) {
            console.error('Erro:', error);
        }
    }

    function renderBoard(users) {
        const container = document.getElementById('users_container');
        
        // Contadores
        let total = users.length;
        let live = users.filter(u => u.tipo === 'live').length;
        let vod = total - live;

        // Animação de números (opcional, simples aqui)
        document.getElementById('count_total').innerText = total;
        document.getElementById('count_live').innerText = live;
        document.getElementById('count_vod').innerText = vod;

        // Renderizar Lista
        if (total === 0) {
            container.innerHTML = `
                <div class="text-center py-5 opacity-50">
                    <i class="fa-solid fa-power-off fa-3x mb-3"></i>
                    <h5>Nenhum usuário conectado</h5>
                    <p class="small">O painel está aguardando conexões.</p>
                </div>
            `;
            return;
        }

        let html = '';
        users.forEach(u => {
            // Define ícone e cor baseada no tipo
            let isVod = (u.tipo === 'movie' || u.tipo === 'series');
            let iconClass = isVod ? 'fa-film' : 'fa-tv';
            let typeColor = isVod ? '#7000ff' : '#00f2ff';
            let avatarLetter = u.username.substring(0, 2).toUpperCase();
            
            // Layout Responsivo Inteligente
            html += `
            <div class="user-row">
                <div class="u-icon">
                    <div class="user-avatar" style="border: 1px solid ${typeColor}">
                        ${avatarLetter}
                    </div>
                </div>

                <div class="u-name ps-2">
                    <div class="fw-bold text-white">${u.username}</div>
                    <div class="small text-muted text-truncate" style="max-width: 150px;">
                        <i class="${iconClass} me-1" style="color: ${typeColor}"></i> ${shortAgent(u.agent)}
                    </div>
                </div>

                <div class="u-info hide-mobile d-none d-md-block">
                    <div class="badge-ip">${u.ip}</div>
                </div>

                <div class="u-content text-truncate px-2" style="color: #e0e0e0;">
                    ${u.conteudo}
                </div>

                <div class="u-status text-end">
                    <div class="d-flex align-items-center justify-content-end gap-2">
                        <span class="badge-time">${u.tempo}</span>
                        <div class="status-dot" title="Online"></div>
                    </div>
                    <div class="d-md-none mt-1">
                         <span class="badge-ip" style="font-size: 10px;">${u.ip}</span>
                    </div>
                </div>
            </div>
            `;
        });

        container.innerHTML = html;
    }

    function shortAgent(agent) {
        if (!agent) return 'App Desconhecido';
        if (agent.includes('Smarters')) return 'Smarters Pro';
        if (agent.includes('XCIPTV')) return 'XCIPTV';
        if (agent.includes('VLC')) return 'VLC Player';
        if (agent.includes('Android')) return 'Android System';
        return agent.substring(0, 12) + '...';
    }

    // Iniciar
    fetchLiveUsers();
    setInterval(fetchLiveUsers, 3000); // Atualiza a cada 3s
</script>

</body>
</html>
