{"id":65,"date":"2026-01-13T08:01:13","date_gmt":"2026-01-13T08:01:13","guid":{"rendered":"http:\/\/www.ordertowin.com.au\/?page_id=65"},"modified":"2026-03-22T07:45:58","modified_gmt":"2026-03-22T07:45:58","slug":"game","status":"publish","type":"page","link":"https:\/\/www.connectandwin.com.au\/","title":{"rendered":"GAME"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"65\" class=\"elementor elementor-65\"> \t\t\t\t\t\t<section data-ka-cursor-size=\"1\" class=\"elementor-section elementor-top-section elementor-element elementor-element-6ac5793 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no\" data-id=\"6ac5793\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&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-87ffb60\" data-id=\"87ffb60\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;none&quot;,&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<div class=\"elementor-background-overlay\"><\/div> \t\t\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-4de0205 elementor-widget elementor-widget-image\" data-id=\"4de0205\" 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<img fetchpriority=\"high\" decoding=\"async\" width=\"1600\" height=\"250\" src=\"https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK.png\" class=\"attachment-full size-full wp-image-358\" alt=\"\" srcset=\"https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK.png 1600w, https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK-300x47.png 300w, https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK-1024x160.png 1024w, https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK-768x120.png 768w, https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK-1536x240.png 1536w, https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/02\/PLAY-NOW-HOME-DESK-600x94.png 600w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\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-978a5a3 elementor-invisible elementor-widget elementor-widget-shortcode\" data-id=\"978a5a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&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=\"lucky-wheel-6a0abb4f366f8\" class=\"wxgiveaway-lucky-wheel-container\">             <div class=\"wheel-form-container template_one\">         <div>             <div><img decoding=\"async\" src=\"https:\/\/www.connectandwin.com.au\/wp-content\/uploads\/2026\/03\/yourchance-1.png\" \/><\/div>        <\/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=\"RLLR-\"  title=\"\" minlength=\"12\" maxlength=\"12\" inputmode=\"numeric\" pattern=\"RLLR-[0-9]{7}\" required>                 <\/div>                                                                                              <div class=\"lucky-wheel-form-group\">                     <label for=\"customer_email\">Email Address *<\/label>                     <input type=\"email\" id=\"customer_email\" name=\"customer_email\" required>                 <\/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 (SEE BELOW) *<\/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\">             <canvas id=\"lucky-wheel-6a0abb4f366f8-canvas\" width=\"400\" height=\"400\"><\/canvas>             <div class=\"wheel-pointer\"><\/div>             <div class=\"wheel-center-circle\">             <\/div>         <\/div>             <\/div>      <script>\n        (function() {\n            const wheelData = [{\"slice_label\":\"DOUBLE CHANCES\",\"probability\":\"50\",\"slice_no_prize\":\"no\",\"discount_type\":\"existing_coupon\",\"slice_color\":\"#000000\",\"slice_bg_color\":\"#aa2222\",\"slice_font_color\":\"#ffffff\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"25\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$10 Bronze Rewards Card\",\"existing_coupon_code\":\"double chances\",\"existing_coupon_wining_description\":\"DOUBLE CHANCES\",\"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\":\"DOUBLE POINTS\"},{\"slice_label\":\"NO WIN\",\"probability\":\"20\",\"slice_no_prize\":\"yes\",\"discount_type\":\"none\",\"slice_color\":\"#000000\",\"slice_bg_color\":\"#03e29f\",\"slice_font_color\":\"#ffffff\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"fixed\",\"coupon_discount_amount\":\"0\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$25 Silver Rewards Card\",\"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\":\"NO WIN\"},{\"slice_label\":\"TRIPLE CHANCES\",\"probability\":\"30\",\"slice_no_prize\":\"no\",\"discount_type\":\"existing_coupon\",\"slice_color\":\"#000000\",\"slice_bg_color\":\"#e010b3\",\"slice_font_color\":\"#ffffff\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$50 Gold Rewards Card.\",\"existing_coupon_code\":\"triple chances\",\"existing_coupon_wining_description\":\"TRIPLE CHANCES\",\"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\":\"TRIPLE POINTS\"},{\"slice_label\":\"NO PRIZE\",\"probability\":\"0\",\"slice_no_prize\":\"no\",\"discount_type\":\"none\",\"slice_color\":\"#000000\",\"slice_bg_color\":\"#1f11df\",\"slice_font_color\":\"#ffffff\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"a $75 Platinum Rewards Card\",\"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\":\"\"},{\"slice_label\":\"NO WIN\",\"probability\":\"0\",\"slice_no_prize\":\"yes\",\"discount_type\":\"none\",\"slice_color\":\"#ff0000\",\"slice_bg_color\":\"#ffffff\",\"slice_font_color\":\"#000000\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$250 Titanium Rewards Card\",\"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\":\"\"},{\"slice_label\":\"NO PRIZE\",\"probability\":\"0\",\"slice_no_prize\":\"no\",\"discount_type\":\"none\",\"slice_color\":\"#ff0000\",\"slice_bg_color\":\"#ffffff\",\"slice_font_color\":\"#000000\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"$10 Woolies Gift Card.\",\"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\":\"NO PRIZE\"},{\"slice_label\":\"NO PRIZE\",\"probability\":\"0\",\"slice_no_prize\":\"yes\",\"discount_type\":\"none\",\"slice_color\":\"#ff0000\",\"slice_bg_color\":\"#ffffff\",\"slice_font_color\":\"#000000\",\"slice_bg_image_url\":\"\",\"expiry_date\":\"1month\",\"coupon_discount_type\":\"percent\",\"coupon_discount_amount\":\"\",\"limit_per_percent\":\"\",\"limit_per_user\":\"\",\"new_coupon_wining_description\":\"Double Entries in the WDPD26 draw.\",\"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\":\"NO PRIZE\"},{\"slice_label\":\"NO PRIZE\",\"probability\":\"0\",\"slice_no_prize\":\"yes\",\"discount_type\":\"none\",\"slice_color\":\"#ff0000\",\"slice_bg_color\":\"#8b2323\",\"slice_font_color\":\"#000000\",\"slice_bg_image_url\":\"https:\\\/\\\/www.connectandwin.com.au\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/pop1.png\",\"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\":\"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\":\"NO PRIZE\"}];\n            const wheelId = 'lucky-wheel-6a0abb4f366f8';\n            const fullWheelImageUrl = \"https:\\\/\\\/www.connectandwin.com.au\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/LD2.png\";\n            const showBordersOverFullImage = false;\n            const canvas = document.getElementById(wheelId + '-canvas');\n            const ctx = canvas.getContext('2d');\n            const fallbackWheelSize = parseInt(canvas.getAttribute('width'), 10) || parseInt(canvas.getAttribute('height'), 10) || 400;\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 getDisplaySize() {\n                const rect = canvas.getBoundingClientRect();\n\n                if (rect.width) {\n                    return rect.width;\n                }\n\n                if (rect.height) {\n                    return rect.height;\n                }\n\n                return fallbackWheelSize;\n            }\n\n            function ensureCanvasResolution() {\n                const displaySize = getDisplaySize();\n                const pixelRatio = window.devicePixelRatio || 1;\n                const requiredSize = Math.round(displaySize * pixelRatio);\n\n                if (canvas.width !== requiredSize || canvas.height !== requiredSize) {\n                    canvas.width = requiredSize;\n                    canvas.height = requiredSize;\n                }\n\n                ctx.setTransform(1, 0, 0, 1, 0, 0);\n                ctx.scale(pixelRatio, pixelRatio);\n\n                return {\n                    displaySize,\n                    pixelRatio\n                };\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                };\n                img.onerror = function() {\n                    fullWheelImage.loaded = false;\n                    fullWheelImage.image = null;\n                    drawWheel();\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 { displaySize } = ensureCanvasResolution();\n                const centerX = displaySize \/ 2;\n                const centerY = displaySize \/ 2;\n                const radius = Math.min(centerX, centerY) - 2;\n                \/\/ Responsive font size calculation\n                const isMobile = window.innerWidth < 768;\n                const fontSize = isMobile ? 1 : 1;\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, displaySize, displaySize);\n                ctx.save();\n                ctx.translate(centerX, centerY);\n\n                const isUsingFullImage = !!(fullWheelImageUrl && fullWheelImage.loaded && fullWheelImage.image);\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\n                            \/\/ Rotate image in the local slice axis (center -> outer edge).\n                            ctx.rotate(centerAngle);\n                            ctx.drawImage(cachedImage.image, -radius, -radius, radius * 2, radius * 2);\n\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                    \/\/ 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                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 = 8 * 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 = (8 * 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            \/\/ 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\">                 <img decoding=\"async\" class=\"aligncenter\" style=\"padding: 10px\" src=\"https:\/\/www.luckyduckwheel.com.au\/wp-content\/uploads\/2026\/03\/welldone1.png\" \/>  <p style=\"text-align: center\"><strong>You have won !<\/strong><\/p>  <p style=\"text-align: center\">Check your email for details!<\/p>            <\/div>         <\/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>                                                                                                                                                                                 <\/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: center;             color: #266ca8;                }          .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-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            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-business=\"${escapeHtml(winnerData.customer_business || '')}\"\n                            data-business-address=\"${escapeHtml(winnerData.customer_business_address || '')}\"\n                            data-email=\"${escapeHtml(winnerData.customer_email || '')}\"\n                            data-phone=\"${escapeHtml(winnerData.customer_phone || '')}\"\n                            data-postcode=\"${escapeHtml(winnerData.customer_postcode || '')}\">\n                            Claim Prize                        <\/button>`;\n            }\n\n            \/\/ Function to update modal content with actual winner data\n            window.wxgiveawayUpdateWinnerModal = function(winnerData, 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                \/\/ Replace variables with actual data\n                let content = `<img class=\\\"aligncenter\\\" style=\\\"padding: 10px;\\\" src=\\\"https:\/\/www.luckyduckwheel.com.au\/wp-content\/uploads\/2026\/03\/welldone1.png\\\" \/>\r\n<p style=\\\"text-align: center;\\\"><strong>You have won {slice_label}!<\/strong><\/p>\r\n<p style=\\\"text-align: center;\\\">Check your email for details!<\/p>`;\n\n                if (winnerData && winnerData.is_none) {\n                const noPrizeTitle = winnerData.slice_label || 'No Prize';\n                const noPrizeMessage = winnerData.no_prize_text || winnerData.win_description || 'Better luck next time! Thanks for playing the wheel of fortune.';\n            \n                content = `\n                    <div class=\"no-prize-result\">\n                        <a href=\"https:\/\/loyaltyrewards.aucommerce.com.au\/lucky-duck-draw-entry\"><img decoding=\"async\" src=\"https:\/\/www.luckyduckwheel.com.au\/wp-content\/uploads\/2026\/03\/sorry-1.png\" style=\"width:550px; padding: 20px\"><\/a>\n                       \n                    <\/div>\n                `;\n            } else {\n                    \/\/ Replace all variables for normal winners.\n                    content = content.replace(\/{customer_name}\/g, winnerData.customer_name || '');\n                    content = content.replace(\/{customer_business}\/g, winnerData.customer_business || '');\n                    content = content.replace(\/{customer_business_address}\/g, winnerData.customer_business_address || '');\n                    content = content.replace(\/{customer_email}\/g, winnerData.customer_email || '');\n                    content = content.replace(\/{customer_phone}\/g, winnerData.customer_phone || '');\n                    const fallbackNoPrizeText = winnerData.no_prize_text || '';\n                    content = content.replace(\/{win_description}\/g, winnerData.win_description || fallbackNoPrizeText);\n                    content = content.replace(\/{coupon_code}\/g, winnerData.coupon_code || '');\n                    content = content.replace(\/{slice_label}\/g, winnerData.slice_label || '');\n                    content = content.replace(\/{discount_amount}\/g, winnerData.discount_amount || '');\n                    content = content.replace(\/{discount_type}\/g, winnerData.discount_type || '');\n                    content = content.replace(\/{expiry_date}\/g, winnerData.expiry_date || '');\n                    content = content.replace(\/{tickets_count}\/g, winnerData.tickets_count || '');\n                    content = content.replace(\/{valid_date}\/g, winnerData.valid_date || '');\n                    content = content.replace(\/{giveaway_products}\/g, winnerData.giveaway_products || '');\n                    content = content.replace(\/{reward_points}\/g, winnerData.reward_points || '');\n                    content = content.replace(\/{no_prize_text}\/g, winnerData.no_prize_text || '');\n                    content = content.replace(\/{survey}\/g, buildSurveyButton(winnerData));\n                }\n\n                \/\/ Never allow an empty winner modal; fall back to no-prize\/win text.\n                if (!content || !content.trim()) {\n                    const fallbackMessage = winnerData.no_prize_text || winnerData.win_description || 'Better luck next time! Thanks for playing the wheel of fortune.';\n                    content = `<p>${fallbackMessage}<\/p>`;\n                }\n\n                modalContent.innerHTML = content;\n                modal.dataset.requireSurvey = (surveyEnabled && winnerData && winnerData.winner_id && !winnerData.is_none) ? '1' : '0';\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 openSurveyFromButton(button) {\n                const container = button.closest('.wxgiveaway-lucky-wheel-container');\n                if (!container) return;\n\n                const surveyModal = container.querySelector('.wxgiveaway-survey-modal');\n                const form = surveyModal ? surveyModal.querySelector('.wxgiveaway-survey-form') : null;\n                const winnerModal = container.querySelector('.winner-modal');\n                if (!surveyModal || !form) return;\n\n                form.reset();\n                const winnerIdEl = form.querySelector('input[name=\"winner_id\"]');\n                const entrantNameEl = form.querySelector('input[name=\"entrant_name\"]');\n                const entrantBusinessEl = form.querySelector('input[name=\"entrant_business\"]');\n                const entrantBusinessAddressEl = form.querySelector('input[name=\"entrant_business_address\"]');\n                const entrantEmailEl = form.querySelector('input[name=\"entrant_email\"]');\n                const entrantPhoneEl = form.querySelector('input[name=\"entrant_phone\"]');\n                const entrantPostcodeEl = form.querySelector('input[name=\"entrant_postcode\"]');\n\n                if (winnerIdEl) winnerIdEl.value = button.getAttribute('data-winner-id') || '';\n                if (entrantNameEl) entrantNameEl.value = button.getAttribute('data-name') || '';\n                if (entrantBusinessEl) entrantBusinessEl.value = button.getAttribute('data-business') || '';\n                if (entrantBusinessAddressEl) entrantBusinessAddressEl.value = button.getAttribute('data-business-address') || '';\n                if (entrantEmailEl) entrantEmailEl.value = button.getAttribute('data-email') || '';\n                if (entrantPhoneEl) entrantPhoneEl.value = button.getAttribute('data-phone') || '';\n                if (entrantPostcodeEl) entrantPostcodeEl.value = button.getAttribute('data-postcode') || '';\n\n                if (winnerModal) {\n                    winnerModal.style.display = 'none';\n                }\n                surveyModal.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\n                document.addEventListener('submit', function(e) {\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', '40d8ec6483');\n\n                    fetch('https:\/\/www.connectandwin.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)\n                                ? data.data.message\n                                : 'Unable to submit survey.';\n                        }\n                        return;\n                    }\n                \n                    \/\/ Success: hide survey modal\n                    if (surveyModal) surveyModal.style.display = 'none';\n                \n                    \/\/ Show success image in the winner modal\n                    if (winnerModal) {\n                        if (window.wxgiveawayShowModalMessage) {\n                            const successHtml = \"<a href=\\\"https:\\\/\\\/loyaltyrewards.aucommerce.com.au\\\/lucky-duck-draw-entry\\\"><img src=\\\"https:\\\/\\\/www.luckyduckwheel.com.au\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/win.png\\\" style=\\\"width:550; height:367\\\" alt=\\\"Success\\\" \\\/><\\\/a>\";\n                \n                            window.wxgiveawayShowModalMessage(\n                                'Winner',\n                                successHtml,\n                                winnerModal\n                            );\n                        } else {\n                            \/\/ Fallback: just close the winner modal if helper function missing\n                            winnerModal.style.display = 'none';\n                        }\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            setupSurveyHandlers();\n        })();\n    <\/script>         <\/div>      <style>         .wxgiveaway-lucky-wheel-container {             display: flex;             gap: 30px;             background: #ffffff;             border-radius: 10px;             max-width: 1200px;             width: fit-content;             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: #0071c7;             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 #8edaf8;             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, #210099, #123bde);             border-radius: 50%;             box-shadow: 0 0 20px #123bde80;             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;         }          .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 = 'lucky-wheel-6a0abb4f366f8';\n            const wxgiveawayMessages = {\"required_fields\":\"Please fill in all required fields.\",\"accept_terms\":\"Please accept the terms and conditions.\",\"accept_over_18\":\"Please confirm that you are over 18 years old.\",\"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                const codeField = form ? form.querySelector('#customer_code') : null;\n                const readonlyCodeValue = codeField && codeField.readOnly ? codeField.value : 'RLLR-';\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 normalizeCodeValue(rawValue) {\n                    const prefix = 'RLLR-';\n                    const normalized = String(rawValue || '').toUpperCase();\n                    const digitsOnly = normalized.replace(prefix, '').replace(\/\\D\/g, '').slice(0, 7);\n                    return prefix + digitsOnly;\n                }\n\n                function isValidLuckyWheelCode(value) {\n                    return \/^RLLR-\\d{7}$\/.test(String(value || '').toUpperCase().trim());\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                                if (field.id === 'accept_over_18') {\n                                    errorMessages.push(wxgiveawayMessages.accept_over_18);\n                                } else {\n                                    errorMessages.push(wxgiveawayMessages.accept_terms);\n                                }\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                                if (field.id === 'customer_code' && field.value.trim()) {\n                                    const normalizedCode = normalizeCodeValue(field.value);\n                                    field.value = normalizedCode;\n                                    if (!isValidLuckyWheelCode(normalizedCode)) {\n                                        isValid = false;\n                                        field.style.borderColor = '#ff0000';\n                                        errorMessages.push('Kod mora biti u formatu RLLR-1234567.');\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                    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                    if (codeField && !codeField.readOnly) {\n                        codeField.addEventListener('focus', function() {\n                            if (!this.value || !this.value.toUpperCase().startsWith('RLLR-')) {\n                                this.value = 'RLLR-';\n                            }\n                        });\n\n                        codeField.addEventListener('input', function() {\n                            this.value = normalizeCodeValue(this.value);\n                        });\n\n                        codeField.addEventListener('blur', function() {\n                            const normalizedCode = normalizeCodeValue(this.value);\n                            this.value = normalizedCode;\n                            if (normalizedCode !== 'RLLR-' && !isValidLuckyWheelCode(normalizedCode)) {\n                                this.style.borderColor = '#ff0000';\n                                showErrorMessage('Kod mora biti u formatu RLLR-1234567.');\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', '946f151ea6');\n\n                    fetch('https:\/\/www.connectandwin.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                                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                                        input.value = input.id === 'customer_code' ? readonlyCodeValue : '';\n                                    }\n                                });\n\n                                if (window[wheelId + '_spinWheel']) {\n                                    window[wheelId + '_spinWheel'](data.data.winner_slice_index);\n                                }\n                                const spinTotalDuration = (8 * 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                        customer_postcode: customerData.postcode || '',\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                        no_prize_text: sliceData.no_prize_text || '',\n                        is_none: sliceData.is_none || false\n                    };\n\n                    \/\/ Use the global function to update modal content\n                    if (window.wxgiveawayUpdateWinnerModal) {\n                        window.wxgiveawayUpdateWinnerModal(winnerData, modal);\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\t<\/div> \t\t<\/div> \t\t\t\t\t<\/div> \t\t<\/section> \t\t\t\t<section data-ka-cursor-size=\"1\" class=\"elementor-section elementor-top-section elementor-element elementor-element-8a96e8c kng-custom-css-yes elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no\" data-id=\"8a96e8c\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;kng_custom_css_switch&quot;:&quot;yes&quot;,&quot;background_background&quot;:&quot;classic&quot;,&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-f60fab0\" data-id=\"f60fab0\" 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-6114b42 elementor-widget elementor-widget-menu-anchor\" data-id=\"6114b42\" 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=\"menu-anchor.default\"> \t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"terms\"><\/div> \t\t\t\t\t\t<\/div> \t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-a4d4315 elementor-widget elementor-widget-text-editor\" data-id=\"a4d4315\" 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=\"text-editor.default\"> \t\t\t\t\t\t\t\t\t<h2 class=\"p2\" style=\"text-align: center;\"><b>WDPD26 ANNUAL PROMOTION INSTANT-WIN DIGITAL GAME <\/b><\/h2><table class=\"terms\" aria-label=\"WDPD26 Instant-Win Digital Game Terms and Conditions\"><tbody><tr><td class=\"label\">Promoter<\/td><td class=\"content\"><p>The promoter is Loyalty Fundraising Pty Ltd t\/a Instaprize ABN 51 642 660 928 of 8 \/ 8 Trawalla Avenue, Toorak VIC 3142 (NSW Authority Number TP\/04166 and SA Authority Number pending) in conjunction with the Royal Life Saving Society Western Australia Inc. ABN 28 083 676 266 of 12 McGillivray Rd, Mt Claremont WA 6010 and Royal Life Saving Society Australia South Australia Branch Inc. ABN 26 318 933 273 of 11 Blacks Rd, Gilles Plains SA 5086 (collectively, Royal Life Saving).<\/p><\/td><\/tr><tr><td class=\"label\">Promotion Period<\/td><td class=\"content\"><p>The Instant-Win Digital Game is conducted in conjunction with The World Drowning Prevention Day 2026 (WDPD26) Annual Promotion which commences on 01\/07\/2025 at 12:00am AWST and ends on 30\/06\/2026 at 11:59pm AWST.<\/p><\/td><\/tr><tr><td class=\"label\">Instant-Win Digital Game Terms and Conditions<\/td><td class=\"content\"><p>These Terms and Conditions are to be read in conjunction with the full Terms and Conditions of the WDPD26 Annual Promotion: <a href=\"https:\/\/loyaltyrewards.aucommerce.com.au\/terms-and-conditions\">loyaltyrewards.aucommerce.com.au\/terms-and-conditions<\/a><\/p><p>Entry is open to Australian residents, aged over 18 years, of NSW, NT, QLD, TAS, VIC, SA and WA. Residents of ACT are not currently eligible to enter any of the WDPD26, or associated, promotions.<\/p><p>Royal Life Saving reserves the right to expand the territory of the Instant-Win Digital Game, subject to any required permits, and will publish any changes on <a href=\"https:\/\/loyaltyrewards.aucommerce.com.au\">loyaltyrewards.aucommerce.com.au<\/a>.<\/p><p>Directors, Executive, Senior Management, and direct marketing &amp; fundraising staff of Royal Life Saving, and direct &amp; indirect marketing and fundraising staff of contractors involved in this promotion and Instaprize are ineligible to enter the Instant-Win Digital Game.<\/p><\/td><\/tr><tr><td class=\"label\">Instant-Win Draw Details<\/td><td class=\"content\"><p>Instant-Win bonus entries will be added to all valid entries and will be included in the WDPD26 draw, which will take place at 2pm AEST on 25\/07\/2026 at Unit 8 \/ 8 Trawalla Avenue, Toorak VIC 3142 (Instaprize). The draw will be undertaken using a random number generator.<\/p><\/td><\/tr><tr><td class=\"label\">Instant-Win Prizes<\/td><td class=\"content\"><p>This Instant-Win Digital Game provides the opportunity for a supporter with a valid coupon code to play the game (once per valid coupon code) to win bonus entries in the WDPD26 Promotion.<\/p><p>Bonus entries will be awarded at the sole discretion of the promoter and subject to the Terms and Conditions of the WDPD26 Annual Promotion.<\/p><\/td><\/tr><tr><td class=\"label\">Bonus Entry Allocation<\/td><td class=\"content\"><p><strong>Entry Ratios at launch<\/strong><\/p><p>At the time of the promotion&#8217;s launch, bonus entries will be distributed according to the following ratio:<\/p><ul><li>20% of participants will receive no bonus entries;<\/li><li>50% of participants will be awarded double entries; and<\/li><li>30% of participants will be awarded triple entries.<\/li><\/ul><p><strong><br \/>Changes to Bonus Entry Ratios<\/strong><\/p><p>The promoter reserves the right to modify the bonus entry allocation ratios at any time during the promotion. Any changes will be made at the promoter&#8217;s discretion and without prior notice.<\/p><p><strong>General Terms<\/strong><\/p><p>Bonus entries are non-transferable and hold no cash value. The promoter&#8217;s decision regarding the awarding of bonus entries is final.<\/p><\/td><\/tr><tr><td class=\"label\">Entry Limits<\/td><td class=\"content\"><p>Eligible Entrants may only enter once per valid coupon code.<\/p><p>Entry is in accordance with the WDPD26 Annual Promotion Royal Life Saving Loyalty Rewards Card Entry Method: <a href=\"https:\/\/loyaltyrewards.aucommerce.com.au\/terms-and-conditions\">loyaltyrewards.aucommerce.com.au\/terms-and-conditions<\/a><\/p><\/td><\/tr><tr><td class=\"label\">Instant-Win Notification<\/td><td class=\"content\"><p>Instant winners will be notified via their game play and the information displayed on the game link. To redeem the prize Entrants must complete all requested details on the form provided prior to the closing date of the WDPD26 promotion.<\/p><\/td><\/tr><tr><td class=\"label\">Additional Information<\/td><td class=\"content\"><p>For full details of the WDPD26 Annual Promotion, including Draw Details, Prize Pool, Use of Personal Information and Privacy Rules refer to <a href=\"https:\/\/loyaltyrewards.aucommerce.com.au\/terms-and-conditions\">loyaltyrewards.aucommerce.com.au\/terms-and-conditions<\/a><\/p><\/td><\/tr><\/tbody><\/table><div class=\"footer\"><div>\u00a0<\/div><\/div>\t\t\t\t\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>WDPD26 ANNUAL PROMOTION INSTANT-WIN DIGITAL GAME Promoter The promoter is Loyalty Fundraising Pty Ltd t\/a Instaprize ABN 51 642 660 928 of 8 \/ 8 Trawalla Avenue, Toorak VIC 3142 (NSW Authority Number TP\/04166 and SA Authority Number pending) in conjunction with the Royal Life Saving Society Western Australia Inc. ABN 28 083 676 266 of 12 McGillivray Rd, Mt Claremont WA 6010 and Royal Life Saving Society Australia South Australia Branch Inc. ABN 26 318 933 273 of 11 Blacks Rd, Gilles Plains SA 5086 (collectively, Royal Life Saving). Promotion Period The Instant-Win Digital Game is conducted in conjunction with The World Drowning Prevention Day 2026 (WDPD26) Annual Promotion which commences on 01\/07\/2025 at 12:00am AWST and ends on 30\/06\/2026 at 11:59pm AWST. Instant-Win Digital Game Terms and Conditions These Terms and Conditions are to be read in conjunction with the full Terms and Conditions of the WDPD26 Annual Promotion: loyaltyrewards.aucommerce.com.au\/terms-and-conditions Entry is open to Australian residents, aged over 18 years, of NSW, NT, QLD, TAS, VIC, SA and WA. Residents of ACT are not currently eligible to enter any of the WDPD26, or associated, promotions. Royal Life Saving reserves the right to expand the territory of the Instant-Win Digital Game, subject to any required permits, and will publish any changes on loyaltyrewards.aucommerce.com.au. Directors, Executive, Senior Management, and direct marketing &amp; fundraising staff of Royal Life Saving, and direct &amp; indirect marketing and fundraising staff of contractors involved in this promotion and Instaprize are ineligible to enter the Instant-Win Digital Game. Instant-Win Draw Details Instant-Win bonus entries will be added to all valid entries and will be included in the WDPD26 draw, which will take place at 2pm AEST on 25\/07\/2026 at Unit 8 \/ 8 Trawalla Avenue, Toorak VIC 3142 (Instaprize). The draw will be undertaken using a random number generator. Instant-Win Prizes This Instant-Win Digital Game provides the opportunity for a supporter with a valid coupon code to play the game (once per valid coupon code) to win bonus entries in the WDPD26 Promotion. Bonus entries will be awarded at the sole discretion of the promoter and subject to the Terms and Conditions of the WDPD26 Annual Promotion. Bonus Entry Allocation Entry Ratios at launch At the time of the promotion&#8217;s launch, bonus entries will be distributed according to the following ratio: 20% of participants will receive no bonus entries; 50% of participants will be awarded double entries; and 30% of participants will be awarded triple entries. Changes to Bonus Entry Ratios The promoter reserves the right to modify the bonus entry allocation ratios at any time during the promotion. Any changes will be made at the promoter&#8217;s discretion and without prior notice. General Terms Bonus entries are non-transferable and hold no cash value. The promoter&#8217;s decision regarding the awarding of bonus entries is final. Entry Limits Eligible Entrants may only enter once per valid coupon code. Entry is in accordance with the WDPD26 Annual Promotion Royal Life Saving Loyalty Rewards Card Entry Method: loyaltyrewards.aucommerce.com.au\/terms-and-conditions Instant-Win Notification Instant winners will be notified via their game play and the information displayed on the game link. To redeem the prize Entrants must complete all requested details on the form provided prior to the closing date of the WDPD26 promotion. Additional Information For full details of the WDPD26 Annual Promotion, including Draw Details, Prize Pool, Use of Personal Information and Privacy Rules refer to loyaltyrewards.aucommerce.com.au\/terms-and-conditions \u00a0<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-65","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/pages\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/comments?post=65"}],"version-history":[{"count":94,"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/pages\/65\/revisions"}],"predecessor-version":[{"id":548,"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/pages\/65\/revisions\/548"}],"wp:attachment":[{"href":"https:\/\/www.connectandwin.com.au\/index.php\/wp-json\/wp\/v2\/media?parent=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}