<?php
declare(strict_types=1);

if (!function_exists('stg_db')) {
    function stg_db(): mysqli
    {
        global $conn, $mysqli, $db, $link;
        foreach (['conn', 'mysqli', 'db', 'link'] as $name) {
            if (isset($GLOBALS[$name]) && $GLOBALS[$name] instanceof mysqli) {
                return $GLOBALS[$name];
            }
        }
        throw new RuntimeException('No mysqli connection found. Check includes/config.php');
    }
}

if (!function_exists('stg_h')) {
    function stg_h($value): string
    {
        return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
    }
}

if (!function_exists('stg_sections')) {
    function stg_sections(): array
    {
        return [
        'general' => [
            'title' => 'الإعدادات العامة',
            'description' => 'اسم التطبيق، حالة المتجر، العملة، وروابط التواصل الأساسية.',
            'icon' => 'fa-solid fa-sliders',
            'fields' => [
                [
                    'key' => 'site_name',
                    'label' => 'اسم التطبيق',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'Nay Store'
                ],
                [
                    'key' => 'app_name_ar',
                    'label' => 'اسم التطبيق بالعربي',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'ناي ستور'
                ],
                [
                    'key' => 'app_name_en',
                    'label' => 'اسم التطبيق بالإنكليزي',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'Nay Store'
                ],
                [
                    'key' => 'store_status',
                    'label' => 'حالة المتجر',
                    'type' => 'select',
                    'group' => 'general',
                    'options' => [
                        'open' => 'مفتوح',
                        'closed' => 'مغلق',
                        'maintenance' => 'صيانة'
                    ]
                ],
                [
                    'key' => 'currency_code',
                    'label' => 'رمز العملة',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'IQD'
                ],
                [
                    'key' => 'currency_symbol',
                    'label' => 'رمز العرض',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'د.ع'
                ],
                [
                    'key' => 'support_phone',
                    'label' => 'رقم الدعم',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => '07xxxxxxxxx'
                ],
                [
                    'key' => 'whatsapp_number',
                    'label' => 'رقم واتساب',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => '07xxxxxxxxx'
                ],
                [
                    'key' => 'support_whatsapp_message_general',
                    'label' => 'نص رسالة دعم واتساب العام',
                    'type' => 'textarea',
                    'group' => 'general',
                    'rows' => 4,
                    'placeholder' => "مرحباً، أحتاج دعم من فريق Nay Store.\nالاسم: {customer_name}\nالهاتف: {customer_phone}",
                    'hint' => 'يمكنك استخدام المتغيرات: {customer_name} {customer_phone}'
                ],
                [
                    'key' => 'support_whatsapp_message_last_order',
                    'label' => 'نص رسالة دعم واتساب لآخر طلب',
                    'type' => 'textarea',
                    'group' => 'general',
                    'rows' => 6,
                    'placeholder' => "مرحباً، أحتاج دعم بخصوص آخر طلب.\nرقم الطلب: {order_number}\nالحالة: {order_status}\nنوع الطلب: {order_type}\nطريقة الدفع: {payment_method}\nالإجمالي: {order_total}",
                    'hint' => 'المتغيرات المتاحة: {order_number} {order_status} {order_type} {payment_method} {order_total} {customer_name} {customer_phone}'
                ],
                [
                    'key' => 'developer_footer_text',
                    'label' => 'نص حقوق التطوير بأسفل التطبيق',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'تطوير وبرمجة: اسم المطور',
                    'hint' => 'إذا تُرك الحقل فارغاً فلن يظهر شيء داخل التطبيق.'
                ],
                [
                    'key' => 'instagram_url',
                    'label' => 'رابط إنستغرام',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'https://instagram.com/...'
                ],
                [
                    'key' => 'telegram_url',
                    'label' => 'رابط تيليغرام',
                    'type' => 'text',
                    'group' => 'general',
                    'placeholder' => 'https://t.me/...'
                ],
                [
                    'key' => 'maintenance_mode',
                    'label' => 'وضع الصيانة',
                    'type' => 'boolean',
                    'group' => 'general'
                ],
                [
                    'key' => 'maintenance_message',
                    'label' => 'رسالة الصيانة',
                    'type' => 'textarea',
                    'group' => 'general',
                    'rows' => 3,
                    'placeholder' => 'التطبيق تحت التحديث، نرجع لكم قريباً.'
                ]
            ]
        ],
        'home' => [
            'title' => 'إعدادات الواجهة الرئيسية',
            'description' => 'التحكم بعناصر الصفحة الرئيسية والرسائل الظاهرة فيها.',
            'icon' => 'fa-solid fa-house',
            'fields' => [
                [
                    'key' => 'home_show_slider',
                    'label' => 'إظهار السلايدر',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_show_brands',
                    'label' => 'إظهار البراندات',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_show_featured_products',
                    'label' => 'إظهار المنتجات المميزة',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_show_features',
                    'label' => 'إظهار بلوك المزايا',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_show_popup',
                    'label' => 'إظهار Popup ترحيبي/إعلاني',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_hero_title',
                    'label' => 'عنوان الواجهة',
                    'type' => 'text',
                    'group' => 'home',
                    'placeholder' => 'أهلًا بكم في ناي ستور'
                ],
                [
                    'key' => 'home_hero_subtitle',
                    'label' => 'وصف مختصر',
                    'type' => 'textarea',
                    'group' => 'home',
                    'rows' => 3,
                    'placeholder' => 'أفضل منتجات العناية والجمال بين إيديك.'
                ],
                [
                    'key' => 'home_announcement_bar',
                    'label' => 'شريط إعلان أعلى الواجهة',
                    'type' => 'text',
                    'group' => 'home',
                    'placeholder' => 'شحن مجاني للطلبات فوق 75 ألف'
                ],
                [
                    'key' => 'home_popup_title',
                    'label' => 'عنوان الـ Popup',
                    'type' => 'text',
                    'group' => 'home',
                    'placeholder' => 'عرض اليوم'
                ],
                [
                    'key' => 'home_popup_message',
                    'label' => 'نص الـ Popup',
                    'type' => 'textarea',
                    'group' => 'home',
                    'rows' => 4,
                    'placeholder' => 'خصومات مميزة لفترة محدودة.'
                ],
                [
                    'key' => 'home_featured_products_limit',
                    'label' => 'عدد المنتجات المميزة',
                    'type' => 'number',
                    'group' => 'home',
                    'min' => '0',
                    'step' => '1'
                ],
                [
                    'key' => 'home_featured_brands_limit',
                    'label' => 'عدد البراندات الظاهرة',
                    'type' => 'number',
                    'group' => 'home',
                    'min' => '0',
                    'step' => '1'
                ],
                [
                    'key' => 'home_logo_url',
                    'label' => 'رابط/مسار اللوكو',
                    'type' => 'text',
                    'group' => 'home',
                    'placeholder' => '/uploads/logo.png',
                    'hint' => 'ارفع اللوكو بأي مسار عام داخل الموقع ثم الصق الرابط أو المسار هنا.'
                ],
                [
                    'key' => 'home_header_show_search_icon',
                    'label' => 'إظهار أيقونة البحث بالهيدر',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_header_show_cart_icon',
                    'label' => 'إظهار أيقونة السلة بالهيدر',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_header_show_account_icon',
                    'label' => 'إظهار أيقونة الحساب بالهيدر',
                    'type' => 'boolean',
                    'group' => 'home'
                ],
                [
                    'key' => 'home_primary_color',
                    'label' => 'اللون الرئيسي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#165a86',
                    'hint' => 'اكتب اللون بصيغة HEX مثل #165a86'
                ],
                [
                    'key' => 'home_secondary_color',
                    'label' => 'اللون الثانوي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#2d86bf',
                    'hint' => 'يستخدم مع التدرجات والأزرار'
                ],
                [
                    'key' => 'home_dark_color',
                    'label' => 'اللون الداكن',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#113754',
                    'hint' => 'يستخدم للهيدر والشريط العلوي'
                ],
                [
                    'key' => 'home_background_color',
                    'label' => 'لون الخلفية العامة',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#f5f8fc',
                    'hint' => 'لون خلفية المتجر الرئيسي'
                ],
                [
                    'key' => 'home_surface_color',
                    'label' => 'لون المساحات الناعمة',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#edf7ff',
                    'hint' => 'لون البادجات والمساحات الخفيفة'
                ],
                [
                    'key' => 'home_card_color',
                    'label' => 'لون الكروت والبطاقات',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#fff9fc',
                    'hint' => 'لون بطاقات المنتجات والقوائم الداخلية'
                ],
                [
                    'key' => 'home_text_color',
                    'label' => 'لون النص الرئيسي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#24131c',
                    'hint' => 'لون العناوين والنصوص الأساسية داخل التطبيق'
                ],
                [
                    'key' => 'home_muted_text_color',
                    'label' => 'لون النص الثانوي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#8c6f7c',
                    'hint' => 'لون الوصف المختصر والنصوص الخفيفة'
                ],
                [
                    'key' => 'home_top_bar_background_color',
                    'label' => 'لون خلفية الشريط العلوي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#4a2035',
                    'hint' => 'خلفية شريط الإعلان أعلى الصفحة'
                ],
                [
                    'key' => 'home_top_bar_text_color',
                    'label' => 'لون نص الشريط العلوي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#fff8fc',
                    'hint' => 'لون النص والأيقونة داخل الشريط العلوي'
                ],
                [
                    'key' => 'home_app_bar_background_color',
                    'label' => 'لون خلفية التوب بار',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#ffffff',
                    'hint' => 'لون خلفية App Bar الرئيسي'
                ],
                [
                    'key' => 'home_app_bar_foreground_color',
                    'label' => 'لون نص وأيقونات التوب بار',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#4a2035',
                    'hint' => 'لون عنوان الصفحة وأيقونات App Bar'
                ],
                [
                    'key' => 'home_nav_background_color',
                    'label' => 'لون خلفية النافبار السفلي',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#ffffff',
                    'hint' => 'خلفية شريط التنقل السفلي'
                ],
                [
                    'key' => 'home_nav_selected_color',
                    'label' => 'لون العنصر المحدد بالنافبار',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#d86a9b',
                    'hint' => 'لون الأيقونة والعنوان للعناصر النشطة'
                ],
                [
                    'key' => 'home_nav_unselected_color',
                    'label' => 'لون العناصر غير المحددة بالنافبار',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#9a7c89',
                    'hint' => 'لون الأيقونات والعناوين غير النشطة'
                ],
                [
                    'key' => 'home_button_background_color',
                    'label' => 'لون خلفية الأزرار الرئيسية',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#4a2035',
                    'hint' => 'لون Elevated buttons والأزرار الأساسية'
                ],
                [
                    'key' => 'home_button_text_color',
                    'label' => 'لون نص الأزرار الرئيسية',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#ffffff',
                    'hint' => 'لون النص والأيقونات فوق الأزرار الرئيسية'
                ],
                [
                    'key' => 'home_input_background_color',
                    'label' => 'لون خلفية الحقول',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#ffffff',
                    'hint' => 'لون حقول الإدخال والبحث'
                ],
                [
                    'key' => 'home_border_color',
                    'label' => 'لون الحدود الخفيفة',
                    'type' => 'color',
                    'group' => 'home',
                    'placeholder' => '#eadde4',
                    'hint' => 'لون الحدود الهادئة حول الحقول والبطاقات'
                ]
            ]
        ],
        'registration' => [
            'title' => 'إعدادات التسجيل والحساب',
            'description' => 'خيارات التسجيل، إلزامية الحقول، والسماح بالضيف.',
            'icon' => 'fa-solid fa-user-plus',
            'fields' => [
                [
                    'key' => 'registration_enabled',
                    'label' => 'تفعيل التسجيل',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'guest_checkout_enabled',
                    'label' => 'السماح بالطلب كضيف',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'require_phone',
                    'label' => 'الهاتف إجباري',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'require_full_name',
                    'label' => 'الاسم الكامل إجباري',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'require_birth_date',
                    'label' => 'تاريخ الميلاد إجباري',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'require_gender',
                    'label' => 'الجنس إجباري',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'instagram_field_mode',
                    'label' => 'حقل الإنستغرام',
                    'type' => 'select',
                    'group' => 'registration',
                    'options' => [
                        'hidden' => 'مخفي',
                        'optional' => 'اختياري',
                        'required' => 'إجباري'
                    ]
                ],
                [
                    'key' => 'allow_multiple_accounts_same_device',
                    'label' => 'السماح بعدة حسابات لنفس الجهاز',
                    'type' => 'boolean',
                    'group' => 'registration'
                ],
                [
                    'key' => 'default_customer_status',
                    'label' => 'الحالة الافتراضية للزبون الجديد',
                    'type' => 'select',
                    'group' => 'registration',
                    'options' => [
                        '1' => 'نشط',
                        '0' => 'غير نشط',
                        '2' => 'معلّق'
                    ]
                ],
                [
                    'key' => 'customer_activation_enabled',
                    'label' => 'تفعيل الحسابات الجديدة',
                    'type' => 'boolean',
                    'group' => 'registration'
                ]
            ]
        ],
        'otp' => [
            'title' => 'إعدادات OTP',
            'description' => 'تفعيل التحقق، مدة الصلاحية، إعادة الإرسال، ومزود الخدمة.',
            'icon' => 'fa-solid fa-shield-halved',
            'fields' => [
                [
                    'key' => 'otp_enabled',
                    'label' => 'تفعيل OTP',
                    'type' => 'boolean',
                    'group' => 'otp'
                ],
                [
                    'key' => 'otp_required_for_registration',
                    'label' => 'OTP عند التسجيل',
                    'type' => 'boolean',
                    'group' => 'otp'
                ],
                [
                    'key' => 'otp_required_for_login',
                    'label' => 'OTP عند تسجيل الدخول',
                    'type' => 'boolean',
                    'group' => 'otp'
                ],
                [
                    'key' => 'otp_keep_user_unverified',
                    'label' => 'يبقى الزبون غير مفعل لحين التحقق',
                    'type' => 'boolean',
                    'group' => 'otp'
                ],
                [
                    'key' => 'otp_code_length',
                    'label' => 'عدد أرقام الكود',
                    'type' => 'number',
                    'group' => 'otp',
                    'min' => '4',
                    'step' => '1'
                ],
                [
                    'key' => 'otp_expiry_seconds',
                    'label' => 'مدة انتهاء الكود بالثواني',
                    'type' => 'number',
                    'group' => 'otp',
                    'min' => '30',
                    'step' => '1'
                ],
                [
                    'key' => 'otp_resend_seconds',
                    'label' => 'وقت إعادة الإرسال بالثواني',
                    'type' => 'number',
                    'group' => 'otp',
                    'min' => '0',
                    'step' => '1'
                ],
                [
                    'key' => 'otp_max_attempts',
                    'label' => 'أقصى عدد محاولات',
                    'type' => 'number',
                    'group' => 'otp',
                    'min' => '1',
                    'step' => '1'
                ],
                [
                    'key' => 'otp_provider',
                    'label' => 'مزود الخدمة',
                    'type' => 'text',
                    'group' => 'otp',
                    'placeholder' => 'Twilio / SMS Provider / Custom API'
                ],
                [
                    'key' => 'otp_message_template',
                    'label' => 'قالب الرسالة',
                    'type' => 'textarea',
                    'group' => 'otp',
                    'rows' => 4,
                    'placeholder' => 'رمز التحقق الخاص بك هو: {{code}}'
                ],
                [
                    'key' => 'otp_admin_fallback_enabled',
                    'label' => 'إظهار OTP مباشر داخل لوحة الزبائن إذا فشل المزود',
                    'type' => 'boolean',
                    'group' => 'otp'
                ]
            ]
        ],
        'telegram' => [
            'title' => 'إعدادات تيليغرام',
            'description' => 'ربط البوت والشاتات وتفعيل أنواع الإشعارات المختلفة.',
            'icon' => 'fa-brands fa-telegram',
            'fields' => [
                [
                    'key' => 'telegram_enabled',
                    'label' => 'تفعيل تيليغرام',
                    'type' => 'boolean',
                    'group' => 'telegram'
                ],
                [
                    'key' => 'telegram_bot_token',
                    'label' => 'Bot Token',
                    'type' => 'text',
                    'group' => 'telegram',
                    'placeholder' => '123456:ABC-DEF...'
                ],
                [
                    'key' => 'telegram_chat_id',
                    'label' => 'Chat ID الرئيسي',
                    'type' => 'text',
                    'group' => 'telegram',
                    'placeholder' => '-100... أو 123456'
                ],
                [
                    'key' => 'telegram_admin_chat_id',
                    'label' => 'Chat ID للإدارة',
                    'type' => 'text',
                    'group' => 'telegram',
                    'placeholder' => '-100... أو 123456'
                ],
                [
                    'key' => 'telegram_notify_new_order',
                    'label' => 'إشعار طلب جديد',
                    'type' => 'boolean',
                    'group' => 'telegram'
                ],
                [
                    'key' => 'telegram_notify_status_change',
                    'label' => 'إشعار تغيير حالة الطلب',
                    'type' => 'boolean',
                    'group' => 'telegram'
                ],
                [
                    'key' => 'telegram_notify_new_customer',
                    'label' => 'إشعار تسجيل مستخدم جديد',
                    'type' => 'boolean',
                    'group' => 'telegram'
                ],
                [
                    'key' => 'telegram_notify_payment',
                    'label' => 'إشعار الدفع',
                    'type' => 'boolean',
                    'group' => 'telegram'
                ],
                [
                    'key' => 'telegram_notify_low_stock',
                    'label' => 'إشعار انخفاض المخزون',
                    'type' => 'boolean',
                    'group' => 'telegram'
                ],
                [
                    'key' => 'telegram_test_message',
                    'label' => 'نص رسالة الاختبار',
                    'type' => 'textarea',
                    'group' => 'telegram',
                    'rows' => 3,
                    'placeholder' => 'هذه رسالة اختبار من ناي ستور.'
                ]
            ]
        ],
        'orders' => [
            'title' => 'إعدادات الطلبات',
            'description' => 'المنطق العام للطلبات، التقريب، حالة البداية وخصم المخزون.',
            'icon' => 'fa-solid fa-cart-shopping',
            'fields' => [
                [
                    'key' => 'orders_enable_delivery',
                    'label' => 'تفعيل التوصيل',
                    'type' => 'boolean',
                    'group' => 'orders'
                ],
                [
                    'key' => 'orders_enable_pickup',
                    'label' => 'تفعيل الاستلام من الفرع',
                    'type' => 'boolean',
                    'group' => 'orders'
                ],
                [
                    'key' => 'orders_enable_preorder',
                    'label' => 'تفعيل الطلب المسبق',
                    'type' => 'boolean',
                    'group' => 'orders'
                ],
                [
                    'key' => 'orders_minimum_amount',
                    'label' => 'الحد الأدنى للطلب',
                    'type' => 'number',
                    'group' => 'orders',
                    'min' => '0',
                    'step' => '1000'
                ],
                [
                    'key' => 'orders_free_delivery_min_amount',
                    'label' => 'الحد الأدنى للشحن المجاني',
                    'type' => 'number',
                    'group' => 'orders',
                    'min' => '0',
                    'step' => '1000'
                ],
                [
                    'key' => 'orders_addons_summary_label',
                    'label' => 'عنوان بلوك الإضافات المدفوعة',
                    'type' => 'text',
                    'group' => 'orders',
                    'placeholder' => 'إضافات الطلب',
                    'hint' => 'يظهر داخل الجيك أوت فوق خيارات مثل تغليف هدية أو توصيل نفس اليوم.'
                ],
                [
                    'key' => 'orders_preorder_days_limit',
                    'label' => 'عدد أيام الطلب المسبق',
                    'type' => 'number',
                    'group' => 'orders',
                    'min' => '0',
                    'step' => '1'
                ],
                [
                    'key' => 'orders_default_status',
                    'label' => 'الحالة الافتراضية للطلب',
                    'type' => 'select',
                    'group' => 'orders',
                    'options' => [
                        'pending' => 'قيد الانتظار',
                        'ready' => 'جاهز',
                        'delivered' => 'تم التسليم',
                        'cancelled' => 'ملغي',
                        'postponed' => 'مؤجل'
                    ]
                ],
                [
                    'key' => 'orders_stock_deduction_stage',
                    'label' => 'متى يخصم المخزون',
                    'type' => 'select',
                    'group' => 'orders',
                    'options' => [
                        'created' => 'عند إنشاء الطلب',
                        'confirmed' => 'عند تأكيد الطلب',
                        'completed' => 'عند اكتمال الطلب'
                    ]
                ],
                [
                    'key' => 'orders_round_to_1000',
                    'label' => 'تقريب المبلغ لأقرب 1000',
                    'type' => 'boolean',
                    'group' => 'orders'
                ],
                [
                    'key' => 'orders_customer_cancel_pending_minutes',
                    'label' => 'مهلة إلغاء الطلب من قبل الزبون (بالدقائق)',
                    'type' => 'number',
                    'group' => 'orders',
                    'min' => '0',
                    'step' => '5',
                    'hint' => 'يعمل فقط لطلبات قيد الانتظار. اكتب 0 لتعطيل إلغاء الطلب من واجهة الزبون.'
                ],
                [
                    'key' => 'orders_customer_edit_pending_minutes',
                    'label' => 'مهلة تعديل الطلب من قبل الزبون (بالدقائق)',
                    'type' => 'number',
                    'group' => 'orders',
                    'min' => '0',
                    'step' => '5',
                    'hint' => 'يعمل فقط لطلبات قيد الانتظار. يسمح للزبون بتعديل العنوان أو فرع الاستلام وطريقة الدفع والملاحظات خلال المهلة.'
                ],
                [
                    'key' => 'orders_notes_enabled',
                    'label' => 'السماح بملاحظات الطلب',
                    'type' => 'boolean',
                    'group' => 'orders'
                ],
                [
                    'key' => 'orders_allow_out_of_stock_preorder',
                    'label' => 'السماح بطلب غير المتوفر كطلب مسبق',
                    'type' => 'boolean',
                    'group' => 'orders'
                ],
                [
                    'key' => 'orders_default_prep_minutes',
                    'label' => 'وقت التجهيز الافتراضي بالدقائق',
                    'type' => 'number',
                    'group' => 'orders',
                    'min' => '0',
                    'step' => '5'
                ],
                [
                    'key' => 'order_success_badge_text',
                    'label' => 'شارة نجاح الطلب',
                    'type' => 'text',
                    'group' => 'orders',
                    'placeholder' => 'تم تسجيل الطلب بنجاح'
                ],
                [
                    'key' => 'order_success_heading',
                    'label' => 'العنوان الرئيسي بصفحة النجاح',
                    'type' => 'text',
                    'group' => 'orders',
                    'placeholder' => 'تم تأكيد طلبك بنجاح'
                ],
                [
                    'key' => 'order_success_subtitle',
                    'label' => 'النص الثانوي بصفحة النجاح',
                    'type' => 'textarea',
                    'group' => 'orders',
                    'rows' => 3,
                    'placeholder' => 'رقم الطلب {order_number}، وحالته الحالية {order_status}.',
                    'hint' => 'تدعم المتغيرات: {order_number} {order_status} {payment_method} {order_type} {total_amount}'
                ],
                [
                    'key' => 'order_success_footer_notice',
                    'label' => 'ملاحظة أسفل صفحة النجاح',
                    'type' => 'textarea',
                    'group' => 'orders',
                    'rows' => 3,
                    'placeholder' => 'جميع تحديثات الحالة راح تشوفينها من صفحة طلباتي...'
                ],
                [
                    'key' => 'order_success_message_default',
                    'label' => 'رسالة النجاح الافتراضية حسب نوع الطلب',
                    'type' => 'textarea',
                    'group' => 'orders',
                    'rows' => 3,
                    'placeholder' => 'تم استلام طلبك بنجاح.'
                ],
                [
                    'key' => 'order_success_message_delivery',
                    'label' => 'رسالة نجاح التوصيل',
                    'type' => 'textarea',
                    'group' => 'orders',
                    'rows' => 3,
                    'placeholder' => 'تم استلام طلب التوصيل بنجاح...'
                ],
                [
                    'key' => 'order_success_message_pickup',
                    'label' => 'رسالة نجاح الاستلام من الفرع',
                    'type' => 'textarea',
                    'group' => 'orders',
                    'rows' => 3,
                    'placeholder' => 'تم استلام طلبك كاستلام من المحل...'
                ],
                [
                    'key' => 'order_success_message_preorder',
                    'label' => 'رسالة نجاح الطلب المسبق',
                    'type' => 'textarea',
                    'group' => 'orders',
                    'rows' => 3,
                    'placeholder' => 'تم تثبيت طلبك المسبق بنجاح...'
                ]
            ]
        ],
        'order_invoices' => [
            'title' => 'إعدادات الفواتير',
            'description' => 'التحكم بعناصر الفاتورة المطبوعة ونسخة عرض الموبايل لكل طلب أو لمجموعة طلبات.',
            'icon' => 'fa-solid fa-file-invoice',
            'fields' => [
                ['key' => 'invoice_print_show_store_name', 'label' => 'فاتورة الطباعة: اسم المتجر', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_order_number', 'label' => 'فاتورة الطباعة: رقم الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_created_at', 'label' => 'فاتورة الطباعة: تاريخ الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_customer_name', 'label' => 'فاتورة الطباعة: اسم الزبون', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_customer_phone', 'label' => 'فاتورة الطباعة: هاتف الزبون', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_address', 'label' => 'فاتورة الطباعة: العنوان', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_order_type', 'label' => 'فاتورة الطباعة: نوع الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_order_status', 'label' => 'فاتورة الطباعة: حالة الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_payment_method', 'label' => 'فاتورة الطباعة: طريقة الدفع', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_payment_status', 'label' => 'فاتورة الطباعة: حالة الدفع', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_product_image', 'label' => 'فاتورة الطباعة: صورة المنتج داخل العناصر', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_items_sku', 'label' => 'فاتورة الطباعة: SKU داخل الجدول', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_notes', 'label' => 'فاتورة الطباعة: ملاحظات الزبون', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_admin_notes', 'label' => 'فاتورة الطباعة: ملاحظات الإدارة', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_show_totals', 'label' => 'فاتورة الطباعة: الملخص المالي', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_print_footer_text', 'label' => 'فاتورة الطباعة: نص ختامي', 'type' => 'textarea', 'group' => 'order_invoices', 'rows' => 3, 'placeholder' => 'شكراً لتعاملكم معنا'],
                ['key' => 'invoice_mobile_show_store_name', 'label' => 'فاتورة الموبايل: اسم المتجر', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_order_number', 'label' => 'فاتورة الموبايل: رقم الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_created_at', 'label' => 'فاتورة الموبايل: تاريخ الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_customer_name', 'label' => 'فاتورة الموبايل: اسم الزبون', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_customer_phone', 'label' => 'فاتورة الموبايل: هاتف الزبون', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_address', 'label' => 'فاتورة الموبايل: العنوان', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_order_type', 'label' => 'فاتورة الموبايل: نوع الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_order_status', 'label' => 'فاتورة الموبايل: حالة الطلب', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_payment_method', 'label' => 'فاتورة الموبايل: طريقة الدفع', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_payment_status', 'label' => 'فاتورة الموبايل: حالة الدفع', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_product_image', 'label' => 'فاتورة الموبايل: صورة المنتج داخل العناصر', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_items_sku', 'label' => 'فاتورة الموبايل: SKU داخل الجدول', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_notes', 'label' => 'فاتورة الموبايل: ملاحظات الزبون', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_admin_notes', 'label' => 'فاتورة الموبايل: ملاحظات الإدارة', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_show_totals', 'label' => 'فاتورة الموبايل: الملخص المالي', 'type' => 'boolean', 'group' => 'order_invoices'],
                ['key' => 'invoice_mobile_footer_text', 'label' => 'فاتورة الموبايل: نص ختامي', 'type' => 'textarea', 'group' => 'order_invoices', 'rows' => 3, 'placeholder' => 'شكراً لتعاملكم معنا'],
            ]
        ],
        'delivery' => [
            'title' => 'إعدادات التوصيل',
            'description' => 'الأوقات، الرسائل العامة، وأجور التوصيل الافتراضية.',
            'icon' => 'fa-solid fa-truck-fast',
            'fields' => [
                [
                    'key' => 'default_delivery_fee',
                    'label' => 'أجرة التوصيل الافتراضية',
                    'type' => 'number',
                    'group' => 'shipping',
                    'min' => '0',
                    'step' => '1000'
                ],
                [
                    'key' => 'delivery_fast_enabled',
                    'label' => 'تفعيل التوصيل السريع',
                    'type' => 'boolean',
                    'group' => 'delivery'
                ],
                [
                    'key' => 'delivery_start_time',
                    'label' => 'وقت بدء التوصيل',
                    'type' => 'time',
                    'group' => 'delivery'
                ],
                [
                    'key' => 'delivery_end_time',
                    'label' => 'وقت انتهاء التوصيل',
                    'type' => 'time',
                    'group' => 'delivery'
                ],
                [
                    'key' => 'delivery_working_days',
                    'label' => 'أيام العمل',
                    'type' => 'text',
                    'group' => 'delivery',
                    'placeholder' => 'السبت,الأحد,الاثنين,...'
                ],
                [
                    'key' => 'delivery_estimated_text',
                    'label' => 'مدة التوصيل المتوقعة',
                    'type' => 'text',
                    'group' => 'delivery',
                    'placeholder' => 'خلال 24 - 48 ساعة'
                ],
                [
                    'key' => 'delivery_general_message',
                    'label' => 'رسالة التوصيل',
                    'type' => 'textarea',
                    'group' => 'delivery',
                    'rows' => 3,
                    'placeholder' => 'قد تختلف مدة التوصيل حسب المحافظة والزخم.'
                ],
                [
                    'key' => 'delivery_fallback_fee',
                    'label' => 'أجرة احتياطية عند عدم تحديد المحافظة',
                    'type' => 'number',
                    'group' => 'delivery',
                    'min' => '0',
                    'step' => '1000'
                ],
                [
                    'key' => 'pickup_general_message',
                    'label' => 'رسالة الاستلام من الفرع',
                    'type' => 'textarea',
                    'group' => 'delivery',
                    'rows' => 3,
                    'placeholder' => 'يتم التواصل مع الزبون لتأكيد الاستلام من الفرع.'
                ]
            ]
        ],
        'payments' => [
            'title' => 'إعدادات الدفع',
            'description' => 'تفعيل وسائل الدفع وتعليماتها والرسائل المرتبطة بها.',
            'icon' => 'fa-solid fa-credit-card',
            'fields' => [
                [
                    'key' => 'payment_cod_enabled',
                    'label' => 'الدفع عند الاستلام',
                    'type' => 'boolean',
                    'group' => 'payments'
                ],
                [
                    'key' => 'payment_zaincash_enabled',
                    'label' => 'زين كاش',
                    'type' => 'boolean',
                    'group' => 'payments'
                ],
                [
                    'key' => 'payment_keycard_enabled',
                    'label' => 'كي كارد',
                    'type' => 'boolean',
                    'group' => 'payments'
                ],
                [
                    'key' => 'payment_bank_transfer_enabled',
                    'label' => 'التحويل البنكي',
                    'type' => 'boolean',
                    'group' => 'payments'
                ],
                [
                    'key' => 'payment_manual_review_required',
                    'label' => 'يتطلب مراجعة يدوية',
                    'type' => 'boolean',
                    'group' => 'payments'
                ],
                [
                    'key' => 'payment_instructions',
                    'label' => 'تعليمات الدفع',
                    'type' => 'textarea',
                    'group' => 'payments',
                    'rows' => 4,
                    'placeholder' => 'أدخل تعليمات الدفع أو التحويل هنا.'
                ],
                [
                    'key' => 'payment_success_message',
                    'label' => 'رسالة نجاح الدفع',
                    'type' => 'textarea',
                    'group' => 'payments',
                    'rows' => 3,
                    'placeholder' => 'تم استلام عملية الدفع بنجاح.'
                ],
                [
                    'key' => 'payment_failure_message',
                    'label' => 'رسالة فشل الدفع',
                    'type' => 'textarea',
                    'group' => 'payments',
                    'rows' => 3,
                    'placeholder' => 'تعذر إتمام عملية الدفع، يرجى المحاولة مرة أخرى.'
                ]
            ]
        ],
        'promotions' => [
            'title' => 'إعدادات البروموكود والعروض',
            'description' => 'قواعد الخصومات، الأولوية، وحدود الاستخدام العامة.',
            'icon' => 'fa-solid fa-tags',
            'fields' => [
                [
                    'key' => 'promo_codes_enabled',
                    'label' => 'تفعيل البروموكود',
                    'type' => 'boolean',
                    'group' => 'marketing'
                ],
                [
                    'key' => 'promotions_allow_stack_codes',
                    'label' => 'السماح بأكثر من كود',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'promotions_apply_before_delivery',
                    'label' => 'تطبيق الخصم قبل أجور التوصيل',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'promotions_global_discount_cap',
                    'label' => 'الحد الأعلى العام للخصم',
                    'type' => 'number',
                    'group' => 'promotions',
                    'min' => '0',
                    'step' => '1000'
                ],
                [
                    'key' => 'promotions_same_code_reuse',
                    'label' => 'السماح بإعادة استخدام نفس الكود',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'promotions_auto_offers_enabled',
                    'label' => 'تفعيل العروض التلقائية',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'promotions_priority',
                    'label' => 'أولوية التطبيق',
                    'type' => 'select',
                    'group' => 'promotions',
                    'options' => [
                        'offer_first' => 'العروض أولاً ثم البروموكود',
                        'promo_first' => 'البروموكود أولاً ثم العروض',
                        'best_discount' => 'اختيار النتيجة الأفضل'
                    ],
                    'hint' => 'الترتيب القياسي بالنظام: العروض المنتجية، ثم عروض السلة، ثم البروموكود، ثم النقاط. هذا الخيار يحدد قاعدة احتساب البروموكود مقابل العروض.'
                ],
                [
                    'key' => 'promotions_threshold_rules_enabled',
                    'label' => 'تفعيل عروض الحد الأدنى للسلة',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'promotions_allow_free_delivery_with_promo',
                    'label' => 'السماح بالشحن المجاني مع البروموكود',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'promotions_allow_special_price_with_promo',
                    'label' => 'السماح بالسعر الخاص مع البروموكود',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ],
                [
                    'key' => 'orders_addons_enabled',
                    'label' => 'تفعيل الإضافات المدفوعة للطلب',
                    'type' => 'boolean',
                    'group' => 'promotions'
                ]
            ]
        ],
        'notifications' => [
            'title' => 'إعدادات الإشعارات',
            'description' => 'الإشعارات الداخلية والعامة وإشعارات الطلبات والعروض.',
            'icon' => 'fa-solid fa-bell',
            'fields' => [
                [
                    'key' => 'notifications_in_app_enabled',
                    'label' => 'إشعارات داخل التطبيق',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_new_order_enabled',
                    'label' => 'إشعار طلب جديد',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_order_status_enabled',
                    'label' => 'إشعار تغيير حالة الطلب',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_offers_enabled',
                    'label' => 'إشعارات العروض',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_new_products_enabled',
                    'label' => 'إشعارات المنتجات الجديدة',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_new_user_enabled',
                    'label' => 'إشعار تسجيل مستخدم جديد',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_low_stock_enabled',
                    'label' => 'إشعار انخفاض المخزون',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ],
                [
                    'key' => 'notifications_internal_admin_enabled',
                    'label' => 'إشعارات داخلية للإدارة',
                    'type' => 'boolean',
                    'group' => 'notifications'
                ]
            ]
        ],
        'branches' => [
            'title' => 'إعدادات الفروع',
            'description' => 'الفروع، بيانات الاستلام، والقائمة النصية/JSON للفروع.',
            'icon' => 'fa-solid fa-store',
            'fields' => [
                [
                    'key' => 'branches_enabled',
                    'label' => 'تفعيل الفروع',
                    'type' => 'boolean',
                    'group' => 'branches'
                ],
                [
                    'key' => 'branches_pickup_enabled',
                    'label' => 'السماح بالاستلام من الفرع',
                    'type' => 'boolean',
                    'group' => 'branches'
                ],
                [
                    'key' => 'default_pickup_branch',
                    'label' => 'الفرع الافتراضي للاستلام',
                    'type' => 'text',
                    'group' => 'branches',
                    'placeholder' => 'المنصور / الكرادة / ...'
                ],
                [
                    'key' => 'branches_contact_phone',
                    'label' => 'رقم تواصل الفروع',
                    'type' => 'text',
                    'group' => 'branches',
                    'placeholder' => '07xxxxxxxxx'
                ],
                [
                    'key' => 'branches_working_hours',
                    'label' => 'ساعات العمل',
                    'type' => 'text',
                    'group' => 'branches',
                    'placeholder' => '10:00 AM - 10:00 PM'
                ],
                [
                    'key' => 'branches_list_json',
                    'label' => 'قائمة الفروع (JSON أو نص)',
                    'type' => 'textarea',
                    'group' => 'branches',
                    'rows' => 10,
                    'placeholder' => '[{"name":"فرع المنصور","phone":"07...","address":"..."}]'
                ]
            ]
        ],
        'inventory' => [
            'title' => 'إعدادات المخزون',
            'description' => 'حدود التنبيه، الإخفاء، البيع عند النفاد، وإرجاع المخزون.',
            'icon' => 'fa-solid fa-boxes-stacked',
            'fields' => [
                [
                    'key' => 'inventory_low_stock_threshold',
                    'label' => 'حد التنبيه للمخزون',
                    'type' => 'number',
                    'group' => 'inventory',
                    'min' => '0',
                    'step' => '1'
                ],
                [
                    'key' => 'inventory_low_stock_alert_enabled',
                    'label' => 'تفعيل تنبيه low stock',
                    'type' => 'boolean',
                    'group' => 'inventory'
                ],
                [
                    'key' => 'inventory_allow_backorder',
                    'label' => 'السماح بالبيع عند النفاد',
                    'type' => 'boolean',
                    'group' => 'inventory'
                ],
                [
                    'key' => 'inventory_hide_out_of_stock',
                    'label' => 'إخفاء المنتج عند النفاد',
                    'type' => 'boolean',
                    'group' => 'inventory'
                ],
                [
                    'key' => 'inventory_show_coming_soon',
                    'label' => 'إظهار قريباً بدلاً من غير متوفر',
                    'type' => 'boolean',
                    'group' => 'inventory'
                ],
                [
                    'key' => 'inventory_restore_on_cancel',
                    'label' => 'إرجاع المخزون عند الإلغاء',
                    'type' => 'boolean',
                    'group' => 'inventory'
                ],
                [
                    'key' => 'inventory_restore_on_return',
                    'label' => 'إرجاع المخزون عند الإرجاع',
                    'type' => 'boolean',
                    'group' => 'inventory'
                ]
            ]
        ],
        'wallet' => [
            'title' => 'إعدادات المحفظة',
            'description' => 'التحكم باستخدام رصيد المحفظة داخل الطلب وشحن المحفظة لاحقاً.',
            'icon' => 'fa-solid fa-wallet',
            'fields' => [
                [
                    'key' => 'wallet_enabled',
                    'label' => 'تفعيل المحفظة',
                    'type' => 'boolean',
                    'group' => 'wallet'
                ],
                [
                    'key' => 'wallet_allow_checkout_use',
                    'label' => 'السماح باستخدام رصيد المحفظة داخل الطلب',
                    'type' => 'boolean',
                    'group' => 'wallet'
                ],
                [
                    'key' => 'wallet_topup_enabled',
                    'label' => 'تفعيل شحن المحفظة',
                    'type' => 'boolean',
                    'group' => 'wallet'
                ],
                [
                    'key' => 'wallet_topup_payment_method_codes',
                    'label' => 'طرق الدفع المسموحة لشحن المحفظة',
                    'type' => 'text',
                    'group' => 'wallet',
                    'placeholder' => 'cash,zaincash,keycard,bank_transfer',
                    'hint' => 'اكتب أكواد طرق الدفع المسموحة مفصولة بفواصل. اتركه فارغاً للسماح بكل الطرق الحالية.'
                ]
            ]
        ],
        'loyalty' => [
            'title' => 'إعدادات الولاء والنقاط',
            'description' => 'التحكم بجمع النقاط، استبدالها كمبلغ أو هدية، وحدود الاستخدام داخل الطلب.',
            'icon' => 'fa-solid fa-gift',
            'fields' => [
                [
                    'key' => 'points_enabled',
                    'label' => 'تفعيل برنامج النقاط',
                    'type' => 'boolean',
                    'group' => 'loyalty'
                ],
                [
                    'key' => 'loyalty_points_per_amount',
                    'label' => 'كل مبلغ يمنح نقطة',
                    'type' => 'number',
                    'group' => 'loyalty',
                    'min' => '1',
                    'step' => '1',
                    'hint' => 'مثال: إذا كانت القيمة 10000 فهذا يعني كل 10,000 د.ع = نقطة واحدة.'
                ],
                [
                    'key' => 'loyalty_amount_per_point',
                    'label' => 'قيمة النقطة عند الاستبدال',
                    'type' => 'number',
                    'group' => 'loyalty',
                    'min' => '0',
                    'step' => '1',
                    'hint' => 'مثال: إذا كانت القيمة 100 فكل نقطة = 100 د.ع عند التحويل إلى مبلغ.'
                ],
                [
                    'key' => 'loyalty_min_points_redeem',
                    'label' => 'الحد الأدنى لاستخدام النقاط',
                    'type' => 'number',
                    'group' => 'loyalty',
                    'min' => '0',
                    'step' => '1'
                ],
                [
                    'key' => 'loyalty_max_points_per_order',
                    'label' => 'أعلى عدد نقاط مسموح به لكل طلب',
                    'type' => 'number',
                    'group' => 'loyalty',
                    'min' => '0',
                    'step' => '1',
                    'hint' => 'اتركها 0 إذا تريد بدون حد أعلى.'
                ],
                [
                    'key' => 'loyalty_redeem_type',
                    'label' => 'نوع استبدال النقاط',
                    'type' => 'select',
                    'group' => 'loyalty',
                    'options' => [
                        'amount' => 'تحويل إلى مبلغ خصم',
                        'gift' => 'تحويل إلى هدية'
                    ]
                ],
                [
                    'key' => 'loyalty_gift_reward_title',
                    'label' => 'اسم الهدية عند اختيار نظام الهدية',
                    'type' => 'text',
                    'group' => 'loyalty',
                    'placeholder' => 'هدية نقاط الولاء',
                    'hint' => 'يظهر هذا النص داخل الطلب عندما يتم استخدام النقاط كهدية.'
                ],
                [
                    'key' => 'loyalty_allow_with_promo',
                    'label' => 'السماح بالنقاط مع البروموكود',
                    'type' => 'boolean',
                    'group' => 'loyalty'
                ],
                [
                    'key' => 'loyalty_allow_with_offers',
                    'label' => 'السماح بالنقاط مع العروض',
                    'type' => 'boolean',
                    'group' => 'loyalty'
                ],
                [
                    'key' => 'loyalty_earn_on_delivered_only',
                    'label' => 'إضافة النقاط فقط عند تم التسليم',
                    'type' => 'boolean',
                    'group' => 'loyalty'
                ],
                [
                    'key' => 'loyalty_signup_bonus_points',
                    'label' => 'بونص التسجيل',
                    'type' => 'number',
                    'group' => 'loyalty',
                    'min' => '0',
                    'step' => '1'
                ]
            ]
        ],
        'security' => [
            'title' => 'إعدادات الأمان',
            'description' => 'محاولات الدخول، مدة الحظر، الجلسة، والـ logs الأمنية.',
            'icon' => 'fa-solid fa-lock',
            'fields' => [
                [
                    'key' => 'admin_max_login_attempts',
                    'label' => 'أقصى محاولات دخول',
                    'type' => 'number',
                    'group' => 'security',
                    'min' => '1',
                    'step' => '1'
                ],
                [
                    'key' => 'admin_lockout_minutes',
                    'label' => 'مدة الحظر بالدقائق',
                    'type' => 'number',
                    'group' => 'security',
                    'min' => '1',
                    'step' => '1'
                ],
                [
                    'key' => 'admin_log_changes_enabled',
                    'label' => 'تسجيل تغييرات الإدارة',
                    'type' => 'boolean',
                    'group' => 'security'
                ],
                [
                    'key' => 'admin_track_ip_enabled',
                    'label' => 'تسجيل IP الأدمن',
                    'type' => 'boolean',
                    'group' => 'security'
                ],
                [
                    'key' => 'admin_session_timeout_minutes',
                    'label' => 'انتهاء الجلسة بالدقائق',
                    'type' => 'number',
                    'group' => 'security',
                    'min' => '1',
                    'step' => '1'
                ],
                [
                    'key' => 'security_captcha_enabled',
                    'label' => 'تفعيل CAPTCHA مستقبلاً',
                    'type' => 'boolean',
                    'group' => 'security'
                ],
                [
                    'key' => 'security_password_min_length',
                    'label' => 'الحد الأدنى لطول كلمة المرور',
                    'type' => 'number',
                    'group' => 'security',
                    'min' => '4',
                    'step' => '1'
                ]
            ]
        ],
        'app_readiness' => [
            'title' => 'جاهزية التطبيق',
            'description' => 'تحديث إجباري، روابط المتاجر، ووضع الصيانة للتطبيق.',
            'icon' => 'fa-solid fa-mobile-screen-button',
            'fields' => [
                ['key' => 'mobile_force_update_enabled', 'label' => 'تفعيل التحديث الإجباري', 'type' => 'boolean', 'group' => 'app_readiness'],
                ['key' => 'mobile_update_available', 'label' => 'إظهار توفر تحديث اختياري', 'type' => 'boolean', 'group' => 'app_readiness'],
                ['key' => 'mobile_force_update_message', 'label' => 'رسالة التحديث', 'type' => 'textarea', 'group' => 'app_readiness', 'rows' => 3, 'placeholder' => 'يتوفر إصدار جديد من التطبيق. يرجى التحديث للاستمرار.'],
                ['key' => 'mobile_ios_min_build', 'label' => 'أقل Build مسموح للآيفون', 'type' => 'number', 'group' => 'app_readiness', 'min' => '0', 'step' => '1'],
                ['key' => 'mobile_android_min_build', 'label' => 'أقل Build مسموح للأندرويد', 'type' => 'number', 'group' => 'app_readiness', 'min' => '0', 'step' => '1'],
                ['key' => 'mobile_ios_store_url', 'label' => 'رابط App Store', 'type' => 'text', 'group' => 'app_readiness', 'placeholder' => 'https://apps.apple.com/app/...'],
                ['key' => 'mobile_android_store_url', 'label' => 'رابط Google Play', 'type' => 'text', 'group' => 'app_readiness', 'placeholder' => 'https://play.google.com/store/apps/details?id=...'],
                ['key' => 'mobile_latest_version_label', 'label' => 'آخر نسخة ظاهرة للمستخدم', 'type' => 'text', 'group' => 'app_readiness', 'placeholder' => '1.0.0'],
            ]
        ],
        'trust_pages' => [
            'title' => 'صفحات الثقة والسياسات',
            'description' => 'نصوص سياسة الخصوصية، الشروط، التوصيل، الاستبدال والإرجاع، ومن نحن داخل التطبيق.',
            'icon' => 'fa-solid fa-shield-halved',
            'fields' => [
                ['key' => 'support_email', 'label' => 'إيميل الدعم', 'type' => 'text', 'group' => 'trust_pages', 'placeholder' => 'support@naystore.store'],
                ['key' => 'store_address', 'label' => 'عنوان المتجر', 'type' => 'textarea', 'group' => 'trust_pages', 'rows' => 2],
                ['key' => 'map_url', 'label' => 'رابط الخريطة', 'type' => 'text', 'group' => 'trust_pages'],
                ['key' => 'page_privacy_title', 'label' => 'عنوان سياسة الخصوصية', 'type' => 'text', 'group' => 'trust_pages'],
                ['key' => 'page_privacy_body', 'label' => 'نص سياسة الخصوصية', 'type' => 'textarea', 'group' => 'trust_pages', 'rows' => 7],
                ['key' => 'page_terms_title', 'label' => 'عنوان شروط الاستخدام', 'type' => 'text', 'group' => 'trust_pages'],
                ['key' => 'page_terms_body', 'label' => 'نص شروط الاستخدام', 'type' => 'textarea', 'group' => 'trust_pages', 'rows' => 7],
                ['key' => 'page_returns_title', 'label' => 'عنوان الاستبدال والإرجاع', 'type' => 'text', 'group' => 'trust_pages'],
                ['key' => 'page_returns_body', 'label' => 'نص الاستبدال والإرجاع', 'type' => 'textarea', 'group' => 'trust_pages', 'rows' => 7],
                ['key' => 'page_delivery_title', 'label' => 'عنوان سياسة التوصيل', 'type' => 'text', 'group' => 'trust_pages'],
                ['key' => 'page_delivery_body', 'label' => 'نص سياسة التوصيل', 'type' => 'textarea', 'group' => 'trust_pages', 'rows' => 7],
                ['key' => 'page_about_title', 'label' => 'عنوان من نحن', 'type' => 'text', 'group' => 'trust_pages'],
                ['key' => 'page_about_body', 'label' => 'نص من نحن', 'type' => 'textarea', 'group' => 'trust_pages', 'rows' => 7],
            ]
        ],
        'seo' => [
            'title' => 'إعدادات SEO والروابط',
            'description' => 'عنوان ووصف الموقع وروابط المشاركة والسوشال.',
            'icon' => 'fa-solid fa-globe',
            'fields' => [
                [
                    'key' => 'seo_site_title',
                    'label' => 'عنوان الموقع',
                    'type' => 'text',
                    'group' => 'seo',
                    'placeholder' => 'Nay Store | Beauty & Care'
                ],
                [
                    'key' => 'seo_site_description',
                    'label' => 'وصف الموقع',
                    'type' => 'textarea',
                    'group' => 'seo',
                    'rows' => 4,
                    'placeholder' => 'أفضل متجر لمنتجات العناية والجمال.'
                ],
                [
                    'key' => 'seo_keywords',
                    'label' => 'كلمات مفتاحية',
                    'type' => 'textarea',
                    'group' => 'seo',
                    'rows' => 3,
                    'placeholder' => 'ناي ستور, عناية, تجميل, بغداد'
                ],
                [
                    'key' => 'seo_share_image',
                    'label' => 'رابط صورة المشاركة',
                    'type' => 'text',
                    'group' => 'seo',
                    'placeholder' => 'https://.../share.jpg'
                ],
                [
                    'key' => 'seo_canonical_url',
                    'label' => 'الرابط الأساسي',
                    'type' => 'text',
                    'group' => 'seo',
                    'placeholder' => 'https://naystore.store'
                ],
                [
                    'key' => 'social_facebook_url',
                    'label' => 'رابط فيسبوك',
                    'type' => 'text',
                    'group' => 'seo',
                    'placeholder' => 'https://facebook.com/...'
                ],
                [
                    'key' => 'social_instagram_url',
                    'label' => 'رابط إنستغرام',
                    'type' => 'text',
                    'group' => 'seo',
                    'placeholder' => 'https://instagram.com/...'
                ]
            ]
        ]
    ];
    }
}

if (!function_exists('stg_nav')) {
    function stg_nav(): array
    {
        return stg_sections();
    }
}

if (!function_exists('stg_get_section')) {
    function stg_get_section(string $slug): array
    {
        $sections = stg_sections();
        if (!isset($sections[$slug])) {
            throw new InvalidArgumentException('Unknown settings section: ' . $slug);
        }
        return $sections[$slug];
    }
}



if (!function_exists('stg_theme_preset_fields')) {
    function stg_theme_preset_fields(): array
    {
        return [
            'home_logo_url',
            'home_announcement_bar',
            'home_primary_color',
            'home_secondary_color',
            'home_dark_color',
            'home_background_color',
            'home_surface_color',
            'home_card_color',
            'home_text_color',
            'home_muted_text_color',
            'home_top_bar_background_color',
            'home_top_bar_text_color',
            'home_app_bar_background_color',
            'home_app_bar_foreground_color',
            'home_nav_background_color',
            'home_nav_selected_color',
            'home_nav_unselected_color',
            'home_button_background_color',
            'home_button_text_color',
            'home_input_background_color',
            'home_border_color',
        ];
    }
}

if (!function_exists('stg_theme_preset_slug')) {
    function stg_theme_preset_slug(string $name): string
    {
        $name = trim($name);
        if ($name === '') {
            $name = 'theme';
        }

        $slug = function_exists('mb_strtolower') ? mb_strtolower($name, 'UTF-8') : strtolower($name);
        $slug = preg_replace('/[^\p{Arabic}\p{L}\p{N}]+/u', '-', $slug);
        $slug = trim((string)$slug, '-');
        if ($slug === '') {
            $slug = 'theme-' . date('YmdHis');
        }
        return $slug;
    }
}

if (!function_exists('stg_setting_upsert')) {
    function stg_setting_upsert(string $key, string $value, string $group = 'general'): bool
    {
        $db = stg_db();

        $check = $db->prepare("SELECT id FROM settings WHERE setting_key = ? LIMIT 1");
        if (!$check) {
            return false;
        }
        $check->bind_param('s', $key);
        if (!$check->execute()) {
            $check->close();
            return false;
        }
        $res = $check->get_result();
        $row = $res ? $res->fetch_assoc() : null;
        $check->close();

        if ($row && isset($row['id'])) {
            $id = (int)$row['id'];
            $stmt = $db->prepare("UPDATE settings SET setting_value = ?, setting_group = ?, updated_at = NOW() WHERE id = ?");
            if (!$stmt) {
                return false;
            }
            $stmt->bind_param('ssi', $value, $group, $id);
        } else {
            $stmt = $db->prepare("INSERT INTO settings (setting_key, setting_value, setting_group, created_at, updated_at) VALUES (?, ?, ?, NOW(), NOW())");
            if (!$stmt) {
                return false;
            }
            $stmt->bind_param('sss', $key, $value, $group);
        }

        $ok = $stmt->execute();
        $stmt->close();
        return $ok;
    }
}

if (!function_exists('stg_theme_presets')) {
    function stg_theme_presets(): array
    {
        $db = stg_db();
        $rows = [];
        $result = $db->query("SELECT setting_key, setting_value, updated_at FROM settings WHERE setting_group = 'theme_presets' OR setting_key LIKE 'theme_preset__%' ORDER BY updated_at DESC, id DESC");
        if ($result) {
            while ($row = $result->fetch_assoc()) {
                $key = (string)($row['setting_key'] ?? '');
                if ($key === '') {
                    continue;
                }
                $decoded = json_decode((string)($row['setting_value'] ?? ''), true);
                if (!is_array($decoded)) {
                    continue;
                }
                $rows[] = [
                    'key' => $key,
                    'slug' => str_replace('theme_preset__', '', $key),
                    'name' => (string)($decoded['name'] ?? str_replace('theme_preset__', '', $key)),
                    'values' => is_array($decoded['values'] ?? null) ? $decoded['values'] : [],
                    'updated_at' => (string)($row['updated_at'] ?? ''),
                ];
            }
            $result->close();
        }
        return $rows;
    }
}

if (!function_exists('stg_save_theme_preset')) {
    function stg_save_theme_preset(string $name, array $sourceValues): array
    {
        $name = trim($name);
        if ($name === '') {
            return ['ok' => false, 'message' => 'اكتب اسم للثيم حتى ينحفظ.'];
        }

        $values = [];
        foreach (stg_theme_preset_fields() as $fieldKey) {
            $values[$fieldKey] = isset($sourceValues[$fieldKey]) ? trim((string)$sourceValues[$fieldKey]) : '';
        }

        $slug = stg_theme_preset_slug($name);
        $storageKey = 'theme_preset__' . $slug;
        $payload = json_encode([
            'name' => $name,
            'values' => $values,
        ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

        if ($payload === false || !stg_setting_upsert($storageKey, $payload, 'theme_presets')) {
            return ['ok' => false, 'message' => 'تعذر حفظ الثيم.'];
        }

        return ['ok' => true, 'message' => 'تم حفظ الثيم باسم: ' . $name];
    }
}

if (!function_exists('stg_apply_theme_preset')) {
    function stg_apply_theme_preset(string $presetKey): array
    {
        $presetKey = trim($presetKey);
        if ($presetKey === '') {
            return ['ok' => false, 'message' => 'اختَر الثيم أولاً.'];
        }

        $selected = null;
        foreach (stg_theme_presets() as $preset) {
            if ($preset['key'] === $presetKey) {
                $selected = $preset;
                break;
            }
        }

        if (!$selected) {
            return ['ok' => false, 'message' => 'الثيم المحدد غير موجود.'];
        }

        foreach (stg_theme_preset_fields() as $fieldKey) {
            $value = isset($selected['values'][$fieldKey]) ? (string)$selected['values'][$fieldKey] : '';
            if (!stg_setting_upsert($fieldKey, $value, 'home')) {
                return ['ok' => false, 'message' => 'تعذر تطبيق الثيم على الإعدادات الحالية.'];
            }
        }

        stg_setting_upsert('home_active_theme_preset', $selected['key'], 'home');
        stg_get_all_values(true);
        return ['ok' => true, 'message' => 'تم تطبيق الثيم: ' . $selected['name']];
    }
}

if (!function_exists('stg_delete_theme_preset')) {
    function stg_delete_theme_preset(string $presetKey): array
    {
        $presetKey = trim($presetKey);
        if ($presetKey === '') {
            return ['ok' => false, 'message' => 'ما تم تحديد أي ثيم للحذف.'];
        }

        $db = stg_db();
        $stmt = $db->prepare("DELETE FROM settings WHERE setting_key = ? LIMIT 1");
        if (!$stmt) {
            return ['ok' => false, 'message' => 'تعذر تجهيز حذف الثيم.'];
        }
        $stmt->bind_param('s', $presetKey);
        $ok = $stmt->execute();
        $stmt->close();

        if ($ok) {
            $active = stg_value('home_active_theme_preset');
            if ($active === $presetKey) {
                stg_setting_upsert('home_active_theme_preset', '', 'home');
            }
            stg_get_all_values(true);
            return ['ok' => true, 'message' => 'تم حذف الثيم المحفوظ.'];
        }

        return ['ok' => false, 'message' => 'تعذر حذف الثيم.'];
    }
}

if (!function_exists('stg_render_theme_presets_panel')) {
    function stg_render_theme_presets_panel(array $values): string
    {
        $presets = stg_theme_presets();
        $active = stg_value('home_active_theme_preset');
        $html = '<div class="stg-card stg-theme-presets">';
        $html .= '<div class="stg-theme-head"><div><h2>الثيمات المحفوظة</h2><p>احفظ التدرج الحالي باسم وارجع له بأي وقت من نفس الصفحة.</p></div></div>';
        $html .= '<form method="post" class="stg-theme-save-row">';
        $html .= '<input type="hidden" name="theme_preset_action" value="save">';
        $html .= '<input type="text" name="theme_preset_name" placeholder="مثال: وردي فاخر - رمضان" required>';
        $html .= '<button type="submit"><i class="fa-solid fa-bookmark"></i> حفظ الثيم الحالي</button>';
        $html .= '</form>';

        if (empty($presets)) {
            $html .= '<div class="stg-empty-presets">بعد ماكو ثيمات محفوظة بعد. أول ما تحفظ واحد راح يظهر هنا.</div>';
        } else {
            $html .= '<div class="stg-preset-list">';
            foreach ($presets as $preset) {
                $html .= '<div class="stg-preset-item">';
                $html .= '<div class="stg-preset-meta">';
                $html .= '<strong>' . stg_h($preset['name']) . '</strong>';
                $html .= '<span>' . stg_h($preset['updated_at']) . '</span>';
                if ($active === $preset['key']) {
                    $html .= '<em>الثيم النشط حالياً</em>';
                }
                $html .= '</div>';
                $html .= '<div class="stg-preset-swatches">';
                foreach (['home_primary_color','home_secondary_color','home_background_color','home_card_color'] as $swatchKey) {
                    $color = isset($preset['values'][$swatchKey]) ? trim((string)$preset['values'][$swatchKey]) : '';
                    if ($color !== '') {
                        $html .= '<span title="' . stg_h($swatchKey) . '" style="background:' . stg_h($color) . ';"></span>';
                    }
                }
                $html .= '</div>';

                $preview = [
                    'topBarBg' => trim((string)($preset['values']['home_top_bar_background_color'] ?? '')) ?: '#4A2035',
                    'topBarText' => trim((string)($preset['values']['home_top_bar_text_color'] ?? '')) ?: '#FFF8FC',
                    'appBarBg' => trim((string)($preset['values']['home_app_bar_background_color'] ?? '')) ?: '#FFFFFF',
                    'appBarFg' => trim((string)($preset['values']['home_app_bar_foreground_color'] ?? '')) ?: '#4A2035',
                    'background' => trim((string)($preset['values']['home_background_color'] ?? '')) ?: '#FFF5FA',
                    'surface' => trim((string)($preset['values']['home_surface_color'] ?? '')) ?: '#FCEAF2',
                    'card' => trim((string)($preset['values']['home_card_color'] ?? '')) ?: '#FFFFFF',
                    'text' => trim((string)($preset['values']['home_text_color'] ?? '')) ?: '#24131C',
                    'muted' => trim((string)($preset['values']['home_muted_text_color'] ?? '')) ?: '#8C6F7C',
                    'primary' => trim((string)($preset['values']['home_primary_color'] ?? '')) ?: '#4A2035',
                    'secondary' => trim((string)($preset['values']['home_secondary_color'] ?? '')) ?: '#D86A9B',
                    'buttonBg' => trim((string)($preset['values']['home_button_background_color'] ?? '')) ?: '#4A2035',
                    'buttonText' => trim((string)($preset['values']['home_button_text_color'] ?? '')) ?: '#FFFFFF',
                    'navBg' => trim((string)($preset['values']['home_nav_background_color'] ?? '')) ?: '#FFFFFF',
                    'navSelected' => trim((string)($preset['values']['home_nav_selected_color'] ?? '')) ?: '#D86A9B',
                    'navUnselected' => trim((string)($preset['values']['home_nav_unselected_color'] ?? '')) ?: '#9A7C89',
                    'border' => trim((string)($preset['values']['home_border_color'] ?? '')) ?: '#EADDE4',
                ];
                $html .= '<div class="stg-preset-preview">';
                $html .= '<div class="stg-mini-phone"><div class="stg-mini-screen" style="background:' . stg_h($preview['background']) . ';">';
                $html .= '<div class="stg-mini-topbar" style="background:' . stg_h($preview['topBarBg']) . ';color:' . stg_h($preview['topBarText']) . ';">إعلان سريع + خصومات اليوم</div>';
                $html .= '<div class="stg-mini-appbar" style="background:' . stg_h($preview['appBarBg']) . ';color:' . stg_h($preview['appBarFg']) . ';"><span>نـاي ستور</span><span class="dots"><span></span><span></span><span></span></span></div>';
                $html .= '<div class="stg-mini-body">';
                $html .= '<div class="stg-mini-hero" style="background:' . stg_h($preview['surface']) . ';border:1px solid ' . stg_h($preview['border']) . ';color:' . stg_h($preview['text']) . ';"><strong>واجهة مصغرة للثيم قبل التطبيق</strong><small style="color:' . stg_h($preview['muted']) . ';">الهوم + الكروت + الزر + النافبار</small><span class="stg-mini-button" style="background:' . stg_h($preview['buttonBg']) . ';color:' . stg_h($preview['buttonText']) . ';">تسوقي الآن</span></div>';
                $html .= '<div class="stg-mini-cards">';
                $html .= '<div class="stg-mini-card" style="background:' . stg_h($preview['card']) . ';border-color:' . stg_h($preview['border']) . ';color:' . stg_h($preview['text']) . ';"><b>منتج مميز</b><span style="color:' . stg_h($preview['secondary']) . ';">عرض خاص</span></div>';
                $html .= '<div class="stg-mini-card" style="background:' . stg_h($preview['card']) . ';border-color:' . stg_h($preview['border']) . ';color:' . stg_h($preview['text']) . ';"><b>براندات</b><span style="color:' . stg_h($preview['primary']) . ';">سلايدر دائري</span></div>';
                $html .= '</div>';
                $html .= '</div>';
                $html .= '<div class="stg-mini-nav" style="background:' . stg_h($preview['navBg']) . ';border-top-color:' . stg_h($preview['border']) . ';"><span class="active" style="background:' . stg_h($preview['navSelected']) . ';"></span><span style="background:' . stg_h($preview['navUnselected']) . ';"></span><span style="background:' . stg_h($preview['navUnselected']) . ';"></span><span style="background:' . stg_h($preview['navUnselected']) . ';"></span></div>';
                $html .= '</div></div>';
                $html .= '</div>';
                $html .= '<div class="stg-preset-actions">';
                $html .= '<form method="post"><input type="hidden" name="theme_preset_action" value="apply"><input type="hidden" name="theme_preset_key" value="' . stg_h($preset['key']) . '"><button type="submit" class="apply"><i class="fa-solid fa-paintbrush"></i> تطبيق</button></form>';
                $html .= '<form method="post" onsubmit="return confirm(\'حذف الثيم المحفوظ؟\');"><input type="hidden" name="theme_preset_action" value="delete"><input type="hidden" name="theme_preset_key" value="' . stg_h($preset['key']) . '"><button type="submit" class="danger"><i class="fa-solid fa-trash"></i> حذف</button></form>';
                $html .= '</div>';
                $html .= '</div>';
            }
            $html .= '</div>';
        }

        $html .= '</div>';
        return $html;
    }
}

if (!function_exists('stg_defaults')) {
    function stg_defaults(): array
    {
        $defaults = [];
        foreach (stg_sections() as $section) {
            foreach ($section['fields'] as $field) {
                $defaults[$field['key']] = $field['type'] === 'boolean' ? '0' : '';
            }
        }
        return $defaults;
    }
}

if (!function_exists('stg_get_all_values')) {
    function stg_get_all_values(bool $refresh = false): array
    {
        static $cache = null;
        if (!$refresh && is_array($cache)) {
            return $cache;
        }

        $db = stg_db();
        $values = stg_defaults();

        $result = $db->query("SELECT setting_key, setting_value FROM settings");
        if ($result) {
            while ($row = $result->fetch_assoc()) {
                $values[(string)$row['setting_key']] = (string)($row['setting_value'] ?? '');
            }
            $result->close();
        }

        $cache = $values;
        return $cache;
    }
}

if (!function_exists('stg_value')) {
    function stg_value(string $key, string $default = ''): string
    {
        $values = stg_get_all_values();
        return array_key_exists($key, $values) ? (string)$values[$key] : $default;
    }
}

if (!function_exists('stg_page_values')) {
    function stg_page_values(string $slug): array
    {
        $section = stg_get_section($slug);
        $all = stg_get_all_values();
        $page = [];
        foreach ($section['fields'] as $field) {
            $page[$field['key']] = array_key_exists($field['key'], $all) ? (string)$all[$field['key']] : ($field['type'] === 'boolean' ? '0' : '');
        }
        return $page;
    }
}

if (!function_exists('stg_save_section')) {
    function stg_save_section(string $slug, array $post): array
    {
        $db = stg_db();
        $section = stg_get_section($slug);
        $errors = [];
        $saved = 0;

        foreach ($section['fields'] as $field) {
            $key = (string)$field['key'];
            $group = (string)($field['group'] ?? $slug);
            $type = (string)$field['type'];

            if ($type === 'boolean') {
                $value = isset($post[$key]) ? trim((string)$post[$key]) : '0';
                $value = $value === '1' ? '1' : '0';
            } else {
                $value = isset($post[$key]) ? trim((string)$post[$key]) : '';
            }

            if ($type === 'number' && $value !== '' && !is_numeric($value)) {
                $errors[] = 'الحقل "' . ($field['label'] ?? $key) . '" يجب أن يكون رقم.';
                continue;
            }

            $check = $db->prepare("SELECT id FROM settings WHERE setting_key = ? LIMIT 1");
            if (!$check) {
                $errors[] = 'فشل تحضير فحص الإعداد: ' . $db->error;
                continue;
            }
            $check->bind_param('s', $key);
            if (!$check->execute()) {
                $errors[] = 'تعذر قراءة الإعداد "' . $key . '": ' . $check->error;
                $check->close();
                continue;
            }
            $res = $check->get_result();
            $row = $res ? $res->fetch_assoc() : null;
            $check->close();

            if ($row && isset($row['id'])) {
                $id = (int)$row['id'];
                $stmt = $db->prepare("UPDATE settings SET setting_value = ?, setting_group = ?, updated_at = NOW() WHERE id = ?");
                if (!$stmt) {
                    $errors[] = 'فشل تحديث الإعداد "' . $key . '": ' . $db->error;
                    continue;
                }
                $stmt->bind_param('ssi', $value, $group, $id);
            } else {
                $stmt = $db->prepare("INSERT INTO settings (setting_key, setting_value, setting_group, created_at, updated_at) VALUES (?, ?, ?, NOW(), NOW())");
                if (!$stmt) {
                    $errors[] = 'فشل إنشاء الإعداد "' . $key . '": ' . $db->error;
                    continue;
                }
                $stmt->bind_param('sss', $key, $value, $group);
            }

            if (!$stmt->execute()) {
                $errors[] = 'تعذر حفظ "' . $key . '": ' . $stmt->error;
            } else {
                $saved++;
            }
            $stmt->close();
        }

        stg_get_all_values(true);

        return [
            'ok' => empty($errors),
            'saved' => $saved,
            'errors' => $errors,
        ];
    }
}

if (!function_exists('stg_field_input')) {
    function stg_field_input(array $field, array $values): string
    {
        $key = (string)$field['key'];
        $label = (string)($field['label'] ?? $key);
        $type = (string)($field['type'] ?? 'text');
        $value = array_key_exists($key, $values) ? (string)$values[$key] : '';
        $placeholder = (string)($field['placeholder'] ?? '');
        $rows = (int)($field['rows'] ?? 4);
        $min = isset($field['min']) ? ' min="' . stg_h((string)$field['min']) . '"' : '';
        $step = isset($field['step']) ? ' step="' . stg_h((string)$field['step']) . '"' : '';
        $html = '<div class="stg-field">';
        $html .= '<label for="' . stg_h($key) . '">' . stg_h($label) . '</label>';

        if ($type === 'textarea') {
            $html .= '<textarea id="' . stg_h($key) . '" name="' . stg_h($key) . '" rows="' . $rows . '" placeholder="' . stg_h($placeholder) . '">' . stg_h($value) . '</textarea>';
        } elseif ($type === 'select') {
            $html .= '<select id="' . stg_h($key) . '" name="' . stg_h($key) . '">';
            foreach (($field['options'] ?? []) as $optValue => $optLabel) {
                $selected = ((string)$optValue === $value) ? ' selected' : '';
                $html .= '<option value="' . stg_h((string)$optValue) . '"' . $selected . '>' . stg_h((string)$optLabel) . '</option>';
            }
            $html .= '</select>';
        } elseif ($type === 'boolean') {
            $yes = $value === '1' ? ' selected' : '';
            $no = $value !== '1' ? ' selected' : '';
            $html .= '<select id="' . stg_h($key) . '" name="' . stg_h($key) . '">';
            $html .= '<option value="1"' . $yes . '>مفعل</option>';
            $html .= '<option value="0"' . $no . '>غير مفعل</option>';
            $html .= '</select>';
        } elseif ($type === 'color') {
            $colorValue = preg_match('/^#[0-9a-fA-F]{6}$/', $value) ? $value : '#165a86';
            $html .= '<div class="stg-color-row">';
            $html .= '<input class="stg-color-picker" type="color" id="' . stg_h($key) . '_picker" value="' . stg_h($colorValue) . '" data-color-sync="' . stg_h($key) . '">';
            $html .= '<input class="stg-color-text" type="text" id="' . stg_h($key) . '" name="' . stg_h($key) . '" value="' . stg_h($value) . '" placeholder="' . stg_h($placeholder) . '">';
            $html .= '</div>';
        } else {
            $inputType = in_array($type, ['number', 'time', 'date'], true) ? $type : 'text';
            $html .= '<input type="' . $inputType . '" id="' . stg_h($key) . '" name="' . stg_h($key) . '" value="' . stg_h($value) . '" placeholder="' . stg_h($placeholder) . '"' . $min . $step . '>';
        }

        if (!empty($field['hint'])) {
            $html .= '<small>' . stg_h((string)$field['hint']) . '</small>';
        }
        $html .= '</div>';
        return $html;
    }
}

if (!function_exists('stg_render_nav')) {
    function stg_render_nav(string $currentSlug): string
    {
        $html = '<div class="stg-nav">';
        foreach (stg_nav() as $slug => $item) {
            $active = $slug === $currentSlug ? ' active' : '';
            $icon = !empty($item['icon']) ? '<i class="' . stg_h((string)$item['icon']) . '"></i>' : '';
            $html .= '<a class="stg-nav-item' . $active . '" href="' . stg_h($slug) . '.php">' . $icon . '<span>' . stg_h((string)$item['title']) . '</span></a>';
        }
        $html .= '</div>';
        return $html;
    }
}

if (!function_exists('stg_render_flash')) {
    function stg_render_flash(array $result): string
    {
        if (empty($result)) {
            return '';
        }
        $html = '';
        if (!empty($result['ok'])) {
            $message = !empty($result['message']) ? (string)$result['message'] : 'تم حفظ الإعدادات بنجاح.';
            $html .= '<div class="stg-alert success">' . stg_h($message) . '</div>';
        }
        if (!empty($result['errors'])) {
            $title = !empty($result['error_title']) ? (string)$result['error_title'] : 'تعذر حفظ بعض القيم:';
            $html .= '<div class="stg-alert error"><strong>' . stg_h($title) . '</strong><ul>';
            foreach ($result['errors'] as $err) {
                $html .= '<li>' . stg_h((string)$err) . '</li>';
            }
            $html .= '</ul></div>';
        }
        if (empty($result['ok']) && !empty($result['message']) && empty($result['errors'])) {
            $html .= '<div class="stg-alert error">' . stg_h((string)$result['message']) . '</div>';
        }
        return $html;
    }
}

if (!function_exists('stg_render_stats')) {
    function stg_render_stats(): string
    {
        $all = stg_get_all_values();
        $sections = stg_sections();
        $totalKeys = count($all);
        $totalSections = count($sections);
        $enabledCount = 0;
        foreach ($all as $value) {
            if ((string)$value === '1') {
                $enabledCount++;
            }
        }

        return '
        <div class="stg-stats">
            <div class="stg-stat"><span>أقسام الإعدادات</span><strong>' . $totalSections . '</strong></div>
            <div class="stg-stat"><span>عدد المفاتيح الحالية</span><strong>' . $totalKeys . '</strong></div>
            <div class="stg-stat"><span>القيم المفعلة</span><strong>' . $enabledCount . '</strong></div>
        </div>';
    }
}
