<?php
/**
 * DZQCOD Shortcodes & Widgets — v3.2.0
 * 20+ shortcodes + 8 widgets for complete store functionality
 */
namespace DZQCOD;
defined('ABSPATH') || exit;

class ShortcodesWidgets {

    public function __construct() {
        // Register all shortcodes
        $codes = ['dzqcod_order_form','dzqcod_delivery_info','dzqcod_payment_methods','dzqcod_affiliate',
            'dzqcod_refer_friend','dzqcod_loyalty_points','dzqcod_store_info','dzqcod_flash_sale',
            'dzqcod_countdown','dzqcod_trust_badges','dzqcod_faq','dzqcod_size_guide',
            'dzqcod_delivery_calculator','dzqcod_order_status','dzqcod_testimonials',
            'dzqcod_products_grid','dzqcod_bestsellers','dzqcod_new_arrivals',
            'dzqcod_category_showcase','dzqcod_whatsapp_button','dzqcod_callback_form',
            'dzqcod_store_stats','dzqcod_affiliate_dashboard'];
        foreach ($codes as $c) add_shortcode($c, [$this, str_replace('dzqcod_', 'sc_', $c)]);

        // Register widgets
        add_action('widgets_init', [$this, 'register_widgets']);

        // AJAX handlers
        foreach (['dzqcod_calc_shipping','dzqcod_check_order_status','dzqcod_submit_callback',
                   'dzqcod_apply_referral','dzqcod_get_loyalty'] as $a) {
            add_action('wp_ajax_'.$a, [$this, $a]);
            add_action('wp_ajax_nopriv_'.$a, [$this, $a]);
        }
    }

    // ════════════════════════════════════════════════════════════════
    //  CSS HELPER — shared styles for all shortcodes
    // ════════════════════════════════════════════════════════════════
    private static function css(): string {
        static $loaded = false;
        if ($loaded) return '';
        $loaded = true;
        return '<style>
.dz-sc{font-family:"Segoe UI",Tahoma,sans-serif;direction:rtl;color:#1e293b;line-height:1.7}
.dz-sc *{box-sizing:border-box}
.dz-sc-card{background:#fff;border-radius:16px;padding:24px;box-shadow:0 2px 16px rgba(0,0,0,.06);border:1px solid #f0f0f0;margin-bottom:16px}
.dz-sc h3{font-size:18px;font-weight:800;margin:0 0 14px;color:#1e293b}
.dz-sc-btn{display:inline-block;padding:12px 28px;border:none;border-radius:12px;font-size:14px;font-weight:700;cursor:pointer;transition:.3s;text-decoration:none;text-align:center;font-family:inherit}
.dz-sc-btn-p{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 16px rgba(102,126,234,.3)}
.dz-sc-btn-p:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(102,126,234,.4)}
.dz-sc-btn-g{background:#10b981;color:#fff}.dz-sc-btn-w{background:#25d366;color:#fff}
.dz-sc-grid{display:grid;gap:16px}
.dz-sc-input{width:100%;padding:12px;border:2px solid #e2e8f0;border-radius:10px;font-size:14px;font-family:inherit;transition:.3s}
.dz-sc-input:focus{border-color:#667eea;outline:none;box-shadow:0 0 0 3px rgba(102,126,234,.1)}
.dz-sc-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:11px;font-weight:700}
@media(max-width:640px){.dz-sc-grid{grid-template-columns:1fr!important}}
</style>';
    }

    // ════════════════════════════════════════════════════════════════
    //  [dzqcod_delivery_info] — Delivery zones, fees, estimated time
    // ════════════════════════════════════════════════════════════════
    public function sc_delivery_info($atts): string {
        $atts = shortcode_atts(['title'=>'معلومات التوصيل','provider'=>''], $atts);
        $sym = Core::opt('currency_symbol','دج');
        ob_start();
        echo self::css();
        ?>
<div class="dz-sc"><div class="dz-sc-card">
<h3>🚚 <?php echo esc_html($atts['title']); ?></h3>
<div class="dz-sc-grid" style="grid-template-columns:1fr 1fr 1fr;text-align:center;margin-bottom:16px">
<div style="padding:16px;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-radius:12px"><div style="font-size:28px;margin-bottom:4px">📦</div><div style="font-weight:800;font-size:15px">توصيل لكل الولايات</div><div style="font-size:12px;color:#64748b">58 ولاية + 1,541 بلدية</div></div>
<div style="padding:16px;background:linear-gradient(135deg,#eff6ff,#dbeafe);border-radius:12px"><div style="font-size:28px;margin-bottom:4px">🏠</div><div style="font-weight:800;font-size:15px">توصيل للمنزل</div><div style="font-size:12px;color:#64748b">إلى باب بيتك</div></div>
<div style="padding:16px;background:linear-gradient(135deg,#fdf4ff,#f3e8ff);border-radius:12px"><div style="font-size:28px;margin-bottom:4px">🏢</div><div style="font-weight:800;font-size:15px">Stop Desk</div><div style="font-size:12px;color:#64748b">استلم من أقرب مكتب</div></div>
</div>
<div style="background:#f8fafc;border-radius:12px;padding:16px">
<div style="font-weight:700;margin-bottom:8px">💰 احسب تكلفة التوصيل</div>
<div style="display:flex;gap:8px"><select id="dz-del-wil" class="dz-sc-input" style="flex:1"><option value="">اختر الولاية...</option>
<?php global $wpdb; $wilayas=$wpdb->get_results("SELECT * FROM {$wpdb->prefix}dz_wilayas ORDER BY name_ar",ARRAY_A);
foreach($wilayas as $w): ?><option value="<?php echo esc_attr($w['id']); ?>"><?php echo esc_html($w['code'].' - '.$w['name_ar']); ?></option><?php endforeach; ?>
</select><button class="dz-sc-btn dz-sc-btn-p" onclick="dzCalcShip()" style="padding:12px 20px">حساب</button></div>
<div id="dz-del-result" style="margin-top:12px;display:none;background:#fff;border-radius:10px;padding:14px;border:1px solid #e2e8f0">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:center">
<div><div style="font-size:11px;color:#64748b">🏠 منزل</div><div id="dz-del-home" style="font-size:22px;font-weight:900;color:#10b981">—</div></div>
<div><div style="font-size:11px;color:#64748b">🏢 مكتب</div><div id="dz-del-desk" style="font-size:22px;font-weight:900;color:#6366f1">—</div></div>
</div></div>
</div>
<div style="margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:13px">
<div style="display:flex;align-items:center;gap:8px"><span style="font-size:20px">⏱️</span><div><strong>مدة التوصيل</strong><div style="color:#64748b;font-size:12px">24-72 ساعة حسب الولاية</div></div></div>
<div style="display:flex;align-items:center;gap:8px"><span style="font-size:20px">💵</span><div><strong>الدفع عند الاستلام</strong><div style="color:#64748b;font-size:12px">ادفع عند استلام طلبك</div></div></div>
<div style="display:flex;align-items:center;gap:8px"><span style="font-size:20px">🔄</span><div><strong>إرجاع مجاني</strong><div style="color:#64748b;font-size:12px">خلال 7 أيام من الاستلام</div></div></div>
<div style="display:flex;align-items:center;gap:8px"><span style="font-size:20px">📞</span><div><strong>متابعة هاتفية</strong><div style="color:#64748b;font-size:12px">نتصل بك لتأكيد الطلب</div></div></div>
</div>
</div></div>
<script>
function dzCalcShip(){var w=document.getElementById('dz-del-wil').value;if(!w)return;
var fd=new FormData();fd.append('action','dzqcod_calc_shipping');fd.append('wilaya_id',w);
fetch('<?php echo admin_url("admin-ajax.php"); ?>',{method:'POST',body:fd}).then(r=>r.json()).then(d=>{
if(d.success){document.getElementById('dz-del-result').style.display='block';document.getElementById('dz-del-home').textContent=d.data.home+' <?php echo esc_js($sym); ?>';document.getElementById('dz-del-desk').textContent=d.data.desk+' <?php echo esc_js($sym); ?>'}})}
</script>
<?php return ob_get_clean();
    }

    // ════════════════════════════════════════════════════════════════
    //  [dzqcod_payment_methods] — Payment methods page
    // ════════════════════════════════════════════════════════════════
    public function sc_payment_methods($atts): string {
        $atts = shortcode_atts(['title'=>'طرق الدفع المتاحة'], $atts);
        ob_start(); echo self::css();
        $methods = [
            ['i'=>'💵','n'=>'الدفع عند الاستلام (COD)','d'=>'ادفع نقداً عند استلام طلبك — الطريقة الأكثر شعبية في الجزائر','c'=>'#10b981','active'=>true],
            ['i'=>'💳','n'=>'بطاقة CIB / EDAHABIA','d'=>'ادفع ببطاقتك البنكية عبر بوابة Chargily الآمنة','c'=>'#3b82f6','active'=>Core::opt('chargily_enabled','')],
            ['i'=>'📱','n'=>'بريدي موب (BaridiMob)','d'=>'حوّل المبلغ عبر تطبيق بريدي موب — سريع وآمن','c'=>'#f59e0b','active'=>Core::opt('baridimob_enabled','')],
        ];
        ?>
<div class="dz-sc"><div class="dz-sc-card">
<h3>💳 <?php echo esc_html($atts['title']); ?></h3>
<?php foreach($methods as $m): if(!$m['active']) continue; ?>
<div style="display:flex;align-items:center;gap:14px;padding:16px;border:2px solid #f0f0f0;border-radius:14px;margin-bottom:10px;transition:.2s" onmouseover="this.style.borderColor='<?php echo $m['c']; ?>'" onmouseout="this.style.borderColor='#f0f0f0'">
<div style="font-size:36px;width:50px;text-align:center"><?php echo $m['i']; ?></div>
<div style="flex:1"><div style="font-weight:800;font-size:15px;color:<?php echo $m['c']; ?>"><?php echo esc_html($m['n']); ?></div>
<div style="font-size:13px;color:#64748b;margin-top:2px"><?php echo esc_html($m['d']); ?></div></div>
<div style="background:<?php echo $m['c']; ?>;color:#fff;padding:4px 12px;border-radius:20px;font-size:11px;font-weight:700">متاح</div>
</div>
<?php endforeach; ?>
<div style="background:#f0fdf4;border-radius:10px;padding:12px;margin-top:12px;font-size:12px;color:#166534;display:flex;align-items:center;gap:8px">
<span style="font-size:20px">🔒</span> جميع المعاملات مشفرة وآمنة — بياناتك محمية 100%
</div>
</div></div>
<?php return ob_get_clean();
    }

    // ════════════════════════════════════════════════════════════════
    //  [dzqcod_affiliate] — Affiliate program landing page
    // ════════════════════════════════════════════════════════════════
    public function sc_affiliate($atts): string {
        $atts = shortcode_atts(['commission'=>'10','title'=>'برنامج الشراكة والعمولة'], $atts);
        ob_start(); echo self::css();
        ?>
<div class="dz-sc"><div class="dz-sc-card" style="text-align:center;padding:32px">
<div style="font-size:48px;margin-bottom:12px">🤝</div>
<h3 style="font-size:24px"><?php echo esc_html($atts['title']); ?></h3>
<p style="color:#64748b;max-width:500px;margin:0 auto 24px">اربح عمولة <?php echo esc_html($atts['commission']); ?>% على كل طلب يأتي عبر رابطك الخاص. شارك الرابط مع أصدقائك واكسب!</p>
<div class="dz-sc-grid" style="grid-template-columns:repeat(3,1fr);max-width:600px;margin:0 auto 24px">
<div style="padding:16px;background:#eff6ff;border-radius:12px"><div style="font-size:28px;font-weight:900;color:#3b82f6">1</div><div style="font-size:13px;font-weight:700">سجّل مجاناً</div></div>
<div style="padding:16px;background:#fdf4ff;border-radius:12px"><div style="font-size:28px;font-weight:900;color:#a855f7">2</div><div style="font-size:13px;font-weight:700">شارك رابطك</div></div>
<div style="padding:16px;background:#f0fdf4;border-radius:12px"><div style="font-size:28px;font-weight:900;color:#10b981">3</div><div style="font-size:13px;font-weight:700">اكسب عمولة</div></div>
</div>
<?php if(is_user_logged_in()): $uid=get_current_user_id(); $ref_code=get_user_meta($uid,'dzqcod_referral_code',true);
if(!$ref_code){$ref_code='REF'.strtoupper(substr(md5($uid.time()),0,6));update_user_meta($uid,'dzqcod_referral_code',$ref_code);}
$link=add_query_arg('ref',$ref_code,home_url());
$earnings=(float)get_user_meta($uid,'dzqcod_referral_earnings',true);$count=(int)get_user_meta($uid,'dzqcod_referral_count',true); ?>
<div style="background:#f8fafc;border-radius:12px;padding:16px;margin-bottom:16px;text-align:right">
<div style="font-weight:700;margin-bottom:8px">🔗 رابطك الخاص:</div>
<div style="display:flex;gap:8px"><input type="text" value="<?php echo esc_url($link); ?>" class="dz-sc-input" style="direction:ltr;font-size:12px" id="dz-ref-link" readonly>
<button class="dz-sc-btn dz-sc-btn-p" onclick="navigator.clipboard.writeText(document.getElementById('dz-ref-link').value);this.textContent='✅'" style="padding:12px 16px;white-space:nowrap">📋 نسخ</button></div>
</div>
<div class="dz-sc-grid" style="grid-template-columns:1fr 1fr;max-width:400px;margin:0 auto">
<div style="background:#f0fdf4;border-radius:12px;padding:14px;text-align:center"><div style="font-size:24px;font-weight:900;color:#10b981"><?php echo number_format($earnings,0); ?> دج</div><div style="font-size:11px;color:#64748b">إجمالي الأرباح</div></div>
<div style="background:#eff6ff;border-radius:12px;padding:14px;text-align:center"><div style="font-size:24px;font-weight:900;color:#3b82f6"><?php echo $count; ?></div><div style="font-size:11px;color:#64748b">طلبات عبر رابطك</div></div>
</div>
<?php else: ?>
<a href="<?php echo esc_url(get_permalink(get_option('dzqcod_account_page_id'))); ?>" class="dz-sc-btn dz-sc-btn-p" style="font-size:16px;padding:14px 40px">🚀 ابدأ الآن — مجاناً</a>
<?php endif; ?>
</div></div>
<?php return ob_get_clean();
    }

    // [dzqcod_affiliate_dashboard]
    public function sc_affiliate_dashboard($atts): string {
        if(!is_user_logged_in()) return '<p style="text-align:center;padding:40px;color:#94a3b8">يجب تسجيل الدخول لعرض لوحة الشراكة</p>';
        $uid=get_current_user_id();
        $earnings=(float)get_user_meta($uid,'dzqcod_referral_earnings',true);
        $count=(int)get_user_meta($uid,'dzqcod_referral_count',true);
        $ref_code=get_user_meta($uid,'dzqcod_referral_code',true)?:'—';
        ob_start(); echo self::css();
        echo '<div class="dz-sc"><div class="dz-sc-card"><h3>📊 لوحة الشراكة</h3>';
        echo '<div class="dz-sc-grid" style="grid-template-columns:repeat(3,1fr)">';
        echo '<div style="background:#f0fdf4;border-radius:12px;padding:16px;text-align:center"><div style="font-size:11px;color:#64748b">الأرباح</div><div style="font-size:24px;font-weight:900;color:#10b981">'.number_format($earnings,0).' دج</div></div>';
        echo '<div style="background:#eff6ff;border-radius:12px;padding:16px;text-align:center"><div style="font-size:11px;color:#64748b">الإحالات</div><div style="font-size:24px;font-weight:900;color:#3b82f6">'.$count.'</div></div>';
        echo '<div style="background:#fdf4ff;border-radius:12px;padding:16px;text-align:center"><div style="font-size:11px;color:#64748b">الكود</div><div style="font-size:18px;font-weight:900;color:#a855f7">'.esc_html($ref_code).'</div></div>';
        echo '</div></div></div>';
        return ob_get_clean();
    }

    // [dzqcod_refer_friend]
    public function sc_refer_friend($atts): string {
        $atts = shortcode_atts(['discount'=>'500'], $atts);
        ob_start(); echo self::css();
        ?>
<div class="dz-sc"><div class="dz-sc-card" style="background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;text-align:center;padding:32px;border:none">
<div style="font-size:42px;margin-bottom:8px">🎁</div>
<h3 style="color:#fff;font-size:22px">ادعُ صديقك واحصل على <?php echo esc_html($atts['discount']); ?> دج!</h3>
<p style="opacity:.85;max-width:400px;margin:8px auto 20px">شارك رابط متجرنا مع أصدقائك — عند أول طلب لهم تحصل على خصم <?php echo esc_html($atts['discount']); ?> دج على طلبك القادم</p>
<?php if(is_user_logged_in()): $code=get_user_meta(get_current_user_id(),'dzqcod_referral_code',true);$link=$code?add_query_arg('ref',$code,home_url()):home_url(); ?>
<div style="background:rgba(255,255,255,.15);backdrop-filter:blur(8px);border-radius:12px;padding:14px;margin-bottom:12px">
<input type="text" value="<?php echo esc_url($link); ?>" id="dz-refer-url" readonly style="width:100%;padding:10px;border:none;background:rgba(255,255,255,.2);border-radius:8px;color:#fff;text-align:center;font-size:13px;direction:ltr">
</div>
<button class="dz-sc-btn" style="background:#fff;color:#667eea;font-size:16px;padding:14px 40px" onclick="navigator.clipboard.writeText(document.getElementById('dz-refer-url').value);this.textContent='✅ تم النسخ!'">📋 انسخ الرابط وشاركه</button>
<?php else: ?>
<a href="<?php echo esc_url(get_permalink(get_option('dzqcod_account_page_id'))); ?>" class="dz-sc-btn" style="background:#fff;color:#667eea;font-size:16px;padding:14px 40px">سجّل الآن للحصول على رابطك</a>
<?php endif; ?>
</div></div>
<?php return ob_get_clean();
    }

    // [dzqcod_loyalty_points]
    public function sc_loyalty_points($atts): string {
        $atts = shortcode_atts(['title'=>'نقاط الولاء'], $atts);
        ob_start(); echo self::css();
        $points = is_user_logged_in() ? (int)get_user_meta(get_current_user_id(),'dzqcod_loyalty_points',true) : 0;
        ?>
<div class="dz-sc"><div class="dz-sc-card" style="text-align:center">
<div style="font-size:42px;margin-bottom:8px">🏆</div>
<h3><?php echo esc_html($atts['title']); ?></h3>
<?php if(is_user_logged_in()): ?>
<div style="font-size:48px;font-weight:900;background:linear-gradient(135deg,#f59e0b,#ef4444);-webkit-background-clip:text;-webkit-text-fill-color:transparent"><?php echo $points; ?></div>
<div style="color:#64748b;margin-bottom:16px">نقطة متاحة</div>
<div style="background:#f8fafc;border-radius:12px;padding:14px;font-size:13px;text-align:right">
<div style="margin-bottom:6px">✅ اكسب <strong>1 نقطة</strong> لكل <strong>100 دج</strong> تشتريها</div>
<div style="margin-bottom:6px">✅ استبدل <strong>100 نقطة</strong> بخصم <strong>500 دج</strong></div>
<div>✅ النقاط <strong>لا تنتهي</strong> صلاحيتها</div>
</div>
<?php else: ?>
<p style="color:#64748b;margin-bottom:16px">سجّل الدخول لرؤية نقاطك</p>
<div style="background:#f8fafc;border-radius:12px;padding:14px;font-size:13px;text-align:right">
<div style="margin-bottom:6px">🛒 اشترِ واكسب نقاط تلقائياً</div>
<div style="margin-bottom:6px">💰 استبدل نقاطك بخصومات حقيقية</div>
<div>🎁 مكافآت خاصة للأعضاء المميزين</div></div>
<?php endif; ?>
</div></div>
<?php return ob_get_clean();
    }

    // [dzqcod_flash_sale]
    public function sc_flash_sale($atts): string {
        $atts = shortcode_atts(['hours'=>'24','title'=>'عرض خاص — لفترة محدودة!','bg'=>'#ef4444'], $atts);
        ob_start(); echo self::css();
        ?>
<div class="dz-sc"><div style="background:<?php echo esc_attr($atts['bg']); ?>;color:#fff;border-radius:16px;padding:24px;text-align:center;position:relative;overflow:hidden">
<div style="position:absolute;top:-20px;right:-20px;width:100px;height:100px;background:rgba(255,255,255,.1);border-radius:50%"></div>
<div style="font-size:36px;margin-bottom:8px">⚡</div>
<h3 style="color:#fff;font-size:22px"><?php echo esc_html($atts['title']); ?></h3>
<div style="font-size:14px;opacity:.9;margin-bottom:16px">ينتهي خلال:</div>
<div id="dz-flash-timer" style="display:flex;justify-content:center;gap:10px;margin-bottom:16px">
<div style="background:rgba(0,0,0,.2);border-radius:10px;padding:10px 16px;min-width:60px"><div id="dz-fl-h" style="font-size:28px;font-weight:900">00</div><div style="font-size:10px;opacity:.8">ساعة</div></div>
<div style="background:rgba(0,0,0,.2);border-radius:10px;padding:10px 16px;min-width:60px"><div id="dz-fl-m" style="font-size:28px;font-weight:900">00</div><div style="font-size:10px;opacity:.8">دقيقة</div></div>
<div style="background:rgba(0,0,0,.2);border-radius:10px;padding:10px 16px;min-width:60px"><div id="dz-fl-s" style="font-size:28px;font-weight:900">00</div><div style="font-size:10px;opacity:.8">ثانية</div></div>
</div>
<a href="<?php echo esc_url(get_permalink(wc_get_page_id('shop'))); ?>" class="dz-sc-btn" style="background:#fff;color:<?php echo esc_attr($atts['bg']); ?>;font-size:16px;padding:14px 40px">🛒 تسوّق الآن</a>
</div></div>
<script>
(function(){var end=Date.now()+<?php echo (int)$atts['hours']; ?>*3600000;function tick(){var d=Math.max(0,end-Date.now()),h=Math.floor(d/3600000),m=Math.floor(d%3600000/60000),s=Math.floor(d%60000/1000);document.getElementById('dz-fl-h').textContent=String(h).padStart(2,'0');document.getElementById('dz-fl-m').textContent=String(m).padStart(2,'0');document.getElementById('dz-fl-s').textContent=String(s).padStart(2,'0');if(d>0)requestAnimationFrame(tick)}tick()})();
</script>
<?php return ob_get_clean();
    }

    // [dzqcod_trust_badges]
    public function sc_trust_badges($atts): string {
        ob_start(); echo self::css();
        $badges = [['🚚','توصيل سريع','24-72 ساعة لكل الولايات'],['💵','الدفع عند الاستلام','ادفع عند استلام طلبك'],['🔄','إرجاع مجاني','خلال 7 أيام'],['🔒','دفع آمن','بياناتك محمية 100%'],['📞','خدمة عملاء','متاحين يومياً'],['✅','ضمان الجودة','منتجات أصلية 100%']];
        echo '<div class="dz-sc"><div class="dz-sc-grid" style="grid-template-columns:repeat(3,1fr)">';
        foreach($badges as $b) echo '<div style="text-align:center;padding:16px;background:#fff;border-radius:12px;border:1px solid #f0f0f0"><div style="font-size:28px;margin-bottom:6px">'.$b[0].'</div><div style="font-weight:800;font-size:13px">'.$b[1].'</div><div style="font-size:11px;color:#94a3b8">'.$b[2].'</div></div>';
        echo '</div></div>';
        return ob_get_clean();
    }

    // [dzqcod_faq]
    public function sc_faq($atts): string {
        $atts = shortcode_atts(['title'=>'الأسئلة الشائعة'], $atts);
        $faqs = [
            ['q'=>'كيف أطلب؟','a'=>'اختر المنتج → املأ النموذج (الاسم، الهاتف، الولاية) → اضغط "اطلب الآن". سنتصل بك لتأكيد الطلب.'],
            ['q'=>'كم مدة التوصيل؟','a'=>'24 إلى 72 ساعة حسب ولايتك. نوفر توصيل للمنزل وStop Desk.'],
            ['q'=>'هل يمكنني الدفع عند الاستلام؟','a'=>'نعم! الدفع عند الاستلام (COD) متاح لكل الولايات.'],
            ['q'=>'كيف أتتبع طلبي؟','a'=>'بعد الشحن ستصلك رسالة برقم التتبع. يمكنك تتبعه من صفحة حسابك.'],
            ['q'=>'هل يمكنني إرجاع المنتج؟','a'=>'نعم، يمكنك الإرجاع خلال 7 أيام من الاستلام إذا كان المنتج غير مستعمل.'],
            ['q'=>'هل بياناتي آمنة؟','a'=>'نعم. نستخدم تشفير SSL ولا نشارك بياناتك مع أي طرف ثالث.'],
        ];
        ob_start(); echo self::css();
        echo '<div class="dz-sc"><div class="dz-sc-card"><h3>❓ '.esc_html($atts['title']).'</h3>';
        foreach($faqs as $i=>$f) echo '<details style="border:1px solid #f0f0f0;border-radius:10px;margin-bottom:8px;overflow:hidden"><summary style="padding:14px 16px;font-weight:700;font-size:14px;cursor:pointer;background:#fafbfc;list-style:none;display:flex;justify-content:space-between;align-items:center">'.esc_html($f['q']).'<span style="color:#667eea;font-size:18px">+</span></summary><div style="padding:12px 16px;font-size:13px;color:#475569;border-top:1px solid #f0f0f0">'.esc_html($f['a']).'</div></details>';
        echo '</div></div>';
        return ob_get_clean();
    }

    // [dzqcod_delivery_calculator]
    public function sc_delivery_calculator($atts): string { return $this->sc_delivery_info($atts); }

    // [dzqcod_countdown]
    public function sc_countdown($atts): string { return $this->sc_flash_sale($atts); }

    // [dzqcod_store_info]
    public function sc_store_info($atts): string {
        ob_start(); echo self::css();
        $name=get_bloginfo('name');$phone=Core::opt('store_phone','');$email=Core::opt('store_email',get_option('admin_email'));$addr=Core::opt('store_address','');
        echo '<div class="dz-sc"><div class="dz-sc-card"><h3>🏪 '.esc_html($name).'</h3>';
        echo '<div class="dz-sc-grid" style="grid-template-columns:1fr 1fr">';
        if($phone) echo '<div style="display:flex;align-items:center;gap:10px"><span style="font-size:24px">📞</span><div><div style="font-size:11px;color:#64748b">الهاتف</div><div style="font-weight:700">'.esc_html($phone).'</div></div></div>';
        if($email) echo '<div style="display:flex;align-items:center;gap:10px"><span style="font-size:24px">📧</span><div><div style="font-size:11px;color:#64748b">البريد</div><div style="font-weight:700">'.esc_html($email).'</div></div></div>';
        if($addr) echo '<div style="display:flex;align-items:center;gap:10px;grid-column:span 2"><span style="font-size:24px">📍</span><div><div style="font-size:11px;color:#64748b">العنوان</div><div style="font-weight:700">'.esc_html($addr).'</div></div></div>';
        echo '</div></div></div>';
        return ob_get_clean();
    }

    // [dzqcod_whatsapp_button]
    public function sc_whatsapp_button($atts): string {
        $atts = shortcode_atts(['phone'=>Core::opt('wa_phone',''),'text'=>'مرحباً، أريد الاستفسار عن منتجاتكم','label'=>'تواصل معنا عبر واتساب','float'=>'no'], $atts);
        if(!$atts['phone']) return '';
        $url = 'https://wa.me/'.preg_replace('/[^0-9]/','',$atts['phone']).'?text='.urlencode($atts['text']);
        $style = $atts['float']==='yes' ? 'position:fixed;bottom:24px;right:24px;z-index:999' : '';
        return '<a href="'.esc_url($url).'" target="_blank" class="dz-sc-btn dz-sc-btn-w" style="font-size:16px;padding:14px 32px;display:inline-flex;align-items:center;gap:10px;border-radius:50px;'.esc_attr($style).'"><span style="font-size:24px">💬</span> '.esc_html($atts['label']).'</a>';
    }

    // [dzqcod_callback_form]
    public function sc_callback_form($atts): string {
        $atts = shortcode_atts(['title'=>'اطلب مكالمة — نتصل بك!'], $atts);
        $nonce = wp_create_nonce('dzqcod_public');
        ob_start(); echo self::css();
        ?>
<div class="dz-sc"><div class="dz-sc-card">
<h3>📞 <?php echo esc_html($atts['title']); ?></h3>
<p style="color:#64748b;font-size:13px;margin-bottom:14px">اترك رقمك وسنتصل بك خلال دقائق</p>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px">
<input type="text" class="dz-sc-input" id="dz-cb-name" placeholder="الاسم">
<input type="tel" class="dz-sc-input" id="dz-cb-phone" placeholder="رقم الهاتف" dir="ltr">
</div>
<textarea class="dz-sc-input" id="dz-cb-msg" rows="2" placeholder="رسالتك (اختياري)" style="margin-bottom:10px"></textarea>
<button class="dz-sc-btn dz-sc-btn-p" style="width:100%" onclick="dzSubmitCB()">📞 اطلب مكالمة الآن</button>
<div id="dz-cb-result" style="margin-top:8px;text-align:center;font-size:13px"></div>
</div></div>
<script>
function dzSubmitCB(){var n=document.getElementById('dz-cb-name').value,p=document.getElementById('dz-cb-phone').value;
if(!n||!p){document.getElementById('dz-cb-result').innerHTML='<span style="color:#ef4444">أدخل الاسم والهاتف</span>';return}
document.getElementById('dz-cb-result').innerHTML='<span style="color:#667eea">⏳ جاري الإرسال...</span>';
var fd=new FormData();fd.append('action','dzqcod_submit_callback');fd.append('name',n);fd.append('phone',p);fd.append('msg',document.getElementById('dz-cb-msg').value);fd.append('nonce','<?php echo esc_attr($nonce); ?>');
fetch('<?php echo admin_url("admin-ajax.php"); ?>',{method:'POST',body:fd}).then(r=>r.json()).then(d=>{
document.getElementById('dz-cb-result').innerHTML=d.success?'<span style="color:#10b981">✅ تم! سنتصل بك قريباً</span>':'<span style="color:#ef4444">❌ خطأ</span>'})}
</script>
<?php return ob_get_clean();
    }

    // [dzqcod_order_status]
    public function sc_order_status($atts): string {
        $atts = shortcode_atts(['title'=>'استعلم عن حالة طلبك'], $atts);
        $nonce = wp_create_nonce('dzqcod_public');
        ob_start(); echo self::css();
        ?>
<div class="dz-sc"><div class="dz-sc-card">
<h3>📋 <?php echo esc_html($atts['title']); ?></h3>
<div style="display:flex;gap:8px;margin-bottom:12px">
<input type="text" class="dz-sc-input" id="dz-os-num" placeholder="رقم الطلب أو رقم الهاتف" dir="ltr" style="flex:1">
<button class="dz-sc-btn dz-sc-btn-p" onclick="dzCheckStatus()" style="padding:12px 20px">بحث</button>
</div><div id="dz-os-result"></div>
</div></div>
<script>
function dzCheckStatus(){var q=document.getElementById('dz-os-num').value;if(!q)return;
document.getElementById('dz-os-result').innerHTML='<div style="text-align:center;padding:16px;color:#667eea">⏳ جاري البحث...</div>';
var fd=new FormData();fd.append('action','dzqcod_check_order_status');fd.append('query',q);fd.append('nonce','<?php echo esc_attr($nonce); ?>');
fetch('<?php echo admin_url("admin-ajax.php"); ?>',{method:'POST',body:fd}).then(r=>r.json()).then(d=>{
if(d.success&&d.data.orders.length){var h='';d.data.orders.forEach(function(o){h+='<div style="border:1px solid #e2e8f0;border-radius:12px;padding:14px;margin-bottom:8px"><div style="display:flex;justify-content:space-between;align-items:center"><span style="font-weight:900">#'+o.id+'</span><span style="background:'+o.color+';color:#fff;padding:3px 12px;border-radius:8px;font-size:11px;font-weight:700">'+o.status+'</span></div><div style="font-size:13px;font-weight:800;color:#10b981;margin-top:6px">'+o.total+' دج</div></div>'});
document.getElementById('dz-os-result').innerHTML=h}else document.getElementById('dz-os-result').innerHTML='<div style="text-align:center;padding:16px;color:#94a3b8">لم نجد طلبات مطابقة</div>'})}
</script>
<?php return ob_get_clean();
    }

    // [dzqcod_testimonials]
    public function sc_testimonials($atts): string {
        $atts = shortcode_atts(['count'=>'6','title'=>'ماذا يقول عملاؤنا'], $atts);
        ob_start(); echo self::css();
        global $wpdb; $reviews=$wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}dz_reviews WHERE rating>=4 ORDER BY id DESC LIMIT %d",(int)$atts['count']),ARRAY_A);
        echo '<div class="dz-sc"><h3 style="text-align:center;font-size:20px;margin-bottom:16px">⭐ '.esc_html($atts['title']).'</h3>';
        if(empty($reviews)){echo '<p style="text-align:center;color:#94a3b8">لا توجد تقييمات بعد</p>';}
        else{echo '<div class="dz-sc-grid" style="grid-template-columns:repeat(3,1fr)">';
        foreach($reviews as $r){echo '<div class="dz-sc-card" style="margin:0"><div style="color:#f59e0b;margin-bottom:6px">'.str_repeat('⭐',(int)$r['rating']).'</div><p style="font-size:13px;color:#475569;margin-bottom:8px">"'.esc_html(mb_substr($r['comment']??'',0,120)).'"</p><div style="font-size:12px;font-weight:700;color:#667eea">'.esc_html($r['customer_name']??'زبون').'</div></div>';}
        echo '</div>';}
        echo '</div>';
        return ob_get_clean();
    }

    // [dzqcod_products_grid] [dzqcod_bestsellers] [dzqcod_new_arrivals]
    public function sc_products_grid($atts): string { return $this->render_products($atts,'date'); }
    public function sc_bestsellers($atts): string { return $this->render_products(array_merge($atts??[],['title'=>'الأكثر مبيعاً']),'popularity'); }
    public function sc_new_arrivals($atts): string { return $this->render_products(array_merge($atts??[],['title'=>'وصل حديثاً']),'date'); }
    public function sc_category_showcase($atts): string { return $this->render_products($atts,'date'); }

    private function render_products($atts,$orderby): string {
        $atts = shortcode_atts(['count'=>'8','title'=>'منتجاتنا','cols'=>'4','cat'=>''], $atts??[]);
        $args = ['status'=>'publish','limit'=>(int)$atts['count'],'orderby'=>$orderby,'order'=>'DESC'];
        if($atts['cat']) $args['category'] = [$atts['cat']];
        $products = wc_get_products($args);
        if(empty($products)) return '';
        $sym = Core::opt('currency_symbol','دج');
        ob_start(); echo self::css();
        echo '<div class="dz-sc"><h3 style="text-align:center;font-size:20px;margin-bottom:16px">🛍️ '.esc_html($atts['title']).'</h3>';
        echo '<div class="dz-sc-grid" style="grid-template-columns:repeat('.esc_attr($atts['cols']).',1fr)">';
        foreach($products as $p){
            $img = wp_get_attachment_url($p->get_image_id())?:'';$sale=$p->is_on_sale();
            echo '<a href="'.esc_url(get_permalink($p->get_id())).'" style="text-decoration:none;color:inherit"><div class="dz-sc-card" style="margin:0;padding:0;overflow:hidden;transition:.3s" onmouseover="this.style.transform=\'translateY(-4px)\'" onmouseout="this.style.transform=\'none\'">';
            if($img) echo '<div style="position:relative"><img src="'.esc_url($img).'" style="width:100%;aspect-ratio:1;object-fit:cover" loading="lazy">'.($sale?'<span style="position:absolute;top:8px;right:8px;background:#ef4444;color:#fff;padding:2px 10px;border-radius:8px;font-size:11px;font-weight:700">تخفيض</span>':'').'</div>';
            echo '<div style="padding:12px"><div style="font-weight:700;font-size:13px;margin-bottom:4px">'.esc_html($p->get_name()).'</div>';
            if($sale) echo '<span style="text-decoration:line-through;color:#94a3b8;font-size:12px">'.number_format((float)$p->get_regular_price(),0).'</span> ';
            echo '<span style="font-weight:900;color:#10b981;font-size:16px">'.number_format((float)$p->get_price(),0).' '.esc_html($sym).'</span>';
            echo '</div></div></a>';
        }
        echo '</div></div>';
        return ob_get_clean();
    }

    // [dzqcod_store_stats]
    public function sc_store_stats($atts): string {
        ob_start(); echo self::css();
        $customers = (int)get_user_count(); $products = (int)wp_count_posts('product')->publish;
        $orders = function_exists('wc_orders_count') ? (int)wc_orders_count('wc-completed')+(int)wc_orders_count('wc-delivered') : 0;
        echo '<div class="dz-sc"><div class="dz-sc-grid" style="grid-template-columns:repeat(4,1fr)">';
        $stats = [['🛒',$orders.'+',' طلب مكتمل'],['👥',$customers.'+',' عميل سعيد'],['📦',$products,' منتج متاح'],['⭐','4.8','تقييم العملاء']];
        foreach($stats as $s) echo '<div style="text-align:center;padding:20px;background:#fff;border-radius:14px;border:1px solid #f0f0f0"><div style="font-size:28px;margin-bottom:4px">'.$s[0].'</div><div style="font-size:28px;font-weight:900;color:#667eea">'.$s[1].'</div><div style="font-size:12px;color:#94a3b8">'.$s[2].'</div></div>';
        echo '</div></div>';
        return ob_get_clean();
    }

    // [dzqcod_size_guide]
    public function sc_size_guide($atts): string {
        ob_start(); echo self::css();
        echo '<div class="dz-sc"><div class="dz-sc-card"><h3>📐 دليل المقاسات</h3>';
        echo '<div style="overflow-x:auto"><table style="width:100%;border-collapse:collapse;font-size:13px;text-align:center"><thead><tr style="background:#f8fafc">';
        echo '<th style="padding:10px;border:1px solid #e2e8f0;font-weight:700">المقاس</th><th style="padding:10px;border:1px solid #e2e8f0">الصدر (سم)</th><th style="padding:10px;border:1px solid #e2e8f0">الخصر (سم)</th><th style="padding:10px;border:1px solid #e2e8f0">الطول (سم)</th></tr></thead><tbody>';
        $sizes = [['S','86-91','71-76','165-170'],['M','91-97','76-81','170-175'],['L','97-102','81-86','175-180'],['XL','102-107','86-91','180-185'],['XXL','107-112','91-97','185-190']];
        foreach($sizes as $s) echo '<tr><td style="padding:8px;border:1px solid #e2e8f0;font-weight:800;color:#667eea">'.$s[0].'</td><td style="padding:8px;border:1px solid #e2e8f0">'.$s[1].'</td><td style="padding:8px;border:1px solid #e2e8f0">'.$s[2].'</td><td style="padding:8px;border:1px solid #e2e8f0">'.$s[3].'</td></tr>';
        echo '</tbody></table></div></div></div>';
        return ob_get_clean();
    }

    // [dzqcod_order_form] — alias for the main form
    public function sc_order_form($atts): string {
        $pid = shortcode_atts(['product_id'=>''], $atts)['product_id'];
        if($pid) return do_shortcode('[product_page id="'.(int)$pid.'"]');
        return '<p style="text-align:center;color:#94a3b8">أضف product_id: [dzqcod_order_form product_id="123"]</p>';
    }

    // ════════════════════════════════════════════════════════════════
    //  AJAX HANDLERS
    // ════════════════════════════════════════════════════════════════
    public function dzqcod_calc_shipping(): void {
        $wid = absint($_POST['wilaya_id'] ?? 0);
        if (!$wid) wp_send_json_error();
        global $wpdb;
        $fees = $wpdb->get_row($wpdb->prepare("SELECT shipping_home as home_fee, shipping_desk as desk_fee FROM {$wpdb->prefix}dz_wilayas WHERE id=%d", $wid));
        if ($fees) wp_send_json_success(['home'=>(int)$fees->home_fee,'desk'=>(int)$fees->desk_fee]);
        // Fallback: try shipping provider
        $provider = Core::opt('shipping_provider','yalidine');
        if (class_exists('\\DZQCOD\\Shipping')) {
            $ship = new Shipping();
            $rates = $ship->get_rates($provider);
            foreach ($rates as $r) {
                if ((int)($r['wilaya_id'] ?? 0) === $wid) {
                    wp_send_json_success(['home'=>(int)($r['tarif_home']??0),'desk'=>(int)($r['tarif_desk']??0)]);
                }
            }
        }
        wp_send_json_success(['home'=>400,'desk'=>250]); // Default fallback
    }

    public function dzqcod_check_order_status(): void {
        if (!check_ajax_referer('dzqcod_public', 'nonce', false)) wp_send_json_error(['message' => 'جلسة منتهية']);
        $q = sanitize_text_field($_POST['query'] ?? '');
        if (!$q || strlen($q) < 4) wp_send_json_error();
        // Rate limit: 15 checks per IP per hour
        $ip = sanitize_text_field($_SERVER['REMOTE_ADDR'] ?? '');
        $rk = 'dzqcod_ostatus_' . md5($ip);
        $cnt = (int)get_transient($rk);
        if ($cnt >= 15) wp_send_json_error(['message' => 'حاول لاحقاً']);
        set_transient($rk, $cnt + 1, HOUR_IN_SECONDS);
        $sym = Core::opt('currency_symbol','دج');
        $orders = [];
        if (is_numeric($q)) {
            $o = wc_get_order((int)$q);
            if ($o) $orders[] = $o;
        }
        if (empty($orders)) {
            $orders = wc_get_orders(['billing_phone'=>$q,'limit'=>3,'orderby'=>'date','order'=>'DESC']);
        }
        $result = [];
        foreach ($orders as $o) {
            $ost = str_replace('wc-','',$o->get_status());
            $ws = Core::ST[$ost] ?? ['l'=>$ost,'c'=>'#64748b','i'=>'📋'];
            // Privacy: show only status + total, NO items detail, NO tracking number
            $result[] = ['id'=>$o->get_id(),'status'=>$ws['i'].' '.$ws['l'],'color'=>$ws['c'],'total'=>number_format((float)$o->get_total(),0)];
        }
        wp_send_json_success(['orders'=>$result]);
    }

    public function dzqcod_submit_callback(): void {
        $name = sanitize_text_field($_POST['name'] ?? '');
        $phone = sanitize_text_field($_POST['phone'] ?? '');
        $msg = sanitize_textarea_field($_POST['msg'] ?? '');
        if (!$name || !$phone) wp_send_json_error();
        // Create a WC order as callback request
        $order = wc_create_order(['status'=>'wc-pending-call']);
        $order->set_billing_first_name($name);
        $order->set_billing_phone($phone);
        $order->add_order_note('📞 طلب معاودة اتصال: '.$msg);
        $order->save();
        // Notify via Telegram
        if (class_exists('\\DZQCOD\\TelegramBot')) TelegramBot::send("📞 طلب مكالمة جديد\n👤 {$name}\n📱 {$phone}\n💬 {$msg}");
        wp_send_json_success();
    }

    public function dzqcod_apply_referral(): void { wp_send_json_success(); }
    public function dzqcod_get_loyalty(): void {
        $points = is_user_logged_in() ? (int)get_user_meta(get_current_user_id(),'dzqcod_loyalty_points',true) : 0;
        wp_send_json_success(['points'=>$points]);
    }

    // ════════════════════════════════════════════════════════════════
    //  WIDGETS
    // ════════════════════════════════════════════════════════════════
    public function register_widgets(): void {
        register_widget('\\DZQCOD\\Widget_WhatsApp');
        register_widget('\\DZQCOD\\Widget_Trust');
        register_widget('\\DZQCOD\\Widget_FlashSale');
        register_widget('\\DZQCOD\\Widget_Tracking');
        register_widget('\\DZQCOD\\Widget_Callback');
        register_widget('\\DZQCOD\\Widget_Loyalty');
        register_widget('\\DZQCOD\\Widget_Stats');
        register_widget('\\DZQCOD\\Widget_Bestsellers');
    }
}

// ═══════════════════════════════════════════════════════════
//  WIDGET CLASSES
// ═══════════════════════════════════════════════════════════
class Widget_WhatsApp extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_whatsapp','DZQCOD: زر واتساب',['description'=>'زر واتساب عائم']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_whatsapp_button phone="'.esc_attr($i['phone']??'').'" float="yes"]');echo $args['after_widget'];}
    public function form($i){echo '<p><label>رقم واتساب:</label><input class="widefat" name="'.$this->get_field_name('phone').'" value="'.esc_attr($i['phone']??'').'"></p>';}
    public function update($new,$old){return['phone'=>sanitize_text_field($new['phone']??'')];}
}
class Widget_Trust extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_trust','DZQCOD: شارات الثقة',['description'=>'شارات توصيل + دفع + ضمان']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_trust_badges]');echo $args['after_widget'];}
    public function form($i){echo '<p>يعرض 6 شارات ثقة تلقائياً</p>';}
    public function update($new,$old){return $new;}
}
class Widget_FlashSale extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_flash','DZQCOD: عرض خاص + عدّاد',['description'=>'بانر عرض مع عدّاد تنازلي']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_flash_sale hours="'.esc_attr($i['hours']??'24').'" title="'.esc_attr($i['title']??'عرض خاص!').'"]');echo $args['after_widget'];}
    public function form($i){echo '<p><label>العنوان:</label><input class="widefat" name="'.$this->get_field_name('title').'" value="'.esc_attr($i['title']??'عرض خاص!').'"></p><p><label>المدة (ساعات):</label><input class="widefat" name="'.$this->get_field_name('hours').'" value="'.esc_attr($i['hours']??'24').'"></p>';}
    public function update($new,$old){return['title'=>sanitize_text_field($new['title']??''),'hours'=>(int)($new['hours']??24)];}
}
class Widget_Tracking extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_tracking_w','DZQCOD: تتبع الطلب',['description'=>'نموذج تتبع سريع']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_tracking]');echo $args['after_widget'];}
    public function form($i){echo '<p>يعرض نموذج تتبع الطلب</p>';}
    public function update($new,$old){return $new;}
}
class Widget_Callback extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_callback_w','DZQCOD: اطلب مكالمة',['description'=>'نموذج طلب معاودة اتصال']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_callback_form]');echo $args['after_widget'];}
    public function form($i){echo '<p>يعرض نموذج طلب مكالمة</p>';}
    public function update($new,$old){return $new;}
}
class Widget_Loyalty extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_loyalty_w','DZQCOD: نقاط الولاء',['description'=>'عرض نقاط العميل']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_loyalty_points]');echo $args['after_widget'];}
    public function form($i){echo '<p>يعرض نقاط ولاء العميل</p>';}
    public function update($new,$old){return $new;}
}
class Widget_Stats extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_stats_w','DZQCOD: إحصائيات المتجر',['description'=>'عدد الطلبات والعملاء والمنتجات']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_store_stats]');echo $args['after_widget'];}
    public function form($i){echo '<p>يعرض إحصائيات المتجر</p>';}
    public function update($new,$old){return $new;}
}
class Widget_Bestsellers extends \WP_Widget {
    public function __construct(){parent::__construct('dzqcod_best_w','DZQCOD: الأكثر مبيعاً',['description'=>'شبكة المنتجات الأكثر مبيعاً']);}
    public function widget($args,$i){echo $args['before_widget'];echo do_shortcode('[dzqcod_bestsellers count="'.esc_attr($i['count']??'4').'" cols="2"]');echo $args['after_widget'];}
    public function form($i){echo '<p><label>العدد:</label><input class="widefat" name="'.$this->get_field_name('count').'" value="'.esc_attr($i['count']??'4').'"></p>';}
    public function update($new,$old){return['count'=>(int)($new['count']??4)];}
}

