{"id":665,"date":"2026-07-24T07:56:59","date_gmt":"2026-07-24T07:56:59","guid":{"rendered":"https:\/\/www.ordertowin.com.au\/?page_id=665"},"modified":"2026-07-28T23:11:49","modified_gmt":"2026-07-28T23:11:49","slug":"august-2026","status":"publish","type":"page","link":"https:\/\/www.ordertowin.com.au\/","title":{"rendered":"August 2026"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"665\" class=\"elementor elementor-665\"> \t\t\t\t\t\t<section data-ka-cursor-size=\"1\" class=\"elementor-section elementor-top-section elementor-element elementor-element-6a963b1 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no\" data-id=\"6a963b1\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\"> \t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\"> \t\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-30833d6\" data-id=\"30833d6\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\"> \t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\"> \t\t\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-70f984b elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"70f984b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"html.default\"> \t\t\t\t\t  <header class=\"otw-header\">     <a class=\"otw-brand\" href=\"#top\" aria-label=\"ParagonCare home\">       <span class=\"otw-brand-name\"><img decoding=\"async\" src=\"https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/pg.png\" style=\"width: 200px\"><\/span>           <\/a>      <nav class=\"otw-nav\" aria-label=\"Page navigation\">       <a href=\"#how\">How it works<\/a>       <a href=\"#prizes\">Prizes<\/a>       <a href=\"#faq\">FAQ<\/a>       <a href=\"#terms\">Terms &amp; Conditions<\/a>     <\/nav>      <a class=\"otw-button otw-button-small\" href=\"#spin\">Spin now<\/a>   <\/header>\t\t\t\t<\/div> \t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-b9e65f5 elementor-hidden-mobile elementor-widget elementor-widget-image\" data-id=\"b9e65f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"image.default\"> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#spin\"> \t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"2098\" height=\"749\" src=\"https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain.png\" class=\"attachment-full size-full wp-image-782\" alt=\"\" srcset=\"https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain.png 2098w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain-300x107.png 300w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain-1024x366.png 1024w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain-768x274.png 768w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain-1536x548.png 1536w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain-2048x731.png 2048w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/bannermain-600x214.png 600w\" sizes=\"(max-width: 2098px) 100vw, 2098px\" \/>\t\t\t\t\t\t\t\t<\/a> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div> \t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-7e4f9af elementor-hidden-desktop elementor-hidden-tablet elementor-widget elementor-widget-image\" data-id=\"7e4f9af\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"image.default\"> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#spin\"> \t\t\t\t\t\t\t<img decoding=\"async\" width=\"864\" height=\"1821\" src=\"https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m.png\" class=\"attachment-full size-full wp-image-802\" alt=\"\" srcset=\"https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m.png 864w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m-142x300.png 142w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m-486x1024.png 486w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m-768x1619.png 768w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m-729x1536.png 729w, https:\/\/www.ordertowin.com.au\/wp-content\/uploads\/2026\/07\/banner-m-600x1265.png 600w\" sizes=\"(max-width: 864px) 100vw, 864px\" \/>\t\t\t\t\t\t\t\t<\/a> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div> \t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-d2c1385 elementor-widget elementor-widget-html\" data-id=\"d2c1385\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"html.default\"> \t\t\t\t\t<section class=\"otw-how otw-shell\" id=\"how\">       <h2 style=\"color: white; padding-top:0px; margin-top:-40px; font-size:50px; letter-spacing: -2px; text-align: center\">How it works<\/h2>       <div class=\"otw-step-grid\">         <article class=\"otw-step-card\">           <span>1<\/span>           <h3 style=\"color: white\">Order $100+<\/h3>           <p>Place a single order of $100 or more (ex GST) through the ParagonCare pharmacy ordering portal during August.<\/p>         <\/article>         <article class=\"otw-step-card\">           <span>2<\/span>           <h3 style=\"color: white\">Enter your code<\/h3>           <p>Pop your code number into the form above and agree to the terms and conditions.<\/p>         <\/article>         <article class=\"otw-step-card\">           <span>3<\/span>           <h3 style=\"color: white\">Spin &amp; win<\/h3>           <p>Winners are notified by email within 2 business days and gift cards are sent digitally.<\/p>         <\/article>       <\/div>     <\/section>\t\t\t\t<\/div> \t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-6f2748b elementor-widget__width-inherit elementor-widget elementor-widget-shortcode\" data-id=\"6f2748b\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"spin\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"shortcode.default\"> \t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"wheel\" class=\"wxgiveaway-lucky-wheel-container\">             <div class=\"wheel-form-container template_one\">         <div>             <h3 class=\"gameheading\">Play The Game!<\/h3>        <\/div>          <div class=\"wheel-form\">             <div class=\"lucky-wheel-form-group\">                 <label for=\"customer_code\">Your Code *<\/label>                 <input type=\"text\" id=\"customer_code\" name=\"customer_code\" value=\"\"  title=\"\" required>                 <div class=\"wxgiveaway-extra-spin-message\" role=\"status\" aria-live=\"polite\">                     Remember to use your extra spin!                <\/div>             <\/div>                                                                                               <div class=\"lucky-wheel-form-group\" style=\"margin-top: 10px;\">                     <div class=\"checkbox-group\">                         <input type=\"checkbox\" id=\"accept_terms\" name=\"accept_terms\" required>                         <label for=\"accept_terms\"> I agree to the terms and conditions *<\/label>                     <\/div>                 <\/div>                         <small class=\"lucky-wheel-error-success-message\"><\/small>             <button type=\"button\" class=\"lucky-wheel-submit-button\">                 Spin the Wheel!            <\/button>         <\/div>     <\/div>         <div class=\"wheel-container\">                 <div class=\"wheel-wrapper\" style=\"visibility:hidden;\">             <canvas id=\"wheel-canvas\" width=\"500\" height=\"500\"><\/canvas>             <div class=\"wheel-pointer\"><\/div>             <div class=\"wheel-center-circle\">             <\/div>         <\/div>             <\/div>      <script>\n        (function() {\n            const wheelData = [{\"slice_label\":\"$500 VISA Gift Card\",\"slice_no_prize\":\"no\",\"discount_type\":\"existing_coupon\",\"never_show\":\"yes\",\"scheduled_prize_enabled\":\"yes\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"2026-08-26 11:03\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"25\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$500 VISA Gift Card\",\"existing_coupon_code\":\"$500 VISA CARD\",\"existing_coupon_wining_description\":\"You have won a $500 VISA CARD\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"Better luck next time! Thanks for playing the wheel of fortune.\"},{\"slice_label\":\"$100 Gift Card\",\"slice_no_prize\":\"no\",\"discount_type\":\"existing_coupon\",\"never_show\":\"no\",\"scheduled_prize_enabled\":\"yes\",\"scheduled_prize_max_wins\":\"17\",\"scheduled_prize_dates\":\"2026-08-01 10:40\\r\\n2016-08-02 09:00\\r\\n2026-08-03 11:00\\r\\n2026-08-04 09:33\\r\\n2026-08-05 10:00\\r\\n2026-08-06 12:00\\r\\n2026-08-07 13:00\\r\\n2026-08-08 10:10\\r\\n2026-08-09 14:02\\r\\n2026-08-10 09:00\\r\\n2026-08-11 10:12\\r\\n2026-08-12 07:00\\r\\n2026-08-13 09:00\\r\\n2026-08-14 10:10\\r\\n2026-08-17 09:00\\r\\n2026-08-18 09:00\\r\\n2026-08-20 15:00\\r\\n2026-08-25 04:00\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"fixed\",\"coupon_discount_amount\":\"100\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$100 Gift Card\",\"existing_coupon_code\":\"$100 VISA CARD\",\"existing_coupon_wining_description\":\"You have won a $100 VISA CARD\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"You have won a $100 Visa Gift Card!\"},{\"slice_label\":\"ORDER TO WIN\",\"slice_no_prize\":\"yes\",\"discount_type\":\"existing_coupon\",\"never_show\":\"no\",\"scheduled_prize_enabled\":\"no\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"2026-08-06 09:00\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"ORDER TO WIN\",\"existing_coupon_code\":\"No win\",\"existing_coupon_wining_description\":\"No win\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"You are in the weekly draw for $250!\"},{\"slice_label\":\"$250 VISA Gift Card\",\"slice_no_prize\":\"no\",\"discount_type\":\"existing_coupon\",\"never_show\":\"yes\",\"scheduled_prize_enabled\":\"yes\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"2026-08-10 11:10\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"50\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$250 VISA Gift Card\",\"existing_coupon_code\":\"$250 VISA CARD\",\"existing_coupon_wining_description\":\"You have won a $250 VISA CARD\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"Better luck next time! Thanks for playing the wheel of fortune.\"},{\"slice_label\":\"ORDER TO WIN \",\"slice_no_prize\":\"no\",\"discount_type\":\"new_coupon\",\"never_show\":\"no\",\"scheduled_prize_enabled\":\"no\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"ORDER TO WIN\",\"existing_coupon_code\":\"\",\"existing_coupon_wining_description\":\"You have won a coupon! Code: {coupon_code}\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"You are in the weekly draw for $250!\"},{\"slice_label\":\"$250 VISA GIFT CARD\",\"slice_no_prize\":\"no\",\"discount_type\":\"new_coupon\",\"never_show\":\"no\",\"scheduled_prize_enabled\":\"no\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$250 VISA GIFT CARD\",\"existing_coupon_code\":\"\",\"existing_coupon_wining_description\":\"You have won a coupon! Code: {coupon_code}\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"You are in the weekly draw for $250!\"},{\"slice_label\":\"slice 7\",\"slice_no_prize\":\"no\",\"discount_type\":\"none\",\"never_show\":\"no\",\"scheduled_prize_enabled\":\"no\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"You have won a {discount_amount}{discount_type} OFF coupon: {coupon_code} (Valid for {expiry_date})\",\"existing_coupon_code\":\"\",\"existing_coupon_wining_description\":\"You have won a coupon! Code: {coupon_code}\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"Better luck next time! Thanks for playing !\"},{\"slice_label\":\"slice 8\",\"slice_no_prize\":\"no\",\"discount_type\":\"none\",\"never_show\":\"no\",\"scheduled_prize_enabled\":\"no\",\"scheduled_prize_max_wins\":\"1\",\"scheduled_prize_dates\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"You have won a {discount_amount}{discount_type} OFF coupon: {coupon_code} (Valid for {expiry_date})\",\"existing_coupon_code\":\"\",\"existing_coupon_wining_description\":\"You have won a coupon! Code: {coupon_code}\",\"tickets_quantity\":\"\",\"reward_ticket_valid_date_type\":\"specific\",\"reward_ticket_valid_date\":\"\",\"ticket_wining_description\":\"You won {tickets_count} free entries for our {giveaway_products}! Valid for {valid_date}\",\"reward_points\":\"\",\"reward_wining_description\":\"You earned {reward_points} reward points that can be used like coupons!\",\"none_wining_description\":\"Better luck next time! \"}];\n            const wheelId = 'wheel';\n            const fullWheelImageUrl = \"https:\\\/\\\/www.ordertowin.com.au\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/august-wheel.png\";\n            const showBordersOverFullImage = false;\n            const canvas = document.getElementById(wheelId + '-canvas');\n            const ctx = canvas.getContext('2d');\n            const wheelWrapper = canvas.closest('.wheel-wrapper');\n\n            function revealWheel() {\n                if (!wheelWrapper) {\n                    return;\n                }\n\n                \/\/ Reveal only after the finished canvas has reached the browser's paint queue.\n                requestAnimationFrame(function() {\n                    requestAnimationFrame(function() {\n                        wheelWrapper.style.visibility = 'visible';\n                    });\n                });\n            }\n\n            const totalSlices = wheelData.length;\n            const sliceAngle = (2 * Math.PI) \/ totalSlices;\n            const pointerOffset = -Math.PI \/ 2; \/\/ Start from top (-90\u00b0)\n\n            let currentRotation = 0;\n            const sliceImageCache = {};\n            const fullWheelImage = {\n                loaded: false,\n                image: null\n            };\n\n            function loadFullWheelImage(url) {\n                if (!url) {\n                    return;\n                }\n                const img = new Image();\n                fullWheelImage.image = img;\n                img.onload = function() {\n                    fullWheelImage.loaded = true;\n                    drawWheel();\n                    revealWheel();\n                };\n                img.onerror = function() {\n                    fullWheelImage.loaded = false;\n                    fullWheelImage.image = null;\n                    drawWheel();\n                    revealWheel();\n                };\n                img.src = url;\n            }\n\n            function loadSliceImage(url) {\n                if (!url || sliceImageCache[url]) {\n                    return;\n                }\n\n                const img = new Image();\n                sliceImageCache[url] = { loaded: false, image: img };\n\n                img.onload = function() {\n                    sliceImageCache[url].loaded = true;\n                    drawWheel();\n                };\n                img.onerror = function() {\n                    delete sliceImageCache[url];\n                };\n                img.src = url;\n            }\n\n            if (fullWheelImageUrl) {\n                loadFullWheelImage(fullWheelImageUrl);\n            }\n            wheelData.forEach((slice) => {\n                if (slice.slice_bg_image_url) {\n                    loadSliceImage(slice.slice_bg_image_url);\n                }\n            });\n\n            \/\/ Function to wrap text into multiple lines\n            function wrapText(context, text, maxWidth, maxLines = 2) {\n                const words = text.split(' ');\n                const lines = [];\n                let currentLine = words[0];\n\n                for (let i = 1; i < words.length; i++) {\n                    const word = words[i];\n                    const width = context.measureText(currentLine + \" \" + word).width;\n                    if (width < maxWidth) {\n                        currentLine += \" \" + word;\n                    } else {\n                        lines.push(currentLine);\n                        currentLine = word;\n                        \/\/ Stop if we reach max lines\n                        if (lines.length >= maxLines - 1) {\n                            \/\/ Add ellipsis if text is too long\n                            if (i < words.length - 1) {\n                                currentLine += '...';\n                            }\n                            break;\n                        }\n                    }\n                }\n                lines.push(currentLine);\n                return lines;\n            }\n\n            \/\/ Draw static wheel (no rotation applied in drawing)\n            function drawWheel() {\n                const centerX = canvas.width \/ 2;\n                const centerY = canvas.height \/ 2;\n                const radius = Math.min(centerX, centerY) - 2;\n                \/\/ Responsive font size calculation\n                const isMobile = window.innerWidth < 768;\n                const fontSize = isMobile ? 20 : 20;\n\n                \/\/ Calculate maximum text width based on slice geometry\n                const maxTextWidth = radius * 0.8; \/\/ 60% of radius for text area\n\n                ctx.clearRect(0, 0, canvas.width, canvas.height);\n                ctx.save();\n                ctx.translate(centerX, centerY);\n\n                const isUsingFullImage = !!(fullWheelImageUrl && fullWheelImage.loaded && fullWheelImage.image);\n                const shouldDrawSliceLabels = !isUsingFullImage || showBordersOverFullImage;\n                if (isUsingFullImage) {\n                    ctx.save();\n                    ctx.beginPath();\n                    ctx.arc(0, 0, radius, 0, 2 * Math.PI);\n                    ctx.closePath();\n                    ctx.clip();\n                    ctx.drawImage(fullWheelImage.image, -radius, -radius, radius * 2, radius * 2);\n                    ctx.restore();\n                }\n\n                wheelData.forEach((slice, index) => {\n                    const startAngle = pointerOffset + (index * sliceAngle);\n                    const endAngle = startAngle + sliceAngle;\n                    const centerAngle = startAngle + (sliceAngle \/ 2);\n                    const borderColor = slice.slice_color || '#ff0000';\n\n                    if (!isUsingFullImage) {\n                        \/\/ Draw slice background (color or per-slice image)\n                        ctx.beginPath();\n                        ctx.moveTo(0, 0);\n                        ctx.arc(0, 0, radius, startAngle, endAngle);\n                        ctx.closePath();\n\n                        const bgColor = slice.slice_bg_color || ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FECA57', '#FF9FF3'][index % 6];\n                        const imageUrl = slice.slice_bg_image_url || '';\n                        const cachedImage = imageUrl ? sliceImageCache[imageUrl] : null;\n\n                        if (cachedImage && cachedImage.loaded) {\n                            ctx.save();\n                            ctx.clip();\n                            ctx.rotate(centerAngle);\n                            ctx.drawImage(cachedImage.image, -radius, -radius, radius * 2, radius * 2);\n                            ctx.restore();\n                        } else {\n                            ctx.fillStyle = bgColor;\n                            ctx.fill();\n                        }\n                        ctx.strokeStyle = borderColor;\n                        ctx.lineWidth = 1;\n                        ctx.stroke();\n                    } else if (showBordersOverFullImage) {\n                        \/\/ Draw slice borders above full wheel image if enabled\n                        ctx.beginPath();\n                        ctx.moveTo(0, 0);\n                        ctx.arc(0, 0, radius, startAngle, endAngle);\n                        ctx.closePath();\n                        ctx.strokeStyle = borderColor;\n                        ctx.lineWidth = 1;\n                        ctx.stroke();\n                    }\n\n                    if (shouldDrawSliceLabels) {\n                        \/\/ Draw text with wrapping\n                        ctx.save();\n                        ctx.rotate(centerAngle);\n                        ctx.textAlign = 'center';\n                        ctx.textBaseline = 'middle';\n                        ctx.font = `bold ${fontSize}px Arial`;\n                        ctx.fillStyle = slice.slice_font_color || '#000000';\n\n                        const text = slice.slice_label || 'Slice ' + (index + 1);\n\n                        \/\/ Set temporary font to calculate text width\n                        ctx.font = `bold ${fontSize}px Arial`;\n                        const textMetrics = ctx.measureText(text);\n\n                        \/\/ If text is too wide, wrap it\n                        if (textMetrics.width > maxTextWidth) {\n                            const lines = wrapText(ctx, text, maxTextWidth, 3); \/\/ Max 3 lines\n\n                            \/\/ Draw each line with vertical spacing\n                            const lineHeight = fontSize * 1.2;\n                            const totalHeight = lines.length * lineHeight;\n                            const startY = -totalHeight \/ 2 + lineHeight \/ 2;\n\n                            lines.forEach((line, lineIndex) => {\n                                ctx.fillText(line, radius * 0.6, startY + (lineIndex * lineHeight));\n                            });\n                        } else {\n                            \/\/ Single line text\n                            ctx.fillText(text, radius * 0.5, 0);\n                        }\n\n                        ctx.restore();\n                    }\n                });\n\n                ctx.restore();\n            }\n\n            window[wheelId + '_spinWheel'] = function(winnerSliceIndex) {\n                console.log('Spinning to slice index:', winnerSliceIndex);\n\n                const sliceAngleDeg = 360 \/ totalSlices;\n\n                \/\/ IMPORTANT: Remove transition temporarily to reset position instantly\n                canvas.style.transition = 'none';\n                canvas.style.transform = 'rotate(0deg)';\n                currentRotation = 0;\n\n                \/\/ Force browser to apply the reset before starting new animation\n                void canvas.offsetHeight; \/\/ Trigger reflow\n\n                \/\/ Now calculate the new spin\n                \/\/ Calculate how many degrees to rotate in 5 seconds at a reasonable speed\n                \/\/ 5 full rotations in 5 seconds = 1800 degrees (5 * 360)\n                const extraRotations = 5 * 360; \/\/ 5 full rotations for 5 seconds of spinning\n\n                \/\/ Calculate the center angle of the winning slice\n                const sliceCenterAngle = (winnerSliceIndex * sliceAngleDeg) + (sliceAngleDeg \/ 2);\n\n                \/\/ We want the slice center to land at the top (pointer position)\n                \/\/ Since pointer is at top (-90\u00b0 or 270\u00b0), we need to rotate so slice center aligns\n                const targetAngle = (360 - sliceCenterAngle);\n\n                \/\/ Add extra rotations for the 5 second spin\n                const finalRotation = extraRotations + targetAngle;\n\n                \/\/ Set animation duration to 5 seconds (5000ms) + original spin duration\n                const totalDuration = (5 * 1000) + 4000;\n\n                \/\/ Use setTimeout to ensure the reset has been applied before starting animation\n                setTimeout(() => {\n                    \/\/ Apply CSS rotation with extended duration\n                    canvas.style.transition = `transform ${totalDuration}ms cubic-bezier(0.17, 0.67, 0.12, 0.99)`;\n                    canvas.style.transform = `rotate(${finalRotation}deg)`;\n\n                    currentRotation = finalRotation % 360;\n\n                    console.log('Spinning for:', totalDuration + 'ms', 'Target slice:', winnerSliceIndex, 'Total rotation:', finalRotation + '\u00b0');\n                }, 50); \/\/ Small delay to ensure reset is applied\n\n                \/\/ Return the total duration so the form handler can use it\n                return totalDuration;\n            };\n\n            \/\/ Initial draw\n            drawWheel();\n\n            \/\/ If no full wheel image is configured, show the generated wheel immediately.\n            if (!fullWheelImageUrl) {\n                revealWheel();\n            }\n\n            \/\/ Redraw on window resize for responsive text\n            window.addEventListener('resize', function() {\n                drawWheel();\n            });\n        })();\n    <\/script>         <div class=\"winner-modal\">         <div class=\"winner-content\">                             <button class=\"close-modal\">&times;<\/button>                         <div class=\"winner-modal-content\">                 <div style=\"text-align: center;padding: 20px;font-family: 'arial black';background-color: #008ce0;text-transform: uppercase;letter-spacing: -1px\">    <b>Thank you!<\/b>    <\/div>            <\/div>         <\/div>     <\/div>             <div class=\"wxgiveaway-details-modal\" style=\"display:none;\">             <div class=\"wxgiveaway-details-content\">                 <button type=\"button\" class=\"wxgiveaway-details-close\">&times;<\/button>                 <div class=\"wxgiveaway-details-modal-header\">                     <div style=\"max-width: 700px;margin: 40px auto;padding: 40px 30px;background: #113171;border-radius: 24px;text-align: center;font-family: Arial,Helvetica,sans-serif\">  <div style=\"display: inline-block;padding: 8px 18px;background: #30BCEC;border-radius: 100px;font-size: 12px;font-weight: bold;letter-spacing: 2px;text-transform: uppercase;color: #113171;margin-bottom: 20px\">\ud83c\udf89 Winner<\/div>  <h1 style=\"margin: 0;color: #fff;font-size: 48px;font-weight: 900;text-transform: uppercase;letter-spacing: -2px\">Congratulations!<\/h1>  <p style=\"margin: 10px 0 30px;font-size: 20px;text-transform: uppercase;letter-spacing: 2px\">You have won<\/p>    <div style=\"background: linear-gradient(135deg,#30BCEC,#14A7D8);padding: 28px;border-radius: 18px;margin-bottom: 30px\">  <h2 style=\"margin: 0;font-size: 34px;font-weight: 900;color: #fff;text-transform: uppercase;letter-spacing: -1px\">{slice_label}<\/h2>  <\/div>  <div style=\"border-radius: 16px;padding: 22px\">  <div style=\"font-size: 15px;font-weight: 900;color: #30bcec;text-transform: uppercase;letter-spacing: 2px;margin-bottom: 10px\">Important<\/div>  <div style=\"font-size: 20px;font-weight: 800;color: #fff;line-height: 1.5;text-transform: uppercase\">Complete the form below to claim your prize.<\/div>  <\/div>  <\/div>                <\/div>                 <form class=\"wxgiveaway-details-form\">                     <input type=\"hidden\" name=\"winner_id\" value=\"\">                     <input type=\"hidden\" name=\"slice_label\" value=\"\">                     <input type=\"hidden\" name=\"win_description\" value=\"\">                     <div class=\"wxgiveaway-details-error\" style=\"display:none;\"><\/div>                                              <label for=\"wxgiveaway-details-name\">Full Name *<\/label>                         <input id=\"wxgiveaway-details-name\" type=\"text\" name=\"customer_name\" required>                                                                  <label for=\"wxgiveaway-details-business\">Business Name *<\/label>                         <input id=\"wxgiveaway-details-business\" type=\"text\" name=\"customer_business\" required>                                                                  <label for=\"wxgiveaway-details-business-address\">Business Address *<\/label>                         <input id=\"wxgiveaway-details-business-address\" type=\"text\" name=\"customer_business_address\" required>                                                                  <label for=\"wxgiveaway-details-email\">Email Address *<\/label>                         <input id=\"wxgiveaway-details-email\" type=\"email\" name=\"customer_email\" required>                                                                  <label for=\"wxgiveaway-details-phone\">Phone Number *<\/label>                         <input id=\"wxgiveaway-details-phone\" type=\"tel\" name=\"customer_phone\" required>                                          <button type=\"submit\" class=\"button button-primary\">Submit<\/button>                 <\/form>             <\/div>         <\/div>         <div class=\"wxgiveaway-survey-modal\" style=\"display:none;\">         <div class=\"wxgiveaway-survey-content\">                             <button type=\"button\" class=\"wxgiveaway-survey-close\">&times;<\/button>                         <h3>Prize Claim Survey<\/h3>             <form class=\"wxgiveaway-survey-form\">                 <input type=\"hidden\" name=\"winner_id\" value=\"\">                 <div class=\"wxgiveaway-survey-error\" style=\"display:none;\"><\/div>                  <fieldset>                     <legend>Do you have a swimming pool at home?<\/legend>                     <label><input type=\"radio\" name=\"pool_at_home\" value=\"yes\" required> Yes<\/label>                     <label><input type=\"radio\" name=\"pool_at_home\" value=\"no\"> No<\/label>                 <\/fieldset>                  <fieldset>                     <legend>Do you have children living at home?<\/legend>                     <label><input type=\"checkbox\" name=\"children_at_home[]\" value=\"baby_toddler_preschool\"> Yes, Baby\/Toddler\/Pre-school (0-4yr)<\/label>                     <label><input type=\"checkbox\" name=\"children_at_home[]\" value=\"primary_school\"> Yes, Primary School<\/label>                     <label><input type=\"checkbox\" name=\"children_at_home[]\" value=\"high_school\"> Yes, High School<\/label>                     <label><input type=\"checkbox\" name=\"children_at_home[]\" value=\"no_children\"> No<\/label>                 <\/fieldset>                  <fieldset>                     <legend>Have you lived in Australia for the past five years?<\/legend>                     <label><input type=\"radio\" name=\"lived_in_australia_five_years\" value=\"yes\" required> Yes<\/label>                     <label><input type=\"radio\" name=\"lived_in_australia_five_years\" value=\"no\"> No<\/label>                 <\/fieldset>                  <fieldset>                     <legend>Have you been boating or fishing in the past 12 months?<\/legend>                     <label><input type=\"radio\" name=\"boating_or_fishing_last_twelve_months\" value=\"yes\" required> Yes<\/label>                     <label><input type=\"radio\" name=\"boating_or_fishing_last_twelve_months\" value=\"no\"> No<\/label>                 <\/fieldset>                  <fieldset>                     <legend>Which is your age category?<\/legend>                     <select name=\"age_category\" required>                         <option value=\"\">Select age category<\/option>                         <option value=\"18-24\">18-24 years<\/option>                         <option value=\"25-44\">25-44 years<\/option>                         <option value=\"45-64\">45-64 years<\/option>                         <option value=\"65+\">65+<\/option>                     <\/select>                 <\/fieldset>                  <fieldset>                     <legend>Entrant Details<\/legend>                     <input type=\"text\" name=\"entrant_name\" placeholder=\"Name\" required>                     <input type=\"email\" name=\"entrant_email\" placeholder=\"Email\" required>                     <input type=\"tel\" name=\"entrant_phone\" placeholder=\"Mobile Phone number\" required>                     <input type=\"text\" name=\"entrant_postcode\" placeholder=\"Postcode\" required>                 <\/fieldset>                  <button type=\"submit\" class=\"button button-primary\">Claim Prize<\/button>             <\/form>         <\/div>     <\/div>      <style>         .winner-modal {             display: none;             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             background: rgba(0,0,0,0.8);             z-index: 1000;             justify-content: center;             align-items: center;         }          .winner-content {             background: white;             padding: 40px;             border-radius: 20px;             text-align: center;             max-width: 500px;             position: relative;             animation: bounceIn 0.6s ease;         }          .winner-modal-content {             text-align: left;         }          .winner-modal-content h2,         .winner-modal-content h3,         .winner-modal-content h4 {             text-align: center;             margin-bottom: 20px;         }          .winner-modal-content .prize-highlight {             background: linear-gradient(45deg, #ffd700, #ffed4a);             padding: 20px;             border-radius: 10px;             margin: 20px 0;             text-align: center;             font-weight: bold;         }          .winner-modal-content .winner-info {             margin: 20px 0;             padding: 15px;             background: #f8f9fa;             border-radius: 8px;         }          .close-modal {             position: absolute;             top: 10px;             right: 15px;             background: none;             border: none;             font-size: 24px;             cursor: pointer;             z-index: 1001;         }         .wxgiveaway-details-modal {             display: none;             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             background: rgba(0, 0, 0, 0.8);             z-index: 1002;             justify-content: center;             align-items: center;             overflow-y: auto;             padding: 20px;             box-sizing: border-box;         }         .wxgiveaway-details-content {             background: #fff;             border-radius: 12px;             max-width: 560px;             width: 100%;             max-height: 90vh;             overflow-y: auto;             padding: 20px;             position: relative;             box-sizing: border-box;         }         .wxgiveaway-details-content h3 {             margin-top: 0;             margin-bottom: 12px;         }         .wxgiveaway-details-content label {             display: block;             margin: 8px 0 4px;             font-weight: 600;         }         .wxgiveaway-details-content input {             width: 100%;             margin: 6px 0;             box-sizing: border-box;         }         .wxgiveaway-details-close {             position: absolute;             top: 8px;             right: 12px;             border: none;             background: transparent;             font-size: 24px;             cursor: pointer;         }         .wxgiveaway-details-error {             color: #b00020;             margin-bottom: 10px;         }         .wxgiveaway-survey-modal {             display: none;             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             background: rgba(0, 0, 0, 0.8);             z-index: 1002;             justify-content: center;             align-items: center;             overflow-y: auto;             padding: 20px;             box-sizing: border-box;         }         .wxgiveaway-survey-content {             background: #fff;             border-radius: 12px;             max-width: 760px;             width: 100%;             max-height: 90vh;             overflow-y: auto;             padding: 20px;             position: relative;         }         .wxgiveaway-survey-content fieldset {             border: 1px solid #ddd;             border-radius: 8px;             padding: 12px;             margin: 0 0 12px;         }         .wxgiveaway-survey-content label {             display: block;             margin: 6px 0;         }         .wxgiveaway-survey-content select,         .wxgiveaway-survey-content input[type=\"text\"],         .wxgiveaway-survey-content input[type=\"email\"],         .wxgiveaway-survey-content input[type=\"tel\"] {             width: 100%;             margin: 6px 0;         }         .wxgiveaway-survey-close {             position: absolute;             top: 8px;             right: 12px;             border: none;             background: transparent;             font-size: 24px;             cursor: pointer;         }         .wxgiveaway-survey-error {             color: #b00020;             margin-bottom: 10px;         }          @keyframes bounceIn {             0% { transform: scale(0.3); opacity: 0; }             50% { transform: scale(1.05); }             70% { transform: scale(0.9); }             100% { transform: scale(1); opacity: 1; }         }          @media (max-width: 768px) {             .winner-content {                 max-width: 90%;                 padding: 20px;                 margin: 20px;             }         }     <\/style>      <script>\n        (function() {\n            const surveyEnabled = false;\n            const detailsAfterSpinEnabled = true;\n            const detailsModalHeaderTemplate = `<div style=\\\"max-width: 700px; margin: 40px auto; padding: 40px 30px; background: #113171; border-radius: 24px; text-align: center; font-family: Arial,Helvetica,sans-serif; box-shadow: 0 20px 50px rgba(0,0,0,.25);\\\">\r\n<div style=\\\"display: inline-block; padding: 8px 18px; background: #30BCEC; border-radius: 100px; font-size: 12px; font-weight: bold; letter-spacing: 2px; text-transform: uppercase; color: #113171; margin-bottom: 20px;\\\">\ud83c\udf89 Winner<\/div>\r\n<h1 style=\\\"margin: 0; color: #fff; font-size: 48px; font-weight: 900; text-transform: uppercase; letter-spacing: -2px;\\\">Congratulations!<\/h1>\r\n<p style=\\\"margin: 10px 0 30px; color: rgba(255,255,255,.8); font-size: 20px; text-transform: uppercase; letter-spacing: 2px;\\\">You have won<\/p>\r\n\r\n<div style=\\\"background: linear-gradient(135deg,#30BCEC,#14A7D8); padding: 28px; border-radius: 18px; box-shadow: 0 12px 30px rgba(48,188,236,.35); margin-bottom: 30px;\\\">\r\n<h2 style=\\\"margin: 0; font-size: 34px; font-weight: 900; color: #fff; text-transform: uppercase; letter-spacing: -1px;\\\">{slice_label}<\/h2>\r\n<\/div>\r\n<div style=\\\"background: rgba(255,255,255,.08); border: 2px solid rgba(48,188,236,.4); border-radius: 16px; padding: 22px;\\\">\r\n<div style=\\\"font-size: 15px; font-weight: 900; color: #30bcec; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 10px;\\\">Important<\/div>\r\n<div style=\\\"font-size: 20px; font-weight: 800; color: #fff; line-height: 1.5; text-transform: uppercase;\\\">Complete the form below to claim your prize.<\/div>\r\n<\/div>\r\n<\/div>`;\n            window.wxgiveawayRequireSurveyOnWinnerModal = surveyEnabled;\n\n            function escapeHtml(input) {\n                const div = document.createElement('div');\n                div.textContent = input || '';\n                return div.innerHTML;\n            }\n\n            function buildSurveyButton(winnerData) {\n                if (!surveyEnabled || !winnerData || !winnerData.winner_id || !!winnerData.is_none) {\n                    return '';\n                }\n\n                return `<button type=\"button\" class=\"button button-primary wxgiveaway-open-survey\"\n                            data-winner-id=\"${parseInt(winnerData.winner_id, 10)}\"\n                            data-name=\"${escapeHtml(winnerData.customer_name || '')}\"\n                            data-email=\"${escapeHtml(winnerData.customer_email || '')}\"\n                            data-phone=\"${escapeHtml(winnerData.customer_phone || '')}\">\n                            Claim Prize                        <\/button>`;\n            }\n\n            function applyWinnerDataToTemplate(content, winnerData) {\n                let processed = content;\n                processed = processed.replace(\/{customer_name}\/g, winnerData.customer_name || '');\n                processed = processed.replace(\/{customer_business}\/g, winnerData.customer_business || '');\n                processed = processed.replace(\/{customer_business_address}\/g, winnerData.customer_business_address || '');\n                processed = processed.replace(\/{customer_email}\/g, winnerData.customer_email || '');\n                processed = processed.replace(\/{customer_phone}\/g, winnerData.customer_phone || '');\n                processed = processed.replace(\/{win_description}\/g, winnerData.win_description || '');\n                processed = processed.replace(\/{coupon_code}\/g, winnerData.coupon_code || '');\n                processed = processed.replace(\/{slice_label}\/g, winnerData.slice_label || '');\n                processed = processed.replace(\/{discount_amount}\/g, winnerData.discount_amount || '');\n                processed = processed.replace(\/{discount_type}\/g, winnerData.discount_type || '');\n                processed = processed.replace(\/{expiry_date}\/g, winnerData.expiry_date || '');\n                processed = processed.replace(\/{tickets_count}\/g, winnerData.tickets_count || '');\n                processed = processed.replace(\/{valid_date}\/g, winnerData.valid_date || '');\n                processed = processed.replace(\/{giveaway_products}\/g, winnerData.giveaway_products || '');\n                processed = processed.replace(\/{reward_points}\/g, winnerData.reward_points || '');\n                processed = processed.replace(\/{no_prize_text}\/g, winnerData.no_prize_text || '');\n                return processed;\n            }\n\n            \/\/ Function to update modal content with actual winner data\n            window.wxgiveawayUpdateWinnerModal = function(winnerData, modalElement, options) {\n                const modal = modalElement || document.querySelector('.winner-modal');\n                const modalContent = modal ? modal.querySelector('.winner-modal-content') : null;\n\n                if (!modal || !modalContent) return;\n                const skipDetailsStep = options && options.skipDetailsStep;\n                const forceDetailsOnly = options && options.forceDetailsOnly;\n\n                if (winnerData && winnerData.is_none) {\n                    const noPrizeMessage = winnerData.no_prize_text || 'Better luck next time! Thanks for playing the wheel of fortune.';\n                    modalContent.innerHTML = `\n                        <div style=\"text-align:center;padding:20px;\">\n                            <h3 style=\"margin-bottom:12px;\">Better luck next time!<\/h3>\n                            <p style=\"margin:0;\">${noPrizeMessage}<\/p>\n                        <\/div>\n                    `;\n                    modal._wxgiveawayWinnerData = winnerData;\n                    modal.dataset.requireSurvey = '0';\n                    modal.style.display = 'flex';\n                    return;\n                }\n\n                \/\/ Replace variables with actual data\n                let content = `<div style=\\\"text-align: center; padding: 20px; font-family: \\'arial black\\'; background-color: #008ce0; text-transform: uppercase; letter-spacing: -1px;\\\">\r\n\r\n<b>Thank you!<\/b>\r\n\r\n<\/div>`;\n\n                \/\/ Replace all variables\n                content = applyWinnerDataToTemplate(content, winnerData);\n                content = content.replace(\/{survey}\/g, buildSurveyButton(winnerData));\n                content = content.replace(\/{details_button}\/g, '');\n\n                modalContent.innerHTML = content;\n                \/\/ If custom modal template forgot {survey}, inject the claim button fallback.\n                if (\n                    surveyEnabled &&\n                    winnerData &&\n                    winnerData.winner_id &&\n                    !winnerData.is_none &&\n                    !modalContent.querySelector('.wxgiveaway-open-survey')\n                ) {\n                    const fallbackSurveyButton = buildSurveyButton(winnerData);\n                    if (fallbackSurveyButton) {\n                        const fallbackWrap = document.createElement('div');\n                        fallbackWrap.style.marginTop = '20px';\n                        fallbackWrap.style.textAlign = 'center';\n                        fallbackWrap.innerHTML = fallbackSurveyButton;\n                        modalContent.appendChild(fallbackWrap);\n                    }\n                }\n                modal._wxgiveawayWinnerData = winnerData;\n                modal.dataset.requireSurvey = (surveyEnabled && winnerData && winnerData.winner_id && !winnerData.is_none) ? '1' : '0';\n\n                if (\n                    detailsAfterSpinEnabled &&\n                    winnerData &&\n                    winnerData.winner_id &&\n                    !winnerData.is_none &&\n                    (forceDetailsOnly || !skipDetailsStep)\n                ) {\n                    openDetailsModal(winnerData, modal);\n                    if (forceDetailsOnly) {\n                        modal.style.display = 'none';\n                    }\n                    return;\n                }\n\n                modal.style.display = 'flex';\n            };\n\n            window.wxgiveawayShowModalMessage = function(title, message, modalElement) {\n                const modal = modalElement || document.querySelector('.winner-modal');\n                const modalContent = modal ? modal.querySelector('.winner-modal-content') : null;\n\n                if (!modal || !modalContent) return;\n\n                const safeTitle = title || 'Error';\n                modalContent.innerHTML = `<h3>${safeTitle}<\/h3><p>${message}<\/p>`;\n                modal.dataset.requireSurvey = '0';\n                modal.style.display = 'flex';\n            };\n\n            function openSurveyWithData(container, winnerModal, winnerData) {\n                const surveyModal = container.querySelector('.wxgiveaway-survey-modal');\n                const form = surveyModal ? surveyModal.querySelector('.wxgiveaway-survey-form') : null;\n                if (!surveyModal || !form) return;\n\n                form.reset();\n                form.querySelector('input[name=\"winner_id\"]').value = winnerData.winner_id || '';\n                form.querySelector('input[name=\"entrant_name\"]').value = winnerData.customer_name || '';\n                form.querySelector('input[name=\"entrant_email\"]').value = winnerData.customer_email || '';\n                form.querySelector('input[name=\"entrant_phone\"]').value = winnerData.customer_phone || '';\n\n                if (winnerModal) {\n                    winnerModal.style.display = 'none';\n                }\n                surveyModal.style.display = 'flex';\n            }\n\n            function openSurveyFromButton(button) {\n                const container = button.closest('.wxgiveaway-lucky-wheel-container');\n                if (!container) return;\n                const winnerModal = container.querySelector('.winner-modal');\n                openSurveyWithData(container, winnerModal, {\n                    winner_id: button.getAttribute('data-winner-id') || '',\n                    customer_name: button.getAttribute('data-name') || '',\n                    customer_email: button.getAttribute('data-email') || '',\n                    customer_phone: button.getAttribute('data-phone') || '',\n                });\n            }\n\n            function openDetailsModal(winnerData, winnerModalElement) {\n                if (!detailsAfterSpinEnabled) {\n                    return;\n                }\n                const container = winnerModalElement ? winnerModalElement.closest('.wxgiveaway-lucky-wheel-container') : null;\n                if (!container) return;\n\n                const detailsModal = container.querySelector('.wxgiveaway-details-modal');\n                const detailsForm = detailsModal ? detailsModal.querySelector('.wxgiveaway-details-form') : null;\n                const detailsHeader = detailsModal ? detailsModal.querySelector('.wxgiveaway-details-modal-header') : null;\n                if (!detailsModal || !detailsForm) return;\n\n                const errorEl = detailsForm.querySelector('.wxgiveaway-details-error');\n                detailsForm.reset();\n\n                const winnerIdInput = detailsForm.querySelector('input[name=\"winner_id\"]');\n                const sliceLabelInput = detailsForm.querySelector('input[name=\"slice_label\"]');\n                const winDescriptionInput = detailsForm.querySelector('input[name=\"win_description\"]');\n                const nameInput = detailsForm.querySelector('input[name=\"customer_name\"]');\n                const businessInput = detailsForm.querySelector('input[name=\"customer_business\"]');\n                const businessAddressInput = detailsForm.querySelector('input[name=\"customer_business_address\"]');\n                const emailInput = detailsForm.querySelector('input[name=\"customer_email\"]');\n                const phoneInput = detailsForm.querySelector('input[name=\"customer_phone\"]');\n\n                if (winnerIdInput) winnerIdInput.value = winnerData.winner_id || '';\n                if (sliceLabelInput) sliceLabelInput.value = winnerData.slice_label || '';\n                if (winDescriptionInput) winDescriptionInput.value = winnerData.win_description || '';\n                if (nameInput) nameInput.value = winnerData.customer_name || '';\n                if (businessInput) businessInput.value = winnerData.customer_business || '';\n                if (businessAddressInput) businessAddressInput.value = winnerData.customer_business_address || '';\n                if (emailInput) emailInput.value = winnerData.customer_email || '';\n                if (phoneInput) phoneInput.value = winnerData.customer_phone || '';\n                detailsForm.dataset.winnerData = JSON.stringify(winnerData || {});\n                if (detailsHeader) {\n                    detailsHeader.innerHTML = applyWinnerDataToTemplate(detailsModalHeaderTemplate, winnerData || {});\n                }\n                if (errorEl) {\n                    errorEl.textContent = '';\n                    errorEl.style.display = 'none';\n                }\n\n                if (winnerModalElement) {\n                    winnerModalElement.style.display = 'none';\n                }\n                detailsModal.style.display = 'flex';\n            }\n\n            function setupSurveyHandlers() {\n                document.addEventListener('click', function(e) {\n                    const surveyTrigger = e.target.closest('.wxgiveaway-open-survey');\n                    if (surveyTrigger) {\n                        e.preventDefault();\n                        openSurveyFromButton(surveyTrigger);\n                        return;\n                    }\n\n                    const closeButton = e.target.closest('.wxgiveaway-survey-close');\n                    if (closeButton) {\n                        const surveyModal = closeButton.closest('.wxgiveaway-survey-modal');\n                        const container = closeButton.closest('.wxgiveaway-lucky-wheel-container');\n                        const winnerModal = container ? container.querySelector('.winner-modal') : null;\n                        if (surveyModal) surveyModal.style.display = 'none';\n                        if (winnerModal) winnerModal.style.display = 'flex';\n                    }\n\n                    const closeDetailsButton = e.target.closest('.wxgiveaway-details-close');\n                    if (closeDetailsButton) {\n                        const detailsModal = closeDetailsButton.closest('.wxgiveaway-details-modal');\n                        const container = closeDetailsButton.closest('.wxgiveaway-lucky-wheel-container');\n                        const winnerModal = container ? container.querySelector('.winner-modal') : null;\n                        if (detailsModal) detailsModal.style.display = 'none';\n                        if (winnerModal && !detailsAfterSpinEnabled) winnerModal.style.display = 'flex';\n                    }\n                });\n\n                document.addEventListener('submit', function(e) {\n                    if (e.target.classList.contains('wxgiveaway-details-form')) {\n                        e.preventDefault();\n\n                        const form = e.target;\n                        const detailsModal = form.closest('.wxgiveaway-details-modal');\n                        const container = form.closest('.wxgiveaway-lucky-wheel-container');\n                        const winnerModal = container ? container.querySelector('.winner-modal') : null;\n                        const errorEl = form.querySelector('.wxgiveaway-details-error');\n                        const formData = new FormData(form);\n                        formData.append('action', 'wxgiveaway_submit_winner_details');\n                        formData.append('nonce', 'bf8ad9109f');\n\n                        if (errorEl) {\n                            errorEl.textContent = '';\n                            errorEl.style.display = 'none';\n                        }\n\n                        fetch('https:\/\/www.ordertowin.com.au\/wp-admin\/admin-ajax.php', {\n                            method: 'POST',\n                            body: formData\n                        })\n                        .then(response => response.json())\n                        .then(data => {\n                            if (!data.success) {\n                                if (errorEl) {\n                                    errorEl.textContent = (data.data && data.data.message) ? data.data.message : 'Unable to submit details.';\n                                    errorEl.style.display = 'block';\n                                }\n                                return;\n                            }\n\n                            if (detailsModal) detailsModal.style.display = 'none';\n                            if (winnerModal && window.wxgiveawayUpdateWinnerModal) {\n                                let winnerData = {};\n                                try {\n                                    winnerData = JSON.parse(form.dataset.winnerData || '{}');\n                                } catch (error) {\n                                    winnerData = {};\n                                }\n                                winnerData.customer_name = formData.get('customer_name') || winnerData.customer_name || '';\n                                winnerData.customer_business = formData.get('customer_business') || winnerData.customer_business || '';\n                                winnerData.customer_business_address = formData.get('customer_business_address') || winnerData.customer_business_address || '';\n                                winnerData.customer_email = formData.get('customer_email') || winnerData.customer_email || '';\n                                winnerData.customer_phone = formData.get('customer_phone') || winnerData.customer_phone || '';\n                                if (data.data && data.data.slice_data) {\n                                    winnerData.win_description = data.data.slice_data.details || winnerData.win_description || '';\n                                    winnerData.coupon_code = data.data.slice_data.coupon_code || winnerData.coupon_code || '';\n                                    winnerData.discount_amount = data.data.slice_data.discount_amount || winnerData.discount_amount || '';\n                                    winnerData.discount_type = data.data.slice_data.discount_type || winnerData.discount_type || '';\n                                    winnerData.expiry_date = data.data.slice_data.expiry_date || winnerData.expiry_date || '';\n                                    winnerData.tickets_count = data.data.slice_data.tickets_count || winnerData.tickets_count || '';\n                                    winnerData.reward_points = data.data.slice_data.reward_points || winnerData.reward_points || '';\n                                    winnerData.slice_label = data.data.slice_data.slice_label || winnerData.slice_label || '';\n                                    winnerData.is_none = !!data.data.slice_data.is_none;\n                                    winnerData.no_prize_text = data.data.slice_data.no_prize_text || winnerData.no_prize_text || '';\n                                }\n                                window.wxgiveawayUpdateWinnerModal(winnerData, winnerModal, { skipDetailsStep: true });\n                            } else if (winnerModal) {\n                                winnerModal.style.display = 'none';\n                            }\n                        })\n                        .catch(() => {\n                            if (errorEl) {\n                                errorEl.textContent = 'Network error while submitting details.';\n                                errorEl.style.display = 'block';\n                            }\n                        });\n                        return;\n                    }\n\n                    if (!e.target.classList.contains('wxgiveaway-survey-form')) {\n                        return;\n                    }\n                    e.preventDefault();\n\n                    const form = e.target;\n                    const surveyModal = form.closest('.wxgiveaway-survey-modal');\n                    const container = form.closest('.wxgiveaway-lucky-wheel-container');\n                    const winnerModal = container ? container.querySelector('.winner-modal') : null;\n                    const errorEl = form.querySelector('.wxgiveaway-survey-error');\n                    const selectedChildren = form.querySelectorAll('input[name=\"children_at_home[]\"]:checked');\n\n                    if (selectedChildren.length === 0) {\n                        if (errorEl) {\n                            errorEl.style.display = 'block';\n                            errorEl.textContent = 'Please select at least one option for children living at home.';\n                        }\n                        return;\n                    }\n\n                    if (errorEl) {\n                        errorEl.style.display = 'none';\n                        errorEl.textContent = '';\n                    }\n\n                    const formData = new FormData(form);\n                    formData.append('action', 'wxgiveaway_submit_winner_survey');\n                    formData.append('nonce', '4abdf77889');\n\n                    fetch('https:\/\/www.ordertowin.com.au\/wp-admin\/admin-ajax.php', {\n                        method: 'POST',\n                        body: formData\n                    })\n                    .then(response => response.json())\n                    .then(data => {\n                        if (!data.success) {\n                            if (errorEl) {\n                                errorEl.style.display = 'block';\n                                errorEl.textContent = (data.data && data.data.message) ? data.data.message : 'Unable to submit survey.';\n                            }\n                            return;\n                        }\n\n                        const submittedWinnerId = (data.data && data.data.winner_id) ? String(data.data.winner_id) : '';\n                        const successText = submittedWinnerId\n                            ? 'Your prize claim survey was submitted successfully.' + ' (ID: ' + submittedWinnerId + ')'\n                            : 'Your prize claim survey was submitted successfully.';\n\n                        if (surveyModal) surveyModal.style.display = 'none';\n                        if (winnerModal && window.wxgiveawayShowModalMessage) {\n                            window.wxgiveawayShowModalMessage(\n                                'Success',\n                                successText,\n                                winnerModal\n                            );\n                        } else if (winnerModal) {\n                            winnerModal.style.display = 'none';\n                        }\n                    })\n                    .catch(() => {\n                        if (errorEl) {\n                            errorEl.style.display = 'block';\n                            errorEl.textContent = 'Network error while submitting survey.';\n                        }\n                    });\n                });\n\n            }\n\n            setupSurveyHandlers();\n        })();\n    <\/script>         <\/div>      <style>         .wxgiveaway-lucky-wheel-container {             display: flex;             gap: 30px;             background: #041425;             margin: 0 auto;             padding: 20px;             \/*flex-wrap: wrap;*\/             box-shadow: 0 4px 15px rgba(0,0,0,0.1);         }          \/* Popup Styles *\/         .wxgiveaway-lucky-wheel-popup {             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             z-index: 999999;         }          .wxgiveaway-popup-overlay {             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             background: rgba(0,0,0,0.7);             z-index: 1;         }          .wxgiveaway-popup-container {             position: fixed;             top: 50%;             left: 50%;             transform: translate(-50%, -50%);             z-index: 2;             max-width: 90%;             max-height: 90%;             overflow: auto;             background: transparent;         }          .wxgiveaway-popup-content {             position: relative;             background: transparent;             border-radius: 15px;         }          .wxgiveaway-close-popup {             position: absolute;             top: 10px;             right: 15px;             background: none;             border: none;             font-size: 24px;             cursor: pointer;             z-index: 3;             color: #333;         }          \/* Floating Modal Styles *\/         .wxgiveaway-floating-modal {             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             z-index: 999999;         }          .wxgiveaway-modal-overlay {             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             background: rgba(0,0,0,0.7);             z-index: 1;         }          .wxgiveaway-modal-container {             position: fixed;             top: 50%;             left: 50%;             transform: translate(-50%, -50%);             z-index: 2;             max-width: 95%;             max-height: 95%;             width: max-content;             overflow: auto;             background: transparent;         }          .wxgiveaway-modal-content {             position: relative;             background: transparent;             border-radius: 15px;         }          .wxgiveaway-close-modal {             position: absolute;             top: 5px;             right: 5px;             background: none;             border: none;             font-size: 30px;             cursor: pointer;             z-index: 3;             color: white;             width: 40px;             height: 40px;             border-radius: 50%;             display: flex;             align-items: center;             justify-content: center;         }          .wxgiveaway-close-modal:hover {             background: rgba(255,255,255,0.1);         }          \/* Floating Icon Styles *\/         .wxgiveaway-floating-icon {             position: fixed;             bottom: 20px;             left: 20px;             width: 60px;             height: 60px;             background: linear-gradient(45deg, #4ecdc4, #44a08d);             border-radius: 50%;             display: flex;             align-items: center;             justify-content: center;             cursor: pointer;             z-index: 99999;             box-shadow: 0 4px 15px rgba(0,0,0,0.3);             transition: all 0.3s ease;         }          .wxgiveaway-floating-icon:hover {             transform: scale(1.1);             box-shadow: 0 6px 20px rgba(0,0,0,0.4);         }          .wxgiveaway-floating-icon svg {             width: 30px;             height: 30px;             fill: white;         }          .wheel-form-container {             flex: 1;             min-width: 300px;             color: #ffffff;             padding: 30px;         }          .wheel-container {             flex: 1;             min-width: 300px;             display: flex;             flex-direction: column;             align-items: center;             justify-content: center;             text-align: center;         }          .wheel-media img {             max-width: 100%;             height: auto;             display: block;             margin: 0 auto 15px;         }          .wheel-caption {             margin-top: 12px;             max-width: 420px;         }          .wheel-caption p {             margin: 0;         }          .wheel-wrapper {             position: relative;             margin-bottom: 20px;         }          .wheel-wrapper canvas {             width: 100%;             border-radius: 50%;             box-shadow: 0 8px 30px rgba(0,0,0,0.3);             transition: transform 4000ms cubic-bezier(0.23, 1, 0.32, 1);         }          .wheel-pointer {             position: absolute;             top: -10px;             left: 50%;             transform: translateX(-50%);             width: 0;             height: 0;             border-left: 20px solid transparent;             border-right: 20px solid transparent;             border-top: 30px solid #ffffff;             z-index: 10;             filter: drop-shadow(0 2px 4px rgba(0,0,0,0.3));         }          .wheel-center-circle {             position: absolute;             top: 50%;             left: 50%;             transform: translate(-50%, -50%);             width: 40px;             height: 40px;             background: linear-gradient(145deg, #ededed, #ffffff);             border-radius: 50%;             box-shadow: 0 0 20px #ffffff80;             z-index: 10;             display: flex;             align-items: center;             justify-content: center;         }          .wheel-center-circle::before {             content: '';             position: absolute;             width: 10px;             height: 10px;             background: #fff;             border-radius: 50%;         }          .wheel-form {             display: flex;             flex-direction: column;             margin-top: 20px;         }          .lucky-wheel-form-group {             display: flex;             flex-direction: column;         }          .lucky-wheel-form-group label {             font-weight: 600;         }          .lucky-wheel-form-group input,         .lucky-wheel-form-group select {             padding: 12px;             border: 2px solid #ddd;             border-radius: 8px;             font-size: 16px;             transition: border-color 0.3s ease;         }          .lucky-wheel-form-group input:focus {             outline: none;             border-color: #ff6b6b;         }          .lucky-wheel-form-group input[readonly] {             background-color: #f3f3f3;             color: #666;             cursor: not-allowed;         }          .wxgiveaway-extra-spin-message {             display: none;             margin: 7px 0 0;             color: #31bced;             font-size: 13px;             font-weight: 700;             line-height: 1.35;         }          .wxgiveaway-extra-spin-message.is-visible {             display: block;             animation: wxgiveawayExtraSpinPulse .55s ease;         }          @keyframes wxgiveawayExtraSpinPulse {             0% { opacity: 0; transform: translateY(-4px); }             60% { opacity: 1; transform: translateY(2px); }             100% { opacity: 1; transform: translateY(0); }         }          .lucky-wheel-error-success-message{             color: red;         }          .lucky-wheel-submit-button {             padding: 15px;             background: linear-gradient(45deg, #4ecdc4, #44a08d);             color: white;             border: none;             border-radius: 8px;             font-size: 16px;             font-weight: bold;             cursor: pointer;             transition: all 0.3s ease;             outline: none;             margin-top: 10px;         }          .lucky-wheel-submit-button:hover {             background: linear-gradient(45deg, #44a08d, #4ecdc4);             transform: translateY(-2px);             box-shadow: 0 5px 15px rgba(68, 160, 141, 0.3);         }          .checkbox-group {             display: flex;             align-items: flex-start;             gap: 10px;         }          .checkbox-group input[type=\"checkbox\"] {             width: auto;         }          .winner-modal {             display: none;             position: fixed;             top: 0;             left: 0;             width: 100%;             height: 100%;             background: rgba(0,0,0,0.8);             z-index: 1000;             justify-content: center;             align-items: center;         }          .winner-content {             background: white;             padding: 40px;             border-radius: 20px;             text-align: center;             max-width: 500px;             max-height: 90vh;             overflow-y: auto;             position: relative;             animation: bounceIn 0.6s ease;         }          .winner-title {             font-size: 32px;             color: #ff6b6b;             margin-bottom: 20px;             font-weight: bold;         }          .winner-prize {             font-size: 24px;             margin: 20px 0;             padding: 20px;             background: linear-gradient(45deg, #ffd700, #ffed4a);             border-radius: 10px;             font-weight: bold;         }          .close-modal {             position: absolute;             top: 10px;             right: 15px;             background: none;             border: none;             font-size: 24px;             cursor: pointer;         }          @keyframes bounceIn {             0% { transform: scale(0.3); opacity: 0; }             50% { transform: scale(1.05); }             70% { transform: scale(0.9); }             100% { transform: scale(1); opacity: 1; }         }          @media (max-width: 768px) {             .wxgiveaway-lucky-wheel-container {                 flex-direction: column;                 gap: 20px;                 padding: 15px;                 margin: 10px;             }              .wxgiveaway-popup-container,             .wxgiveaway-modal-container {                 max-width: 95%;                 max-height: 95%;             }              .wxgiveaway-modal-content {                 padding: 10px;             }              .wxgiveaway-close-modal {                 top: -35px;                 right: -5px;                 font-size: 25px;             }              .lucky-wheel {                 width: 300px;                 height: 300px;             }              .wheel-slice {                 font-size: 12px;                 padding: 5px;             }         }     <\/style>      <script>\n        (function() {\n            \/\/ Use IIFE and closure to avoid conflicts\n            const wheelId = 'wheel';\n            const wxgiveawayMessages = {\"required_fields\":\"Please fill in all required fields.\",\"accept_terms\":\"Please accept the terms and conditions.\",\"invalid_email\":\"Please enter a valid email address.\",\"invalid_phone\":\"Please enter a valid phone number.\",\"invalid_phone_digits\":\"Please enter a valid phone number with at least 10 digits.\",\"general_error\":\"Error occurred. Please try again.\",\"network_error\":\"Network error occurred. Please check your connection and try again.\"};\n\n            function initWheel() {\n                const wheelContainer = document.getElementById(wheelId);\n                if (!wheelContainer) {\n                    console.error('Wheel container not found:', wheelId);\n                    return;\n                }\n\n                const form = wheelContainer.querySelector('.wheel-form');\n                const submitButton = form ? form.querySelector('.lucky-wheel-submit-button') : null;\n                const errorMessage = form ? form.querySelector('.lucky-wheel-error-success-message') : null;\n                const modal = wheelContainer.querySelector('.winner-modal');\n                const closeModal = modal ? modal.querySelector('.close-modal') : null;\n\n                if (!form || !submitButton) {\n                    console.error('Form or submit button not found in:', wheelId);\n                    return;\n                }\n\n                let isSpinning = false;\n\n                \/\/ Validation functions\n                function isValidEmail(email) {\n                    const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n                    return emailRegex.test(email);\n                }\n\n                function isValidPhone(phone) {\n                    \/\/ Basic phone validation - allows numbers, spaces, parentheses, hyphens, plus sign\n                    \/\/ You can adjust this regex based on your specific requirements\n                    const phoneRegex = \/^[\\+]?[0-9\\s\\-\\(\\)]{10,}$\/;\n                    return phoneRegex.test(phone.replace(\/\\s\/g, ''));\n                }\n\n                function validateForm() {\n                    const requiredFields = form.querySelectorAll('[required]');\n                    let isValid = true;\n                    let errorMessages = [];\n\n                    \/\/ Clear previous error styles\n                    requiredFields.forEach(field => {\n                        field.style.borderColor = '';\n                        const label = form.querySelector(`label[for=\"${field.id}\"]`);\n                        if (label) label.style.color = '';\n                    });\n\n                    \/\/ Validate required fields\n                    requiredFields.forEach(field => {\n                        if (field.type === 'checkbox') {\n                            if (!field.checked) {\n                                isValid = false;\n                                field.style.borderColor = '#ff0000';\n                                const label = form.querySelector(`label[for=\"${field.id}\"]`);\n                                if (label) label.style.color = '#ff0000';\n                                errorMessages.push(wxgiveawayMessages.accept_terms);\n                            }\n                        } else {\n                            if (!field.value.trim()) {\n                                isValid = false;\n                                field.style.borderColor = '#ff0000';\n                                errorMessages.push(wxgiveawayMessages.required_fields);\n                            } else {\n                                \/\/ Specific field validations\n                                if (field.type === 'email' && field.value.trim()) {\n                                    if (!isValidEmail(field.value.trim())) {\n                                        isValid = false;\n                                        field.style.borderColor = '#ff0000';\n                                        errorMessages.push(wxgiveawayMessages.invalid_email);\n                                    }\n                                }\n\n                                if (field.type === 'tel' && field.value.trim()) {\n                                    if (!isValidPhone(field.value.trim())) {\n                                        isValid = false;\n                                        field.style.borderColor = '#ff0000';\n                                        errorMessages.push(wxgiveawayMessages.invalid_phone);\n                                    }\n                                }\n                            }\n                        }\n                    });\n\n                    return {\n                        isValid: isValid,\n                        messages: [...new Set(errorMessages)] \/\/ Remove duplicates\n                    };\n                }\n\n                \/\/ Real-time validation\n                function setupRealTimeValidation() {\n                    const emailField = form.querySelector('#customer_email');\n                    const phoneField = form.querySelector('#customer_phone');\n\n                    if (emailField) {\n                        emailField.addEventListener('blur', function() {\n                            if (this.value.trim() && !isValidEmail(this.value.trim())) {\n                                this.style.borderColor = '#ff0000';\n                                showErrorMessage(wxgiveawayMessages.invalid_email);\n                            } else {\n                                this.style.borderColor = '';\n                            }\n                        });\n                    }\n\n                    if (phoneField) {\n                        phoneField.addEventListener('blur', function() {\n                            if (this.value.trim() && !isValidPhone(this.value.trim())) {\n                                this.style.borderColor = '#ff0000';\n                                showErrorMessage(wxgiveawayMessages.invalid_phone);\n                            } else {\n                                this.style.borderColor = '';\n                            }\n                        });\n                    }\n\n                    \/\/ Clear error message when user starts typing\n                    const inputs = form.querySelectorAll('input, select, textarea');\n                    inputs.forEach(input => {\n                        input.addEventListener('input', function() {\n                            if (errorMessage) {\n                                errorMessage.innerHTML = \"\";\n                                errorMessage.style.display = 'none';\n                            }\n                            this.style.borderColor = '';\n                        });\n                    });\n                }\n\n                function showErrorMessage(message) {\n                    if (window.wxgiveawayShowModalMessage) {\n                        window.wxgiveawayShowModalMessage(\n                            'Error',\n                            message,\n                            modal\n                        );\n                        return;\n                    }\n\n                    if (errorMessage) {\n                        errorMessage.innerHTML = message;\n                        errorMessage.style.display = 'block';\n                        errorMessage.style.color = '#ff0000';\n\n                        setTimeout(function() {\n                            errorMessage.innerHTML = \"\";\n                            errorMessage.style.display = 'none';\n                        }, 7000);\n                    }\n                }\n\n                function showSuccessMessage(message) {\n                    if (errorMessage) {\n                        errorMessage.innerHTML = message;\n                        errorMessage.style.display = 'block';\n                        errorMessage.style.color = '#008000';\n\n                        setTimeout(function() {\n                            errorMessage.innerHTML = \"\";\n                            errorMessage.style.display = 'none';\n                        }, 5000);\n                    }\n                }\n\n                submitButton.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n\n                    const originalButtonText = submitButton.innerHTML;\n                    submitButton.innerHTML = \"Processing...\";\n                    submitButton.disabled = true;\n\n                    if (isSpinning) {\n                        submitButton.innerHTML = originalButtonText;\n                        submitButton.disabled = false;\n                        return;\n                    }\n\n                    \/\/ Validate form\n                    const validation = validateForm();\n\n                    if (!validation.isValid) {\n                        showErrorMessage(validation.messages.join('<br>'));\n                        submitButton.innerHTML = originalButtonText;\n                        submitButton.disabled = false;\n                        return;\n                    }\n\n                    const formData = new FormData();\n                    const inputs = form.querySelectorAll('input, select, textarea');\n                    inputs.forEach(input => {\n                        if (input.type === 'checkbox' || input.type === 'radio') {\n                            if (input.checked) {\n                                formData.append(input.name, input.value || 'on');\n                            }\n                        } else {\n                            formData.append(input.name, input.value);\n                        }\n                    });\n                    formData.append('action', 'wxgiveaway_spin_wheel');\n                    formData.append('nonce', 'afcb93f0ed');\n\n                    fetch('https:\/\/www.ordertowin.com.au\/wp-admin\/admin-ajax.php', {\n                        method: 'POST',\n                        body: formData\n                    })\n                        .then(response => response.json())\n                        .then(data => {\n                            if (data.success) {\n                                isSpinning = true;\n\n                                const spinsRemaining = Number(data.data.spins_remaining || 0);\n                                const extraSpinMessage = form.querySelector('.wxgiveaway-extra-spin-message');\n\n                                inputs.forEach(input => {\n                                    if (input.type === 'checkbox' || input.type === 'radio') {\n                                        input.checked = false;\n                                    } else if (input.type !== 'button' && input.type !== 'submit') {\n                                        \/\/ Keep the code in place until all permitted spins have been used.\n                                        if (input.name === 'customer_code' && spinsRemaining > 0) {\n                                            return;\n                                        }\n                                        input.value = '';\n                                    }\n                                });\n\n                                if (extraSpinMessage) {\n                                    if (spinsRemaining > 0) {\n                                        extraSpinMessage.classList.add('is-visible');\n                                    } else {\n                                        extraSpinMessage.classList.remove('is-visible');\n                                    }\n                                }\n\n                                if (window[wheelId + '_spinWheel']) {\n                                    window[wheelId + '_spinWheel'](data.data.winner_slice_index);\n                                }\n                                const spinTotalDuration = (5 * 1000) + 4000;\n\n                                setTimeout(() => {\n                                    showWinner(data.data.slice_data, data.data.customer_data);\n                                    isSpinning = false;\n                                }, spinTotalDuration + 500);\n\n                                submitButton.innerHTML = originalButtonText;\n                                submitButton.disabled = false;\n                            } else {\n                                console.error('Lucky Wheel error response:', data);\n                                showErrorMessage(data.data.message || wxgiveawayMessages.general_error);\n                                submitButton.innerHTML = originalButtonText;\n                                submitButton.disabled = false;\n                            }\n                        })\n                        .catch(error => {\n                            console.error('Error:', error);\n                            showErrorMessage(wxgiveawayMessages.network_error);\n                            submitButton.innerHTML = originalButtonText;\n                            submitButton.disabled = false;\n                        });\n                });\n\n                function showWinner(sliceData, customerData = {}) {\n                    if (!modal) return;\n\n                    \/\/ Prepare winner data for modal\n                    const winnerData = {\n                        winner_id: customerData.winner_id || 0,\n                        customer_name: customerData.name || '',\n                        customer_business: customerData.business || '',\n                        customer_business_address: customerData.business_address || '',\n                        customer_email: customerData.email || '',\n                        customer_phone: customerData.phone || '',\n                        win_description: sliceData.details || '',\n                        coupon_code: sliceData.coupon_code || '',\n                        discount_amount: sliceData.discount_amount || '',\n                        discount_type: sliceData.discount_type || '',\n                        expiry_date: sliceData.expiry_date || '',\n                        tickets_count: sliceData.tickets_count || '',\n                        valid_date: sliceData.expiry_date || '', \/\/ Using expiry_date for valid_date\n                        giveaway_products: sliceData.giveaway_products || '',\n                        reward_points: sliceData.reward_points || '',\n                        slice_label: sliceData.slice_label || '',\n                        is_none: sliceData.is_none || false,\n                        no_prize_text: sliceData.no_prize_text || ''\n                    };\n\n                    \/\/ Use the global function to update modal content\n                    if (window.wxgiveawayUpdateWinnerModal) {\n                        window.wxgiveawayUpdateWinnerModal(winnerData, modal, { forceDetailsOnly: true });\n                    } else {\n                        modal.innerHTML = `\n                        <div>\n                            <p>Congratulations!<\/p>\n                            <p>${sliceData.slice_label}<\/p>\n                            <p>${sliceData.details}<\/p>\n                        <\/div>\n                    `;\n                        modal.style.display = 'flex';\n                    }\n                }\n\n                if (closeModal) {\n                    closeModal.addEventListener('click', function() {\n                        if (modal && modal.dataset.requireSurvey === '1') {\n                            return;\n                        }\n                        modal.style.display = 'none';\n                        if (form) form.style.display = 'flex';\n                    });\n                }\n\n                if (modal) {\n                    modal.addEventListener('click', function(e) {\n                        if (modal.dataset.requireSurvey === '1') {\n                            return;\n                        }\n                        if (e.target === modal) {\n                            if (closeModal) {\n                                closeModal.click();\n                            } else {\n                                modal.style.display = 'none';\n                                if (form) form.style.display = 'flex';\n                            }\n                        }\n                    });\n                }\n\n                \/\/ Initialize real-time validation\n                setupRealTimeValidation();\n            }\n\n            \/\/ Initialize when DOM is ready\n            if (document.readyState === 'loading') {\n                document.addEventListener('DOMContentLoaded', initWheel);\n            } else {\n                \/\/ DOM already loaded, initialize immediately\n                initWheel();\n            }\n        })();\n    <\/script>     <\/div> \t\t\t\t\t\t<\/div> \t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-6d69031 elementor-widget elementor-widget-html\" data-id=\"6d69031\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"html.default\"> \t\t\t\t\t  <div class=\"otw-page\">           <section class=\"otw-feature otw-shell\">       <span class=\"otw-pill\">BACK BY POPULAR DEMAND<\/span>       <h2>Double the Chances is <em>Back!<\/em><\/h2>       <p>Thanks to the fantastic response to last year\u2019s promotion, Paragon Care\u2019s <strong>Double the Chances<\/strong> is back!<\/p>       <p>Once again, every eligible order gives you <strong>double the chance<\/strong> to win a Visa Gift Card.<\/p>                 <strong class=\"otw-good-luck\">Good luck, and thank you for being part of another successful Paragon Care promotion!<\/strong>     <\/section>                 <section class=\"otw-prizes otw-shell\" id=\"prizes\" style=\"margin-top:50px\">       <h2>The prize pool<\/h2>       <div class=\"otw-prize-grid\">         <div><strong>1 \u00d7 $500<\/strong><span>Visa gift card<\/span><\/div>         <div><strong>1 \u00d7 $250<\/strong><span>Visa gift card<\/span><\/div>         <div><strong>17 \u00d7 $100<\/strong><span>Visa gift cards<\/span><\/div>       <\/div>       <p>19 prizes \u00b7 $2,450 total \u00b7 last day to enter 31 August<\/p>     <\/section>      <section class=\"otw-accordion-section otw-shell\" id=\"faq\">       <h2>Questions<\/h2>       <div class=\"otw-accordion-list\">         <details><summary>Can I spin more than once?<\/summary><p>Yes. Each eligible order receives its own promotional code, subject to the promotion terms.<\/p><\/details>         <details><summary>When do I find out if I\u2019ve won?<\/summary><p>The wheel shows the result immediately. Winners are contacted by email within two business days.<\/p><\/details>         <details><summary>What happens to my data?<\/summary><p>Your information is used to administer the promotion and handled according to the promoter\u2019s privacy policy.<\/p><\/details>         <details><summary>Who can enter?<\/summary><p>Eligible Australian pharmacy customers who meet the order and entry requirements during the promotional period.<\/p><\/details>       <\/div>     <\/section>      <section class=\"otw-accordion-section otw-shell\" id=\"terms\">       <h2>Terms &amp; Conditions<\/h2>       <p class=\"otw-section-intro\">Order to Win \u2014 Double Your Chances, August 2026. Tap any section to expand.<\/p>       <div class=\"otw-accordion-list\">         <details><summary>1. General<\/summary>         <span class=\"terms1\"><p>         1.1  Information on how to enter and the prize(s) form part of these Terms and Conditions. Participation in this promotion is deemed acceptance of these Terms and Conditions.<\/p><\/span>                                                                   <\/details>         <details><summary>2. Eligibility<\/summary>         <span class=\"terms1\"><p>         2.1  Entry is open to Australian residents aged 18 years or over.<br> 2.2  Employees (and their immediate families) of the Promoter and agencies associated with this promotion are ineligible to enter. Immediate family means any of the following: spouse, ex-spouse, de facto spouse, child or stepchild (whether natural or by adoption), parent, stepparent, grandparent, step-grandparent, uncle, aunt, niece, nephew, brother, sister, stepbrother, stepsister, or first cousin.<\/p> <\/span>                           <\/details>         <details><summary>3. Promotional Period<\/summary><p>3.1  Entries into the promotion open on 01\/08\/2026 and close at 11:59pm AEST on 31\/08\/2026 (\u201cPromotional Period\u201d).<\/p><\/details>         <details><summary>4. Entry Requirements<\/summary><p>                          4.1  To be eligible to enter, individuals must purchase $100 or more of stock from an eligible tile ad on the sales portal in one transaction during the Promotional Period (\u201cQualifying Transaction\u201d). If a purchase receipt is not automatically provided at the time of making a Qualifying Transaction, it is the entrant\u2019s responsibility to request one.             <p> 4.2  To enter, individuals must undertake the following steps during the Promotional Period: <\/p>     <p> (a)  Click on the link provided in the confirmation email from their eligible sale OR access the entry portal directly via the sales portal.<\/p> <p> (b)  Play the digital Order to Win \u201cDouble Your Chances\u201d prize wheel game and enter their details if required, including their name, email address, phone number, and postal address. <\/p> <p> (c)  Keep the browser open and successfully complete and submit their entry. <\/p> <p> 4.3  Each entrant will be notified instantly online whether or not they are an instant winner. As part of the \u201cDouble Your Chances\u201d mechanic, each Qualifying Transaction entitles the entrant to two (2) spins of the prize wheel. Multiple entries are permitted, subject to a maximum of two (2) spins per Qualifying Transaction. <\/p> <p> 4.4  Entrants must retain their original purchase receipt(s) for all entries as proof of purchase. Failure to produce proof of purchase for all entries when requested may, at the absolute discretion of the Promoter, result in invalidation of all of an entrant\u2019s entries and forfeiture of any right to a prize.                                                 <\/p><\/details>         <details><summary>5. Verification<\/summary><p>                          5.1  The Promoter reserves the right, at any time, to verify the validity of entries and entrants (including an entrant\u2019s identity, age, and place of residence) and reserves the right, in its sole discretion, to disqualify any individual the Promoter has reason to believe has breached any of these Terms and Conditions, tampered with the entry process, or engaged in any unlawful or other improper misconduct calculated to jeopardise the fair and proper conduct of the promotion.<\/p>             <p> 5.2  Errors and omissions may be accepted at the Promoter\u2019s discretion. Failure by the Promoter to enforce any of its rights at any stage does not constitute a waiver of those rights. The Promoter\u2019s legal rights to recover damages or other compensation from such an offender are reserved. <\/p> <p> 5.3  Incomplete or illegible entries will be deemed invalid. <\/p><p> 5.4  If there is a dispute as to the identity of an entrant, the Promoter reserves the right, in its sole discretion, to determine the identity of the entrant. <\/p><p> 5.5  All prizes must be verified against a valid Qualifying Transaction. A prize will only be awarded once the Promoter has verified, to its reasonable satisfaction, that the winning entry corresponds to a valid sale and order of goods, including (where requested) the relevant purchase receipt and sales order records. Any prize claim that cannot be verified against a valid Qualifying Transaction may be deemed invalid and forfeited at the Promoter\u2019s discretion. <\/p>                                                                                                                 <\/details>         <details><summary>6. Prize Details<\/summary>                  <p> 6.1  A total prize pool of $2,450 will be awarded during the promotional period, comprising one (1) prize valued at $500, one (1) prize valued at $250, and seventeen (17) prizes valued at $100 each. Prizes are awarded on an instant win basis throughout the Promotional Period, with a total of nineteen (19) winners. Winners are notified instantly online at the time of a winning entry, in accordance with clause 4.3. <\/p>  <p> 6.2  All prizes are issued electronically, are not transferable, not redeemable for cash, and are subject to the terms and conditions of the prize issuer. Availability of prizes is subject to change at the Promoter\u2019s discretion. <\/p> <p> 6.3  The Promoter\u2019s decision is final, and no correspondence will be entered into. 6.4  If for any reason a winner does not take or redeem a prize (or an element of the prize) at\/by the time stipulated by the Promoter, then the prize (or that element of the prize) will be forfeited. If a prize is forfeited or an entry is deemed invalid, the Promoter may redraw or allocate the prize to another eligible entrant at its discretion. <\/p> <p> 6.5  If any prize (or part of any prize) is unavailable, the Promoter, in its discretion, reserves the right to substitute the prize (or that part of the prize) with a prize of equal or greater value and\/or specification, subject to any written directions from a regulatory authority. <\/p> <p> 6.6  Prizes, or any unused portion of a prize, are not transferable or exchangeable and cannot be taken as cash unless otherwise specified, and are subject to the terms and conditions of the card issuer. <\/p> <p> 6.7  Notification of a win is instant and online. Delivery of the prize is separate. Prizes are issued electronically to the email address provided by the winner. The Promoter will aim to issue each prize within two (2) business days of the winning entry being verified in accordance with clause 5.5. This is a target and not a guarantee, and delivery may take longer. In any event, each prize will be issued within twenty-eight (28) days of verification. Notification that an entrant has won does not itself constitute delivery of the prize. The Promoter is not responsible for any delay in, or failure of, delivery caused by the prize issuer, by an incorrect or incomplete email address supplied by the entrant, or by the entrant\u2019s email or network settings. Where a prize has not been received, the entrant should contact the Promoter using the details in clause 11. <\/p>                                    <\/details>         <details><summary>7. Media and Publicity<\/summary>                  <p> 7.1  Entrants consent to the Promoter using their name, likeness, image, and\/or voice in the event they are a winner (including photograph, film, and\/or recording) in any media for an unlimited period without remuneration for the purpose of promoting this promotion (including any outcome) and promoting any products manufactured, distributed, and\/or supplied by the Promoter. <\/p>                           <\/details>         <details><summary>8. Interference and Technical Issues<\/summary>                           <p> 8.1  If this promotion is interfered with in any way or is not capable of being conducted as reasonably anticipated due to any reason beyond the reasonable control of the Promoter, including but not limited to technical difficulties, unauthorised intervention, or fraud, the Promoter reserves the right, in its sole discretion, to the fullest extent permitted by law:<br> (a)  disqualify any entrant; or<br> (b)  subject to any written directions from a regulatory authority, to modify, suspend, terminate, or cancel the promotion, as appropriate.<br> <\/p> <p> 8.2  Any cost associated with accessing the digital game is the entrant\u2019s responsibility and is dependent on the Internet service provider used.<\/p> <p> 8.3  The use of any automated entry software or any other mechanical or electronic means that allows an entrant to automatically enter repeatedly is prohibited and will render all entries submitted by that entrant invalid. <\/p> <p> 8.4  The Promoter intends to honour all prizes legitimately won by way of a valid entry in accordance with these Terms and Conditions. However, if, due to a computer error, digital system fault, software malfunction, or other technical issue beyond the Promoter\u2019s reasonable control, prize notifications are issued in excess of the prize pool stated in these Terms and Conditions, or prize notifications are otherwise issued in error, the Promoter reserves the right, subject to any written directions from a regulatory authority, to rectify the error, declare any such excess or erroneous prize notifications void, and, where appropriate, suspend the promotion while the error is investigated and corrected. The total number and value of prizes awarded in this promotion will not exceed the prize pool stated in clause 6. Nothing in this clause affects any prize won by way of a valid entry verified in accordance with clause 5.5, and nothing in this clause limits the Non-Excludable Guarantees or any other liability that cannot be excluded by law. <\/p>                                                       <\/details>         <details><summary>9. Liability<\/summary>                  <p> 9.1  Nothing in these Terms and Conditions limits, excludes, or modifies the statutory consumer guarantees as provided under the Competition and Consumer Act, as well as any other implied warranties under the ASIC Act or similar consumer protection laws in Victoria (\u201cNon-Excludable Guarantees\u201d). <\/p> <p> 9.2  Except for any liability that cannot by law be excluded, including the Non-Excludable Guarantees, the Promoter (including its officers, employees, and agents) excludes all liability (including negligence) for any personal injury or any loss or damage (including loss of opportunity), whether direct, indirect, special, or consequential, arising in any way out of the promotion. <\/p>                                                      <\/details>         <details><summary>10. Privacy<\/summary>                  <p> 10.1  The Promoter collects personal information (\u201cPI\u201d) to conduct the promotion and may, for this purpose, disclose such PI to third parties, including but not limited to agents, contractors, service providers, prize suppliers, and, as required, Australian regulatory authorities. Entry is conditional on providing this PI. <\/p> <p> 10.2  The Promoter will also use and handle PI as set out in its Privacy Policy, which can be viewed at the Promoter\u2019s website. <p> 10.3  In addition to any use outlined in the Promoter\u2019s Privacy Policy, the Promoter may, for an indefinite period unless otherwise advised, use the PI for promotional, marketing, publicity, research, and profiling purposes, including sending electronic messages or telephoning the entrant. <\/p> <p> 10.4  The Privacy Policy also contains information about how entrants may opt out, access, update, or correct their PI, how entrants may complain about a breach of the Australian Privacy Principles or any other applicable law, and how those complaints will be dealt with. <\/p> <p> 10.5  All entries become the property of the Promoter. The Promoter will not disclose PI to any entity outside of Australia. <\/p>                                     <\/details>         <details><summary>11. Promoter Details<\/summary>         <p>11.1  The Promoter is Clifford Hallam Healthcare Limited trading as Paragon Care Australia (ABN: 38 001 655 554) of 17 Hudson Court, Keysborough VIC 3173. Phone: 1300 724 274. <\/p>                  <\/details>       <\/div>     <\/section>     <footer class=\"otw-footer otw-shell\">          <p class=\"footertext\">   <\/footer> <\/div>   \t\t\t\t<\/div> \t\t\t\t\t<\/div> \t\t<\/div> \t\t\t\t\t<\/div> \t\t<\/section> \t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>How it works Prizes FAQ Terms &amp; Conditions Spin now How it works 1 Order $100+ Place a single order of $100 or more (ex GST) through the ParagonCare pharmacy ordering portal during August. 2 Enter your code Pop your code number into the form above and agree to the terms and conditions. 3 Spin &amp; win Winners are notified by email within 2 business days and gift cards are sent digitally. BACK BY POPULAR DEMAND Double the Chances is Back! Thanks to the fantastic response to last year\u2019s promotion, Paragon Care\u2019s Double the Chances is back! Once again, every eligible order gives you double the chance to win a Visa Gift Card. Good luck, and thank you for being part of another successful Paragon Care promotion! The prize pool 1 \u00d7 $500Visa gift card 1 \u00d7 $250Visa gift card 17 \u00d7 $100Visa gift cards 19 prizes \u00b7 $2,450 total \u00b7 last day to enter 31 August Questions Can I spin more than once? Yes. Each eligible order receives its own promotional code, subject to the promotion terms. When do I find out if I\u2019ve won? The wheel shows the result immediately. Winners are contacted by email within two business days. What happens to my data? Your information is used to administer the promotion and handled according to the promoter\u2019s privacy policy. Who can enter? Eligible Australian pharmacy customers who meet the order and entry requirements during the promotional period. Terms &amp; Conditions Order to Win \u2014 Double Your Chances, August 2026. Tap any section to expand. 1. General 1.1 Information on how to enter and the prize(s) form part of these Terms and Conditions. Participation in this promotion is deemed acceptance of these Terms and Conditions. 2. Eligibility 2.1 Entry is open to Australian residents aged 18 years or over. 2.2 Employees (and their immediate families) of the Promoter and agencies associated with this promotion are ineligible to enter. Immediate family means any of the following: spouse, ex-spouse, de facto spouse, child or stepchild (whether natural or by adoption), parent, stepparent, grandparent, step-grandparent, uncle, aunt, niece, nephew, brother, sister, stepbrother, stepsister, or first cousin. 3. Promotional Period 3.1 Entries into the promotion open on 01\/08\/2026 and close at 11:59pm AEST on 31\/08\/2026 (\u201cPromotional Period\u201d). 4. Entry Requirements 4.1 To be eligible to enter, individuals must purchase $100 or more of stock from an eligible tile ad on the sales portal in one transaction during the Promotional Period (\u201cQualifying Transaction\u201d). If a purchase receipt is not automatically provided at the time of making a Qualifying Transaction, it is the entrant\u2019s responsibility to request one. 4.2 To enter, individuals must undertake the following steps during the Promotional Period: (a) Click on the link provided in the confirmation email from their eligible sale OR access the entry portal directly via the sales portal. (b) Play the digital Order to Win \u201cDouble Your Chances\u201d prize wheel game and enter their details if required, including their name, email address, phone number, and postal address. (c) Keep the browser open and successfully complete and submit their entry. 4.3 Each entrant will be notified instantly online whether or not they are an instant winner. As part of the \u201cDouble Your Chances\u201d mechanic, each Qualifying Transaction entitles the entrant to two (2) spins of the prize wheel. Multiple entries are permitted, subject to a maximum of two (2) spins per Qualifying Transaction. 4.4 Entrants must retain their original purchase receipt(s) for all entries as proof of purchase. Failure to produce proof of purchase for all entries when requested may, at the absolute discretion of the Promoter, result in invalidation of all of an entrant\u2019s entries and forfeiture of any right to a prize. 5. Verification 5.1 The Promoter reserves the right, at any time, to verify the validity of entries and entrants (including an entrant\u2019s identity, age, and place of residence) and reserves the right, in its sole discretion, to disqualify any individual the Promoter has reason to believe has breached any of these Terms and Conditions, tampered with the entry process, or engaged in any unlawful or other improper misconduct calculated to jeopardise the fair and proper conduct of the promotion. 5.2 Errors and omissions may be accepted at the Promoter\u2019s discretion. Failure by the Promoter to enforce any of its rights at any stage does not constitute a waiver of those rights. The Promoter\u2019s legal rights to recover damages or other compensation from such an offender are reserved. 5.3 Incomplete or illegible entries will be deemed invalid. 5.4 If there is a dispute as to the identity of an entrant, the Promoter reserves the right, in its sole discretion, to determine the identity of the entrant. 5.5 All prizes must be verified against a valid Qualifying Transaction. A prize will only be awarded once the Promoter has verified, to its reasonable satisfaction, that the winning entry corresponds to a valid sale and order of goods, including (where requested) the relevant purchase receipt and sales order records. Any prize claim that cannot be verified against a valid Qualifying Transaction may be deemed invalid and forfeited at the Promoter\u2019s discretion. 6. Prize Details 6.1 A total prize pool of $2,450 will be awarded during the promotional period, comprising one (1) prize valued at $500, one (1) prize valued at $250, and seventeen (17) prizes valued at $100 each. Prizes are awarded on an instant win basis throughout the Promotional Period, with a total of nineteen (19) winners. Winners are notified instantly online at the time of a winning entry, in accordance with clause 4.3. 6.2 All prizes are issued electronically, are not transferable, not redeemable for cash, and are subject to the terms and conditions of the prize issuer. Availability of prizes is subject to change at the Promoter\u2019s discretion. 6.3 The Promoter\u2019s decision is final, and no correspondence will be entered into. 6.4 If for any reason a winner does not take or redeem a prize (or an element of the prize) at\/by the time<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-665","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/pages\/665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/comments?post=665"}],"version-history":[{"count":115,"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/pages\/665\/revisions"}],"predecessor-version":[{"id":834,"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/pages\/665\/revisions\/834"}],"wp:attachment":[{"href":"https:\/\/www.ordertowin.com.au\/index.php\/wp-json\/wp\/v2\/media?parent=665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}