{"id":6413,"date":"2026-06-20T11:19:35","date_gmt":"2026-06-20T07:49:35","guid":{"rendered":"https:\/\/mantissa.ir\/easy-installer\/?page_id=6413"},"modified":"2026-07-07T12:34:03","modified_gmt":"2026-07-07T09:04:03","slug":"landing","status":"publish","type":"page","link":"https:\/\/mantissa.ir\/easy-installer\/landing\/","title":{"rendered":"\u0644\u0646\u062f\u06cc\u0646\u06af \u0641\u0631\u0648\u0634 \u0628\u0627 \u0648\u06cc\u062c\u062a \u062e\u0631\u06cc\u062f \u0633\u0631\u06cc\u0639"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6413\" class=\"elementor elementor-6413\">\n\t\t\t\t<div class=\"elementor-element elementor-element-85a24ec e-con-full e-flex e-con e-parent\" data-id=\"85a24ec\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90397f5 elementor-widget elementor-widget-quick_purchase\" data-id=\"90397f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"quick_purchase.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n            #mainContent-90397f5,\r\n            #stickyHeader-90397f5 {\r\n                max-width: 40rem !important;\r\n            }\r\n        <\/style>\r\n        <div class=\"container-main no-scrollbar\" id=\"mainContent-90397f5\"\r\n            data-widget-id=\"90397f5\" data-ajax-url=\"https:\/\/mantissa.ir\/easy-installer\/wp-admin\/admin-ajax.php\"\r\n            data-nonce=\"908981e733\" data-has-timer=\"1\"\r\n            data-timer-key=\"qp_timer_194_1790022599\"\r\n            data-story-duration=\"10000\"\r\n            data-sms-settings='{\"otp_enable\":true,\"widget_instance_id\":\"90397f5\",\"code_length\":5,\"expiry_minutes\":2,\"max_attempts\":5,\"max_send_attempts\":3,\"send_cooldown_minutes\":10,\"attempt_lock_minutes\":15}'>\r\n            <div class=\"sticky-header\" id=\"stickyHeader-90397f5\">\r\n                <div class=\"sticky-header-content\">\r\n                    <div class=\"sticky-grid\">\r\n                        <div class=\"sticky-card\">\r\n                            <div class=\"sticky-label\" style=\"color:#64748b;\">\r\n                                \u0638\u0631\u0641\u06cc\u062a \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647                            <\/div>\r\n                            <div class=\"sticky-value\">199 \u0646\u0641\u0631<\/div>\r\n                        <\/div>\r\n                        <div class=\"sticky-card\">\r\n                                                            <div class=\"sticky-label\" style=\"color:#64748b;\">\r\n                                    \u0645\u0647\u0644\u062a \u062a\u062e\u0641\u06cc\u0641 \u0648\u06cc\u0698\u0647                                <\/div>\r\n                                <div class=\"sticky-value\" id=\"timerSticky-90397f5\">\u06f0\u06f0:\u06f0\u06f0:\u06f0\u06f0<\/div>\r\n                                                    <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n                            <div class=\"hero-section\" id=\"heroSection-90397f5\">\r\n                                            <div class=\"hero-header\">\r\n                                                            <div class=\"logo-container\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/2025\/08\/logo_hortash.webp\" class=\"logo-img\" style=\"width: 65px; height: auto;\">\r\n                                <\/div>\r\n                            \r\n                                                            <a href=\"https:\/\/mihanjs.com\/hortash-theme\/\" class=\"login-btn\">\r\n                                    \u067e\u06cc\u0634\u0646\u0645\u0627\u06cc\u0634 \u0642\u0627\u0644\u0628 \u0647\u0648\u0631\u062a\u0627\u0634                                <\/a>\r\n                                                    <\/div>\r\n                    \r\n                    <div class=\"hero_description_container\">\r\n                        <h1 class=\"hero-title\">\u0628\u0627 \u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634\u0640\u0640\u06cc <strong style=\"color:#d69a16;\">\u0646\u0627\u0628\u063a\u0640\u0640\u0640\u0640\u0647 PHP<\/strong><\/h1> <h2 class=\"hero-subtitle\">\u0635\u0641\u0631 \u062a\u0627 \u0635\u062f <strong style=\"color:#d69a16;\">PHP<\/strong> \u0631\u0648 \u0628\u0627\u0632\u0627\u0631\u06a9\u0627\u0631\u06cc \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631<\/h2>                        <p class=\"hero-desc\">\u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634 PHP \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u0645\u0639 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u0646\u062f \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0628\u0627 \u0632\u0628\u0627\u0646 PHP \u0628\u0647 \u0633\u0637\u062d \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0631\u0633\u0627\u0646\u0646\u062f \u0648 \u0648\u0627\u0631\u062f \u0628\u0627\u0632\u0627\u0631\u06a9\u0627\u0631 \u0634\u0648\u0646\u062f.<\/p>\r\n                    <\/div>\r\n\r\n                                            <div class=\"video-player-container\" id=\"videoPlayerContainer-90397f5\">\r\n                            <video id=\"promoVideo-90397f5\" src=\"https:\/\/roshanwp.ir\/wp-content\/uploads\/2026\/02\/demo2.mp4\" preload=\"none\" playsinline controls  poster=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/4-2.webp\"><\/video>\r\n                        <\/div>\r\n                    \r\n                                    <\/div>\r\n                        <div class=\"plans-section\" id=\"plans-90397f5\">\r\n                <div id=\"plans-start-sentinel-90397f5\"><\/div>\r\n                <div style=\"display:flex;flex-direction:column;gap:1.5rem;\">\r\n                    <div class=\"plan-card\" \r\n    data-plan-id=\"194\"\r\n    data-plan-stock=\"199 \u0646\u0641\u0631\"\r\n    data-plan-is-free=\"0\"\r\n    data-plan-price=\"1,500,000\"\r\n    data-plan-regular-price=\"5,000,000\"\r\n    data-plan-sale-end=\"1790022599\"\r\n    data-plan-currency=\"\u062a\u0648\u0645\u0627\u0646\"><div class=\"plan-recommended\"><div class=\"plan-badge\"><span style=\"color:#ffffff;\">\u067e\u0631\u0637\u0631\u0641\u062f\u0627\u0631\u062a\u0631\u06cc\u0646<\/span><\/div><div class=\"plan-inner\"><div style=\"min-width:0;text-align:right;\"><div class=\"plan-header\"><div><h3 class=\"plan-name\" style=\"color:#0f172a;\">\u0622\u0645\u0648\u0632\u0634 \u062c\u0627\u0645\u0639 PHP \u0627\u0632 \u0635\u0641\u0631 + \u067e\u0631\u0648\u0698\u0647 \u0645\u062d\u0648\u0631<\/h3><\/div><div class=\"plan-tags\"><div class=\"plan-tag-recommended\">\u0627\u0634\u062a\u0631\u0627\u06a9 \u062a\u0648\u0635\u06cc\u0647 \u0634\u062f\u0647<\/div><div class=\"plan-tag-discount\"><span class=\"discount-amount\">70\u066a<\/span> <span class=\"discount-label\">\u062a\u062e\u0641\u06cc\u0641<\/span><\/div><\/div><\/div><div class=\"plan-price-section\"><div style=\"text-align:left;\"><div class=\"plan-old-price\"><span class=\"price-number\">5,000,000<\/span> <span class=\"price-currency\">\u062a\u0648\u0645\u0627\u0646<\/span><\/div><div class=\"plan-final-price\" style=\"\"><span class=\"price-number\">1,500,000<\/span> <span class=\"price-currency\">\u062a\u0648\u0645\u0627\u0646<\/span><\/div><\/div><\/div><div class=\"plan-features\"><div class=\"plan-feature-item\"><i class=\"icon-active plan-feature-icon\"><\/i><span style=\"flex:1;text-align:right;\">\u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc \u0635\u0641\u0631 \u062a\u0627 \u0635\u062f \u0646\u0627\u0628\u063a\u0647 <\/span><\/div><div class=\"plan-feature-item\"><i class=\"icon-active plan-feature-icon\"><\/i><span style=\"flex:1;text-align:right;\">3 \u0645\u0627\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0622\u0645\u0648\u0632\u0634\u06cc<\/span><\/div><div class=\"plan-feature-item\"><i class=\"icon-active plan-feature-icon\"><\/i><span style=\"flex:1;text-align:right;\">3 \u0645\u0627\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u062f\u0633\u062a\u06cc\u0627\u0631 \u0633\u06cc\u06af\u0646\u0627\u0644 \u0646\u0627\u0628\u063a\u0647<\/span><\/div><\/div><button class=\"btn-primary btn-gold purchase-trigger\" style=\"background:#d69a16 !important; color:#ffffff !important;\" data-plan-name=\"\u0622\u0645\u0648\u0632\u0634 \u062c\u0627\u0645\u0639 PHP \u0627\u0632 \u0635\u0641\u0631 + \u067e\u0631\u0648\u0698\u0647 \u0645\u062d\u0648\u0631\" data-plan-price=\"1,500,000\" data-currency=\"\u062a\u0648\u0645\u0627\u0646\" data-plan-old-price=\"5,000,000\" data-product-id=\"194\" data-is-free=\"0\" >\u062e\u0631\u06cc\u062f \u0645\u062d\u0635\u0648\u0644 \u0648\u06cc\u0698\u0647<\/button><\/div><\/div><\/div><\/div><div class=\"plan-card plan-highlight\" \r\n    data-plan-id=\"1988\"\r\n    data-plan-stock=\"\u0646\u0627\u0645\u062d\u062f\u0648\u062f\"\r\n    data-plan-is-free=\"1\"\r\n    data-plan-price=\"\u0631\u0627\u06cc\u06af\u0627\u0646\"\r\n    data-plan-regular-price=\"\"\r\n    data-plan-sale-end=\"\"\r\n    data-plan-currency=\"\u062a\u0648\u0645\u0627\u0646\"><div class=\"plan-recommended\" style=\"background:#2B2B2B !important;\"><div class=\"plan-badge\"><span style=\"color:#ffffff;\">\u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646<\/span><\/div><div class=\"plan-inner\"><div style=\"min-width:0;text-align:right;\"><div class=\"plan-header\"><div><h3 class=\"plan-name\" style=\"color:#0f172a;\">\u062f\u0648\u0631\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0622\u0645\u0648\u0632\u0634 \u0633\u0626\u0648 (SEO) \u0627\u0632 \u067e\u0627\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u0627\u06cc\u062a<\/h3><\/div><div class=\"plan-tags\"><div class=\"plan-tag-discount\" style=\"background:#dcfce7;color:#166534;\">\u0631\u0627\u06cc\u06af\u0627\u0646<\/div><\/div><\/div><div class=\"plan-price-section\"><div style=\"text-align:left;\"><div class=\"plan-final-price\" style=\"color:#10b981;\">\u0631\u0627\u06cc\u06af\u0627\u0646<\/div><\/div><\/div><div class=\"plan-features\"><div class=\"plan-feature-item\"><i class=\"icon-active plan-feature-icon\"><\/i><span style=\"flex:1;text-align:right;\">2 \u0645\u0627\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u062f\u0633\u062a\u06cc\u0627\u0631 \u0633\u06cc\u06af\u0646\u0627\u0644 \u0646\u0627\u0628\u063a\u0647<\/span><\/div><div class=\"plan-feature-item\"><i class=\"icon-active plan-feature-icon\"><\/i><span style=\"flex:1;text-align:right;\">1 \u0645\u0627\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0622\u0645\u0648\u0632\u0634\u06cc<\/span><\/div><div class=\"plan-feature-item\"><i class=\"icon-active plan-feature-icon\"><\/i><span style=\"flex:1;text-align:right;\">\u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc \u0635\u0641\u0631 \u062a\u0627 \u0635\u062f \u0646\u0627\u0628\u063a\u0647<\/span><\/div><\/div><button class=\"btn-primary btn-gold purchase-trigger\" style=\"background:#1F1F1F !important; color:#ffffff !important;\" data-plan-name=\"\u062f\u0648\u0631\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0622\u0645\u0648\u0632\u0634 \u0633\u0626\u0648 (SEO) \u0627\u0632 \u067e\u0627\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0633\u0627\u06cc\u062a\" data-plan-price=\"\u0631\u0627\u06cc\u06af\u0627\u0646\" data-currency=\"\u062a\u0648\u0645\u0627\u0646\" data-plan-old-price=\"\" data-product-id=\"1988\" data-is-free=\"1\" >\u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u062d\u0635\u0648\u0644 \u0631\u0627\u06cc\u06af\u0627\u0646<\/button><\/div><\/div><\/div><\/div>                <\/div>\r\n                <div id=\"plans-end-sentinel-90397f5\"><\/div>\r\n\r\n                                    <button class=\"terms-btn\" id=\"openRulesBtn-90397f5\">\r\n                        \u062e\u0631\u06cc\u062f \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc <span class=\"text-blue-600\">\u067e\u0630\u06cc\u0631\u0641\u062a\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u0645\u0642\u0631\u0631\u0627\u062a<\/span> \u062a\u0648\u0633\u0637 \u0634\u0645\u0627\u0633\u062a.\r\n                    <\/button>\r\n                            <\/div>\r\n                            <section class=\"story-section\" id=\"story-90397f5\">\r\n                                            <h2 class=\"text-center text-2xl font-black mb-4\" style=\"color:#0f172a;\">\r\n                            \u0686\u0631\u0627 \u0627\u06cc\u0646 \u062f\u0648\u0631\u0647\u061f                        <\/h2>\r\n                                             <div class=\"story-tabs\" id=\"storyTabs-90397f5\"><\/div>\r\n                                             <div class=\"stats-grid\"><div class=\"stat-card\" style=\"background:#bfeeee;\"><div class=\"stat-number\" style=\"color:#343434;\">\u066a\u06f9\u06f4<\/div><div class=\"stat-label\" style=\"color:#64748b;\">\u0631\u0636\u0627\u06cc\u062a<\/div><\/div><div class=\"stat-card\" style=\"background:#bfeeee;\"><div class=\"stat-number\" style=\"color:#343434;\">+\u06f2\u06f0<\/div><div class=\"stat-label\" style=\"color:#64748b;\">\u062c\u0644\u0633\u0647<\/div><\/div><div class=\"stat-card\" style=\"background:#bfeeee;\"><div class=\"stat-number\" style=\"color:#343434;\">\u066a\u06f9\u06f5<\/div><div class=\"stat-label\" style=\"color:#64748b;\">\u0633\u06cc\u06af\u0646\u0627\u0644<\/div><\/div><\/div>\r\n                                    <\/section>\r\n                                        <div class=\"story-modal-overlay\" id=\"storyModalOverlay-90397f5\">\r\n                    <div class=\"story-modal\" id=\"storyModal-90397f5\">\r\n                        <div class=\"story-progress-container\" id=\"storyProgressContainer-90397f5\"><\/div>\r\n                        <div class=\"story-modal-header\">\r\n                            <img decoding=\"async\" class=\"story-modal-avatar\" id=\"storyModalAvatar-90397f5\" src=\"\" alt=\"\">\r\n\r\n                            <div>\r\n                                <div class=\"story-modal-username\" id=\"storyModalUsername-90397f5\"><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <button class=\"story-modal-close\" id=\"storyModalClose-90397f5\">\r\n                            <i class=\"icon-close\"><\/i>\r\n                        <\/button>\r\n\r\n                        <div class=\"story-nav-area story-nav-left\" id=\"storyNavPrev-90397f5\"><\/div>\r\n                        <div class=\"story-nav-area story-nav-right\" id=\"storyNavNext-90397f5\"><\/div>\r\n                        <div class=\"story-modal-media\" id=\"storyModalMedia-90397f5\"><\/div>\r\n                        <div class=\"story-modal-content\" id=\"storyModalContent-90397f5\"\r\n                            style=\"display:none;\"><\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                                        <section class=\"features-section\">\r\n                    <h2 class=\"text-center text-2xl font-black mb-4\" style=\"color:#0f172a;\">\r\n                        \u0627\u0645\u06a9\u0627\u0646\u0627\u062a                    <\/h2>\r\n                    <div class=\"features-grid\"><div class=\"feature-card\" style=\"background-color:#fff;\"><img decoding=\"async\" src=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/2025\/08\/podcast-icon_2.webp\" class=\"feature-icon-img\" style=\"width:50px;height:auto;object-fit:contain;margin-bottom: 15px;\"><div class=\"feature-title\" style=\"color:#0f172a;\">\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc<\/div><\/div><div class=\"feature-card\" style=\"background-color:#fff;\"><img decoding=\"async\" src=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/2025\/08\/medal.png\" class=\"feature-icon-img\" style=\"width:50px;height:auto;object-fit:contain;margin-bottom: 15px;\"><div class=\"feature-title\" style=\"color:#0f172a;\">\u06af\u0648\u0627\u0647\u06cc<\/div><\/div><div class=\"feature-card\" style=\"background-color:#fff;\"><img decoding=\"async\" src=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/2025\/08\/rocket-dynamic-color.webp\" class=\"feature-icon-img\" style=\"width:50px;height:auto;object-fit:contain;margin-bottom: 15px;\"><div class=\"feature-title\" style=\"color:#0f172a;\">\u0622\u0632\u0645\u0648\u0646<\/div><\/div><div class=\"feature-card\" style=\"background-color:#fff;\"><img decoding=\"async\" src=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/2025\/08\/user-medal.avif\" class=\"feature-icon-img\" style=\"width:50px;height:auto;object-fit:contain;margin-bottom: 15px;\"><div class=\"feature-title\" style=\"color:#0f172a;\">\u0633\u06cc\u06af\u0646\u0627\u0644<\/div><\/div><\/div>\r\n                <\/section>\r\n                                        <section class=\"faq-section\">\r\n                    <h2 class=\"text-center text-2xl font-black mb-4\" style=\"color:#0f172a;\">\r\n                        \u0633\u0631\u0641\u0635\u0644\u200c\u0647\u0627                    <\/h2>\r\n                    <div class=\"syllabusContainer\" id=\"syllabusContainer-90397f5\">\r\n                        <div class=\"faq-item\"><button class=\"faq-question\"><span style=\"color:#0f172a;\">\u0641\u0635\u0644 \u0627\u0648\u0644<\/span><i class=\"icon-chevronDown faq-icon\"><\/i><\/button><div class=\"faq-answer\" style=\"color:#475569;\">\u062a\u0648\u0636\u06cc\u062d\u0627\u062a<\/div><\/div>                    <\/div>\r\n                <\/section>\r\n                                        <section class=\"faq-section\">\r\n                    <h2 class=\"text-center text-2xl font-black mb-4\" style=\"color:#0f172a;\">\r\n                        \u067e\u0631\u0633\u0634\u200c\u0647\u0627\u06cc \u067e\u0631\u062a\u06a9\u0631\u0627\u0631                    <\/h2>\r\n                    <div class=\"faqContainer_\" id=\"faqContainer-90397f5\"><div class=\"faq-item\"><button class=\"faq-question\"><span style=\"color:#0f172a;\">\u062f\u0648\u0631\u0647 \u0686\u06cc\u0647\u061f<\/span><i class=\"icon-chevronDown faq-icon\"><\/i><\/button><div class=\"faq-answer\" style=\"color:#475569;\">\u062a\u0648\u0636\u06cc\u062d\u0627\u062a<\/div><\/div><\/div>\r\n                <\/section>\r\n                                                            <h2 class=\"text-center text-2xl font-black mb-4\" style=\"margin-top: 2.5rem;color:#0f172a;\">\r\n                        \u0645\u062f\u0631\u0633 \u062f\u0648\u0631\u0647 \u06a9\u06cc\u0633\u062a\u061f                    <\/h2>\r\n                \r\n                <div class=\"profile-card profile-collapsible collapsed\"\r\n                    id=\"profileCard-90397f5\"\r\n                    data-collapsible=\"yes\">\r\n                    <div class=\"card-header\" style=\"\r\n                                    background: #667eea;\r\n                            \">\r\n\r\n                        <div class=\"profile-image\">\r\n                            <div class=\"avatar\">\r\n                                                                    <img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='120' height='120'%3E%3Ccircle cx='60' cy='60' r='60' fill='%23e2e8f0'\/%3E%3Ccircle cx='60' cy='45' r='18' fill='%2394a3b8'\/%3E%3Cpath d='M30 95c0-16.569 13.431-30 30-30s30 13.431 30 30' fill='%2394a3b8'\/%3E%3C\/svg%3E\" alt=\"\u0622\u0648\u0627\u062a\u0627\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\">\r\n                                                            <\/div>\r\n                                                            <div class=\"status-indicator\"><\/div>\r\n                                                    <\/div>\r\n                        <div class=\"brand-badge\">\u0633\u0627\u0631\u0627 \u0645\u062d\u0645\u062f\u06cc<\/div>\r\n\r\n                                                    <div class=\"profile-toggle-arrow\">\r\n                                <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                                    <polyline points=\"6 9 12 15 18 9\" \/>\r\n                                <\/svg>\r\n                            <\/div>\r\n                                            <\/div>\r\n\r\n                    <div class=\"profile-body-wrapper\">\r\n                        <div class=\"card-body\">\r\n                            <h3 class=\"profile-name\">\u0633\u0627\u0631\u0627 \u0645\u062d\u0645\u062f\u06cc<\/h3>\r\n\r\n                            <div class=\"bio-container\" id=\"bioContainer-90397f5\">\r\n                                <div class=\"bio-text-wrapper\">\r\n                                    <p class=\"profile-bio\" id=\"profileBio-90397f5\">\u0639\u0627\u0634\u0642 \u062e\u0644\u0642 \u062a\u062c\u0631\u0628\u0647\u200c\u0647\u0627\u06cc \u062f\u06cc\u062c\u06cc\u062a\u0627\u0644 \u06a9\u0627\u0631\u0628\u0631\u067e\u0633\u0646\u062f \u0647\u0633\u062a\u0645 ... (\u0645\u062a\u0646 \u0646\u0645\u0648\u0646\u0647)<\/p>\r\n                                    <div class=\"bio-fade\"><\/div>\r\n                                <\/div>\r\n                                <button class=\"read-more-btn\" id=\"readMoreBtn-90397f5\" style=\"display:none;\">\r\n                                    <span>\u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f<\/span>\r\n                                    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                                        <polyline points=\"6 9 12 15 18 9\" \/>\r\n                                    <\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n\r\n                                                            <div class=\"stats-grid\">\r\n                                                                            <div class=\"stat-card\">\r\n                                                                                            <svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                    <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" \/>\r\n                                                    <circle cx=\"9\" cy=\"7\" r=\"4\" \/>\r\n                                                    <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" \/>\r\n                                                    <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" \/>\r\n                                                <\/svg>\r\n                                                                                        <div class=\"stat-content\">\r\n                                                <span class=\"stat-number\">\u06f3.\u06f2\u0647\u0632\u0627\u0631<\/span>\r\n                                                <span class=\"stat-label\">\u062f\u0646\u0628\u0627\u0644\u200c\u06a9\u0646\u0646\u062f\u0647<\/span>\r\n                                            <\/div>\r\n                                        <\/div>\r\n                                                                            <div class=\"stat-card\">\r\n                                                                                            <svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                    <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" \/>\r\n                                                    <circle cx=\"9\" cy=\"7\" r=\"4\" \/>\r\n                                                    <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" \/>\r\n                                                    <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" \/>\r\n                                                <\/svg>\r\n                                                                                        <div class=\"stat-content\">\r\n                                                <span class=\"stat-number\">\u06f2\u06f4\u06f5<\/span>\r\n                                                <span class=\"stat-label\">\u067e\u0631\u0648\u0698\u0647<\/span>\r\n                                            <\/div>\r\n                                        <\/div>\r\n                                                                            <div class=\"stat-card\">\r\n                                                                                            <svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                    <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" \/>\r\n                                                    <circle cx=\"9\" cy=\"7\" r=\"4\" \/>\r\n                                                    <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" \/>\r\n                                                    <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" \/>\r\n                                                <\/svg>\r\n                                                                                        <div class=\"stat-content\">\r\n                                                <span class=\"stat-number\">\u06f4.\u06f9<\/span>\r\n                                                <span class=\"stat-label\">\u0627\u0645\u062a\u06cc\u0627\u0632<\/span>\r\n                                            <\/div>\r\n                                        <\/div>\r\n                                                                    <\/div>\r\n                            \r\n                                                            <div class=\"skills-section\">\r\n                                    <h3 class=\"section-title\">\u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc<\/h3>\r\n                                    <div class=\"skills-container\">\r\n                                                                                    <span class=\"skill-badge\">\u0637\u0631\u0627\u062d\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc<\/span>\r\n                                                                                    <span class=\"skill-badge\">\u062a\u062d\u0642\u06cc\u0642 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc<\/span>\r\n                                                                                    <span class=\"skill-badge\">\u0641\u06cc\u06af\u0645\u0627<\/span>\r\n                                                                                    <span class=\"skill-badge\">\u0646\u0645\u0648\u0646\u0647\u200c\u0633\u0627\u0632\u06cc<\/span>\r\n                                                                                    <span class=\"skill-badge\">\u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc<\/span>\r\n                                                                            <\/div>\r\n                                <\/div>\r\n                                                    <\/div>\r\n\r\n                                            <\/div>\r\n                <\/div>\r\n\r\n\r\n                <script>\r\n                    (function() {\r\n                        var widgetId = '90397f5';\r\n                        var card = document.getElementById('profileCard-' + widgetId);\r\n                        if (!card) return;\r\n\r\n                        var collapsible = card.getAttribute('data-collapsible') === 'yes';\r\n                        var header = card.querySelector('.card-header');\r\n                        var arrow = card.querySelector('.profile-toggle-arrow');\r\n\r\n                        if (collapsible) {\r\n                            header.addEventListener('click', function(e) {\r\n                                if (e.target.tagName === 'A') return;\r\n                                card.classList.toggle('expanded');\r\n                                card.classList.remove('collapsed');\r\n                            });\r\n                        } else {\r\n                            card.classList.add('expanded');\r\n                        }\r\n\r\n                        var container = document.getElementById('bioContainer-' + widgetId);\r\n                        var bioText = document.getElementById('profileBio-' + widgetId);\r\n                        var readMoreBtn = document.getElementById('readMoreBtn-' + widgetId);\r\n                        if (container && bioText && readMoreBtn) {\r\n                            var readMoreText = \"\\u0628\\u06cc\\u0634\\u062a\\u0631 \\u0628\\u062e\\u0648\\u0627\\u0646\\u06cc\\u062f\";\r\n                            var readLessText = \"\\u0628\\u0633\\u062a\\u0646\";\r\n                            var btnText = readMoreBtn.querySelector('span');\r\n\r\n                            function wordCount(text) {\r\n                                return text.trim().split(\/\\s+\/).length;\r\n                            }\r\n\r\n                            var words = wordCount(bioText.textContent || '');\r\n                            if (words > 60) {\r\n                                readMoreBtn.style.display = 'flex';\r\n                            } else {\r\n                                container.classList.add('no-truncate');\r\n                            }\r\n\r\n                            readMoreBtn.addEventListener('click', function() {\r\n                                if (container.classList.contains('expanded')) {\r\n                                    container.classList.remove('expanded');\r\n                                    btnText.textContent = readMoreText;\r\n                                } else {\r\n                                    container.classList.add('expanded');\r\n                                    btnText.textContent = readLessText;\r\n                                }\r\n                            });\r\n                        }\r\n\r\n                        if ('IntersectionObserver' in window) {\r\n                            var observerOptions = {\r\n                                threshold: 0.2\r\n                            };\r\n                            var observer = new IntersectionObserver(function(entries) {\r\n                                entries.forEach(function(entry, index) {\r\n                                    if (entry.isIntersecting) {\r\n                                        setTimeout(function() {\r\n                                            entry.target.style.opacity = '1';\r\n                                            entry.target.style.transform = 'translateY(0)';\r\n                                        }, index * 100);\r\n                                        observer.unobserve(entry.target);\r\n                                    }\r\n                                });\r\n                            }, observerOptions);\r\n\r\n                            card.querySelectorAll('.stat-card').forEach(function(el) {\r\n                                el.style.opacity = '0';\r\n                                el.style.transform = 'translateY(20px)';\r\n                                el.style.transition = 'opacity 0.5s ease, transform 0.5s ease';\r\n                                observer.observe(el);\r\n                            });\r\n\r\n                            card.querySelectorAll('.skill-badge').forEach(function(el, i) {\r\n                                el.style.opacity = '0';\r\n                                el.style.transform = 'translateY(10px)';\r\n                                el.style.transition = 'opacity 0.4s ease, transform 0.4s ease';\r\n                                setTimeout(function() {\r\n                                    el.style.opacity = '1';\r\n                                    el.style.transform = 'translateY(0)';\r\n                                }, 800 + i * 80);\r\n                            });\r\n                        }\r\n\r\n                        card.querySelectorAll('.social-btn').forEach(function(b) {\r\n                            b.addEventListener('mouseenter', function() {\r\n                                b.style.transform = 'translateY(-3px) rotate(-5deg)';\r\n                            });\r\n                            b.addEventListener('mouseleave', function() {\r\n                                b.style.transform = 'translateY(0) rotate(0deg)';\r\n                            });\r\n                        });\r\n                    })();\r\n                <\/script>\r\n            \r\n                            <section class=\"rules-section\">\r\n                    <div class=\"rules-trigger\" id=\"rulesDrawerTrigger-90397f5\"><span\r\n                            style=\"color:#0f172a;\">\u0642\u0648\u0627\u0646\u06cc\u0646<\/span><i\r\n                            class=\"icon-chevronLeft faq-icon\" style=\"color:#71717a;\"><\/i><\/div>\r\n                <\/section>\r\n            \r\n                            <section class=\"contact-section\">\r\n                    <div class=\"contact-card\" style=\"background:#ffffff;\">\r\n                        <div class=\"contact-title\"\r\n                            style=\"color:#0f172a;\">\r\n                            \u0633\u0648\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u061f                        <\/div>\r\n                        <div class=\"contact-subtitle\"\r\n                            style=\"color:#64748b;\">\r\n                            \u0634\u0631\u0648\u0639 \u0647\u0631\u0686\u06cc\u0632\u06cc \u0633\u062e\u062a\u0647\u060c \u0648\u0644\u06cc \u0648\u0642\u062a\u06cc \u0645\u0633\u06cc\u0631 \u062f\u0631\u0633\u062a\u06cc \u0631\u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u060c\u2028\u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0648 \u0628\u062f\u0648\u0646 \u0627\u0633\u062a\u0631\u0633 \u0645\u06cc\u062a\u0648\u0646\u06cc \u0627\u0632 \u0645\u0633\u06cc\u0631 \u0644\u0630\u062a \u0628\u0628\u0631\u06cc. \u0645\u0627 \u062f\u0631 \u0647\u0648\u0631\u062a\u0627\u0634\u060c \u062a\u0648\u06cc \u0633\u0641\u0631 \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u0627\u0631\u062a \u0647\u0633\u062a\u06cc\u0645 \u062a\u0627 \u0628\u0627\u0647\u0645 \u0631\u0634\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u0632 \u0646\u062a\u06cc\u062c\u0647 \u0632\u062d\u0645\u0627\u062a \u0645\u0648\u0646 \u0644\u0630\u062a \u0628\u0628\u0631\u06cc\u0645.                        <\/div>\r\n                        <div class=\"contact-buttons\"><a href=\"#\"  class=\"contact-btn\" style=\"background:#f1f5f9;color:#0f172a;\">\u067e\u06cc\u0627\u0645 \u062f\u0631 \u062a\u0644\u06af\u0631\u0627\u0645<\/a><a href=\"#\"  class=\"contact-btn\" style=\"background:#7EBEFF;color:#FFFFFF;\">\u067e\u06cc\u0627\u0645 \u062f\u0631 \u0628\u0644\u0647<\/a><\/div>\r\n                    <\/div>\r\n                <\/section>\r\n                                        <section class=\"footer-badges\"><div class=\"badge-enamad\"><a referrerpolicy=\"origin\" href=\"#\"><img decoding=\"async\" src=\"https:\/\/mantissa.ir\/easy-installer\/wp-content\/uploads\/1.svg\" alt=\"\u0646\u0645\u0627\u062f\" style=\"width:60px;height:auto;\"><\/a><\/div><\/section>\r\n                    <\/div>\r\n                    <div class=\"drawer-overlay\" id=\"drawerOverlay-90397f5\"><\/div>\r\n            <div class=\"drawer drawer-bottom\" id=\"rulesDrawer-90397f5\">\r\n                <div class=\"drawer-handle\"><\/div>\r\n                <div class=\"drawer-body\">\r\n                    <div class=\"drawer-header-row\">\r\n                        <div><span class=\"drawer-title\"\r\n                                style=\"color:#0f172a;\">\u0642\u0648\u0627\u0646\u06cc\u0646<\/span>\r\n                        <\/div>\r\n                        <button class=\"drawer-close-btn\" id=\"closeRulesDrawerBtn-90397f5\"><i\r\n                                class=\"icon-close\" style=\"font-size:0.875rem;\"><\/i><\/button>\r\n                    <\/div>\r\n                    <div style=\"margin-top:1rem;display:flex;flex-direction:column;gap:0.5rem;\"\r\n                        id=\"drawerRulesContent-90397f5\"><details class=\"rule-item\"><summary><span style=\"color:#0f172a;\">\u0645\u0642\u062f\u0645\u0647<\/span><i class=\"icon-chevronDown faq-icon\"><\/i><\/summary><div class=\"rule-detail\" style=\"color:#475569;\">\u0628\u0647 \u0633\u0627\u06cc\u062a \u062e\u0648\u0634 \u0622\u0645\u062f\u06cc\u062f.<\/div><\/details><\/div>\r\n                <\/div>\r\n            <\/div>\r\n                <div class=\"drawer-overlay purchase-drawer-overlay\" id=\"purchaseOverlay-90397f5\"><\/div>\r\n        <div class=\"drawer purchase-drawer drawer-bottom\" id=\"purchaseDrawer-90397f5\">\r\n            <div class=\"drawer-handle\"><\/div>\r\n            <div class=\"drawer-body\">\r\n                <div class=\"drawer-header-row\" style=\"align-items:center!important;\">\r\n                    <div style=\"padding10px 0;\"><span class=\"drawer-title\"\r\n                            id=\"drawerTitle-90397f5\">\u062a\u06a9\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f<\/span>\r\n                    <\/div>\r\n                    <button class=\"drawer-close-btn\" id=\"closePurchaseDrawerBtn-90397f5\"\r\n                        style=\"margin-top:0;\"><i class=\"icon-close\" style=\"font-size:0.875rem;\"><\/i><\/button>\r\n                <\/div>\r\n                <div class=\"purchase-summary\">\r\n                    <div class=\"purchase-summary-row\">\r\n                        <div>\r\n                            <div class=\"purchase-summary-name\" id=\"purchasePlanName-90397f5\">-<\/div>\r\n                        <\/div>\r\n                        <div style=\"display: flex;flex-direction: column;\">\r\n                            <div class=\"purchase-summary-old\" id=\"purchaseOldPrice-90397f5\"\r\n                                style=\"display:none;\"><\/div>\r\n                            <div class=\"purchase-summary-final\" id=\"purchaseFinalPrice-90397f5\">-\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <form style=\"width:100%;\" onsubmit=\"return false;\" id=\"purchaseForm-90397f5\">\r\n                    <div class=\"mt-4 space-y-4\">\r\n                        <div>\r\n                            <input placeholder=\"\u0646\u0627\u0645 \u0648 \u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc\"\r\n                                class=\"purchase-form-input\" id=\"purchaseName-90397f5\" required\r\n                                maxlength=\"50\">\r\n                            <div class=\"field-error\" id=\"nameError-90397f5\"\r\n                                style=\"display:none;color:#dc2626;font-size:0.7rem;padding-right: 5px;\"><\/div>\r\n                        <\/div>\r\n                        <div style=\"position: relative;\">\r\n                            <div style=\"display: flex;gap: 0.5rem;align-items: center;\">\r\n                                <input placeholder=\"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644\"\r\n                                    inputmode=\"tel\" class=\"purchase-form-input\"\r\n                                    id=\"purchaseMobile-90397f5\" style=\"flex: 1;\" required\r\n                                    autocomplete=\"off\">\r\n                                <button type=\"button\" class=\"otp-send-btn\"\r\n                                        id=\"otpSendBtn-90397f5\"\r\n                                        style=\"display:none;white-space: nowrap;padding: 0.75rem 1rem;background: #d69a16;color: #fff;border: none;border-radius: 0.75rem;font-size: 0.8rem;font-weight: 600;cursor: pointer;min-width: 120px;\"><span\r\n                                            id=\"otpSendBtnText-90397f5\">\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f<\/span><span\r\n                                            id=\"otpSendSpinner-90397f5\"\r\n                                            style=\"display:none;margin-right:4px;\"><span\r\n                                                class=\"qp-spinner\"><\/span><\/span><\/button>                            <\/div>\r\n                            <div class=\"field-error\" id=\"mobileError-90397f5\"\r\n                                style=\"display:none;color:#dc2626;font-size:0.7rem;padding-right: 5px;\"><\/div>\r\n                            <div id=\"mobileValidationMsg-90397f5\"\r\n                                style=\"display:none;font-size:0.7rem;color:#d92f4e;font-weight: 500;\"><\/div>\r\n                            <div id=\"otpVerifiedBadge-90397f5\"\r\n                                style=\"display:none;font-size:0.75rem;color:#10b981;font-weight:600;gap: 5px;\"><i\r\n                                    class=\"icon-active plan-feature-icon\"><\/i> <span\r\n                                    class=\"\">\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062a\u0623\u06cc\u06cc\u062f \u0634\u062f.<\/span><\/div>\r\n                        <\/div>\r\n                                                    <div id=\"otpSection-90397f5\" style=\"display:none;\">\r\n                                <div style=\"display: flex;gap: 0.5rem;align-items: center;\">\r\n                                    <input placeholder=\"\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f\" inputmode=\"numeric\"\r\n                                        maxlength=\"5\" class=\"purchase-form-input\"\r\n                                        id=\"otpCode-90397f5\"\r\n                                        style=\"flex: 1;letter-spacing: 0.5rem;text-align: center;font-size: 1.2rem;\"\r\n                                        autocomplete=\"off\">\r\n                                    <button type=\"button\" class=\"otp-verify-btn\"\r\n                                        id=\"otpVerifyBtn-90397f5\"\r\n                                        style=\"white-space: nowrap;padding: 0.75rem 1rem;background: #10b981;color: #fff;border: none;border-radius: 0.75rem;font-size: 0.8rem;font-weight: 600;cursor: pointer;min-width: 100px;display: flex;align-items: center;gap: 0.4rem;\"><span\r\n                                            id=\"otpVerifyBtnText-90397f5\">\u062a\u0623\u06cc\u06cc\u062f<\/span><span\r\n                                            id=\"otpVerifySpinner-90397f5\" style=\"display:none;\"><span\r\n                                                class=\"qp-spinner\"><\/span><\/span><\/button>\r\n                                <\/div>\r\n                                <div class=\"field-error\" id=\"otpError-90397f5\"\r\n                                    style=\"display:none;color:#dc2626;font-size:0.7rem;padding-right: 5px;\"><\/div>\r\n                                <div id=\"otpTimer-90397f5\"\r\n                                    style=\"font-size:0.75rem;color:#64748b;margin-top:0.25rem;text-align:center;\"><\/div>\r\n                            <\/div>\r\n                                                <div>\r\n                            <input placeholder=\"\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\" type=\"email\"\r\n                                inputmode=\"email\" class=\"purchase-form-input\"\r\n                                id=\"purchaseEmail-90397f5\" required>\r\n                            <div class=\"field-error\" id=\"emailError-90397f5\"\r\n                                style=\"display:none;color:#dc2626;font-size:0.7rem;padding-right: 5px;\"><\/div>\r\n                        <\/div>\r\n                        <div class=\"gatewaySection_container\" id=\"gatewaySection-90397f5\">\r\n                            <label\r\n                                style=\"font-size:0.8rem;font-weight:600;color:#334155;display:block;\">\u0627\u0646\u062a\u062e\u0627\u0628 \u0631\u0648\u0634 \u067e\u0631\u062f\u0627\u062e\u062a<\/label>\r\n                            <div class=\"gateway-radio-group\" id=\"gatewayGroup-90397f5\">\r\n                                <label class=\"gateway-radio-label\"><span class=\"gateway-radio-text\">\u067e\u0631\u062f\u0627\u062e\u062a \u0686\u06a9<\/span><input type=\"radio\" name=\"purchase_gateway\" value=\"cheque\" checked><\/label><label class=\"gateway-radio-label\"><span class=\"gateway-radio-text\">\u067e\u0631\u062f\u0627\u062e\u062a \u0647\u0646\u06af\u0627\u0645 \u062f\u0631\u06cc\u0627\u0641\u062a<\/span><input type=\"radio\" name=\"purchase_gateway\" value=\"cod\" ><\/label>                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                                            <div class=\"rules_container\">\r\n                            <div class=\"rules_content\">\r\n                                <div class=\"mt-1 h-1.5 w-1.5 rounded-full bg-primary-foreground\"><\/div>\r\n                                <div class=\"flex flex-col gap-y-2\">\r\n                                    <span class=\"flex flex-wrap items-center gap-x-1 text-xs text-slate-500\">\r\n                                        \u062e\u0631\u06cc\u062f \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc\r\n                                        <span class=\"font-bold text-blue-600 cursor-pointer\"\r\n                                            id=\"purchaseRulesLink-90397f5\">\u067e\u0630\u06cc\u0631\u0641\u062a\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648\r\n                                            \u0645\u0642\u0631\u0631\u0627\u062a<\/span>\r\n                                        \u062a\u0648\u0633\u0637 \u0634\u0645\u0627\u0633\u062a.\r\n                                    <\/span>\r\n                                    <div class=\"flex items-center gap-x-1\">\r\n                                        <div class=\"purchase-checkbox-wrapper\"\r\n                                            id=\"purchaseCheckboxContainer-90397f5\">\r\n                                            <span class=\"purchase-checkbox-label\">\r\n                                                \u0642\u0648\u0627\u0646\u06cc\u0646 \u0631\u0627 \u062e\u0648\u0627\u0646\u062f\u0645 \u0648 \u067e\u0630\u06cc\u0631\u0641\u062a\u0645                                            <\/span>\r\n                                            <div class=\"purchase-checkbox-box\"\r\n                                                id=\"purchaseCheckbox-90397f5\">\r\n                                                <i class=\"icon-done\"><\/i>\r\n                                            <\/div>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                                        <div class=\"purchase-footer\">\r\n                        <div class=\"purchase-loading\" id=\"purchaseLoading-90397f5\"\r\n                            style=\"display:none;text-align:center;margin-bottom:0.5rem;\">\r\n                            <span class=\"qp-spinner qp-spinner-dark\"><\/span> \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a...\r\n                        <\/div>\r\n                        <button class=\"purchase-submit-btn\" id=\"purchaseSubmitBtn-90397f5\"\r\n                            type=\"button\" disabled style=\"opacity: 0.5;cursor: not-allowed;\">\r\n                            <span>\u067e\u0631\u062f\u0627\u062e\u062a \u0648 \u062a\u06a9\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f<\/span>\r\n                            <i class=\"icon-chevronLeft\" style=\"font-size:1.2rem;margin-top: 4px;\"><\/i>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/form>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"toast-container\" id=\"toastContainer-90397f5\"\r\n            style=\"position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:99999;display:flex;flex-direction:column;gap:0.5rem;pointer-events:none;\">\r\n        <\/div>\r\n\r\n        \r\n        <script>\r\n            (function() {\r\n                var widgetId = '90397f5',\r\n                    container = document.getElementById('mainContent-' + widgetId);\r\n                if (!container) return;\r\n                var remainingMs = 5709882000,\r\n                    initialRemainingMs = remainingMs;\r\n                var storiesData = [{\"id\":0,\"label\":\"\\u0645\\u062d\\u0645\\u062f \\u062f\\u0631\\u0648\\u06cc\\u0634\\u06cc\",\"avatar\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/team_pic_5_result_new.webp\",\"slides\":[{\"type\":\"image\",\"src\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/team_pic_1_result_new.webp\",\"duration\":10000,\"content\":\"\\u062a\\u0648\\u0636\\u06cc\\u062d\\u0627\\u062a \\u06cc\\u06a9\"},{\"type\":\"video\",\"src\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/story_1.mp4\",\"duration\":0,\"content\":\"\"}]},{\"id\":1,\"label\":\"\\u0639\\u0633\\u0644 \\u0622\\u0628\\u062f\\u06cc\\u0646\",\"avatar\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/user3.webp\",\"slides\":[{\"type\":\"image\",\"src\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/s5.webp\",\"duration\":10000,\"content\":\"\\u062a\\u0648\\u0636\\u06cc\\u062d\\u0627\\u062a \\u062f\\u0648\"},{\"type\":\"video\",\"src\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/story_3.mp4\",\"duration\":0,\"content\":\"\"},{\"type\":\"video\",\"src\":\"https:\\\/\\\/mantissa.ir\\\/easy-installer\\\/wp-content\\\/uploads\\\/story_2.mp4\",\"duration\":0,\"content\":\"\"}]}];\r\n                var hasTimer = true,\r\n                    timerExpired = false;\r\n                var timerKey = container.dataset.timerKey,\r\n                    storyDuration = parseInt(container.dataset.storyDuration) || 4000;\r\n                var ajaxUrl = container.dataset.ajaxUrl,\r\n                    nonce = container.dataset.nonce;\r\n                var smsSettings = JSON.parse(container.dataset.smsSettings || '{}');\r\n                var specialDiscountLabel = \"\\u0645\\u0647\\u0644\\u062a \\u062a\\u062e\\u0641\\u06cc\\u0641 \\u0648\\u06cc\\u0698\\u0647\";\r\n                var noDiscountLabel = \"\\u0645\\u062d\\u0635\\u0648\\u0644 \\u0648\\u06cc\\u0698\\u0647\";\r\n                var freeProductLabel = \"\\u0631\\u0627\\u06cc\\u06af\\u0627\\u0646\";\r\n                var otpEnabled = smsSettings.otp_enable !== false,\r\n                    timerInterval = null;\r\n                var currentIsFree = false,\r\n                    currentProductId = null,\r\n                    otpVerified = !otpEnabled,\r\n                    otpVerifiedMobile = '';\r\n                var otpTimerInterval = null,\r\n                    otpRemainingSeconds = 0,\r\n                    otpSendCooldown = false,\r\n                    otpSendCooldownRemaining = 0,\r\n                    otpExpired = false,\r\n                    otpSent = false;\r\n                var rulesDrawer = document.getElementById('rulesDrawer-' + widgetId),\r\n                    rulesOverlay = document.getElementById('drawerOverlay-' + widgetId);\r\n                var purchaseDrawer = document.getElementById('purchaseDrawer-' + widgetId),\r\n                    purchaseOverlay = document.getElementById('purchaseOverlay-' + widgetId);\r\n                var savedOtpState = null,\r\n                    otpCodeInput = document.getElementById('otpCode-' + widgetId);\r\n                var otpSendBtn = document.getElementById('otpSendBtn-' + widgetId),\r\n                    otpSendBtnText = document.getElementById('otpSendBtnText-' + widgetId),\r\n                    otpSendSpinner = document.getElementById('otpSendSpinner-' + widgetId);\r\n                var otpSection = document.getElementById('otpSection-' + widgetId);\r\n                var otpVerifyBtn = document.getElementById('otpVerifyBtn-' + widgetId),\r\n                    otpVerifyBtnText = document.getElementById('otpVerifyBtnText-' + widgetId),\r\n                    otpVerifySpinner = document.getElementById('otpVerifySpinner-' + widgetId);\r\n                var otpError = document.getElementById('otpError-' + widgetId),\r\n                    otpTimer = document.getElementById('otpTimer-' + widgetId);\r\n                var otpVerifiedBadge = document.getElementById('otpVerifiedBadge-' + widgetId),\r\n                    mobileInput = document.getElementById('purchaseMobile-' + widgetId);\r\n                var mobileValidationMsg = document.getElementById('mobileValidationMsg-' + widgetId);\r\n                var purchaseSubmitBtn = document.getElementById('purchaseSubmitBtn-' + widgetId);\r\n                var purchaseCheckboxContainer = document.getElementById('purchaseCheckboxContainer-' + widgetId),\r\n                    purchaseCheckbox = document.getElementById('purchaseCheckbox-' + widgetId);\r\n                var isCheckboxChecked = false,\r\n                    storyModalOverlay = document.getElementById('storyModalOverlay-' + widgetId);\r\n                var closePurchaseDrawerBtn = document.getElementById('closePurchaseDrawerBtn-' + widgetId);\r\n                var otpSendLoading = false,\r\n                    otpVerifyLoading = false;\r\n                var planStates = {};\r\n                var lockedPlans = {};\r\n                var globalOtpActive = false;\r\n                var lockedPlansTimerInterval = null;\r\n                var otpCooldownInterval = null;\r\n\r\n                function clearAllCache() {\r\n                    var keysToRemove = [];\r\n                    for (var i = 0; i < localStorage.length; i++) {\r\n                        var key = localStorage.key(i);\r\n                        if (key && key.indexOf('qp_') === 0 && key.indexOf(widgetId) !== -1) {\r\n                            keysToRemove.push(key);\r\n                        }\r\n                    }\r\n                    keysToRemove.forEach(function(key) {\r\n                        localStorage.removeItem(key);\r\n                    });\r\n\r\n                    if (sessionStorage) {\r\n                        var sessKeys = [];\r\n                        for (var j = 0; j < sessionStorage.length; j++) {\r\n                            var skey = sessionStorage.key(j);\r\n                            if (skey && skey.indexOf('qp_') === 0 && skey.indexOf(widgetId) !== -1) {\r\n                                sessKeys.push(skey);\r\n                            }\r\n                        }\r\n                        sessKeys.forEach(function(key) {\r\n                            sessionStorage.removeItem(key);\r\n                        });\r\n                    }\r\n\r\n                    otpVerified = !otpEnabled;\r\n                    otpVerifiedMobile = '';\r\n                    otpExpired = false;\r\n                    otpSent = false;\r\n                    otpSendCooldown = false;\r\n                    otpSendCooldownRemaining = 0;\r\n                    otpSendLoading = false;\r\n                    otpVerifyLoading = false;\r\n                    otpRemainingSeconds = 0;\r\n                    savedOtpState = null;\r\n                    currentProductId = null;\r\n                    currentIsFree = false;\r\n                    planStates = {};\r\n                    lockedPlans = {};\r\n                    globalOtpActive = false;\r\n\r\n                    if (otpTimerInterval) {\r\n                        clearInterval(otpTimerInterval);\r\n                        otpTimerInterval = null;\r\n                    }\r\n                    if (otpCooldownInterval) {\r\n                        clearInterval(otpCooldownInterval);\r\n                        otpCooldownInterval = null;\r\n                    }\r\n                    if (lockedPlansTimerInterval) {\r\n                        clearInterval(lockedPlansTimerInterval);\r\n                        lockedPlansTimerInterval = null;\r\n                    }\r\n                }\r\n\r\n                function resetAllFormFields() {\r\n                    var nameField = document.getElementById('purchaseName-' + widgetId);\r\n                    var mobileField = document.getElementById('purchaseMobile-' + widgetId);\r\n                    var emailField = document.getElementById('purchaseEmail-' + widgetId);\r\n\r\n                    if (nameField) nameField.value = '';\r\n                    if (mobileField) {\r\n                        mobileField.value = '';\r\n                        mobileField.readOnly = false;\r\n                    }\r\n                    if (emailField) emailField.value = '';\r\n\r\n                    var nameError = document.getElementById('nameError-' + widgetId);\r\n                    var mobileError = document.getElementById('mobileError-' + widgetId);\r\n                    var emailError = document.getElementById('emailError-' + widgetId);\r\n\r\n                    if (nameError) nameError.style.display = 'none';\r\n                    if (mobileError) mobileError.style.display = 'none';\r\n                    if (emailError) emailError.style.display = 'none';\r\n                    if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n\r\n                    if (otpSection) otpSection.style.display = 'none';\r\n                    if (otpVerifiedBadge) otpVerifiedBadge.style.display = 'none';\r\n                    if (otpError) otpError.style.display = 'none';\r\n                    if (otpTimer) otpTimer.textContent = '';\r\n\r\n                    if (otpCodeInput) {\r\n                        otpCodeInput.value = '';\r\n                        otpCodeInput.classList.remove('otp-input-disabled');\r\n                        otpCodeInput.readOnly = false;\r\n                        otpCodeInput.placeholder = '\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f';\r\n                    }\r\n\r\n                    if (otpSendBtn) {\r\n                        otpSendBtn.style.display = 'none';\r\n                        otpSendBtn.disabled = false;\r\n                        otpSendBtn.style.opacity = '1';\r\n                    }\r\n                    if (otpSendBtnText) otpSendBtnText.textContent = '\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f';\r\n                    if (otpSendSpinner) otpSendSpinner.style.display = 'none';\r\n\r\n                    if (otpVerifyBtn) {\r\n                        otpVerifyBtn.disabled = false;\r\n                        otpVerifyBtn.style.opacity = '1';\r\n                    }\r\n                    if (otpVerifyBtnText) otpVerifyBtnText.textContent = '\u062a\u0623\u06cc\u06cc\u062f';\r\n                    if (otpVerifySpinner) otpVerifySpinner.style.display = 'none';\r\n\r\n                    otpSendCooldown = false;\r\n                    otpSendCooldownRemaining = 0;\r\n                    if (otpCooldownInterval) {\r\n                        clearInterval(otpCooldownInterval);\r\n                        otpCooldownInterval = null;\r\n                    }\r\n\r\n                    isCheckboxChecked = false;\r\n                    if (purchaseCheckbox) purchaseCheckbox.classList.remove('checked');\r\n\r\n                    if (purchaseSubmitBtn) {\r\n                        purchaseSubmitBtn.disabled = true;\r\n                        purchaseSubmitBtn.style.opacity = '0.5';\r\n                        purchaseSubmitBtn.style.cursor = 'not-allowed';\r\n                        purchaseSubmitBtn.style.background = '';\r\n                        purchaseSubmitBtn.querySelector('span').textContent = '\u067e\u0631\u062f\u0627\u062e\u062a \u0648 \u062a\u06a9\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f';\r\n                    }\r\n\r\n                    var loadingEl = document.getElementById('purchaseLoading-' + widgetId);\r\n                    if (loadingEl) loadingEl.style.display = 'none';\r\n\r\n                    var planName = document.getElementById('purchasePlanName-' + widgetId);\r\n                    var finalPrice = document.getElementById('purchaseFinalPrice-' + widgetId);\r\n                    var oldPrice = document.getElementById('purchaseOldPrice-' + widgetId);\r\n                    var drawerTitle = document.getElementById('drawerTitle-' + widgetId);\r\n\r\n                    if (planName) planName.textContent = '-';\r\n                    if (finalPrice) finalPrice.textContent = '-';\r\n                    if (oldPrice) oldPrice.style.display = 'none';\r\n                    if (drawerTitle) drawerTitle.textContent = '\u062a\u06a9\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f';\r\n\r\n                    var gatewaySection = document.getElementById('gatewaySection-' + widgetId);\r\n                    if (gatewaySection) gatewaySection.style.display = 'flex';\r\n\r\n                    unlockAllPlans();\r\n                }\r\n\r\n                function addLockedTimerToPlans() {\r\n                    document.querySelectorAll('#plans-' + widgetId + ' .plan-card').forEach(function(card) {\r\n                        var pid = card.getAttribute('data-plan-id');\r\n                        if (!card.querySelector('.plan-locked-timer')) {\r\n                            var timerDiv = document.createElement('div');\r\n                            timerDiv.className = 'plan-locked-timer';\r\n                            timerDiv.id = 'lockedTimer-' + widgetId + '-' + pid;\r\n                            timerDiv.textContent = '';\r\n                            card.appendChild(timerDiv);\r\n                        }\r\n                    });\r\n                }\r\n                addLockedTimerToPlans();\r\n\r\n                function updateLockedTimers() {\r\n                    var lockData = localStorage.getItem(getGlobalLockKey());\r\n                    if (!lockData) {\r\n                        document.querySelectorAll('.plan-locked-timer').forEach(function(el) {\r\n                            el.textContent = '';\r\n                        });\r\n                        return;\r\n                    }\r\n                    try {\r\n                        var data = JSON.parse(lockData);\r\n                        if (!data.active) {\r\n                            document.querySelectorAll('.plan-locked-timer').forEach(function(el) {\r\n                                el.textContent = '';\r\n                            });\r\n                            return;\r\n                        }\r\n                        var endTime = parseInt(localStorage.getItem('qp_otp_endtime_' + widgetId + '_' + data.planId) || '0');\r\n                        var cooldownEnd = parseInt(localStorage.getItem('qp_otp_cooldown_' + widgetId + '_' + data.planId) || '0');\r\n                        var now = Date.now();\r\n                        var targetTime = endTime > now ? endTime : (cooldownEnd > now ? cooldownEnd : 0);\r\n\r\n                        document.querySelectorAll('#plans-' + widgetId + ' .plan-card').forEach(function(card) {\r\n                            var pid = card.getAttribute('data-plan-id');\r\n                            var timerEl = document.getElementById('lockedTimer-' + widgetId + '-' + pid);\r\n                            if (!timerEl) return;\r\n                            if (pid === data.planId) {\r\n                                timerEl.textContent = '';\r\n                                return;\r\n                            }\r\n                            if (targetTime > 0) {\r\n                                var remaining = Math.max(0, targetTime - now);\r\n                                var totalSeconds = Math.ceil(remaining \/ 1000);\r\n                                var minutes = Math.floor(totalSeconds \/ 60);\r\n                                var seconds = totalSeconds % 60;\r\n                                timerEl.textContent = '\u062a\u0627 \u0641\u0639\u0627\u0644 \u0634\u062f\u0646: ' + minutes + ':' + seconds.toString().padStart(2, '0');\r\n                            } else {\r\n                                timerEl.textContent = '';\r\n                            }\r\n                        });\r\n                    } catch (e) {}\r\n                }\r\n\r\n                function startLockedTimersInterval() {\r\n                    if (lockedPlansTimerInterval) clearInterval(lockedPlansTimerInterval);\r\n                    updateLockedTimers();\r\n                    lockedPlansTimerInterval = setInterval(updateLockedTimers, 1000);\r\n                }\r\n                startLockedTimersInterval();\r\n\r\n                function showToast(message, type) {\r\n                    type = type || 'error';\r\n                    var tc = document.getElementById('toastContainer-' + widgetId);\r\n                    if (!tc) return;\r\n                    var toast = document.createElement('div');\r\n                    var bgColor = type === 'success' ? '#10b981' : (type === 'warning' ? '#f59e0b' : '#ef4444');\r\n                    toast.style.cssText = 'background:' + bgColor + ';color:#fff;padding:0.75rem 1.25rem;border-radius:0.75rem;font-size:0.85rem;font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,0.2);display:flex;align-items:center;gap:0.5rem;pointer-events:auto;animation:toastIn 0.35s ease forwards;max-width:90vw;z-index:100000;';\r\n                    toast.innerHTML = '<span>' + message + '<\/span>';\r\n                    tc.appendChild(toast);\r\n                    setTimeout(function() {\r\n                        toast.style.animation = 'toastOut 0.35s ease forwards';\r\n                        setTimeout(function() {\r\n                            if (toast.parentNode) toast.parentNode.removeChild(toast);\r\n                        }, 350);\r\n                    }, 3500);\r\n                }\r\n\r\n                function openRulesDrawer() {\r\n                    if (rulesDrawer) rulesDrawer.classList.add('active');\r\n                    if (rulesOverlay) rulesOverlay.classList.add('active');\r\n                    document.body.style.overflow = 'hidden';\r\n                }\r\n\r\n                function closePurchaseDrawerOnly() {\r\n                    if (purchaseDrawer) purchaseDrawer.classList.remove('active');\r\n                    if (purchaseOverlay) purchaseOverlay.classList.remove('active');\r\n                }\r\n\r\n                if (hasTimer) {\r\n                    var timerStorageKey = 'qp_timer_' + timerKey,\r\n                        savedEndTime = localStorage.getItem(timerStorageKey);\r\n                    if (savedEndTime) {\r\n                        var endTime = parseInt(savedEndTime),\r\n                            now = Date.now();\r\n                        if (endTime > now) {\r\n                            remainingMs = endTime - now;\r\n                        } else {\r\n                            remainingMs = 0;\r\n                            timerExpired = true;\r\n                        }\r\n                    } else if (!timerExpired && initialRemainingMs > 0) {\r\n                        localStorage.setItem(timerStorageKey, (Date.now() + initialRemainingMs).toString());\r\n                    }\r\n\r\n                    function disablePurchase() {\r\n                        timerExpired = true;\r\n                        document.querySelectorAll('#plans-' + widgetId + ' .purchase-trigger').forEach(function(btn) {\r\n                            btn.disabled = true;\r\n                            btn.classList.add('disabled');\r\n                            btn.textContent = '\u0627\u062a\u0645\u0627\u0645 \u0645\u0647\u0644\u062a \u062a\u062e\u0641\u06cc\u0641';\r\n                        });\r\n\r\n                        updateStickyHeaderContent();\r\n                    }\r\n\r\n                    if (timerExpired) {\r\n                        disablePurchase();\r\n                    }\r\n                }\r\n\r\n                var stickyCards = document.querySelectorAll('#plans-' + widgetId + ' .plan-card');\r\n                var stickyHeaderEl = document.getElementById('stickyHeader-' + widgetId);\r\n                var stickyTimerInterval = null;\r\n\r\n                function getActivePlanCard() {\r\n                    var headerHeight = stickyHeaderEl ? stickyHeaderEl.offsetHeight : 60;\r\n                    var activeCard = stickyCards[0];\r\n                    for (var i = stickyCards.length - 1; i >= 0; i--) {\r\n                        var rect = stickyCards[i].getBoundingClientRect();\r\n                        if (rect.top <= headerHeight) {\r\n                            activeCard = stickyCards[i];\r\n                            break;\r\n                        }\r\n                    }\r\n                    return activeCard;\r\n                }\r\n\r\n                function updateStickyHeaderContent() {\r\n                    var activeCard = getActivePlanCard();\r\n                    if (!activeCard || !stickyHeaderEl) return;\r\n\r\n                    if (timerExpired) {\r\n                        var stockValEl = stickyHeaderEl.querySelector('.sticky-card:first-child .sticky-value');\r\n                        if (stockValEl) stockValEl.textContent = activeCard.getAttribute('data-plan-stock') || '-';\r\n                        var secondCard = stickyHeaderEl.querySelector('.sticky-card:last-child');\r\n                        if (secondCard) {\r\n                            var labelEl = secondCard.querySelector('.sticky-label');\r\n                            var valueEl = secondCard.querySelector('.sticky-value');\r\n                            if (labelEl) labelEl.textContent = '\u0627\u062a\u0645\u0627\u0645 \u0645\u0647\u0644\u062a \u062a\u062e\u0641\u06cc\u0641';\r\n                            if (valueEl) valueEl.textContent = '\u067e\u0627\u06cc\u0627\u0646 \u06cc\u0627\u0641\u062a';\r\n                        }\r\n                        if (stickyTimerInterval) clearInterval(stickyTimerInterval);\r\n                        return;\r\n                    }\r\n\r\n                    var stock = activeCard.getAttribute('data-plan-stock') || '-';\r\n                    var isFree = activeCard.getAttribute('data-plan-is-free') === '1';\r\n                    var price = activeCard.getAttribute('data-plan-price') || '0';\r\n                    var regularPrice = activeCard.getAttribute('data-plan-regular-price') || '';\r\n                    var saleEnd = activeCard.getAttribute('data-plan-sale-end') || '';\r\n                    var currency = activeCard.getAttribute('data-plan-currency') || '';\r\n\r\n                    var stockValEl = stickyHeaderEl.querySelector('.sticky-card:first-child .sticky-value');\r\n                    if (stockValEl) stockValEl.textContent = stock;\r\n\r\n                    var secondCard = stickyHeaderEl.querySelector('.sticky-card:last-child');\r\n                    if (!secondCard) return;\r\n                    var labelEl = secondCard.querySelector('.sticky-label');\r\n                    var valueEl = secondCard.querySelector('.sticky-value');\r\n                    if (!labelEl || !valueEl) return;\r\n\r\n                    if (stickyTimerInterval) clearInterval(stickyTimerInterval);\r\n\r\n                    if (isFree) {\r\n                        labelEl.textContent = '\u0631\u0627\u06cc\u06af\u0627\u0646';\r\n                        labelEl.style.color = '#10b981';\r\n                        valueEl.textContent = '\u0631\u0627\u06cc\u06af\u0627\u0646';\r\n                        valueEl.style.color = '#10b981';\r\n                    } else if (saleEnd && !isNaN(saleEnd)) {\r\n                        var now = Date.now();\r\n                        var remaining = parseInt(saleEnd) * 1000 - now;\r\n                        if (remaining > 0) {\r\n                            labelEl.textContent = specialDiscountLabel;\r\n                            labelEl.style.color = '#64748b';\r\n\r\n                            function tick() {\r\n                                var totalSec = Math.floor(remaining \/ 1000);\r\n                                var h = Math.floor(totalSec \/ 3600);\r\n                                var m = Math.floor((totalSec % 3600) \/ 60);\r\n                                var s = totalSec % 60;\r\n                                var pad = function(n) {\r\n                                    return n.toString().padStart(2, '0');\r\n                                };\r\n                                valueEl.textContent = pad(h) + ':' + pad(m) + ':' + pad(s);\r\n                                if (remaining <= 0) {\r\n                                    clearInterval(stickyTimerInterval);\r\n                                    labelEl.textContent = noDiscountLabel;\r\n                                    labelEl.style.color = '#64748b';\r\n                                    valueEl.textContent = price + ' ' + currency;\r\n                                }\r\n                                remaining -= 1000;\r\n                            }\r\n                            tick();\r\n                            stickyTimerInterval = setInterval(tick, 1000);\r\n                        } else {\r\n                            labelEl.textContent = noDiscountLabel;\r\n                            labelEl.style.color = '#64748b';\r\n                            valueEl.textContent = price + ' ' + currency;\r\n                        }\r\n                    } else {\r\n                        labelEl.textContent = noDiscountLabel;\r\n                        labelEl.style.color = '#64748b';\r\n                        if (regularPrice) {\r\n                            valueEl.innerHTML = '<span style=\"text-decoration:line-through;color:#94a3b8;\">' + regularPrice + ' ' + currency + '<\/span> ' + price + ' ' + currency;\r\n                        } else {\r\n                            valueEl.textContent = price + ' ' + currency;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                var ticking = false;\r\n                window.addEventListener('scroll', function() {\r\n                    if (!ticking) {\r\n                        requestAnimationFrame(function() {\r\n                            var startSentinel = document.getElementById('plans-start-sentinel-' + widgetId);\r\n                            var endSentinel = document.getElementById('plans-end-sentinel-' + widgetId);\r\n                            if (startSentinel && endSentinel && stickyHeaderEl) {\r\n                                var startTop = startSentinel.getBoundingClientRect().top;\r\n                                var endBottom = endSentinel.getBoundingClientRect().bottom;\r\n                                var headerH = stickyHeaderEl.offsetHeight;\r\n                                var shouldShow = startTop <= 0 && endBottom > headerH;\r\n                                stickyHeaderEl.classList.toggle('visible', shouldShow);\r\n                            }\r\n                            updateStickyHeaderContent();\r\n                            ticking = false;\r\n                        });\r\n                        ticking = true;\r\n                    }\r\n                });\r\n\r\n                if (stickyHeaderEl) updateStickyHeaderContent();\r\n\r\n                var videoContainer = document.getElementById('videoPlayerContainer-' + widgetId);\r\n                if (videoContainer) {\r\n                    var video = document.getElementById('promoVideo-' + widgetId);\r\n                    if (video) {\r\n                        videoContainer.addEventListener('click', function(e) {\r\n                            if (e.target === video) return;\r\n                            if (video.paused) {\r\n                                video.play().catch(function() {});\r\n                            } else {\r\n                                video.pause();\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n\r\n                function updateSubmitButton() {\r\n                    if (!purchaseSubmitBtn) return;\r\n                    var rulesEnabled = document.getElementById('purchaseCheckboxContainer-' + widgetId) !== null;\r\n                    var needOtp = otpEnabled;\r\n                    var shouldEnable = currentProductId !== null && (!needOtp || otpVerified);\r\n                    if (rulesEnabled && !isCheckboxChecked) shouldEnable = false;\r\n                    purchaseSubmitBtn.disabled = !shouldEnable;\r\n                    purchaseSubmitBtn.style.opacity = shouldEnable ? '1' : '0.5';\r\n                    purchaseSubmitBtn.style.cursor = shouldEnable ? 'pointer' : 'not-allowed';\r\n                }\r\n\r\n                function disableOtpInputs() {\r\n                    otpExpired = true;\r\n                    if (otpCodeInput) {\r\n                        otpCodeInput.classList.add('otp-input-disabled');\r\n                        otpCodeInput.readOnly = true;\r\n                        otpCodeInput.placeholder = '\u06a9\u062f \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647';\r\n                    }\r\n                    if (otpVerifyBtn) {\r\n                        otpVerifyBtn.disabled = true;\r\n                        otpVerifyBtn.style.opacity = '0.5';\r\n                    }\r\n                }\r\n\r\n                function enableOtpInputs() {\r\n                    otpExpired = false;\r\n                    if (otpCodeInput) {\r\n                        otpCodeInput.classList.remove('otp-input-disabled');\r\n                        otpCodeInput.readOnly = false;\r\n                        otpCodeInput.placeholder = '\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f';\r\n                    }\r\n                    if (otpVerifyBtn) {\r\n                        otpVerifyBtn.disabled = false;\r\n                        otpVerifyBtn.style.opacity = '1';\r\n                    }\r\n                }\r\n\r\n                function getPlanKey() {\r\n                    return 'qp_plan_' + widgetId + '_' + (currentProductId || 'null');\r\n                }\r\n\r\n                function getTimerEndKey() {\r\n                    return 'qp_otp_endtime_' + widgetId + '_' + (currentProductId || 'null');\r\n                }\r\n\r\n                function getGlobalLockKey() {\r\n                    return 'qp_global_lock_' + widgetId;\r\n                }\r\n\r\n                function getCooldownEndKey() {\r\n                    return 'qp_otp_cooldown_' + widgetId + '_' + (currentProductId || 'null');\r\n                }\r\n\r\n                function lockOtherPlans(mobile) {\r\n                    if (!otpEnabled) return;\r\n                    globalOtpActive = true;\r\n                    var allCards = document.querySelectorAll('#plans-' + widgetId + ' .plan-card');\r\n                    allCards.forEach(function(card) {\r\n                        var pid = card.getAttribute('data-plan-id');\r\n                        if (pid && pid !== currentProductId) {\r\n                            card.classList.add('plan-locked');\r\n                            lockedPlans[pid] = mobile;\r\n                        }\r\n                    });\r\n                    localStorage.setItem(getGlobalLockKey(), JSON.stringify({\r\n                        active: true,\r\n                        mobile: mobile,\r\n                        planId: currentProductId\r\n                    }));\r\n                    updateLockedTimers();\r\n                    startLockedTimersInterval();\r\n                }\r\n\r\n                function unlockAllPlans() {\r\n                    globalOtpActive = false;\r\n                    var allCards = document.querySelectorAll('#plans-' + widgetId + ' .plan-card');\r\n                    allCards.forEach(function(card) {\r\n                        card.classList.remove('plan-locked');\r\n                    });\r\n                    lockedPlans = {};\r\n                    localStorage.removeItem(getGlobalLockKey());\r\n                    updateLockedTimers();\r\n                    if (lockedPlansTimerInterval) clearInterval(lockedPlansTimerInterval);\r\n                }\r\n\r\n                function checkGlobalLock() {\r\n                    if (!otpEnabled) return;\r\n                    var lockData = localStorage.getItem(getGlobalLockKey());\r\n                    if (!lockData) return;\r\n                    try {\r\n                        var data = JSON.parse(lockData);\r\n                        if (data.active) {\r\n                            var endTime = parseInt(localStorage.getItem('qp_otp_endtime_' + widgetId + '_' + data.planId) || '0');\r\n                            var cooldownEnd = parseInt(localStorage.getItem('qp_otp_cooldown_' + widgetId + '_' + data.planId) || '0');\r\n                            var now = Date.now();\r\n                            if (endTime > now || cooldownEnd > now) {\r\n                                globalOtpActive = true;\r\n                                var allCards = document.querySelectorAll('#plans-' + widgetId + ' .plan-card');\r\n                                allCards.forEach(function(card) {\r\n                                    var pid = card.getAttribute('data-plan-id');\r\n                                    if (pid && pid !== data.planId) {\r\n                                        card.classList.add('plan-locked');\r\n                                        lockedPlans[pid] = data.mobile;\r\n                                    }\r\n                                });\r\n                                startLockedTimersInterval();\r\n                            } else {\r\n                                unlockAllPlans();\r\n                            }\r\n                        }\r\n                    } catch (e) {}\r\n                }\r\n                checkGlobalLock();\r\n\r\n                function checkServerCooldown() {\r\n                    if (!otpEnabled) return;\r\n                    var mobile = mobileInput ? mobileInput.value.replace(\/[^\\d]\/g, '') : '';\r\n                    if (!mobile || mobile.length !== 11 || !\/^09\\d{9}$\/.test(mobile)) return;\r\n\r\n                    var formData = new FormData();\r\n                    formData.append('action', 'quick_purchase_check_cooldown');\r\n                    formData.append('nonce', nonce);\r\n                    formData.append('mobile', mobile);\r\n\r\n                    fetch(ajaxUrl, {\r\n                        method: 'POST',\r\n                        body: formData\r\n                    }).then(function(r) {\r\n                        return r.json();\r\n                    }).then(function(d) {\r\n                        if (d.success && d.data && d.data.remaining_cooldown && d.data.remaining_cooldown > 0) {\r\n                            var remainingSeconds = Math.ceil(d.data.remaining_cooldown);\r\n                            startOtpCooldownTimer(remainingSeconds);\r\n                            if (otpSection) otpSection.style.display = 'none';\r\n                            if (otpTimer) otpTimer.textContent = '';\r\n                            if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                            savePlanState();\r\n                        }\r\n                    }).catch(function() {});\r\n                }\r\n\r\n                function updateOtpSendBtnCooldownText() {\r\n                    if (!otpSendBtn || !otpSendBtnText) return;\r\n                    if (!otpSendCooldown || otpSendCooldownRemaining <= 0) return;\r\n\r\n                    var totalSeconds = otpSendCooldownRemaining;\r\n                    var minutes = Math.floor(totalSeconds \/ 60);\r\n                    var seconds = totalSeconds % 60;\r\n                    otpSendBtnText.textContent = '\u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f ' + minutes + ':' + seconds.toString().padStart(2, '0');\r\n                }\r\n\r\n                function startOtpCooldownTimer(remainingSeconds) {\r\n                    otpSendCooldown = true;\r\n                    otpSendCooldownRemaining = remainingSeconds;\r\n\r\n                    var cooldownEndTime = Date.now() + (remainingSeconds * 1000);\r\n                    localStorage.setItem(getCooldownEndKey(), cooldownEndTime.toString());\r\n\r\n                    if (otpCooldownInterval) clearInterval(otpCooldownInterval);\r\n\r\n                    if (otpSendBtn) {\r\n                        otpSendBtn.style.display = 'inline-block';\r\n                        otpSendBtn.disabled = true;\r\n                        otpSendBtn.style.opacity = '0.5';\r\n                    }\r\n\r\n                    updateOtpSendBtnCooldownText();\r\n\r\n                    otpCooldownInterval = setInterval(function() {\r\n                        otpSendCooldownRemaining--;\r\n                        updateOtpSendBtnCooldownText();\r\n\r\n                        if (otpSendCooldownRemaining <= 0) {\r\n                            clearInterval(otpCooldownInterval);\r\n                            otpCooldownInterval = null;\r\n                            otpSendCooldown = false;\r\n                            otpSendCooldownRemaining = 0;\r\n                            localStorage.removeItem(getCooldownEndKey());\r\n\r\n                            if (otpSendBtn) {\r\n                                otpSendBtn.disabled = false;\r\n                                otpSendBtn.style.opacity = '1';\r\n                                if (otpSendBtnText) {\r\n                                    otpSendBtnText.textContent = otpSent ? '\u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u06a9\u062f' : '\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f';\r\n                                }\r\n                                if (!otpExpired && !otpSendLoading) {\r\n                                    var rawMobile = mobileInput ? mobileInput.value.replace(\/[^\\d]\/g, '') : '';\r\n                                    if (rawMobile.length === 11 && \/^09\\d{9}$\/.test(rawMobile)) {\r\n                                        otpSendBtn.style.display = 'inline-block';\r\n                                    }\r\n                                }\r\n                            }\r\n                            savePlanState();\r\n                        }\r\n                    }, 1000);\r\n                }\r\n\r\n                function startOtpTimer(expiryMinutes) {\r\n                    if (!otpEnabled) return;\r\n                    expiryMinutes = expiryMinutes || 2;\r\n                    var expiryMs = expiryMinutes * 60 * 1000;\r\n                    var endTime = Date.now() + expiryMs;\r\n                    localStorage.setItem(getTimerEndKey(), endTime.toString());\r\n                    otpExpired = false;\r\n                    otpSent = true;\r\n                    otpSendCooldown = false;\r\n                    otpSendCooldownRemaining = 0;\r\n                    if (otpCooldownInterval) {\r\n                        clearInterval(otpCooldownInterval);\r\n                        otpCooldownInterval = null;\r\n                    }\r\n                    localStorage.removeItem(getCooldownEndKey());\r\n\r\n                    if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                    enableOtpInputs();\r\n                    var mobile = mobileInput ? mobileInput.value.replace(\/[\\s\\-\\(\\)]\/g, '').substring(0, 11) : otpVerifiedMobile;\r\n                    lockOtherPlans(mobile);\r\n\r\n                    function updateTimer() {\r\n                        var now = Date.now();\r\n                        var remaining = Math.max(0, endTime - now);\r\n                        otpRemainingSeconds = Math.ceil(remaining \/ 1000);\r\n                        if (remaining <= 0) {\r\n                            clearInterval(otpTimerInterval);\r\n                            otpTimerInterval = null;\r\n                            if (otpTimer) otpTimer.textContent = '\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0645\u0646\u0642\u0636\u06cc \u0634\u062f.';\r\n                            otpExpired = true;\r\n                            otpSent = false;\r\n                            disableOtpInputs();\r\n                            unlockAllPlans();\r\n                            otpSendCooldown = false;\r\n                            otpSendCooldownRemaining = 0;\r\n                            if (otpCooldownInterval) {\r\n                                clearInterval(otpCooldownInterval);\r\n                                otpCooldownInterval = null;\r\n                            }\r\n                            localStorage.removeItem(getCooldownEndKey());\r\n                            if (otpSendBtn && !otpSendLoading) {\r\n                                otpSendBtn.disabled = false;\r\n                                otpSendBtn.style.opacity = '1';\r\n                                if (otpSendBtnText) otpSendBtnText.textContent = '\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f';\r\n                                var rawMobile = mobileInput ? mobileInput.value.replace(\/[^\\d]\/g, '') : '';\r\n                                if (rawMobile.length === 11 && \/^09\\d{9}$\/.test(rawMobile)) {\r\n                                    otpSendBtn.style.display = 'inline-block';\r\n                                }\r\n                            }\r\n                            if (otpTimer) otpTimer.textContent = '';\r\n                            savePlanState();\r\n                            return;\r\n                        }\r\n                        var m = Math.floor(remaining \/ 60000),\r\n                            s = Math.floor((remaining % 60000) \/ 1000);\r\n                        if (otpTimer) otpTimer.textContent = '\u0632\u0645\u0627\u0646 \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647: ' + m + ':' + s.toString().padStart(2, '0');\r\n                        otpTimerInterval = setTimeout(updateTimer, 1000);\r\n                    }\r\n                    updateTimer();\r\n                    if (otpSendBtn && !otpSendLoading) {\r\n                        otpSendBtn.disabled = true;\r\n                        otpSendBtn.style.opacity = '0.5';\r\n                        if (otpSendBtnText) otpSendBtnText.textContent = '\u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u06a9\u062f';\r\n                    }\r\n                }\r\n\r\n                function savePlanState() {\r\n                    if (!otpEnabled || !currentProductId) {\r\n                        savedOtpState = null;\r\n                        return;\r\n                    }\r\n                    var mobileVal = mobileInput ? mobileInput.value.replace(\/[\\s\\-\\(\\)]\/g, '') : (otpVerifiedMobile || '');\r\n                    var state = {\r\n                        productId: currentProductId,\r\n                        verified: otpVerified,\r\n                        mobile: mobileVal,\r\n                        sectionVisible: otpSection && otpSection.style.display === 'block',\r\n                        remaining: otpRemainingSeconds,\r\n                        expired: otpExpired,\r\n                        sent: otpSent,\r\n                        code: otpCodeInput ? otpCodeInput.value : '',\r\n                        sendLoading: otpSendLoading,\r\n                        verifyLoading: otpVerifyLoading,\r\n                        sendCooldown: otpSendCooldown,\r\n                        sendCooldownRemaining: otpSendCooldownRemaining,\r\n                        name: document.getElementById('purchaseName-' + widgetId) ? document.getElementById('purchaseName-' + widgetId).value : '',\r\n                        email: document.getElementById('purchaseEmail-' + widgetId) ? document.getElementById('purchaseEmail-' + widgetId).value : ''\r\n                    };\r\n                    savedOtpState = state;\r\n                    planStates[getPlanKey()] = state;\r\n                    localStorage.setItem(getPlanKey(), JSON.stringify(state));\r\n                }\r\n\r\n                function restorePlanState() {\r\n                    if (!otpEnabled) {\r\n                        savedOtpState = null;\r\n                        return false;\r\n                    }\r\n                    var key = getPlanKey();\r\n                    var savedStr = localStorage.getItem(key);\r\n                    if (!savedStr) {\r\n                        checkServerCooldown();\r\n                        savedOtpState = null;\r\n                        return false;\r\n                    }\r\n                    try {\r\n                        savedOtpState = JSON.parse(savedStr);\r\n                    } catch (e) {\r\n                        checkServerCooldown();\r\n                        savedOtpState = null;\r\n                        return false;\r\n                    }\r\n                    if (!savedOtpState || savedOtpState.productId !== currentProductId) {\r\n                        checkServerCooldown();\r\n                        savedOtpState = null;\r\n                        return false;\r\n                    }\r\n\r\n                    otpVerified = savedOtpState.verified;\r\n                    otpVerifiedMobile = savedOtpState.mobile;\r\n                    otpExpired = savedOtpState.expired || false;\r\n                    otpSent = savedOtpState.sent || false;\r\n                    otpSendLoading = savedOtpState.sendLoading || false;\r\n                    otpVerifyLoading = savedOtpState.verifyLoading || false;\r\n                    otpRemainingSeconds = savedOtpState.remaining || 0;\r\n                    otpSendCooldown = savedOtpState.sendCooldown || false;\r\n                    otpSendCooldownRemaining = savedOtpState.sendCooldownRemaining || 0;\r\n\r\n                    if (savedOtpState.name && document.getElementById('purchaseName-' + widgetId))\r\n                        document.getElementById('purchaseName-' + widgetId).value = savedOtpState.name;\r\n                    if (savedOtpState.email && document.getElementById('purchaseEmail-' + widgetId))\r\n                        document.getElementById('purchaseEmail-' + widgetId).value = savedOtpState.email;\r\n\r\n                    var cooldownEnd = parseInt(localStorage.getItem(getCooldownEndKey()) || '0');\r\n                    if (cooldownEnd > Date.now()) {\r\n                        var remaining = Math.ceil((cooldownEnd - Date.now()) \/ 1000);\r\n                        startOtpCooldownTimer(remaining);\r\n                    } else if (otpSendCooldown && otpSendCooldownRemaining > 0) {\r\n                        startOtpCooldownTimer(otpSendCooldownRemaining);\r\n                    } else {\r\n                        checkServerCooldown();\r\n                    }\r\n\r\n                    if (otpVerified) {\r\n                        if (otpSection) otpSection.style.display = 'none';\r\n                        if (otpVerifiedBadge) otpVerifiedBadge.style.display = 'flex';\r\n                        if (mobileInput) {\r\n                            mobileInput.readOnly = true;\r\n                            if (savedOtpState.mobile) mobileInput.value = savedOtpState.mobile;\r\n                        }\r\n                        if (otpSendBtn) otpSendBtn.style.display = 'none';\r\n                        if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                        if (otpTimer) otpTimer.textContent = '';\r\n                        if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n                        return true;\r\n                    }\r\n\r\n                    if (savedOtpState.mobile) {\r\n                        if (mobileInput) {\r\n                            mobileInput.value = savedOtpState.mobile;\r\n                            mobileInput.readOnly = false;\r\n                        }\r\n                        var rawMobile = savedOtpState.mobile.replace(\/[\\s\\-\\(\\)]\/g, '');\r\n\r\n                        if (otpSendLoading) {\r\n                            if (otpSendBtn) {\r\n                                otpSendBtn.style.display = 'inline-block';\r\n                                otpSendBtn.disabled = true;\r\n                                otpSendBtn.style.opacity = '0.5';\r\n                            }\r\n                            if (otpSendSpinner) otpSendSpinner.style.display = 'inline-block';\r\n                            if (otpSendBtnText) otpSendBtnText.textContent = '\u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0633\u0627\u0644...';\r\n                            if (otpSection) otpSection.style.display = 'block';\r\n                        } else if (otpSendBtn && \/^09\\d{9}$\/.test(rawMobile) && !otpSendCooldown) {\r\n                            otpSendBtn.style.display = 'inline-block';\r\n                            otpSendBtn.disabled = false;\r\n                            otpSendBtn.style.opacity = '1';\r\n                            if (otpSendBtnText) otpSendBtnText.textContent = otpSent ? '\u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u06a9\u062f' : '\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f';\r\n                        } else if (otpSendBtn && otpSendCooldown) {\r\n                            \/\/ \u062a\u0648\u0633\u0637 cooldown timer \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u0634\u0648\u062f\r\n                        }\r\n\r\n                        if ((savedOtpState.sectionVisible || otpSendLoading) && (otpSent || otpSendLoading)) {\r\n                            if (otpSection) otpSection.style.display = 'block';\r\n                            if (otpCodeInput) {\r\n                                otpCodeInput.value = savedOtpState.code || '';\r\n                                if (otpExpired) {\r\n                                    disableOtpInputs();\r\n                                } else {\r\n                                    enableOtpInputs();\r\n                                }\r\n                            }\r\n                            if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                            var endTime = parseInt(localStorage.getItem(getTimerEndKey()) || '0');\r\n                            var now = Date.now();\r\n                            if (otpVerifyLoading) {\r\n                                if (otpVerifyBtn) {\r\n                                    otpVerifyBtn.disabled = true;\r\n                                    otpVerifyBtn.style.opacity = '0.5';\r\n                                }\r\n                                if (otpVerifySpinner) otpVerifySpinner.style.display = 'inline-block';\r\n                                if (otpVerifyBtnText) otpVerifyBtnText.textContent = '...';\r\n                            } else if (!otpExpired && endTime > now && otpSent) {\r\n                                enableOtpInputs();\r\n                                otpRemainingSeconds = Math.ceil((endTime - now) \/ 1000);\r\n\r\n                                function resume() {\r\n                                    var n = Date.now();\r\n                                    var r = Math.max(0, endTime - n);\r\n                                    otpRemainingSeconds = Math.ceil(r \/ 1000);\r\n                                    if (r <= 0) {\r\n                                        clearInterval(otpTimerInterval);\r\n                                        otpTimerInterval = null;\r\n                                        if (otpTimer) otpTimer.textContent = '\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0645\u0646\u0642\u0636\u06cc \u0634\u062f.';\r\n                                        otpExpired = true;\r\n                                        otpSent = false;\r\n                                        disableOtpInputs();\r\n                                        unlockAllPlans();\r\n                                        otpSendCooldown = false;\r\n                                        otpSendCooldownRemaining = 0;\r\n                                        if (otpCooldownInterval) {\r\n                                            clearInterval(otpCooldownInterval);\r\n                                            otpCooldownInterval = null;\r\n                                        }\r\n                                        localStorage.removeItem(getCooldownEndKey());\r\n                                        if (otpSendBtn && !otpSendLoading) {\r\n                                            otpSendBtn.disabled = false;\r\n                                            otpSendBtn.style.opacity = '1';\r\n                                            if (otpSendBtnText) otpSendBtnText.textContent = '\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f';\r\n                                            var rm = mobileInput ? mobileInput.value.replace(\/[^\\d]\/g, '') : '';\r\n                                            if (rm.length === 11 && \/^09\\d{9}$\/.test(rm)) {\r\n                                                otpSendBtn.style.display = 'inline-block';\r\n                                            }\r\n                                        }\r\n                                        if (otpTimer) otpTimer.textContent = '';\r\n                                        savePlanState();\r\n                                        return;\r\n                                    }\r\n                                    var mm = Math.floor(r \/ 60000),\r\n                                        ss = Math.floor((r % 60000) \/ 1000);\r\n                                    if (otpTimer) otpTimer.textContent = '\u0632\u0645\u0627\u0646 \u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647: ' + mm + ':' + ss.toString().padStart(2, '0');\r\n                                    otpTimerInterval = setTimeout(resume, 1000);\r\n                                }\r\n                                resume();\r\n                            } else if (otpExpired && !otpSendLoading) {\r\n                                disableOtpInputs();\r\n                                if (otpTimer) otpTimer.textContent = '\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0645\u0646\u0642\u0636\u06cc \u0634\u062f.';\r\n                            }\r\n                        } else {\r\n                            if (otpSection) otpSection.style.display = 'none';\r\n                            if (otpTimer) otpTimer.textContent = '';\r\n                            if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                        }\r\n                    }\r\n                    updateSubmitButton();\r\n                    return true;\r\n                }\r\n\r\n                function resetPlanState() {\r\n                    otpVerified = !otpEnabled;\r\n                    otpVerifiedMobile = '';\r\n                    savedOtpState = null;\r\n                    otpExpired = false;\r\n                    otpSent = false;\r\n                    otpSendLoading = false;\r\n                    otpVerifyLoading = false;\r\n                    otpRemainingSeconds = 0;\r\n                    otpSendCooldown = false;\r\n                    otpSendCooldownRemaining = 0;\r\n\r\n                    if (otpCooldownInterval) {\r\n                        clearInterval(otpCooldownInterval);\r\n                        otpCooldownInterval = null;\r\n                    }\r\n\r\n                    if (currentProductId) {\r\n                        localStorage.removeItem(getPlanKey());\r\n                        localStorage.removeItem(getTimerEndKey());\r\n                        localStorage.removeItem(getCooldownEndKey());\r\n                    }\r\n                    if (otpSection) otpSection.style.display = 'none';\r\n                    if (otpVerifiedBadge) otpVerifiedBadge.style.display = 'none';\r\n                    if (otpCodeInput) {\r\n                        otpCodeInput.value = '';\r\n                        enableOtpInputs();\r\n                    }\r\n                    if (otpError) otpError.style.display = 'none';\r\n                    if (otpTimer) otpTimer.textContent = '';\r\n                    if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                    otpTimerInterval = null;\r\n                    if (mobileInput) {\r\n                        mobileInput.value = '';\r\n                        mobileInput.readOnly = false;\r\n                    }\r\n                    if (document.getElementById('purchaseName-' + widgetId)) document.getElementById('purchaseName-' + widgetId).value = '';\r\n                    if (document.getElementById('purchaseEmail-' + widgetId)) document.getElementById('purchaseEmail-' + widgetId).value = '';\r\n                    if (otpSendBtn) {\r\n                        otpSendBtn.disabled = false;\r\n                        otpSendBtn.style.opacity = '1';\r\n                        if (otpSendBtnText) otpSendBtnText.textContent = '\u0627\u0631\u0633\u0627\u0644 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f';\r\n                        otpSendBtn.style.display = 'none';\r\n                    }\r\n                    if (otpSendSpinner) otpSendSpinner.style.display = 'none';\r\n                    if (otpVerifyBtn) {\r\n                        otpVerifyBtn.disabled = false;\r\n                        otpVerifyBtn.style.opacity = '1';\r\n                        if (otpVerifyBtnText) otpVerifyBtnText.textContent = '\u062a\u0623\u06cc\u06cc\u062f';\r\n                    }\r\n                    if (otpVerifySpinner) otpVerifySpinner.style.display = 'none';\r\n                    updateSubmitButton();\r\n                }\r\n\r\n                if (mobileInput) {\r\n                    mobileInput.addEventListener('input', function() {\r\n                        if (!otpEnabled) return;\r\n                        var raw = this.value.replace(\/[\\s\\-\\(\\)]\/g, '');\r\n                        this.value = this.value.replace(\/[^\\d\\s\\-\\(\\)]\/g, '');\r\n                        if (otpVerified && raw !== otpVerifiedMobile) {\r\n                            resetPlanState();\r\n                        }\r\n                        var cleanMobile = raw.replace(\/[^\\d]\/g, '');\r\n                        if (cleanMobile.length === 0) {\r\n                            if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n                            if (otpSendBtn && !otpSendCooldown) otpSendBtn.style.display = 'none';\r\n                        } else if (cleanMobile.length < 11) {\r\n                            if (mobileValidationMsg) {\r\n                                mobileValidationMsg.textContent = '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u06f1\u06f1 \u0631\u0642\u0645 \u0628\u0627\u0634\u062f.';\r\n                                mobileValidationMsg.style.display = 'block';\r\n                            }\r\n                            if (otpSendBtn && !otpSendCooldown) otpSendBtn.style.display = 'none';\r\n                        } else if (cleanMobile.length === 11) {\r\n                            if (!\/^09\\d{9}$\/.test(cleanMobile)) {\r\n                                if (mobileValidationMsg) {\r\n                                    mobileValidationMsg.textContent = '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0627 \u06f0\u06f9 \u0634\u0631\u0648\u0639 \u0634\u0648\u062f.';\r\n                                    mobileValidationMsg.style.display = 'block';\r\n                                }\r\n                                if (otpSendBtn && !otpSendCooldown) otpSendBtn.style.display = 'none';\r\n                            } else {\r\n                                if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n                                if (otpSendBtn && !otpVerified && !otpSendCooldown && !otpSendLoading && !otpSent) {\r\n                                    otpSendBtn.style.display = 'inline-block';\r\n                                }\r\n                            }\r\n                        } else {\r\n                            if (mobileValidationMsg) {\r\n                                mobileValidationMsg.textContent = '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u06f1\u06f1 \u0631\u0642\u0645 \u0628\u0627\u0634\u062f.';\r\n                                mobileValidationMsg.style.display = 'block';\r\n                            }\r\n                            if (otpSendBtn && !otpSendCooldown) otpSendBtn.style.display = 'none';\r\n                        }\r\n                    });\r\n                }\r\n\r\n                if (otpSendBtn && mobileInput) {\r\n                    otpSendBtn.addEventListener('click', function() {\r\n                        if (!otpEnabled) return;\r\n\r\n                        if (otpSendCooldown || otpSendLoading) {\r\n                            if (otpSendCooldown && otpSendCooldownRemaining > 0) {\r\n                                var minutes = Math.floor(otpSendCooldownRemaining \/ 60);\r\n                                var seconds = otpSendCooldownRemaining % 60;\r\n                                showToast('\u0644\u0637\u0641\u0627\u064b ' + minutes + ' \u062f\u0642\u06cc\u0642\u0647 \u0648 ' + seconds + ' \u062b\u0627\u0646\u06cc\u0647 \u062f\u06cc\u06af\u0631 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f.', 'warning');\r\n                                return;\r\n                            }\r\n                            if (otpSendLoading) {\r\n                                showToast('\u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0633\u0627\u0644... \u0644\u0637\u0641\u0627\u064b \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f.', 'warning');\r\n                                return;\r\n                            }\r\n                            showToast('\u0644\u0637\u0641\u0627\u064b \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f.', 'warning');\r\n                            return;\r\n                        }\r\n\r\n                        var mobile = mobileInput.value.replace(\/[\\s\\-\\(\\)]\/g, '').substring(0, 11);\r\n                        if (!\/^09\\d{9}$\/.test(mobile)) {\r\n                            showToast('\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a.', 'warning');\r\n                            return;\r\n                        }\r\n\r\n                        otpVerified = false;\r\n                        otpVerifiedMobile = mobile;\r\n                        otpExpired = false;\r\n                        otpSent = false;\r\n                        otpSendLoading = true;\r\n\r\n                        if (otpVerifiedBadge) otpVerifiedBadge.style.display = 'none';\r\n                        if (otpError) otpError.style.display = 'none';\r\n                        if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n                        updateSubmitButton();\r\n\r\n                        if (otpSection) otpSection.style.display = 'block';\r\n                        if (otpCodeInput) {\r\n                            otpCodeInput.value = '';\r\n                            enableOtpInputs();\r\n                            otpCodeInput.focus();\r\n                        }\r\n                        if (otpSendSpinner) otpSendSpinner.style.display = 'inline-block';\r\n                        if (otpSendBtnText) otpSendBtnText.textContent = '\u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0633\u0627\u0644...';\r\n                        otpSendBtn.disabled = true;\r\n                        otpSendBtn.style.opacity = '0.5';\r\n                        savePlanState();\r\n\r\n                        var formData = new FormData();\r\n                        formData.append('action', 'quick_purchase_send_otp');\r\n                        formData.append('nonce', nonce);\r\n                        formData.append('mobile', mobile);\r\n                        formData.append('widget_instance_id', smsSettings.widget_instance_id);\r\n                        formData.append('code_length', smsSettings.code_length);\r\n                        formData.append('expiry_minutes', smsSettings.expiry_minutes);\r\n                        formData.append('max_send_attempts', smsSettings.max_send_attempts);\r\n                        formData.append('send_cooldown_minutes', smsSettings.send_cooldown_minutes);\r\n\r\n                        fetch(ajaxUrl, {\r\n                            method: 'POST',\r\n                            body: formData\r\n                        }).then(function(r) {\r\n                            return r.json();\r\n                        }).then(function(d) {\r\n                            otpSendLoading = false;\r\n                            if (otpSendSpinner) otpSendSpinner.style.display = 'none';\r\n\r\n                            if (!d.success) {\r\n                                var errorMsg = d.data && d.data.message ? d.data.message : '\u062e\u0637\u0627';\r\n\r\n                                if (d.data && d.data.remaining_cooldown && d.data.remaining_cooldown > 0) {\r\n                                    var remainingSeconds = Math.ceil(d.data.remaining_cooldown);\r\n\r\n                                    if (otpSendBtn) {\r\n                                        otpSendBtn.style.display = 'inline-block';\r\n                                        otpSendBtn.disabled = true;\r\n                                        otpSendBtn.style.opacity = '0.5';\r\n                                    }\r\n\r\n                                    startOtpCooldownTimer(remainingSeconds);\r\n\r\n                                    var remainingMin = Math.ceil(remainingSeconds \/ 60);\r\n                                    errorMsg = '\u062d\u062f\u0627\u06a9\u062b\u0631 ' + smsSettings.max_send_attempts + ' \u0628\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u0627\u0632 \u0627\u0633\u062a. ' + remainingMin + ' \u062f\u0642\u06cc\u0642\u0647 \u062f\u06cc\u06af\u0631 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f.';\r\n\r\n                                    showToast(errorMsg, 'error');\r\n                                    unlockAllPlans();\r\n                                    otpSent = false;\r\n                                    if (otpSection) otpSection.style.display = 'none';\r\n                                    if (otpTimer) otpTimer.textContent = '';\r\n                                    if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                                    savePlanState();\r\n                                } else {\r\n                                    showToast(errorMsg, 'error');\r\n                                    unlockAllPlans();\r\n                                    resetPlanState();\r\n                                }\r\n                            } else {\r\n                                var successMsg = '\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0628\u0647 ' + mobile + ' \u0627\u0631\u0633\u0627\u0644 \u0634\u062f.';\r\n                                if (d.data && d.data.attempts_left !== undefined) {\r\n                                    successMsg += ' (' + d.data.attempts_left + ' \u0627\u0631\u0633\u0627\u0644 \u062f\u06cc\u06af\u0631 \u0645\u062c\u0627\u0632 \u0627\u0633\u062a)';\r\n                                }\r\n                                showToast(successMsg, 'success');\r\n                                if (otpSendBtnText) otpSendBtnText.textContent = '\u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u06a9\u062f';\r\n                                startOtpTimer(smsSettings.expiry_minutes || 2);\r\n                                savePlanState();\r\n                            }\r\n                        }).catch(function() {\r\n                            otpSendLoading = false;\r\n                            if (otpSendSpinner) otpSendSpinner.style.display = 'none';\r\n                            showToast('\u062e\u0637\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631.', 'error');\r\n                            unlockAllPlans();\r\n                            resetPlanState();\r\n                        });\r\n                    });\r\n                }\r\n\r\n                if (otpVerifyBtn && otpCodeInput) {\r\n                    otpCodeInput.addEventListener('input', function() {\r\n                        this.value = this.value.replace(\/[^\\d]\/g, '');\r\n                    });\r\n                    otpVerifyBtn.addEventListener('click', function() {\r\n                        if (!otpEnabled) return;\r\n                        if (otpExpired || otpVerifyLoading) {\r\n                            if (otpExpired) {\r\n                                showToast('\u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0644\u0637\u0641\u0627\u064b \u0645\u062c\u062f\u062f\u0627\u064b \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0647\u06cc\u062f.', 'warning');\r\n                            } else {\r\n                                showToast('\u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc... \u0644\u0637\u0641\u0627\u064b \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f.', 'warning');\r\n                            }\r\n                            return;\r\n                        }\r\n                        var code = otpCodeInput.value.trim(),\r\n                            codeLen = smsSettings.code_length || 5;\r\n                        if (!code || code.length !== codeLen) {\r\n                            if (otpError) {\r\n                                otpError.textContent = '\u06a9\u062f ' + codeLen + ' \u0631\u0642\u0645\u06cc \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.';\r\n                                otpError.style.display = 'block';\r\n                            }\r\n                            return;\r\n                        }\r\n                        var mobile = mobileInput ? mobileInput.value.replace(\/[\\s\\-\\(\\)]\/g, '').substring(0, 11) : otpVerifiedMobile;\r\n                        otpVerifyLoading = true;\r\n                        if (otpVerifySpinner) otpVerifySpinner.style.display = 'inline-block';\r\n                        if (otpVerifyBtn) {\r\n                            otpVerifyBtn.disabled = true;\r\n                            otpVerifyBtn.style.opacity = '0.5';\r\n                        }\r\n                        if (otpVerifyBtnText) otpVerifyBtnText.textContent = '...';\r\n                        if (otpError) otpError.style.display = 'none';\r\n                        savePlanState();\r\n\r\n                        var formData = new FormData();\r\n                        formData.append('action', 'quick_purchase_verify_otp');\r\n                        formData.append('nonce', nonce);\r\n                        formData.append('mobile', mobile);\r\n                        formData.append('code', code);\r\n                        formData.append('max_attempts', smsSettings.max_attempts || 5);\r\n                        formData.append('attempt_lock_minutes', smsSettings.attempt_lock_minutes || 15);\r\n\r\n                        fetch(ajaxUrl, {\r\n                            method: 'POST',\r\n                            body: formData\r\n                        }).then(function(r) {\r\n                            return r.json();\r\n                        }).then(function(d) {\r\n                            otpVerifyLoading = false;\r\n                            if (otpVerifySpinner) otpVerifySpinner.style.display = 'none';\r\n                            if (otpVerifyBtn) {\r\n                                otpVerifyBtn.disabled = false;\r\n                                otpVerifyBtn.style.opacity = '1';\r\n                            }\r\n                            if (otpVerifyBtnText) otpVerifyBtnText.textContent = '\u062a\u0623\u06cc\u06cc\u062f';\r\n\r\n                            if (d.success) {\r\n                                otpVerified = true;\r\n                                otpVerifiedMobile = mobile;\r\n                                if (otpSection) otpSection.style.display = 'none';\r\n                                if (otpVerifiedBadge) otpVerifiedBadge.style.display = 'flex';\r\n                                if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n                                if (otpTimer) otpTimer.textContent = '';\r\n                                localStorage.removeItem(getTimerEndKey());\r\n                                if (mobileInput) mobileInput.readOnly = true;\r\n                                if (otpSendBtn) otpSendBtn.style.display = 'none';\r\n                                if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n                                unlockAllPlans();\r\n\r\n                                otpSendCooldown = false;\r\n                                otpSendCooldownRemaining = 0;\r\n                                if (otpCooldownInterval) {\r\n                                    clearInterval(otpCooldownInterval);\r\n                                    otpCooldownInterval = null;\r\n                                }\r\n                                localStorage.removeItem(getCooldownEndKey());\r\n\r\n                                savedOtpState = null;\r\n                                savePlanState();\r\n                                updateSubmitButton();\r\n                                showToast('\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062a\u0623\u06cc\u06cc\u062f \u0634\u062f.', 'success');\r\n                            } else {\r\n                                if (otpError) {\r\n                                    var errorMsg = d.data && d.data.message ? d.data.message : '\u06a9\u062f \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.';\r\n                                    if (d.data && d.data.attempts_left !== undefined && d.data.attempts_left > 0) {\r\n                                        errorMsg += ' (' + d.data.attempts_left + ' \u062a\u0644\u0627\u0634 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647)';\r\n                                    }\r\n                                    otpError.textContent = errorMsg;\r\n                                    otpError.style.display = 'block';\r\n                                }\r\n                                savePlanState();\r\n                            }\r\n                        }).catch(function() {\r\n                            otpVerifyLoading = false;\r\n                            if (otpVerifySpinner) otpVerifySpinner.style.display = 'none';\r\n                            if (otpVerifyBtn) {\r\n                                otpVerifyBtn.disabled = false;\r\n                                otpVerifyBtn.style.opacity = '1';\r\n                            }\r\n                            if (otpVerifyBtnText) otpVerifyBtnText.textContent = '\u062a\u0623\u06cc\u06cc\u062f';\r\n                            showToast('\u062e\u0637\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631.', 'error');\r\n                        });\r\n                    });\r\n                }\r\n\r\n                function openPurchaseDrawer(btn) {\r\n                    if (!purchaseDrawer || !purchaseOverlay) return;\r\n                    if (hasTimer && timerExpired) {\r\n                        showToast('\u0645\u0647\u0644\u062a \u062a\u062e\u0641\u06cc\u0641 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a.', 'warning');\r\n                        return;\r\n                    }\r\n                    if (btn.classList.contains('disabled')) {\r\n                        showToast('\u0627\u06cc\u0646 \u067e\u0644\u0646 \u0646\u0627\u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a.', 'warning');\r\n                        return;\r\n                    }\r\n\r\n                    if (currentProductId && otpEnabled) {\r\n                        savePlanState();\r\n                    }\r\n                    var prevProductId = currentProductId;\r\n                    currentProductId = btn.dataset.productId;\r\n                    currentIsFree = btn.dataset.isFree === '1';\r\n\r\n                    if (otpEnabled && lockedPlans[currentProductId] && !currentIsFree) {\r\n                        var timerEl = document.getElementById('lockedTimer-' + widgetId + '-' + currentProductId);\r\n                        var msg = timerEl && timerEl.textContent ? timerEl.textContent : '\u0627\u06cc\u0646 \u067e\u0644\u0646 \u0645\u0648\u0642\u062a\u0627\u064b \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a.';\r\n                        showToast(msg, 'warning');\r\n                        currentProductId = prevProductId;\r\n                        return;\r\n                    }\r\n\r\n                    if (otpEnabled && globalOtpActive && !currentIsFree && prevProductId !== currentProductId) {\r\n                        var lockData = JSON.parse(localStorage.getItem(getGlobalLockKey()) || '{}');\r\n                        if (lockData.planId && lockData.planId !== currentProductId) {\r\n                            var timerEl2 = document.getElementById('lockedTimer-' + widgetId + '-' + currentProductId);\r\n                            var msg2 = timerEl2 && timerEl2.textContent ? timerEl2.textContent : '\u0627\u06cc\u0646 \u067e\u0644\u0646 \u0645\u0648\u0642\u062a\u0627\u064b \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a.';\r\n                            showToast(msg2, 'warning');\r\n                            currentProductId = prevProductId;\r\n                            return;\r\n                        }\r\n                    }\r\n\r\n                    var pn = document.getElementById('purchasePlanName-' + widgetId),\r\n                        pf = document.getElementById('purchaseFinalPrice-' + widgetId),\r\n                        po = document.getElementById('purchaseOldPrice-' + widgetId),\r\n                        dt = document.getElementById('drawerTitle-' + widgetId),\r\n                        gs = document.getElementById('gatewaySection-' + widgetId);\r\n\r\n                    if (pn) pn.textContent = btn.dataset.planName;\r\n                    var currency = btn.dataset.currency || '';\r\n\r\n                    if (currentIsFree) {\r\n                        if (pf) pf.textContent = btn.dataset.planPrice;\r\n                        if (po) po.style.display = 'none';\r\n                    } else {\r\n                        if (pf) pf.innerHTML = '<span class=\"price-number\">' + btn.dataset.planPrice + '<\/span> <span class=\"price-currency\">' + currency + '<\/span>';\r\n                        if (po) {\r\n                            if (btn.dataset.planOldPrice) {\r\n                                po.innerHTML = '<span class=\"price-number\">' + btn.dataset.planOldPrice + '<\/span> <span class=\"price-currency\">' + currency + '<\/span>';\r\n                                po.style.display = 'block';\r\n                            } else {\r\n                                po.style.display = 'none';\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    if (dt) dt.textContent = currentIsFree ? '\u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0627\u06cc\u06af\u0627\u0646' : '\u062a\u06a9\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f';\r\n                    if (gs) {\r\n                        gs.style.display = currentIsFree ? 'none' : 'flex';\r\n                        if (!currentIsFree) {\r\n                            var fr = document.querySelector('#gatewayGroup-' + widgetId + ' input[type=\"radio\"]');\r\n                            if (fr) fr.checked = true;\r\n                        }\r\n                    }\r\n\r\n                    if (purchaseSubmitBtn) {\r\n                        purchaseSubmitBtn.style.background = currentIsFree ? '#10b981' : '';\r\n                        purchaseSubmitBtn.querySelector('span').textContent = currentIsFree ? '\u062f\u0631\u06cc\u0627\u0641\u062a \u0631\u0627\u06cc\u06af\u0627\u0646' : '\u067e\u0631\u062f\u0627\u062e\u062a \u0648 \u062a\u06a9\u0645\u06cc\u0644 \u062e\u0631\u06cc\u062f';\r\n                    }\r\n\r\n                    document.getElementById('nameError-' + widgetId).style.display = 'none';\r\n                    document.getElementById('mobileError-' + widgetId).style.display = 'none';\r\n                    document.getElementById('emailError-' + widgetId).style.display = 'none';\r\n                    document.getElementById('purchaseLoading-' + widgetId).style.display = 'none';\r\n                    if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n\r\n                    if (prevProductId !== currentProductId) {\r\n                        if (mobileInput) mobileInput.value = '';\r\n                        if (document.getElementById('purchaseName-' + widgetId)) document.getElementById('purchaseName-' + widgetId).value = '';\r\n                        if (document.getElementById('purchaseEmail-' + widgetId)) document.getElementById('purchaseEmail-' + widgetId).value = '';\r\n                        if (otpSection) otpSection.style.display = 'none';\r\n                        if (otpTimer) otpTimer.textContent = '';\r\n                        if (otpTimerInterval) clearInterval(otpTimerInterval);\r\n\r\n                        otpVerified = !otpEnabled;\r\n                        otpSent = false;\r\n                        otpSendCooldown = false;\r\n                        otpSendCooldownRemaining = 0;\r\n                        otpSendLoading = false;\r\n                        otpVerifyLoading = false;\r\n\r\n                        if (otpCooldownInterval) {\r\n                            clearInterval(otpCooldownInterval);\r\n                            otpCooldownInterval = null;\r\n                        }\r\n                        localStorage.removeItem(getCooldownEndKey());\r\n                    }\r\n\r\n                    if (otpEnabled) {\r\n                        if (!restorePlanState()) {\r\n                            resetPlanState();\r\n                        }\r\n                    } else {\r\n                        otpVerified = true;\r\n                        savedOtpState = null;\r\n                        if (mobileValidationMsg) mobileValidationMsg.style.display = 'none';\r\n                    }\r\n\r\n                    isCheckboxChecked = false;\r\n                    if (purchaseCheckbox) purchaseCheckbox.classList.remove('checked');\r\n\r\n                    purchaseDrawer.classList.add('active');\r\n                    purchaseOverlay.classList.add('active');\r\n                    document.body.style.overflow = 'hidden';\r\n                    updateSubmitButton();\r\n                }\r\n\r\n                function closePurchaseDrawer() {\r\n                    if (otpEnabled) {\r\n                        savePlanState();\r\n                    } else {\r\n                        savedOtpState = null;\r\n                    }\r\n                    if (purchaseDrawer) purchaseDrawer.classList.remove('active');\r\n                    if (purchaseOverlay) purchaseOverlay.classList.remove('active');\r\n                    if (!(rulesDrawer && rulesDrawer.classList.contains('active')) && !(storyModalOverlay && storyModalOverlay.classList.contains('active'))) {\r\n                        document.body.style.overflow = '';\r\n                    }\r\n                }\r\n\r\n                document.querySelectorAll('#plans-' + widgetId + ' .purchase-trigger').forEach(function(b) {\r\n                    b.addEventListener('click', function() {\r\n                        if (b.disabled) return;\r\n                        openPurchaseDrawer(b);\r\n                    });\r\n                });\r\n\r\n                if (closePurchaseDrawerBtn) closePurchaseDrawerBtn.addEventListener('click', closePurchaseDrawer);\r\n                if (purchaseOverlay) purchaseOverlay.addEventListener('click', function(e) {\r\n                    if (e.target === purchaseOverlay) closePurchaseDrawer();\r\n                });\r\n\r\n                if (purchaseCheckboxContainer) purchaseCheckboxContainer.addEventListener('click', function() {\r\n                    isCheckboxChecked = !isCheckboxChecked;\r\n                    if (purchaseCheckbox) purchaseCheckbox.classList.toggle('checked', isCheckboxChecked);\r\n                    updateSubmitButton();\r\n                });\r\n\r\n                var purchaseRulesLink = document.getElementById('purchaseRulesLink-' + widgetId);\r\n                if (purchaseRulesLink) {\r\n                    purchaseRulesLink.addEventListener('click', function(e) {\r\n                        e.preventDefault();\r\n                        e.stopPropagation();\r\n                        savePlanState();\r\n                        closePurchaseDrawerOnly();\r\n                        openRulesDrawer();\r\n                    });\r\n                }\r\n\r\n                function validateName(n) {\r\n                    if (!n || n.trim().length < 3) return '\u0646\u0627\u0645 \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 \u06f3 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0627\u0634\u062f.';\r\n                    if (n.trim().length > 50) return '\u0646\u0627\u0645 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 50 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0627\u0634\u062f.';\r\n                    if (!\/^[\\u0600-\\u06FF\\s]+$\/.test(n.trim())) return '\u0646\u0627\u0645 \u0628\u0627\u06cc\u062f \u0641\u0627\u0631\u0633\u06cc \u0628\u0627\u0634\u062f.';\r\n                    return null;\r\n                }\r\n\r\n                function validateMobile(m) {\r\n                    if (!m || m.trim().length === 0) return '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a.';\r\n                    var clean = m.replace(\/[\\s\\-\\(\\)]\/g, '');\r\n                    if (clean.length !== 11) return '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u06f1\u06f1 \u0631\u0642\u0645 \u0628\u0627\u0634\u062f.';\r\n                    if (!\/^09\\d{9}$\/.test(clean)) return '\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a. (\u0628\u0627\u06cc\u062f \u0628\u0627 \u06f0\u06f9 \u0634\u0631\u0648\u0639 \u0634\u0648\u062f)';\r\n                    return null;\r\n                }\r\n\r\n                function validateEmail(e) {\r\n                    if (!e || e.trim().length === 0) return '\u0627\u06cc\u0645\u06cc\u0644 \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a.';\r\n                    if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(e.trim())) return '\u0627\u06cc\u0645\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a.';\r\n                    return null;\r\n                }\r\n\r\n                if (purchaseSubmitBtn) {\r\n                    purchaseSubmitBtn.addEventListener('click', function() {\r\n                        if (purchaseSubmitBtn.disabled) return;\r\n                        var nameEl = document.getElementById('purchaseName-' + widgetId),\r\n                            mobileEl = document.getElementById('purchaseMobile-' + widgetId),\r\n                            emailEl = document.getElementById('purchaseEmail-' + widgetId);\r\n                        var name = nameEl ? nameEl.value : '',\r\n                            mobile = mobileEl ? mobileEl.value.replace(\/[\\s\\-\\(\\)]\/g, '') : '',\r\n                            email = emailEl ? emailEl.value : '';\r\n                        var ne = validateName(name),\r\n                            me = validateMobile(mobile),\r\n                            ee = validateEmail(email),\r\n                            hasError = false;\r\n                        var nel = document.getElementById('nameError-' + widgetId),\r\n                            mel = document.getElementById('mobileError-' + widgetId),\r\n                            eel = document.getElementById('emailError-' + widgetId);\r\n                        if (ne) {\r\n                            nel.textContent = ne;\r\n                            nel.style.display = 'block';\r\n                            hasError = true;\r\n                        } else nel.style.display = 'none';\r\n                        if (me) {\r\n                            mel.textContent = me;\r\n                            mel.style.display = 'block';\r\n                            hasError = true;\r\n                        } else mel.style.display = 'none';\r\n                        if (ee) {\r\n                            eel.textContent = ee;\r\n                            eel.style.display = 'block';\r\n                            hasError = true;\r\n                        } else eel.style.display = 'none';\r\n                        if (!isCheckboxChecked && document.getElementById('purchaseCheckboxContainer-' + widgetId)) {\r\n                            showToast('\u0644\u0637\u0641\u0627\u064b \u0642\u0648\u0627\u0646\u06cc\u0646 \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u06cc\u062f.', 'warning');\r\n                            hasError = true;\r\n                        }\r\n                        if (otpEnabled && !otpVerified) {\r\n                            showToast('\u0644\u0637\u0641\u0627\u064b \u0627\u0628\u062a\u062f\u0627 \u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.', 'warning');\r\n                            hasError = true;\r\n                        }\r\n                        if (hasError || !currentProductId) return;\r\n\r\n                        var selectedGateway = document.querySelector('#gatewayGroup-' + widgetId + ' input[type=\"radio\"]:checked'),\r\n                            gatewayId = selectedGateway ? selectedGateway.value : '';\r\n                        var submitBtn = purchaseSubmitBtn,\r\n                            loadingEl = document.getElementById('purchaseLoading-' + widgetId);\r\n\r\n                        submitBtn.disabled = true;\r\n                        submitBtn.style.opacity = '0.6';\r\n                        if (loadingEl) loadingEl.style.display = 'block';\r\n\r\n                        var formData = new FormData();\r\n                        formData.append('action', 'quick_purchase_create_order');\r\n                        formData.append('nonce', nonce);\r\n                        formData.append('product_id', currentProductId);\r\n                        formData.append('name', name.trim());\r\n                        formData.append('mobile', mobile);\r\n                        formData.append('email', email.trim());\r\n                        formData.append('gateway', gatewayId);\r\n                        formData.append('is_free', currentIsFree ? '1' : '0');\r\n                        formData.append('widget_id', widgetId);\r\n                        formData.append('otp_verified', (!otpEnabled || otpVerified) ? '1' : '0');\r\n\r\n                        fetch(ajaxUrl, {\r\n                            method: 'POST',\r\n                            body: formData\r\n                        }).then(function(r) {\r\n                            return r.json();\r\n                        }).then(function(d) {\r\n                            submitBtn.disabled = false;\r\n                            submitBtn.style.opacity = '1';\r\n                            if (loadingEl) loadingEl.style.display = 'none';\r\n\r\n                            if (d.success) {\r\n                                clearAllCache();\r\n                                resetAllFormFields();\r\n                                closePurchaseDrawer();\r\n                                showToast(d.data && d.data.message ? d.data.message : '\u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u062f.', 'success');\r\n                                if (d.data && d.data.redirect_url) {\r\n                                    setTimeout(function() {\r\n                                        window.location.href = d.data.redirect_url;\r\n                                    }, 1500);\r\n                                }\r\n                            } else {\r\n                                showToast(d.data && d.data.message ? d.data.message : '\u062e\u0637\u0627 \u062f\u0631 \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a.', 'error');\r\n                            }\r\n                        }).catch(function() {\r\n                            submitBtn.disabled = false;\r\n                            submitBtn.style.opacity = '1';\r\n                            if (loadingEl) loadingEl.style.display = 'none';\r\n                            showToast('\u062e\u0637\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u0633\u0631\u0648\u0631.', 'error');\r\n                        });\r\n                    });\r\n                }\r\n\r\n                window.addEventListener('beforeunload', function() {\r\n                    clearAllCache();\r\n                });\r\n                window.addEventListener('pageshow', function(event) {\r\n                    if (event.persisted || (window.performance && window.performance.navigation && window.performance.navigation.type === 2)) {\r\n                        clearAllCache();\r\n                        resetAllFormFields();\r\n                        if (purchaseDrawer && purchaseDrawer.classList.contains('active')) purchaseDrawer.classList.remove('active');\r\n                        if (purchaseOverlay && purchaseOverlay.classList.contains('active')) purchaseOverlay.classList.remove('active');\r\n                        document.body.style.overflow = '';\r\n                    }\r\n                });\r\n                if (window.performance && window.performance.navigation && window.performance.navigation.type === 1) {\r\n                    clearAllCache();\r\n                }\r\n\r\n                var curStory = 0,\r\n                    curSlide = 0,\r\n                    slideTimeout = null,\r\n                    progAF = null,\r\n                    vidEl = null,\r\n                    paused = false,\r\n                    startT = 0,\r\n                    elapsedP = 0,\r\n                    slideDur = 0,\r\n                    mo = document.getElementById('storyModalOverlay-' + widgetId);\r\n                if (mo && storiesData && storiesData.length > 0) {\r\n                    var tabsContainer = document.getElementById('storyTabs-' + widgetId);\r\n                    if (tabsContainer) {\r\n                        tabsContainer.innerHTML = '';\r\n                        storiesData.forEach(function(s, i) {\r\n                            var t = document.createElement('button');\r\n                            t.className = 'story-tab';\r\n                            t.dataset.index = i;\r\n                            t.innerHTML = '<div class=\"story-tab-avatar\"><div class=\"story-tab-img-wrapper\"><img decoding=\"async\" src=\"' + s.avatar + '\" alt=\"' + s.label + '\" class=\"story-tab-img\" width=\"70\" height=\"70\"><\/div><\/div><div class=\"story-tab-label\">' + s.label + '<\/div>';\r\n                            t.addEventListener('click', function() {\r\n                                openStory(i);\r\n                            });\r\n                            tabsContainer.appendChild(t);\r\n                        });\r\n                    }\r\n\r\n                    function getStory() {\r\n                        return storiesData[curStory];\r\n                    }\r\n\r\n                    function getSlide() {\r\n                        return getStory().slides[curSlide];\r\n                    }\r\n\r\n                    function clearAll() {\r\n                        if (slideTimeout) {\r\n                            clearTimeout(slideTimeout);\r\n                            slideTimeout = null;\r\n                        }\r\n                        if (progAF) {\r\n                            cancelAnimationFrame(progAF);\r\n                            progAF = null;\r\n                        }\r\n                        if (vidEl) {\r\n                            vidEl.pause();\r\n                            vidEl.removeEventListener('ended', onVEnd);\r\n                            vidEl.removeEventListener('loadedmetadata', onVLoad);\r\n                            vidEl.removeEventListener('timeupdate', onVTick);\r\n\r\n                            vidEl.removeEventListener('canplay', onVCanPlay);\r\n                            vidEl.removeEventListener('waiting', onVWaiting);\r\n                            vidEl.removeEventListener('playing', onVPlaying);\r\n\r\n                            vidEl = null;\r\n                        }\r\n                    }\r\n\r\n                    function onVCanPlay() {\r\n                        var el = document.getElementById('storyVideoLoading-' + widgetId);\r\n                        if (el) el.classList.remove('active');\r\n                    }\r\n\r\n                    function onVWaiting() {\r\n                        var el = document.getElementById('storyVideoLoading-' + widgetId);\r\n                        if (el) el.classList.add('active');\r\n                    }\r\n\r\n                    function onVPlaying() {\r\n                        var el = document.getElementById('storyVideoLoading-' + widgetId);\r\n                        if (el) el.classList.remove('active');\r\n                    }\r\n\r\n                    function buildBar(n) {\r\n                        var pc = document.getElementById('storyProgressContainer-' + widgetId);\r\n                        if (!pc) return;\r\n                        pc.innerHTML = '';\r\n                        for (var i = 0; i < n; i++) {\r\n                            var s = document.createElement('div');\r\n                            s.className = 'story-progress-segment';\r\n                            s.innerHTML = '<div class=\"story-progress-fill\"><\/div>';\r\n                            pc.appendChild(s);\r\n                        }\r\n                    }\r\n\r\n                    function setComp(i) {\r\n                        var pc = document.getElementById('storyProgressContainer-' + widgetId);\r\n                        if (!pc) return;\r\n                        pc.querySelectorAll('.story-progress-fill').forEach(function(f, j) {\r\n                            f.style.width = j < i ? '100%' : '0%';\r\n                        });\r\n                    }\r\n\r\n                    function animBar(d, i) {\r\n                        var pc = document.getElementById('storyProgressContainer-' + widgetId);\r\n                        if (!pc) return;\r\n                        var fills = pc.querySelectorAll('.story-progress-fill');\r\n                        if (i >= fills.length) return;\r\n                        var tf = fills[i];\r\n                        startT = performance.now();\r\n                        slideDur = d;\r\n\r\n                        function step(now) {\r\n                            if (paused || !mo.classList.contains('active')) {\r\n                                progAF = requestAnimationFrame(step);\r\n                                return;\r\n                            }\r\n                            var e = elapsedP + (now - startT);\r\n                            var p = Math.min((e \/ d) * 100, 100);\r\n                            tf.style.width = p + '%';\r\n                            if (p < 100) progAF = requestAnimationFrame(step);\r\n                        }\r\n                        progAF = requestAnimationFrame(step);\r\n                    }\r\n\r\n                    function onVEnd() {\r\n                        nextSlide();\r\n                    }\r\n\r\n                    function onVTick() {\r\n                        if (!vidEl || !mo.classList.contains('active') || paused) return;\r\n                        var d = vidEl.duration;\r\n                        if (!d || isNaN(d)) return;\r\n                        var pc = document.getElementById('storyProgressContainer-' + widgetId);\r\n                        if (!pc) return;\r\n                        var fills = pc.querySelectorAll('.story-progress-fill');\r\n                        if (curSlide < fills.length) fills[curSlide].style.width = (vidEl.currentTime \/ d) * 100 + '%';\r\n                    }\r\n\r\n                    function onVLoad() {\r\n                        if (!vidEl || !mo.classList.contains('active')) return;\r\n                        setComp(curSlide);\r\n                        vidEl.currentTime = 0;\r\n                        vidEl.play().catch(function() {});\r\n                    }\r\n\r\n                    function renderSlide() {\r\n                        clearAll();\r\n                        var sl = getSlide(),\r\n                            st = getStory(),\r\n                            now = new Date();\r\n                        document.getElementById('storyModalAvatar-' + widgetId).src = st.avatar;\r\n                        document.getElementById('storyModalUsername-' + widgetId).textContent = st.label;\r\n                        buildBar(st.slides.length);\r\n                        setComp(curSlide);\r\n                        var mm = document.getElementById('storyModalMedia-' + widgetId);\r\n                        mm.innerHTML = '';\r\n                        elapsedP = 0;\r\n                        startT = 0;\r\n                        if (sl.type === 'video') {\r\n                            vidEl = document.createElement('video');\r\n                            vidEl.src = sl.src;\r\n                            vidEl.style.cssText = 'width:100%;height:100%;object-fit:contain;';\r\n                            vidEl.setAttribute('playsinline', '');\r\n                            vidEl.preload = 'auto';\r\n\r\n                            vidEl.addEventListener('canplay', onVCanPlay);\r\n                            vidEl.addEventListener('waiting', onVWaiting);\r\n                            vidEl.addEventListener('playing', onVPlaying);\r\n\r\n                            vidEl.addEventListener('ended', onVEnd);\r\n                            vidEl.addEventListener('loadedmetadata', onVLoad);\r\n                            vidEl.addEventListener('timeupdate', onVTick);\r\n                            mm.appendChild(vidEl);\r\n                            slideDur = 0;\r\n                        } else {\r\n                            var img = document.createElement('img');\r\n                            img.src = sl.src;\r\n                            img.style.cssText = 'width:100%;height:100%;object-fit:contain;';\r\n                            var d = sl.duration || storyDuration;\r\n                            img.onload = function() {\r\n                                if (!mo.classList.contains('active')) return;\r\n                                animBar(d, curSlide);\r\n                                slideTimeout = setTimeout(function() {\r\n                                    nextSlide();\r\n                                }, d);\r\n                            };\r\n                            mm.appendChild(img);\r\n                            slideDur = d;\r\n                        }\r\n\r\n\r\n\r\n                        var ld = document.createElement('div');\r\n                        ld.id = 'storyVideoLoading-' + widgetId;\r\n                        ld.className = 'story-video-loading';\r\n                        ld.innerHTML = '<div class=\"story-video-spinner\"><\/div>';\r\n                        if (sl.type === 'video') {\r\n                            ld.classList.add('active');\r\n                        }\r\n                        mm.appendChild(ld);\r\n\r\n\r\n\r\n                        var mc = document.getElementById('storyModalContent-' + widgetId);\r\n                        mc.style.display = sl.content ? 'block' : 'none';\r\n                        if (sl.content) mc.textContent = sl.content;\r\n                        var tabs = document.querySelectorAll('#storyTabs-' + widgetId + ' .story-tab');\r\n                        tabs.forEach(function(t) {\r\n                            t.classList.remove('active');\r\n                        });\r\n                        var at = document.querySelector('#storyTabs-' + widgetId + ' .story-tab[data-index=\"' + curStory + '\"]');\r\n                        if (at) at.classList.add('active');\r\n                    }\r\n\r\n                    function nextSlide() {\r\n                        clearAll();\r\n                        elapsedP = 0;\r\n                        paused = false;\r\n                        var st = getStory();\r\n                        if (curSlide < st.slides.length - 1) {\r\n                            curSlide++;\r\n                        } else if (curStory < storiesData.length - 1) {\r\n                            curStory++;\r\n                            curSlide = 0;\r\n                        } else {\r\n                            closeStory();\r\n                            return;\r\n                        }\r\n                        renderSlide();\r\n                    }\r\n\r\n                    function prevSlide() {\r\n                        clearAll();\r\n                        elapsedP = 0;\r\n                        paused = false;\r\n                        if (curSlide > 0) {\r\n                            curSlide--;\r\n                        } else if (curStory > 0) {\r\n                            curStory--;\r\n                            curSlide = storiesData[curStory].slides.length - 1;\r\n                        } else {\r\n                            closeStory();\r\n                            return;\r\n                        }\r\n                        renderSlide();\r\n                    }\r\n\r\n                    function openStory(i) {\r\n                        clearAll();\r\n                        curStory = i;\r\n                        curSlide = 0;\r\n                        paused = false;\r\n                        elapsedP = 0;\r\n                        mo.classList.add('active');\r\n                        document.body.style.overflow = 'hidden';\r\n                        renderSlide();\r\n                    }\r\n\r\n                    function closeStory() {\r\n                        clearAll();\r\n                        paused = false;\r\n\r\n                        var loadingEl = document.getElementById('storyVideoLoading-' + widgetId);\r\n                        if (loadingEl) loadingEl.classList.remove('active');\r\n\r\n                        if (mo) mo.classList.remove('active');\r\n                        if (!purchaseDrawer || !purchaseDrawer.classList.contains('active')) {\r\n                            if (!(rulesDrawer && rulesDrawer.classList.contains('active'))) document.body.style.overflow = '';\r\n                        }\r\n                    }\r\n                    var storyModal = document.getElementById('storyModal-' + widgetId),\r\n                        holdTimeout = null;\r\n\r\n                    function pauseStory() {\r\n                        if (paused) return;\r\n                        paused = true;\r\n                        if (vidEl && !vidEl.paused) {\r\n                            vidEl.pause();\r\n                        } else if (slideDur > 0 && startT > 0) {\r\n                            elapsedP += performance.now() - startT;\r\n                        }\r\n                    }\r\n\r\n                    function resumeStory() {\r\n                        if (!paused) return;\r\n                        paused = false;\r\n                        if (vidEl && vidEl.paused && mo.classList.contains('active')) {\r\n                            vidEl.play().catch(function() {});\r\n                        } else if (slideDur > 0) {\r\n                            startT = performance.now();\r\n                        }\r\n                    }\r\n                    if (storyModal) {\r\n                        storyModal.addEventListener('mousedown', function() {\r\n                            holdTimeout = setTimeout(pauseStory, 200);\r\n                        });\r\n\r\n                        storyModal.addEventListener('mouseup', function() {\r\n                            clearTimeout(holdTimeout);\r\n                            resumeStory();\r\n                        });\r\n\r\n                        storyModal.addEventListener('mouseleave', function() {\r\n                            clearTimeout(holdTimeout);\r\n                            resumeStory();\r\n                        });\r\n\r\n                        storyModal.addEventListener('touchstart', function() {\r\n                            holdTimeout = setTimeout(pauseStory, 200);\r\n                        }, {\r\n                            passive: true\r\n                        });\r\n\r\n                        storyModal.addEventListener('touchend', function() {\r\n                            clearTimeout(holdTimeout);\r\n                            resumeStory();\r\n                        });\r\n\r\n                        storyModal.addEventListener('touchcancel', function() {\r\n                            clearTimeout(holdTimeout);\r\n                            resumeStory();\r\n                        });\r\n\r\n                        storyModal.addEventListener('contextmenu', function(e) {\r\n                            e.preventDefault();\r\n                        });\r\n\r\n                    }\r\n                    document.getElementById('storyModalClose-' + widgetId).addEventListener('click', closeStory);\r\n                    mo.addEventListener('click', function(e) {\r\n                        if (e.target === mo) closeStory();\r\n                    });\r\n                    document.getElementById('storyNavNext-' + widgetId).addEventListener('click', function(e) {\r\n                        e.stopPropagation();\r\n                        nextSlide();\r\n                    });\r\n                    document.getElementById('storyNavPrev-' + widgetId).addEventListener('click', function(e) {\r\n                        e.stopPropagation();\r\n                        prevSlide();\r\n                    });\r\n                }\r\n\r\n                document.querySelectorAll('#faqContainer-' + widgetId + ' .faq-item, #syllabusContainer-' + widgetId + ' .faq-item').forEach(function(item) {\r\n                    var btn = item.querySelector('.faq-question');\r\n                    if (btn) {\r\n                        btn.addEventListener('click', function() {\r\n                            item.classList.toggle('open');\r\n                        });\r\n                    }\r\n                });\r\n\r\n                function closeRulesDrawer() {\r\n                    if (rulesDrawer) rulesDrawer.classList.remove('active');\r\n                    if (rulesOverlay) rulesOverlay.classList.remove('active');\r\n                    if (!purchaseDrawer || !purchaseDrawer.classList.contains('active')) {\r\n                        if (!mo || !mo.classList.contains('active')) document.body.style.overflow = '';\r\n                    }\r\n                }\r\n\r\n                document.getElementById('openRulesBtn-' + widgetId).addEventListener('click', openRulesDrawer);\r\n                document.getElementById('rulesDrawerTrigger-' + widgetId).addEventListener('click', openRulesDrawer);\r\n                document.getElementById('closeRulesDrawerBtn-' + widgetId).addEventListener('click', closeRulesDrawer);\r\n                if (rulesOverlay) rulesOverlay.addEventListener('click', function(e) {\r\n                    if (e.target === rulesOverlay) closeRulesDrawer();\r\n                });\r\n\r\n                document.addEventListener('keydown', function(e) {\r\n                    if (e.key === 'Escape') {\r\n                        if (purchaseDrawer && purchaseDrawer.classList.contains('active')) closePurchaseDrawer();\r\n                        else if (rulesDrawer && rulesDrawer.classList.contains('active')) closeRulesDrawer();\r\n                        else if (mo && mo.classList.contains('active')) closeStory();\r\n                    }\r\n                });\r\n\r\n                var audioWrapper = document.getElementById('floatingAudioWrapper-' + widgetId);\r\n                if (audioWrapper) {\r\n                    var audio = document.getElementById('floatingAudio-' + widgetId);\r\n                    var audioBtn = document.getElementById('floatingAudioBtn-' + widgetId);\r\n                    var playIcon = audioBtn.querySelector('.play-icon');\r\n                    var pauseIcon = audioBtn.querySelector('.pause-icon');\r\n                    var eqSpans = audioBtn.querySelectorAll('.eq-ring span');\r\n\r\n                    eqSpans.forEach(function(span, i) {\r\n                        span.style.animationDelay = (i * 0.04) + 's';\r\n                    });\r\n\r\n                    function syncUI() {\r\n                        if (audio.paused) {\r\n                            audioBtn.classList.remove('playing');\r\n                            playIcon.style.display = 'block';\r\n                            pauseIcon.style.display = 'none';\r\n                        } else {\r\n                            audioBtn.classList.add('playing');\r\n                            playIcon.style.display = 'none';\r\n                            pauseIcon.style.display = 'block';\r\n                        }\r\n                    }\r\n\r\n                    function toggleVisibility() {\r\n                        if (window.scrollY > 300) {\r\n                            audioWrapper.classList.add('visible');\r\n                            syncUI();\r\n                        } else {\r\n                            audioWrapper.classList.remove('visible');\r\n                        }\r\n                    }\r\n\r\n                    window.addEventListener('scroll', toggleVisibility);\r\n                    toggleVisibility();\r\n\r\n                    audioBtn.addEventListener('click', function() {\r\n                        if (audio.paused) {\r\n                            audio.play();\r\n                        } else {\r\n                            audio.pause();\r\n                        }\r\n                        syncUI();\r\n                    });\r\n\r\n                    audio.addEventListener('ended', function() {\r\n                        syncUI();\r\n                    });\r\n                }\r\n            })();\r\n        <\/script>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0638\u0631\u0641\u06cc\u062a \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 199 \u0646\u0641\u0631 \u0645\u0647\u0644\u062a \u062a\u062e\u0641\u06cc\u0641 \u0648\u06cc\u0698\u0647 \u06f0\u06f0:\u06f0\u06f0:\u06f0\u06f0 \u067e\u06cc\u0634\u0646\u0645\u0627\u06cc\u0634 \u0642\u0627\u0644\u0628 \u0647\u0648\u0631\u062a\u0627\u0634 \u0628\u0627 \u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634\u0640\u0640\u06cc \u0646\u0627\u0628\u063a\u0640\u0640\u0640\u0640\u0647 PHP \u0635\u0641\u0631 \u062a\u0627 \u0635\u062f PHP \u0631\u0648 \u0628\u0627\u0632\u0627\u0631\u06a9\u0627\u0631\u06cc \u06cc\u0627\u062f \u0628\u06af\u06cc\u0631 \u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634 PHP \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u0645\u0639 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u0646\u062f \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0628\u0627 \u0632\u0628\u0627\u0646 PHP \u0628\u0647 \u0633\u0637\u062d \u062d\u0631\u0641\u0647\u200c\u0627\u06cc \u0628\u0631\u0633\u0627\u0646\u0646\u062f \u0648 \u0648\u0627\u0631\u062f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6413","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/pages\/6413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/comments?post=6413"}],"version-history":[{"count":55,"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/pages\/6413\/revisions"}],"predecessor-version":[{"id":6481,"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/pages\/6413\/revisions\/6481"}],"wp:attachment":[{"href":"https:\/\/mantissa.ir\/easy-installer\/wp-json\/wp\/v2\/media?parent=6413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}