<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: index");
    exit;
}

// Include database connection
include 'db.php';

// Verify role-based access
checkAccess();

// Verify project access if project_id is provided
if (isset($_GET['project_id']) && !empty($_GET['project_id'])) {
    verifyProjectAccess($_GET['project_id'], $conn);
}
if (isset($_POST['project_id']) && !empty($_POST['project_id'])) {
    verifyProjectAccess($_POST['project_id'], $conn);
}

// Initialize variables
$selectedProject = null;
$orders = [];
$totalAmountSum = 0;
$totalPaid = 0;
$totalRemSum = 0;
$orderCount = 0;
$alertType = '';

// Fetch vendor options for dropdown (unique, alphabetical)
$vendorOptions = '';
try {
    $vendorNames = [];
    $vendorSql = "SELECT DISTINCT vendor_name FROM vendors WHERE vendor_name IS NOT NULL AND vendor_name <> '' ORDER BY vendor_name ASC";
    $vendorStmt = mysqli_prepare($conn, $vendorSql);
    if ($vendorStmt) {
        mysqli_stmt_execute($vendorStmt);
        $vendorRes = mysqli_stmt_get_result($vendorStmt);
        while ($v = mysqli_fetch_assoc($vendorRes)) {
            $name = $v['vendor_name'] ?? '';
            if ($name === '') continue;
            $vendorNames[] = $name;
        }
        mysqli_stmt_close($vendorStmt);
    }

    foreach ($vendorNames as $vn) {
        $safe = htmlspecialchars($vn, ENT_QUOTES, 'UTF-8');
        $vendorOptions .= '<option value="' . $safe . '">' . $safe . '</option>';
    }
} catch (Throwable $e) {
    // Keep dropdown empty on failure; do not break the page
}

// Handle redirect success messages
if (isset($_GET['payment_success'])) {
    $alertMessage = 'Payment successful and updated';
    $alertType = 'success';
}

// Handle order addition/update (POST)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && ($_POST['action'] === 'add_order' || $_POST['action'] === 'edit_order')) {
    $projectId = intval($_POST['project_id']);
    $category = $_POST['category']; // material or labor
    $vendorName = ($category !== 'labor') ? mysqli_real_escape_string($conn, $_POST['vendor_name']) : NULL;
    $item = ($category !== 'labor') ? mysqli_real_escape_string($conn, $_POST['item']) : 'Labor';
    $totalAmount = floatval($_POST['total_amount']);
    $paidAmount = floatval($_POST['paid_amount'] ?? 0);
    $remainingAmount = max(0, $totalAmount - $paidAmount);
    $orderDate = mysqli_real_escape_string($conn, $_POST['order_date']);
    $recordedBy = mysqli_real_escape_string($conn, $_POST['recorded_by']);
    
    // Construct dynamic details JSON
    $details = [];
    if ($category === 'labor') {
        $details = [
            'labor_date' => $_POST['labor_date'] ?? '',
            'labor_name' => $_POST['labor_name'] ?? '',
            'rate' => $_POST['labor_rate'] ?? '',
            'total' => $totalAmount
        ];
    } else {
        switch ($item) {
            case 'steel': // Handle multiple steel items
                $steel_items = [];
                if (isset($_POST['steel_mm']) && is_array($_POST['steel_mm'])) {
                    foreach ($_POST['steel_mm'] as $key => $mm) {
                        $steel_items[] = [
                            'mm' => mysqli_real_escape_string($conn, $mm),
                            'nug' => floatval($_POST['steel_nug'][$key] ?? 0),
                            'weight' => floatval($_POST['steel_weight'][$key] ?? 0),
                            'rate' => floatval($_POST['steel_rate'][$key] ?? 0),
                            'total' => (floatval($_POST['steel_weight'][$key] ?? 0) * floatval($_POST['steel_rate'][$key] ?? 0))
                        ];
                    }
                }
                $details = ['steel_items' => $steel_items];
                break;
            case 'cement':
                $details = [
                    'bag' => $_POST['cement_bag'] ?? '',
                    'rate' => $_POST['cement_rate'] ?? '',
                    'total' => $totalAmount
                ];
                break;
            case 'tiles': // Handle multiple tiles items
                $tiles_items = [];
                if (isset($_POST['tiles_name']) && is_array($_POST['tiles_name'])) {
                    foreach ($_POST['tiles_name'] as $key => $tiles_name) {
                        $tiles_items[] = [
                            'tiles_name' => mysqli_real_escape_string($conn, $tiles_name),
                            'size' => mysqli_real_escape_string($conn, $_POST['tiles_size'][$key] ?? ''),
                            'tiles_box' => floatval($_POST['tiles_box'][$key] ?? 0),
                            'total_square_foot' => floatval($_POST['tiles_sqft'][$key] ?? 0),
                            'rate' => floatval($_POST['tiles_rate'][$key] ?? 0),
                            'total' => (floatval($_POST['tiles_sqft'][$key] ?? 0) * floatval($_POST['tiles_rate'][$key] ?? 0))
                        ];
                    }
                }
                $details = ['tiles_items' => $tiles_items];
                break;
            case 'etu':
                $details = [
                    'fero' => $_POST['etu_fero'] ?? '',
                    'nug' => $_POST['etu_nug'] ?? '',
                    'rate' => $_POST['etu_rate'] ?? '',
                    'total' => $totalAmount
                ];
                break;
        }
    }
    $jsonDetails = json_encode($details);

    if ($projectId > 0 && !empty($category)) {
        if ($_POST['action'] === 'add_order') {
            $sql = "INSERT INTO placed_orders (project_id, category, vendor_name, item, details, total_amount, paid_amount, remaining_amount, order_date, recorded_by, created_by_user_id) 
                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            $stmt = mysqli_prepare($conn, $sql);
            mysqli_stmt_bind_param($stmt, 'issssdddssi', 
                $projectId, $category, $vendorName, $item, $jsonDetails, 
                $totalAmount, $paidAmount, $remainingAmount, $orderDate, $recordedBy, $_SESSION['user_id']
            );
        } else {
            $orderId = intval($_POST['order_id']);
            // When editing, we also allow updating paid_amount manually or via logic
            $sql = "UPDATE placed_orders SET 
                    category = ?, vendor_name = ?, item = ?, details = ?, 
                    total_amount = ?, paid_amount = ?, remaining_amount = ?, 
                    order_date = ?, recorded_by = ? 
                    WHERE id = ? AND project_id = ?";
            $stmt = mysqli_prepare($conn, $sql);
            mysqli_stmt_bind_param($stmt, 'ssssdddssii', 
                $category, $vendorName, $item, $jsonDetails, 
                $totalAmount, $paidAmount, $remainingAmount, $orderDate, $recordedBy, 
                $orderId, $projectId
            );
        }

        if (mysqli_stmt_execute($stmt)) {
            mysqli_stmt_close($stmt);
            // Update success redirects
            if ($_POST['action'] === 'edit_order') $_SESSION['order_updated'] = true;
            header("Location:".BASE_URL."place_order/" . $projectId);
            exit;
        } else {
            $alertMessage = 'Error placing order: ' . mysqli_error($conn);
            $alertType = 'danger';
        }
        mysqli_stmt_close($stmt);
    }
}

// AJAX to get order data
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['action']) && $_GET['action'] === 'get_order') {
    $orderId = intval($_GET['order_id']);
    header('Content-Type: application/json');
    $fetchQuery = "SELECT * FROM placed_orders WHERE id = ?";
    $stmt = mysqli_prepare($conn, $fetchQuery);
    mysqli_stmt_bind_param($stmt, 'i', $orderId);
    mysqli_stmt_execute($stmt);
    $res = mysqli_stmt_get_result($stmt);
    if ($data = mysqli_fetch_assoc($res)) {
        echo json_encode(['success' => true, 'data' => $data]);
    } else {
        echo json_encode(['success' => false]);
    }
    exit;
}

// Handle order deletion
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'delete_order') {
    $orderId = intval($_POST['order_id']);
    $projectId = intval($_POST['project_id']);
    $deleteQuery = "DELETE FROM placed_orders WHERE id = ? AND project_id = ?";
    $stmt = mysqli_prepare($conn, $deleteQuery);
    mysqli_stmt_bind_param($stmt, 'ii', $orderId, $projectId);
    if (mysqli_stmt_execute($stmt)) {
        header("Location:".BASE_URL."place_order/" . $projectId);
        exit;
    }
}

// Fetch Project and Orders
if (isset($_GET['project_id'])) {
    $projectId = intval($_GET['project_id']);
    if ($projectId > 0) {
        $projectQuery = "SELECT p.id, p.project_name, c.client_name FROM projects p JOIN clients c ON p.client_id = c.id WHERE p.id = ?";
        $stmt = mysqli_prepare($conn, $projectQuery);
        mysqli_stmt_bind_param($stmt, 'i', $projectId);
        mysqli_stmt_execute($stmt);
        $projectResult = mysqli_stmt_get_result($stmt);
        if ($selectedProject = mysqli_fetch_assoc($projectResult)) {
            $selectedProject['project_id_display'] = 'PRJ-' . str_pad($selectedProject['id'], 3, '0', STR_PAD_LEFT);
        }
        mysqli_stmt_close($stmt);

        $orderQuery = "SELECT * FROM placed_orders WHERE project_id = ? ORDER BY order_date DESC";
        $stmt = mysqli_prepare($conn, $orderQuery);
        mysqli_stmt_bind_param($stmt, 'i', $projectId);
        mysqli_stmt_execute($stmt);
        $res = mysqli_stmt_get_result($stmt);
        while ($row = mysqli_fetch_assoc($res)) {
            $orders[] = $row;
            $totalAmountSum += $row['total_amount'];
            $totalPaid += $row['paid_amount'];
            $orderCount++;
        }
        mysqli_stmt_close($stmt);
    }
}

// Get user name
$current_user_name = 'User';
$userQuery = "SELECT name FROM users WHERE id = ?";
$stmt = mysqli_prepare($conn, $userQuery);
mysqli_stmt_bind_param($stmt, 'i', $_SESSION['user_id']);
mysqli_stmt_execute($stmt);
$uRes = mysqli_stmt_get_result($stmt);
if ($userRow = mysqli_fetch_assoc($uRes)) $current_user_name = $userRow['name'];
mysqli_stmt_close($stmt);
$totalRemSum = $totalAmountSum - $totalPaid;

$projectsList = getUserProjects($conn);
$projectOptions = '';
foreach ($projectsList as $p) {
    $sel = (isset($_GET['project_id']) && $_GET['project_id'] == $p['id']) ? ' selected' : '';
    $projectOptions .= '<option value="' . $p['id'] . '"' . $sel . '>' . htmlspecialchars($p['project_name']) . ' - ' . htmlspecialchars($p['client_name']) . '</option>';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Place Order - ConstructCRM</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
    <style>
    :root {
        --primary-color: #977C49;
        --primary-dark: #7a633a;
        --primary-light: #f8f5ef;
        --secondary-color: #343a40;
        --secondary-light: #f8f9fa;
        --success-color: #28a745;
        --info-color: #17a2b8;
        --warning-color: #ffc107;
        --danger-color: #dc3545;
        --light-color: #f8f9fa;
        --dark-color: #343a40;
        --sidebar-width: 320px;
        --nav-width: 260px;
        --header-height: 70px;
        --footer-height: 40px;
        --border-radius: 12px;
        --box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
        --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        /* Status Colors */
        --status-paid: #28a745;
        --status-partial: #fd7e14;
        --status-unpaid: #dc3545;
        --btn-edit-color: #977C49;
        --btn-delete-color: #dc3545;
        --btn-pay-color: #198754;
        --table-header-bg: #f8f9fa;
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }
    body { font-family: 'Inter', sans-serif; background: linear-gradient(135deg, #f5f7fa 0%, #e9ecef 100%); color: #2c3e50; font-size: 14px; line-height: 1.4; overflow-x: hidden; }
    .header { background-color: #fff; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); position: fixed; top: 0; left: 0; right: 0; height: var(--header-height); z-index: 1000; display: flex; align-items: center; padding: 0 20px; }
    .logo { display: flex; align-items: center; font-weight: 700; font-size: 20px; color: var(--primary-color); text-decoration: none; }
    .header-actions { margin-left: auto; display: flex; align-items: center; }
    .mobile-menu-toggle { display: none; background: none; border: none; font-size: 24px; color: var(--primary-color); margin-right: 15px; cursor: pointer; }
    .user-dropdown { position: relative; z-index: 1100; }
    .user-profile { display: flex; align-items: center; cursor: pointer; padding: 5px 10px; border-radius: var(--border-radius); transition: var(--transition); }
    .user-profile:hover { background-color: #f8f9fa; }
    .user-avatar { width: 36px; height: 36px; border-radius: 50%; background-color: var(--primary-color); color: white; display: flex; align-items: center; justify-content: center; font-weight: 600; margin-right: 10px; }
    .user-name { font-weight: 500; margin-right: 5px; }
    .dropdown-arrow { font-size: 12px; color: #666; transition: var(--transition); }
    .user-dropdown.show .dropdown-arrow { transform: rotate(180deg); }
    .user-dropdown-menu { position: absolute; top: 100%; right: 0; background-color: #fff; border-radius: var(--border-radius); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); min-width: 180px; padding: 8px 0; margin-top: 5px; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: var(--transition); z-index: 1101; }
    .user-dropdown.show .user-dropdown-menu { opacity: 1; visibility: visible; transform: translateY(0); }
    .dropdown-item { display: flex; align-items: center; padding: 10px 20px; color: #555; text-decoration: none; transition: var(--transition); }
    .dropdown-item:hover { background-color: #f8f9fa; color: var(--primary-color); }
    .dropdown-item i { margin-right: 10px; font-size: 16px; }
    .dropdown-divider { height: 1px; background-color: #eee; margin: 8px 0; }
    .main-container { display: flex; min-height: calc(100vh - var(--header-height)); margin-top: var(--header-height); }
    .sidebar-nav { width: var(--nav-width); background-color: #fff; box-shadow: 2px 0 10px rgba(0, 0, 0, 0.05); position: fixed; top: var(--header-height); left: 0; bottom: 0; z-index: 999; overflow-y: auto; transition: var(--transition); }
    .nav-section { padding: 15px 0; }
    .nav-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: #999; padding: 0 20px; margin-bottom: 10px; }
    .nav-list { list-style: none; }
    .nav-item { margin-bottom: 5px; }
    .nav-link { display: flex; align-items: center; padding: 12px 20px; color: #555; text-decoration: none; font-weight: 500; transition: var(--transition); position: relative; }
    .nav-link i { font-size: 18px; margin-right: 12px; width: 20px; text-align: center; }
    .nav-link:hover { background-color: rgba(151, 124, 73, 0.05); color: var(--primary-color); }
    .nav-link.active { background-color: rgba(151, 124, 73, 0.1); color: var(--primary-color); }
    .nav-link.active::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background-color: var(--primary-color); }
    .content-wrapper { flex: 1; margin-left: var(--nav-width); display: flex; flex-direction: column; transition: var(--transition); }
    .content-header { background-color: #fff; padding: 20px 30px; border-bottom: 1px solid #eee; display: flex; align-items: center; justify-content: space-between; }
    .page-title { font-size: 24px; font-weight: 600; color: #333; }
    .breadcrumb { background-color: transparent; padding: 0; margin: 0; font-size: 13px; }
    .breadcrumb-item { color: #999; }
    .breadcrumb-item a { color: #999; text-decoration: none; transition: var(--transition); }
    .breadcrumb-item a:hover { color: var(--primary-color); }
    .breadcrumb-item.active { color: var(--primary-color); }
    .breadcrumb-item + .breadcrumb-item::before { content: "›"; color: #ccc; }
    .main-content { flex: 1; padding: 30px; overflow-y: auto; }
    .project-info-card { background-color: #fff; border-radius: var(--border-radius); box-shadow: var(--box-shadow); margin-bottom: 30px; overflow: hidden; }
    .project-info-header { background-color: var(--primary-color); color: white; padding: 15px 20px; font-weight: 600; font-size: 18px; }
    .project-info-body { padding: 30px; display: flex; align-items: center; }
    .project-name-display { font-size: 16px; font-weight: 500; }
    .project-id-badge { margin-left: auto; background-color: var(--primary-light); color: var(--primary-color); padding: 5px 10px; border-radius: 20px; font-size: 12px; font-weight: 600; }
    .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 25px; margin-bottom: 40px; }
    .stat-card { background: linear-gradient(135deg, #fff 0%, #f8f9fa 100%); border-radius: var(--border-radius); box-shadow: var(--box-shadow); padding: 25px; display: flex; align-items: center; transition: var(--transition); position: relative; overflow: hidden; }
    .stat-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary-color), var(--primary-dark)); }
    .stat-card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); }
    .stat-icon { width: 60px; height: 60px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 20px; font-size: 28px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }
    .stat-icon.total { background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); color: white; }
    .stat-icon.paid { background: linear-gradient(135deg, var(--success-color), #218838); color: white; }
    .stat-icon.rem { background: linear-gradient(135deg, var(--danger-color), #c82333); color: white; }
    .stat-details h3 { font-size: 24px; font-weight: 700; margin: 0; color: var(--dark-color); }
    .stat-details p { font-size: 14px; color: #999; margin: 5px 0 0 0; font-weight: 500; }
    .content-grid { display: grid; grid-template-columns: 400px 1fr; gap: 30px; align-items: start; }
    .form-container { background: linear-gradient(135deg, #fff 0%, #f8f9fa 100%); border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; position: sticky; top: 100px; }
    .form-header { background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); color: white; padding: 25px 30px; display: flex; align-items: center; gap: 12px; }
    .form-title { font-size: 20px; font-weight: 600; margin: 0; }
    .form-body { padding: 30px; }
    .form-group { margin-bottom: 25px; }
    .form-label { font-weight: 600; color: var(--dark-color); margin-bottom: 10px; font-size: 14px; display: flex; align-items: center; gap: 8px; }
    .form-label i { color: var(--primary-color); font-size: 16px; }
    .form-control, .form-select { border: 2px solid #e9ecef; border-radius: var(--border-radius); padding: 12px 16px; font-size: 14px; transition: var(--transition); background: #fff; }
    .form-control:focus, .form-select:focus { border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(151, 124, 73, 0.1); outline: none; transform: translateY(-2px); }
    .btn { border-radius: var(--border-radius); font-weight: 600; padding: 12px 24px; font-size: 14px; transition: var(--transition); cursor: pointer; border: none; display: inline-flex; align-items: center; gap: 8px; }
    .btn-primary { background: var(--primary-color); color: white; box-shadow: 0 4px 12px rgba(151, 124, 73, 0.3); }
    .btn-primary:hover { background: var(--primary-dark); transform: translateY(-3px); box-shadow: 0 8px 20px rgba(151, 124, 73, 0.4); }
    
    /* Recent Orders Layout Redesign */
    .order-list-container { background: #fff; border-radius: var(--border-radius); box-shadow: var(--box-shadow); overflow: hidden; display: flex; flex-direction: column; height: 100%; max-height: 900px; border: 1px solid #edf2f7; }
    .list-header { background: #fff; border-bottom: 2px solid var(--primary-light); padding: 25px 30px; display: flex; align-items: center; justify-content: space-between; }
    .list-title { font-size: 18px; font-weight: 700; margin: 0; color: var(--secondary-color); display: flex; align-items: center; gap: 12px; }
    .order-count { background: var(--primary-light); color: var(--primary-color); padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: 700; }
    .list-body { padding: 20px; flex: 1; overflow-y: auto; }
    
    .order-item { background: #fff; border-radius: var(--border-radius); padding: 24px; margin-bottom: 20px; transition: var(--transition); border: 1px solid #eee; position: relative; }
    .order-item:hover { box-shadow: 0 10px 25px rgba(0, 0, 0, 0.05); border-color: var(--primary-color); }
    
    .order-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 18px; border-bottom: 1px solid #f7fafc; padding-bottom: 15px; }
    .order-title { font-weight: 700; color: var(--dark-color); font-size: 18px; margin-bottom: 4px; }
    .order-subtitle { font-size: 12px; color: var(--primary-color); font-weight: 700; text-transform: uppercase; letter-spacing: 1px; }
    .order-meta { display: flex; flex-wrap: wrap; gap: 15px; font-size: 12px; color: #718096; margin-top: 10px; }
    .order-meta span { display: flex; align-items: center; gap: 6px; }
    
    .order-finances { text-align: right; }
    .order-total-label { font-size: 11px; text-transform: uppercase; color: #a0aec0; font-weight: 600; }
    .order-amount { font-size: 22px; font-weight: 800; color: var(--secondary-color); }
    
    /* Status Badge Refinement */
    .order-status { display: inline-block; padding: 4px 10px; border-radius: 6px; font-size: 10px; font-weight: 800; text-transform: uppercase; margin-bottom: 8px; }
    
    /* Custom Payment Classes */
    .rem-paid { color: var(--status-paid) !important; font-weight: 700; }
    .rem-partial { color: var(--status-partial) !important; font-weight: 700; }
    .rem-unpaid { color: var(--status-unpaid) !important; font-weight: 700; }
    
    .order-remaining-row {color:red; font-size: 13px; margin-top: 4px; display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
    
    /* Detail Content styling */
    .order-details-summary { background: #f8fafc; border-radius: 8px; padding: 12px 16px; margin: 15px 0; border: 1px solid #edf2f7; font-size: 13px; line-height: 1.6; }
    .order-details-summary strong { color: var(--secondary-color); }
    
    /* Professional Table styling for Steel/Tiles */
    .order-spec-table { margin-top: 15px; border-radius: 8px; overflow: hidden; border: 1px solid #e2e8f0; }
    .order-spec-table table { margin-bottom: 0; font-size: 12px; }
    .order-spec-table th { background: var(--table-header-bg); color: #4a5568; font-weight: 700; text-transform: uppercase; font-size: 10px; border-bottom: 2px solid #e2e8f0; padding: 10px 12px; }
    .order-spec-table td { padding: 10px 12px; color: #2d3748; border-bottom: 1px solid #edf2f7; vertical-align: middle; }
    .order-spec-table tr:last-child td { border-bottom: none; }
    .order-spec-table tr:hover { background-color: #f7fafc; }
    .order-spec-table .num-cell { text-align: right; font-family: 'Inter', monospace; }
    
    .order-actions { display: flex; gap: 10px; margin-top: 20px; padding-top: 15px; border-top: 1px dashed #e2e8f0; }
    .order-actions button, .order-actions a { 
        padding: 8px 16px; border-radius: 8px; border: none; font-size: 12px; font-weight: 700; cursor: pointer; 
        transition: var(--transition); display: inline-flex; align-items: center; gap: 6px; text-decoration: none;
    }
    /* Reusable modern button system (matches financetracker.php interaction design) */
    .btn-atomic {
        border-radius: 10px;
        padding: 9px 16px !important;
        min-height: 38px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        font-weight: 700;
        letter-spacing: 0.1px;
        transition: var(--transition);
        will-change: transform, box-shadow, filter, background-color;
        box-shadow: 0 6px 16px rgba(0,0,0,0.08);
    }

    .btn-atomic:hover {
        transform: translateY(-2px);
        box-shadow: 0 10px 25px rgba(0,0,0,0.12);
        filter: brightness(1.03);
    }

    .btn-atomic:active {
        transform: translateY(-1px);
        box-shadow: 0 6px 16px rgba(0,0,0,0.10);
        filter: brightness(0.98);
    }

    .btn-save {
        background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
        color: #fff;
    }

    .btn-view {
        background: linear-gradient(135deg, #6c757d, #495057);
        color: #fff;
    }

    .btn-edit {
        background:  var(--btn-edit-color);
        color: #fff;
    }

    .btn-delete {
        background: linear-gradient(135deg, var(--btn-delete-color), #c82333);
        color: #fff;
    }

    .order-actions { display: flex; gap: 10px; margin-top: 20px; padding-top: 15px; border-top: 1px dashed #e2e8f0; }
    .order-actions button, .order-actions a {
        text-decoration: none; /* Ensure links don't have underlines */
    }


/* =========================
   STEEL ROW LAYOUT - 2 COLUMN
========================= */

.modern-steel-row {
    display: grid;
    grid-template-columns: repeat(2, 1fr); /* 2 columns */
    gap: 14px;
    padding: 14px;
    background: #f8fafc;
    border-radius: 10px;
    margin-bottom: 12px;
    border: 1px solid transparent;
    transition: var(--transition);
}

.modern-steel-row:hover {
    border-color: var(--primary-color);
    background: #fff;
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
}

/* Full width total field */
.modern-steel-row .w-total {
    grid-column: span 2;
}

/* Remove button full width */
.modern-steel-row .btn-remove-steel {
    grid-column: span 2;
    width: 100%;
    justify-self: stretch;
}
/* =========================
   TILES ROW LAYOUT
========================= */

.modern-tiles-row {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
    padding: 14px;
    background: #f8fafc;
    border-radius: 10px;
    margin-bottom: 12px;
    border: 1px solid transparent;
    transition: var(--transition);
}

.modern-tiles-row:hover {
    border-color: var(--primary-color);
    background: #fff;
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
}

/* Name full width */
.modern-tiles-row .w-xl {
    grid-column: span 2;
}

/* Total field full width */
.modern-tiles-row .w-total {
    grid-column: span 2;
}

/* Delete button full width */
.tiles-delete-wrapper {
    grid-column: span 2;
    width: 100%;
    margin-top: 5px;
}

.modern-tiles-row .btn-remove-steel {
    width: 100%;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* =========================
   COMMON INPUT STYLES
========================= */

.input-group-modern {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.input-group-modern label {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    color: #718096;
    margin-bottom: 4px;
    letter-spacing: 0.5px;
}

.input-group-modern input {
    width: 100%;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 600;
    color: #2d3748;
    background: #fff;
    transition: var(--transition);
}

.input-group-modern input:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(151, 124, 73, 0.1);
}

/* Total Field Styled Like Input */
.w-total {
    background: #fff8ec;
    border: 1px solid rgba(151, 124, 73, 0.18);
    border-radius: 8px;
    padding: 0 12px;
    height: 42px; /* same as input height */
    
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

/* Remove default label spacing */
.w-total label {
    margin: 0;
    font-size: 11px;
    font-weight: 700;
    color: #718096;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
}

/* Total Amount */
.input-group-modern.w-total input[readonly] {
    width: 100%;

    border: none;
    background: transparent;

    padding: 0 6px 0 0; /* right padding added */
    margin: 0;

    text-align: right;

    color: var(--primary-color);
    font-size: 15px;
    font-weight: 800;

    outline: none;
    box-shadow: none;
}
/* Total field horizontal layout */
.input-group-modern.w-total {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    height: 42px;
    padding: 0 12px;
}

/* Fix label alignment */
.input-group-modern.w-total label {
    margin: 0;
    display: flex;
    align-items: center;
    height: 100%;
}
/* Delete Button */
.btn-remove-steel {
    height: 42px;
    border: none;
    background: #fff1f2;
    color: #e53e3e;
    border-radius: 8px;
    cursor: pointer;
    transition: var(--transition);
}

.btn-remove-steel:hover {
    background: #e53e3e;
    color: white;
}

/* =========================
   MOBILE RESPONSIVE
========================= */

@media (max-width: 768px) {

    .modern-steel-row {
        grid-template-columns: 1fr 1fr;
    }

    .modern-steel-row .w-lg {
        grid-column: span 2;
    }

    .modern-tiles-row {
        grid-template-columns: 1fr 1fr;
    }

    .modern-tiles-row .w-xl {
        grid-column: span 2;
    }
}
    .modal-content { border-radius: var(--border-radius); border: none; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2); }
    .modal-header { background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); color: white; border-radius: var(--border-radius) var(--border-radius) 0 0; border: none; }
    .alert-fixed { position: fixed; top: 90px; right: 30px; z-index: 1050; min-width: 300px; opacity: 0; transform: translateX(100%); transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); border-radius: var(--border-radius); border: none; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); }
    .alert-fixed.show { opacity: 1; transform: translateX(0); }
    
    @media (max-width: 1200px) { .content-grid { grid-template-columns: 1fr; } .form-container { position: relative; top: 0; } }
    @media (max-width: 768px) { .mobile-menu-toggle { display: block; } .sidebar-nav { transform: translateX(-100%); width: 280px; z-index: 1001; } .sidebar-nav.show { transform: translateX(0); } .content-wrapper { margin-left: 0; } .header { padding: 0 15px; } .user-name { display: none; } }
    .overlay { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 998; }
    .overlay.show { display: block; }
    
    .empty-state { text-align: center; padding: 60px 0; color: #a0aec0; }
    .empty-state i { font-size: 48px; display: block; margin-bottom: 20px; opacity: 0.3; }
    .empty-state h3 { font-size: 18px; font-weight: 700; color: #4a5568; }

    /* Dynamic Item Tables Styling (Copied from financeTracker.php for consistency) */
    .order-spec-table { margin-top: 15px; border-radius: 8px; overflow: hidden; border: 1px solid #e2e8f0; width: 100%; }
    .order-spec-table table { margin-bottom: 0; font-size: 12px; width: 100%; }
    .order-spec-table th { background: #f8f9fa; color: #4a5568; font-weight: 700; text-transform: uppercase; font-size: 10px; border-bottom: 2px solid #e2e8f0; padding: 10px 12px; }
    .order-spec-table td { padding: 10px 12px; color: #2d3748; border-bottom: 1px solid #edf2f7; vertical-align: middle; }
    .num-cell { text-align: right; font-family: 'Inter', monospace; }
    </style>
</head>
<body>
    <header class="header">
        <button class="mobile-menu-toggle" id="mobileMenuToggle"><i class="bi bi-list"></i></button>
        <a href="<?= BASE_URL ?>crmdashboard" class="logo"><img src="<?= BASE_URL ?>assets/logo.png" alt="ConstructCRM Logo" style="height: 60px; width: 85px;"></a>
        <div class="header-actions">
            <div class="user-dropdown" id="userDropdown">
                <div class="user-profile" id="userProfile">
                    <div class="user-avatar"><?php echo strtoupper(substr($current_user_name, 0, 1)); ?></div>
                    <span class="user-name"><?php echo htmlspecialchars($current_user_name); ?></span>
                    <i class="bi bi-chevron-down dropdown-arrow"></i>
                </div>
                <div class="user-dropdown-menu">
                    <a href="<?= BASE_URL ?>profile" class="dropdown-item"><i class="bi bi-person"></i> <span>Profile</span></a>
                    <a href="<?= BASE_URL ?>settings" class="dropdown-item"><i class="bi bi-gear"></i> <span>Settings</span></a>
                    <div class="dropdown-divider"></div>
                    <a href="<?= BASE_URL ?>signin?logout=true" class="dropdown-item"><i class="bi bi-box-arrow-right"></i> <span>Logout</span></a>
                </div>
            </div>
        </div>
    </header>

    <div class="main-container">
        <div class="overlay" id="overlay"></div>
        <nav class="sidebar-nav" id="sidebarNav">
            <div class="nav-section">
                <div class="nav-title">Main</div>
                <ul class="nav-list">
                    <?php if (($_SESSION['user_role'] ?? '') === 'Admin'): ?>
                    <li class="nav-item"><a href="<?= BASE_URL ?>crmdashboard" class="nav-link"><i class="bi bi-speedometer2"></i> <span>Dashboard</span></a></li>
                    <?php endif; ?>
                    <li class="nav-item"><a href="<?= BASE_URL ?>dashboard" class="nav-link"><i class="bi bi-grid-1x2-fill"></i> <span>Client</span></a></li>
                    <li class="nav-item"><a href="<?= BASE_URL ?>projectlist" class="nav-link"><i class="bi bi-list-ul"></i> <span>Project List</span></a></li>
                    <li class="nav-item"><a href="<?= BASE_URL ?>designimages" class="nav-link"><i class="bi bi-palette-fill"></i> <span>Design images</span></a></li>
                    <li class="nav-item"><a href="<?= BASE_URL ?>assignmentcalendar" class="nav-link"><i class="bi bi-calendar-event-fill"></i> <span>Assignment Calendar</span></a></li>
                    <?php if (($_SESSION['user_role'] ?? '') === 'Admin'): ?>
                    <li class="nav-item"><a href="<?= BASE_URL ?>place_order" class="nav-link active"><i class="bi bi-cart-check"></i> <span>Place Order</span></a></li>
                    <li class="nav-item"><a href="<?= BASE_URL ?>financetracker" class="nav-link"><i class="bi bi-cash-stack"></i> <span>Finance Tracker</span></a></li>
                    <?php endif; ?>
                    <li class="nav-item"><a href="<?= BASE_URL ?>imagepin" class="nav-link"><i class="bi bi-pin-map-fill"></i> <span>Image Pin & Comment</span></a></li>
                    <?php if (($_SESSION['user_role'] ?? '') === 'Admin'): ?>
                    <li class="nav-item"><a href="<?= BASE_URL ?>designcost" class="nav-link"><i class="bi bi-palette-fill"></i> <span>Designs Cost</span></a></li>
                    <?php endif; ?>
                </ul>
            </div>
            
            <div class="nav-section">
                <div class="nav-title">Management</div>
                <ul class="nav-list">
                    <li class="nav-item">
                        <a href="<?= BASE_URL ?>taskmanager" class="nav-link">
                            <i class="bi bi-check2-square"></i>
                            <span>Task Manager</span>
                        </a>
                    </li>
                    <?php if (($_SESSION['user_role'] ?? '') === 'Admin'): ?>
                    <li class="nav-item">
                        <a href="<?= BASE_URL ?>users" class="nav-link">
                            <i class="bi bi-people-fill"></i>
                            <span>Users</span>
                        </a>
                    </li>
                    <?php endif; ?>
                </ul>
            </div>
            
            <?php if (($_SESSION['user_role'] ?? '') === 'Admin'): ?>
            <div class="nav-section">
                <div class="nav-title">Vendor Management</div>
                <ul class="nav-list">
                    <li class="nav-item">
                        <a href="<?= BASE_URL ?>addvendors" class="nav-link">
                            <i class="bi bi-person-plus-fill"></i>
                            <span>Add New Vendor</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="<?= BASE_URL ?>viewvendors" class="nav-link">
                            <i class="bi bi-card-list"></i>
                            <span>View All Vendors</span>
                        </a>
                    </li>
                </ul>
            </div>
            <?php endif; ?>
        </nav>

        <div class="content-wrapper">
            <div class="content-header">
                <h1 class="page-title">Order Management</h1>
                <nav aria-label="breadcrumb">
                    <ol class="breadcrumb">
                        <li class="breadcrumb-item"><a href="#">Home</a></li>
                        <li class="breadcrumb-item"><a href="#">Management</a></li>
                        <li class="breadcrumb-item active" aria-current="page">Place Order</li>
                    </ol>
                </nav>
            </div>
            
            <div class="main-content">
                <div class="project-info-card">
                    <div class="project-info-header"><i class="bi bi-folder"></i> Select Project</div>
                    <div class="project-info-body">
                        <div class="row align-items-center w-100">
                            <div class="col-md-8">
                                <label class="form-label">Choose Project:</label>
                                <select class="form-select" id="projectSelect">
                                    <option value="" disabled selected>Select a project...</option>
                                    <?php echo $projectOptions; ?>
                                </select>
                            </div>
                            <div class="col-md-4 text-end">
                                <button class="btn btn-primary" id="loadProjectBtn" disabled style="background: var(--primary-color);width: 200px; margin-top: 26px;"><i class="bi bi-arrow-right-circle"></i> Load Project</button>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="project-info-card" id="selectedProjectInfo" style="display: <?php echo $selectedProject ? 'block' : 'none'; ?>;">
                    <div class="project-info-header">Project Information</div>
                    <div class="project-info-body">
                        <div class="project-name-display"><?php echo htmlspecialchars($selectedProject ? $selectedProject['project_name'] . ' - ' . $selectedProject['client_name'] : ''); ?></div>
                        <div class="project-id-badge"><?php echo htmlspecialchars($selectedProject ? $selectedProject['project_id_display'] : ''); ?></div>
                    </div>
                </div>

                <div class="stats-grid">
                    <div class="stat-card">
                        <div class="stat-icon total"><i class="bi bi-cart"></i></div>
                        <div class="stat-details"><h3>₹<?php echo number_format($totalAmountSum, 2); ?></h3><p>Total Ordered</p></div>
                    </div>
                    <div class="stat-card">
                        <div class="stat-icon paid"><i class="bi bi-check2-circle"></i></div>
                        <div class="stat-details"><h3>₹<?php echo number_format($totalPaid, 2); ?></h3><p>Total Paid</p></div>
                    </div>
                    <div class="stat-card">
                        <div class="stat-icon rem"><i class="bi bi-exclamation-circle"></i></div>
                        <div class="stat-details"><h3>₹<?php echo number_format($totalRemSum, 2); ?></h3><p>Remaining Balance</p></div>
                    </div>
                </div>

                <div class="content-grid">
                    <div class="form-container">
                        <div class="form-header"><i class="bi bi-cart-plus"></i> <h4 class="form-title" id="form-title">New Order</h4></div>
                        <div class="form-body">
                            <?php if (!$selectedProject): ?>
                            <div class="alert alert-info" style="margin-bottom: 20px;">
                                <i class="bi bi-info-circle"></i>
                                Please select a project to place and manage orders
                            </div>
                            <?php endif; ?>
                            <form method="POST" id="main-order-form">
                                <input type="hidden" name="action" id="form-action" value="add_order">
                                <input type="hidden" name="order_id" id="edit-order-id" value="">
                                <input type="hidden" name="project_id" value="<?php echo $selectedProject ? $selectedProject['id'] : ''; ?>">
                                
                                <div class="row">
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <label class="form-label"><i class="bi bi-tag"></i> Category</label>
                                            <select name="category" id="category-select" class="form-select" required>
                                                <option value="material">Material</option>
                                                <option value="labor">Labor</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="col-md-6" id="vendor-group">
                                        <div class="form-group">
                                            <label class="form-label"><i class="bi bi-building"></i> Vendor Name</label>
                                            <select name="vendor_name" id="vendor_name" class="form-select" required>
                                                <option value="" selected>Select Vendor</option>
                                                <?php echo $vendorOptions; ?>
                                            </select>
                                        </div>
                                    </div>
                                </div>

                                <div class="form-group" id="item-group">
                                    <label class="form-label"><i class="bi bi-box-seam"></i> Item</label>
                                    <select name="item" id="item-select" class="form-select">
                                        <option value="steel">Steel</option>
                                        <option value="cement">Cement</option>
                                        <option value="tiles">Tiles</option>
                                        <option value="etu">ETU</option>
                                    </select>
                                </div>

                                <!-- Dynamic Item Fields -->
                                <div id="dynamic-fields-container" class="border-top pt-3 mb-3">
                                    <!-- Fields will be injected here by JS -->
                                </div>

                                <div class="form-group">
                                    <label class="form-label"><i class="bi bi-calculator"></i> Total Cost</label>
                                    <input type="number" id="total_amount" name="total_amount" class="form-control" step="0.01" readonly style="background-color: var(--primary-light); font-weight:600; color: var(--primary-color);">
                                </div>

                                <div class="row">
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <label class="form-label"><i class="bi bi-wallet2"></i> Paid Amount</label>
                                            <input type="number" id="paid_amount" name="paid_amount" class="form-control" step="0.01" value="0.00" min="0">
                                        </div>
                                    </div>
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <label class="form-label">Remaining</label>
                                            <input type="text" id="remaining_display" class="form-control" readonly value="₹0.00">
                                        </div>
                                    </div>
                                </div>

                                <div class="row">
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <label class="form-label"><i class="bi bi-calendar"></i> Order Date</label>
                                            <input type="date" name="order_date" id="order_date" class="form-control" value="<?php echo date('Y-m-d'); ?>" required>
                                        </div>
                                    </div>
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            <label class="form-label"><i class="bi bi-person"></i> Recorded By</label>
                                            <input type="text" name="recorded_by" id="recorded_by" class="form-control" required placeholder="Your Name" value="<?php echo htmlspecialchars($current_user_name); ?>">
                                        </div>
                                    </div>
                                </div>

                                <div class="d-flex gap-2">
                                    <button type="submit" class="btn btn-primary flex-grow-1" id="submit-btn" <?php echo !$selectedProject ? 'disabled' : ''; ?>  style="background-color:#977C49;"><i class="bi bi-plus-circle"></i> <span id="btn-text">Place Order</span></button>
                                    <button type="button" class="btn btn-secondary" id="reset-form-btn" style="display:none;"><i class="bi bi-x-circle"></i> Cancel</button>
                                </div>
                            </form>
                        </div>
                    </div>

                    <div class="order-list-container">
                        <div class="list-header"><h4 class="list-title"><i class="bi bi-list-check"></i> Recent Orders</h4> <span class="order-count"><?php echo $orderCount; ?></span></div>
                        <div class="list-body">
                            <?php if (empty($orders)): ?>
                                <div class="empty-state"><i class="bi bi-inbox"></i><h3>No Orders Yet</h3><p>Start tracking your project orders by adding your first transaction</p></div>
                            <?php else: ?>
                                <?php foreach ($orders as $order): ?>
                                <?php 
                                    $rem = $order['remaining_amount'];
                                    $paid = $order['paid_amount'];
                                    
                                    $statusClass = 'bg-light text-muted'; $status = 'Unpaid'; $remClass = 'rem-unpaid';
                                    if ($paid > 0 && $rem > 0) { 
                                        $status = 'Partial'; $statusClass = 'bg-warning text-dark'; $remClass = 'rem-partial';
                                    } elseif ($rem <= 0) { 
                                        $status = 'Fully Paid'; $statusClass = 'bg-success text-white'; $remClass = 'rem-paid';
                                    }
                                ?>
                                <div class="order-item">
                                    <div class="order-header">
                                        <div>
                                            <span class="order-status <?php echo $statusClass; ?>"><?php echo $status; ?></span>
                                            <div class="order-title"><?php echo htmlspecialchars($order['vendor_name'] ?? 'Labour Work'); ?></div>
                                            <div class="order-subtitle"><?php echo strtoupper($order['item']); ?> Order</div>
                                        </div>
                                        <div class="order-finances">
                                            <div class="order-total-label">Total Order Value</div>
                                            <div class="order-amount">₹<?php echo number_format($order['total_amount'] ?? 0, 2); ?></div>
                                            <div class="order-remaining-row">
                                                <span class="text-muted small">Paid: ₹<?php echo number_format($paid, 2); ?></span>
                                                <span class="<?php echo $remClass; ?>">Rem: ₹<?php echo number_format($rem, 2); ?></span>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div class="order-details-container">
                                        <?php 
                                        $details = json_decode($order['details'], true) ?: [];
                                        $itemType = strtolower($order['item']);

                                        if ($itemType === 'steel') {
                                            $steel_items = [];
                                            if (isset($details['steel_items'])) {
                                                $steel_items = $details['steel_items'];
                                            } elseif (isset($details['mm']) && is_array($details['mm'])) {
                                                foreach ($details['mm'] as $i => $mm_val) {
                                                    $steel_items[] = [
                                                        'mm' => $mm_val, 'nug' => $details['nug'][$i] ?? '', 
                                                        'weight' => $details['weight'][$i] ?? '', 'rate' => $details['rate'][$i] ?? '', 
                                                        'total' => $details['total'][$i] ?? 0
                                                    ];
                                                }
                                            } else { $steel_items = (isset($details['weight'])) ? [$details] : []; }

                                            if (!empty($steel_items) && is_array($steel_items)): ?>
                                                <div class="order-spec-table table-responsive w-100">
                                                    <table class="table table-sm table-bordered">
                                                        <thead><tr><th>MM</th><th>Nug</th><th>Weight</th><th>Rate</th><th>Total</th></tr></thead>
                                                        <tbody>
                                                            <?php foreach ($steel_items as $it): ?>
                                                            <tr>
                                                                <td><?= htmlspecialchars($it['mm'] ?? '-') ?></td>
                                                                <td class="num-cell"><?= htmlspecialchars($it['nug'] ?? '0') ?></td>
                                                                <td class="num-cell"><?= htmlspecialchars($it['weight'] ?? '0') ?> kg</td>
                                                                <td class="num-cell">₹<?= number_format($it['rate'] ?? 0, 2) ?></td>
                                                                <td class="num-cell fw-bold">₹<?= number_format($it['total'] ?? 0, 2) ?></td>
                                                            </tr>
                                                            <?php endforeach; ?>
                                                        </tbody>
                                                    </table>
                                                </div>
                                            <?php endif;
                                        } elseif ($itemType === 'tiles') {
                                            $items = [];
                                            $headers = [];
                                            $keys = [];
                                                $headers = ['Tiles Name', 'Size', 'Boxes', 'SqFt', 'Rate', 'Row Total'];
                                                $keys = ['tiles_name', 'size', 'tiles_box', 'total_square_foot', 'rate', 'total'];

                                                if (isset($details['tiles_items'])) {
                                                    $items = $details['tiles_items'];
                                                } elseif (isset($details['tiles_name']) && is_array($details['tiles_name'])) {
                                                    // Convert Column-wise format to Row-wise
                                                    $items = [];
                                                    foreach ($details['tiles_name'] as $i => $name_val) {
                                                        $items[] = [
                                                            'tiles_name'        => $name_val,
                                                            'size'              => $details['size'][$i] ?? '',
                                                            'tiles_box'         => $details['tiles_box'][$i] ?? '',
                                                            'total_square_foot' => $details['total_square_foot'][$i] ?? ($details['tiles_sqft'][$i] ?? ''),
                                                            'rate'              => $details['rate'][$i] ?? '',
                                                            'total'             => $details['total'][$i] ?? 0
                                                        ];
                                                    }
                                                } else {
                                                    // Standardize legacy single row object
                                                    $items = (is_array($details) && isset($details['tiles_name'])) ? [$details] : [];
                                                }

                                            if (!empty($items) && is_array($items)) {
                                                echo '<div class="order-spec-table table-responsive w-100"><table class="table table-sm">';
                                                echo '<thead><tr>';
                                                foreach ($headers as $h) echo "<th>$h</th>";
                                                echo '</tr></thead><tbody class="table-group-divider">';
                                                foreach ($items as $it) {
                                                    if (!is_array($it)) continue;
                                                    echo '<tr>';
                                                    foreach ($keys as $k) {
                                                        // Use consistent key lookup and fallback for SqFt
                                                        $val = $it[$k] ?? ($k === 'total_square_foot' ? ($it['tiles_sqft'] ?? '') : '');
                                                        
                                                        if ($k === 'total') {
                                                            $num = is_scalar($val) ? (float)$val : 0;
                                                            echo '<td class="num-cell fw-bold">₹'.number_format($num, 2).'</td>';
                                                        } elseif (in_array($k, ['nug', 'weight', 'rate', 'tiles_box', 'total_square_foot'])) {
                                                            echo '<td class="num-cell">'.htmlspecialchars((string)$val).'</td>';
                                                        } else {
                                                            $displayVal = is_scalar($val) ? (string)$val : '';
                                                            echo '<td class="fw-medium">'.htmlspecialchars($displayVal).'</td>';
                                                        }
                                                    }
                                                    echo '</tr>';
                                                }
                                                echo '</tbody></table></div>';
                                            }
                                        } elseif ($itemType === 'cement') { ?>
                                            <div class="order-spec-table table-responsive w-100">
                                                <table class="table table-sm table-bordered">
                                                    <thead><tr><th>Bag</th><th>Rate</th><th>Total</th></tr></thead>
                                                    <tbody>
                                                        <tr>
                                                            <td class="num-cell"><?= htmlspecialchars($details['bag'] ?? '0') ?></td>
                                                            <td class="num-cell">₹<?= number_format($details['rate'] ?? 0, 2) ?></td>
                                                            <td class="num-cell fw-bold">₹<?= number_format($details['total'] ?? 0, 2) ?></td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </div>
                                        <?php } elseif ($itemType === 'etu') { ?>
                                            <div class="order-spec-table table-responsive w-100">
                                                <table class="table table-sm table-bordered">
                                                    <thead><tr><th>Fero</th><th>Nug</th><th>Rate</th><th>Total</th></tr></thead>
                                                    <tbody>
                                                        <tr>
                                                            <td><?= htmlspecialchars($details['fero'] ?? '-') ?></td>
                                                            <td class="num-cell"><?= htmlspecialchars($details['nug'] ?? '0') ?></td>
                                                            <td class="num-cell">₹<?= number_format($details['rate'] ?? 0, 2) ?></td>
                                                            <td class="num-cell fw-bold">₹<?= number_format($details['total'] ?? 0, 2) ?></td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </div>
                                        <?php } elseif ($itemType === 'labor' || $order['category'] === 'labor') { ?>
                                            <div class="order-spec-table table-responsive w-100">
                                                <table class="table table-sm table-bordered">
                                                    <thead><tr><th>Labor Date</th><th>Labor Name</th><th>Rate</th><th>Total</th></tr></thead>
                                                    <tbody>
                                                        <tr>
                                                            <td><?= htmlspecialchars($details['labor_date'] ?? '-') ?></td>
                                                            <td><?= htmlspecialchars($details['labor_name'] ?? '-') ?></td>
                                                            <td class="num-cell">₹<?= number_format($details['rate'] ?? 0, 2) ?></td>
                                                            <td class="num-cell fw-bold">₹<?= number_format($details['total'] ?? 0, 2) ?></td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </div>
                                        <?php } else {
                                            // Fallback for other/unknown item types, or if details are simple
                                            echo '<div class="order-details-summary">';
                                            $parts = [];
                                            foreach ($details as $k => $v) {
                                                if ($k === 'total' || is_array($v)) continue; // Skip total if already displayed, and skip arrays
                                                $cleanLabel = ucwords(str_replace(['_', 'etu_', 'cement_', 'labor_'], [' ', '', '', ''], (string)$k));
                                                $parts[] = "<strong>$cleanLabel:</strong> " . htmlspecialchars((string)$v);
                                            }
                                            echo !empty($parts) ? implode(' | ', $parts) : '<span class="fst-italic">No specific details available</span>';
                                            echo '</div>';
                                        } ?>
                                    </div>
                                    
                                    <div class="order-meta">
                                        <span><i class="bi bi-calendar3"></i> <?php echo date('D, M d, Y', strtotime($order['order_date'])); ?></span>
                                        <span><i class="bi bi-bookmark-star"></i> <?php echo ucwords($order['category']); ?></span>
                                        <span><i class="bi bi-person-check"></i> Recorded by <?php echo htmlspecialchars($order['recorded_by']); ?></span>
                                    </div>
                                    <div class="order-actions">
                                        <button class="btn-atomic btn-edit" onclick="editOrder(<?php echo $order['id']; ?>)">
                                            <i class="bi bi-pencil-square"></i> Modify Details
                                        </button>
                                        <a href="<?= BASE_URL ?>financetracker?place_order_id=<?php echo $order['id']; ?>&project_id=<?php echo $projectId; ?>" class="btn-atomic btn-payment" style="background: var(--btn-pay-color);color:white;">
                                            <i class="bi bi-cash-stack"></i> Pay
                                        </a>
                                        <button class="btn-atomic btn-delete" onclick="deleteOrder(<?php echo $order['id']; ?>)"><i class="bi bi-trash"></i></button>
                                    </div>
                                </div>
                                <?php endforeach; ?>
                            <?php endif; ?>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="top-status-message" class="alert-fixed alert d-none" role="alert"></div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // UI Elements
            const categorySelect = document.getElementById('category-select');
            const itemSelect = document.getElementById('item-select');
            const dynamicContainer = document.getElementById('dynamic-fields-container');
            const vendorGroup = document.getElementById('vendor-group');
            const itemGroup = document.getElementById('item-group');
            const totalInput = document.getElementById('total_amount');
            const paidInput = document.getElementById('paid_amount');
            const remDisplay = document.getElementById('remaining_display');

            // Field Templates
            const templates = {
                steel: `
                    <div class="steel-rows-wrapper">
                        <div id="rows-container-steel"></div>
                    </div>
                    <button type="button" class="btn-atomic btn-save mt-2 w-100" onclick="addRow('steel')" style="background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));">
                        <i class="bi bi-plus-lg"></i> Add Steel Item
                    </button>`,

                tiles: `
                    <div class="steel-rows-wrapper">
                        <div id="rows-container-tiles"></div>
                    </div>
                    <button type="button" class="btn btn-sm btn-outline-primary mt-2 w-100" onclick="addRow('tiles')">
                        <i class="bi bi-plus-lg"></i> Add Tiles Item
                    </button>`,
                steel_row: `
                    <div class="modern-steel-row steel-row"> 
                        <!-- Added "steel-row" class above so JS can find it! -->

                        <!-- MM -->
                        <div class="input-group-modern w-sm">
                            <label>MM</label>
                            <input type="text" name="steel_mm[]" placeholder="12" autocomplete="off">
                        </div>
                        
                        <!-- NUG -->
                        <div class="input-group-modern w-sm">
                            <label>NUG</label>
                            <input type="number" name="steel_nug[]" placeholder="0">
                        </div>
                        
                        <!-- Weight -->
                        <div class="input-group-modern w-lg">
                            <label>Weight (kg)</label>
                            <input type="number" step="0.01" name="steel_weight[]" class="calc-trigger" placeholder="0.00">
                        </div>
                        
                        <!-- Rate -->
                        <div class="input-group-modern w-md">
                            <label>Rate (₹)</label>
                            <input type="number" step="0.01" name="steel_rate[]" class="calc-trigger" placeholder="0.00">
                        </div>
                        
                        <div class="input-group-modern w-total">
                            <label>Total</label>
                            <input type="number" step="0.01"
                                name="steel_row_total[]"
                                class="row-total"
                                readonly
                                value="0.00">
                        </div>

                        <!-- Delete Action -->
                        <button type="button" class="btn-remove-steel remove-row" title="Remove Row">
                            <i class="bi bi-trash"></i>
                        </button>
                    </div>`,
                tiles_row: `
                    <div class="modern-tiles-row tiles-row">

                        <!-- Row 1 -->
                        <div class="input-group-modern w-xl">
                            <label>Name</label>
                            <input type="text" name="tiles_name[]" placeholder="e.g. Marble" autocomplete="off">
                        </div>

                        <div class="input-group-modern w-sm">
                            <label>Size</label>
                            <input type="text" name="tiles_size[]" placeholder="2x2">
                        </div>

                        <div class="input-group-modern w-sm">
                            <label>Box</label>
                            <input type="number" name="tiles_box[]" placeholder="0">
                        </div>

                        <!-- Row 2 -->
                        <div class="input-group-modern w-md">
                            <label>SqFt</label>
                            <input type="number" step="0.01" name="tiles_sqft[]" class="calc-trigger" placeholder="0.00">
                        </div>

                        <div class="input-group-modern w-md">
                            <label>Rate</label>
                            <input type="number" step="0.01" name="tiles_rate[]" class="calc-trigger" placeholder="0.00">
                        </div>

                        <div class="input-group-modern w-total">
                            <label>Total</label>
                            <input type="number" step="0.01" name="tiles_row_total[]" class="row-total" readonly value="0.00">
                        </div>

                        <!-- Bottom Delete Row -->
                        <div class="tiles-delete-wrapper">
                            <button type="button" class="btn-remove-steel remove-row" title="Remove Row">
                                <i class="bi bi-trash"></i>
                            </button>
                        </div>

                    </div>
                `,
                cement: `
                    <div class="row">
                        <div class="col-6"><label class="small fw-bold">Bags</label><input type="number" name="cement_bag" class="form-control form-control-sm calc-trigger"></div>
                        <div class="col-6"><label class="small fw-bold">Rate</label><input type="number" step="0.01" name="cement_rate" class="form-control form-control-sm calc-trigger"></div>
                    </div>`,
                etu: `
                    <div class="row">
                        <div class="col-4"><label class="small fw-bold">Fero</label><input type="text" name="etu_fero" class="form-control form-control-sm"></div>
                        <div class="col-4"><label class="small fw-bold">NUG</label><input type="number" name="etu_nug" class="form-control form-control-sm calc-trigger"></div>
                        <div class="col-4"><label class="small fw-bold">Rate</label><input type="number" step="0.01" name="etu_rate" class="form-control form-control-sm calc-trigger"></div>
                    </div>`,
                labor: `
                    <div class="row">
                        <div class="col-6 mb-2"><label class="small fw-bold">Labor Date</label><input type="date" name="labor_date" class="form-control form-control-sm"></div>
                        <div class="col-6 mb-2"><label class="small fw-bold">Labor Name</label><input type="text" name="labor_name" class="form-control form-control-sm"></div>
                        <div class="col-12"><label class="small fw-bold">Daily/Job Rate (Total)</label><input type="number" step="0.01" name="labor_rate" class="form-control form-control-sm calc-trigger"></div>
                    </div>`
            };

            // Row management helper
            window.addRow = function(type, data = null) {
                const container = document.getElementById('rows-container-' + type);
                if (!container) return;
                
                const div = document.createElement('div');
                div.innerHTML = templates[type + '_row'];
                const row = div.firstElementChild;
                container.appendChild(row);
                
                if (data) {
                    if (type === 'steel') {
                        row.querySelector('[name="steel_mm[]"]').value = data.mm || '';
                        row.querySelector('[name="steel_nug[]"]').value = data.nug || '';
                        row.querySelector('[name="steel_weight[]"]').value = data.weight || '';
                        row.querySelector('[name="steel_rate[]"]').value = data.rate || '';
                    } else if (type === 'tiles') {
                        row.querySelector('[name="tiles_name[]"]').value = data.tiles_name || '';
                        row.querySelector('[name="tiles_size[]"]').value = data.size || '';
                        row.querySelector('[name="tiles_box[]"]').value = data.tiles_box || '';
                        row.querySelector('[name="tiles_sqft[]"]').value = data.total_square_foot || '';
                        row.querySelector('[name="tiles_rate[]"]').value = data.rate || '';
                    }
                }
                calculateTotals();
            };

            function updateUI() {
                const cat = categorySelect.value;
                const item = itemSelect.value;
                if (cat === 'labor') {
                    vendorGroup.style.display = 'none';
                    itemGroup.style.display = 'none';
                    dynamicContainer.innerHTML = templates.labor;
                } else {
                    vendorGroup.style.display = 'block';
                    itemGroup.style.display = 'block';
                    dynamicContainer.innerHTML = templates[item] || '';
                    if (item === 'steel' || item === 'tiles') addRow(item);
                }
                calculateTotals();
            }

            // Event delegation for calculation and row removal
            dynamicContainer.addEventListener('input', (e) => {
                if (e.target.classList.contains('calc-trigger')) calculateTotals();
            });

            dynamicContainer.addEventListener('click', (e) => {
                if (e.target.closest('.remove-row')) {
                    const row = e.target.closest('.steel-row, .tiles-row');
                    if (row.parentElement.children.length > 1) {
                        row.remove();
                        calculateTotals();
                    }
                }
            });

            function calculateTotals() {
                let grandTotal = 0;
                const cat = categorySelect.value;
                const item = itemSelect.value;

                if (cat === 'labor') {
                    grandTotal = parseFloat(document.getElementsByName('labor_rate')[0]?.value) || 0;
                } else if (item === 'steel') {
                    document.querySelectorAll('.steel-row').forEach(row => {
                        const val = (parseFloat(row.querySelector('[name="steel_weight[]"]').value) || 0) * (parseFloat(row.querySelector('[name="steel_rate[]"]').value) || 0);
                        if(row.querySelector('.row-total')) row.querySelector('.row-total').value = val.toFixed(2);
                        grandTotal += val;
                    });
                } else {
                    if (item === 'tiles') {
                        document.querySelectorAll('.tiles-row').forEach(row => {
                            const val = (parseFloat(row.querySelector('[name="tiles_sqft[]"]').value) || 0) * (parseFloat(row.querySelector('[name="tiles_rate[]"]').value) || 0);
                            if(row.querySelector('.row-total')) row.querySelector('.row-total').value = val.toFixed(2);
                            grandTotal += val;
                        });
                    } else if (item === 'cement') {
                        grandTotal = (parseFloat(document.getElementsByName('cement_bag')[0]?.value) || 0) * (parseFloat(document.getElementsByName('cement_rate')[0]?.value) || 0);
                    } else if (item === 'etu') {
                        grandTotal = (parseFloat(document.getElementsByName('etu_nug')[0]?.value) || 0) * (parseFloat(document.getElementsByName('etu_rate')[0]?.value) || 0);
                    }
                }

                totalInput.value = grandTotal.toFixed(2);
                const paid = parseFloat(paidInput.value) || 0;
                
                // Validation
                if (paid > grandTotal && grandTotal > 0) {
                    paidInput.classList.add('is-invalid');
                } else {
                    paidInput.classList.remove('is-invalid');
                }
                
                remDisplay.value = '₹' + (grandTotal - paid).toFixed(2);
            }

            categorySelect.addEventListener('change', updateUI);
            itemSelect.addEventListener('change', updateUI);
            paidInput.addEventListener('input', calculateTotals);

            // Initialize
            updateUI();

            // Global edit handler
            window.editOrder = function(id) {
                fetch(`place_order?action=get_order&order_id=${id}`)
                .then(r => r.json())
                .then(res => {
                    if (res.success) {
                        const d = res.data;
                        const details = JSON.parse(d.details);
                        
                        document.getElementById('form-title').innerText = 'Edit Order #' + d.id;
                        document.getElementById('form-action').value = 'edit_order';
                        document.getElementById('edit-order-id').value = d.id;
                        document.getElementById('btn-text').innerText = 'Update Order';
                        document.getElementById('reset-form-btn').style.display = 'inline-flex';
                        
                        categorySelect.value = d.category;
                        if (d.category !== 'labor') {
                            itemSelect.value = d.item;
                            // Preserve selected vendor value exactly as stored in placed_orders.vendor_name
                            const vendorSelect = document.getElementById('vendor_name');
                            if (vendorSelect) vendorSelect.value = d.vendor_name;
                        }

                        updateUI(); // Re-render dynamic fields
                        
                        if (d.item === 'steel' || d.item === 'tiles') {
                            const container = document.getElementById('rows-container-' + d.item);
                            container.innerHTML = '';
                            // Legacy support: check for array vs single object
                            let itemsToLoad = [];
                            if (d.item === 'steel') {
                                if (details.steel_items && Array.isArray(details.steel_items)) {
                                    itemsToLoad = details.steel_items;
                                } else if (details.weight) { // Legacy single item at root
                                    itemsToLoad = [details];
                                }
                            } else if (d.item === 'tiles') {
                                if (details.tiles_items && Array.isArray(details.tiles_items)) {
                                    itemsToLoad = details.tiles_items;
                                } else if (details && details.tiles_name) { 
                                    itemsToLoad = [details];
                                }
                            }
                            itemsToLoad.forEach(it => addRow(d.item, it));
                        } else {
                            // Map details back to inputs for single row items
                            Object.keys(details).forEach(key => {
                                let fieldName = key;
                                if (d.category === 'labor') fieldName = 'labor_' + key;
                                else fieldName = d.item + '_' + key;
                                
                                const input = document.getElementsByName(fieldName)[0];
                                if (input) input.value = details[key];
                            });
                        }

                        document.getElementById('paid_amount').value = d.paid_amount;
                        document.getElementById('order_date').value = d.order_date;
                        document.getElementById('recorded_by').value = d.recorded_by;
                        
                        calculateTotals();
                        window.scrollTo({ top: 100, behavior: 'smooth' });
                    }
                });
            };

            document.getElementById('reset-form-btn').addEventListener('click', () => {
                location.reload();
            });

            // Sidebar & User logic
            const mobileMenuToggle = document.getElementById('mobileMenuToggle');
            const sidebarNav = document.getElementById('sidebarNav');
            const overlay = document.getElementById('overlay');
            if (mobileMenuToggle) {
                mobileMenuToggle.addEventListener('click', () => { sidebarNav.classList.toggle('show'); overlay.classList.toggle('show'); });
                overlay.addEventListener('click', () => { sidebarNav.classList.remove('show'); overlay.classList.remove('show'); });
            }
            
            const userProfile = document.getElementById('userProfile');
            if (userProfile) {
                userProfile.addEventListener('click', (e) => { e.stopPropagation(); document.getElementById('userDropdown').classList.toggle('show'); });
                document.addEventListener('click', () => document.getElementById('userDropdown').classList.remove('show'));
            }
            
            const projectSelect = document.getElementById('projectSelect');
            const loadProjectBtn = document.getElementById('loadProjectBtn');
            if (projectSelect) projectSelect.addEventListener('change', () => loadProjectBtn.disabled = !projectSelect.value);
            if (loadProjectBtn) loadProjectBtn.addEventListener('click', () => { if (projectSelect.value) window.location.href = `<?= BASE_URL ?>place_order/${projectSelect.value}`; });
        });

        function deleteOrder(id) {
            if (confirm('Delete this order?')) {
                const form = document.createElement('form');
                form.method = 'POST';
                form.innerHTML = `<input type="hidden" name="action" value="delete_order"><input type="hidden" name="order_id" value="${id}"><input type="hidden" name="project_id" value="<?php echo $selectedProject['id'] ?? ''; ?>">`;
                document.body.appendChild(form);
                form.submit();
            }
        }

        function showStatusMessage(msg, type) {
            const alertDiv = document.getElementById('top-status-message');
            alertDiv.innerHTML = '<i class="bi bi-' + (type === 'success' ? 'check-circle' : 'exclamation-triangle') + '"></i> ' + msg;
            alertDiv.className = 'alert-fixed alert alert-' + type;
            alertDiv.classList.remove('d-none');
            alertDiv.classList.add('show');
            setTimeout(() => { alertDiv.classList.remove('show'); setTimeout(() => alertDiv.classList.add('d-none'), 500); }, 5000);
        }
    </script>
</body>
</html>