{"id":8646,"date":"2026-06-09T18:13:57","date_gmt":"2026-06-09T18:13:57","guid":{"rendered":"https:\/\/mono-perfumes.com\/?post_type=porto_builder&#038;p=8646"},"modified":"2026-07-15T14:19:09","modified_gmt":"2026-07-15T14:19:09","slug":"new-single-prod","status":"publish","type":"porto_builder","link":"https:\/\/mono-perfumes.com\/ar\/?porto_builder=new-single-prod","title":{"rendered":"new single prod"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"8646\" class=\"elementor elementor-8646\">\n\t\t\t\t<div class=\"elementor-element elementor-element-edd9ef5 e-con-full e-flex e-con e-parent\" data-id=\"edd9ef5\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t<div class=\"elementor-element elementor-element-b84e3b0 e-con-full e-flex e-con e-child\" data-id=\"b84e3b0\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-98cee72 e-con-full e-flex e-con e-child\" data-id=\"98cee72\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t<div class=\"elementor-element elementor-element-d463f20 elementor-widget elementor-widget-shortcode\" data-id=\"d463f20\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6341951 elementor-widget elementor-widget-porto_button\" data-id=\"6341951\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"porto_button.default\">\n\t\t\t\t\t<a class=\"btn btn-lg btn-dark btn-borders btn-hover-text-effect hover-text-switch-up\" href=\"https:\/\/mono-perfumes.com\/mono-size-chart\/\"><span class=\"btn-text\" data-text=\"Size Guide\">Size Guide<\/span><\/a>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-605c1fa elementor-widget elementor-widget-shortcode\" data-id=\"605c1fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb2ac80 elementor-hidden-mobile elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-shortcode\" data-id=\"fb2ac80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">     <div class=\"perfume-trust-badges\">\n         <div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\">\n                 <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M12 2C12 2 7 6 7 11C7 14.3137 9.23858 17 12 17C14.7614 17 17 14.3137 17 11C17 6 12 2 12 2Z\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"\/><path d=\"M12 17V22\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\"\/><\/svg>\n             <\/span>\n             <span class=\"perfume-trust-badge__text\">Premium French Oils<\/span>\n         <\/div>\n         <div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\">\n                 <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M5 14C5 14 4 17 4 19C4 20.1046 4.89543 21 6 21C7.10457 21 8 20.1046 8 19C8 17 7 14 7 14\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path d=\"M7 14V8C7 5.79086 8.79086 4 11 4H12C16 4 19 6 19 10C19 12 17.5 13 16 13H10\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n             <\/span>\n           <span class=\"perfume-trust-badge__text\">Hand-Filled, Small-Batch Bottles<\/span>\n         <\/div>\n         <div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\">\n                 <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect x=\"3\" y=\"7\" width=\"18\" height=\"13\" rx=\"1.5\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><path d=\"M3 11H21\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><path d=\"M8 7V5C8 3.89543 8.89543 3 10 3H14C15.1046 3 16 3.89543 16 5V7\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><\/svg>\n            <\/span>\n             <span class=\"perfume-trust-badge__text\">Discreet, Secure Packaging<\/span>\n         <\/div>\n         <div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect x=\"2\" y=\"8\" width=\"13\" height=\"8\" rx=\"1\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><path d=\"M15 11H18.5L21 13.5V16H15V11Z\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"\/><circle cx=\"6\" cy=\"18\" r=\"1.5\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><circle cx=\"17.5\" cy=\"18\" r=\"1.5\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><\/svg>\n             <\/span>\n             <span class=\"perfume-trust-badge__text\">Fast Shipping Across Egypt<\/span>\n         <\/div>\n         <div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\">\n                 <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M12 3L14.5 8.5L20.5 9.3L16.2 13.4L17.3 19.3L12 16.4L6.7 19.3L7.8 13.4L3.5 9.3L9.5 8.5L12 3Z\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"\/><\/svg>\n             <\/span>\n             <span class=\"perfume-trust-badge__text\">Trusted by Thousands of Customers<\/span>\n         <\/div>\n     <\/div>\n     <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7152cf9 elementor-widget elementor-widget-shortcode\" data-id=\"7152cf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div class=\"perfume-trust-mini\">\n        <div class=\"perfume-trust-mini__item\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M12 2C12 2 7 6 7 11C7 14.3137 9.23858 17 12 17C14.7614 17 17 14.3137 17 11C17 6 12 2 12 2Z\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"\/><path d=\"M12 17V22\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\"\/><\/svg>\n            <span>French Oils<\/span>\n        <\/div>\n        <div class=\"perfume-trust-mini__item\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M12 8V12L14.5 14.5\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><\/svg>\n            <span>Long-Lasting<\/span>\n        <\/div>\n        <div class=\"perfume-trust-mini__item\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M12 3V21\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\"\/><path d=\"M16.5 7C16.5 7 15 5.5 12 5.5C9.5 5.5 7.5 6.7 7.5 8.5C7.5 10.3 9.5 11 12 11.5C14.5 12 16.5 12.7 16.5 14.5C16.5 16.3 14.5 17.5 12 17.5C9 17.5 7.5 16 7.5 16\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n            <span>Best Price<\/span>\n        <\/div>\n        <div class=\"perfume-trust-mini__item\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect x=\"2\" y=\"8\" width=\"13\" height=\"8\" rx=\"1\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><path d=\"M15 11H18.5L21 13.5V16H15V11Z\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"\/><circle cx=\"6\" cy=\"18\" r=\"1.5\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><circle cx=\"17.5\" cy=\"18\" r=\"1.5\" stroke=\"currentColor\" stroke-width=\"1.3\"\/><\/svg>\n            <span>Fast Shipping<\/span>\n        <\/div>\n        <div class=\"perfume-trust-mini__item\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M12 3L14.5 8.5L20.5 9.3L16.2 13.4L17.3 19.3L12 16.4L6.7 19.3L7.8 13.4L3.5 9.3L9.5 8.5L12 3Z\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"\/><\/svg>\n            <span>Trusted<\/span>\n        <\/div>\n    <\/div>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2549a41 elementor-widget elementor-widget-heading\" data-id=\"2549a41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Overview<div><span style=\"font-size: 1.5rem;letter-spacing: -0.01em;text-align: var(--text-align)\"><\/span><br><\/div><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4d6445 elementor-widget elementor-widget-heading\" data-id=\"a4d6445\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">\n<div data-elementor-type=\"wp-post\" data-elementor-id=\"8646\" class=\"elementor elementor-8646\">\n<div class=\"elementor-element elementor-element-edd9ef5 e-con-full e-flex e-con e-parent\" data-id=\"edd9ef5\" data-element_type=\"container\" data-e-type=\"container\">\n<div class=\"elementor-element elementor-element-b84e3b0 e-con-full e-flex e-con e-child\" data-id=\"b84e3b0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n<div class=\"elementor-element elementor-element-98cee72 e-con-full e-flex e-con e-child\" data-id=\"98cee72\" data-element_type=\"container\" data-e-type=\"container\">\n<div class=\"elementor-element elementor-element-d463f20 elementor-widget elementor-widget-shortcode\" data-id=\"d463f20\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n<div class=\"elementor-shortcode\"><\/div><\/div>\n<div class=\"elementor-element elementor-element-6341951 elementor-widget elementor-widget-porto_button\" data-id=\"6341951\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"porto_button.default\">\n\t\t\t\t\t<a class=\"btn btn-lg btn-dark btn-borders btn-hover-text-effect hover-text-switch-up\" href=\"https:\/\/mono-perfumes.com\/mono-size-chart\/\"><span class=\"btn-text\" data-text=\"Size Guide\">Size Guide<\/span><\/a>\t\t\t\t<\/div>\n<div class=\"elementor-element elementor-element-605c1fa elementor-widget elementor-widget-shortcode\" data-id=\"605c1fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n<div class=\"elementor-shortcode\"><\/div><\/div>\n<div class=\"elementor-element elementor-element-fb2ac80 elementor-hidden-mobile elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-shortcode\" data-id=\"fb2ac80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n<div class=\"elementor-shortcode\">\n<div class=\"perfume-trust-badges\">\n<div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\"><br \/>\n                 <br \/>\n             <\/span><br \/>\n             <span class=\"perfume-trust-badge__text\">Premium French Oils<\/span>\n         <\/div>\n<div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\"><br \/>\n                 <br \/>\n             <\/span><br \/>\n           <span class=\"perfume-trust-badge__text\">Hand-Filled, Small-Batch Bottles<\/span>\n         <\/div>\n<div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\"><br \/>\n                 <br \/>\n            <\/span><br \/>\n             <span class=\"perfume-trust-badge__text\">Discreet, Secure Packaging<\/span>\n         <\/div>\n<div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\"><br \/>\n                <br \/>\n             <\/span><br \/>\n             <span class=\"perfume-trust-badge__text\">Fast Shipping Across Egypt<\/span>\n         <\/div>\n<div class=\"perfume-trust-badge\">\n             <span class=\"perfume-trust-badge__icon\"><br \/>\n                 <br \/>\n             <\/span><br \/>\n             <span class=\"perfume-trust-badge__text\">Trusted by Thousands of Customers<\/span>\n         <\/div><\/div><\/div><\/div>\n<div class=\"elementor-element elementor-element-7152cf9 elementor-widget elementor-widget-shortcode\" data-id=\"7152cf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n<div class=\"elementor-shortcode\">\n<div class=\"perfume-trust-mini\">\n<div class=\"perfume-trust-mini__item\">\n            <br \/>\n            <span>French Oils<\/span>\n        <\/div>\n<div class=\"perfume-trust-mini__item\">\n            <br \/>\n            <span>Long-Lasting<\/span>\n        <\/div>\n<div class=\"perfume-trust-mini__item\">\n            <br \/>\n            <span>Best Price<\/span>\n        <\/div>\n<div class=\"perfume-trust-mini__item\">\n            <br \/>\n            <span>Fast Shipping<\/span>\n        <\/div>\n<div class=\"perfume-trust-mini__item\">\n            <br \/>\n            <span>Trusted<\/span>\n        <\/div><\/div><\/div><\/div>\n<div class=\"elementor-element elementor-element-2549a41 elementor-widget elementor-widget-heading\" data-id=\"2549a41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n<h2 class=\"elementor-heading-title elementor-size-default\">Overview\n<div><span style=\"font-size: 1.5rem;letter-spacing: -0.01em;text-align: var(--text-align)\"><\/span><\/div>\n<\/h2><\/div><\/div><\/div>\n<div class=\"elementor-element elementor-element-d54ed3c e-flex e-con-boxed e-con e-parent\" data-id=\"d54ed3c\" data-element_type=\"container\" data-e-type=\"container\">\n<div class=\"e-con-inner\">\n<div class=\"elementor-element elementor-element-838b4d8 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"838b4d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\"><br \/>\n\t\t\t\t\t\t<\/span>\n\t\t<\/div><\/div>\n<div class=\"elementor-element elementor-element-1a8dca5 elementor-widget elementor-widget-shortcode\" data-id=\"1a8dca5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n<div class=\"elementor-shortcode\"><\/div><\/div>\n<div class=\"elementor-element elementor-element-a90ad99 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a90ad99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\"><br \/>\n\t\t\t\t\t\t<\/span>\n\t\t<\/div><\/div><\/div><\/div>\n<div class=\"elementor-element elementor-element-7495d74 e-con-full e-flex e-con e-parent\" data-id=\"7495d74\" data-element_type=\"container\" data-e-type=\"container\">\n<div class=\"elementor-element elementor-element-a9239a8 elementor-widget elementor-widget-heading\" data-id=\"a9239a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n<h2 class=\"elementor-heading-title elementor-size-default\">Related Products<\/h2>\n<\/div><\/div>\n<div class=\"elementor-element elementor-element-1f33905 e-flex e-con-boxed e-con e-parent\" data-id=\"1f33905\" data-element_type=\"container\" data-e-type=\"container\">\n<div class=\"e-con-inner\">\n<div class=\"elementor-element elementor-element-e9e7da3 elementor-widget elementor-widget-html\" data-id=\"e9e7da3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\tdocument.addEventListener('DOMContentLoaded', function() {\n<p>    \/\/ 1. Tab Switching\n    const tabBtns = document.querySelectorAll('.mono-tab-btn');\n    const tabPanels = document.querySelectorAll('.mono-tab-panel');<\/p>\n<p>    tabBtns.forEach(btn =&gt; {\n        btn.addEventListener('click', () =&gt; {\n            tabBtns.forEach(b =&gt; b.classList.remove('active'));\n            tabPanels.forEach(p =&gt; p.classList.remove('active'));\n            btn.classList.add('active');\n            const targetId = btn.getAttribute('data-target');\n            const targetPanel = document.getElementById(targetId);\n            if(targetPanel) targetPanel.classList.add('active');\n        });\n    });<\/p>\n<p>    \/\/ 2. Drawer Logic\n    const drawer = document.getElementById('mono-review-drawer');\n    const openBtn = document.getElementById('mono-open-review-drawer');\n    const closeBtn = document.getElementById('mono-close-review-drawer');\n    const overlay = document.querySelector('.mono-drawer-overlay');<\/p>\n<p>    function openDrawer() {\n        if(drawer) {\n            drawer.classList.add('is-open');\n            document.body.style.overflow = 'hidden';\n        }\n    }\n    function closeDrawer() {\n        if(drawer) {\n            drawer.classList.remove('is-open');\n            document.body.style.overflow = '';\n        }\n    }<\/p>\n<p>    if (openBtn) openBtn.addEventListener('click', openDrawer);\n    if (closeBtn) closeBtn.addEventListener('click', closeDrawer);\n    if (overlay) overlay.addEventListener('click', closeDrawer);<\/p>\n<p>    document.addEventListener('keydown', function(e) {\n        if (e.key === 'Escape' &amp;&amp; drawer &amp;&amp; drawer.classList.contains('is-open')) closeDrawer();\n    });<\/p>\n<p>    \/\/ 3. AJAX Form Submission\n    const reviewForm = document.querySelector('.mono-drawer-body form');\n    if (reviewForm) {\n        reviewForm.addEventListener('submit', function(e) {\n            e.preventDefault();\n            const submitBtn = reviewForm.querySelector('input[type=\"submit\"], button[type=\"submit\"]');\n            if(submitBtn) {\n                submitBtn.disabled = true;\n                submitBtn.value = 'Submitting...';\n            }<\/p>\n<p>            const formData = new FormData(reviewForm);<\/p>\n<p>            \/\/ Submitting directly to wp-comments-post.php ensures all woo\/cusrev hooks run!\n            fetch(reviewForm.action, {\n                method: 'POST',\n                body: formData,\n            }).then(async response =&gt; {\n                const text = await response.text();<\/p>\n<p>                \/\/ Parse standard WordPress error pages\n                if (text.includes('id=\"error-page\"') || text.includes('wp-die-message')) {\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(text, 'text\/html');\n                    const errorEl = doc.querySelector('.wp-die-message, p');\n                    const errorMsg = errorEl ? errorEl.innerText.trim() : 'Error submitting review. Please make sure all fields are filled.';\n                    throw new Error(errorMsg);\n                }<\/p>\n<p>                \/\/ Parse WooCommerce error notices\n                if (text.includes('woocommerce-error')) {\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(text, 'text\/html');\n                    const errorEl = doc.querySelector('.woocommerce-error');\n                    const errorMsg = errorEl ? errorEl.innerText.trim() : 'Invalid form data.';\n                    throw new Error(errorMsg);\n                }<\/p>\n<p>                \/\/ Success message\n                const bodyDiv = document.querySelector('.mono-drawer-body');\n                bodyDiv.innerHTML = '<\/p>\n<div class=\"mono-success-msg\" style=\"text-align:center;margin-top:50px\">\n<h3>Thank you!<\/h3>\n<p>Your review was submitted successfully.<\/p>\n<\/div>\n<p>';\n                setTimeout(() =&gt; {\n                    closeDrawer();\n                    location.reload(); \/\/ Reload to show the new review safely\n                }, 2500);\n            }).catch(err =&gt; {\n                if(submitBtn) {\n                    submitBtn.disabled = false;\n                    submitBtn.value = 'Submit Review';\n                }\n                alert(err.message);\n            });\n        });\n    }<\/p>\n<p>    \/\/ 4. AJAX Numbered Pagination\n    const wrapper = document.getElementById('mono-custom-reviews-wrapper');\n    const productId = wrapper ? wrapper.getAttribute('data-product-id') : 0;<\/p>\n<p>    document.querySelectorAll('.mono-pagination').forEach(pagination =&gt; {\n        pagination.addEventListener('click', function(e) {\n            if (e.target.classList.contains('mono-page-btn')) {\n                const btn = e.target;\n                if (btn.classList.contains('active')) return;<\/p>\n<p>                const type = pagination.getAttribute('data-type');\n                const page = parseInt(btn.getAttribute('data-page'));\n                const listId = type === 'product' ? 'mono-list-product' : 'mono-list-all';\n                const listEl = document.getElementById(listId);<\/p>\n<p>                \/\/ Update active state\n                pagination.querySelectorAll('.mono-page-btn').forEach(b =&gt; b.classList.remove('active'));\n                btn.classList.add('active');<\/p>\n<p>                \/\/ Visual loading state\n                listEl.style.opacity = '0.5';<\/p>\n<p>                const formData = new FormData();\n                formData.append('action', 'mono_load_reviews');\n                formData.append('type', type);\n                formData.append('page', page);\n                formData.append('product_id', productId);<\/p>\n<p>                fetch(mono_ajax.url, {\n                    method: 'POST',\n                    body: formData\n                })\n                .then(res =&gt; res.text())\n                .then(html =&gt; {\n                    listEl.innerHTML = html;\n                    listEl.style.opacity = '1';\n                    bindLightboxes(); \/\/ Rebind lightboxes for new images<\/p>\n<p>                    \/\/ Smooth scroll to top of wrapper\n                    wrapper.scrollIntoView({behavior: 'smooth', block: 'start'});\n                })\n                .catch(() =&gt; {\n                    listEl.style.opacity = '1';\n                    alert('Error loading reviews.');\n                });\n            }\n        });\n    });<\/p>\n<p>    \/\/ 5. Image Carousel Logic\n    let galleryItems = [];\n    let currentIndex = 0;<\/p>\n<p>    const lightbox = document.getElementById('mono-lightbox');\n    const lightboxImg = document.querySelector('.mono-lightbox-img');\n    const lightboxStars = document.querySelector('.mono-lightbox-stars');\n    const lightboxAuthor = document.querySelector('.mono-lightbox-author');\n    const lightboxText = document.querySelector('.mono-lightbox-text');\n    const prevBtn = document.querySelector('.mono-lightbox-prev');\n    const nextBtn = document.querySelector('.mono-lightbox-next');<\/p>\n<p>    function updateLightboxContent(index) {\n        if (!galleryItems[index]) return;\n        const data = galleryItems[index];\n        lightboxImg.src = data.full;\n        lightboxAuthor.textContent = data.author;\n        lightboxText.textContent = data.text;<\/p>\n<p>        let starsHtml = '';\n        const rating = parseInt(data.rating) || 0;\n        for (let i = 1; i &lt;= 5; i++) {\n            starsHtml += i &lt;= rating ? &#039;\u2605&#039; : &#039;\u2606&#039;;\n        }\n        lightboxStars.innerHTML = `<span class=\"mono-star-rating\" style=\"color:#f5b041\">${starsHtml}<\/span>`;<\/p>\n<p>        \/\/ Update arrow visibility\n        if (prevBtn) prevBtn.style.opacity = index === 0 ? '0.2' : '1';\n        if (nextBtn) nextBtn.style.opacity = index === galleryItems.length - 1 ? '0.2' : '1';\n    }<\/p>\n<p>    function openLightbox(index) {\n        currentIndex = index;\n        updateLightboxContent(currentIndex);\n        if (lightbox) lightbox.classList.add('is-active');\n        document.body.style.overflow = 'hidden';\n    }<\/p>\n<p>    function closeLightbox() {\n        if (lightbox) lightbox.classList.remove('is-active');\n        document.body.style.overflow = '';\n    }<\/p>\n<p>    function bindLightboxes() {\n        \/\/ Collect all images from the active DOM\n        galleryItems = [];\n        const items = document.querySelectorAll('.mono-gallery-item');<\/p>\n<p>        items.forEach((item, index) =&gt; {\n            \/\/ Build data array\n            galleryItems.push({\n                full: item.getAttribute('data-full'),\n                author: item.getAttribute('data-author'),\n                rating: item.getAttribute('data-rating'),\n                text: item.getAttribute('data-text')\n            });<\/p>\n<p>            \/\/ Rebind click safely\n            const newItem = item.cloneNode(true);\n            item.parentNode.replaceChild(newItem, item);\n            newItem.addEventListener('click', () =&gt; openLightbox(index));\n        });\n    }<\/p>\n<p>    if (nextBtn) {\n        nextBtn.addEventListener('click', () =&gt; {\n            if (currentIndex  {\n            if (currentIndex &gt; 0) updateLightboxContent(--currentIndex);\n        });\n    }<\/p>\n<p>    const lightboxClose = document.querySelector('.mono-lightbox-close');\n    const lightboxOverlay = document.querySelector('.mono-lightbox-overlay');\n    if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n    if (lightboxOverlay) lightboxOverlay.addEventListener('click', closeLightbox);<\/p>\n<p>    \/\/ Bind initially\n    bindLightboxes();\n});\n<\/p>\t\t\t\t<\/div><\/div><\/div><\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d54ed3c e-flex e-con-boxed e-con e-parent\" data-id=\"d54ed3c\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t\t<div class=\"e-con-inner\">\r\n\t\t\t\t<div class=\"elementor-element elementor-element-838b4d8 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"838b4d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a8dca5 elementor-widget elementor-widget-shortcode\" data-id=\"1a8dca5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a90ad99 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a90ad99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7495d74 e-con-full e-flex e-con e-parent\" data-id=\"7495d74\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t<div class=\"elementor-element elementor-element-a9239a8 elementor-widget elementor-widget-heading\" data-id=\"a9239a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Related Products<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1f33905 e-flex e-con-boxed e-con e-parent\" data-id=\"1f33905\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t\t<div class=\"e-con-inner\">\r\n\t\t\t\t<div class=\"elementor-element elementor-element-e9e7da3 elementor-widget elementor-widget-html\" data-id=\"e9e7da3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>document.addEventListener('DOMContentLoaded', function() {\n    \n    \/\/ 1. Tab Switching\n    const tabBtns = document.querySelectorAll('.mono-tab-btn');\n    const tabPanels = document.querySelectorAll('.mono-tab-panel');\n\n    tabBtns.forEach(btn => {\n        btn.addEventListener('click', () => {\n            tabBtns.forEach(b => b.classList.remove('active'));\n            tabPanels.forEach(p => p.classList.remove('active'));\n            btn.classList.add('active');\n            const targetId = btn.getAttribute('data-target');\n            const targetPanel = document.getElementById(targetId);\n            if(targetPanel) targetPanel.classList.add('active');\n        });\n    });\n\n    \/\/ 2. Drawer Logic\n    const drawer = document.getElementById('mono-review-drawer');\n    const openBtn = document.getElementById('mono-open-review-drawer');\n    const closeBtn = document.getElementById('mono-close-review-drawer');\n    const overlay = document.querySelector('.mono-drawer-overlay');\n\n    function openDrawer() {\n        if(drawer) {\n            drawer.classList.add('is-open');\n            document.body.style.overflow = 'hidden';\n        }\n    }\n    function closeDrawer() {\n        if(drawer) {\n            drawer.classList.remove('is-open');\n            document.body.style.overflow = '';\n        }\n    }\n\n    if (openBtn) openBtn.addEventListener('click', openDrawer);\n    if (closeBtn) closeBtn.addEventListener('click', closeDrawer);\n    if (overlay) overlay.addEventListener('click', closeDrawer);\n\n    document.addEventListener('keydown', function(e) {\n        if (e.key === 'Escape' && drawer && drawer.classList.contains('is-open')) closeDrawer();\n    });\n\n    \/\/ 3. AJAX Form Submission\n    const reviewForm = document.querySelector('.mono-drawer-body form');\n    if (reviewForm) {\n        reviewForm.addEventListener('submit', function(e) {\n            e.preventDefault();\n            const submitBtn = reviewForm.querySelector('input[type=\"submit\"], button[type=\"submit\"]');\n            if(submitBtn) {\n                submitBtn.disabled = true;\n                submitBtn.value = 'Submitting...';\n            }\n\n            const formData = new FormData(reviewForm);\n\n            \/\/ Submitting directly to wp-comments-post.php ensures all woo\/cusrev hooks run!\n            fetch(reviewForm.action, {\n                method: 'POST',\n                body: formData,\n            }).then(async response => {\n                const text = await response.text();\n                \n                \/\/ Parse standard WordPress error pages\n                if (text.includes('id=\"error-page\"') || text.includes('wp-die-message')) {\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(text, 'text\/html');\n                    const errorEl = doc.querySelector('.wp-die-message, p');\n                    const errorMsg = errorEl ? errorEl.innerText.trim() : 'Error submitting review. Please make sure all fields are filled.';\n                    throw new Error(errorMsg);\n                }\n\n                \/\/ Parse WooCommerce error notices\n                if (text.includes('woocommerce-error')) {\n                    const parser = new DOMParser();\n                    const doc = parser.parseFromString(text, 'text\/html');\n                    const errorEl = doc.querySelector('.woocommerce-error');\n                    const errorMsg = errorEl ? errorEl.innerText.trim() : 'Invalid form data.';\n                    throw new Error(errorMsg);\n                }\n\n                \/\/ Success message\n                const bodyDiv = document.querySelector('.mono-drawer-body');\n                bodyDiv.innerHTML = '<div class=\"mono-success-msg\" style=\"text-align:center; margin-top:50px;\"><h3>Thank you!<\/h3><p>Your review was submitted successfully.<\/p><\/div>';\n                setTimeout(() => {\n                    closeDrawer();\n                    location.reload(); \/\/ Reload to show the new review safely\n                }, 2500);\n            }).catch(err => {\n                if(submitBtn) {\n                    submitBtn.disabled = false;\n                    submitBtn.value = 'Submit Review';\n                }\n                alert(err.message);\n            });\n        });\n    }\n\n    \/\/ 4. AJAX Numbered Pagination\n    const wrapper = document.getElementById('mono-custom-reviews-wrapper');\n    const productId = wrapper ? wrapper.getAttribute('data-product-id') : 0;\n    \n    document.querySelectorAll('.mono-pagination').forEach(pagination => {\n        pagination.addEventListener('click', function(e) {\n            if (e.target.classList.contains('mono-page-btn')) {\n                const btn = e.target;\n                if (btn.classList.contains('active')) return;\n\n                const type = pagination.getAttribute('data-type');\n                const page = parseInt(btn.getAttribute('data-page'));\n                const listId = type === 'product' ? 'mono-list-product' : 'mono-list-all';\n                const listEl = document.getElementById(listId);\n                \n                \/\/ Update active state\n                pagination.querySelectorAll('.mono-page-btn').forEach(b => b.classList.remove('active'));\n                btn.classList.add('active');\n\n                \/\/ Visual loading state\n                listEl.style.opacity = '0.5';\n\n                const formData = new FormData();\n                formData.append('action', 'mono_load_reviews');\n                formData.append('type', type);\n                formData.append('page', page);\n                formData.append('product_id', productId);\n\n                fetch(mono_ajax.url, {\n                    method: 'POST',\n                    body: formData\n                })\n                .then(res => res.text())\n                .then(html => {\n                    listEl.innerHTML = html;\n                    listEl.style.opacity = '1';\n                    bindLightboxes(); \/\/ Rebind lightboxes for new images\n                    \n                    \/\/ Smooth scroll to top of wrapper\n                    wrapper.scrollIntoView({behavior: 'smooth', block: 'start'});\n                })\n                .catch(() => {\n                    listEl.style.opacity = '1';\n                    alert('Error loading reviews.');\n                });\n            }\n        });\n    });\n\n    \/\/ 5. Image Carousel Logic\n    let galleryItems = [];\n    let currentIndex = 0;\n\n    const lightbox = document.getElementById('mono-lightbox');\n    const lightboxImg = document.querySelector('.mono-lightbox-img');\n    const lightboxStars = document.querySelector('.mono-lightbox-stars');\n    const lightboxAuthor = document.querySelector('.mono-lightbox-author');\n    const lightboxText = document.querySelector('.mono-lightbox-text');\n    const prevBtn = document.querySelector('.mono-lightbox-prev');\n    const nextBtn = document.querySelector('.mono-lightbox-next');\n\n    function updateLightboxContent(index) {\n        if (!galleryItems[index]) return;\n        const data = galleryItems[index];\n        lightboxImg.src = data.full;\n        lightboxAuthor.textContent = data.author;\n        lightboxText.textContent = data.text;\n        \n        let starsHtml = '';\n        const rating = parseInt(data.rating) || 0;\n        for (let i = 1; i <= 5; i++) {\n            starsHtml += i <= rating ? '\u2605' : '\u2606';\n        }\n        lightboxStars.innerHTML = `<span class=\"mono-star-rating\" style=\"color:#f5b041;\">${starsHtml}<\/span>`;\n        \n        \/\/ Update arrow visibility\n        if (prevBtn) prevBtn.style.opacity = index === 0 ? '0.2' : '1';\n        if (nextBtn) nextBtn.style.opacity = index === galleryItems.length - 1 ? '0.2' : '1';\n    }\n\n    function openLightbox(index) {\n        currentIndex = index;\n        updateLightboxContent(currentIndex);\n        if (lightbox) lightbox.classList.add('is-active');\n        document.body.style.overflow = 'hidden';\n    }\n\n    function closeLightbox() {\n        if (lightbox) lightbox.classList.remove('is-active');\n        document.body.style.overflow = '';\n    }\n\n    function bindLightboxes() {\n        \/\/ Collect all images from the active DOM\n        galleryItems = [];\n        const items = document.querySelectorAll('.mono-gallery-item');\n        \n        items.forEach((item, index) => {\n            \/\/ Build data array\n            galleryItems.push({\n                full: item.getAttribute('data-full'),\n                author: item.getAttribute('data-author'),\n                rating: item.getAttribute('data-rating'),\n                text: item.getAttribute('data-text')\n            });\n            \n            \/\/ Rebind click safely\n            const newItem = item.cloneNode(true);\n            item.parentNode.replaceChild(newItem, item);\n            newItem.addEventListener('click', () => openLightbox(index));\n        });\n    }\n\n    if (nextBtn) {\n        nextBtn.addEventListener('click', () => {\n            if (currentIndex < galleryItems.length - 1) updateLightboxContent(++currentIndex);\n        });\n    }\n    if (prevBtn) {\n        prevBtn.addEventListener('click', () => {\n            if (currentIndex > 0) updateLightboxContent(--currentIndex);\n        });\n    }\n\n    const lightboxClose = document.querySelector('.mono-lightbox-close');\n    const lightboxOverlay = document.querySelector('.mono-lightbox-overlay');\n    if (lightboxClose) lightboxClose.addEventListener('click', closeLightbox);\n    if (lightboxOverlay) lightboxOverlay.addEventListener('click', closeLightbox);\n    \n    \/\/ Bind initially\n    bindLightboxes();\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"author":1,"featured_media":0,"template":"","porto_builder_type":[382],"class_list":["post-8646","porto_builder","type-porto_builder","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/porto_builder\/8646","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/porto_builder"}],"about":[{"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/types\/porto_builder"}],"author":[{"embeddable":true,"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":153,"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/porto_builder\/8646\/revisions"}],"predecessor-version":[{"id":9750,"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/porto_builder\/8646\/revisions\/9750"}],"wp:attachment":[{"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/media?parent=8646"}],"wp:term":[{"taxonomy":"porto_builder_type","embeddable":true,"href":"https:\/\/mono-perfumes.com\/ar\/wp-json\/wp\/v2\/porto_builder_type?post=8646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}