<?php
require_once 'config.php';
require_once 'auth.php';
require_once 'whatsapp_message.php';
requireLogin();

$userId = (int)$_SESSION['user_id'];

// ── Always take role / username / full name from the database ───────────────
// The session copy goes stale when an Admin changes a role, renames a user or
// retires an account in profile.php, so refresh it on every dashboard load.
$dbUser = false;
try {
    $uStmt = $pdo->prepare("SELECT username, full_name, role, is_active FROM users WHERE id = ?");
    $uStmt->execute([$userId]);
    $dbUser = $uStmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    $dbUser = false;
}

if (!$dbUser || (int)($dbUser['is_active'] ?? 1) !== 1) {
    // Account removed or retired: end the session.
    $_SESSION = [];
    session_destroy();
    header('Location: login.php');
    exit;
}

$allowedDbRoles = ['Admin', 'Calling Admin', 'Operator Admin', 'Finance', 'Operator', 'Editor'];
if (!in_array($dbUser['role'], $allowedDbRoles, true)) {
    $_SESSION = [];
    session_destroy();
    header('Location: login.php');
    exit;
}

// Role changed in the database -> drop any leftover Admin "view as" state.
if (($_SESSION['role'] ?? '') !== $dbUser['role']) {
    unset($_SESSION['view_as'], $_SESSION['view_editor_id']);
}
$_SESSION['role']      = $dbUser['role'];
$_SESSION['username']  = $dbUser['username'];
$_SESSION['full_name'] = $dbUser['full_name'];

$userRole = $dbUser['role'];
$username = $dbUser['username'];

// ── Calling Admin / Operator Admin ──────────────────────────────────────────
// Both are limited admins. The rest of this page treats them as 'Admin' for
// record access, and the flags below hide what they must not see.
//   Admin           : everything
//   Calling Admin   : all call records, Assign Editors, Editors Summary, view-as-editor
//   Operator Admin  : Management (Operator) view of all confirmed records, Assign Operators
$realRole        = $userRole;
$isFullAdmin     = ($realRole === 'Admin');
$isCallingAdmin  = ($realRole === 'Calling Admin');
$isOperatorAdmin = ($realRole === 'Operator Admin');
if ($isCallingAdmin || $isOperatorAdmin) {
    $userRole = 'Admin';
    unset($_GET['view_as']);                 // they cannot switch views themselves
    if ($isCallingAdmin) {
        unset($_SESSION['view_as']);         // never the Operator view
    } else {
        $_SESSION['view_as'] = 'Operator';   // always the Operator view
        unset($_SESSION['view_editor_id'], $_GET['view_editor_id']);
    }
}

// Internal Messages: unread count for the actual logged-in user.
$internalUnreadCount = 0;
try {
    $msgCountStmt = $pdo->prepare("SELECT COUNT(*) FROM internal_messages WHERE receiver_id = ? AND is_read = 0");
    $msgCountStmt->execute([(int)$userId]);
    $internalUnreadCount = (int)$msgCountStmt->fetchColumn();
} catch (PDOException $e) {
    $internalUnreadCount = 0;
}


// Admin View-As logic (Persistent via Session)
if ($userRole === 'Admin') {
    if (isset($_GET['view_as'])) {
        if ($_GET['view_as'] === 'Operator') {
            $_SESSION['view_as'] = 'Operator';
            unset($_SESSION['view_editor_id']);
        } else {
            unset($_SESSION['view_as']);
            unset($_SESSION['view_editor_id']);
        }
    }
    if (isset($_GET['view_editor_id'])) {
        if ($_GET['view_editor_id'] !== '') {
            $_SESSION['view_editor_id'] = (int)$_GET['view_editor_id'];
            unset($_SESSION['view_as']);
        } else {
            unset($_SESSION['view_editor_id']);
        }
    }
}

$actualUserRole = $userRole;
$viewAsOperator = ($actualUserRole === 'Admin' && ($_SESSION['view_as'] ?? '') === 'Operator');
$viewEditorId = ($actualUserRole === 'Admin') ? ($_SESSION['view_editor_id'] ?? '') : '';

$displayRole = $viewAsOperator ? 'Operator' : ($viewEditorId ? 'Editor' : $actualUserRole);
$effectiveUserId = $viewEditorId ?: $userId;
// New Arrivals -> Process: make sure the registered client has a Confirm inquiry
// and an operator_process_details row, then open the operator processing page.
if (isset($_GET['arrival_process']) && $displayRole === 'Operator') {
    $rcId = (int)$_GET['arrival_process'];
    try {
        $rcStmt = $pdo->prepare("SELECT * FROM registered_clients WHERE id = ?");
        $rcStmt->execute([$rcId]);
        $rc = $rcStmt->fetch(PDO::FETCH_ASSOC);
        if ($rc) {
            $inqStmt = $pdo->prepare("SELECT id FROM inquiries WHERE phone_number = ? ORDER BY id DESC LIMIT 1");
            $inqStmt->execute([$rc['phone_number']]);
            $inqId = (int)$inqStmt->fetchColumn();
            $pdo->beginTransaction();
            if (!$inqId) {
                $ins = $pdo->prepare("INSERT INTO inquiries
                    (customer_name, phone_number, location_name, details, customer_category, status, operator_id, year, month, created_at, updated_at)
                    VALUES (?, ?, ?, ?, ?, 'Confirm', ?, ?, ?, NOW(), NOW())");
                $ins->execute([
                    $rc['customer_name'] ?: ($rc['name_with_initial'] ?? ''),
                    $rc['phone_number'],
                    $rc['location_name'] ?? '',
                    $rc['details'] ?? '',
                    $rc['customer_category'] ?? null,
                    ($userRole === 'Operator') ? (int)$userId : null,
                    (int)date('Y'),
                    date('F'),
                ]);
                $inqId = (int)$pdo->lastInsertId();
            } else {
                $pdo->prepare("UPDATE inquiries SET status = 'Confirm', operator_id = COALESCE(operator_id, ?), updated_at = NOW() WHERE id = ?")
                    ->execute([($userRole === 'Operator') ? (int)$userId : null, $inqId]);
            }
            $chk = $pdo->prepare("SELECT COUNT(*) FROM operator_process_details WHERE inquiry_id = ?");
            $chk->execute([$inqId]);
            if (!(int)$chk->fetchColumn()) {
                $pdo->prepare("INSERT INTO operator_process_details (inquiry_id, operator_stage) VALUES (?, 'Confirm')")->execute([$inqId]);
            }
            $pdo->commit();
            header('Location: operator_edit.php?id=' . $inqId . '&return_url=' . urlencode('index.php?view_as=Operator'));
            exit;
        }
    } catch (PDOException $e) {
        if ($pdo->inTransaction()) $pdo->rollBack();
    }
}

// Search & Filter
$search = $_GET['search'] ?? '';
$category = $_GET['category'] ?? '';
$month = $_GET['month'] ?? '';
$selectedYear = $_GET['year'] ?? 'current';
$operator_stage = $_GET['operator_stage'] ?? '';
$payment_status = $_GET['payment_status'] ?? '';
$passport_status_filter = $_GET['passport_status'] ?? '';

$whereClauses = [];
$params = [];

// Apply year filter
if ($selectedYear === 'current') {
    $whereClauses[] = "inquiries.year = ?";
    $params[] = (int)date('Y');
} elseif ($selectedYear !== 'all') {
    $whereClauses[] = "inquiries.year = ?";
    $params[] = (int)$selectedYear;
}

$isDefaultView = !isset($_GET['category']) && !isset($_GET['search']) && !isset($_GET['month']) && !isset($_GET['payment_status']) && !isset($_GET['operator_stage']) && !isset($_GET['year']) && !isset($_GET['passport_status']);

if ($displayRole === 'Editor') {
    // Editor sees only their assigned calls
    $whereClauses[] = "inquiries.assigned_to = ?";
    $params[] = $effectiveUserId;
    
    if ($isDefaultView) {
        $whereClauses[] = "(DATE(inquiries.created_at) = CURDATE() OR DATE(inquiries.updated_at) = CURDATE())";
    }
} elseif ($displayRole === 'Admin') {
    if ($isDefaultView) {
        $whereClauses[] = "(DATE(inquiries.created_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY) OR DATE(inquiries.updated_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY))";
    }
} elseif ($displayRole === 'Finance') {
    $whereClauses[] = "inquiries.status = 'Confirm'";
} elseif ($displayRole === 'Operator') {
    $whereClauses[] = "inquiries.status = 'Confirm'";
    // Actual Operators only see their assignedConfirmed list
    // Admin viewing as Operator sees all confirmed (for oversight)
    if ($userRole === 'Operator') {
        $whereClauses[] = "inquiries.operator_id = ?";
        $params[] = $userId;
    }
}

if ($category) {
    if ($category === 'WhatsApp') {
        $whereClauses[] = "inquiries.status IN ('No Answer', 'Not Reachable')";
    } elseif ($category === 'Active') {
        $whereClauses[] = "inquiries.status IN ('New Calls', 'In Progress', 'Special Call')";
    } elseif ($category === 'Confirmed') {
        $whereClauses[] = "inquiries.status = 'Confirm'";
    } elseif ($category === 'Complete') {
        $whereClauses[] = "opd.operator_stage = 'Complete'";
    } elseif ($category === 'Cancel') {
        $whereClauses[] = "inquiries.status = 'Cancel'";
    } elseif ($category === 'RecentUpdates') {
        $whereClauses[] = "(DATE(inquiries.created_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY) OR DATE(inquiries.updated_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY) OR DATE(opd.updated_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY))";
    } elseif (in_array($category, ['Platinum', 'Gold', 'Silver'])) {
        $whereClauses[] = "inquiries.customer_category = ?";
        $params[] = $category;
    } else {
        $whereClauses[] = "inquiries.status = ?";
        $params[] = $category;
    }
}

if ($operator_stage) {
    if ($operator_stage === 'Confirm') {
        $whereClauses[] = "(inquiries.status = 'Confirm' OR opd.operator_stage IS NULL)";
    } else {
        $whereClauses[] = "opd.operator_stage = ?";
        $params[] = $operator_stage;
    }
}

if ($month) {
    $whereClauses[] = "inquiries.month = ?";
    $params[] = $month;
}

if ($payment_status) {
    if ($payment_status === 'Full') {
        $whereClauses[] = "opd.is_balance_paid = 1";
    } elseif ($payment_status === 'Advance') {
        $whereClauses[] = "(opd.is_balance_paid = 0 OR opd.is_balance_paid IS NULL) AND inquiries.advanced_payment > 0";
    } elseif ($payment_status === 'Unpaid') {
        $whereClauses[] = "(opd.is_balance_paid = 0 OR opd.is_balance_paid IS NULL) AND (inquiries.advanced_payment = 0 OR inquiries.advanced_payment IS NULL)";
    }
}

if ($passport_status_filter) {
    if ($passport_status_filter === 'No Passport') {
        $whereClauses[] = "(opd.passport_status IS NULL OR opd.passport_status NOT IN ('In Progress','Completed'))";
    } else {
        $whereClauses[] = "opd.passport_status = ?";
        $params[] = $passport_status_filter;
    }
}

if ($search) {
    $whereClauses[] = "(inquiries.id LIKE ? OR inquiries.customer_name LIKE ? OR inquiries.phone_number LIKE ? OR inquiries.location_name LIKE ? OR DATE_FORMAT(inquiries.created_at, '%Y-%m-%d') LIKE ?)";
    $searchTerm = "%$search%";
	$params[] = $searchTerm;
    $params[] = $searchTerm;
    $params[] = $searchTerm;
    $params[] = $searchTerm;
    $params[] = $searchTerm;
}

$whereSql = '';
if (count($whereClauses) > 0) {
    $whereSql = "WHERE " . implode(' AND ', $whereClauses);
}

// Pagination
$perPage = 50;
$page = max(1, (int)($_GET['page'] ?? 1));
$offset = ($page - 1) * $perPage;

// Count total records for pagination
$countStmt = $pdo->prepare("SELECT COUNT(*) 
    FROM inquiries 
    LEFT JOIN users ON inquiries.assigned_to = users.id 
    LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id
    $whereSql");
$countStmt->execute($params);
$totalRecords = (int)$countStmt->fetchColumn();
$totalPages = max(1, (int)ceil($totalRecords / $perPage));
$page = min($page, $totalPages);
$offset = ($page - 1) * $perPage;

// Fetch inquiries (paginated) - also fetch payment fields
// LIMIT and OFFSET must be cast to int and embedded directly — PDO binds them as strings which MariaDB rejects
$orderBy = "inquiries.updated_at DESC";
if (!empty($category) || !empty($operator_stage) || !empty($search) || !empty($month) || !empty($payment_status) || $displayRole === 'Operator') {
    $orderBy = "inquiries.id DESC";
}
$stmt = $pdo->prepare("SELECT inquiries.*, 
    opd.operator_stage, opd.is_balance_paid, opd.passport_status,
    users.username as assigned_user, users.full_name as assigned_full_name 
    FROM inquiries 
    LEFT JOIN users ON inquiries.assigned_to = users.id 
    LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id
    $whereSql 
    ORDER BY $orderBy
    LIMIT " . (int)$perPage . " OFFSET " . (int)$offset);
$stmt->execute($params);
$inquiries = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Fetch stats
$statClauses = [];
if ($displayRole === 'Editor') {
    $statClauses[] = "inquiries.assigned_to = " . (int)$effectiveUserId;
} elseif ($displayRole === 'Finance') {
    $statClauses[] = "inquiries.status = 'Confirm'";
} elseif ($displayRole === 'Operator') {
    $statClauses[] = "inquiries.status = 'Confirm'";
    if ($userRole === 'Operator') {
        $statClauses[] = "inquiries.operator_id = " . (int)$userId;
    }
}

if ($selectedYear === 'current') {
    $statClauses[] = "inquiries.year = " . (int)date('Y');
} elseif ($selectedYear !== 'all') {
    $statClauses[] = "inquiries.year = " . (int)$selectedYear;
}
$statWhere = count($statClauses) > 0 ? "WHERE " . implode(" AND ", $statClauses) : "";

$statStmt = $pdo->query("SELECT inquiries.status, COUNT(*) as count FROM inquiries LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id $statWhere GROUP BY inquiries.status");
$statusCounts = $statStmt->fetchAll(PDO::FETCH_KEY_PAIR);

// Operator specific stats
$operatorStats = [];
if ($displayRole === 'Operator') {
    $opWhereClauses = ["inquiries.status = 'Confirm'"];
    if ($userRole === 'Operator') {
        $opWhereClauses[] = "inquiries.operator_id = " . (int)$userId;
    }
    
    if ($selectedYear === 'current') {
        $opWhereClauses[] = "inquiries.year = " . (int)date('Y');
    } elseif ($selectedYear !== 'all') {
        $opWhereClauses[] = "inquiries.year = " . (int)$selectedYear;
    }
    
    $opWhereSql = "WHERE " . implode(" AND ", $opWhereClauses);
    $opStmt = $pdo->query("SELECT IFNULL(opd.operator_stage, 'Confirm') as stage, COUNT(*) as count 
                           FROM inquiries 
                           LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id 
                           $opWhereSql
                           GROUP BY stage");
    $operatorStats = $opStmt->fetchAll(PDO::FETCH_KEY_PAIR);
}

// Passport status stats for Operator view
$passportStats = ['In Progress' => 0, 'No Passport' => 0, 'Completed' => 0];
if ($displayRole === 'Operator') {
    $ppWhereClauses = ["inquiries.status = 'Confirm'"];
    if ($userRole === 'Operator') {
        $ppWhereClauses[] = "inquiries.operator_id = " . (int)$userId;
    }
    if ($selectedYear === 'current') {
        $ppWhereClauses[] = "inquiries.year = " . (int)date('Y');
    } elseif ($selectedYear !== 'all') {
        $ppWhereClauses[] = "inquiries.year = " . (int)$selectedYear;
    }
    $ppWhereSql = "WHERE " . implode(" AND ", $ppWhereClauses);
    $ppStmt = $pdo->query("SELECT 
        IFNULL(opd.passport_status, 'No Passport') as ps, COUNT(*) as count
        FROM inquiries
        LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id
        $ppWhereSql
        GROUP BY ps");
    foreach ($ppStmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
        $key = $row['ps'];
        if ($key === 'In Progress')  $passportStats['In Progress']  = (int)$row['count'];
        elseif ($key === 'Completed') $passportStats['Completed']  = (int)$row['count'];
        else                          $passportStats['No Passport'] += (int)$row['count'];
    }
}

$monthlyConfirmedStats = [];
if ($displayRole === 'Operator' || $displayRole === 'Admin' || $displayRole === 'Editor' || $displayRole === 'Finance') {
    $mq = "SELECT month, COUNT(*) as count FROM inquiries WHERE status = 'Confirm' AND month IS NOT NULL AND month != ''";
    if ($userRole === 'Operator') {
        $mq .= " AND operator_id = " . (int)$userId;
    } elseif ($displayRole === 'Editor') {
        $mq .= " AND assigned_to = " . (int)$effectiveUserId;
    }
    if ($selectedYear === 'current') {
        $mq .= " AND year = " . (int)date('Y');
    } elseif ($selectedYear !== 'all') {
        $mq .= " AND year = " . (int)$selectedYear;
    }
    $mq .= " GROUP BY month";
    $monthStmt = $pdo->query($mq);
    $monthlyConfirmedStats = $monthStmt->fetchAll(PDO::FETCH_KEY_PAIR);
}

// Finance: amount received per month (keyed by month name e.g. "January")
$monthlyAmountStats = [];
if ($displayRole === 'Finance') {
    $maStmt = $pdo->query("SELECT MONTHNAME(i.payment_date) as mname,
        SUM(IF(opd.is_balance_paid = 1, i.total_payment - i.discount, i.advanced_payment)) as total
        FROM inquiries i
        LEFT JOIN operator_process_details opd ON i.id = opd.inquiry_id
        WHERE i.status = 'Confirm' AND i.payment_date IS NOT NULL
        " . ($selectedYear === 'current' ? "AND YEAR(i.payment_date) = " . (int)date('Y') : ($selectedYear !== 'all' ? "AND YEAR(i.payment_date) = " . (int)$selectedYear : "")) . "
        GROUP BY mname");
    foreach ($maStmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
        $monthlyAmountStats[$row['mname']] = (float)$row['total'];
    }
}

// Finance: expense per month (keyed by month name)
$monthlyExpenseStats = [];
if ($displayRole === 'Finance') {
    $meStmt = $pdo->query("SELECT MONTHNAME(expense_date) as mname, SUM(amount) as total
        FROM company_expenses
        WHERE 1=1
        " . ($selectedYear === 'current' ? "AND YEAR(expense_date) = " . (int)date('Y') : ($selectedYear !== 'all' ? "AND YEAR(expense_date) = " . (int)$selectedYear : "")) . "
        GROUP BY mname");
    foreach ($meStmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
        $monthlyExpenseStats[$row['mname']] = (float)$row['total'];
    }
}

// Finance: selected-month detail (revenue, expenses, net) when a month filter is active
$selectedMonthRevenue = 0;
$selectedMonthExpenses = 0;
if ($displayRole === 'Finance' && $month) {
    $smrStmt = $pdo->prepare("SELECT SUM(IF(opd.is_balance_paid = 1, i.total_payment - i.discount, i.advanced_payment)) as total
        FROM inquiries i
        LEFT JOIN operator_process_details opd ON i.id = opd.inquiry_id
        WHERE i.status = 'Confirm' AND i.payment_date IS NOT NULL
        AND MONTHNAME(i.payment_date) = ?
        " . ($selectedYear === 'current' ? "AND YEAR(i.payment_date) = " . (int)date('Y') : ($selectedYear !== 'all' ? "AND YEAR(i.payment_date) = " . (int)$selectedYear : "")));
    $smrStmt->execute([$month]);
    $selectedMonthRevenue = (float)$smrStmt->fetchColumn() ?: 0;

    $smeStmt = $pdo->prepare("SELECT SUM(amount) FROM company_expenses
        WHERE MONTHNAME(expense_date) = ?
        " . ($selectedYear === 'current' ? "AND YEAR(expense_date) = " . (int)date('Y') : ($selectedYear !== 'all' ? "AND YEAR(expense_date) = " . (int)$selectedYear : "")));
    $smeStmt->execute([$month]);
    $selectedMonthExpenses = (float)$smeStmt->fetchColumn() ?: 0;
}

// Overall totals for Finance
$overallRevenue = 0;
$overallExpenses = 0;
if ($displayRole === 'Finance') {
    $ovrStmt = $pdo->query("SELECT SUM(IF(opd.is_balance_paid = 1, i.total_payment - i.discount, i.advanced_payment)) as total
        FROM inquiries i
        LEFT JOIN operator_process_details opd ON i.id = opd.inquiry_id
        WHERE i.status = 'Confirm' AND i.payment_date IS NOT NULL
        " . ($selectedYear === 'current' ? "AND YEAR(i.payment_date) = " . (int)date('Y') : ($selectedYear !== 'all' ? "AND YEAR(i.payment_date) = " . (int)$selectedYear : "")));
    $overallRevenue = (float)$ovrStmt->fetchColumn() ?: 0;

    $oveStmt = $pdo->query("SELECT SUM(amount) FROM company_expenses
        WHERE 1=1
        " . ($selectedYear === 'current' ? "AND YEAR(expense_date) = " . (int)date('Y') : ($selectedYear !== 'all' ? "AND YEAR(expense_date) = " . (int)$selectedYear : "")));
    $overallExpenses = (float)$oveStmt->fetchColumn() ?: 0;
}

// Fetch complete count (operator_stage = 'Complete' in operator_process_details)
$completeCountClause = " WHERE opd.operator_stage = 'Complete'";
if ($displayRole === 'Editor') {
    $completeCountClause .= " AND i.assigned_to = " . (int)$effectiveUserId;
} elseif ($userRole === 'Operator') {
    $completeCountClause .= " AND i.operator_id = " . (int)$userId;
}
if ($selectedYear === 'current') {
    $completeCountClause .= " AND i.year = " . (int)date('Y');
} elseif ($selectedYear !== 'all') {
    $completeCountClause .= " AND i.year = " . (int)$selectedYear;
}
$completeStmt = $pdo->query("SELECT COUNT(*) FROM inquiries i INNER JOIN operator_process_details opd ON i.id = opd.inquiry_id" . $completeCountClause);
$completeCount = (int)$completeStmt->fetchColumn();

$recentWhere = $statWhere ? $statWhere . " AND " : "WHERE ";
$recentWhere .= "(DATE(inquiries.created_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY) OR DATE(inquiries.updated_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY) OR DATE(opd.updated_at) >= DATE_SUB(CURDATE(), INTERVAL 2 DAY))";
$recentStmt = $pdo->query("SELECT COUNT(*) FROM inquiries LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id $recentWhere");
$recentUpdatesCount = (int)$recentStmt->fetchColumn();

$stats = [
    'total' => array_sum($statusCounts ?: []),
    'recent_updates' => $recentUpdatesCount,
    'new_calls' => ($statusCounts['New Calls'] ?? 0),
    'no_answer' => ($statusCounts['No Answer'] ?? 0),
    'unreachable' => ($statusCounts['Not Reachable'] ?? 0),
    'in_progress' => ($statusCounts['In Progress'] ?? 0),
    'special_call' => ($statusCounts['Special Call'] ?? 0),
    'confirm' => max(0, ($statusCounts['Confirm'] ?? 0) - ($userRole === 'Operator' || $displayRole === 'Operator' ? ($operatorStats['Complete'] ?? 0) : $completeCount)),
    'complete' => ($userRole === 'Operator' || $displayRole === 'Operator') ? ($operatorStats['Complete'] ?? 0) : $completeCount,
    'cancel' => ($statusCounts['Cancel'] ?? 0),
];

$monthColors = [
    'January' => '#3498db', 'February' => '#9b59b6', 'March' => '#e67e22', 'April' => '#27ae60',
    'May' => '#e74c3c', 'June' => '#1abc9c', 'July' => '#f1c40f', 'August' => '#34495e',
    'September' => '#d35400', 'October' => '#7f8c8d', 'November' => '#2980b9', 'December' => '#2c3e50'
];

// Finance specific stats (Amounts received)
$dailyTotals = [];
$monthlyTotals = [];
if ($displayRole === 'Finance') {
    $finYearCondition = "";
    if ($selectedYear === 'current') {
        $finYearCondition = " AND YEAR(i.payment_date) = " . (int)date('Y');
    } elseif ($selectedYear !== 'all') {
        $finYearCondition = " AND YEAR(i.payment_date) = " . (int)$selectedYear;
    }

    $dailyStmt = $pdo->query("SELECT i.payment_date as p_date, SUM(IF(opd.is_balance_paid = 1, i.total_payment - i.discount, i.advanced_payment)) as total 
                              FROM inquiries i
                              LEFT JOIN operator_process_details opd ON i.id = opd.inquiry_id
                              WHERE i.status = 'Confirm' AND i.payment_date IS NOT NULL $finYearCondition
                              GROUP BY i.payment_date 
                              ORDER BY i.payment_date DESC LIMIT 10");
    $dailyTotals = $dailyStmt->fetchAll(PDO::FETCH_ASSOC);

    $monthlyStmt = $pdo->query("SELECT DATE_FORMAT(i.payment_date, '%Y-%m') as p_month, SUM(IF(opd.is_balance_paid = 1, i.total_payment - i.discount, i.advanced_payment)) as total 
                                FROM inquiries i
                                LEFT JOIN operator_process_details opd ON i.id = opd.inquiry_id
                                WHERE i.status = 'Confirm' AND i.payment_date IS NOT NULL $finYearCondition
                                GROUP BY p_month 
                                ORDER BY p_month DESC LIMIT 12");
    $monthlyTotals = $monthlyStmt->fetchAll(PDO::FETCH_ASSOC);
}

// Fetch Payment Status stats for the confirmed view
$payStats = ['Full' => 0, 'Advance' => 0, 'Unpaid' => 0];
if ($displayRole === 'Operator' || $displayRole === 'Admin' || $displayRole === 'Editor') {
    $payWhereClauses = [];
    $payParams = [];
    
    // Base filters (Role/Year)
    if ($displayRole === 'Editor') {
        $payWhereClauses[] = "inquiries.assigned_to = ?";
        $payParams[] = $effectiveUserId;
    } elseif ($displayRole === 'Operator') {
        if ($userRole === 'Operator') {
            $payWhereClauses[] = "inquiries.operator_id = ?";
            $payParams[] = $userId;
        }
    }
    
    if ($selectedYear === 'current') {
        $payWhereClauses[] = "inquiries.year = ?";
        $payParams[] = (int)date('Y');
    } elseif ($selectedYear !== 'all') {
        $payWhereClauses[] = "inquiries.year = ?";
        $payParams[] = (int)$selectedYear;
    }
    
    if ($month) {
        $payWhereClauses[] = "inquiries.month = ?";
        $payParams[] = $month;
    }
    
    $payWhereClauses[] = "inquiries.status = 'Confirm'";
    
    $payWhereSql = "WHERE " . implode(' AND ', $payWhereClauses);
    $payQuery = "SELECT 
        SUM(CASE WHEN opd.is_balance_paid = 1 THEN 1 ELSE 0 END) as full_paid,
        SUM(CASE WHEN (opd.is_balance_paid = 0 OR opd.is_balance_paid IS NULL) AND inquiries.advanced_payment > 0 THEN 1 ELSE 0 END) as advance_paid,
        SUM(CASE WHEN (opd.is_balance_paid = 0 OR opd.is_balance_paid IS NULL) AND (inquiries.advanced_payment = 0 OR inquiries.advanced_payment IS NULL) THEN 1 ELSE 0 END) as unpaid
        FROM inquiries 
        LEFT JOIN operator_process_details opd ON inquiries.id = opd.inquiry_id
        $payWhereSql";
    
    $payStmt = $pdo->prepare($payQuery);
    $payStmt->execute($payParams);
    $payRow = $payStmt->fetch(PDO::FETCH_ASSOC);
    if ($payRow) {
        $payStats['Full'] = (int)$payRow['full_paid'];
        $payStats['Advance'] = (int)$payRow['advance_paid'];
        $payStats['Unpaid'] = (int)$payRow['unpaid'];
    }
}

// New Arrivals (Operator view): clients registered via registered_create.php in the last 7 days
$newArrivalsCount = 0;
$newArrivals = [];
if ($displayRole === 'Operator') {
    try {
        $newArrivalsCount = (int)$pdo->query("SELECT COUNT(*) FROM registered_clients WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)")->fetchColumn();
        $newArrivals = $pdo->query("SELECT rc.*, u.username, u.full_name,
                inq.id AS inquiry_id, inq.status AS inq_status, inq.advanced_payment, inq.id_card_number,
                opd.operator_stage, opd.is_balance_paid, opd.passport_status
            FROM registered_clients rc
            LEFT JOIN users u ON rc.registered_by = u.id
            LEFT JOIN inquiries inq ON inq.id = (SELECT MAX(i2.id) FROM inquiries i2 WHERE i2.phone_number = rc.phone_number)
            LEFT JOIN operator_process_details opd ON opd.inquiry_id = inq.id
            WHERE rc.created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)
            ORDER BY rc.created_at DESC
            LIMIT 100")->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        // Table not created yet (no one has opened Registered Clients) - show 0
        $newArrivalsCount = 0;
        $newArrivals = [];
    }
}

function getBadgeClass($status) {
    switch($status) {
        case 'No Answer':
        case 'Not Reachable':
            return 'badge-missed';
        case 'New Calls': return 'badge-new';
        case 'In Progress': return 'badge-progress';
        case 'Special Call': return 'badge-special';
        case 'Confirm': return 'badge-booked';
        case 'Complete': return 'badge-complete';
        case 'Cancel': return 'badge-cancel';
        default: return 'badge-new';
    }
}

function managementAssignmentBadge(array $row): array {
    if (empty($row['operator_id'])) {
        return ['Unassigned', 'management-unassigned'];
    }
    if (($row['operator_stage'] ?? '') === 'Complete') {
        return ['Completed', 'management-complete'];
    }
    if (empty($row['management_acknowledged_at'])) {
        return ['Newly Assigned', 'management-new'];
    }
    return ['Accepted / In Progress', 'management-accepted'];
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Thinulaka Tours | Dashboard</title>
    <link rel="stylesheet" href="style.css?v=<?= time() ?>">
    <link rel="stylesheet" href="dashboard.css?v=<?= time() ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        html { scroll-behavior: smooth; }
        .badge-complete { background-color: #145a32; color: #fff; }
        .badge-cancel   { background-color: #7b241c; color: #fff; }
        .stat-card-complete { border-bottom: 4px solid #145a32 !important; }
        .stat-card-complete .stat-value { color: #145a32; }
        .stat-card-cancel { border-bottom: 4px solid #c0392b !important; }
        .stat-card-cancel .stat-value { color: #c0392b; }

        /* Payment status mini-badges */
        .pay-badge {
            display: inline-block;
            font-size: 0.85em; /* Increased from 0.78em */
            font-weight: 800;
            padding: 4px 10px; /* Increased from 3px 8px */
            border-radius: 20px;
            white-space: nowrap;
            line-height: 1.6;
            box-shadow: 0 1px 3px rgba(0,0,0,0.1);
        }
        .pay-badge-full    { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        .pay-badge-advance { background: #fff3cd; color: #856404; border: 1px solid #ffeeba; }
        .pay-badge-unpaid  { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }

        /* Compact table — fits all columns without horizontal scroll */
        .main-table {
            width: 100%;
            min-width: 1000px; /* Force minimum width to prevent column cramping on mobile */
            table-layout: fixed;
            border-collapse: collapse;
            font-size: 1.05em;
        }
        .main-table th {
            padding: 12px 8px;
            vertical-align: middle;
            font-size: 0.9em; /* Increased from 0.85em */
            text-transform: uppercase;
            letter-spacing: 0.4px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .main-table td {
            padding: 12px 8px; /* Increased padding */
            vertical-align: middle;
            overflow: visible; /* Changed from hidden to show ID fully */
            text-overflow: clip;
            white-space: nowrap;
        }
        .main-table tbody tr:hover { background: rgba(255,255,255,0.06); }
        .main-table tbody tr.management-new-row { background: #f5f3ff; }
        .main-table tbody tr.management-new-row:hover { background: #ede9fe; }

        /* Column widths — adjusted for better fit */
        .main-table .col-id       { width: 75px; text-align: center; } 
        .main-table .col-payment  { width: 110px; text-align: center; }
        .main-table .col-details  { width: 220px; } 
        .main-table .col-name     { width: 15%; min-width: 150px; }
        .main-table .col-phone    { width: 120px; }
        .main-table .col-address  { width: 15%; min-width: 150px; }
        .main-table .col-date     { width: 100px; text-align: center; }
        .main-table .col-status   { width: 110px; text-align: center; }
        .main-table .col-management { width: 118px; text-align: center; }
        .main-table .col-assigned { width: 12%; min-width: 120px; }
        .main-table .col-actions  { width: 100px; }

        /* Allow name/address/assigned/details/status to wrap */
        .main-table .col-name,
        .main-table .col-address,
        .main-table .col-assigned,
        .main-table .col-details,
        .main-table .col-status,
        .main-table .col-management {
            white-space: normal;
            word-break: break-word;
            line-height: 1.3;
        }
        .main-table .col-details {
            font-size: 0.88em;
            color: #475569;
        }
        /* Compact action buttons */
        .main-table .col-actions { white-space: normal; }
        .btn-xs {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            padding: 4px 10px;
            font-size: 0.74em;
            border-radius: 6px;
            text-decoration: none;
            font-weight: 700;
            white-space: nowrap;
            border: 1px solid transparent;
            cursor: pointer;
            line-height: 1.25;
            transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
            box-shadow: 0 1px 2px rgba(0,0,0,0.05);
        }
        .btn-xs:hover {
            transform: translateY(-1.5px);
            box-shadow: 0 4px 8px rgba(0,0,0,0.15);
            filter: brightness(1.05);
        }
        .btn-xs:active {
            transform: translateY(0);
        }
        .btn-xs-edit     { background: #ffffff; color: #334155; border-color: #cbd5e1; }
        .btn-xs-edit:hover { background: #f1f5f9; border-color: #94a3b8; color: #1e293b; }
        .btn-xs-process  { background: #61219F; color: #fff; border-color: #4e1a80; }
        .btn-xs-process:hover { background: #4c1980; }
        .btn-xs-complete { background: #1a7a4a; color: #fff; border-color: #145a32; }
        .btn-xs-complete:hover { background: #145a32; }
        .btn-xs-invoice  { background: #1abc9c; color: #fff; border-color: #16a085; }
        .btn-xs-invoice:hover { background: #16a085; }
        .btn-xs-invoice-full { background: #2ecc71; color: #fff; border-color: #27ae60; }
        .btn-xs-invoice-full:hover { background: #27ae60; }
        .btn-xs-print    { background: #e67e22; color: #fff; border-color: #d35400; }
        .btn-xs-print:hover { background: #d35400; }
        .btn-xs-whatsapp { background: #25D366; color: #fff; border-color: #1ebe57; }
        .btn-xs-whatsapp:hover { background: #1ebe57; }

        /* Pagination */
        .pagination-wrapper {
            margin-top: 24px;
            padding: 16px 20px;
            background: rgba(0,0,0,0.25);
            border-radius: 10px;
            border: 1px solid rgba(255,255,255,0.15);
        }
        .pagination-info {
            text-align: center;
            font-size: 0.85em;
            color: #ccc;
            margin-bottom: 12px;
            font-weight: 500;
        }
        .pagination {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 5px;
            flex-wrap: wrap;
        }
        .pagination a,
        .pagination span {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 38px;
            height: 38px;
            padding: 0 12px;
            border-radius: 8px;
            font-size: 0.9em;
            font-weight: 700;
            text-decoration: none;
            border: 2px solid rgba(255,255,255,0.25);
            transition: all 0.15s;
            letter-spacing: 0.3px;
        }
        .pagination a {
            background: rgba(255,255,255,0.12);
            color: #fff;
        }
        .pagination a:hover {
            background: #2980b9;
            border-color: #3498db;
            color: #fff;
            transform: translateY(-1px);
            box-shadow: 0 3px 10px rgba(52,152,219,0.4);
        }
        .pagination .pg-current {
            background: #3498db;
            color: #fff;
            border-color: #2980b9;
            cursor: default;
            box-shadow: 0 2px 8px rgba(52,152,219,0.5);
        }
        .pagination .pg-disabled {
            background: rgba(255,255,255,0.04);
            color: rgba(255,255,255,0.2);
            border-color: rgba(255,255,255,0.08);
            cursor: not-allowed;
        }
        .pagination .pg-ellipsis {
            background: transparent;
            border-color: transparent;
            color: rgba(255,255,255,0.4);
            cursor: default;
            min-width: 20px;
        }
        /* Custom Modal for ID Number */
        .id-modal-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.6);
            backdrop-filter: blur(8px);
            display: none;
            align-items: center;
            justify-content: center;
            z-index: 9999;
            animation: fadeIn 0.3s ease;
        }
        .id-modal {
            background: white;
            padding: 30px;
            border-radius: 20px;
            width: 90%;
            max-width: 400px;
            box-shadow: 0 20px 50px rgba(0,0,0,0.3);
            text-align: center;
            transform: scale(0.9);
            animation: slideUp 0.3s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275);
        }
        .id-modal h3 {
            margin-bottom: 20px;
            color: #61219F;
            font-size: 1.5em;
        }
        .id-modal input {
            width: 100%;
            padding: 15px;
            font-size: 1.8em;
            text-align: center;
            border: 2px solid #eee;
            border-radius: 12px;
            margin-bottom: 25px;
            font-weight: 900;
            color: #2c3e50;
            transition: border-color 0.3s;
        }
        .id-modal input:focus {
            outline: none;
            border-color: #61219F;
        }
        .id-modal-btns {
            display: flex;
            gap: 15px;
        }
        .id-modal-btns button {
            flex: 1;
            padding: 12px;
            border-radius: 10px;
            border: none;
            font-weight: bold;
            cursor: pointer;
            transition: transform 0.2s, opacity 0.2s;
        }
        .id-modal-btns .btn-cancel {
            background: #f1f2f6;
            color: #7f8c8d;
        }
        .id-modal-btns .btn-print {
            background: linear-gradient(135deg, #61219F, #8e44ad);
            color: white;
            box-shadow: 0 4px 15px rgba(97, 33, 159, 0.3);
        }
        .id-modal-btns button:active {
            transform: scale(0.95);
        }

        @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
        @keyframes slideUp { from { opacity: 0; transform: translateY(30px) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } }
    
/* THINULAKA V7.5 SIDEBAR ADD-ON - scoped to dashboard navigation */
.dash-sidebar .dash-brand.thinulaka-v75-brand {display:flex; flex-direction:column; align-items:center; text-align:center; padding:14px 12px 20px; gap:5px;}
.dash-sidebar .thinulaka-v75-brand img.thinulaka-v75-logo {display:block; width:min(100%,260px); max-width:260px; height:auto; max-height:190px; object-fit:contain; background:white; border-radius:10px; padding:3px;}
.dash-sidebar .thinulaka-v75-brand span {display:block;}
.dash-sidebar .thinulaka-v75-brand small {display:block; color:#c4b5fd;}
.dash-sidebar .thinulaka-v75-staff {margin-top:10px;}
.dash-sidebar .thinulaka-v75-staff > summary {list-style:none; cursor:pointer;}
.dash-sidebar .thinulaka-v75-staff > summary::-webkit-details-marker {display:none;}
.dash-sidebar .thinulaka-v75-staff .thinulaka-v75-sky {background:#7dd3fc!important;color:#101010!important; font-weight:800;}
.dash-sidebar .thinulaka-v75-staff .thinulaka-v75-sky i {color:#101010!important;}
.dash-sidebar .thinulaka-v75-sub {display:grid; gap:7px; padding:9px 4px 4px 12px;}
.dash-sidebar .thinulaka-v75-sub a {display:flex; align-items:center; gap:8px; border-radius:10px; padding:11px 10px; color:white!important; font-size:12px; line-height:1.35; text-transform:uppercase; font-weight:750; text-decoration:none; overflow-wrap:anywhere;}
.dash-sidebar .thinulaka-v75-sub a:hover,.dash-sidebar .thinulaka-v75-sub a:focus-visible {outline:2px solid #ddd6fe; outline-offset:1px; filter:brightness(1.12);}
.dash-sidebar .thinulaka-v75-sub a:nth-child(1){background:#3b1a72;}
.dash-sidebar .thinulaka-v75-sub a:nth-child(2){background:#48218a;}
.dash-sidebar .thinulaka-v75-sub a:nth-child(3){background:#5526a0;}
.dash-sidebar .thinulaka-v75-sub a:nth-child(4){background:#612fb2;}
.dash-sidebar .thinulaka-v75-sub a:nth-child(5){background:#6b3fc1;}
.dash-sidebar .thinulaka-v75-sub a:nth-child(6){background:#7650c8;}
.dash-sidebar .thinulaka-v75-sub a:nth-child(7){background:#8160cc;}
.dash-sidebar .dash-nav-link.thinulaka-v75-profile {background:#f97316!important;color:white!important;font-weight:800;}
.dash-sidebar .dash-nav-link.thinulaka-v75-attendance {background:#dc2626!important;color:white!important;font-weight:800;}
.dash-sidebar .dash-nav-link.thinulaka-v75-finance {background:#047857!important;color:white!important;font-weight:800;}
.dash-sidebar .dash-nav-link.nav-inquiries {background:#1e40af!important;color:white!important;}
@media(max-width:600px){.dash-sidebar .thinulaka-v75-sub a {font-size:11px;}}

    </style>
</head>
<body class="dashboard-page">

    <div class="dash-shell">
        <aside class="dash-sidebar" id="dash-sidebar">
            <a class="dash-brand thinulaka-v75-brand" href="index.php<?= $viewAsOperator ? '?view_as=Operator' : '' ?>">
                <img src="thinulaka-business-group-logo.png" alt="THINULAKA BUSINESS GROUP - three pyramids and gold T" class="thinulaka-v75-logo">
                <span><strong>Thinulaka Tours</strong><small>Management Dashboard</small></span>
            </a>
            <nav class="dash-nav">
                <div class="dash-nav-label">Overview</div>
                <a class="dash-nav-link nav-dash is-active" href="index.php<?= $viewAsOperator ? '?view_as=Operator' : '' ?>"><i class="fa-solid fa-gauge-high"></i> Dashboard</a>
                <?php if($isFullAdmin && empty($viewEditorId)): ?>
                    <?php if($viewAsOperator): ?>
                        <a class="dash-nav-link nav-operator" href="index.php?view_as=Admin"><i class="fa-solid fa-user-tie"></i> Admin View</a>
                    <?php else: ?>
                        <a class="dash-nav-link nav-operator" href="index.php?view_as=Operator"><i class="fa-solid fa-headset"></i> Management View</a>
                    <?php endif; ?>
                <?php endif; ?>
                <?php
                $showCompleteNav = ($userRole === 'Admin' || $userRole === 'Editor');
                $showAssignEditors = ($actualUserRole === 'Admin' && empty($viewEditorId) && !$viewAsOperator);
                $showAssignOperators = (($isFullAdmin || $isOperatorAdmin) && empty($viewEditorId));
                ?>
                <?php if($showCompleteNav || $showAssignEditors || $showAssignOperators): ?>
                <details class="dash-nav-details" open>
                    <summary class="dash-nav-link nav-inquiries"><i class="fa-solid fa-address-book"></i> Inquiries <i class="fa-solid fa-chevron-down dash-nav-chevron" aria-hidden="true"></i></summary>
                    <div class="dash-nav-sub">
                        <?php if($showCompleteNav): ?>
                            <a class="dash-nav-link nav-complete" href="index.php?category=Complete&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" title="View Complete"><i class="fa-solid fa-circle-check"></i> Complete <span class="dash-count"><?= $viewAsOperator ? ($operatorStats['Complete'] ?? $stats['complete']) : $stats['complete'] ?></span></a>
                        <?php endif; ?>
                        <?php if($showAssignOperators): ?>
                            <a class="dash-nav-link nav-assign-operators" href="assign_operator.php"><i class="fa-solid fa-user-gear"></i> Assign Operators</a>
                        <?php endif; ?>
                        <?php if($showAssignEditors): ?>
                            <a class="dash-nav-link nav-assign-editors" href="assign.php"><i class="fa-solid fa-users"></i> Assign Editors</a>
                        <?php endif; ?>
                    </div>
                </details>
                <?php else: ?>
                <a class="dash-nav-link nav-inquiries" href="#records-section"><i class="fa-solid fa-address-book"></i> Inquiries</a>
                <?php endif; ?>

                <?php if($displayRole === 'Editor'): ?>
                    <div class="dash-nav-label">Clients</div>
                    <a class="dash-nav-link" href="create.php"><i class="fa-solid fa-plus"></i> Manual Add</a>
                    <a class="dash-nav-link" href="resource_persons.php"><i class="fa-solid fa-circle-info"></i> Information</a>
                <?php endif; ?>

                <?php if($actualUserRole === 'Admin' && !empty($viewEditorId)): ?>
                    <div class="dash-nav-label">View</div>
                    <a class="dash-nav-link nav-operator" href="index.php?view_as=Admin"><i class="fa-solid fa-user-tie"></i> Admin View</a>
                <?php endif; ?>

                <?php if($displayRole === 'Operator'): ?>
                    <div class="dash-nav-label">Operators</div>
                    <a class="dash-nav-link" href="passport_manage.php"><i class="fa-solid fa-passport"></i> Passport Management</a>
                    <a class="dash-nav-link" href="member_groups.php"><i class="fa-solid fa-people-group"></i> Member Groups</a>
                    <a class="dash-nav-link" href="daily_income_upload.php"><i class="fa-solid fa-calendar-day"></i> Daily Income Upload</a>
                <?php endif; ?>

                <div class="dash-nav-label">Staff System</div>
                <?php if ($actualUserRole === 'Admin' && empty($viewEditorId) && !$viewAsOperator): ?>
                <details class="dash-nav-details thinulaka-v75-staff" open>
                    <summary class="dash-nav-link thinulaka-v75-sky"><i class="fa-solid fa-users"></i> STAFF MANAGEMENT <i class="fa-solid fa-chevron-down dash-nav-chevron" aria-hidden="true"></i></summary>
                    <div class="thinulaka-v75-sub">
                        <a href="thinulaka-employee-cv/dashboard.php"><i class="fa-solid fa-chevron-right"></i> EMPLOYEE DIRECTORY</a>
                        <a href="thinulaka-employee-cv/appointments.php"><i class="fa-solid fa-chevron-right"></i> APPOINTMENT MANAGEMENT</a>
                        <a href="thinulaka-employee-cv/organization.php"><i class="fa-solid fa-chevron-right"></i> ORGANIZATIONAL STRUCTURE</a>
                        <a href="thinulaka-employee-cv/attendance-admin.php"><i class="fa-solid fa-chevron-right"></i> TASK & KPI MANAGEMENT</a>
                        <a href="thinulaka-employee-cv/index.php"><i class="fa-solid fa-chevron-right"></i> PERFORMANCE & TRAINING</a>
                        <a href="thinulaka-employee-cv/request.php"><i class="fa-solid fa-chevron-right"></i> ADMIN APPROVALS</a>
                        <a href="editor_summary.php"><i class="fa-solid fa-chevron-right"></i> EDITORS SUMMARY</a>
                    </div>
                </details>
                <?php endif; ?>
                <a class="dash-nav-link thinulaka-v75-profile" href="thinulaka-employee-cv/index.php"><i class="fa-solid fa-id-card"></i> STAFF PROFILE</a>
                <a class="dash-nav-link thinulaka-v75-attendance" href="thinulaka-employee-cv/attendance.php"><i class="fa-solid fa-clock"></i> ATTENDANCE</a>
                <?php if($isFullAdmin && empty($viewEditorId) && !$viewAsOperator): ?>
                    <a class="dash-nav-link thinulaka-v75-finance" href="statement.php"><i class="fa-solid fa-scale-balanced"></i> FINANCIAL STATEMENT</a>
                <?php endif; ?>

                <?php if($displayRole === 'Finance'): ?>
                    <div class="dash-nav-label">Finance</div>
                <?php endif; ?>

                <?php if($displayRole === 'Finance'): ?>
                    <a class="dash-nav-link" href="capital.php"><i class="fa-solid fa-piggy-bank"></i> Capital</a>
                    <a class="dash-nav-link" href="expenses.php"><i class="fa-solid fa-building-columns"></i> Expenses</a>
                    <a class="dash-nav-link" href="daily_finance.php"><i class="fa-solid fa-calendar-day"></i> Daily Income & Expense</a>
                    <a class="dash-nav-link" href="statement.php"><i class="fa-solid fa-scale-balanced"></i> Statement</a>
                <?php endif; ?>



                <div class="dash-nav-label">Account</div>
                <a class="dash-nav-link nav-tours" href="https://thailandtour.thinulakatour.com/" target="_blank"><i class="fa-solid fa-plane-departure"></i> Thailand Tours</a>
            </nav>
        </aside>
        <div class="dash-backdrop" id="dash-backdrop"></div>

        <div class="dash-main">
            <header class="dash-topbar">
                <?php
                $displaySuffix = "";
                if ($displayRole === 'Editor' && !empty($viewEditorId)) {
                    $edStmt = $pdo->prepare("SELECT full_name, username FROM users WHERE id = ?");
                    $edStmt->execute([$viewEditorId]);
                    $edUser = $edStmt->fetch();
                    if ($edUser) {
                        $displaySuffix = " &rsaquo; Editor: " . htmlspecialchars($edUser['full_name'] ?: $edUser['username']);
                    }
                }
                ?>
                <div class="dash-topbar-title">
                    <button type="button" class="dash-menu-btn" id="dash-sidebar-toggle" aria-controls="dash-sidebar" aria-expanded="false" aria-label="Open menu"><i class="fa-solid fa-bars"></i></button>
                    <h1>Dashboard <span>(<?= htmlspecialchars($displayRole) ?>: <?= htmlspecialchars($_SESSION['full_name'] ?? $_SESSION['username']) ?><?= $displaySuffix ?>)</span></h1>
                </div>
                <div class="dash-top-actions">
                    <?php if($isFullAdmin && empty($viewEditorId) && !$viewAsOperator): ?>
                        <a href="registered_create.php" class="dash-top-link dash-top-registered"><i class="fa-solid fa-user-plus"></i> Add Registered</a>
                        <a href="https://staff.thinusoft.com/" target="_blank" rel="noopener noreferrer" class="dash-top-link dash-top-hr"><i class="fa-solid fa-people-group"></i> Staff HR System</a>
                    <?php endif; ?>
                    <a href="messages.php" class="dash-top-link dash-top-messages" title="Internal Messages"><i class="fa-solid fa-comments"></i> Messages<?php if ($internalUnreadCount > 0): ?><span class="dash-unread"><?= $internalUnreadCount > 99 ? '99+' : $internalUnreadCount ?></span><?php endif; ?></a>
                    <a href="attendance.php" class="dash-top-link dash-top-attendance"><i class="fa-solid fa-clock"></i> My Attendance</a>
                    <?php if ($isFullAdmin): ?>
                        <a href="attendance_admin.php" class="dash-top-link dash-top-attendance-admin"><i class="fa-solid fa-calendar-check"></i> Attendance</a>
                    <?php endif; ?>
                    <a href="profile.php" class="dash-top-link dash-top-profile"><i class="fa-solid fa-user-circle"></i> Profile</a>
                    <a href="logout.php" class="dash-top-link dash-logout"><i class="fa-solid fa-right-from-bracket"></i> Logout</a>
                </div>
            </header>

            <div class="dash-workspace">
        <div class="container">

        <div class="dash-page-head">
            <div class="dash-page-head-text">
                <h2>Dashboard</h2>
                <p><?= htmlspecialchars($displayRole) ?><?= $displaySuffix ?> · <?= $selectedYear === 'current' ? 'Current Year' : ($selectedYear === 'all' ? 'All Time' : htmlspecialchars((string)$selectedYear)) ?></p>
            </div>
            <div class="dash-page-head-actions">
                <?php if($actualUserRole === 'Admin' && empty($viewEditorId) && !$viewAsOperator): ?>
                    <a href="create.php" class="dash-add-btn"><i class="fa-solid fa-plus"></i> Add Client</a>
                <?php endif; ?>
                <?php if($displayRole === 'Editor'): ?>
                    <a href="create.php" class="dash-add-btn"><i class="fa-solid fa-plus"></i> Manual Add</a>
                <?php endif; ?>
            </div>
        </div>

        <?php if($displayRole === 'Operator'): ?>
        <div class="dashboard-stats dash-kpi-operator">
            <div class="stat-card kpi-total" onclick="window.location.href='index.php?year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';" title="View all records">
                <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-layer-group"></i></span>
                <span class="stat-title">Total (<?= $selectedYear === 'current' ? 'Current Year' : ($selectedYear === 'all' ? 'All Time' : $selectedYear) ?>)</span>
                <span class="stat-value"><?= $displayRole === 'Operator' ? array_sum($operatorStats) : $stats['total'] ?></span>
            </div>

                <!-- New Arrivals tile (clients added from registered_create.php, last 7 days) -->
                <div class="stat-card" style="border-bottom: 4px solid #16a085; cursor: pointer;" onclick="toggleNewArrivals(event)" title="Click to view newly registered clients (last 7 days)">
                    <span class="stat-title"><i class="fa-solid fa-user-plus" style="margin-right:4px;"></i>New Arrivals</span>
                    <span class="stat-value" style="color:#16a085;"><?= $newArrivalsCount ?></span>
                </div>
                <!-- New Arrivals details (hidden by default, shown on click) -->
                <div id="new-arrivals-panel" style="display:none; flex-direction:column; background:#ffffff; border:2px solid #16a085; border-radius:10px; padding:12px 14px; width:100%; grid-column:1 / -1; order:98; box-sizing:border-box; box-shadow:0 2px 8px rgba(0,0,0,0.08);">
                    <div style="font-size:0.8em; font-weight:800; color:#16a085; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:10px; display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap;">
                        <span><i class="fa-solid fa-user-plus" style="margin-right:5px;"></i> New Arrivals &mdash; Registered in the last 7 days (<?= $newArrivalsCount ?>)</span>
                        <span style="display:flex; align-items:center; gap:12px;">
                            <a href="registered.php" style="color:#16a085; text-decoration:none; font-weight:700;"><i class="fa-solid fa-address-book"></i> View all registered</a>
                            <button type="button" onclick="toggleNewArrivals(event)" style="background:none; border:none; color:#16a085; cursor:pointer; font-size:1.2em; padding:0; line-height:1;" title="Close"><i class="fa-solid fa-times"></i></button>
                        </span>
                    </div>
                    <?php if (empty($newArrivals)): ?>
                        <div style="text-align:center; color:#7f8c8d; padding:14px;">No new clients were registered in the last 7 days.</div>
                    <?php else: ?>
                        <div style="overflow-x:auto; -webkit-overflow-scrolling:touch; max-height:420px; overflow-y:auto;">
                            <table style="width:100%; min-width:1000px; border-collapse:collapse; font-size:0.9em; color:#2c3e50;">
                                <thead>
                                    <tr style="background:#ecf0f1; text-align:left; position:sticky; top:0;">
                                        <th style="padding:8px;">ID</th>
                                        <th style="padding:8px;">Name</th>
                                        <th style="padding:8px;">Phone</th>
                                        <th style="padding:8px;">NIC / Passport</th>
                                        <th style="padding:8px;">Address</th>
                                        <th style="padding:8px;">Source</th>
                                        <th style="padding:8px;">Registered</th>
                                        <th style="padding:8px;">Added By</th>
                                        <th style="padding:8px;">Notes</th>
                                        <th style="padding:8px;">Payment / Passport</th>
                                        <th style="padding:8px;">Status</th>
                                        <th style="padding:8px;">Actions</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($newArrivals as $na): ?>
                                        <tr style="border-bottom:1px solid #f1f2f6; vertical-align:top;">
                                            <td style="padding:8px; white-space:nowrap;"><code style="background:#f1f5f9;padding:2px 4px;border-radius:4px;font-size:0.85em;"><?= str_pad($na['id'], 4, '0', STR_PAD_LEFT) ?></code></td>
                                            <td style="padding:8px;">
                                                <strong><?= htmlspecialchars($na['customer_name'] ?: ($na['name_with_initial'] ?: 'Unknown')) ?></strong>
                                                <?php if ($na['customer_category']): ?>
                                                    <span class="badge badge-<?= strtolower($na['customer_category']) ?>" style="font-size:0.75em;padding:2px 6px;display:inline-block;"><?= htmlspecialchars($na['customer_category']) ?></span>
                                                <?php endif; ?>
                                                <?php if ($na['name_with_initial'] && $na['customer_name']): ?>
                                                    <div style="font-size:0.85em; color:#7f8c8d;"><?= htmlspecialchars($na['name_with_initial']) ?></div>
                                                <?php endif; ?>
                                            </td>
                                            <td style="padding:8px; white-space:nowrap;"><a href="tel:<?= htmlspecialchars($na['phone_number']) ?>"><?= htmlspecialchars($na['phone_number']) ?></a></td>
                                            <td style="padding:8px;"><?= htmlspecialchars($na['id_passport'] ?: '—') ?></td>
                                            <td style="padding:8px;"><?= htmlspecialchars($na['location_name'] ?: '—') ?></td>
                                            <td style="padding:8px;"><?= htmlspecialchars($na['source']) ?></td>
                                            <td style="padding:8px; white-space:nowrap;"><?= date('d/m/y H:i', strtotime($na['created_at'])) ?></td>
                                            <td style="padding:8px;"><?= htmlspecialchars(($na['full_name'] ?: $na['username']) ?: '—') ?></td>
                                            <td style="padding:8px; max-width:200px;"><?= htmlspecialchars($na['details'] ?: '—') ?></td>
                                            <td style="padding:8px;">
                                                <?php if (($na['inq_status'] ?? '') === 'Confirm'): ?>
                                                    <?php if (!empty($na['is_balance_paid'])): ?>
                                                        <span class="pay-badge pay-badge-full"><i class="fa-solid fa-circle-check"></i> Full Paid</span>
                                                    <?php elseif (($na['advanced_payment'] ?? 0) > 0): ?>
                                                        <span class="pay-badge pay-badge-advance"><i class="fa-solid fa-hourglass-half"></i> Advanced</span>
                                                    <?php else: ?>
                                                        <span class="pay-badge pay-badge-unpaid"><i class="fa-solid fa-circle-xmark"></i> Unpaid</span>
                                                    <?php endif; ?>
                                                    <?php $nps = $na['passport_status'] ?? null; ?>
                                                    <?php if ($nps === 'Completed'): ?>
                                                        <span class="pay-badge" style="display:block;margin-top:4px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;"><i class="fa-solid fa-passport"></i> Passport ✓</span>
                                                    <?php elseif ($nps === 'In Progress'): ?>
                                                        <span class="pay-badge" style="display:block;margin-top:4px;background:#fff3cd;color:#856404;border:1px solid #ffeeba;"><i class="fa-solid fa-passport"></i> Passport…</span>
                                                    <?php else: ?>
                                                        <span class="pay-badge" style="display:block;margin-top:4px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;"><i class="fa-solid fa-passport"></i> No Pass.</span>
                                                    <?php endif; ?>
                                                <?php else: ?>—<?php endif; ?>
                                            </td>
                                            <td style="padding:8px;">
                                                <?php $naStatus = !empty($na['inquiry_id']) ? (($na['operator_stage'] ?? '') === 'Complete' ? 'Complete' : $na['inq_status']) : 'New'; ?>
                                                <span class="badge <?= getBadgeClass($naStatus) ?>" style="font-size:0.82em;padding:3px 8px;"><?= htmlspecialchars($naStatus) ?></span>
                                            </td>
                                            <td style="padding:8px;">
                                                <div class="dash-row-actions">
                                                    <div class="dash-action-menu">
                                                        <button type="button" class="dash-action-toggle" aria-haspopup="true" aria-expanded="false" aria-label="Row actions"><i class="fa-solid fa-ellipsis-vertical"></i></button>
                                                        <div class="dash-action-panel" hidden>
                                                            <a href="index.php?arrival_process=<?= (int)$na['id'] ?>&view_as=Operator"><i class="fa-solid fa-list-check"></i> Process Inquiry</a>
                                                            <?php if (!empty($na['inquiry_id'])): ?>
                                                                <a href="edit.php?id=<?= (int)$na['inquiry_id'] ?>&return_url=<?= urlencode('index.php?view_as=Operator') ?>"><i class="fa-solid fa-pen"></i> Edit Details</a>
                                                                <a href="invoice.php?id=<?= (int)$na['inquiry_id'] ?>&type=advanced" target="_blank"><i class="fa-solid fa-file-invoice-dollar"></i> Advance Invoice</a>
                                                                <a href="invoice.php?id=<?= (int)$na['inquiry_id'] ?>&type=full" target="_blank"><i class="fa-solid fa-file-invoice"></i> Full Invoice</a>
                                                                <a href="javascript:void(0)" onclick="printID(<?= (int)$na['inquiry_id'] ?>, '<?= htmlspecialchars($na['id_card_number'] ?? '') ?>')"><i class="fa-solid fa-id-card"></i> Print ID</a>
                                                            <?php endif; ?>
                                                        </div>
                                                    </div>
                                                </div>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                        <?php if ($newArrivalsCount > count($newArrivals)): ?>
                            <div style="text-align:center; margin-top:8px; font-size:0.85em;"><a href="registered.php" style="color:#16a085; font-weight:700;">Showing latest <?= count($newArrivals) ?> of <?= $newArrivalsCount ?> &mdash; view all</a></div>
                        <?php endif; ?>
                    <?php endif; ?>
                </div>
                <div class="stat-card stat-card-booked" style="cursor: pointer;" onclick="togglePaymentBreakdown(event)" title="Click to see Payment Status breakdown">
                    <span class="stat-title">Confirm</span>
                    <span class="stat-value"><?= ($operatorStats['Confirm'] ?? 0) ?></span>
                </div>
                <!-- Payment Status Breakdown (visible by default, right after the stat tiles) -->
                <div id="payment-breakdown" style="display:flex; flex-direction:column; gap:0; background:rgba(39,174,96,0.12); border:2px solid #27ae60; border-radius:10px; padding:10px 12px; max-width:400px; width:100%; grid-column:1 / -1; order:99; box-sizing:border-box;">
                    <div style="font-size:0.75em; font-weight:800; color:#7fd9a8; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:10px; padding:0 2px; display:flex; align-items:center; justify-content:space-between;">
                        <span><i class="fa-solid fa-money-check-dollar" style="margin-right:5px;"></i> Payment Status Categories (Confirm)</span>
                        <button onclick="togglePaymentBreakdown(event)" style="background:none; border:none; color:#7fd9a8; cursor:pointer; font-size:1.1em; padding:0; line-height:1;" title="Close"><i class="fa-solid fa-times"></i></button>
                    </div>
                    <div style="display:flex; gap:10px;">
                        <a href="index.php?payment_status=Full&category=Confirm&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $payment_status==='Full' ? '#27ae60' : 'rgba(39,174,96,0.18)' ?>; border:2px solid #27ae60; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-circle-check"></i> Full Paid</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $payStats['Full'] ?></div>
                        </a>
                        <a href="index.php?payment_status=Advance&category=Confirm&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $payment_status==='Advance' ? '#f39c12' : 'rgba(243,156,18,0.18)' ?>; border:2px solid #f39c12; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-hourglass-half"></i> Advance Paid</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $payStats['Advance'] ?></div>
                        </a>
                        <a href="index.php?payment_status=Unpaid&category=Confirm&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $payment_status==='Unpaid' ? '#e74c3c' : 'rgba(231,76,60,0.18)' ?>; border:2px solid #e74c3c; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-circle-xmark"></i> Unpaid</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $payStats['Unpaid'] ?></div>
                        </a>
                    </div>
                    <?php if ($payment_status): ?>
                    <div style="text-align:center; margin-top:10px;">
                        <a href="index.php?category=Confirm&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" style="font-size:0.8em; color:#7fd9a8; font-weight:700; text-decoration:none;"><i class="fa-solid fa-times-circle"></i> Clear Payment Filter</a>
                    </div>
                    <?php endif; ?>
                </div>
                <div class="stat-card" style="border-bottom: 4px solid #f39c12;" onclick="window.location.href='index.php?operator_stage=In Progress&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="stat-title">In Progress</span>
                    <span class="stat-value"><?= ($operatorStats['In Progress'] ?? 0) ?></span>
                </div>
                <div class="stat-card" style="border-bottom: 4px solid #9b59b6; cursor: pointer;" onclick="togglePassportBreakdown(event)" title="Click to see Passport Status breakdown">
                    <span class="stat-title"><i class="fa-solid fa-passport" style="margin-right:4px;"></i>Passport Process</span>
                    <span class="stat-value"><?= ($operatorStats['Passport Process'] ?? 0) ?></span>
                </div>
                <!-- Passport Status Breakdown (hidden by default, shown on click) -->
                <div id="passport-breakdown" style="display:none; flex-direction:column; gap:0; background:rgba(155,89,182,0.12); border:2px solid #9b59b6; border-radius:10px; padding:10px 12px; max-width:400px; width:100%; grid-column:1 / -1; order:99; box-sizing:border-box;">
                    <div style="font-size:0.75em; font-weight:800; color:#ce9df0; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:10px; padding:0 2px; display:flex; align-items:center; justify-content:space-between;">
                        <span><i class="fa-solid fa-passport" style="margin-right:5px;"></i> Passport Status Categories</span>
                        <button onclick="togglePassportBreakdown(event)" style="background:none; border:none; color:#ce9df0; cursor:pointer; font-size:1.1em; padding:0; line-height:1;" title="Close"><i class="fa-solid fa-times"></i></button>
                    </div>
                    <div style="display:flex; gap:10px;">
                        <a href="index.php?passport_status=In+Progress&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $passport_status_filter==='In Progress' ? '#f39c12' : 'rgba(243,156,18,0.18)' ?>; border:2px solid #f39c12; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-hourglass-half"></i> In Progress</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $passportStats['In Progress'] ?></div>
                        </a>
                        <a href="index.php?passport_status=No+Passport&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $passport_status_filter==='No Passport' ? '#e74c3c' : 'rgba(231,76,60,0.18)' ?>; border:2px solid #e74c3c; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-ban"></i> No Passport</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $passportStats['No Passport'] ?></div>
                        </a>
                        <a href="index.php?passport_status=Completed&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $passport_status_filter==='Completed' ? '#27ae60' : 'rgba(39,174,96,0.18)' ?>; border:2px solid #27ae60; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-circle-check"></i> Completed</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $passportStats['Completed'] ?></div>
                        </a>
                    </div>
                    <?php if ($passport_status_filter): ?>
                    <div style="text-align:center; margin-top:10px;">
                        <a href="index.php?year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" style="font-size:0.8em; color:#ce9df0; font-weight:700; text-decoration:none;"><i class="fa-solid fa-times-circle"></i> Clear Passport Filter</a>
                    </div>
                    <?php endif; ?>
                </div>
                <div class="stat-card" style="border-bottom: 4px solid #3498db;" onclick="window.location.href='index.php?operator_stage=Visa Process&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="stat-title">Visa Process</span>
                    <span class="stat-value"><?= ($operatorStats['Visa Process'] ?? 0) ?></span>
                </div>
                <div class="stat-card" style="border-bottom: 4px solid #e74c3c;" onclick="window.location.href='index.php?operator_stage=Baggage&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="stat-title">Baggage</span>
                    <span class="stat-value"><?= ($operatorStats['Baggage'] ?? 0) ?></span>
                </div>
                <div class="stat-card" style="border-bottom: 4px solid #27ae60;" onclick="window.location.href='index.php?operator_stage=Payment Process&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="stat-title">Payment Process</span>
                    <span class="stat-value"><?= ($operatorStats['Payment Process'] ?? 0) ?></span>
                </div>
                <div class="stat-card" style="border-bottom: 4px solid #e67e22;" onclick="window.location.href='index.php?operator_stage=Return&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="stat-title">Return</span>
                    <span class="stat-value"><?= ($operatorStats['Return'] ?? 0) ?></span>
                </div>
        </div>
            <?php else: ?>
        <div class="dashboard-stats dash-kpi-primary">
            <div class="stat-card kpi-total" onclick="window.location.href='index.php?year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';" title="View all records">
                <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-layer-group"></i></span>
                <span class="stat-title" title="Total (<?= $selectedYear === 'current' ? 'Current Year' : ($selectedYear === 'all' ? 'All Time' : htmlspecialchars((string)$selectedYear)) ?>)">Total</span>
                <span class="stat-value"><?= $displayRole === 'Operator' ? array_sum($operatorStats) : $stats['total'] ?></span>
            </div>
                <?php if($userRole !== 'Finance'): ?>
                <div class="stat-card stat-card-calling kpi-new" onclick="window.location.href='index.php?category=New Calls&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';" title="Filter New Calls">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-phone"></i></span>
                    <span class="stat-title">New Calls</span>
                    <span class="stat-value"><?= $stats['new_calls'] ?></span>
                </div>
                <div class="stat-card stat-card-progress kpi-progress" onclick="window.location.href='index.php?category=In Progress&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-spinner"></i></span>
                    <span class="stat-title">In Progress</span>
                    <span class="stat-value"><?= $stats['in_progress'] ?></span>
                </div>
                <div class="stat-card stat-card-missed kpi-missed" onclick="window.location.href='index.php?category=No Answer&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-phone-slash"></i></span>
                    <span class="stat-title">No Answer</span>
                    <span class="stat-value"><?= $stats['no_answer'] ?></span>
                    <a href="download_calls_csv.php?category=No+Answer&year=<?= $selectedYear ?>" onclick="event.stopPropagation();" title="Download No Answer CSV" style="display:block;margin-top:6px;font-size:0.72em;color:#e74c3c;text-decoration:none;border:1px solid #e74c3c33;background:#e74c3c11;padding:3px 6px;border-radius:4px;font-weight:700;"><i class="fa-solid fa-download"></i> CSV</a>
                </div>
                <div class="stat-card stat-card-whatsapp kpi-whatsapp" onclick="window.location.href='index.php?category=WhatsApp&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';" title="Filter Unreachable">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-brands fa-whatsapp"></i></span>
                    <span class="stat-title">WhatsApp</span>
                    <span class="stat-value"><?= $stats['unreachable'] ?></span>
                    <a href="download_calls_csv.php?category=WhatsApp&year=<?= $selectedYear ?>" onclick="event.stopPropagation();" title="Download WhatsApp CSV" style="display:block;margin-top:6px;font-size:0.72em;color:#25D366;text-decoration:none;border:1px solid #25D36633;background:#25D36611;padding:3px 6px;border-radius:4px;font-weight:700;"><i class="fa-solid fa-download"></i> CSV</a>
                </div>
                <?php endif; ?>
                <?php
                    $confirmClickAction = ($displayRole === 'Admin')
                        ? "togglePaymentBreakdown(event)"
                        : "window.location.href='index.php?category=Confirm&year={$selectedYear}#records-section';";
                ?>
                <div class="stat-card stat-card-booked kpi-confirm" style="<?= $displayRole === 'Admin' ? 'cursor: pointer;' : '' ?>" onclick="<?= $confirmClickAction ?>" <?= $displayRole === 'Admin' ? 'title="Click to see Payment Status breakdown"' : '' ?>>
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-circle-check"></i></span>
                    <span class="stat-title">Confirm</span>
                    <span class="stat-value"><?= $stats['confirm'] ?></span>
                </div>
                <?php if($userRole === 'Admin' || $userRole === 'Editor'): ?>
                <div class="stat-card kpi-complete" onclick="window.location.href='index.php?category=Complete&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';" title="View Complete">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-flag-checkered"></i></span>
                    <span class="stat-title">Complete</span>
                    <span class="stat-value"><?= $viewAsOperator ? ($operatorStats['Complete'] ?? $stats['complete']) : $stats['complete'] ?></span>
                </div>
                <?php endif; ?>
                <?php if ($displayRole === 'Admin'): ?>
                <!-- Payment Status Breakdown (visible by default, right after the stat tiles) -->
                <div id="payment-breakdown" style="display:flex; flex-direction:column; gap:0; background:rgba(39,174,96,0.12); border:2px solid #27ae60; border-radius:10px; padding:10px 12px; max-width:400px; width:100%; grid-column:1 / -1; order:99; box-sizing:border-box;">
                    <div style="font-size:0.75em; font-weight:800; color:#7fd9a8; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:10px; padding:0 2px; display:flex; align-items:center; justify-content:space-between;">
                        <span><i class="fa-solid fa-money-check-dollar" style="margin-right:5px;"></i> Payment Status Categories (Confirm)</span>
                        <button onclick="togglePaymentBreakdown(event)" style="background:none; border:none; color:#7fd9a8; cursor:pointer; font-size:1.1em; padding:0; line-height:1;" title="Close"><i class="fa-solid fa-times"></i></button>
                    </div>
                    <div style="display:flex; gap:10px;">
                        <a href="index.php?payment_status=Full&category=Confirm&year=<?= $selectedYear ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $payment_status==='Full' ? '#27ae60' : 'rgba(39,174,96,0.18)' ?>; border:2px solid #27ae60; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-circle-check"></i> Full Paid</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $payStats['Full'] ?></div>
                        </a>
                        <a href="index.php?payment_status=Advance&category=Confirm&year=<?= $selectedYear ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $payment_status==='Advance' ? '#f39c12' : 'rgba(243,156,18,0.18)' ?>; border:2px solid #f39c12; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-hourglass-half"></i> Advance Paid</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $payStats['Advance'] ?></div>
                        </a>
                        <a href="index.php?payment_status=Unpaid&category=Confirm&year=<?= $selectedYear ?>#records-section"
                           style="flex:1; min-width:120px; text-decoration:none; background:<?= $payment_status==='Unpaid' ? '#e74c3c' : 'rgba(231,76,60,0.18)' ?>; border:2px solid #e74c3c; border-radius:8px; padding:10px 12px; text-align:center; transition:all 0.2s;">
                            <div style="font-size:0.78em; font-weight:700; color:black; text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;"><i class="fa-solid fa-circle-xmark"></i> Unpaid</div>
                            <div style="font-size:1.6em; font-weight:900; color:black; margin-top:2px;"><?= $payStats['Unpaid'] ?></div>
                        </a>
                    </div>
                    <?php if ($payment_status): ?>
                    <div style="text-align:center; margin-top:10px;">
                        <a href="index.php?category=Confirm&year=<?= $selectedYear ?>#records-section" style="font-size:0.8em; color:#7fd9a8; font-weight:700; text-decoration:none;"><i class="fa-solid fa-times-circle"></i> Clear Payment Filter</a>
                    </div>
                    <?php endif; ?>
                </div>
                <?php endif; ?>
        </div>
                <?php if($userRole === 'Admin' || $userRole === 'Editor'): ?>
        <div class="dashboard-stats dash-kpi-secondary">
                <?php if($userRole !== 'Finance'): ?>
                <div class="stat-card stat-card-special kpi-special" onclick="window.location.href='index.php?category=Special Call&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section';">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-star"></i></span>
                    <span class="stat-title">Special Call</span>
                    <span class="stat-value"><?= $stats['special_call'] ?></span>
                    <a href="download_calls_csv.php?category=Special+Call&year=<?= $selectedYear ?>" onclick="event.stopPropagation();" title="Download Special Call CSV" style="display:block;margin-top:6px;font-size:0.72em;color:#9b59b6;text-decoration:none;border:1px solid #9b59b633;background:#9b59b611;padding:3px 6px;border-radius:4px;font-weight:700;"><i class="fa-solid fa-download"></i> CSV</a>
                </div>
                <?php endif; ?>
                <div class="stat-card stat-card-cancel kpi-cancel" onclick="window.location.href='index.php?category=Cancel&year=<?= $selectedYear ?>#records-section';">
                    <span class="kpi-icon" aria-hidden="true"><i class="fa-solid fa-ban"></i></span>
                    <span class="stat-title">Cancel</span>
                    <span class="stat-value"><?= $stats['cancel'] ?></span>
                </div>
        </div>
                <?php endif; ?>
            <?php endif; ?>
        <div class="glass-panel" style="margin-bottom: 30px;">
            <form method="GET" action="index.php" class="search-form">
                <?php if($viewAsOperator): ?><input type="hidden" name="view_as" value="Operator"><?php endif; ?>
                <input type="text" name="search" placeholder="Search by id, name, phone, address, or date (YYYY-MM-DD)..." value="<?= htmlspecialchars($search) ?>" class="form-control" style="flex: 1; min-width: 250px;">
                <select name="category" class="form-control" style="width: 150px;">
                    <option value="">All Categories</option>
                    <option value="New Calls" <?= $category === 'New Calls' ? 'selected' : '' ?>>New Calls</option>
                    <option value="In Progress" <?= $category === 'In Progress' ? 'selected' : '' ?>>In Progress</option>
                    <option value="Special Call" <?= $category === 'Special Call' ? 'selected' : '' ?>>Special Call</option>
                    <option value="No Answer" <?= $category === 'No Answer' ? 'selected' : '' ?>>No Answer</option>
                    <option value="WhatsApp" <?= $category === 'WhatsApp' ? 'selected' : '' ?>>WhatsApp</option>
                    <option value="Confirm" <?= $category === 'Confirm' ? 'selected' : '' ?>>Confirm</option>
                    <option value="Cancel" <?= $category === 'Cancel' ? 'selected' : '' ?>>Cancel</option>
                </select>
                <select name="month" class="form-control" style="width: 150px;">
                    <option value="">All Months</option>
                    <?php
                    $months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
                    foreach ($months as $m) {
                        echo "<option value=\"$m\" ".($month === $m ? 'selected' : '').">$m</option>";
                    }
                    ?>
                </select>
                <select name="year" class="form-control" style="width: 130px;">
                    <option value="current" <?= $selectedYear === 'current' ? 'selected' : '' ?>>Current Year</option>
                    <option value="all" <?= $selectedYear === 'all' ? 'selected' : '' ?>>All Time (Archive)</option>
                    <?php
                    for ($y = 2026; $y <= 2030; $y++) {
                        echo "<option value=\"$y\" ".($selectedYear == (string)$y ? 'selected' : '').">$y</option>";
                    }
                    ?>
                </select>
                <button type="submit" class="btn btn-primary"><i class="fa-solid fa-search"></i> Search</button>
                <a href="index.php<?= $viewAsOperator ? '?view_as=Operator' : '' ?>#records-section" class="btn btn-secondary">Clear</a>
            </form>
        </div>

        <?php if($displayRole === 'Operator' || $displayRole === 'Editor' || $displayRole === 'Admin' || $displayRole === 'Finance'): ?>
        <div class="glass-panel" style="margin-bottom: 30px;">
            <?php
            $monthNumbers = [
                'January'=>1, 'February'=>2, 'March'=>3, 'April'=>4, 'May'=>5, 'June'=>6,
                'July'=>7, 'August'=>8, 'September'=>9, 'October'=>10, 'November'=>11, 'December'=>12
            ];
            $currentYear = (int)date('Y');
            $currentMonthNum = (int)date('n');
            $compareYear = ($selectedYear === 'current' || $selectedYear === 'all') ? $currentYear : (int)$selectedYear;

            $hasPastMonths = false;
            $initiallyShown = false;
            $allMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
            
            foreach ($allMonths as $m) {
                $mNum = $monthNumbers[$m];
                $isPast = false;
                if ($compareYear < $currentYear) {
                    $isPast = true;
                } elseif ($compareYear > $currentYear) {
                    $isPast = false;
                } else {
                    $isPast = ($mNum < $currentMonthNum);
                }
                if ($isPast) {
                    $hasPastMonths = true;
                    if ($month === $m) {
                        $initiallyShown = true;
                    }
                }
            }
            ?>
            <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; flex-wrap: wrap; gap: 10px;">
                <h3 style="margin: 0;"><i class="fa-solid fa-calendar-alt"></i> Confirmed List by Assigned Month</h3>
                <?php if ($hasPastMonths): ?>
                    <button id="toggle-past-months" class="btn" data-shown="<?= $initiallyShown ? 'true' : 'false' ?>" style="background: #34495e; color: white; border-radius: 20px; font-weight: bold; padding: 6px 16px; border: none; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; transition: all 0.2s;" onclick="togglePastMonths()">
                        <?php if ($initiallyShown): ?>
                            <i class="fa-solid fa-eye-slash"></i> Hide Past Months
                        <?php else: ?>
                            <i class="fa-solid fa-eye"></i> Show Past Months
                        <?php endif; ?>
                    </button>
                <?php endif; ?>
            </div>
            <div style="display: flex; flex-wrap: wrap; gap: 10px;" id="month-tiles-container">
                <?php
                foreach ($allMonths as $m): 
                    $count = $monthlyConfirmedStats[$m] ?? 0;
                    $color = $monthColors[$m] ?? '#ccc';
                    $isActive = ($month === $m);
                    $monthRevenue = $monthlyAmountStats[$m] ?? 0;
                    $monthExpense = $monthlyExpenseStats[$m] ?? 0;
                    
                    $mNum = $monthNumbers[$m];
                    $isPast = false;
                    if ($compareYear < $currentYear) {
                        $isPast = true;
                    } elseif ($compareYear > $currentYear) {
                        $isPast = false;
                    } else {
                        $isPast = ($mNum < $currentMonthNum);
                    }
                ?>
                    <div class="month-tile <?= $isActive ? 'active' : '' ?> <?= $isPast ? 'past-month' : '' ?>" 
                          style="flex: 0 0 calc(16.66% - 10px); min-width: 120px; padding: 10px; border-radius: 8px; background: white; border-bottom: 4px solid <?= $color ?>; box-shadow: 0 2px 5px rgba(0,0,0,0.05); text-align: center; position: relative; <?= $isActive ? 'outline:2px solid '.$color.'; outline-offset:2px;' : '' ?>; <?= ($isPast && !$initiallyShown && !$isActive) ? 'display: none;' : '' ?>">
                        <!-- Click month info to filter -->
                        <div onclick="window.location.href='index.php?category=Confirm&month=<?= $m ?>&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section'" style="cursor: pointer; padding: 5px;">
                            <div style="font-size: 0.8em; font-weight: bold; color: #7f8c8d; text-transform: uppercase;"><?= substr($m, 0, 3) ?></div>
                            <div style="font-size: 1.5em; font-weight: bold; color: <?= $color ?>;"><?= $count ?></div>
                            <?php if ($displayRole === 'Finance' && $monthRevenue > 0): ?>
                                <div style="font-size: 0.68em; color: #27ae60; font-weight: 700; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;" title="Revenue: LKR <?= number_format($monthRevenue, 2) ?>">
                                    <i class="fa-solid fa-arrow-down" style="font-size:0.8em;"></i> <?= number_format($monthRevenue / 1000, 1) ?>k
                                </div>
                            <?php endif; ?>
                            <?php if ($displayRole === 'Finance' && $monthExpense > 0): ?>
                                <div style="font-size: 0.68em; color: #e74c3c; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;" title="Expenses: LKR <?= number_format($monthExpense, 2) ?>">
                                    <i class="fa-solid fa-arrow-up" style="font-size:0.8em;"></i> <?= number_format($monthExpense / 1000, 1) ?>k
                                </div>
                            <?php endif; ?>
                        </div>
                        <?php if ($displayRole !== 'Finance'): ?>
                        <!-- Separate Download Button -->
                        <?php if ($count > 0): ?>
								<div class="month-tile-actions">
									
									<a class="month-tile-btn" href="download_month_list.php?month=<?= $m ?>&year=<?= ($selectedYear === 'current' ? date('Y') : $selectedYear) ?>"
									   title="Download <?= $m ?> Customer List"
									   style="color:<?= $color ?>; border-color:<?= $color ?>1A; background:<?= $color ?>0D;">
										<i class="fa-solid fa-download"></i> Download
									</a>

									<a class="month-tile-btn" href="month_groups.php?month=<?= urlencode($m) ?>&year=<?= ($selectedYear === 'current' ? date('Y') : $selectedYear) ?>"
									   title="Manage <?= $m ?> Groups"
									   style="color:#8e44ad; border-color:#8e44ad33; background:#8e44ad11;">
										<i class="fa-solid fa-people-group"></i> Groups
									</a>

								</div>
							<?php endif; ?>
                        <?php endif; ?>
                    </div>
                <?php endforeach; ?>
            </div></div>

            <?php if ($displayRole === 'Finance' && $month): ?>
            <!-- Selected month financial breakdown -->
            <div style="margin-top: 20px; border-top: 1px solid rgba(0,0,0,0.1); padding-top: 15px;">
                <h4 style="margin-bottom: 12px; color: #2c3e50;"><i class="fa-solid fa-chart-bar"></i> <?= htmlspecialchars($month) ?> — Financial Breakdown</h4>
                <div style="display: flex; gap: 12px; flex-wrap: wrap;">
                    <div style="flex:1; min-width:180px; background: linear-gradient(135deg,#27ae60,#1e8449); border-radius:10px; padding:16px; color:#fff; text-align:center;">
                        <div style="font-size:0.8em; text-transform:uppercase; letter-spacing:1px; opacity:0.85; margin-bottom:6px;"><i class="fa-solid fa-arrow-down"></i> Revenue</div>
                        <div style="font-size:1.5em; font-weight:bold;">LKR <?= number_format($selectedMonthRevenue, 2) ?></div>
                    </div>
                    <div style="flex:1; min-width:180px; background: linear-gradient(135deg,#e74c3c,#c0392b); border-radius:10px; padding:16px; color:#fff; text-align:center;">
                        <div style="font-size:0.8em; text-transform:uppercase; letter-spacing:1px; opacity:0.85; margin-bottom:6px;"><i class="fa-solid fa-arrow-up"></i> Expenses</div>
                        <div style="font-size:1.5em; font-weight:bold;">LKR <?= number_format($selectedMonthExpenses, 2) ?></div>
                    </div>
                    <div style="flex:1; min-width:180px; background: linear-gradient(135deg,<?= ($selectedMonthRevenue - $selectedMonthExpenses) >= 0 ? '#2980b9,#1a6fa8' : '#8e44ad,#6c3483' ?>); border-radius:10px; padding:16px; color:#fff; text-align:center;">
                        <div style="font-size:0.8em; text-transform:uppercase; letter-spacing:1px; opacity:0.85; margin-bottom:6px;"><i class="fa-solid fa-scale-balanced"></i> Net <?= ($selectedMonthRevenue - $selectedMonthExpenses) >= 0 ? 'Profit' : 'Loss' ?></div>
                        <div style="font-size:1.5em; font-weight:bold;">LKR <?= number_format(abs($selectedMonthRevenue - $selectedMonthExpenses), 2) ?></div>
                    </div>
                </div>
            </div>
            <?php endif; ?>

            <?php if ($displayRole === 'Finance'): ?>
            <!-- Overall financial totals -->
            <div style="margin-top: 20px; border-top: 1px solid rgba(0,0,0,0.1); padding-top: 15px;">
                <h4 style="margin-bottom: 12px; color: #2c3e50;"><i class="fa-solid fa-globe"></i> Overall — <?= $selectedYear === 'current' ? 'Current Year' : ($selectedYear === 'all' ? 'All Time' : $selectedYear) ?></h4>
                <div style="display: flex; gap: 12px; flex-wrap: wrap;">
                    <div style="flex:1; min-width:180px; background: linear-gradient(135deg,#27ae60cc,#1e8449cc); border-radius:10px; padding:14px; color:#fff; text-align:center; border:1px solid #27ae6044;">
                        <div style="font-size:0.78em; text-transform:uppercase; letter-spacing:1px; opacity:0.85; margin-bottom:6px;"><i class="fa-solid fa-arrow-down"></i> Total Revenue</div>
                        <div style="font-size:1.3em; font-weight:bold;">LKR <?= number_format($overallRevenue, 2) ?></div>
                    </div>
                    <div style="flex:1; min-width:180px; background: linear-gradient(135deg,#e74c3ccc,#c0392bcc); border-radius:10px; padding:14px; color:#fff; text-align:center; border:1px solid #e74c3c44;">
                        <div style="font-size:0.78em; text-transform:uppercase; letter-spacing:1px; opacity:0.85; margin-bottom:6px;"><i class="fa-solid fa-arrow-up"></i> Total Expenses</div>
                        <div style="font-size:1.3em; font-weight:bold;">LKR <?= number_format($overallExpenses, 2) ?></div>
                    </div>
                    <div style="flex:1; min-width:180px; background: linear-gradient(135deg,<?= ($overallRevenue - $overallExpenses) >= 0 ? '#2980b9cc,#1a6fa8cc' : '#8e44adcc,#6c3483cc' ?>); border-radius:10px; padding:14px; color:#fff; text-align:center; border:1px solid <?= ($overallRevenue - $overallExpenses) >= 0 ? '#2980b944' : '#8e44ad44' ?>;">
                        <div style="font-size:0.78em; text-transform:uppercase; letter-spacing:1px; opacity:0.85; margin-bottom:6px;"><i class="fa-solid fa-scale-balanced"></i> Net <?= ($overallRevenue - $overallExpenses) >= 0 ? 'Profit' : 'Loss' ?></div>
                        <div style="font-size:1.3em; font-weight:bold;">LKR <?= number_format(abs($overallRevenue - $overallExpenses), 2) ?></div>
                    </div>
                </div>
            </div>
            <?php endif; ?>

            <?php if ($displayRole !== 'Finance'): ?>
            <!-- Payment Status Categorization Buttons -->
            <div class="payment-filters" style="display: flex; gap: 10px; margin-top: 20px; border-top: 1px solid rgba(0,0,0,0.1); padding-top: 15px; flex-wrap: wrap;">
                <span style="font-weight: 700; color: #475569; align-self: center; margin-right: 5px;">Payment Categorization:</span>
                <a href="index.php?payment_status=Full&category=Confirm&month=<?= $month ?>&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" 
                   class="pay-badge pay-badge-full" style="text-decoration: none; border: 2px solid <?= $payment_status === 'Full' ? '#155724' : 'transparent' ?>;">
                    <i class="fa-solid fa-circle-check"></i> Full Paid (<?= $payStats['Full'] ?>)
                </a>
                <a href="index.php?payment_status=Advance&category=Confirm&month=<?= $month ?>&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" 
                   class="pay-badge pay-badge-advance" style="text-decoration: none; border: 2px solid <?= $payment_status === 'Advance' ? '#856404' : 'transparent' ?>;">
                    <i class="fa-solid fa-hourglass-half"></i> Advance Paid (<?= $payStats['Advance'] ?>)
                </a>
                <a href="index.php?payment_status=Unpaid&category=Confirm&month=<?= $month ?>&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" 
                   class="pay-badge pay-badge-unpaid" style="text-decoration: none; border: 2px solid <?= $payment_status === 'Unpaid' ? '#721c24' : 'transparent' ?>;">
                    <i class="fa-solid fa-circle-xmark"></i> Unpaid (<?= $payStats['Unpaid'] ?>)
                </a>
                <?php if($payment_status): ?>
                    <a href="index.php?category=Confirm&month=<?= $month ?>&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" 
                       style="font-size: 0.85em; align-self: center; color: #e74c3c; font-weight: 700; text-decoration: none; margin-left: 10px;">
                       <i class="fa-solid fa-times-circle"></i> Clear Payment Filter
                    </a>
                <?php endif; ?>
            </div>
            <?php endif; ?>
        </div>
        <?php endif; ?>

        <?php if ($displayRole === 'Finance'): ?>
        <div class="glass-panel" style="margin-bottom: 30px;">
            <h3><i class="fa-solid fa-chart-line"></i> Financial Summary (Customer Payments Received)</h3>
            <div style="display: flex; gap: 20px; margin-top: 15px; flex-wrap: wrap;">
                <div style="flex: 1; min-width: 300px;">
                    <h4 style="color: #2c3e50; margin-bottom: 10px;">Daily Breakdown (Last 10 Days)</h4>
                    <table style="width: 100%; background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 5px rgba(0,0,0,0.05);">
                        <tr style="background: #ecf0f1;">
                            <th style="padding: 10px; text-align: left;">Payment Date</th>
                            <th style="padding: 10px; text-align: right;">Amount Received (LKR)</th>
                        </tr>
                        <?php if(empty($dailyTotals)): ?>
                            <tr><td colspan="2" style="padding: 10px; text-align: center; color: #7f8c8d;">No payment dates recorded.</td></tr>
                        <?php else: ?>
                            <?php foreach($dailyTotals as $dRow): ?>
                                <tr style="border-bottom: 1px solid #f1f2f6;">
                                    <td style="padding: 10px;"><?= htmlspecialchars($dRow['p_date']) ?></td>
                                    <td style="padding: 10px; text-align: right; font-weight: bold; color: #27ae60;"><?= number_format((float)$dRow['total'], 2) ?></td>
                                </tr>
                            <?php endforeach; ?>
                        <?php endif; ?>
                    </table>
                </div>
                
                <div style="flex: 1; min-width: 300px;">
                    <h4 style="color: #2c3e50; margin-bottom: 10px;">Monthly Breakdown (Last 12 Months)</h4>
                    <table style="width: 100%; background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 5px rgba(0,0,0,0.05);">
                        <tr style="background: #ecf0f1;">
                            <th style="padding: 10px; text-align: left;">Month</th>
                            <th style="padding: 10px; text-align: right;">Amount Received (LKR)</th>
                        </tr>
                        <?php if(empty($monthlyTotals)): ?>
                            <tr><td colspan="2" style="padding: 10px; text-align: center; color: #7f8c8d;">No payment dates recorded.</td></tr>
                        <?php else: ?>
                            <?php foreach($monthlyTotals as $mRow): ?>
                                <tr style="border-bottom: 1px solid #f1f2f6;">
                                    <td style="padding: 10px;"><?= htmlspecialchars(date('F Y', strtotime($mRow['p_month'].'-01'))) ?></td>
                                    <td style="padding: 10px; text-align: right; font-weight: bold; color: #2980b9;"><?= number_format((float)$mRow['total'], 2) ?></td>
                                </tr>
                            <?php endforeach; ?>
                        <?php endif; ?>
                    </table>
                </div>
            </div>
        </div>
        <?php endif; ?>



        <div class="glass-panel dash-records" id="records-section">
            <?php
            $listTitle = 'All Call Records';
            if ($userRole === 'Editor') {
                $isDefaultView = !isset($_GET['category']) && !isset($_GET['search']) && !isset($_GET['month']) && !isset($_GET['payment_status']) && !isset($_GET['operator_stage']) && !isset($_GET['year']) && !isset($_GET['passport_status']);
                $listTitle = $isDefaultView ? 'My Daily Assigned Calls' : 'All My Assigned Calls';
            }
            if ($displayRole === 'Finance') $listTitle = 'Confirmed Inquiries';
            if ($displayRole === 'Operator') $listTitle = 'Operator Dashboard - Confirmed Details';
            
            if (!empty($category)) {
                $listTitle = $category . ' Leads';
            } elseif (!empty($search)) {
                $listTitle = 'Search Results';
            }
            
            // Build return URL for context-aware navigation
            $currentParams = $_GET;
            $returnUrl = 'index.php?' . http_build_query($currentParams);
            $returnUrlEncoded = urlencode($returnUrl);
            $start = $totalRecords === 0 ? 0 : $offset + 1;
            $end   = min($offset + $perPage, $totalRecords);
            ?>
            <div class="dash-records-head">
                <div>
                    <h2>All Inquiry Records</h2>
                    <p>
                        <?php if ($listTitle !== 'All Call Records'): ?><?= htmlspecialchars($listTitle) ?> · <?php endif; ?>
                        Showing <strong><?= $start ?></strong>–<strong><?= $end ?></strong> of <strong><?= number_format($totalRecords) ?></strong>
                    </p>
                </div>
                <a href="index.php?category=RecentUpdates&year=<?= $selectedYear ?><?= $viewAsOperator ? '&view_as=Operator' : '' ?>#records-section" class="dash-recent-link">
                   <i class="fa-solid fa-clock-rotate-left"></i> Recent Updates
                   <span><?= $stats['recent_updates'] ?></span>
                </a>
            </div>
            <div class="dash-table-scroll">
                <table class="main-table">
                    <thead>
                        <tr>
                            <th class="col-id">ID</th>
                            <th class="col-payment">Payment</th>
                            <th class="col-details">Inquiry Details</th>
                            <th class="col-name">Name</th>
                            <th class="col-phone">Phone</th>
                            <th class="col-address">Address</th>
                            <th class="col-date">Date / Month</th>
                            <th class="col-status">Status</th>
                            <th class="col-management">Management</th>
                            <th class="col-assigned">Assigned</th>
                            <th class="col-actions">Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php if(empty($inquiries)): ?>
                            <tr><td colspan="11" class="text-center">No records found.</td></tr>
                        <?php else: ?>
                            <?php foreach($inquiries as $req): ?>
                                <?php
                                $mgmtBadge = managementAssignmentBadge($req);
                                $mgmtRowClass = ($userRole === 'Operator' && $mgmtBadge[1] === 'management-new') ? 'management-new-row' : '';
                                ?>
                                <tr<?= $mgmtRowClass !== '' ? ' class="' . $mgmtRowClass . '"' : '' ?>>
                                    <td class="col-id">
                                        <?php
                                        $idAssigned = trim((string)(($req['assigned_full_name'] ?: $req['assigned_user']) ?? ''));
                                        $idDate = '';
                                        if (!empty($req['updated_at'])) {
                                            $idDateTs = strtotime((string)$req['updated_at']);
                                            if ($idDateTs) {
                                                $idDate = date('d/m/y', $idDateTs);
                                            }
                                        }
                                        $idMonth = trim((string)($req['month'] ?? ''));
                                        $idWhen = $idDate;
                                        if ($idMonth !== '') {
                                            $idWhen = $idWhen !== '' ? ($idWhen . ' · ' . $idMonth) : $idMonth;
                                        }
                                        $idAddress = trim((string)($req['location_name'] ?? ''));
                                        $idPhone = trim((string)($req['phone_number'] ?? ''));
                                        ?>
                                        <button type="button" class="dash-id-btn"
                                            data-assigned="<?= htmlspecialchars($idAssigned !== '' ? $idAssigned : '—', ENT_QUOTES, 'UTF-8') ?>"
                                            data-when="<?= htmlspecialchars($idWhen !== '' ? $idWhen : '—', ENT_QUOTES, 'UTF-8') ?>"
                                            data-address="<?= htmlspecialchars($idAddress !== '' ? $idAddress : '—', ENT_QUOTES, 'UTF-8') ?>"
                                            data-phone="<?= htmlspecialchars($idPhone !== '' ? $idPhone : '—', ENT_QUOTES, 'UTF-8') ?>">
                                            <code class="dash-id-badge"><?= str_pad($req['id'], 4, "0", STR_PAD_LEFT) ?></code>
                                        </button>
                                    </td>
                                    <td class="col-payment">
                                        <?php if ($req['status'] === 'Confirm'): ?>
                                            <?php if (!empty($req['is_balance_paid'])): ?>
                                                <span class="pay-badge pay-badge-full" title="Full payment completed"><i class="fa-solid fa-circle-check"></i> Full Paid</span>
                                            <?php elseif (($req['advanced_payment'] ?? 0) > 0): ?>
                                                <span class="pay-badge pay-badge-advance" title="Advance payment received"><i class="fa-solid fa-hourglass-half"></i> Advanced</span>
                                            <?php else: ?>
                                                <span class="pay-badge pay-badge-unpaid" title="No payment recorded"><i class="fa-solid fa-circle-xmark"></i> Unpaid</span>
                                            <?php endif; ?>
                                            <?php if ($displayRole === 'Operator'): ?>
                                                <?php
                                                $ps = $req['passport_status'] ?? null;
                                                if ($ps === 'Completed'):
                                                ?>
                                                    <span class="pay-badge" style="display:block;margin-top:4px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;" title="Passport Completed"><i class="fa-solid fa-passport"></i> Passport ✓</span>
                                                <?php elseif ($ps === 'In Progress'): ?>
                                                    <span class="pay-badge" style="display:block;margin-top:4px;background:#fff3cd;color:#856404;border:1px solid #ffeeba;" title="Passport In Progress"><i class="fa-solid fa-passport"></i> Passport…</span>
                                                <?php else: ?>
                                                    <span class="pay-badge" style="display:block;margin-top:4px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;" title="No Passport"><i class="fa-solid fa-passport"></i> No Pass.</span>
                                                <?php endif; ?>
                                            <?php endif; ?>
                                        <?php endif; ?>
                                    </td>
                                    <td class="col-details">
                                        <?php $detailText = trim((string)($req['details'] ?? '')); ?>
                                        <button type="button" class="dash-details-btn"<?php if ($detailText !== ''): ?> data-full="<?= htmlspecialchars($detailText, ENT_QUOTES, 'UTF-8') ?>"<?php endif; ?>>
                                            <span class="dash-details"><?= htmlspecialchars($detailText !== '' ? $detailText : '—') ?></span>
                                        </button>
                                    </td>
                                    <td class="col-name">
                                        <strong><?= htmlspecialchars($req['customer_name'] ?: 'Unknown') ?></strong>
                                        <?php if($req['customer_category']): ?>
                                            <span class="badge badge-<?= strtolower($req['customer_category']) ?>" style="font-size:0.72em;padding:2px 6px;display:inline-block;margin-top:2px;"><?= htmlspecialchars($req['customer_category']) ?></span>
                                        <?php endif; ?>
                                    </td>
                                    <td class="col-phone"><a href="tel:<?= htmlspecialchars($req['phone_number']) ?>"><?= htmlspecialchars($req['phone_number']) ?></a></td>
                                    <td class="col-address"><span class="dash-address"><?= htmlspecialchars($req['location_name']) ?></span></td>
                                    <td class="col-date">
                                        <?= date('d/m/y', strtotime($req['updated_at'])) ?>
                                        <?php if($req['month']): ?><div style="font-size:0.85em;color:var(--gray);font-weight:500;"><?= htmlspecialchars(substr($req['month'],0,3)) ?></div><?php endif; ?>
                                    </td>
                                    <td class="col-status">
                                        <?php $displayStatus = ($req['operator_stage'] === 'Complete') ? 'Complete' : $req['status']; ?>
                                        <span class="badge <?= getBadgeClass($displayStatus) ?>" style="font-size:0.82em;padding:3px 8px;"><?= htmlspecialchars($displayStatus) ?></span>
                                    </td>
                                    <td class="col-management">
                                        <span class="management-badge <?= htmlspecialchars($mgmtBadge[1]) ?>"><?= htmlspecialchars($mgmtBadge[0]) ?></span>
                                    </td>
                                    <td class="col-assigned"><?= htmlspecialchars(($req['assigned_full_name'] ?: $req['assigned_user']) ?: '—') ?></td>
                                    <td class="col-actions">
                                        <div class="dash-row-actions">
                                            <?php
                                            $waUrl = thinulaka_whatsapp_url(
                                                $req['phone_number'] ?? '',
                                                $req['customer_name'] ?? '',
                                                $req['status'] ?? '',
                                                $req['is_balance_paid'] ?? 0,
                                                $req['advanced_payment'] ?? 0
                                            );
                                            if ($waUrl):
                                            ?>
                                                <a href="<?= htmlspecialchars($waUrl, ENT_QUOTES, 'UTF-8') ?>" target="_blank" rel="noopener noreferrer" class="dash-wa-btn" title="Send WhatsApp" aria-label="Send WhatsApp"><i class="fa-brands fa-whatsapp"></i></a>
                                            <?php endif; ?>
                                            <div class="dash-action-menu">
                                                <button type="button" class="dash-action-toggle" aria-haspopup="true" aria-expanded="false" aria-label="Row actions"><i class="fa-solid fa-ellipsis-vertical"></i></button>
                                                <div class="dash-action-panel" hidden>
                                                    <a href="edit.php?id=<?= $req['id'] ?>&return_url=<?= $returnUrlEncoded ?>" title="Edit"><i class="fa-solid fa-pen"></i> Edit Details</a>
                                                    <?php if($req['status'] === 'Confirm' && $req['operator_stage'] !== 'Complete'): ?>
                                                        <a href="operator_edit.php?id=<?= $req['id'] ?>&return_url=<?= $returnUrlEncoded ?>" title="Process Details"><i class="fa-solid fa-list-check"></i> Process Inquiry</a>
                                                    <?php elseif($req['operator_stage'] === 'Complete'): ?>
                                                        <a href="operator_edit.php?id=<?= $req['id'] ?>&return_url=<?= $returnUrlEncoded ?>" title="View Details"><i class="fa-solid fa-circle-check"></i> View</a>
                                                    <?php endif; ?>
                                                    <?php if($req['status'] === 'Confirm'): ?>
                                                        <a href="invoice.php?id=<?= $req['id'] ?>&type=advanced" target="_blank" title="Advanced Invoice"><i class="fa-solid fa-file-invoice-dollar"></i> Advance Invoice</a>
                                                        <a href="invoice.php?id=<?= $req['id'] ?>&type=full" target="_blank" title="Full Invoice"><i class="fa-solid fa-file-invoice"></i> Full Invoice</a>
                                                        <a href="javascript:void(0)" onclick="printID(<?= $req['id'] ?>, '<?= htmlspecialchars($req['id_card_number']) ?>')" title="Print Customer ID"><i class="fa-solid fa-id-card"></i> Print ID</a>
                                                    <?php endif; ?>
                                                </div>
                                            </div>
                                        </div>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        <?php endif; ?>
                    </tbody>
                </table>
            </div>

            <?php
            // Build base URL for pagination links (preserve all current GET params except page)
            $paginationParams = $_GET;
            unset($paginationParams['page']);
            $baseUrl = 'index.php?' . http_build_query($paginationParams);

            $start = $totalRecords === 0 ? 0 : $offset + 1;
            $end   = min($offset + $perPage, $totalRecords);
            ?>

            <div class="pagination-wrapper">
                <div class="pagination-info">
                    <i class="fa-solid fa-list"></i>
                    Showing <strong><?= $start ?></strong> – <strong><?= $end ?></strong>
                    of <strong><?= number_format($totalRecords) ?></strong> records
                    &nbsp;|&nbsp; Page <strong><?= $page ?></strong> of <strong><?= $totalPages ?></strong>
                </div>

                <?php if ($totalPages > 1): ?>
                <div class="pagination">
                    <?php if ($page > 1): ?>
                        <a href="<?= $baseUrl ?>&page=1#records-section" title="First page">&laquo;</a>
                        <a href="<?= $baseUrl ?>&page=<?= $page - 1 ?>#records-section" title="Previous page">&lsaquo;</a>
                    <?php else: ?>
                        <span class="pg-disabled">&laquo;</span>
                        <span class="pg-disabled">&lsaquo;</span>
                    <?php endif; ?>

                    <?php
                    $window    = 3;
                    $pageStart = max(1, $page - $window);
                    $pageEnd   = min($totalPages, $page + $window);
                    if ($pageStart > 1): ?>
                        <a href="<?= $baseUrl ?>&page=1#records-section">1</a>
                        <?php if ($pageStart > 2): ?><span class="pg-ellipsis">…</span><?php endif; ?>
                    <?php endif; ?>

                    <?php for ($p = $pageStart; $p <= $pageEnd; $p++): ?>
                        <?php if ($p === $page): ?>
                            <span class="pg-current"><?= $p ?></span>
                        <?php else: ?>
                            <a href="<?= $baseUrl ?>&page=<?= $p ?>#records-section"><?= $p ?></a>
                        <?php endif; ?>
                    <?php endfor; ?>

                    <?php if ($pageEnd < $totalPages): ?>
                        <?php if ($pageEnd < $totalPages - 1): ?><span class="pg-ellipsis">…</span><?php endif; ?>
                        <a href="<?= $baseUrl ?>&page=<?= $totalPages ?>#records-section"><?= $totalPages ?></a>
                    <?php endif; ?>

                    <?php if ($page < $totalPages): ?>
                        <a href="<?= $baseUrl ?>&page=<?= $page + 1 ?>#records-section" title="Next page">&rsaquo;</a>
                        <a href="<?= $baseUrl ?>&page=<?= $totalPages ?>#records-section" title="Last page">&raquo;</a>
                    <?php else: ?>
                        <span class="pg-disabled">&rsaquo;</span>
                        <span class="pg-disabled">&raquo;</span>
                    <?php endif; ?>
                </div>
                <?php endif; ?>
            </div>

        </div>
    </div>
    </div>
    </div>

    <div id="idCardModal" class="id-modal-overlay">
        <div class="id-modal">
            <i class="fa-solid fa-id-card" style="font-size: 3em; color: #61219F; margin-bottom: 15px;"></i>
            <h3>Assign ID Number</h3>
            <p style="color: #7f8c8d; margin-bottom: 20px; font-size: 0.9em;">Please enter the card number for this customer.</p>
            <input type="text" id="modalCardNo" placeholder="e.g. A - 10" onkeydown="if(event.key==='Enter') executePrint()">
            <div class="id-modal-btns">
                <button class="btn-cancel" onclick="closeIdModal()">Cancel</button>
                <button class="btn-print" onclick="executePrint()">Print ID Card</button>
            </div>
        </div>
    </div>

    <script>
    let currentPrintId = null;

    function printID(id, currentNum) {
        currentPrintId = id;
        document.getElementById('modalCardNo').value = currentNum || '';
        document.getElementById('idCardModal').style.display = 'flex';
        setTimeout(() => document.getElementById('modalCardNo').focus(), 100);
    }

    function closeIdModal() {
        document.getElementById('idCardModal').style.display = 'none';
        currentPrintId = null;
    }

    function executePrint() {
        const id = currentPrintId;
        const cardNo = document.getElementById('modalCardNo').value;
        
        if (cardNo === '') {
            if (!confirm('No card number entered. Print anyway?')) return;
        }

        // Save to DB in background
        const formData = new FormData();
        formData.append('id', id);
        formData.append('card_number', cardNo);
        fetch('update_card_number.php', { method: 'POST', body: formData });
        
        // Open print page
        window.open('print_customer_id.php?id=' + id + '&card_no=' + encodeURIComponent(cardNo), '_blank');
        closeIdModal();
    }

    // New Arrivals panel toggle
    function toggleNewArrivals(e) {
        e.stopPropagation();
        const p = document.getElementById('new-arrivals-panel');
        if (!p) return;
        p.style.display = (p.style.display === 'none' || p.style.display === '') ? 'flex' : 'none';
        if (p.style.display === 'flex') p.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
    }

    // Passport breakdown toggle
    function togglePassportBreakdown(e) {
        e.stopPropagation();
        const bd = document.getElementById('passport-breakdown');
        if (!bd) return;
        bd.style.display = bd.style.display === 'none' ? 'flex' : 'none';
    }

    // Auto-expand passport breakdown if a passport_status filter is active
    <?php if ($passport_status_filter): ?>
    document.addEventListener('DOMContentLoaded', function() {
        const bd = document.getElementById('passport-breakdown');
        if (bd) bd.style.display = 'flex';
    });
    <?php endif; ?>

    // Payment breakdown toggle
    function togglePaymentBreakdown(e) {
        e.stopPropagation();
        const bd = document.getElementById('payment-breakdown');
        if (!bd) return;
        bd.style.display = bd.style.display === 'none' ? 'flex' : 'none';
    }

    // Auto-expand payment breakdown if a payment_status filter is active
    <?php if ($payment_status): ?>
    document.addEventListener('DOMContentLoaded', function() {
        const bd = document.getElementById('payment-breakdown');
        if (bd) bd.style.display = 'flex';
    });
    <?php endif; ?>

    function togglePastMonths() {
        const container = document.getElementById('month-tiles-container');
        const btn = document.getElementById('toggle-past-months');
        if (!container || !btn) return;
        const pastTiles = container.querySelectorAll('.month-tile.past-month');
        const isHidden = btn.getAttribute('data-shown') !== 'true';
        
        pastTiles.forEach(tile => {
            if (isHidden) {
                tile.style.removeProperty('display');
            } else {
                if (!tile.classList.contains('active')) {
                    tile.style.display = 'none';
                }
            }
        });
        
        if (isHidden) {
            btn.setAttribute('data-shown', 'true');
            btn.innerHTML = '<i class="fa-solid fa-eye-slash"></i> Hide Past Months';
        } else {
            btn.setAttribute('data-shown', 'false');
            btn.innerHTML = '<i class="fa-solid fa-eye"></i> Show Past Months';
        }
    }
    </script>
    <script>
    (function () {
        var sidebar = document.getElementById('dash-sidebar');
        var backdrop = document.getElementById('dash-backdrop');
        var toggle = document.getElementById('dash-sidebar-toggle');
        if (!sidebar || !toggle) return;
        function setOpen(open) {
            sidebar.classList.toggle('is-open', open);
            if (backdrop) backdrop.classList.toggle('is-open', open);
            toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
        }
        toggle.addEventListener('click', function () {
            setOpen(!sidebar.classList.contains('is-open'));
        });
        if (backdrop) {
            backdrop.addEventListener('click', function () { setOpen(false); });
        }
    })();
    </script>
    <script>
    (function () {
        var openPanel = null;
        var openWrap = null;
        var openBtn = null;

        function closeMenu() {
            if (!openPanel) return;
            openPanel.hidden = true;
            openPanel.style.top = '';
            openPanel.style.left = '';
            openPanel.style.visibility = '';
            if (openWrap && openPanel.parentNode !== openWrap) {
                openWrap.appendChild(openPanel);
            }
            if (openBtn) openBtn.setAttribute('aria-expanded', 'false');
            openPanel = null;
            openWrap = null;
            openBtn = null;
        }

        function placeMenu(panel, btn) {
            var rect = btn.getBoundingClientRect();
            if (rect.bottom < 0 || rect.top > window.innerHeight || rect.right < 0 || rect.left > window.innerWidth) {
                closeMenu();
                return;
            }
            panel.style.position = 'fixed';
            panel.style.visibility = 'hidden';
            panel.hidden = false;
            var pw = panel.offsetWidth;
            var ph = panel.offsetHeight;
            var left = rect.right - pw;
            if (left < 8) left = 8;
            if (left + pw > window.innerWidth - 8) left = Math.max(8, window.innerWidth - 8 - pw);
            var top = rect.bottom + 6;
            if (top + ph > window.innerHeight - 8) top = rect.top - ph - 6;
            if (top < 8) top = 8;
            var actions = btn.closest('.dash-row-actions');
            var wa = actions ? actions.querySelector('.dash-wa-btn') : null;
            if (wa) {
                var wr = wa.getBoundingClientRect();
                var coversWa = left < wr.right && (left + pw) > wr.left && top < wr.bottom && (top + ph) > wr.top;
                if (coversWa) {
                    var above = rect.top - ph - 6;
                    if (above >= 8) top = above;
                }
            }
            panel.style.top = top + 'px';
            panel.style.left = left + 'px';
            panel.style.visibility = '';
        }

        function openMenu(btn) {
            var wrap = btn.closest('.dash-action-menu');
            if (!wrap) return;
            if (openBtn === btn && openPanel) {
                closeMenu();
                return;
            }
            var panel = wrap.querySelector('.dash-action-panel');
            if (!panel) return;
            closeMenu();
            document.body.appendChild(panel);
            openPanel = panel;
            openWrap = wrap;
            openBtn = btn;
            btn.setAttribute('aria-expanded', 'true');
            placeMenu(panel, btn);
        }

        document.addEventListener('click', function (e) {
            var btn = e.target.closest('.dash-action-toggle');
            if (btn) {
                e.preventDefault();
                openMenu(btn);
                return;
            }
            if (openPanel && openPanel.contains(e.target)) {
                setTimeout(closeMenu, 0);
                return;
            }
            if (openPanel) closeMenu();
        });

        document.addEventListener('keydown', function (e) {
            if (e.key === 'Escape' && openPanel) {
                e.preventDefault();
                closeMenu();
            }
        });

        window.addEventListener('scroll', function () {
            if (openPanel && openBtn) placeMenu(openPanel, openBtn);
        }, true);

        window.addEventListener('resize', function () {
            if (openPanel && openBtn) placeMenu(openPanel, openBtn);
        });
    })();
    </script>
    <div id="dash-details-pop" class="dash-details-pop" role="tooltip" hidden></div>
    <script>
    (function () {
        var pop = document.getElementById('dash-details-pop');
        if (!pop) return;
        var current = null;

        function hidePop() {
            pop.hidden = true;
            pop.textContent = '';
            current = null;
        }

        function showPop(btn) {
            var text = btn.getAttribute('data-full');
            if (!text) {
                hidePop();
                return;
            }
            var idPop = document.getElementById('dash-id-pop');
            if (idPop) idPop.hidden = true;
            current = btn;
            pop.textContent = text;
            pop.hidden = false;
            var rect = btn.getBoundingClientRect();
            var width = Math.min(340, window.innerWidth - 16);
            pop.style.width = width + 'px';
            var left = rect.left;
            if (left + width > window.innerWidth - 8) left = window.innerWidth - 8 - width;
            if (left < 8) left = 8;
            var top = rect.bottom + 6;
            pop.style.left = left + 'px';
            pop.style.top = top + 'px';
            var height = pop.offsetHeight;
            if (top + height > window.innerHeight - 8) {
                top = rect.top - height - 6;
                if (top < 8) top = 8;
                pop.style.top = top + 'px';
            }
        }

        var canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;

        if (canHover) {
            document.addEventListener('mouseover', function (e) {
                var btn = e.target.closest ? e.target.closest('.dash-details-btn') : null;
                if (btn) showPop(btn);
            });
            document.addEventListener('mouseout', function (e) {
                var btn = e.target.closest ? e.target.closest('.dash-details-btn') : null;
                if (!btn || btn !== current) return;
                var next = e.relatedTarget;
                if (next && btn.contains(next)) return;
                if (btn !== document.activeElement) hidePop();
            });
        }
        document.addEventListener('focusin', function (e) {
            var btn = e.target.closest ? e.target.closest('.dash-details-btn') : null;
            if (btn) showPop(btn);
        });
        document.addEventListener('focusout', function (e) {
            var btn = e.target.closest ? e.target.closest('.dash-details-btn') : null;
            if (btn && btn === current) hidePop();
        });
        document.addEventListener('click', function (e) {
            var btn = e.target.closest ? e.target.closest('.dash-details-btn') : null;
            if (!btn) {
                if (!pop.hidden && !pop.contains(e.target)) hidePop();
                return;
            }
            if (canHover) return;
            if (current === btn && !pop.hidden) hidePop();
            else showPop(btn);
        });
        document.addEventListener('keydown', function (e) {
            if (e.key === 'Escape' && !pop.hidden) hidePop();
        });
        window.addEventListener('scroll', function () {
            if (current) showPop(current);
        }, true);
        window.addEventListener('resize', function () {
            if (current) showPop(current);
        });
    })();
    </script>
    <div id="dash-id-pop" class="dash-id-pop" role="tooltip" hidden>
        <p><strong>Assigned:</strong> <span data-slot="assigned"></span></p>
        <p><strong>Date / Month:</strong> <span data-slot="when"></span></p>
        <p><strong>Address:</strong> <span data-slot="address"></span></p>
        <p><strong>Phone:</strong> <span data-slot="phone"></span></p>
    </div>
    <script>
    (function () {
        var pop = document.getElementById('dash-id-pop');
        if (!pop) return;
        var slots = {
            assigned: pop.querySelector('[data-slot="assigned"]'),
            when: pop.querySelector('[data-slot="when"]'),
            address: pop.querySelector('[data-slot="address"]'),
            phone: pop.querySelector('[data-slot="phone"]')
        };
        var current = null;
        var ignoreNextClick = false;

        function hidePop() {
            pop.hidden = true;
            current = null;
            ignoreNextClick = false;
        }

        function showPop(btn) {
            var details = document.getElementById('dash-details-pop');
            if (details) details.hidden = true;
            slots.assigned.textContent = btn.getAttribute('data-assigned') || '—';
            slots.when.textContent = btn.getAttribute('data-when') || '—';
            slots.address.textContent = btn.getAttribute('data-address') || '—';
            slots.phone.textContent = btn.getAttribute('data-phone') || '—';
            current = btn;
            pop.hidden = false;
            var rect = btn.getBoundingClientRect();
            var width = Math.min(280, window.innerWidth - 16);
            pop.style.width = width + 'px';
            var left = rect.left;
            if (left + width > window.innerWidth - 8) left = window.innerWidth - 8 - width;
            if (left < 8) left = 8;
            var top = rect.bottom + 6;
            pop.style.left = left + 'px';
            pop.style.top = top + 'px';
            var height = pop.offsetHeight;
            if (top + height > window.innerHeight - 8) {
                top = rect.top - height - 6;
                if (top < 8) top = 8;
                pop.style.top = top + 'px';
            }
        }

        var canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;
        if (canHover) {
            document.addEventListener('mouseover', function (e) {
                var btn = e.target.closest ? e.target.closest('.dash-id-btn') : null;
                if (btn) showPop(btn);
            });
            document.addEventListener('mouseout', function (e) {
                var btn = e.target.closest ? e.target.closest('.dash-id-btn') : null;
                if (!btn || btn !== current) return;
                var next = e.relatedTarget;
                if (next && (btn.contains(next) || pop.contains(next))) return;
                if (btn !== document.activeElement) hidePop();
            });
        }
        document.addEventListener('focusin', function (e) {
            var btn = e.target.closest ? e.target.closest('.dash-id-btn') : null;
            if (!btn) return;
            showPop(btn);
            if (!canHover) ignoreNextClick = true;
        });
        document.addEventListener('focusout', function (e) {
            var btn = e.target.closest ? e.target.closest('.dash-id-btn') : null;
            if (btn && btn === current) hidePop();
        });
        document.addEventListener('click', function (e) {
            var btn = e.target.closest ? e.target.closest('.dash-id-btn') : null;
            if (!btn) {
                ignoreNextClick = false;
                if (!pop.hidden && !pop.contains(e.target)) hidePop();
                return;
            }
            if (canHover) return;
            if (ignoreNextClick) {
                ignoreNextClick = false;
                return;
            }
            if (current === btn && !pop.hidden) hidePop();
            else showPop(btn);
        });
        document.addEventListener('keydown', function (e) {
            if (e.key === 'Escape' && !pop.hidden) hidePop();
        });
        window.addEventListener('scroll', function () {
            if (current) showPop(current);
        }, true);
        window.addEventListener('resize', function () {
            if (current) showPop(current);
        });
    })();
    </script>
</body>
</html>
