<?php
/**
 * api.php
 * تم التعديل لإضافة JSON_UNESCAPED_UNICODE لجميع مخرجات JSON
 * وتم توحيد التحقق من التوكن لاستخدام دالة isValidToken مع PDO
 */

// تضمين ملف الإعدادات (للاتصال بقاعدة البيانات وثوابت DB)
require __DIR__ . '/config.php'; // تأكد أن هذا الملف يعرّف الثوابت المطلوبة ويعرف connectToDB

// --- الدوال المساعدة وقاعدة البيانات (يفضل فصلها في ملف منفصل لاحقًا) ---

/**
 * دالة للاتصال بقاعدة البيانات باستخدام PDO
 * @return PDO|null
 */
function connectToDB() {
    // استخدام الثوابت من config.php
    $dsn = "mysql:host=" . (defined('DB_HOST') ? DB_HOST : 'localhost') . ";dbname=" . (defined('DB_NAME') ? DB_NAME : '') . ";charset=utf8mb4";
    $options = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    try {
         $db = new PDO($dsn, (defined('DB_USER') ? DB_USER : ''), (defined('DB_PASS') ? DB_PASS : ''), $options);
         return $db;
    } catch (PDOException $e) {
         // error_log("Database Connection Error: " . $e->getMessage());
         // طباعة خطأ JSON قبل الخروج
         // ★★★ استخدام خيارات json_encode ★★★
         echo json_encode(['success' => false, 'message' => 'خطأ في الاتصال بقاعدة البيانات.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
         exit;
    }
}

/**
 * دالة التحقق من صحة التوكن والنطاق باستخدام PDO
 * @param string $token
 * @param string $domain
 * @return bool
 */
function isValidToken($token, $request_domain) {
    // 1. التحقق المبدئي من عدم الفراغ
    if (empty($token) || empty($request_domain)) {
        // error_log("[isValidToken DEBUG] Failed: Token or Request Domain is empty."); // تسجيل للمطور
        return false;
    }

    // 2. الاتصال بقاعدة البيانات
    $db = connectToDB(); // نفترض أن هذه الدالة معرفة وتعيد كائن PDO أو null
    if (!$db) {
         // يفترض أن connectToDB تسجل الخطأ أو تتعامل معه
         // error_log("[isValidToken DEBUG] Failed: Could not connect to DB."); // تسجيل للمطور
         return false;
    }

    try {
        // 3. جلب الدومين المرتبط بالتوكن
        // تأكد من أن اسم الجدول 'api_tokens' وعمود الدومين 'user_domain' صحيحان
        $stmt = $db->prepare("SELECT user_domain FROM api_tokens WHERE token = ? LIMIT 1"); // Use LIMIT 1 for performance
        $stmt->execute([$token]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC); // جلب النتيجة كمصفوفة ارتباطية

        // 4. التحقق من وجود التوكن وتطبيق التطبيع والمقارنة
        if ($result && isset($result['user_domain'])) {

            // 4a. تطبيع الدومين المحفوظ في قاعدة البيانات
            // إزالة www. والمسافات الزائدة
            // (ملاحظة: تأكد أن كود الحفظ في manage_tokens.php يزيل www. أيضًا)
            $db_domain = preg_replace('#^www\.#', '', trim($result['user_domain']));

            // 4b. تطبيع الدومين المستلم في الطلب
            // إزالة http:// أو https://
            $normalized_request_domain = preg_replace('#^https?://#', '', trim($request_domain));
            // إزالة الشرطة المائلة في النهاية إن وجدت
            $normalized_request_domain = rtrim($normalized_request_domain, '/');
            // إزالة www.
            $normalized_request_domain = preg_replace('#^www\.#', '', $normalized_request_domain);

            // 4c. المقارنة الدقيقة بين القيمتين المطبعتين (بدون www)
            // يمكنك إبقاء سطر التسجيل هذا مؤقتًا للمساعدة في التشخيص
             // error_log("[isValidToken DEBUG] Comparing (No WWW) DB: [{$db_domain}] === Request: [{$normalized_request_domain}]");
            return ($db_domain === $normalized_request_domain);

        } else {
            // التوكن غير موجود في قاعدة البيانات
            // يمكنك إضافة تسجيل خطأ هنا أيضًا
             // error_log("[isValidToken DEBUG] Failed: Token not found in DB: [{$token}]");
            return false;
        }

    } catch (PDOException $e) {
        // تسجيل أي أخطاء تحدث أثناء الاستعلام عن قاعدة البيانات
        // error_log("Token Validation Database Error: " . $e->getMessage());
        return false; // إرجاع false عند حدوث أي خطأ في قاعدة البيانات
    }
}



/**
 * ★ تعديل: دالة جلب المباريات المحدثة لـ SSE
 */
function getUpdatedMatches($lastUpdate) {
    $db = connectToDB();
     if (!$db) return [];

    try {
        $tableName = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'matches';
        // ★★★ تم إضافة "stadium" إلى الاستعلام
        $query = "
            SELECT
                match_id, league, date, time, timer, team1, team2,
                team1_logo, team2_logo, score, status, channels, updated_at,
                team1_pen_score, team2_pen_score, stadium 
            FROM {$tableName}
            WHERE updated_at > ?
            ORDER BY updated_at DESC
        ";
        $stmt = $db->prepare($query);
        $stmt->execute([$lastUpdate ?: '1970-01-01 00:00:00']);
        $matches = $stmt->fetchAll();

        foreach ($matches as &$match) {
            $match['channels'] = !empty($match['channels']) ? explode(',', $match['channels']) : [];
        }
        unset($match);
        return $matches;
    } catch (PDOException $e) {
        // error_log("Error fetching updated matches for SSE: " . $e->getMessage());
        return [];
    }
}

/**
 * ★ تعديل: دالة جلب تفاصيل مباراة لـ SSE
 */
function getMatchDetails($matchId, $lastUpdate) {
    $db = connectToDB();
    if (!$db) return null;

    try {
        $matchesTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'matches';
        $detailsTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'match_details';

        // ★★★ تم إضافة "m.stadium" إلى الاستعلام
        $stmt = $db->prepare("
            SELECT
                m.match_id, m.league, m.date, m.time, m.timer, m.team1, m.team2,
                m.team1_logo, m.team2_logo, m.score, m.status, m.channels,
                md.lineups, md.events, md.statistics, m.updated_at,
                m.team1_pen_score, m.team2_pen_score, m.stadium
            FROM {$matchesTable} m
            LEFT JOIN {$detailsTable} md ON m.match_id = md.match_id
            WHERE m.match_id = ? AND m.updated_at > ?
        ");
        $stmt->execute([$matchId, $lastUpdate ?: '1970-01-01 00:00:00']);
        $matchDetails = $stmt->fetch();

        if (!$matchDetails) return null;

        $matchDetails['lineups'] = json_decode($matchDetails['lineups'] ?? '[]', true) ?: [];
        $matchDetails['events'] = json_decode($matchDetails['events'] ?? '[]', true) ?: [];
        $matchDetails['statistics'] = $matchDetails['statistics'] ? json_decode($matchDetails['statistics'], true) : null;
        $matchDetails['channels'] = !empty($matchDetails['channels']) ? explode(',', $matchDetails['channels']) : [];

        return $matchDetails;
    } catch (PDOException $e) {
        // error_log("Error fetching match details for SSE (ID: $matchId): " . $e->getMessage());
        return null;
    }
}


// --- بداية منطق API الرئيسي ---

// معالجة طلبات OPTIONS لـ CORS
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    header("Access-Control-Allow-Origin: *"); // يجب تقييد هذا في الإنتاج
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization");
    http_response_code(200);
    exit;
}

// تعيين ترويسة نوع المحتوى والترميز للردود الفعلية
header('Content-Type: application/json; charset=utf-8');
// تعيين CORS للردود الفعلية
header("Access-Control-Allow-Origin: *"); // يجب تقييد هذا في الإنتاج

// استقبال التوكن والنطاق والتحقق منهما
$token = $_GET['token'] ?? '';
$requested_domain = $_GET['domain'] ?? '';

// التحقق باستخدام الدالة الموحدة
if (!isValidToken($token, $requested_domain)) {
     http_response_code(403); // Forbidden
     // ★★★ إضافة الخيارات هنا ★★★
     echo json_encode(["success" => false, "message" => "التوكن أو النطاق غير صالح."], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
     exit;
}


// --- معالجة نقاط النهاية (Endpoints) ---
$action = $_GET['action'] ?? null;
$matchIdParam = $_GET['match_id'] ?? null;
$recentParam = $_GET['recent'] ?? null;
$latestUpdatesParam = $_GET['latest_updates'] ?? null;
// $htmlParam = $_GET['html'] ?? null; // أبقينا على تعليقه إذا لم تكن تستخدمه

// JSON Encoding Options
$json_options = JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT; // للتنسيق المقروء
// $json_options = JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES; // بدون تنسيق إضافي (أصغر حجمًا)


// --- 1. نقطة نهاية SSE ---
if ($action === 'sse') {
    // التحقق تم في الأعلى

    // SSE للمباريات الحديثة
    if (isset($recentParam)) {
        header('Content-Type: text/event-stream');
        header('Cache-Control: no-cache');
        header('X-Accel-Buffering: no');
        header('Connection: keep-alive');

        $lastUpdate = null;
        while (true) {
            if (connection_aborted()) break;
            $matches = getUpdatedMatches($lastUpdate);
            if (!empty($matches)) {
                // استخدام أحدث updated_at من النتائج
                $latestUpdateTimestamp = strtotime(max(array_column($matches, 'updated_at')));
                 if ($lastUpdate === null || $latestUpdateTimestamp > $lastUpdate) {
                    $lastUpdate = $latestUpdateTimestamp;
                    // ★★★ إضافة الخيارات هنا ★★★
                    echo "event: update\ndata: " . json_encode($matches, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n\n";
                 } else {
                      echo ": keep-alive\n\n";
                 }
            } else {
                 echo ": keep-alive\n\n";
            }
            if (ob_get_level() > 0) @ob_flush();
            @flush();
            sleep(5);
        }
        exit;
    }

    // SSE لمباراة فردية
    elseif (isset($matchIdParam)) {
        $matchId = intval($matchIdParam);
        if ($matchId <= 0) { http_response_code(400); exit; }

        header('Content-Type: text/event-stream');
        header('Cache-Control: no-cache');
        header('X-Accel-Buffering: no');
        header('Connection: keep-alive');

        $lastUpdate = null;
        while (true) {
             if (connection_aborted()) break;
            $matchDetails = getMatchDetails($matchId, $lastUpdate);
            if ($matchDetails) {
                 $latestUpdateTimestamp = strtotime($matchDetails['updated_at']);
                 if ($lastUpdate === null || $latestUpdateTimestamp > $lastUpdate) {
                    $lastUpdate = $latestUpdateTimestamp;
                     // ★★★ إضافة الخيارات هنا ★★★
                    echo "event: update\ndata: " . json_encode($matchDetails, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n\n";
                 } else {
                     echo ": keep-alive\n\n";
                 }
            } else {
                 echo ": keep-alive\n\n";
            }
            if (ob_get_level() > 0) @ob_flush();
            @flush();
            sleep(5);
        }
        exit;
    }
}





// --- [جديد v1.1] نقطة نهاية التحقق من الترخيص ---
elseif ($action === 'check_license') {
    $db = connectToDB();
    if (!$db) {
        // connectToDB() تطبع الخطأ مسبقاً
        exit;
    }

    try {
        // استخدم نفس التوكن والنطاق اللذين تم التحقق منهما في الأعلى
        $stmt = $db->prepare("SELECT created_at, expires_at FROM api_tokens WHERE token = ? AND user_domain = ? LIMIT 1");
        // نحتاج لإعادة تطبيع الدومين كما في دالة isValidToken
        $normalized_request_domain = preg_replace('#^https?://#', '', rtrim($requested_domain, '/'));
        $normalized_request_domain = preg_replace('#^www\.#', '', $normalized_request_domain);
        
        $stmt->execute([$token, $normalized_request_domain]);
        $token_data = $stmt->fetch();

        if ($token_data) {
            // تحقق إضافي من تاريخ الانتهاء
            if (strtotime($token_data['expires_at']) < time()) {
                echo json_encode(['success' => false, 'data' => ['status' => 'expired', 'message' => 'الاشتراك منتهي. يرجى التجديد.']], $json_options);
            } else {
                echo json_encode(['success' => true, 'data' => [
                    'status' => 'valid',
                    'created_at' => $token_data['created_at'],
                    'expires_at' => $token_data['expires_at']
                ]], $json_options);
            }
        } else {
            // هذا لا يجب أن يحدث لأن isValidToken نجحت، لكنه احتياط
            echo json_encode(['success' => false, 'data' => ['status' => 'invalid', 'message' => 'بيانات التوكن غير موجودة.']], $json_options);
        }
        exit;

    } catch (PDOException $e) {
        // error_log("License Check Endpoint Error: " . $e->getMessage());
        echo json_encode(['success' => false, 'data' => ['status' => 'error', 'message' => 'خطأ في خادم التراخيص.']], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        exit;
    }
}
// --- [نهاية الكود الجديد] ---





// --- 2. نقطة نهاية جلب المباريات الحديثة (JSON عادي) ---
elseif (isset($recentParam)) {
    $db = connectToDB();
    if (!$db) exit;

    try {
        $matchesTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'matches';
        // ★★★ تم إضافة "stadium" إلى الاستعلام
        $stmt = $db->query("SELECT match_id, league, date, time, timer, team1, team2, 
                                  team1_logo, team2_logo, score, status, channels,
                                  team1_pen_score, team2_pen_score, stadium
                           FROM {$matchesTable} ORDER BY date DESC, time DESC");
        $matches = $stmt->fetchAll();

        foreach ($matches as &$match) {
            $match['channels'] = !empty($match['channels']) ? explode(',', $match['channels']) : [];
        }
        unset($match);

        echo json_encode(['success' => true, 'data' => $matches], $json_options);
        exit;

    } catch (PDOException $e) {
        // error_log("Database error fetching recent matches: " . $e->getMessage());
        echo json_encode(['success' => false, 'message' => 'فشل جلب المباريات.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        exit;
    }
}

// --- 3. نقطة نهاية جلب تفاصيل مباراة فردية (JSON عادي) ---
elseif (isset($matchIdParam)) {
    $matchId = (int)$matchIdParam;
    if ($matchId <= 0) {
         // ★★★ استخدام الخيارات هنا ★★★
        echo json_encode(['success' => false, 'message' => 'معرف مباراة غير صالح.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        exit;
    }

    $db = connectToDB();
     if (!$db) exit;

    try {
        $matchesTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'matches';
        $detailsTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'match_details';
        // جلب بيانات المباراة والتفاصيل
        $stmt = $db->prepare("
            SELECT m.*, md.lineups, md.events, md.statistics
            FROM {$matchesTable} m
            LEFT JOIN {$detailsTable} md ON m.match_id = md.match_id
            WHERE m.match_id = :match_id
        ");
        $stmt->bindParam(':match_id', $matchId, PDO::PARAM_INT);
        $stmt->execute();
        $matchData = $stmt->fetch();

        if (!$matchData) {
             // ★★★ استخدام الخيارات هنا ★★★
            echo json_encode(['success' => false, 'message' => 'المباراة غير موجودة.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
            exit;
        }

        // فك ترميز JSON الداخلي (هذا يبقى كما هو)
        $matchData['lineups'] = json_decode($matchData['lineups'] ?? '[]', true) ?: [];
        $matchData['events'] = json_decode($matchData['events'] ?? '[]', true) ?: [];
        $matchData['statistics'] = $matchData['statistics'] ? json_decode($matchData['statistics'], true) : null;
        $matchData['channels'] = !empty($matchData['channels']) ? explode(',', $matchData['channels']) : [];

        // ★★★ استخدام الخيارات هنا ★★★
        echo json_encode(['success' => true, 'data' => $matchData], $json_options);
        exit;

    } catch (PDOException $e) {
        // error_log("Database error fetching match details (ID: $matchId): " . $e->getMessage());
         // ★★★ استخدام الخيارات هنا ★★★
        echo json_encode(['success' => false, 'message' => 'فشل جلب تفاصيل المباراة.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        exit;
    }
}

// --- 4. نقطة نهاية التحديثات (Long Polling - إذا كنت لا تزال تستخدمها) ---
elseif (isset($latestUpdatesParam)) {
    $db = connectToDB();
    if (!$db) exit;
    $lastUpdated = $_POST['last_updated'] ?? '1970-01-01 00:00:00';
    $matchId = isset($_POST['match_id']) ? (int)$_POST['match_id'] : null;

    try {
        $matchesTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'matches';
        $detailsTable = (defined('DB_PREFIX') ? DB_PREFIX : 'wp47_') . 'match_details';
        // ... (باقي بناء الاستعلام SQL كما كان لديك) ...
        $sql = "SELECT m.*, md.lineups, md.events, md.statistics, m.updated_at
                FROM {$matchesTable} m
                LEFT JOIN {$detailsTable} md ON m.match_id = md.match_id
                WHERE m.updated_at > :last_updated";
         if ($matchId) { $sql .= " AND m.match_id = :match_id"; }
         $sql .= " ORDER BY m.updated_at ASC"; // ترتيب تصاعدي للتحديثات عادةً

        $stmt = $db->prepare($sql);
        $stmt->bindParam(':last_updated', $lastUpdated);
        if ($matchId) { $stmt->bindParam(':match_id', $matchId, PDO::PARAM_INT); }
        $stmt->execute();
        $updatedMatches = $stmt->fetchAll();

        foreach ($updatedMatches as &$match) {
            $match['lineups'] = json_decode($match['lineups'] ?? '[]', true) ?: [];
            $match['events'] = json_decode($match['events'] ?? '[]', true) ?: [];
            $match['statistics'] = $match['statistics'] ? json_decode($match['statistics'], true) : null;
            $match['channels'] = !empty($match['channels']) ? explode(',', $match['channels']) : [];
        }
        unset($match);

         // ★★★ استخدام الخيارات هنا ★★★
         echo json_encode(['success' => true, 'data' => $updatedMatches], $json_options);
         exit;

    } catch (PDOException $e) {
        // error_log("Database error fetching latest updates: " . $e->getMessage());
         // ★★★ استخدام الخيارات هنا ★★★
         echo json_encode(['success' => false, 'message' => 'فشل جلب التحديثات.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
        exit;
    }
}


// --- 5. إذا لم يتم التعرف على نقطة نهاية صالحة ---
http_response_code(404); // Not Found
// ★★★ استخدام الخيارات هنا ★★★
echo json_encode(['success' => false, 'message' => 'نقطة نهاية API غير صالحة.'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
exit;


// نقطة النهاية لعرض واجهة المستخدم (HTML)
if (isset($_GET['html'])) {
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>مباريات اليوم</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" type="text/css" href="style.css">
        <style>
          /* تنسيقات CSS إضافية خاصة بك */
          #btolat-matches-table { /* تمييز ID الجدول */
            width: 100%;
            border-collapse: collapse;
          }
          #btolat-matches-table th, #btolat-matches-table td { /* تمييز ID الجدول */
            border: 1px solid #ddd;
            padding: 8px;
            text-align: center;
          }
          #btolat-matches-table th { /* تمييز ID الجدول */
            background-color: #f0f0f0;
          }
          .btolat-match-details__score { /* تمييز كلاس تفاصيل المباراة */
            display: flex;
            align-items: center;
            justify-content: center;
          }
          .btolat-match-details__score > div { /* تمييز كلاس تفاصيل المباراة */
            display: flex;
            align-items: center;
            margin: 0 10px;
          }
          .btolat-match-details__stats-row { /* تمييز كلاس صفوف الإحصائيات */
            display: flex;
            justify-content: space-between;
            margin-bottom: 5px;
          }
          .btolat-match-details__team-stat { /* تمييز كلاس إحصائيات الفريق */
            width: 45%;
          }
          .btolat-match-details__stats-bar-container { /* تمييز كلاس حاوية شريط الإحصائيات */
            width: 100%;
            background-color: #f0f0f0;
            height: 10px;
            margin-top: 5px;
          }
          .btolat-match-details__stats-bar { /* تمييز كلاس شريط الإحصائيات */
            height: 100%;
          }
          .btolat-match-details__stats-count { /* تمييز كلاس عدد الإحصائيات */
            font-weight: bold;
          }
          .btolat-match-details__stats-label { /* تمييز كلاس اسم الإحصائية */
            text-align: center;
            width: 100%;
          }
          .btolat-match-details__stats-label span { /* تمييز كلاس اسم الإحصائية */
            display: block;
            margin: 0 auto;
          }
          /* تنسيقات أحداث المباراة */
          .btolat-timeline { /* تمييز كلاس الخط الزمني */
            width: 100%;
            margin: 30px auto;
            position: relative;
          }

          .btolat-timeline ul { /* تمييز كلاس قائمة الخط الزمني */
            padding: 0;
            margin: 0;
          }

          .btolat-timeline ul li { /* تمييز عناصر قائمة الخط الزمني */
            list-style-type: none;
            position: relative;
            width: 6px;
            margin: 0 auto;
            padding-top: 50px;
            background: #ddd;
          }

          .btolat-timeline ul li::after { /* تمييز دائرة الحدث */
            content: '';
            position: absolute;
            left: 50%;
            bottom: 0;
            transform: translateX(-50%);
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: inherit;
            z-index: 1;
          }

          .btolat-timeline ul li div { /* تمييز مربع الحدث */
            position: relative;
            bottom: 0;
            width: 400px;
            padding: 15px;
            background: #3a89eb;
            color: #fff;
          }

          .btolat-timeline ul li div::before { /* تمييز مثلث الحدث */
            content: '';
            position: absolute;
            bottom: 7px;
            width: 0;
            height: 0;
            border-style: solid;
          }

          /* Odd item positioning */
          .btolat-timeline ul li:nth-child(odd) div { /* تمييز أحداث الفريق الأول */
            left: 45px;
          }

          /* Odd triangle indicator styling */
          .btolat-timeline ul li:nth-child(odd) div::before { /* تمييز مثلث أحداث الفريق الأول */
            left: -15px;
            border-width: 8px 16px 8px 0;
            border-color: transparent #3a89eb transparent transparent;
          }

          /* Even item positioning */
          .btolat-timeline ul li:nth-child(even) div { /* تمييز أحداث الفريق الثاني */
            left: -439px;
          }

          /* Even triangle indicator styling */
          .btolat-timeline ul li:nth-child(even) div::before { /* تمييز مثلث أحداث الفريق الثاني */
            right: -15px;
            border-width: 8px 0 8px 16px;
            border-color: transparent transparent transparent #3a89eb;
          }

          .btolat-timeline ul li time { /* تمييز وقت الحدث */
            display: block;
            font-size: 1.2rem;
            font-weight: bold;
            margin-bottom: 8px;
          }

          .btolat-timeline ul li.btolat-event-title::after { /* تمييز دائرة الحدث الرئيسي */
            background: #3a89eb;
          }

          .btolat-timeline ul li.btolat-event-title div { /* تمييز مربع الحدث الرئيسي */
            background: #3a89eb;
            color: white;
          }

          .btolat-timeline ul li.btolat-event-title div::before { /* تمييز مثلث الحدث الرئيسي */
            border-color: transparent #3a89eb transparent transparent;
          }

          .btolat-timeline ul li:nth-child(even).btolat-event-title div::before { /* تمييز مثلث الحدث الرئيسي */
            border-color: transparent transparent transparent #3a89eb;
          }
          .btolat-match-details__lineup-hometeam, .btolat-match-details__lineup-awayteam{
            display: flex;
            flex-wrap: wrap;
          }
          .btolat-match-details__lineup-hometeam .player, .btolat-match-details__lineup-awayteam .player{
            width: 33.3333%;
          }
        </style>
        <script src="app.js"></script>
    </head>
    <body>
        <h1>مباريات اليوم</h1>
        <table id="btolat-matches-table">
            <thead>
                <tr>
                    <th>الدوري</th>
                    <th>التاريخ</th>
                    <th>الوقت</th>
                    <th>الفريق الأول</th>
                    <th>الفريق الثاني</th>
                    <th>النتيجة</th>
                    <th>الزمن</th>
                    <th>الملعب</th> <th>القنوات</th> <th></th>
                </tr>
            </thead>
            <tbody>
            </tbody>
        </table>

        <div id="btolat-match-details" style="display: none;">
            <h2 id="match-details-title">تفاصيل المباراة</h2>
            <h3 id="match-details-stadium" style="text-align: center; color: #555; display: none;"></h3> 
            
            <div class="btolat-match-details__uppergraph">
                </div>

            <div class="btolat-match-details__stats">
                </div>

            <div class="btolat-match-details__field-container">
                <div class="btolat-match-details__lineup-hometeam">
                    </div>
                <div class="btolat-match-details__lineup-awayteam">
                    </div>
            </div>
            
            <div id="btolat-match-stats" style="padding: 20px; border-top: 1px solid #eee; margin-top: 20px;">
            </div>
            
            <div class="btolat-card">
              <section class="btolat-timeline">
                <ul id="btolat-events-list">
                </ul>
              </section>
            </div>
        </div>
    </body>
    </html>
    <?php
    exit;
}


?>