<?php
declare(strict_types=1);

namespace App\Modules\Tutorials;

final class TutorialRegistry
{
    public static function getSections(): array
    {
        return [
            'accounting' => [
                'title' => 'المحاسبة والماليات',
                'subtitle' => 'دفتر الأستاذ والقيود والميزانيات',
                'icon' => 'calculator',
                'color' => '#059669',
            ],
            'hr' => [
                'title' => 'الموارد البشرية',
                'subtitle' => 'الموظفين والحضور والرواتب',
                'icon' => 'briefcase',
                'color' => '#7C3AED',
            ],
            'procurement' => [
                'title' => 'المشتريات',
                'subtitle' => 'طلبات الشراء والموردين والمدفوعات',
                'icon' => 'shopping-cart',
                'color' => '#D97706',
            ],
            'inventory' => [
                'title' => 'المخازن',
                'subtitle' => 'الأصناف والمخازن وحركات المخزون',
                'icon' => 'warehouse',
                'color' => '#0891B2',
            ],
            'cashier' => [
                'title' => 'الخزينة الرئيسية',
                'subtitle' => 'طابور الدفع والشيكات والتقارير اليومية',
                'icon' => 'landmark',
                'color' => '#059669',
            ],
            'sales' => [
                'title' => 'المبيعات',
                'subtitle' => 'نقاط البيع والباقات والعمولات',
                'icon' => 'shopping-bag',
                'color' => '#DC2626',
            ],
            'payments' => [
                'title' => 'المدفوعات',
                'subtitle' => 'أنواع الدفع والإيصالات وسير الإلغاء',
                'icon' => 'credit-card',
                'color' => '#2563EB',
            ],
            'coaches' => [
                'title' => 'المدربين',
                'subtitle' => 'تسجيل المدربين والتخصصات والأداء',
                'icon' => 'user-check',
                'color' => '#16A34A',
            ],
            'carnets' => [
                'title' => 'الكارنيهات',
                'subtitle' => 'الإصدار والطباعة والإلغاء',
                'icon' => 'id-card',
                'color' => '#0284C7',
            ],
            'facilities' => [
                'title' => 'المرافق',
                'subtitle' => 'المنشآت والوحدات والصيانة والحجز',
                'icon' => 'building',
                'color' => '#4F46E5',
            ],
            'tournaments' => [
                'title' => 'البطولات',
                'subtitle' => 'إنشاء بطولات وتسجيل وقرعة ونتائج',
                'icon' => 'trophy',
                'color' => '#CA8A04',
            ],
            'rentals' => [
                'title' => 'الإيجارات',
                'subtitle' => 'الوحدات المؤجرة والعقود والفواتير',
                'icon' => 'key',
                'color' => '#9333EA',
            ],
            'support' => [
                'title' => 'الدعم الفني',
                'subtitle' => 'التذاكر والتعيين والحل',
                'icon' => 'headphones',
                'color' => '#0D9488',
            ],
            'settings' => [
                'title' => 'الإعدادات',
                'subtitle' => 'ضبط النظام والهوية وتصميم الإيصالات',
                'icon' => 'settings',
                'color' => '#6B7280',
            ],
            'fines' => [
                'title' => 'المخالفات',
                'subtitle' => 'فرض الغرامات والتصعيد والسداد',
                'icon' => 'alert-triangle',
                'color' => '#DC2626',
            ],
            'roles' => [
                'title' => 'الأدوار والصلاحيات',
                'subtitle' => 'إنشاء الأدوار وتعيين الصلاحيات',
                'icon' => 'shield',
                'color' => '#7C3AED',
            ],
            'interviews' => [
                'title' => 'المقابلات',
                'subtitle' => 'الجدولة والإجراء والنتائج',
                'icon' => 'message-square',
                'color' => '#0EA5E9',
            ],
            'installments' => [
                'title' => 'التقسيط',
                'subtitle' => 'خطط التقسيط والجدولة والمتابعة',
                'icon' => 'calendar-range',
                'color' => '#06B6D4',
            ],
            'reports' => [
                'title' => 'التقارير',
                'subtitle' => 'أنواع التقارير والفلاتر والتصدير',
                'icon' => 'bar-chart-3',
                'color' => '#8B5CF6',
            ],
            'seasonal' => [
                'title' => 'العضوية الموسمية',
                'subtitle' => 'إعداد المواسم والتسجيل والتسعير',
                'icon' => 'sun',
                'color' => '#F59E0B',
            ],
            'documents' => [
                'title' => 'المستندات',
                'subtitle' => 'الرفع والتصنيف والتحقق',
                'icon' => 'file-text',
                'color' => '#475569',
            ],
            'branches' => [
                'title' => 'الفروع',
                'subtitle' => 'إنشاء الفروع وإعداداتها',
                'icon' => 'git-branch',
                'color' => '#EA580C',
            ],
            'news' => [
                'title' => 'الأخبار',
                'subtitle' => 'إنشاء المقالات والنشر',
                'icon' => 'newspaper',
                'color' => '#2563EB',
            ],
            'workflow' => [
                'title' => 'سير العمل',
                'subtitle' => 'قواعد سير العمل والموافقات',
                'icon' => 'git-pull-request',
                'color' => '#7C3AED',
            ],
            'subscriptions' => [
                'title' => 'الاشتراكات',
                'subtitle' => 'التوليد السنوي والتحصيل والمتابعة',
                'icon' => 'calendar-check',
                'color' => '#059669',
            ],
            'reservations' => [
                'title' => 'الحجوزات',
                'subtitle' => 'إنشاء الحجز والتقويم والإلغاء',
                'icon' => 'calendar',
                'color' => '#3B82F6',
            ],
            'match-center' => [
                'title' => 'مركز المباريات',
                'subtitle' => 'المباريات الحية والأحداث والنتائج',
                'icon' => 'tv',
                'color' => '#DC2626',
            ],
            'pool-management' => [
                'title' => 'إدارة حمامات السباحة',
                'subtitle' => 'إعداد الحمامات والحارات والجدولة',
                'icon' => 'waves',
                'color' => '#0EA5E9',
            ],
        ];
    }

    public static function getTutorials(string $section): array
    {
        return match ($section) {
            'accounting' => self::accountingTutorials(),
            'hr' => self::hrTutorials(),
            'procurement' => self::procurementTutorials(),
            'inventory' => self::inventoryTutorials(),
            'cashier' => self::cashierTutorials(),
            'sales' => self::salesTutorials(),
            'payments' => self::paymentsTutorials(),
            'coaches' => self::coachesTutorials(),
            'carnets' => self::carnetsTutorials(),
            'facilities' => self::facilitiesTutorials(),
            'tournaments' => self::tournamentsTutorials(),
            'rentals' => self::rentalsTutorials(),
            'support' => self::supportTutorials(),
            'settings' => self::settingsTutorials(),
            'fines' => self::finesTutorials(),
            'roles' => self::rolesTutorials(),
            'interviews' => self::interviewsTutorials(),
            'installments' => self::installmentsTutorials(),
            'reports' => self::reportsTutorials(),
            'seasonal' => self::seasonalTutorials(),
            'documents' => self::documentsTutorials(),
            'branches' => self::branchesTutorials(),
            'news' => self::newsTutorials(),
            'workflow' => self::workflowTutorials(),
            'subscriptions' => self::subscriptionsTutorials(),
            'reservations' => self::reservationsTutorials(),
            'match-center' => self::matchCenterTutorials(),
            'pool-management' => self::poolManagementTutorials(),
            default => [],
        };
    }

    public static function getSteps(string $section, string $slug): array
    {
        $allSteps = self::getAllSteps();
        $key = $section . '.' . $slug;
        return $allSteps[$key] ?? self::generateDefaultSteps($section, $slug);
    }

    private static function generateDefaultSteps(string $section, string $slug): array
    {
        $tutorials = self::getTutorials($section);
        $tutorial = $tutorials[$slug] ?? null;
        if (!$tutorial) {
            return [];
        }

        $sections = self::getSections();
        $sectionTitle = $sections[$section]['title'] ?? $section;

        return [
            ['title' => 'فتح الصفحة', 'body' => 'من القائمة الجانبية: <span class="field">' . $sectionTitle . '</span> > <span class="field">' . $tutorial['title'] . '</span>.'],
            ['title' => 'ملء البيانات المطلوبة', 'body' => 'أكمل جميع الحقول المطلوبة (المحددة بعلامة <span style="color:#DC2626;">*</span>).<span class="info">تأكد من صحة البيانات قبل الحفظ — بعض الحقول لا يمكن تعديلها لاحقاً.</span>'],
            ['title' => 'المراجعة والحفظ', 'body' => 'راجع البيانات ثم اضغط <span class="field">حفظ</span>.<span class="success">عند النجاح ستظهر رسالة تأكيد ويتم تحويلك للصفحة التالية تلقائياً.</span>'],
        ];
    }

    private static function getAllSteps(): array
    {
        return [
            // ── ACCOUNTING ──
            'accounting.setup-chart-of-accounts' => [
                ['title' => 'فتح شجرة الحسابات', 'body' => 'من القائمة: <span class="field">المحاسبة</span> > <span class="field">شجرة الحسابات</span>.'],
                ['title' => 'إضافة حساب رئيسي', 'body' => 'اضغط <span class="field">حساب جديد</span>. اختر <span class="field">النوع</span> (أصول، خصوم، إيرادات، مصروفات، حقوق ملكية).<span class="info">النظام يستخدم المعيار المصري — 8 أرقام لكود الحساب.</span>'],
                ['title' => 'تحديد المستوى والتبعية', 'body' => 'اختر <span class="field">الحساب الأب</span> إذا كان حساباً فرعياً. المستوى يُحدد تلقائياً.'],
                ['title' => 'الحفظ', 'body' => 'أدخل الاسم بالعربي والإنجليزي ثم <span class="field">حفظ</span>.<span class="warn">لا يمكن تغيير الكود بعد الحفظ — تأكد من صحته.</span>'],
            ],
            'accounting.create-journal-entry' => [
                ['title' => 'فتح صفحة القيود', 'body' => 'من القائمة: <span class="field">المحاسبة</span> > <span class="field">قيود اليومية</span> > <span class="field">قيد جديد</span>.'],
                ['title' => 'بيانات القيد', 'body' => 'أدخل <span class="field">التاريخ</span> و<span class="field">الوصف</span>. اختر <span class="field">مركز التكلفة</span> إن وُجد.'],
                ['title' => 'إضافة البنود', 'body' => 'أضف بنود مدينة ودائنة. لكل بند اختر <span class="field">الحساب</span> وأدخل <span class="field">المبلغ</span>.<span class="warn">يجب أن يتساوى إجمالي المدين مع إجمالي الدائن — النظام لن يسمح بالحفظ إذا لم يتوازن القيد.</span>'],
                ['title' => 'المراجعة والترحيل', 'body' => 'راجع القيد ثم <span class="field">حفظ</span>. القيد يُرحل تلقائياً للأرصدة.<span class="success">يمكنك طباعة القيد أو تصديره PDF من صفحة التفاصيل.</span>'],
            ],
            'accounting.bank-reconciliation' => [
                ['title' => 'اختيار الحساب البنكي', 'body' => 'من <span class="field">المحاسبة</span> > <span class="field">التسويات البنكية</span>. اختر الحساب البنكي والفترة.'],
                ['title' => 'إدخال كشف البنك', 'body' => 'أدخل رصيد كشف البنك الرسمي. النظام يعرض الحركات غير المطابقة.'],
                ['title' => 'مطابقة الحركات', 'body' => 'حدد الحركات المطابقة بين النظام وكشف البنك.<span class="info">الحركات غير المطابقة تظهر في تقرير الفروقات.</span>'],
                ['title' => 'إتمام التسوية', 'body' => 'اضغط <span class="field">إتمام التسوية</span> بعد مطابقة جميع الحركات.'],
            ],
            'accounting.trial-balance-report' => [
                ['title' => 'فتح ميزان المراجعة', 'body' => 'من <span class="field">المحاسبة</span> > <span class="field">التقارير</span> > <span class="field">ميزان المراجعة</span>.'],
                ['title' => 'اختيار الفترة', 'body' => 'حدد <span class="field">السنة المالية</span> والفترة. يمكن عرض ميزان شهري أو تراكمي.'],
                ['title' => 'قراءة الميزان', 'body' => 'يعرض النظام: رصيد أول المدة، حركة مدينة، حركة دائنة، رصيد آخر المدة لكل حساب.<span class="warn">إذا لم يتساوى إجمالي المدين مع الدائن — هناك خلل يجب مراجعته.</span>'],
                ['title' => 'التصدير', 'body' => 'اضغط <span class="field">تصدير Excel</span> أو <span class="field">طباعة</span> للحصول على نسخة.'],
            ],
            'accounting.budget-management' => [
                ['title' => 'إنشاء ميزانية', 'body' => 'من <span class="field">المحاسبة</span> > <span class="field">الميزانيات</span> > <span class="field">ميزانية جديدة</span>. حدد السنة المالية والقسم.'],
                ['title' => 'توزيع المبالغ', 'body' => 'وزّع الميزانية على بنود المصروفات. يمكن التوزيع شهرياً أو ربع سنوي.'],
                ['title' => 'متابعة الصرف', 'body' => 'النظام يقارن المصروفات الفعلية مع المخطط.<span class="warn">عند تجاوز 80% من ميزانية بند يظهر تنبيه تلقائي.</span>'],
                ['title' => 'التقارير', 'body' => 'اضغط <span class="field">تقرير الانحرافات</span> لمعرفة البنود المتجاوزة والبنود المتبقية.'],
            ],
            // ── HR ──
            'hr.add-employee' => [
                ['title' => 'إنشاء حساب موظف', 'body' => 'أولاً من <span class="field">إدارة المستخدمين</span> أنشئ حساب دخول للموظف (اسم المستخدم وكلمة المرور).'],
                ['title' => 'فتح ملف HR', 'body' => 'من <span class="field">الموارد البشرية</span> > <span class="field">الموظفين</span> > <span class="field">إضافة موظف</span>. اربطه بحساب النظام.'],
                ['title' => 'البيانات الشخصية', 'body' => 'أدخل <span class="field">الرقم القومي</span> — سيتم استخراج تاريخ الميلاد والنوع تلقائياً.<span class="info">لا حاجة لإدخال تاريخ الميلاد أو الجنس يدوياً — يُستخرج من الرقم القومي.</span>'],
                ['title' => 'البيانات الوظيفية', 'body' => 'حدد <span class="field">القسم</span>، <span class="field">المسمى الوظيفي</span>، <span class="field">تاريخ التعيين</span>، و<span class="field">الراتب الأساسي</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يتم توليد <span class="field">رقم الموظف</span> تلقائياً.<span class="success">يمكنك الآن إنشاء عقد للموظف من صفحة ملفه.</span>'],
            ],
            'hr.attendance-management' => [
                ['title' => 'فتح سجل الحضور', 'body' => 'من <span class="field">الموارد البشرية</span> > <span class="field">الحضور والانصراف</span>.'],
                ['title' => 'تسجيل الحضور', 'body' => 'يمكن التسجيل يدوياً أو عبر جهاز البصمة. حدد الموظف وأدخل <span class="field">وقت الحضور</span> و<span class="field">وقت الانصراف</span>.'],
                ['title' => 'مراجعة التأخيرات', 'body' => 'استعرض التقرير الشهري: أيام الحضور، التأخير، الغياب، الإضافي.<span class="warn">التأخير والغياب يؤثر على الراتب حسب سياسة الخصومات المعتمدة.</span>'],
                ['title' => 'التصدير', 'body' => 'اضغط <span class="field">تصدير</span> لإرسال الكشف لمسير الرواتب.'],
            ],
            'hr.leave-request' => [
                ['title' => 'طلب إجازة', 'body' => 'من ملف الموظف أو <span class="field">الإجازات</span> > <span class="field">طلب جديد</span>.'],
                ['title' => 'تحديد النوع والمدة', 'body' => 'اختر <span class="field">نوع الإجازة</span> (سنوية، مرضية، عارضة، بدون راتب). حدد التواريخ.<span class="info">الرصيد المتاح يظهر تلقائياً. لا يمكن طلب أكثر من الرصيد.</span>'],
                ['title' => 'الاعتماد', 'body' => 'الطلب يذهب للمدير المباشر للاعتماد. بعد الموافقة يُخصم من الرصيد.'],
            ],
            'hr.run-payroll' => [
                ['title' => 'فتح دورة الرواتب', 'body' => 'من <span class="field">الموارد البشرية</span> > <span class="field">الرواتب</span> > <span class="field">دورة جديدة</span>.'],
                ['title' => 'اختيار الشهر', 'body' => 'حدد <span class="field">الشهر</span> و<span class="field">السنة</span>. النظام يحسب تلقائياً: الراتب الأساسي + البدلات − الخصومات − السلف − التأمينات − الضرائب.'],
                ['title' => 'مراجعة المفردات', 'body' => 'راجع مفردات كل موظف. تأكد من: الحضور محسوب، السلف مخصومة، الإضافي مضاف.'],
                ['title' => 'اعتماد وصرف', 'body' => 'اضغط <span class="field">اعتماد الدورة</span> ثم <span class="field">صرف</span>.<span class="success">يتم ترحيل القيد المحاسبي تلقائياً (مصروف رواتب ← بنك/نقدية).</span>'],
            ],
            'hr.end-of-service' => [
                ['title' => 'فتح نهاية الخدمة', 'body' => 'من ملف الموظف > <span class="field">إنهاء خدمة</span>، أو من <span class="field">الموارد البشرية</span> > <span class="field">نهاية الخدمة</span>.'],
                ['title' => 'تحديد السبب والتاريخ', 'body' => 'اختر <span class="field">سبب الإنهاء</span> (استقالة، فصل، انتهاء عقد، تقاعد). حدد <span class="field">آخر يوم عمل</span>.'],
                ['title' => 'حساب المستحقات', 'body' => 'النظام يحسب تلقائياً: رصيد إجازات، مكافأة نهاية خدمة، أي مستحقات أخرى.<span class="info">المكافأة تُحسب وفقاً لقانون العمل المصري (نصف شهر عن كل سنة لأول 5 سنوات، شهر كامل بعدها).</span>'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد الإنهاء</span>. يتم إيقاف الحساب وإنشاء طلب دفع بالمستحقات.<span class="warn">لا يمكن التراجع عن إنهاء الخدمة بعد التأكيد.</span>'],
            ],
            // ── PROCUREMENT ──
            'procurement.create-purchase-requisition' => [
                ['title' => 'طلب شراء جديد', 'body' => 'من <span class="field">المشتريات</span> > <span class="field">طلبات الشراء</span> > <span class="field">طلب جديد</span>.'],
                ['title' => 'تحديد الاحتياج', 'body' => 'أدخل <span class="field">الأصناف</span> المطلوبة مع <span class="field">الكميات</span> و<span class="field">سبب الطلب</span>.'],
                ['title' => 'الإرسال للاعتماد', 'body' => 'اضغط <span class="field">إرسال</span>. الطلب يذهب للمدير للاعتماد.'],
                ['title' => 'متابعة الحالة', 'body' => 'تابع حالة الطلب: معلق، معتمد، مرفوض، منفذ.<span class="info">بعد الاعتماد يمكن تحويله لأمر شراء مباشرة.</span>'],
            ],
            'procurement.receive-goods' => [
                ['title' => 'فتح أمر الشراء', 'body' => 'من <span class="field">المشتريات</span> > <span class="field">أوامر الشراء</span>. اختر الأمر المطلوب استلامه.'],
                ['title' => 'إنشاء إذن استلام', 'body' => 'اضغط <span class="field">إذن استلام جديد</span>. أدخل الكميات المستلمة فعلياً لكل صنف.'],
                ['title' => 'فحص الجودة', 'body' => 'سجّل ملاحظات الفحص. حدد الأصناف المقبولة والمرفوضة.<span class="warn">الأصناف المرفوضة لا تُضاف للمخزون ويمكن إرجاعها للمورد.</span>'],
                ['title' => 'تأكيد الاستلام', 'body' => 'اضغط <span class="field">تأكيد</span>. يتم تحديث المخزون تلقائياً بالكميات المقبولة.<span class="success">يمكن مطابقة الاستلام مع فاتورة المورد لاحقاً.</span>'],
            ],
            'procurement.vendor-invoice' => [
                ['title' => 'فتح صفحة الفواتير', 'body' => 'من <span class="field">المشتريات</span> > <span class="field">فواتير الموردين</span> > <span class="field">فاتورة جديدة</span>.'],
                ['title' => 'ربط بإذن الاستلام', 'body' => 'اختر <span class="field">إذن الاستلام</span> المرتبط. النظام يملأ الأصناف والكميات تلقائياً.'],
                ['title' => 'إدخال بيانات الفاتورة', 'body' => 'أدخل <span class="field">رقم الفاتورة</span>، <span class="field">تاريخ الفاتورة</span>، والأسعار النهائية.'],
                ['title' => 'الحفظ والترحيل', 'body' => 'اضغط <span class="field">حفظ</span>. يتم ترحيل القيد المحاسبي (مشتريات ← ذمم موردين).<span class="info">يمكن ربط أكثر من إذن استلام بفاتورة واحدة.</span>'],
            ],
            'procurement.vendor-payment' => [
                ['title' => 'فتح أمر الصرف', 'body' => 'من <span class="field">المشتريات</span> > <span class="field">مدفوعات الموردين</span> > <span class="field">أمر صرف جديد</span>.'],
                ['title' => 'اختيار المورد والفواتير', 'body' => 'حدد <span class="field">المورد</span>. النظام يعرض الفواتير المستحقة. اختر الفواتير المطلوب سدادها.'],
                ['title' => 'طريقة الدفع', 'body' => 'حدد <span class="field">شيك</span> أو <span class="field">تحويل بنكي</span>. أدخل البيانات المطلوبة.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد الصرف</span>. يتم ترحيل قيد (ذمم موردين ← بنك).<span class="success">يُحدّث رصيد المورد تلقائياً.</span>'],
            ],
            'procurement.return-to-vendor' => [
                ['title' => 'إنشاء مرتجع', 'body' => 'من <span class="field">المشتريات</span> > <span class="field">المرتجعات</span> > <span class="field">مرتجع جديد</span>.'],
                ['title' => 'اختيار الأصناف', 'body' => 'حدد <span class="field">المورد</span> و<span class="field">إذن الاستلام</span> الأصلي. اختر الأصناف المُرجعة مع الكميات.'],
                ['title' => 'سبب الإرجاع', 'body' => 'أدخل <span class="field">سبب الإرجاع</span> (عيب تصنيع، عدم مطابقة، انتهاء صلاحية).'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد</span>. يُخصم من المخزون ويُنشأ إشعار دائن على المورد.<span class="warn">المرتجع يخفض رصيد المورد المستحق.</span>'],
            ],
            // ── INVENTORY ──
            'inventory.setup-warehouse' => [
                ['title' => 'إنشاء مخزن', 'body' => 'من <span class="field">المخازن</span> > <span class="field">المخازن</span> > <span class="field">مخزن جديد</span>.'],
                ['title' => 'البيانات الأساسية', 'body' => 'أدخل <span class="field">اسم المخزن</span>، <span class="field">الكود</span>، <span class="field">الموقع</span>، و<span class="field">أمين المخزن</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يمكنك الآن إضافة أصناف لهذا المخزن.<span class="info">يمكن ربط المخزن بفرع محدد إذا كان النادي متعدد الفروع.</span>'],
            ],
            'inventory.add-item' => [
                ['title' => 'إضافة صنف', 'body' => 'من <span class="field">المخازن</span> > <span class="field">الأصناف</span> > <span class="field">صنف جديد</span>.'],
                ['title' => 'البيانات', 'body' => 'أدخل <span class="field">SKU</span> (كود الصنف)، <span class="field">الاسم</span>، <span class="field">التصنيف</span>، <span class="field">الوحدة</span>، <span class="field">سعر البيع</span>.'],
                ['title' => 'الحدود', 'body' => 'حدد <span class="field">الحد الأدنى</span> و<span class="field">الحد الأقصى</span> للتنبيه عند نفاد أو تكدس المخزون.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>.<span class="success">الصنف جاهز الآن للاستخدام في حركات الصرف والتوريد.</span>'],
            ],
            'inventory.stock-movement' => [
                ['title' => 'إنشاء حركة', 'body' => 'من <span class="field">المخازن</span> > <span class="field">حركات المخزون</span> > <span class="field">حركة جديدة</span>.'],
                ['title' => 'نوع الحركة', 'body' => 'اختر: <span class="field">توريد</span> (إضافة)، <span class="field">صرف</span> (خصم)، أو <span class="field">تحويل</span> (بين مخازن).'],
                ['title' => 'الأصناف والكميات', 'body' => 'أضف الأصناف مع الكميات. لحركات الصرف: حدد <span class="field">الجهة الطالبة</span>.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد</span>. يتم تحديث الأرصدة فوراً.<span class="warn">حركات المخزون لا يمكن حذفها — يمكن عكسها بحركة مقابلة فقط.</span>'],
            ],
            'inventory.stock-audit' => [
                ['title' => 'بدء الجرد', 'body' => 'من <span class="field">المخازن</span> > <span class="field">الجرد</span> > <span class="field">جرد جديد</span>. اختر المخزن.'],
                ['title' => 'إدخال الأرصدة الفعلية', 'body' => 'أدخل الكمية الفعلية لكل صنف. النظام يحسب الفرق مع الرصيد الدفتري.'],
                ['title' => 'مراجعة الفروقات', 'body' => 'راجع التقرير: عجز (أقل من الدفتري) أو زيادة (أكثر). أدخل <span class="field">سبب الفرق</span> لكل صنف.'],
                ['title' => 'اعتماد الجرد', 'body' => 'اضغط <span class="field">اعتماد</span>. يتم تعديل الأرصدة وترحيل القيد المحاسبي (عجز = مصروف، زيادة = إيراد).'],
            ],
            'inventory.opening-balance' => [
                ['title' => 'فتح أرصدة افتتاحية', 'body' => 'من <span class="field">المخازن</span> > <span class="field">الأرصدة الافتتاحية</span> > <span class="field">إدخال جديد</span>.'],
                ['title' => 'اختيار المخزن', 'body' => 'حدد <span class="field">المخزن</span> المطلوب إدخال أرصدته.'],
                ['title' => 'إدخال الكميات', 'body' => 'لكل صنف أدخل <span class="field">الكمية</span> و<span class="field">تكلفة الوحدة</span>.<span class="info">هذه الخطوة تُنفذ مرة واحدة عند بدء تشغيل النظام.</span>'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد</span>. يتم تحديث الأرصدة وترحيل القيد المحاسبي.<span class="warn">لا يمكن تعديل الأرصدة الافتتاحية بعد التأكيد.</span>'],
            ],
            // ── CASHIER ──
            'cashier.process-payment-queue' => [
                ['title' => 'فتح طابور الدفع', 'body' => 'من <span class="field">الخزينة الرئيسية</span> > <span class="field">طابور الدفع</span>.'],
                ['title' => 'اختيار الطلب', 'body' => 'اضغط على طلب الدفع المطلوب. يعرض النظام: اسم العضو، المبلغ، نوع الدفعة.'],
                ['title' => 'اختيار طريقة الدفع', 'body' => 'حدد <span class="field">نقدي</span>، <span class="field">شيك</span>، <span class="field">فيزا</span>، أو <span class="field">تحويل</span>. لكل طريقة بيانات إضافية مطلوبة.'],
                ['title' => 'التأكيد وطباعة الإيصال', 'body' => 'اضغط <span class="field">تحصيل</span>. يتم:<ul><li>إنشاء سجل الدفع</li><li>توليد رقم إيصال تلقائي</li><li>ترحيل القيد المحاسبي</li></ul><span class="success">يمكنك طباعة الإيصال فوراً أو لاحقاً من صفحة الإيصالات.</span>'],
            ],
            'cashier.void-payment' => [
                ['title' => 'البحث عن الدفعة', 'body' => 'من <span class="field">المدفوعات</span> أو من ملف العضو، اعثر على الدفعة المطلوب إلغاؤها.'],
                ['title' => 'طلب الإلغاء', 'body' => 'اضغط <span class="field">إلغاء الدفعة</span>. أدخل <span class="field">سبب الإلغاء</span>.<span class="warn">الإلغاء متاح خلال 24 ساعة فقط — بعدها يتطلب صلاحية مدير النظام.</span>'],
                ['title' => 'التأكيد', 'body' => 'يتم إلغاء الدفعة والإيصال المرتبط، وترحيل قيد عكسي تلقائياً.'],
            ],
            'cashier.check-management' => [
                ['title' => 'استلام شيك', 'body' => 'عند اختيار <span class="field">شيك</span> كطريقة دفع، أدخل: <span class="field">رقم الشيك</span>، <span class="field">البنك</span>، <span class="field">تاريخ الاستحقاق</span>.'],
                ['title' => 'متابعة الشيكات', 'body' => 'من <span class="field">الخزينة</span> > <span class="field">الشيكات</span>. يعرض النظام حالة كل شيك: معلق، محصل، مرتجع.'],
                ['title' => 'تحصيل أو ارتجاع', 'body' => 'عند التحصيل: غيّر الحالة لـ<span class="field">محصل</span>. عند الارتجاع: <span class="field">مرتجع</span> مع السبب.<span class="warn">الشيك المرتجع يُنشئ مطالبة تلقائية على العضو.</span>'],
            ],
            'cashier.daily-report' => [
                ['title' => 'فتح التقرير اليومي', 'body' => 'من <span class="field">الخزينة</span> > <span class="field">التقرير اليومي</span>. يتم عرض تقرير اليوم الحالي.'],
                ['title' => 'محتويات التقرير', 'body' => 'يعرض: إجمالي المحصل (نقدي/شيكات/فيزا)، عدد الإيصالات، الدفعات الملغاة.'],
                ['title' => 'الطباعة والأرشفة', 'body' => 'اضغط <span class="field">طباعة</span> أو <span class="field">تصدير PDF</span> للحفظ.'],
            ],
            // ── SALES ──
            'sales.pos-transaction' => [
                ['title' => 'فتح نقطة البيع', 'body' => 'من <span class="field">المبيعات</span> > <span class="field">عملية بيع جديدة</span>.'],
                ['title' => 'إضافة الأصناف', 'body' => 'ابحث عن الصنف بالاسم أو الباركود. حدد <span class="field">الكمية</span>.'],
                ['title' => 'اختيار العميل والدفع', 'body' => 'حدد <span class="field">العضو/العميل</span> (اختياري). اختر <span class="field">طريقة الدفع</span>.'],
                ['title' => 'إتمام البيع', 'body' => 'اضغط <span class="field">إتمام</span>. يتم خصم المخزون وإنشاء إيصال.<span class="success">يظهر البيع في التقرير اليومي فوراً.</span>'],
            ],
            'sales.create-package' => [
                ['title' => 'فتح إدارة الباقات', 'body' => 'من <span class="field">المبيعات</span> > <span class="field">الباقات</span> > <span class="field">باقة جديدة</span>.'],
                ['title' => 'بيانات الباقة', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">الوصف</span>، و<span class="field">السعر الخاص</span>.'],
                ['title' => 'إضافة المكونات', 'body' => 'أضف الأصناف أو الخدمات المشمولة في الباقة مع الكميات.'],
                ['title' => 'الحفظ والتفعيل', 'body' => 'اضغط <span class="field">حفظ</span> ثم <span class="field">تفعيل</span>.<span class="info">الباقة تظهر في نقطة البيع للبائعين فوراً بعد التفعيل.</span>'],
            ],
            'sales.sales-commission' => [
                ['title' => 'فتح العمولات', 'body' => 'من <span class="field">المبيعات</span> > <span class="field">العمولات</span>.'],
                ['title' => 'اختيار الفترة', 'body' => 'حدد <span class="field">الشهر</span> و<span class="field">المندوب</span>. النظام يحسب العمولة تلقائياً بناءً على المبيعات المحققة.'],
                ['title' => 'المراجعة والاعتماد', 'body' => 'راجع تفاصيل كل مندوب: إجمالي المبيعات، نسبة العمولة، المبلغ المستحق.<span class="success">بعد الاعتماد تُضاف العمولة لمسير الرواتب تلقائياً.</span>'],
            ],
            'sales.daily-sales-report' => [
                ['title' => 'فتح التقرير', 'body' => 'من <span class="field">المبيعات</span> > <span class="field">التقرير اليومي</span>.'],
                ['title' => 'استعراض البيانات', 'body' => 'يعرض: إجمالي المبيعات، عدد الفواتير، التوزيع حسب الفئة، أعلى 5 أصناف مبيعاً.'],
                ['title' => 'الفلترة', 'body' => 'يمكنك التصفية حسب: <span class="field">التاريخ</span>، <span class="field">المندوب</span>، <span class="field">طريقة الدفع</span>.'],
                ['title' => 'التصدير', 'body' => 'اضغط <span class="field">تصدير Excel</span> أو <span class="field">طباعة</span>.'],
            ],
            // ── PAYMENTS ──
            'payments.payment-types-overview' => [
                ['title' => 'فتح إعدادات الدفع', 'body' => 'من <span class="field">الإعدادات</span> > <span class="field">طرق الدفع</span>.'],
                ['title' => 'الأنواع المتاحة', 'body' => 'النظام يدعم: <span class="field">نقدي</span>، <span class="field">شيك</span>، <span class="field">فيزا/ماستركارد</span>، <span class="field">تحويل بنكي</span>، <span class="field">محفظة إلكترونية</span>.'],
                ['title' => 'تخصيص الإعدادات', 'body' => 'لكل طريقة: حدد الحساب المحاسبي المقابل، والحقول الإضافية المطلوبة عند الدفع.<span class="info">يمكن تفعيل أو تعطيل أي طريقة حسب الحاجة.</span>'],
            ],
            'payments.issue-receipt' => [
                ['title' => 'تحصيل الدفعة', 'body' => 'بعد اختيار طلب الدفع من الطابور، أكمل عملية التحصيل.'],
                ['title' => 'إصدار الإيصال', 'body' => 'الإيصال يُنشأ تلقائياً برقم تسلسلي فريد. يحتوي: اسم العضو، المبلغ، الطريقة، التاريخ.'],
                ['title' => 'الطباعة', 'body' => 'اضغط <span class="field">طباعة</span> لطباعة الإيصال فوراً. يمكن إعادة الطباعة لاحقاً من <span class="field">سجل الإيصالات</span>.<span class="success">تنسيق الإيصال قابل للتخصيص من الإعدادات.</span>'],
            ],
            'payments.void-workflow' => [
                ['title' => 'طلب إلغاء الإيصال', 'body' => 'من تفاصيل الدفعة > <span class="field">طلب إلغاء</span>. أدخل <span class="field">السبب</span>.'],
                ['title' => 'سلسلة الموافقات', 'body' => 'الطلب يذهب للمسؤول المعتمد حسب المبلغ:<ul><li>أقل من 1,000: أمين الخزينة</li><li>1,000 - 10,000: مدير مالي</li><li>أكثر من 10,000: مدير عام</li></ul>'],
                ['title' => 'التنفيذ', 'body' => 'بعد الموافقة: يتم إلغاء الإيصال وترحيل قيد عكسي.<span class="warn">الإلغاء يُسجّل في سجل المراجعة ولا يمكن حذفه.</span>'],
            ],
            // ── COACHES ──
            'coaches.register-coach' => [
                ['title' => 'فتح صفحة المدربين', 'body' => 'من <span class="field">المدربين</span> > <span class="field">إضافة مدرب جديد</span>.'],
                ['title' => 'البيانات الشخصية', 'body' => 'أدخل <span class="field">الرقم القومي</span> — يتم استخراج تاريخ الميلاد والنوع تلقائياً. أضف الصورة الشخصية.'],
                ['title' => 'المؤهلات والشهادات', 'body' => 'أدخل <span class="field">التخصص الرياضي</span>، <span class="field">سنوات الخبرة</span>، وارفع صور الشهادات.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يتم توليد رقم المدرب تلقائياً.<span class="success">يمكنك الآن ربطه بالألعاب المتاحة.</span>'],
            ],
            'coaches.assign-discipline' => [
                ['title' => 'فتح ملف المدرب', 'body' => 'من قائمة المدربين اضغط على المدرب المطلوب.'],
                ['title' => 'إضافة تخصص', 'body' => 'من تبويب <span class="field">التخصصات</span> > <span class="field">إضافة لعبة</span>. اختر اللعبة من القائمة.'],
                ['title' => 'تحديد المستوى', 'body' => 'حدد <span class="field">مستوى التدريب</span> (مبتدئين، متوسط، متقدم، محترف).'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">حفظ</span>. المدرب يظهر الآن عند اختيار هذه اللعبة في النشاط الرياضي.<span class="info">يمكن ربط المدرب بأكثر من لعبة.</span>'],
            ],
            'coaches.coach-schedule' => [
                ['title' => 'فتح الجدول', 'body' => 'من ملف المدرب > <span class="field">الجدول</span>، أو من <span class="field">المدربين</span> > <span class="field">الجداول</span>.'],
                ['title' => 'إضافة فترة توفر', 'body' => 'اضغط على الخانة المطلوبة في التقويم. حدد <span class="field">اليوم</span>، <span class="field">من الساعة</span>، <span class="field">إلى الساعة</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الأوقات المحجوزة تظهر بلون مختلف.<span class="warn">لا يمكن حجز مدرب في وقت مشغول — النظام يمنع التعارض.</span>'],
            ],
            'coaches.coach-performance' => [
                ['title' => 'فتح تقارير الأداء', 'body' => 'من <span class="field">المدربين</span> > <span class="field">تقييم الأداء</span>.'],
                ['title' => 'اختيار المدرب والفترة', 'body' => 'حدد المدرب والفترة الزمنية. النظام يحسب: عدد الحصص، نسبة الحضور، تقييمات اللاعبين.'],
                ['title' => 'إضافة تقييم', 'body' => 'اضغط <span class="field">تقييم جديد</span>. أدخل الملاحظات والدرجة (1-5).<span class="success">التقييمات تُراكم وتظهر في الملف الشخصي للمدرب.</span>'],
            ],
            // ── CARNETS ──
            'carnets.carnet-issuance-conditions' => [
                ['title' => 'فتح شروط الإصدار', 'body' => 'من <span class="field">الكارنيهات</span> > <span class="field">شروط الإصدار</span>.'],
                ['title' => 'الشروط الإلزامية', 'body' => 'لإصدار كارنيه يجب استيفاء:<ul><li>صورة شخصية واضحة</li><li>سداد الاشتراك السنوي</li><li>عدم وجود مخالفات معلقة</li><li>اعتماد العضوية</li></ul>'],
                ['title' => 'التحقق التلقائي', 'body' => 'النظام يتحقق من جميع الشروط تلقائياً عند طلب الطباعة.<span class="warn">إذا لم يستوفِ العضو شرطاً — لن يظهر زر الطباعة.</span>'],
            ],
            'carnets.print-carnet' => [
                ['title' => 'البحث عن العضو', 'body' => 'من <span class="field">الكارنيهات</span> > <span class="field">إصدار كارنيه</span>. ابحث بالاسم أو الرقم القومي.'],
                ['title' => 'مراجعة البيانات', 'body' => 'تأكد من صحة: الاسم، الصورة، رقم العضوية، نوع العضوية.'],
                ['title' => 'الطباعة', 'body' => 'اضغط <span class="field">طباعة</span>. الكارنيه يُطبع بتصميم النادي المعتمد.<span class="success">يتم تسجيل تاريخ الإصدار ورقم تسلسلي فريد تلقائياً.</span>'],
            ],
            'carnets.deactivate-carnet' => [
                ['title' => 'البحث عن الكارنيه', 'body' => 'من <span class="field">الكارنيهات</span> > <span class="field">إدارة الكارنيهات</span>. ابحث عن العضو.'],
                ['title' => 'إلغاء الكارنيه', 'body' => 'اضغط <span class="field">إلغاء</span>. حدد <span class="field">السبب</span> (مفقود، تالف، إيقاف عضوية).'],
                ['title' => 'إعادة إصدار', 'body' => 'بعد الإلغاء يمكن <span class="field">إعادة إصدار</span> كارنيه جديد برقم مختلف.<span class="warn">الكارنيه الملغي لا يمكن استخدامه للدخول.</span>'],
            ],
            'carnets.guest-entry' => [
                ['title' => 'تسجيل ضيف', 'body' => 'من <span class="field">الكارنيهات</span> > <span class="field">دخول الزوار</span> > <span class="field">زائر جديد</span>.'],
                ['title' => 'بيانات الضيف', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">الرقم القومي</span>، و<span class="field">العضو المضيف</span>.'],
                ['title' => 'إصدار تصريح', 'body' => 'اضغط <span class="field">إصدار تصريح</span>. يتم إنشاء طلب دفع لرسوم الدخول.<span class="info">التصريح صالح ليوم واحد فقط.</span>'],
            ],
            // ── FACILITIES ──
            'facilities.create-facility' => [
                ['title' => 'إنشاء مرفق', 'body' => 'من <span class="field">المرافق</span> > <span class="field">مرفق جديد</span>.'],
                ['title' => 'البيانات الأساسية', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">النوع</span> (ملعب، صالة، حمام سباحة)، <span class="field">السعة</span>، و<span class="field">الموقع</span>.'],
                ['title' => 'ساعات التشغيل', 'body' => 'حدد أوقات الفتح والإغلاق لكل يوم في الأسبوع.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. المرفق جاهز الآن لإضافة وحدات وتلقي حجوزات.<span class="success">يمكنك إضافة صور للمرفق من صفحة التفاصيل.</span>'],
            ],
            'facilities.manage-units' => [
                ['title' => 'فتح وحدات المرفق', 'body' => 'من صفحة المرفق > <span class="field">الوحدات</span> > <span class="field">إضافة وحدة</span>.'],
                ['title' => 'بيانات الوحدة', 'body' => 'أدخل <span class="field">الاسم</span> (مثال: ملعب 1، حارة 3)، <span class="field">السعة</span>، و<span class="field">سعر الساعة</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الوحدة تظهر في تقويم الحجوزات.<span class="info">كل وحدة لها جدول حجز مستقل.</span>'],
            ],
            'facilities.maintenance-schedule' => [
                ['title' => 'إنشاء أمر صيانة', 'body' => 'من المرفق > <span class="field">الصيانة</span> > <span class="field">أمر جديد</span>.'],
                ['title' => 'تفاصيل الصيانة', 'body' => 'حدد <span class="field">نوع الصيانة</span> (دورية/طارئة)، <span class="field">الوصف</span>، <span class="field">تاريخ البدء</span>، <span class="field">المدة المتوقعة</span>.'],
                ['title' => 'حجب المرفق', 'body' => 'فعّل <span class="field">حجب الحجوزات</span> خلال فترة الصيانة. الحجوزات المتعارضة يتم إخطار أصحابها.<span class="warn">الحجوزات القائمة خلال فترة الصيانة تحتاج إلغاء يدوي أو نقل.</span>'],
            ],
            'facilities.booking-rules' => [
                ['title' => 'فتح قواعد الحجز', 'body' => 'من <span class="field">المرافق</span> > <span class="field">قواعد الحجز</span>.'],
                ['title' => 'سياسة الإلغاء', 'body' => 'حدد: <span class="field">مهلة الإلغاء المجاني</span> (مثال: 24 ساعة قبل الموعد). بعدها تُخصم رسوم إلغاء.'],
                ['title' => 'الأولوية', 'body' => 'حدد أولوية الحجز: الأعضاء أولاً، ثم الفرق، ثم الزوار.<span class="info">يمكن تخصيص أسعار مختلفة لكل فئة.</span>'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. القواعد تُطبق تلقائياً على جميع الحجوزات الجديدة.'],
            ],
            // ── TOURNAMENTS ──
            'tournaments.create-tournament' => [
                ['title' => 'إنشاء بطولة', 'body' => 'من <span class="field">البطولات</span> > <span class="field">بطولة جديدة</span>.'],
                ['title' => 'البيانات الأساسية', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">اللعبة</span>، <span class="field">نوع البطولة</span> (فردي/فرق)، <span class="field">الحد الأقصى للمشاركين</span>.'],
                ['title' => 'القوانين والجوائز', 'body' => 'أدخل <span class="field">قوانين البطولة</span> و<span class="field">الجوائز</span> لكل مركز.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. البطولة في حالة <span class="field">مسودة</span> — افتح التسجيل عندما تكون جاهزاً.<span class="info">يمكنك تحرير كل التفاصيل قبل فتح التسجيل.</span>'],
            ],
            'tournaments.tournament-registration' => [
                ['title' => 'فتح التسجيل', 'body' => 'من صفحة البطولة اضغط <span class="field">فتح التسجيل</span>. حدد <span class="field">تاريخ الإغلاق</span>.'],
                ['title' => 'قبول المشاركين', 'body' => 'المشتركون يظهرون في قائمة الانتظار. اضغط <span class="field">قبول</span> أو <span class="field">رفض</span> لكل طلب.'],
                ['title' => 'رسوم المشاركة', 'body' => 'عند القبول يُنشأ طلب دفع تلقائي لرسوم المشاركة.<span class="warn">لا يُثبت التسجيل إلا بعد سداد الرسوم.</span>'],
            ],
            'tournaments.generate-bracket' => [
                ['title' => 'إغلاق التسجيل', 'body' => 'اضغط <span class="field">إغلاق التسجيل</span> بعد اكتمال العدد أو انتهاء المهلة.'],
                ['title' => 'توليد القرعة', 'body' => 'اضغط <span class="field">توليد القرعة</span>. النظام يوزع المشاركين عشوائياً في شجرة خروج المغلوب.'],
                ['title' => 'مراجعة ونشر', 'body' => 'راجع التوزيع. يمكنك إعادة التوليد. اضغط <span class="field">نشر</span> لإعلان القرعة.<span class="success">شجرة البطولة تظهر للمشاركين فوراً بعد النشر.</span>'],
            ],
            'tournaments.record-match-result' => [
                ['title' => 'فتح المباراة', 'body' => 'من شجرة البطولة اضغط على المباراة المطلوبة.'],
                ['title' => 'إدخال النتيجة', 'body' => 'أدخل النتيجة لكل طرف. حدد <span class="field">الفائز</span>.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد النتيجة</span>. يتقدم الفائز تلقائياً للدور التالي.<span class="info">يُحدّث الترتيب تلقائياً بعد كل مباراة.</span>'],
            ],
            // ── RENTALS ──
            'rentals.setup-rental-entity' => [
                ['title' => 'إنشاء وحدة إيجارية', 'body' => 'من <span class="field">الإيجارات</span> > <span class="field">الوحدات</span> > <span class="field">وحدة جديدة</span>.'],
                ['title' => 'البيانات', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">النوع</span> (محل، مكتب، كشك)، <span class="field">المساحة</span>، <span class="field">الموقع</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الوحدة جاهزة لإنشاء عقد إيجار.<span class="info">يمكن إرفاق صور ومخطط للوحدة.</span>'],
            ],
            'rentals.create-rental-contract' => [
                ['title' => 'إنشاء عقد', 'body' => 'من الوحدة > <span class="field">عقد جديد</span>، أو من <span class="field">الإيجارات</span> > <span class="field">العقود</span>.'],
                ['title' => 'بيانات العقد', 'body' => 'حدد <span class="field">المستأجر</span>، <span class="field">مدة العقد</span>، <span class="field">القيمة الشهرية</span>، <span class="field">تاريخ البدء</span>.'],
                ['title' => 'الشروط الخاصة', 'body' => 'أضف أي شروط خاصة (نشاط مسموح، ساعات عمل، شروط الإخلاء).'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يتم توليد رقم العقد وإنشاء جدول الفوترة تلقائياً.<span class="warn">العقد يحتاج اعتماد إداري قبل التفعيل.</span>'],
            ],
            'rentals.rental-deposit' => [
                ['title' => 'تحصيل التأمين', 'body' => 'عند تفعيل العقد يُنشأ طلب دفع بقيمة التأمين. يُحصّل من الخزينة.'],
                ['title' => 'تسجيل التأمين', 'body' => 'بعد التحصيل يُسجل التأمين في حساب <span class="field">أمانات المستأجرين</span>.'],
                ['title' => 'استرداد التأمين', 'body' => 'عند إنهاء العقد: <span class="field">استرداد التأمين</span>. يمكن خصم أي تلفيات قبل الاسترداد.<span class="info">التأمين يُرد كاملاً إذا لم تكن هناك مخالفات.</span>'],
            ],
            'rentals.rental-invoicing' => [
                ['title' => 'الفوترة التلقائية', 'body' => 'النظام يُنشئ فواتير شهرية تلقائياً حسب جدول العقد.'],
                ['title' => 'مراجعة الفواتير', 'body' => 'من <span class="field">الإيجارات</span> > <span class="field">الفواتير</span>. راجع الفواتير المستحقة والمسددة.'],
                ['title' => 'التحصيل', 'body' => 'عند السداد: يتم إنشاء إيصال وتحديث حالة الفاتورة.<span class="warn">الفاتورة المتأخرة أكثر من 15 يوم تُنشئ إنذار تلقائي للمستأجر.</span>'],
            ],
            // ── SUPPORT ──
            'support.create-ticket' => [
                ['title' => 'فتح تذكرة', 'body' => 'من <span class="field">الدعم الفني</span> > <span class="field">تذكرة جديدة</span>.'],
                ['title' => 'وصف المشكلة', 'body' => 'أدخل <span class="field">العنوان</span>، <span class="field">التصنيف</span>، <span class="field">الأولوية</span> (عادية/مهمة/حرجة)، و<span class="field">الوصف التفصيلي</span>.'],
                ['title' => 'المرفقات', 'body' => 'ارفع لقطات شاشة أو ملفات توضيحية إن وُجدت.'],
                ['title' => 'الإرسال', 'body' => 'اضغط <span class="field">إرسال</span>. يتم توليد رقم تذكرة وإشعار فريق الدعم.<span class="success">يمكنك متابعة حالة التذكرة من لوحة التحكم.</span>'],
            ],
            'support.assign-ticket' => [
                ['title' => 'فتح التذاكر الجديدة', 'body' => 'من <span class="field">الدعم الفني</span> > <span class="field">التذاكر الجديدة</span>.'],
                ['title' => 'تعيين الفني', 'body' => 'اختر التذكرة ثم اضغط <span class="field">تعيين</span>. اختر الفني المناسب حسب التخصص.'],
                ['title' => 'التأكيد', 'body' => 'يتم إشعار الفني المعيّن بالتذكرة. الحالة تتغير إلى <span class="field">قيد المعالجة</span>.<span class="info">يمكن إعادة التعيين إذا لم يستجب الفني خلال المهلة.</span>'],
            ],
            'support.resolve-ticket' => [
                ['title' => 'تسجيل الحل', 'body' => 'من التذكرة > <span class="field">تسجيل حل</span>. أدخل وصف الحل والخطوات المتبعة.'],
                ['title' => 'إغلاق التذكرة', 'body' => 'اضغط <span class="field">إغلاق</span>. يتم إشعار صاحب التذكرة.'],
                ['title' => 'التقييم', 'body' => 'صاحب التذكرة يمكنه تقييم الخدمة (1-5 نجوم).<span class="success">التقييمات تُستخدم في تقارير أداء فريق الدعم.</span>'],
            ],
            'support.sla-monitoring' => [
                ['title' => 'فتح لوحة SLA', 'body' => 'من <span class="field">الدعم الفني</span> > <span class="field">مستوى الخدمة</span>.'],
                ['title' => 'المؤشرات', 'body' => 'يعرض: متوسط وقت الاستجابة، متوسط وقت الحل، نسبة الالتزام بالمهلة.'],
                ['title' => 'التنبيهات', 'body' => 'التذاكر المقتربة من انتهاء المهلة تظهر باللون الأحمر.<span class="warn">تجاوز SLA يُسجل في تقرير الأداء الشهري.</span>'],
            ],
            // ── SETTINGS ──
            'settings.system-configuration' => [
                ['title' => 'فتح الإعدادات', 'body' => 'من <span class="field">الإعدادات</span> > <span class="field">إعدادات النظام</span>.'],
                ['title' => 'البيانات الأساسية', 'body' => 'أدخل <span class="field">اسم النادي</span>، <span class="field">العنوان</span>، <span class="field">رقم الهاتف</span>، <span class="field">البريد الإلكتروني</span>.'],
                ['title' => 'الإعدادات التقنية', 'body' => 'حدد <span class="field">المنطقة الزمنية</span> (Africa/Cairo)، <span class="field">العملة</span> (جنيه مصري)، <span class="field">لغة النظام</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. التغييرات تسري فوراً على جميع المستخدمين.<span class="warn">تغيير المنطقة الزمنية يؤثر على جميع التواريخ في النظام.</span>'],
            ],
            'settings.branding-setup' => [
                ['title' => 'رفع الشعار', 'body' => 'من <span class="field">الإعدادات</span> > <span class="field">الهوية البصرية</span>. ارفع شعار النادي (PNG شفاف، 200x200 بكسل كحد أدنى).'],
                ['title' => 'الألوان', 'body' => 'حدد <span class="field">اللون الأساسي</span> و<span class="field">اللون الثانوي</span> للنظام.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الشعار يظهر في الشريط العلوي وجميع المطبوعات.<span class="info">يُنصح باستخدام شعار واضح يعمل على خلفية بيضاء وداكنة.</span>'],
            ],
            'settings.receipt-design' => [
                ['title' => 'فتح مصمم الإيصالات', 'body' => 'من <span class="field">الإعدادات</span> > <span class="field">تصميم الإيصالات</span>.'],
                ['title' => 'تخصيص المحتوى', 'body' => 'حدد العناصر الظاهرة: الشعار، اسم النادي، بيانات العضو، تفاصيل الدفعة، كود QR.'],
                ['title' => 'معاينة وحفظ', 'body' => 'اضغط <span class="field">معاينة</span> لرؤية النتيجة. ثم <span class="field">حفظ</span>.<span class="success">التصميم يُطبق على جميع الإيصالات الجديدة فوراً.</span>'],
            ],
            // ── FINES ──
            'fines.impose-fine' => [
                ['title' => 'فرض غرامة', 'body' => 'من ملف العضو > <span class="field">مخالفات</span> > <span class="field">غرامة جديدة</span>.'],
                ['title' => 'تحديد النوع والمبلغ', 'body' => 'اختر <span class="field">نوع المخالفة</span>. المبلغ يُحسب حسب اللائحة (1,000 — 10,000 ج.م).'],
                ['title' => 'التأكيد', 'body' => 'أدخل <span class="field">الوصف</span> واضغط <span class="field">حفظ</span>.<span class="warn">الغرامة تُنشئ طلب دفع تلقائياً في طابور الخزينة.</span>'],
            ],
            'fines.fine-types-setup' => [
                ['title' => 'فتح أنواع المخالفات', 'body' => 'من <span class="field">المخالفات</span> > <span class="field">أنواع المخالفات</span> > <span class="field">نوع جديد</span>.'],
                ['title' => 'بيانات النوع', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">الوصف</span>، <span class="field">المبلغ الافتراضي</span>، <span class="field">درجة الخطورة</span> (بسيطة/متوسطة/جسيمة).'],
                ['title' => 'قواعد التصعيد', 'body' => 'حدد ماذا يحدث عند التكرار: مضاعفة المبلغ، إيقاف مؤقت، فصل.<span class="info">القواعد تُطبق تلقائياً عند فرض مخالفة جديدة.</span>'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. النوع متاح الآن عند فرض مخالفة.'],
            ],
            'fines.fine-escalation' => [
                ['title' => 'مراجعة التكرارات', 'body' => 'من <span class="field">المخالفات</span> > <span class="field">التصعيد التلقائي</span>. النظام يعرض المخالفات المتكررة.'],
                ['title' => 'قواعد التصعيد', 'body' => 'حسب الإعداد:<ul><li>التكرار الأول: تحذير</li><li>التكرار الثاني: مضاعفة المبلغ</li><li>التكرار الثالث: إيقاف مؤقت 30 يوم</li></ul>'],
                ['title' => 'التنفيذ', 'body' => 'عند فرض مخالفة مكررة — النظام يطبق التصعيد تلقائياً ويُخطر العضو.<span class="warn">الإيقاف يمنع الدخول ويُلغي الحجوزات القائمة.</span>'],
            ],
            'fines.fine-payment' => [
                ['title' => 'عرض المخالفات المعلقة', 'body' => 'من ملف العضو > <span class="field">مخالفات</span> أو من <span class="field">طابور الدفع</span>.'],
                ['title' => 'السداد', 'body' => 'اختر المخالفة واضغط <span class="field">سداد</span>. اختر طريقة الدفع.'],
                ['title' => 'التأكيد', 'body' => 'بعد التحصيل: حالة المخالفة تتغير إلى <span class="field">مسددة</span>.<span class="success">إذا كان العضو موقوفاً بسبب المخالفة — يُعاد تفعيله تلقائياً بعد السداد.</span>'],
            ],
            // ── ROLES ──
            'roles.create-role' => [
                ['title' => 'إنشاء دور', 'body' => 'من <span class="field">الإعدادات</span> > <span class="field">الأدوار والصلاحيات</span> > <span class="field">دور جديد</span>.'],
                ['title' => 'البيانات', 'body' => 'أدخل <span class="field">اسم الدور</span> (مثال: أمين خزنة فرعية) و<span class="field">الكود</span>.'],
                ['title' => 'تعيين الصلاحيات', 'body' => 'حدد الصلاحيات المطلوبة من القائمة. يمكنك البحث حسب الوحدة.<span class="info">تغيير الصلاحيات يسري فوراً على جميع المستخدمين المرتبطين بهذا الدور.</span>'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يمكنك ربط الموظفين بالدور من صفحة إدارة المستخدمين.'],
            ],
            'roles.assign-permissions' => [
                ['title' => 'فتح صفحة الدور', 'body' => 'من <span class="field">الأدوار</span> > اضغط على الدور المطلوب تعديل صلاحياته.'],
                ['title' => 'اختيار الصلاحيات', 'body' => 'الصلاحيات منظمة حسب الوحدة. حدد الصلاحيات المطلوبة بعلامة ✓.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ التعديلات</span>. التغييرات تسري فوراً.<span class="warn">إزالة صلاحية من دور تؤثر على جميع المستخدمين المرتبطين به.</span>'],
            ],
            'roles.assign-role-to-user' => [
                ['title' => 'فتح إدارة المستخدمين', 'body' => 'من <span class="field">الإعدادات</span> > <span class="field">المستخدمين</span>. اختر المستخدم.'],
                ['title' => 'تعيين الأدوار', 'body' => 'من تبويب <span class="field">الأدوار</span> > <span class="field">إضافة دور</span>. اختر الدور من القائمة.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">حفظ</span>. الموظف يحصل على جميع صلاحيات الدور فوراً.<span class="info">يمكن تعيين أكثر من دور — الصلاحيات تُجمع.</span>'],
            ],
            'roles.custom-permissions' => [
                ['title' => 'فتح صلاحيات المستخدم', 'body' => 'من ملف المستخدم > <span class="field">صلاحيات مخصصة</span>.'],
                ['title' => 'إضافة صلاحية فردية', 'body' => 'اضغط <span class="field">إضافة</span>. اختر الصلاحية المحددة من القائمة.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الصلاحية الفردية تُضاف بالإضافة للصلاحيات من الأدوار.<span class="warn">الصلاحيات الفردية تتقدم على الأدوار — استخدمها بحذر.</span>'],
            ],
            // ── INTERVIEWS ──
            'interviews.schedule-interview' => [
                ['title' => 'جدولة مقابلة', 'body' => 'من <span class="field">المقابلات</span> > <span class="field">جدولة مقابلة</span>.'],
                ['title' => 'البيانات', 'body' => 'حدد <span class="field">المتقدم</span>، <span class="field">التاريخ والوقت</span>، <span class="field">المكان</span>، و<span class="field">لجنة المقابلة</span>.'],
                ['title' => 'الإشعارات', 'body' => 'يتم إشعار المتقدم وأعضاء اللجنة تلقائياً بالموعد.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. المقابلة تظهر في التقويم.<span class="info">يمكن إعادة الجدولة قبل 24 ساعة من الموعد.</span>'],
            ],
            'interviews.conduct-interview' => [
                ['title' => 'فتح المقابلة', 'body' => 'من التقويم أو <span class="field">المقابلات</span> > <span class="field">مقابلات اليوم</span>.'],
                ['title' => 'تسجيل الملاحظات', 'body' => 'أدخل ملاحظاتك لكل محور من محاور التقييم.'],
                ['title' => 'التقييم', 'body' => 'أعطِ درجة (1-10) لكل محور: المهارات الفنية، التواصل، الخبرة، الملاءمة الثقافية.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ التقييم</span>. يمكن لكل عضو في اللجنة إدخال تقييمه المستقل.<span class="success">النظام يحسب المتوسط من جميع المقيّمين.</span>'],
            ],
            'interviews.interview-results' => [
                ['title' => 'مراجعة النتائج', 'body' => 'من <span class="field">المقابلات</span> > <span class="field">النتائج</span>. يعرض المتقدمين مرتبين حسب الدرجة.'],
                ['title' => 'اتخاذ القرار', 'body' => 'حدد لكل متقدم: <span class="field">قبول</span>، <span class="field">رفض</span>، أو <span class="field">قائمة انتظار</span>.'],
                ['title' => 'الإخطار', 'body' => 'اضغط <span class="field">إرسال النتائج</span>. يتم إخطار المتقدمين بالنتيجة.<span class="info">المقبولون يمكن تحويلهم مباشرة لإجراءات التعيين.</span>'],
            ],
            // ── INSTALLMENTS ──
            'installments.create-installment-plan' => [
                ['title' => 'إنشاء خطة تقسيط', 'body' => 'من <span class="field">التقسيط</span> > <span class="field">خطة جديدة</span>.'],
                ['title' => 'بيانات الخطة', 'body' => 'حدد <span class="field">العضو</span>، <span class="field">إجمالي المبلغ</span>، <span class="field">المقدم</span>، <span class="field">عدد الأقساط</span>.'],
                ['title' => 'جدول السداد', 'body' => 'النظام يحسب قيمة القسط ومواعيد الاستحقاق تلقائياً. يمكنك تعديل المواعيد يدوياً.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يتم إنشاء طلبات دفع لكل قسط حسب المواعيد.<span class="warn">تأخر القسط أكثر من 15 يوم يُنشئ إنذار تلقائي.</span>'],
            ],
            'installments.payment-schedule' => [
                ['title' => 'فتح جدول السداد', 'body' => 'من خطة التقسيط > <span class="field">جدول السداد</span>.'],
                ['title' => 'عرض الأقساط', 'body' => 'يعرض لكل قسط: <span class="field">رقم القسط</span>، <span class="field">تاريخ الاستحقاق</span>، <span class="field">المبلغ</span>، <span class="field">الحالة</span> (معلق/مسدد/متأخر).'],
                ['title' => 'تعديل الجدول', 'body' => 'يمكنك تأجيل قسط أو إعادة جدولة.<span class="info">التعديل يحتاج صلاحية مدير الاشتراكات.</span>'],
            ],
            'installments.collect-installment' => [
                ['title' => 'البحث عن القسط', 'body' => 'من <span class="field">طابور الدفع</span> أو من خطة التقسيط > القسط المستحق.'],
                ['title' => 'التحصيل', 'body' => 'اختر طريقة الدفع وأكمل التحصيل كأي دفعة عادية.'],
                ['title' => 'التأكيد', 'body' => 'حالة القسط تتغير إلى <span class="field">مسدد</span>. النظام يُحدث الرصيد المتبقي تلقائياً.<span class="success">عند سداد آخر قسط — الخطة تُغلق تلقائياً.</span>'],
            ],
            'installments.overdue-monitoring' => [
                ['title' => 'فتح المتأخرات', 'body' => 'من <span class="field">التقسيط</span> > <span class="field">الأقساط المتأخرة</span>.'],
                ['title' => 'القائمة', 'body' => 'يعرض جميع الأقساط المتأخرة مع: اسم العضو، مدة التأخير، المبلغ.'],
                ['title' => 'الإجراءات', 'body' => 'يمكنك: <span class="field">إرسال تذكير</span>، <span class="field">تطبيق غرامة تأخير</span>، أو <span class="field">تصعيد للإدارة</span>.<span class="warn">التأخير المتكرر قد يؤدي لإيقاف العضوية حسب السياسة.</span>'],
            ],
            // ── REPORTS ──
            'reports.report-types' => [
                ['title' => 'فتح مركز التقارير', 'body' => 'من <span class="field">التقارير</span> > <span class="field">جميع التقارير</span>.'],
                ['title' => 'التصنيفات', 'body' => 'التقارير مصنفة حسب الوحدة: مالية، عضويات، مبيعات، مخازن، موارد بشرية.'],
                ['title' => 'اختيار التقرير', 'body' => 'اضغط على التقرير المطلوب. كل تقرير له صفحة مستقلة مع فلاتر خاصة.<span class="info">يمكنك تثبيت التقارير المفضلة للوصول السريع.</span>'],
            ],
            'reports.apply-filters' => [
                ['title' => 'فتح الفلاتر', 'body' => 'في أي تقرير: اضغط <span class="field">فلترة</span> أو استخدم شريط الفلاتر العلوي.'],
                ['title' => 'تحديد المعايير', 'body' => 'اختر: <span class="field">الفترة الزمنية</span>، <span class="field">الفرع</span>، <span class="field">الحالة</span>، <span class="field">القسم</span> حسب نوع التقرير.'],
                ['title' => 'تطبيق', 'body' => 'اضغط <span class="field">تطبيق</span>. النتائج تُحدث فوراً.<span class="success">يمكنك حفظ مجموعة فلاتر كـ"عرض محفوظ" لاستخدامها لاحقاً.</span>'],
            ],
            'reports.export-report' => [
                ['title' => 'تطبيق الفلاتر', 'body' => 'أولاً: تأكد من ضبط الفلاتر للحصول على البيانات المطلوبة.'],
                ['title' => 'اختيار الصيغة', 'body' => 'اضغط <span class="field">تصدير</span>. اختر: <span class="field">Excel</span> (للتعديل) أو <span class="field">PDF</span> (للطباعة).'],
                ['title' => 'التحميل', 'body' => 'الملف يُحمّل تلقائياً. يحتوي نفس البيانات الظاهرة على الشاشة.<span class="info">ملفات Excel تحتفظ بالتنسيق العربي (RTL).</span>'],
            ],
            'reports.schedule-report' => [
                ['title' => 'فتح الجدولة', 'body' => 'من أي تقرير: <span class="field">جدولة تلقائية</span>.'],
                ['title' => 'إعداد التكرار', 'body' => 'حدد: <span class="field">التكرار</span> (يومي/أسبوعي/شهري)، <span class="field">وقت الإرسال</span>، <span class="field">الصيغة</span> (Excel/PDF).'],
                ['title' => 'المستلمون', 'body' => 'حدد البريد الإلكتروني للمستلمين.'],
                ['title' => 'التفعيل', 'body' => 'اضغط <span class="field">تفعيل</span>. التقرير يُرسل تلقائياً حسب الجدول.<span class="warn">تأكد من صحة البريد الإلكتروني — لا يوجد تأكيد قبل الإرسال.</span>'],
            ],
            // ── SEASONAL ──
            'seasonal.setup-season' => [
                ['title' => 'إنشاء موسم', 'body' => 'من <span class="field">العضوية الموسمية</span> > <span class="field">موسم جديد</span>.'],
                ['title' => 'بيانات الموسم', 'body' => 'أدخل <span class="field">الاسم</span> (مثال: صيف 2026)، <span class="field">تاريخ البدء</span>، <span class="field">تاريخ الانتهاء</span>.'],
                ['title' => 'المرافق المتاحة', 'body' => 'حدد المرافق المشمولة في الاشتراك الموسمي (حمام سباحة، نادي صحي، ملاعب).'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الموسم في حالة <span class="field">مسودة</span> حتى تفتح التسجيل.<span class="info">أعدّ الأسعار قبل فتح التسجيل.</span>'],
            ],
            'seasonal.seasonal-pricing' => [
                ['title' => 'فتح التسعير', 'body' => 'من صفحة الموسم > <span class="field">التسعير</span>.'],
                ['title' => 'تحديد الفئات', 'body' => 'أضف فئات الأسعار: <span class="field">فرد</span>، <span class="field">عائلة</span>، <span class="field">زوجين</span>. لكل فئة حدد السعر.'],
                ['title' => 'خصومات مبكرة', 'body' => 'يمكنك إضافة خصم للتسجيل المبكر (مثال: 15% خصم قبل 1 يونيو).<span class="success">الخصم يُطبق تلقائياً حسب تاريخ التسجيل.</span>'],
            ],
            'seasonal.seasonal-registration' => [
                ['title' => 'تسجيل في الموسم', 'body' => 'من <span class="field">العضوية الموسمية</span> > <span class="field">تسجيل جديد</span>.'],
                ['title' => 'اختيار العضو والفئة', 'body' => 'ابحث عن العضو. حدد <span class="field">فئة الاشتراك</span>. النظام يحسب السعر تلقائياً.'],
                ['title' => 'الدفع', 'body' => 'يُنشأ طلب دفع. يمكن السداد نقداً أو تقسيط.'],
                ['title' => 'التأكيد', 'body' => 'بعد السداد: يُصدر كارنيه موسمي ويُفعّل الدخول للمرافق المشمولة.<span class="info">يمكن ترقية الفئة لاحقاً بدفع الفرق.</span>'],
            ],
            'seasonal.seasonal-report' => [
                ['title' => 'فتح تقرير الموسم', 'body' => 'من <span class="field">العضوية الموسمية</span> > <span class="field">التقارير</span>.'],
                ['title' => 'المؤشرات', 'body' => 'يعرض: إجمالي المشتركين، الإيرادات، نسبة الإشغال، مقارنة بالموسم السابق.'],
                ['title' => 'التصدير', 'body' => 'اضغط <span class="field">تصدير</span> للحصول على التقرير التفصيلي.<span class="success">يمكنك مقارنة أداء المواسم المختلفة.</span>'],
            ],
            // ── DOCUMENTS ──
            'documents.upload-document' => [
                ['title' => 'رفع مستند', 'body' => 'من <span class="field">المستندات</span> > <span class="field">رفع مستند</span>، أو من ملف العضو > <span class="field">المستندات</span>.'],
                ['title' => 'البيانات', 'body' => 'اختر <span class="field">الملف</span>، حدد <span class="field">النوع</span> (هوية، شهادة ميلاد، صورة، عقد)، وأضف <span class="field">ملاحظات</span>.'],
                ['title' => 'الرفع', 'body' => 'اضغط <span class="field">رفع</span>. المستند يُحفظ مرتبطاً بالعضو.<span class="info">الأنواع المقبولة: PDF، JPG، PNG. الحد الأقصى: 5 ميجا.</span>'],
            ],
            'documents.categorize-document' => [
                ['title' => 'فتح المستندات', 'body' => 'من <span class="field">المستندات</span> > <span class="field">جميع المستندات</span>.'],
                ['title' => 'التصنيف', 'body' => 'اختر المستند ثم غيّر <span class="field">التصنيف</span> أو <span class="field">الحالة</span> (جديد، قيد المراجعة، معتمد، مرفوض).'],
                ['title' => 'البحث', 'body' => 'يمكنك البحث والتصفية حسب: النوع، العضو، التاريخ، الحالة.<span class="success">المستندات منظمة ويمكن الوصول إليها من أي مكان في النظام.</span>'],
            ],
            'documents.verify-document' => [
                ['title' => 'فتح المراجعة', 'body' => 'من <span class="field">المستندات</span> > <span class="field">بانتظار المراجعة</span>.'],
                ['title' => 'التحقق', 'body' => 'افتح المستند وتأكد من: الصلاحية، المطابقة للعضو، جودة الصورة.'],
                ['title' => 'القرار', 'body' => 'اضغط <span class="field">اعتماد</span> أو <span class="field">رفض</span> مع ذكر السبب.<span class="warn">المستند المرفوض يُخطر العضو بالسبب لإعادة الرفع.</span>'],
            ],
            // ── BRANCHES ──
            'branches.create-branch' => [
                ['title' => 'إنشاء فرع', 'body' => 'من <span class="field">الفروع</span> > <span class="field">فرع جديد</span>.'],
                ['title' => 'البيانات', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">العنوان</span>، <span class="field">الهاتف</span>، <span class="field">المدير المسؤول</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الفرع متاح الآن لربط الموظفين والمرافق به.<span class="info">كل فرع يمكن أن يكون له إعداداته الخاصة.</span>'],
            ],
            'branches.branch-configuration' => [
                ['title' => 'فتح إعدادات الفرع', 'body' => 'من <span class="field">الفروع</span> > اختر الفرع > <span class="field">الإعدادات</span>.'],
                ['title' => 'ساعات العمل', 'body' => 'حدد ساعات الفتح والإغلاق لكل يوم. يمكن تعيين أيام العطل.'],
                ['title' => 'الخدمات', 'body' => 'حدد الخدمات المتاحة في هذا الفرع (ملاعب، حمام سباحة، صالة لياقة).'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الإعدادات تسري على الحجوزات والتقارير الخاصة بالفرع.'],
            ],
            'branches.branch-transfer' => [
                ['title' => 'طلب تحويل', 'body' => 'من ملف العضو أو الموظف > <span class="field">تحويل لفرع آخر</span>.'],
                ['title' => 'اختيار الفرع', 'body' => 'حدد <span class="field">الفرع الجديد</span> و<span class="field">تاريخ التحويل</span>.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد</span>. يتم نقل السجلات للفرع الجديد.<span class="warn">العضو يحتفظ بنفس رقم العضوية عبر الفروع.</span>'],
            ],
            // ── NEWS ──
            'news.create-article' => [
                ['title' => 'مقال جديد', 'body' => 'من <span class="field">الأخبار</span> > <span class="field">مقال جديد</span>.'],
                ['title' => 'المحتوى', 'body' => 'أدخل <span class="field">العنوان</span>، <span class="field">المحتوى</span> (يدعم التنسيق)، <span class="field">التصنيف</span>، وارفع <span class="field">صورة الغلاف</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ كمسودة</span>. المقال لا يظهر للأعضاء حتى يُنشر.<span class="info">يمكنك المعاينة قبل النشر.</span>'],
            ],
            'news.publish-article' => [
                ['title' => 'مراجعة المقال', 'body' => 'من <span class="field">الأخبار</span> > <span class="field">المسودات</span>. افتح المقال وراجعه.'],
                ['title' => 'النشر', 'body' => 'اضغط <span class="field">نشر</span>. يمكنك اختيار <span class="field">نشر فوري</span> أو <span class="field">جدولة</span> لتاريخ محدد.'],
                ['title' => 'التأكيد', 'body' => 'المقال يظهر في صفحة الأخبار للأعضاء.<span class="success">يمكنك تعديل المقال المنشور أو سحبه في أي وقت.</span>'],
            ],
            'news.manage-categories' => [
                ['title' => 'فتح التصنيفات', 'body' => 'من <span class="field">الأخبار</span> > <span class="field">التصنيفات</span> > <span class="field">تصنيف جديد</span>.'],
                ['title' => 'البيانات', 'body' => 'أدخل <span class="field">اسم التصنيف</span> و<span class="field">الوصف</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. التصنيف متاح الآن عند إنشاء مقال جديد.<span class="info">يمكنك ترتيب التصنيفات حسب الأولوية.</span>'],
            ],
            // ── WORKFLOW ──
            'workflow.create-workflow-rule' => [
                ['title' => 'إنشاء قاعدة', 'body' => 'من <span class="field">سير العمل</span> > <span class="field">القواعد</span> > <span class="field">قاعدة جديدة</span>.'],
                ['title' => 'شرط التشغيل', 'body' => 'حدد <span class="field">الحدث</span> الذي يُفعّل القاعدة (مثال: إنشاء طلب شراء > 5000 ج.م).'],
                ['title' => 'الإجراء', 'body' => 'حدد الإجراء: <span class="field">إرسال للموافقة</span>، <span class="field">إشعار</span>، <span class="field">تصعيد</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ وتفعيل</span>. القاعدة تعمل تلقائياً عند تحقق الشرط.<span class="warn">اختبر القاعدة على حالة تجريبية قبل التفعيل النهائي.</span>'],
            ],
            'workflow.approval-chain' => [
                ['title' => 'إنشاء سلسلة موافقات', 'body' => 'من <span class="field">سير العمل</span> > <span class="field">سلاسل الموافقات</span> > <span class="field">سلسلة جديدة</span>.'],
                ['title' => 'المراحل', 'body' => 'أضف مراحل بالترتيب: المرحلة 1 (المدير المباشر)، المرحلة 2 (المدير المالي)، المرحلة 3 (المدير العام).'],
                ['title' => 'الشروط', 'body' => 'لكل مرحلة حدد: <span class="field">المهلة</span>، <span class="field">بديل في حالة الغياب</span>، <span class="field">التصعيد التلقائي</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. اربط السلسلة بقاعدة سير عمل.<span class="info">الطلب يتقدم تلقائياً بعد كل موافقة.</span>'],
            ],
            'workflow.process-approval' => [
                ['title' => 'فتح الطلبات المعلقة', 'body' => 'من <span class="field">سير العمل</span> > <span class="field">بانتظار الموافقة</span>، أو من الإشعارات.'],
                ['title' => 'مراجعة الطلب', 'body' => 'افتح الطلب واطلع على التفاصيل والمرفقات.'],
                ['title' => 'القرار', 'body' => 'اضغط <span class="field">موافقة</span> أو <span class="field">رفض</span>. يمكنك إضافة <span class="field">تعليق</span>.<span class="success">عند الموافقة: الطلب ينتقل للمرحلة التالية أو يُنفذ.</span>'],
            ],
            'workflow.workflow-monitoring' => [
                ['title' => 'لوحة المتابعة', 'body' => 'من <span class="field">سير العمل</span> > <span class="field">المتابعة</span>.'],
                ['title' => 'الحالات', 'body' => 'يعرض: طلبات معلقة، منفذة، مرفوضة، متأخرة عن المهلة.'],
                ['title' => 'التفاصيل', 'body' => 'اضغط على أي طلب لمعرفة: أين توقف، من المسؤول الحالي، مدة الانتظار.<span class="warn">الطلبات المتجاوزة للمهلة تظهر باللون الأحمر ويمكن تصعيدها.</span>'],
            ],
            // ── SUBSCRIPTIONS ──
            'subscriptions.generate-annual' => [
                ['title' => 'فتح التوليد', 'body' => 'من <span class="field">الاشتراكات</span> > <span class="field">توليد اشتراكات سنوية</span>.'],
                ['title' => 'اختيار السنة', 'body' => 'حدد <span class="field">السنة المالية</span>. النظام يعرض عدد الأعضاء الفعالين المستحقين.'],
                ['title' => 'التوليد', 'body' => 'اضغط <span class="field">توليد</span>. يتم إنشاء سجل اشتراك لكل عضو فعال.'],
                ['title' => 'النتيجة', 'body' => 'يُنشأ طلب دفع لكل عضو في طابور الخزينة.<span class="warn">التوليد يُنفذ مرة واحدة في السنة — تأكد من صحة قائمة الأعضاء قبل التنفيذ.</span>'],
            ],
            'subscriptions.collect-subscription' => [
                ['title' => 'البحث عن الاشتراك', 'body' => 'من <span class="field">طابور الدفع</span> أو من ملف العضو > <span class="field">الاشتراكات</span>.'],
                ['title' => 'التحصيل', 'body' => 'اختر الاشتراك المستحق. حدد طريقة الدفع (نقدي/شيك/فيزا).'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تحصيل</span>. يُصدر إيصال ويُحدث حالة الاشتراك إلى <span class="field">مسدد</span>.<span class="success">يمكن التقسيط إذا كان مفعّلاً في الإعدادات.</span>'],
            ],
            'subscriptions.subscription-tracking' => [
                ['title' => 'فتح المتابعة', 'body' => 'من <span class="field">الاشتراكات</span> > <span class="field">المتابعة</span>.'],
                ['title' => 'التصنيف', 'body' => 'يعرض الأعضاء حسب الحالة: مسددين، متأخرين، معفيين. مع إجمالي كل فئة.'],
                ['title' => 'الإجراءات', 'body' => 'للمتأخرين: <span class="field">إرسال تذكير</span> أو <span class="field">إيقاف مؤقت</span>.<span class="warn">الإيقاف يمنع دخول العضو وإصدار كارنيه جديد.</span>'],
            ],
            'subscriptions.subscription-exemption' => [
                ['title' => 'طلب إعفاء', 'body' => 'من ملف العضو > <span class="field">الاشتراكات</span> > <span class="field">طلب إعفاء</span>.'],
                ['title' => 'البيانات', 'body' => 'حدد <span class="field">نوع الإعفاء</span> (كلي/جزئي)، <span class="field">السبب</span>، وارفع المستندات الداعمة.'],
                ['title' => 'الاعتماد', 'body' => 'الطلب يذهب للجنة الإعفاءات للاعتماد.<span class="info">الإعفاء المعتمد يُسجل في تقرير الإعفاءات السنوي.</span>'],
            ],
            // ── RESERVATIONS ──
            'reservations.create-booking' => [
                ['title' => 'إنشاء حجز', 'body' => 'من <span class="field">الحجوزات</span> > <span class="field">حجز جديد</span>، أو من تقويم المرفق.'],
                ['title' => 'البيانات', 'body' => 'حدد <span class="field">المرفق/الوحدة</span>، <span class="field">التاريخ</span>، <span class="field">من الساعة</span> — <span class="field">إلى الساعة</span>، <span class="field">العضو</span>.'],
                ['title' => 'التسعير', 'body' => 'النظام يحسب التكلفة تلقائياً. يُنشأ طلب دفع.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد الحجز</span>. يظهر الحجز في التقويم.<span class="warn">الحجز لا يُثبت إلا بعد سداد الرسوم.</span>'],
            ],
            'reservations.calendar-view' => [
                ['title' => 'فتح التقويم', 'body' => 'من <span class="field">الحجوزات</span> > <span class="field">التقويم</span>.'],
                ['title' => 'التنقل', 'body' => 'اختر العرض: <span class="field">يومي</span>، <span class="field">أسبوعي</span>، أو <span class="field">شهري</span>. تنقل بين التواريخ.'],
                ['title' => 'التفاصيل', 'body' => 'اضغط على أي حجز لعرض تفاصيله. الألوان تُميّز حالة الحجز (مؤكد/معلق/ملغي).<span class="info">يمكنك إنشاء حجز جديد بالضغط على خانة فارغة في التقويم.</span>'],
            ],
            'reservations.cancel-booking' => [
                ['title' => 'فتح الحجز', 'body' => 'من التقويم أو من <span class="field">الحجوزات</span> > البحث عن الحجز.'],
                ['title' => 'طلب الإلغاء', 'body' => 'اضغط <span class="field">إلغاء</span>. أدخل <span class="field">السبب</span>.'],
                ['title' => 'سياسة الاسترداد', 'body' => 'النظام يحسب المبلغ المسترد حسب سياسة الإلغاء (مثال: إلغاء قبل 24 ساعة = استرداد كامل).<span class="warn">بعد وقت المهلة: يتم خصم رسوم إلغاء.</span>'],
            ],
            'reservations.recurring-booking' => [
                ['title' => 'إنشاء حجز متكرر', 'body' => 'من <span class="field">الحجوزات</span> > <span class="field">حجز متكرر جديد</span>.'],
                ['title' => 'نمط التكرار', 'body' => 'حدد: <span class="field">كل أسبوع</span> / <span class="field">كل أسبوعين</span>، <span class="field">اليوم</span>، <span class="field">الوقت</span>، <span class="field">عدد الأسابيع</span>.'],
                ['title' => 'المراجعة', 'body' => 'النظام يعرض جميع الحجوزات التي سيتم إنشاؤها. تأكد من عدم التعارض.'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد</span>. يتم إنشاء جميع الحجوزات دفعة واحدة.<span class="info">يمكنك إلغاء حجز فردي دون التأثير على الباقي.</span>'],
            ],
            // ── MATCH CENTER ──
            'match-center.create-live-match' => [
                ['title' => 'إنشاء مباراة', 'body' => 'من <span class="field">مركز المباريات</span> > <span class="field">مباراة جديدة</span>.'],
                ['title' => 'البيانات', 'body' => 'حدد <span class="field">الفريقين</span>، <span class="field">اللعبة</span>، <span class="field">الملعب</span>، <span class="field">التاريخ والوقت</span>، <span class="field">الحكام</span>.'],
                ['title' => 'بدء المباراة', 'body' => 'عند وقت البداية: اضغط <span class="field">بدء</span>. المباراة تنتقل لحالة <span class="field">جارية</span>.'],
                ['title' => 'البث المباشر', 'body' => 'يمكن للمشاهدين متابعة الأحداث لحظياً من صفحة المباراة.<span class="success">الأحداث تُحدث فوراً عند تسجيلها.</span>'],
            ],
            'match-center.track-events' => [
                ['title' => 'فتح المباراة الجارية', 'body' => 'من <span class="field">مركز المباريات</span> > <span class="field">المباريات الحية</span>.'],
                ['title' => 'تسجيل حدث', 'body' => 'اضغط <span class="field">حدث جديد</span>. اختر النوع: <span class="field">هدف</span>، <span class="field">بطاقة صفراء</span>، <span class="field">بطاقة حمراء</span>، <span class="field">تبديل</span>.'],
                ['title' => 'التفاصيل', 'body' => 'حدد: <span class="field">اللاعب</span>، <span class="field">الدقيقة</span>. للأهداف: اختر نوع الهدف (عادي/ركلة جزاء/هدف ذاتي).'],
                ['title' => 'التأكيد', 'body' => 'اضغط <span class="field">تأكيد</span>. الحدث يظهر في الجدول الزمني فوراً.<span class="info">يمكنك تعديل أو حذف حدث خلال 5 دقائق.</span>'],
            ],
            'match-center.match-scoring' => [
                ['title' => 'إنهاء المباراة', 'body' => 'عند نهاية الوقت: اضغط <span class="field">إنهاء المباراة</span>.'],
                ['title' => 'النتيجة', 'body' => 'النتيجة النهائية تُحسب تلقائياً من الأهداف المسجلة.'],
                ['title' => 'الإحصائيات', 'body' => 'يعرض النظام: الاستحواذ، التسديدات، الركنيات، الأخطاء لكل فريق.<span class="success">يمكن تصدير ملخص المباراة كتقرير PDF.</span>'],
            ],
            // ── POOL MANAGEMENT ──
            'pool-management.setup-pool' => [
                ['title' => 'إنشاء حمام سباحة', 'body' => 'من <span class="field">إدارة حمامات السباحة</span> > <span class="field">حمام جديد</span>.'],
                ['title' => 'المواصفات', 'body' => 'أدخل <span class="field">الاسم</span>، <span class="field">الطول</span>، <span class="field">العرض</span>، <span class="field">العمق</span>، <span class="field">السعة القصوى</span>.'],
                ['title' => 'الإعدادات', 'body' => 'حدد ساعات التشغيل ودرجة الحرارة المستهدفة.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يمكنك الآن تقسيمه لحارات.<span class="info">السعة القصوى تُستخدم لمنع الحجز الزائد.</span>'],
            ],
            'pool-management.manage-lanes' => [
                ['title' => 'إضافة حارات', 'body' => 'من صفحة الحمام > <span class="field">الحارات</span> > <span class="field">إضافة حارة</span>.'],
                ['title' => 'بيانات الحارة', 'body' => 'أدخل <span class="field">رقم الحارة</span>، <span class="field">النوع</span> (تدريب/استخدام حر)، <span class="field">السعة</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. الحارة جاهزة للجدولة والحجز.<span class="info">يمكن تخصيص حارات للتدريب الاحترافي فقط.</span>'],
            ],
            'pool-management.pool-scheduling' => [
                ['title' => 'فتح الجدول', 'body' => 'من صفحة الحمام > <span class="field">الجدول الأسبوعي</span>.'],
                ['title' => 'تخصيص الفترات', 'body' => 'قسّم اليوم إلى فترات: <span class="field">تدريب فرق</span>، <span class="field">استخدام حر</span>، <span class="field">صيانة</span>، <span class="field">تدريب خاص</span>.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ الجدول</span>. الجدول يتكرر أسبوعياً.<span class="warn">تغيير الجدول يؤثر على الحجوزات المستقبلية — الحالية تبقى كما هي.</span>'],
            ],
            'pool-management.pool-maintenance' => [
                ['title' => 'تسجيل صيانة', 'body' => 'من صفحة الحمام > <span class="field">الصيانة</span> > <span class="field">سجل جديد</span>.'],
                ['title' => 'القراءات', 'body' => 'أدخل: <span class="field">درجة الحرارة</span>، <span class="field">نسبة الكلور</span>، <span class="field">pH</span>، <span class="field">حالة الفلاتر</span>.'],
                ['title' => 'الإجراءات', 'body' => 'حدد أي صيانة تمت: تنظيف، إضافة كيماويات، إصلاح.'],
                ['title' => 'الحفظ', 'body' => 'اضغط <span class="field">حفظ</span>. يُسجل في سجل الصيانة الدوري.<span class="warn">قراءات خارج النطاق الآمن تُنشئ تنبيه فوري.</span>'],
            ],
        ];
    }

    public static function getCategories(string $section): array
    {
        return match ($section) {
            'accounting' => self::accountingCategories(),
            'hr' => self::hrCategories(),
            'procurement' => self::procurementCategories(),
            'inventory' => self::inventoryCategories(),
            'cashier' => self::cashierCategories(),
            'sales' => self::salesCategories(),
            'payments' => self::paymentsCategories(),
            'coaches' => self::coachesCategories(),
            'carnets' => self::carnetsCategories(),
            'facilities' => self::facilitiesCategories(),
            'tournaments' => self::tournamentsCategories(),
            'rentals' => self::rentalsCategories(),
            'support' => self::supportCategories(),
            'settings' => self::settingsCategories(),
            'fines' => self::finesCategories(),
            'roles' => self::rolesCategories(),
            'interviews' => self::interviewsCategories(),
            'installments' => self::installmentsCategories(),
            'reports' => self::reportsCategories(),
            'seasonal' => self::seasonalCategories(),
            'documents' => self::documentsCategories(),
            'branches' => self::branchesCategories(),
            'news' => self::newsCategories(),
            'workflow' => self::workflowCategories(),
            'subscriptions' => self::subscriptionsCategories(),
            'reservations' => self::reservationsCategories(),
            'match-center' => self::matchCenterCategories(),
            'pool-management' => self::poolManagementCategories(),
            default => [],
        };
    }

    // ─────────────────────────────────────────────────────────────────────
    // ACCOUNTING
    // ─────────────────────────────────────────────────────────────────────

    private static function accountingTutorials(): array
    {
        return [
            'setup-chart-of-accounts' => [
                'title' => 'إعداد شجرة الحسابات',
                'subtitle' => 'إنشاء الحسابات الرئيسية والفرعية',
                'icon' => 'list-tree',
                'color' => '#059669',
                'category' => 'setup',
                'order' => 1,
            ],
            'create-journal-entry' => [
                'title' => 'إنشاء قيد يومية',
                'subtitle' => 'تسجيل قيد مدين ودائن مع المرفقات',
                'icon' => 'book-open',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 2,
            ],
            'bank-reconciliation' => [
                'title' => 'التسوية البنكية',
                'subtitle' => 'مطابقة كشف البنك مع الحسابات',
                'icon' => 'git-compare',
                'color' => '#7C3AED',
                'category' => 'operations',
                'order' => 3,
            ],
            'trial-balance-report' => [
                'title' => 'ميزان المراجعة',
                'subtitle' => 'استخراج ميزان المراجعة لفترة محددة',
                'icon' => 'scale',
                'color' => '#D97706',
                'category' => 'reports',
                'order' => 4,
            ],
            'budget-management' => [
                'title' => 'إدارة الميزانيات',
                'subtitle' => 'إنشاء ميزانية ومتابعة الصرف مقابل المخطط',
                'icon' => 'pie-chart',
                'color' => '#DC2626',
                'category' => 'reports',
                'order' => 5,
            ],
        ];
    }

    private static function accountingCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'settings', 'color' => '#059669'],
            'operations' => ['label' => 'العمليات', 'icon' => 'pen-tool', 'color' => '#3B82F6'],
            'reports' => ['label' => 'التقارير المالية', 'icon' => 'bar-chart-3', 'color' => '#D97706'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // HR
    // ─────────────────────────────────────────────────────────────────────

    private static function hrTutorials(): array
    {
        return [
            'add-employee' => [
                'title' => 'إضافة موظف جديد',
                'subtitle' => 'إنشاء ملف موظف مع البيانات والعقد',
                'icon' => 'user-plus',
                'color' => '#7C3AED',
                'category' => 'setup',
                'order' => 1,
            ],
            'attendance-management' => [
                'title' => 'إدارة الحضور والانصراف',
                'subtitle' => 'تسجيل الحضور ومراجعة التأخيرات',
                'icon' => 'clock',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'leave-request' => [
                'title' => 'طلب إجازة',
                'subtitle' => 'تقديم طلب إجازة والموافقة عليه',
                'icon' => 'calendar-off',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 3,
            ],
            'run-payroll' => [
                'title' => 'تشغيل مسير الرواتب',
                'subtitle' => 'حساب الرواتب الشهرية مع الخصومات والبدلات',
                'icon' => 'banknote',
                'color' => '#DC2626',
                'category' => 'payroll',
                'order' => 4,
            ],
            'end-of-service' => [
                'title' => 'نهاية الخدمة',
                'subtitle' => 'حساب مستحقات نهاية الخدمة وإنهاء العقد',
                'icon' => 'log-out',
                'color' => '#6B7280',
                'category' => 'payroll',
                'order' => 5,
            ],
        ];
    }

    private static function hrCategories(): array
    {
        return [
            'setup' => ['label' => 'إعداد الموظفين', 'icon' => 'user-plus', 'color' => '#7C3AED'],
            'operations' => ['label' => 'العمليات اليومية', 'icon' => 'clock', 'color' => '#059669'],
            'payroll' => ['label' => 'الرواتب والمستحقات', 'icon' => 'banknote', 'color' => '#DC2626'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // PROCUREMENT
    // ─────────────────────────────────────────────────────────────────────

    private static function procurementTutorials(): array
    {
        return [
            'create-purchase-requisition' => [
                'title' => 'إنشاء طلب شراء',
                'subtitle' => 'تقديم طلب شراء مع المواصفات والكميات',
                'icon' => 'file-plus',
                'color' => '#D97706',
                'category' => 'operations',
                'order' => 1,
            ],
            'receive-goods' => [
                'title' => 'استلام البضائع',
                'subtitle' => 'تسجيل إذن استلام ومطابقة الكميات',
                'icon' => 'package-check',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'vendor-invoice' => [
                'title' => 'فاتورة المورد',
                'subtitle' => 'تسجيل فاتورة المورد وربطها بالاستلام',
                'icon' => 'file-text',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 3,
            ],
            'vendor-payment' => [
                'title' => 'دفع المورد',
                'subtitle' => 'إصدار أمر صرف للمورد',
                'icon' => 'send',
                'color' => '#7C3AED',
                'category' => 'payments',
                'order' => 4,
            ],
            'return-to-vendor' => [
                'title' => 'مرتجع للمورد',
                'subtitle' => 'إرجاع بضائع معيبة واسترداد القيمة',
                'icon' => 'undo-2',
                'color' => '#DC2626',
                'category' => 'payments',
                'order' => 5,
            ],
        ];
    }

    private static function procurementCategories(): array
    {
        return [
            'operations' => ['label' => 'دورة الشراء', 'icon' => 'shopping-cart', 'color' => '#D97706'],
            'payments' => ['label' => 'المدفوعات والمرتجعات', 'icon' => 'credit-card', 'color' => '#7C3AED'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // INVENTORY
    // ─────────────────────────────────────────────────────────────────────

    private static function inventoryTutorials(): array
    {
        return [
            'setup-warehouse' => [
                'title' => 'إنشاء مخزن',
                'subtitle' => 'تعريف مخزن جديد مع الموقع والمسؤول',
                'icon' => 'warehouse',
                'color' => '#0891B2',
                'category' => 'setup',
                'order' => 1,
            ],
            'add-item' => [
                'title' => 'إضافة صنف',
                'subtitle' => 'تعريف صنف مع الفئة ووحدة القياس',
                'icon' => 'package',
                'color' => '#059669',
                'category' => 'setup',
                'order' => 2,
            ],
            'stock-movement' => [
                'title' => 'حركة مخزنية',
                'subtitle' => 'تحويل أصناف بين المخازن أو صرف داخلي',
                'icon' => 'arrow-right-left',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 3,
            ],
            'stock-audit' => [
                'title' => 'جرد المخزون',
                'subtitle' => 'إجراء جرد فعلي ومعالجة الفروقات',
                'icon' => 'clipboard-check',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 4,
            ],
            'opening-balance' => [
                'title' => 'أرصدة افتتاحية',
                'subtitle' => 'إدخال الأرصدة الافتتاحية عند بدء التشغيل',
                'icon' => 'database',
                'color' => '#7C3AED',
                'category' => 'setup',
                'order' => 5,
            ],
        ];
    }

    private static function inventoryCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'settings', 'color' => '#0891B2'],
            'operations' => ['label' => 'العمليات', 'icon' => 'arrow-right-left', 'color' => '#F59E0B'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // CASHIER
    // ─────────────────────────────────────────────────────────────────────

    private static function cashierTutorials(): array
    {
        return [
            'process-payment-queue' => [
                'title' => 'معالجة طابور الدفع',
                'subtitle' => 'استعراض الطابور وتحصيل المدفوعات بالترتيب',
                'icon' => 'list-ordered',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 1,
            ],
            'void-payment' => [
                'title' => 'إلغاء دفعة',
                'subtitle' => 'إلغاء دفعة خاطئة مع ذكر السبب',
                'icon' => 'x-circle',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 2,
            ],
            'check-management' => [
                'title' => 'إدارة الشيكات',
                'subtitle' => 'تسجيل شيك وتتبع حالته حتى التحصيل',
                'icon' => 'file-check',
                'color' => '#7C3AED',
                'category' => 'checks',
                'order' => 3,
            ],
            'daily-report' => [
                'title' => 'التقرير اليومي',
                'subtitle' => 'إصدار تقرير نهاية اليوم مع التفاصيل',
                'icon' => 'file-bar-chart',
                'color' => '#3B82F6',
                'category' => 'reports',
                'order' => 4,
            ],
        ];
    }

    private static function cashierCategories(): array
    {
        return [
            'operations' => ['label' => 'العمليات', 'icon' => 'landmark', 'color' => '#059669'],
            'checks' => ['label' => 'الشيكات', 'icon' => 'file-check', 'color' => '#7C3AED'],
            'reports' => ['label' => 'التقارير', 'icon' => 'bar-chart-3', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // SALES
    // ─────────────────────────────────────────────────────────────────────

    private static function salesTutorials(): array
    {
        return [
            'pos-transaction' => [
                'title' => 'عملية بيع (POS)',
                'subtitle' => 'إتمام عملية بيع من نقطة البيع',
                'icon' => 'shopping-bag',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 1,
            ],
            'create-package' => [
                'title' => 'إنشاء باقة',
                'subtitle' => 'تعريف باقة منتجات أو خدمات بسعر خاص',
                'icon' => 'gift',
                'color' => '#7C3AED',
                'category' => 'setup',
                'order' => 2,
            ],
            'sales-commission' => [
                'title' => 'عمولات المبيعات',
                'subtitle' => 'حساب عمولات مندوبي المبيعات',
                'icon' => 'percent',
                'color' => '#059669',
                'category' => 'reports',
                'order' => 3,
            ],
            'daily-sales-report' => [
                'title' => 'تقرير المبيعات اليومي',
                'subtitle' => 'ملخص مبيعات اليوم حسب الفئة والمندوب',
                'icon' => 'trending-up',
                'color' => '#F59E0B',
                'category' => 'reports',
                'order' => 4,
            ],
        ];
    }

    private static function salesCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'settings', 'color' => '#7C3AED'],
            'operations' => ['label' => 'عمليات البيع', 'icon' => 'shopping-bag', 'color' => '#DC2626'],
            'reports' => ['label' => 'التقارير', 'icon' => 'trending-up', 'color' => '#F59E0B'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // PAYMENTS
    // ─────────────────────────────────────────────────────────────────────

    private static function paymentsTutorials(): array
    {
        return [
            'payment-types-overview' => [
                'title' => 'أنواع المدفوعات',
                'subtitle' => 'استعراض طرق الدفع المتاحة وإعداداتها',
                'icon' => 'wallet',
                'color' => '#2563EB',
                'category' => 'setup',
                'order' => 1,
            ],
            'issue-receipt' => [
                'title' => 'إصدار إيصال',
                'subtitle' => 'إنشاء إيصال دفع وطباعته',
                'icon' => 'receipt',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'void-workflow' => [
                'title' => 'سير عمل الإلغاء',
                'subtitle' => 'إلغاء إيصال مع سلسلة الموافقات',
                'icon' => 'x-octagon',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 3,
            ],
        ];
    }

    private static function paymentsCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'settings', 'color' => '#2563EB'],
            'operations' => ['label' => 'العمليات', 'icon' => 'credit-card', 'color' => '#059669'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // COACHES
    // ─────────────────────────────────────────────────────────────────────

    private static function coachesTutorials(): array
    {
        return [
            'register-coach' => [
                'title' => 'تسجيل مدرب جديد',
                'subtitle' => 'إضافة مدرب مع بياناته وشهاداته',
                'icon' => 'user-plus',
                'color' => '#16A34A',
                'category' => 'setup',
                'order' => 1,
            ],
            'assign-discipline' => [
                'title' => 'تخصيص مدرب للعبة',
                'subtitle' => 'ربط المدرب بالألعاب الرياضية التي يدربها',
                'icon' => 'link',
                'color' => '#3B82F6',
                'category' => 'setup',
                'order' => 2,
            ],
            'coach-schedule' => [
                'title' => 'جدول المدرب',
                'subtitle' => 'إعداد أوقات التوفر والحجز',
                'icon' => 'calendar',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 3,
            ],
            'coach-performance' => [
                'title' => 'تقييم أداء المدرب',
                'subtitle' => 'مراجعة التقييمات وإحصائيات الحضور',
                'icon' => 'star',
                'color' => '#DC2626',
                'category' => 'reports',
                'order' => 4,
            ],
        ];
    }

    private static function coachesCategories(): array
    {
        return [
            'setup' => ['label' => 'التسجيل والإعداد', 'icon' => 'user-plus', 'color' => '#16A34A'],
            'operations' => ['label' => 'الجدولة', 'icon' => 'calendar', 'color' => '#F59E0B'],
            'reports' => ['label' => 'الأداء والتقييم', 'icon' => 'star', 'color' => '#DC2626'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // CARNETS
    // ─────────────────────────────────────────────────────────────────────

    private static function carnetsTutorials(): array
    {
        return [
            'carnet-issuance-conditions' => [
                'title' => 'شروط إصدار الكارنيه',
                'subtitle' => 'المتطلبات الواجب استيفاؤها قبل الطباعة',
                'icon' => 'check-square',
                'color' => '#0284C7',
                'category' => 'setup',
                'order' => 1,
            ],
            'print-carnet' => [
                'title' => 'طباعة الكارنيه',
                'subtitle' => 'إصدار وطباعة كارنيه العضو',
                'icon' => 'printer',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'deactivate-carnet' => [
                'title' => 'إلغاء كارنيه',
                'subtitle' => 'إيقاف كارنيه مفقود أو تالف وإعادة إصدار',
                'icon' => 'ban',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 3,
            ],
            'guest-entry' => [
                'title' => 'دخول الزوار',
                'subtitle' => 'إصدار تصريح دخول مؤقت لضيف',
                'icon' => 'door-open',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function carnetsCategories(): array
    {
        return [
            'setup' => ['label' => 'الشروط والإعداد', 'icon' => 'check-square', 'color' => '#0284C7'],
            'operations' => ['label' => 'العمليات', 'icon' => 'printer', 'color' => '#059669'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // FACILITIES
    // ─────────────────────────────────────────────────────────────────────

    private static function facilitiesTutorials(): array
    {
        return [
            'create-facility' => [
                'title' => 'إنشاء مرفق',
                'subtitle' => 'تعريف مرفق جديد (ملعب، صالة، حمام سباحة)',
                'icon' => 'building',
                'color' => '#4F46E5',
                'category' => 'setup',
                'order' => 1,
            ],
            'manage-units' => [
                'title' => 'إدارة الوحدات',
                'subtitle' => 'إضافة ملاعب فرعية أو حارات أو قاعات',
                'icon' => 'layers',
                'color' => '#059669',
                'category' => 'setup',
                'order' => 2,
            ],
            'maintenance-schedule' => [
                'title' => 'جدولة الصيانة',
                'subtitle' => 'إنشاء أمر صيانة وحجب المرفق مؤقتاً',
                'icon' => 'wrench',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 3,
            ],
            'booking-rules' => [
                'title' => 'قواعد الحجز',
                'subtitle' => 'إعداد سياسات الحجز والإلغاء والأولوية',
                'icon' => 'shield-check',
                'color' => '#DC2626',
                'category' => 'setup',
                'order' => 4,
            ],
        ];
    }

    private static function facilitiesCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد والتهيئة', 'icon' => 'building', 'color' => '#4F46E5'],
            'operations' => ['label' => 'التشغيل والصيانة', 'icon' => 'wrench', 'color' => '#F59E0B'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // TOURNAMENTS
    // ─────────────────────────────────────────────────────────────────────

    private static function tournamentsTutorials(): array
    {
        return [
            'create-tournament' => [
                'title' => 'إنشاء بطولة',
                'subtitle' => 'تعريف بطولة جديدة مع القوانين والجوائز',
                'icon' => 'trophy',
                'color' => '#CA8A04',
                'category' => 'setup',
                'order' => 1,
            ],
            'tournament-registration' => [
                'title' => 'تسجيل المشاركين',
                'subtitle' => 'فتح التسجيل وقبول اللاعبين أو الفرق',
                'icon' => 'user-plus',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'generate-bracket' => [
                'title' => 'توليد القرعة',
                'subtitle' => 'إنشاء شجرة المباريات تلقائياً',
                'icon' => 'git-branch',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 3,
            ],
            'record-match-result' => [
                'title' => 'تسجيل نتيجة مباراة',
                'subtitle' => 'إدخال النتيجة وتحديث الترتيب تلقائياً',
                'icon' => 'check-circle',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function tournamentsCategories(): array
    {
        return [
            'setup' => ['label' => 'إعداد البطولة', 'icon' => 'trophy', 'color' => '#CA8A04'],
            'operations' => ['label' => 'إدارة المنافسات', 'icon' => 'swords', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // RENTALS
    // ─────────────────────────────────────────────────────────────────────

    private static function rentalsTutorials(): array
    {
        return [
            'setup-rental-entity' => [
                'title' => 'إعداد وحدة إيجارية',
                'subtitle' => 'تعريف محل أو مكتب قابل للإيجار',
                'icon' => 'home',
                'color' => '#9333EA',
                'category' => 'setup',
                'order' => 1,
            ],
            'create-rental-contract' => [
                'title' => 'إنشاء عقد إيجار',
                'subtitle' => 'تسجيل عقد مع المدة والقيمة والشروط',
                'icon' => 'file-signature',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'rental-deposit' => [
                'title' => 'التأمين والودائع',
                'subtitle' => 'تحصيل تأمين واستردادها عند انتهاء العقد',
                'icon' => 'lock',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 3,
            ],
            'rental-invoicing' => [
                'title' => 'فوترة الإيجار',
                'subtitle' => 'إصدار فواتير شهرية ومتابعة السداد',
                'icon' => 'receipt',
                'color' => '#DC2626',
                'category' => 'financial',
                'order' => 4,
            ],
        ];
    }

    private static function rentalsCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'home', 'color' => '#9333EA'],
            'operations' => ['label' => 'العقود', 'icon' => 'file-signature', 'color' => '#059669'],
            'financial' => ['label' => 'المالي', 'icon' => 'receipt', 'color' => '#DC2626'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // SUPPORT
    // ─────────────────────────────────────────────────────────────────────

    private static function supportTutorials(): array
    {
        return [
            'create-ticket' => [
                'title' => 'إنشاء تذكرة دعم',
                'subtitle' => 'فتح تذكرة جديدة مع وصف المشكلة',
                'icon' => 'ticket',
                'color' => '#0D9488',
                'category' => 'operations',
                'order' => 1,
            ],
            'assign-ticket' => [
                'title' => 'تعيين التذكرة',
                'subtitle' => 'توزيع التذكرة على فني الدعم المناسب',
                'icon' => 'user-check',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 2,
            ],
            'resolve-ticket' => [
                'title' => 'حل التذكرة وإغلاقها',
                'subtitle' => 'تسجيل الحل وإغلاق التذكرة مع التقييم',
                'icon' => 'check-circle',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 3,
            ],
            'sla-monitoring' => [
                'title' => 'متابعة مستوى الخدمة',
                'subtitle' => 'مراقبة الالتزام باتفاقية مستوى الخدمة (SLA)',
                'icon' => 'timer',
                'color' => '#DC2626',
                'category' => 'reports',
                'order' => 4,
            ],
        ];
    }

    private static function supportCategories(): array
    {
        return [
            'operations' => ['label' => 'إدارة التذاكر', 'icon' => 'ticket', 'color' => '#0D9488'],
            'reports' => ['label' => 'المتابعة', 'icon' => 'timer', 'color' => '#DC2626'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // SETTINGS
    // ─────────────────────────────────────────────────────────────────────

    private static function settingsTutorials(): array
    {
        return [
            'system-configuration' => [
                'title' => 'الإعدادات العامة للنظام',
                'subtitle' => 'ضبط اسم النادي والمنطقة الزمنية والعملة',
                'icon' => 'sliders',
                'color' => '#6B7280',
                'category' => 'general',
                'order' => 1,
            ],
            'branding-setup' => [
                'title' => 'إعداد الهوية البصرية',
                'subtitle' => 'رفع الشعار وضبط الألوان والخطوط',
                'icon' => 'palette',
                'color' => '#8B5CF6',
                'category' => 'general',
                'order' => 2,
            ],
            'receipt-design' => [
                'title' => 'تصميم الإيصالات',
                'subtitle' => 'تخصيص تنسيق الإيصالات والفواتير المطبوعة',
                'icon' => 'printer',
                'color' => '#059669',
                'category' => 'customization',
                'order' => 3,
            ],
        ];
    }

    private static function settingsCategories(): array
    {
        return [
            'general' => ['label' => 'إعدادات عامة', 'icon' => 'sliders', 'color' => '#6B7280'],
            'customization' => ['label' => 'التخصيص', 'icon' => 'palette', 'color' => '#8B5CF6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // FINES
    // ─────────────────────────────────────────────────────────────────────

    private static function finesTutorials(): array
    {
        return [
            'impose-fine' => [
                'title' => 'فرض مخالفة',
                'subtitle' => 'تسجيل مخالفة على عضو مع النوع والمبلغ',
                'icon' => 'alert-triangle',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 1,
            ],
            'fine-types-setup' => [
                'title' => 'إعداد أنواع المخالفات',
                'subtitle' => 'تعريف أنواع المخالفات ودرجات الخطورة',
                'icon' => 'list',
                'color' => '#F59E0B',
                'category' => 'setup',
                'order' => 2,
            ],
            'fine-escalation' => [
                'title' => 'تصعيد المخالفات',
                'subtitle' => 'التصعيد التلقائي عند تكرار المخالفة',
                'icon' => 'trending-up',
                'color' => '#7C3AED',
                'category' => 'operations',
                'order' => 3,
            ],
            'fine-payment' => [
                'title' => 'سداد المخالفة',
                'subtitle' => 'تحصيل قيمة المخالفة وإغلاقها',
                'icon' => 'banknote',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function finesCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'settings', 'color' => '#F59E0B'],
            'operations' => ['label' => 'العمليات', 'icon' => 'alert-triangle', 'color' => '#DC2626'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // ROLES
    // ─────────────────────────────────────────────────────────────────────

    private static function rolesTutorials(): array
    {
        return [
            'create-role' => [
                'title' => 'إنشاء دور جديد',
                'subtitle' => 'تعريف دور وظيفي مع وصفه',
                'icon' => 'shield-plus',
                'color' => '#7C3AED',
                'category' => 'setup',
                'order' => 1,
            ],
            'assign-permissions' => [
                'title' => 'تعيين الصلاحيات',
                'subtitle' => 'ربط الصلاحيات بالدور حسب الوحدات',
                'icon' => 'key',
                'color' => '#059669',
                'category' => 'setup',
                'order' => 2,
            ],
            'assign-role-to-user' => [
                'title' => 'تعيين دور لموظف',
                'subtitle' => 'ربط موظف بدور أو أكثر',
                'icon' => 'user-cog',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 3,
            ],
            'custom-permissions' => [
                'title' => 'صلاحيات مخصصة',
                'subtitle' => 'إضافة صلاحيات فردية خارج الدور',
                'icon' => 'lock',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function rolesCategories(): array
    {
        return [
            'setup' => ['label' => 'إعداد الأدوار', 'icon' => 'shield', 'color' => '#7C3AED'],
            'operations' => ['label' => 'التعيين والإدارة', 'icon' => 'user-cog', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // INTERVIEWS
    // ─────────────────────────────────────────────────────────────────────

    private static function interviewsTutorials(): array
    {
        return [
            'schedule-interview' => [
                'title' => 'جدولة مقابلة',
                'subtitle' => 'تحديد موعد المقابلة واللجنة',
                'icon' => 'calendar-plus',
                'color' => '#0EA5E9',
                'category' => 'operations',
                'order' => 1,
            ],
            'conduct-interview' => [
                'title' => 'إجراء المقابلة',
                'subtitle' => 'تسجيل الملاحظات والتقييم أثناء المقابلة',
                'icon' => 'message-square',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'interview-results' => [
                'title' => 'نتائج المقابلات',
                'subtitle' => 'اعتماد النتائج وإخطار المتقدم',
                'icon' => 'check-circle',
                'color' => '#7C3AED',
                'category' => 'reports',
                'order' => 3,
            ],
        ];
    }

    private static function interviewsCategories(): array
    {
        return [
            'operations' => ['label' => 'إدارة المقابلات', 'icon' => 'message-square', 'color' => '#0EA5E9'],
            'reports' => ['label' => 'النتائج', 'icon' => 'check-circle', 'color' => '#7C3AED'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // INSTALLMENTS
    // ─────────────────────────────────────────────────────────────────────

    private static function installmentsTutorials(): array
    {
        return [
            'create-installment-plan' => [
                'title' => 'إنشاء خطة تقسيط',
                'subtitle' => 'تعريف خطة مع المقدم وعدد الأقساط',
                'icon' => 'calendar-range',
                'color' => '#06B6D4',
                'category' => 'setup',
                'order' => 1,
            ],
            'payment-schedule' => [
                'title' => 'جدول السداد',
                'subtitle' => 'استعراض مواعيد الأقساط وحالتها',
                'icon' => 'table',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 2,
            ],
            'collect-installment' => [
                'title' => 'تحصيل قسط',
                'subtitle' => 'تسجيل دفع قسط مستحق',
                'icon' => 'banknote',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 3,
            ],
            'overdue-monitoring' => [
                'title' => 'متابعة المتأخرات',
                'subtitle' => 'قائمة الأقساط المتأخرة والإجراءات',
                'icon' => 'alert-circle',
                'color' => '#DC2626',
                'category' => 'reports',
                'order' => 4,
            ],
        ];
    }

    private static function installmentsCategories(): array
    {
        return [
            'setup' => ['label' => 'إعداد الخطط', 'icon' => 'calendar-range', 'color' => '#06B6D4'],
            'operations' => ['label' => 'التحصيل', 'icon' => 'banknote', 'color' => '#059669'],
            'reports' => ['label' => 'المتابعة', 'icon' => 'alert-circle', 'color' => '#DC2626'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // REPORTS
    // ─────────────────────────────────────────────────────────────────────

    private static function reportsTutorials(): array
    {
        return [
            'report-types' => [
                'title' => 'أنواع التقارير',
                'subtitle' => 'استعراض التقارير المتاحة حسب الوحدة',
                'icon' => 'layout-list',
                'color' => '#8B5CF6',
                'category' => 'overview',
                'order' => 1,
            ],
            'apply-filters' => [
                'title' => 'استخدام الفلاتر',
                'subtitle' => 'تصفية البيانات بالتاريخ والفرع والحالة',
                'icon' => 'filter',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 2,
            ],
            'export-report' => [
                'title' => 'تصدير التقارير',
                'subtitle' => 'تصدير البيانات إلى Excel أو PDF',
                'icon' => 'download',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 3,
            ],
            'schedule-report' => [
                'title' => 'جدولة تقرير دوري',
                'subtitle' => 'إعداد تقرير يُرسل تلقائياً بشكل دوري',
                'icon' => 'clock',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function reportsCategories(): array
    {
        return [
            'overview' => ['label' => 'نظرة عامة', 'icon' => 'layout-list', 'color' => '#8B5CF6'],
            'operations' => ['label' => 'التشغيل', 'icon' => 'filter', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // SEASONAL
    // ─────────────────────────────────────────────────────────────────────

    private static function seasonalTutorials(): array
    {
        return [
            'setup-season' => [
                'title' => 'إعداد الموسم',
                'subtitle' => 'تعريف فترة الموسم والشروط والمرافق',
                'icon' => 'sun',
                'color' => '#F59E0B',
                'category' => 'setup',
                'order' => 1,
            ],
            'seasonal-pricing' => [
                'title' => 'تسعير الموسم',
                'subtitle' => 'ضبط الأسعار حسب الفئة والمدة',
                'icon' => 'tag',
                'color' => '#059669',
                'category' => 'setup',
                'order' => 2,
            ],
            'seasonal-registration' => [
                'title' => 'تسجيل في الموسم',
                'subtitle' => 'تسجيل عضو أو زائر في الاشتراك الموسمي',
                'icon' => 'user-plus',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 3,
            ],
            'seasonal-report' => [
                'title' => 'تقرير الموسم',
                'subtitle' => 'إحصائيات الإشغال والإيرادات الموسمية',
                'icon' => 'bar-chart-3',
                'color' => '#7C3AED',
                'category' => 'reports',
                'order' => 4,
            ],
        ];
    }

    private static function seasonalCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'sun', 'color' => '#F59E0B'],
            'operations' => ['label' => 'التسجيل', 'icon' => 'user-plus', 'color' => '#3B82F6'],
            'reports' => ['label' => 'التقارير', 'icon' => 'bar-chart-3', 'color' => '#7C3AED'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // DOCUMENTS
    // ─────────────────────────────────────────────────────────────────────

    private static function documentsTutorials(): array
    {
        return [
            'upload-document' => [
                'title' => 'رفع مستند',
                'subtitle' => 'رفع مستند مع تحديد النوع والعضو المرتبط',
                'icon' => 'upload',
                'color' => '#475569',
                'category' => 'operations',
                'order' => 1,
            ],
            'categorize-document' => [
                'title' => 'تصنيف المستندات',
                'subtitle' => 'تنظيم المستندات حسب الفئة والحالة',
                'icon' => 'folder-open',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 2,
            ],
            'verify-document' => [
                'title' => 'التحقق والاعتماد',
                'subtitle' => 'مراجعة المستند واعتماده أو رفضه',
                'icon' => 'check-circle',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 3,
            ],
        ];
    }

    private static function documentsCategories(): array
    {
        return [
            'operations' => ['label' => 'إدارة المستندات', 'icon' => 'file-text', 'color' => '#475569'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // BRANCHES
    // ─────────────────────────────────────────────────────────────────────

    private static function branchesTutorials(): array
    {
        return [
            'create-branch' => [
                'title' => 'إنشاء فرع',
                'subtitle' => 'تعريف فرع جديد مع العنوان والمسؤول',
                'icon' => 'map-pin',
                'color' => '#EA580C',
                'category' => 'setup',
                'order' => 1,
            ],
            'branch-configuration' => [
                'title' => 'إعدادات الفرع',
                'subtitle' => 'ضبط ساعات العمل والخدمات المتاحة',
                'icon' => 'sliders',
                'color' => '#3B82F6',
                'category' => 'setup',
                'order' => 2,
            ],
            'branch-transfer' => [
                'title' => 'تحويل بين الفروع',
                'subtitle' => 'نقل عضو أو موظف بين الفروع',
                'icon' => 'arrow-right-left',
                'color' => '#7C3AED',
                'category' => 'operations',
                'order' => 3,
            ],
        ];
    }

    private static function branchesCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'map-pin', 'color' => '#EA580C'],
            'operations' => ['label' => 'العمليات', 'icon' => 'arrow-right-left', 'color' => '#7C3AED'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // NEWS
    // ─────────────────────────────────────────────────────────────────────

    private static function newsTutorials(): array
    {
        return [
            'create-article' => [
                'title' => 'إنشاء مقال',
                'subtitle' => 'كتابة خبر أو إعلان مع الصور',
                'icon' => 'pen-line',
                'color' => '#2563EB',
                'category' => 'operations',
                'order' => 1,
            ],
            'publish-article' => [
                'title' => 'نشر المقال',
                'subtitle' => 'مراجعة ونشر المقال للأعضاء',
                'icon' => 'send',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'manage-categories' => [
                'title' => 'إدارة التصنيفات',
                'subtitle' => 'إنشاء وتنظيم تصنيفات الأخبار',
                'icon' => 'tags',
                'color' => '#F59E0B',
                'category' => 'setup',
                'order' => 3,
            ],
        ];
    }

    private static function newsCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'tags', 'color' => '#F59E0B'],
            'operations' => ['label' => 'إدارة المحتوى', 'icon' => 'newspaper', 'color' => '#2563EB'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // WORKFLOW
    // ─────────────────────────────────────────────────────────────────────

    private static function workflowTutorials(): array
    {
        return [
            'create-workflow-rule' => [
                'title' => 'إنشاء قاعدة سير عمل',
                'subtitle' => 'تعريف شرط التشغيل والإجراء التلقائي',
                'icon' => 'git-pull-request',
                'color' => '#7C3AED',
                'category' => 'setup',
                'order' => 1,
            ],
            'approval-chain' => [
                'title' => 'سلسلة الموافقات',
                'subtitle' => 'إعداد مراحل الموافقة والمسؤولين',
                'icon' => 'git-merge',
                'color' => '#059669',
                'category' => 'setup',
                'order' => 2,
            ],
            'process-approval' => [
                'title' => 'معالجة طلب موافقة',
                'subtitle' => 'الموافقة أو الرفض مع التعليق',
                'icon' => 'check-square',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 3,
            ],
            'workflow-monitoring' => [
                'title' => 'متابعة سير العمل',
                'subtitle' => 'تتبع حالة الطلبات المعلقة والمنتهية',
                'icon' => 'eye',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function workflowCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'git-pull-request', 'color' => '#7C3AED'],
            'operations' => ['label' => 'التشغيل', 'icon' => 'check-square', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // SUBSCRIPTIONS
    // ─────────────────────────────────────────────────────────────────────

    private static function subscriptionsTutorials(): array
    {
        return [
            'generate-annual' => [
                'title' => 'توليد الاشتراكات السنوية',
                'subtitle' => 'إنشاء اشتراكات سنوية لجميع الأعضاء الفعالين',
                'icon' => 'calendar-check',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 1,
            ],
            'collect-subscription' => [
                'title' => 'تحصيل اشتراك',
                'subtitle' => 'تسجيل دفع الاشتراك السنوي',
                'icon' => 'banknote',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 2,
            ],
            'subscription-tracking' => [
                'title' => 'متابعة الاشتراكات',
                'subtitle' => 'قائمة المسددين والمتأخرين والمعفيين',
                'icon' => 'list-checks',
                'color' => '#F59E0B',
                'category' => 'reports',
                'order' => 3,
            ],
            'subscription-exemption' => [
                'title' => 'إعفاء من الاشتراك',
                'subtitle' => 'إعفاء عضو من الاشتراك بقرار إداري',
                'icon' => 'badge-percent',
                'color' => '#7C3AED',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function subscriptionsCategories(): array
    {
        return [
            'operations' => ['label' => 'التوليد والتحصيل', 'icon' => 'calendar-check', 'color' => '#059669'],
            'reports' => ['label' => 'المتابعة', 'icon' => 'list-checks', 'color' => '#F59E0B'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // RESERVATIONS
    // ─────────────────────────────────────────────────────────────────────

    private static function reservationsTutorials(): array
    {
        return [
            'create-booking' => [
                'title' => 'إنشاء حجز',
                'subtitle' => 'حجز مرفق أو وحدة لوقت محدد',
                'icon' => 'calendar-plus',
                'color' => '#3B82F6',
                'category' => 'operations',
                'order' => 1,
            ],
            'calendar-view' => [
                'title' => 'عرض التقويم',
                'subtitle' => 'استعراض الحجوزات على التقويم اليومي/الأسبوعي',
                'icon' => 'calendar',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 2,
            ],
            'cancel-booking' => [
                'title' => 'إلغاء حجز',
                'subtitle' => 'إلغاء حجز مع تطبيق سياسة الاسترداد',
                'icon' => 'calendar-x',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 3,
            ],
            'recurring-booking' => [
                'title' => 'حجز متكرر',
                'subtitle' => 'إنشاء حجز أسبوعي متكرر تلقائياً',
                'icon' => 'repeat',
                'color' => '#7C3AED',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function reservationsCategories(): array
    {
        return [
            'operations' => ['label' => 'إدارة الحجوزات', 'icon' => 'calendar', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // MATCH CENTER
    // ─────────────────────────────────────────────────────────────────────

    private static function matchCenterTutorials(): array
    {
        return [
            'create-live-match' => [
                'title' => 'إنشاء مباراة حية',
                'subtitle' => 'بدء مباراة مع الفرق والحكام',
                'icon' => 'play-circle',
                'color' => '#DC2626',
                'category' => 'operations',
                'order' => 1,
            ],
            'track-events' => [
                'title' => 'تسجيل الأحداث',
                'subtitle' => 'تسجيل الأهداف والبطاقات والتبديلات',
                'icon' => 'zap',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 2,
            ],
            'match-scoring' => [
                'title' => 'النتيجة والإحصائيات',
                'subtitle' => 'عرض النتيجة النهائية والإحصائيات التفصيلية',
                'icon' => 'bar-chart-3',
                'color' => '#3B82F6',
                'category' => 'reports',
                'order' => 3,
            ],
        ];
    }

    private static function matchCenterCategories(): array
    {
        return [
            'operations' => ['label' => 'إدارة المباريات', 'icon' => 'tv', 'color' => '#DC2626'],
            'reports' => ['label' => 'النتائج والإحصائيات', 'icon' => 'bar-chart-3', 'color' => '#3B82F6'],
        ];
    }

    // ─────────────────────────────────────────────────────────────────────
    // POOL MANAGEMENT
    // ─────────────────────────────────────────────────────────────────────

    private static function poolManagementTutorials(): array
    {
        return [
            'setup-pool' => [
                'title' => 'إعداد حمام السباحة',
                'subtitle' => 'تعريف حمام السباحة مع المواصفات والسعة',
                'icon' => 'waves',
                'color' => '#0EA5E9',
                'category' => 'setup',
                'order' => 1,
            ],
            'manage-lanes' => [
                'title' => 'إدارة الحارات',
                'subtitle' => 'تقسيم الحمام لحارات مع السعة لكل حارة',
                'icon' => 'columns',
                'color' => '#3B82F6',
                'category' => 'setup',
                'order' => 2,
            ],
            'pool-scheduling' => [
                'title' => 'جدولة الاستخدام',
                'subtitle' => 'تخصيص أوقات للتدريب والاستخدام الحر',
                'icon' => 'calendar-clock',
                'color' => '#059669',
                'category' => 'operations',
                'order' => 3,
            ],
            'pool-maintenance' => [
                'title' => 'صيانة الحمام',
                'subtitle' => 'جدولة الصيانة الدورية وتسجيل القراءات',
                'icon' => 'thermometer',
                'color' => '#F59E0B',
                'category' => 'operations',
                'order' => 4,
            ],
        ];
    }

    private static function poolManagementCategories(): array
    {
        return [
            'setup' => ['label' => 'الإعداد', 'icon' => 'waves', 'color' => '#0EA5E9'],
            'operations' => ['label' => 'التشغيل', 'icon' => 'calendar-clock', 'color' => '#059669'],
        ];
    }
}
