function on_keydown_remove_from_cart(e){" "===e.key&&(e.preventDefault(),e.currentTarget.click())}function focus_populate_live_region(){var e=["woocommerce-message","woocommerce-error","wc-block-components-notice-banner"].map(function(e){return"."+e+'[role="alert"]'}).join(", "),o=document.querySelectorAll(e);if(0!==o.length){var t=o[0];t.setAttribute("tabindex","-1");var n=setTimeout(function(){t.focus(),clearTimeout(n)},500)}}function refresh_sorted_by_live_region(){var e=document.querySelector(".woocommerce-result-count"),o=document.querySelector('[data-wp-interactive="woocommerce/product-filters"]');if(e&&window.location.search&&!o){var t=e.innerHTML;e.setAttribute("role","alert"),e.setAttribute("aria-hidden","true");var n=setTimeout(function(){e.setAttribute("aria-hidden","false"),e.innerHTML="",e.innerHTML=t,clearTimeout(n)},2e3)}}function on_document_ready(){focus_populate_live_region(),refresh_sorted_by_live_region()}jQuery(function(e){e(".woocommerce-ordering").on("change","select.orderby",function(){e(this).closest("form").trigger("submit")}),e("input.qty:not(.product-quantity input.qty)").each(function(){var o=parseFloat(e(this).attr("min"));o>=0&&parseFloat(e(this).val())<o&&e(this).val(o)});var o="store_notice"+(e(".woocommerce-store-notice").data("noticeId")||"");if("hidden"===Cookies.get(o))e(".woocommerce-store-notice").hide();else{function t(o){["Enter"," "].includes(o.key)&&(o.preventDefault(),e(".woocommerce-store-notice__dismiss-link").click())}e(".woocommerce-store-notice").show(),e(".woocommerce-store-notice__dismiss-link").on("click",function n(r){Cookies.set(o,"hidden",{path:"/"}),e(".woocommerce-store-notice").hide(),r.preventDefault(),e(".woocommerce-store-notice__dismiss-link").off("click",n).off("keydown",t)}).on("keydown",t)}e(".woocommerce-input-wrapper span.description").length&&e(document.body).on("click",function(){e(".woocommerce-input-wrapper span.description:visible").prop("aria-hidden",!0).slideUp(250)}),e(".woocommerce-input-wrapper").on("click",function(e){e.stopPropagation()}),e(".woocommerce-input-wrapper :input").on("keydown",function(o){var t=e(this).parent().find("span.description");if(27===o.which&&t.length&&t.is(":visible"))return t.prop("aria-hidden",!0).slideUp(250),o.preventDefault(),!1}).on("click focus",function(){var o=e(this).parent(),t=o.find("span.description");o.addClass("currentTarget"),e(".woocommerce-input-wrapper:not(.currentTarget) span.description:visible").prop("aria-hidden",!0).slideUp(250),t.length&&t.is(":hidden")&&t.prop("aria-hidden",!1).slideDown(250),o.removeClass("currentTarget")}),e.scroll_to_notices=function(o){o.length&&e("html, body").animate({scrollTop:o.offset().top-100},1e3)},e('.woocommerce form .woocommerce-Input[type="password"]').wrap('<span class="password-input"></span>'),e(".woocommerce form input").filter(":password").parent("span").addClass("password-input"),e(".password-input").each(function(){const o=e(this).find("input").attr("id");e(this).append('<button type="button" class="show-password-input" aria-label="'+woocommerce_params.i18n_password_show+'" aria-describedBy="'+o+'"></button>')}),e(".show-password-input").on("click",function(o){o.preventDefault(),e(this).hasClass("display-password")?(e(this).removeClass("display-password"),e(this).attr("aria-label",woocommerce_params.i18n_password_show)):(e(this).addClass("display-password"),e(this).attr("aria-label",woocommerce_params.i18n_password_hide)),e(this).hasClass("display-password")?e(this).siblings(['input[type="password"]']).prop("type","text"):e(this).siblings('input[type="text"]').prop("type","password"),e(this).siblings("input").focus()}),e("a.coming-soon-footer-banner-dismiss").on("click",function(o){var t=e(o.target);e.ajax({type:"post",url:t.data("rest-url"),data:{woocommerce_meta:{coming_soon_banner_dismissed:"yes"}},beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",t.data("rest-nonce"))},complete:function(){e("#coming-soon-footer-banner").hide()}})}),"undefined"==typeof wc_add_to_cart_params&&e(document.body).on("keydown",".remove_from_cart_button",on_keydown_remove_from_cart),e(document.body).on("item_removed_from_classic_cart updated_wc_div",focus_populate_live_region)}),document.addEventListener("DOMContentLoaded",on_document_ready);
(()=>{function e(){var n,r,o="function"==typeof Symbol?Symbol:{},c=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(e,o,c,a){var i=o&&o.prototype instanceof s?o:s,l=Object.create(i.prototype);return t(l,"_invoke",function(e,t,o){var c,a,i,s=0,l=o||[],p=!1,d={p:0,n:0,v:n,a:f,f:f.bind(n,4),d:function(e,t){return c=e,a=0,i=n,d.n=t,u}};function f(e,t){for(a=e,i=t,r=0;!p&&s&&!o&&r<l.length;r++){var o,c=l[r],f=d.p,P=c[2];e>3?(o=P===t)&&(i=c[(a=c[4])?5:(a=3,3)],c[4]=c[5]=n):c[0]<=f&&((o=e<2&&f<c[1])?(a=0,d.v=t,d.n=c[1]):f<P&&(o=e<3||c[0]>t||t>P)&&(c[4]=e,c[5]=t,d.n=P,a=0))}if(o||e>1)return u;throw p=!0,t}return function(o,l,P){if(s>1)throw TypeError("Generator is already running");for(p&&1===l&&f(l,P),a=l,i=P;(r=a<2?n:i)||!p;){c||(a?a<3?(a>1&&(d.n=-1),f(a,i)):d.n=i:d.v=i);try{if(s=2,c){if(a||(o="next"),r=c[o]){if(!(r=r.call(c,i)))throw TypeError("iterator result is not an object");if(!r.done)return r;i=r.value,a<2&&(a=0)}else 1===a&&(r=c.return)&&r.call(c),a<2&&(i=TypeError("The iterator does not provide a '"+o+"' method"),a=1);c=n}else if((r=(p=d.n<0)?i:e.call(t,d))!==u)break}catch(e){c=n,a=1,i=e}finally{s=1}}return{value:r,done:p}}}(e,c,a),!0),l}var u={};function s(){}function l(){}function p(){}r=Object.getPrototypeOf;var d=[][c]?r(r([][c]())):(t(r={},c,function(){return this}),r),f=p.prototype=s.prototype=Object.create(d);function P(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,t(e,a,"GeneratorFunction")),e.prototype=Object.create(f),e}return l.prototype=p,t(f,"constructor",p),t(p,"constructor",l),l.displayName="GeneratorFunction",t(p,a,"GeneratorFunction"),t(f),t(f,a,"Generator"),t(f,c,function(){return this}),t(f,"toString",function(){return"[object Generator]"}),(e=function(){return{w:i,m:P}})()}function t(e,n,r,o){var c=Object.defineProperty;try{c({},"",{})}catch(e){c=0}t=function(e,n,r,o){function a(n,r){t(e,n,function(e){return this._invoke(n,r,e)})}n?c?c(e,n,{value:r,enumerable:!o,configurable:!o,writable:!o}):e[n]=r:(a("next",0),a("throw",1),a("return",2))},t(e,n,r,o)}function n(e,t,n,r,o,c,a){try{var i=e[c](a),u=i.value}catch(e){return void n(e)}i.done?t(u):Promise.resolve(u).then(r,o)}function r(e){return function(){var t=this,r=arguments;return new Promise(function(o,c){var a=e.apply(t,r);function i(e){n(a,o,c,i,u,"next",e)}function u(e){n(a,o,c,i,u,"throw",e)}i(void 0)})}}!function(t){"use strict";var n=window.ppcpRecaptchaSettings||{},o=null,c=null,a=null,i=!1;function u(){return new Promise(function(e){"undefined"!=typeof grecaptcha&&grecaptcha.execute?(console.log("PPCP reCAPTCHA: reCAPTCHA v3 loaded and ready"),e()):(console.log("PPCP reCAPTCHA: Waiting for reCAPTCHA v3 to load..."),setTimeout(function(){u().then(e)},100))})}function s(e,r){if(!n.isBlocks){var o=n.isSingleProduct?"form.cart":n.isCheckout?"form.checkout":null;if(o){var c=t(o);0!==c.length?(c.find('input[name="ppcp_recaptcha_token"]').remove(),c.find('input[name="ppcp_recaptcha_version"]').remove(),c.append('<input type="hidden" name="ppcp_recaptcha_token" value="'+e+'">'),c.append('<input type="hidden" name="ppcp_recaptcha_version" value="'+r+'">')):console.error("PPCP reCAPTCHA: Form not found for token update")}}}function l(e){console.log("PPCP reCAPTCHA: Checkout error detected");var t=e&&("string"==typeof e?e.toLowerCase().includes("captcha"):e.some(function(e){return e.content&&e.content.toLowerCase().includes("captcha")}));i?null!==a&&"undefined"!=typeof grecaptcha&&grecaptcha.reset&&(console.log("PPCP reCAPTCHA: Resetting v2 widget"),grecaptcha.reset(a),c=null):t?(console.log("PPCP reCAPTCHA: v3 failed on checkout, rendering v2"),f()):n.siteKeyV3&&(console.log("PPCP reCAPTCHA: Regenerating v3 token"),p())}function p(){return d.apply(this,arguments)}function d(){return(d=r(e().m(function t(){var r;return e().w(function(e){for(;;)switch(e.p=e.n){case 0:if("undefined"!=typeof grecaptcha&&grecaptcha.execute){e.n=1;break}return console.error("PPCP reCAPTCHA: grecaptcha v3 not loaded"),e.a(2);case 1:return e.p=1,e.n=2,grecaptcha.execute(n.siteKeyV3,{action:"ppcp"});case 2:o=e.v,console.log("PPCP reCAPTCHA: New v3 token generated"),s(o,"v3"),n.isBlocks&&window.wp&&window.wp.data&&window.wp.data.dispatch("wc/store/checkout").__internalSetExtensionData("ppcp_recaptcha",{token:o,version:"v3"}),e.n=4;break;case 3:e.p=3,r=e.v,console.error("PPCP reCAPTCHA: Failed to generate v3 token",r),o=null;case 4:return e.a(2)}},t,null,[[1,3]])}))).apply(this,arguments)}function f(){if(!i&&n.siteKeyV2){var e=document.getElementById(n.v2ContainerId);if(e)if("undefined"!=typeof grecaptcha&&grecaptcha.render){e.innerHTML="";var t=document.createElement("div");t.className="g-recaptcha",t.setAttribute("data-sitekey",n.siteKeyV2),t.setAttribute("data-theme",n.theme),e.appendChild(t),a=grecaptcha.render(t,{sitekey:n.siteKeyV2,theme:n.theme,callback:function(e){c=e,console.log("PPCP reCAPTCHA: v2 verified"),s(e,"v2"),n.isBlocks&&window.wp&&window.wp.data&&window.wp.data.dispatch("wc/store/checkout").__internalSetExtensionData("ppcp_recaptcha",{token:e,version:"v2"})},"expired-callback":function(){c=null,s("","v2"),n.isBlocks&&window.wp&&window.wp.data&&window.wp.data.dispatch("wc/store/checkout").__internalSetExtensionData("ppcp_recaptcha",{token:"",version:"v2"})}}),i=!0}else console.error("PPCP reCAPTCHA: grecaptcha v2 not loaded");else console.error("PPCP reCAPTCHA: v2 container not found")}}var P=window.fetch;if(window.fetch=function(){var t=r(e().m(function t(r){var u,s,l,p,d,h=arguments;return e().w(function(e){for(;;)switch(e.n){case 0:if(u=h.length>1&&void 0!==h[1]?h[1]:{},(s="string"==typeof r?r:r.url)&&s.includes("ppc-create-order")){e.n=1;break}return e.a(2,P.call(this,r,u));case 1:if(console.log("PPCP reCAPTCHA: Intercepting AJAX",s),i&&c?(l=c,p="v2"):(l=o,p="v3"),l){e.n=2;break}return console.error("PPCP reCAPTCHA: No token available"),e.a(2,Promise.reject(new Error("Missing reCAPTCHA token")));case 2:try{(d=JSON.parse(u.body)).ppcp_recaptcha_token=l,d.ppcp_recaptcha_version=p,u.body=JSON.stringify(d),console.log("PPCP reCAPTCHA: Token injected",p)}catch(e){console.error("PPCP reCAPTCHA: Failed to inject token",e)}return e.a(2,P.call(this,r,u).then(function(e){return 403!==e.status&&400!==e.status||e.clone().json().then(function(e){e.data.code===n.errorCodeVerificationFailed&&(i?(console.log("PPCP reCAPTCHA: v2 verification failed, resetting v2 widget"),grecaptcha.reset(a),c=null):(console.log("PPCP reCAPTCHA: v3 failed, rendering v2"),f()))}),e}))}},t,this)}));return function(_x){return t.apply(this,arguments)}}(),t(document).ready(function(){n.siteKeyV3&&u().then(function(){console.log("PPCP reCAPTCHA: Pre-generating v3 token"),p(),setInterval(p,9e4)})}),!n.isBlocks&&n.isCheckout&&t(document.body).on("checkout_error",function(){l(t(".woocommerce-error, .woocommerce-NoticeGroup-checkout").text())}),n.isBlocks&&window.wp&&window.wp.data){var h=window.wp.data,C=h.subscribe,v=h.select,w=!1;C(function(){var e=v("wc/store/checkout");if(e){var n=e.hasError();n&&!w&&(console.log("PPCP reCAPTCHA: Block checkout error detected"),setTimeout(function(){var e=t(".wc-block-components-notice-banner__content");if(e.length>0){var n=e.text();console.log("PPCP reCAPTCHA: Error message extracted:",n),l(n)}else console.error("PPCP reCAPTCHA: Error banner not found in DOM")},100)),w=n}})}}(jQuery)})();
(function (){
'use strict';
function matchRule(qty, rules){
if(!rules||!rules.length) return null;
var best=null;
for (var i=0; i < rules.length; i++){
var rule=rules[i];
var ruleQty=parseInt(rule.qty, 10)||0;
var rulePrice=parseFloat(rule.price)||0;
if(qty >=ruleQty&&rulePrice > 0){
if(!best||ruleQty > (parseInt(best.qty, 10)||0)){
best=rule;
}}
}
return best;
}
function formatPrice(amount){
var d=(typeof wcbpData!=='undefined') ? wcbpData:{};
var sym=d.currency||'€';
var decimals=d.currencyDecimals!=null ? parseInt(d.currencyDecimals, 10):2;
var decSep=d.currencyDecSep||',';
var thousSep=d.currencyThSep||'.';
var pos=d.currencyPos||'left';
var fixed=Math.abs(amount).toFixed(decimals);
var parts=fixed.split('.');
var intPart=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousSep);
var formatted=decimals > 0 ? intPart + decSep + parts[1]:intPart;
switch (pos){
case 'left':       return sym + formatted;
case 'left_space': return sym + '\u00A0' + formatted;
case 'right':      return formatted + sym;
case 'right_space':return formatted + '\u00A0' + sym;
default:           return sym + formatted;
}}
var nonceRefreshed=false;
function refreshAddonsNonce(){
if(nonceRefreshed) return;
nonceRefreshed=true;
var d=(typeof wcbpData!=='undefined') ? wcbpData:{};
if(!d.ajaxUrl||typeof window.fetch!=='function') return;
window.fetch(d.ajaxUrl + '?action=wcbp_refresh_addons_nonce', { credentials: 'same-origin' })
.then(function (r){ return r.json(); })
.then(function (res){
if(res&&res.success&&res.data&&res.data.nonce){
document.querySelectorAll('input[name="wcbp_addons_nonce"]').forEach(function (field){
field.value=res.data.nonce;
});
}})
.catch(function (){  });
}
function initAll(root){
root=root||document;
var nodes=[];
if(root.nodeType===1&&root.classList&&root.classList.contains('wcbp-selector')){
nodes.push(root);
}
if(root.querySelectorAll){
root.querySelectorAll('.wcbp-selector').forEach(function (el){
nodes.push(el);
});
}
nodes.forEach(function (selector){
if(selector.dataset.wcbpInit==='1') return;
selector.dataset.wcbpInit='1';
initSelector(selector);
});
}
function boot(){
initAll(document);
if(window.MutationObserver&&document.body){
new MutationObserver(function (mutations){
for (var i=0; i < mutations.length; i++){
var added=mutations[i].addedNodes;
for (var j=0; j < added.length; j++){
var node=added[j];
if(node.nodeType!==1) continue;
if((node.classList&&node.classList.contains('wcbp-selector')) ||
(node.querySelector&&node.querySelector('.wcbp-selector'))){
initAll(node);
}}
}}).observe(document.body, { childList: true, subtree: true });
}}
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', boot);
}else{
boot();
}
window.wcbpInit=initAll;
function initSelector(selector){
var cards=selector.querySelectorAll('.wcbp-card');
var form=selector.closest('form.cart')||selector.parentElement;
if(!cards.length) return;
var wcQtyInput=form ? form.querySelector('input.qty, input[name="quantity"]'):null;
var wcPriceEl=null;
var productEl=selector.closest('.product')||document.querySelector('.product');
if(productEl){
wcPriceEl=productEl.querySelector('.summary .price, .entry-summary .price, p.price, .woocommerce-Price-amount.amount');
}
function selectCard(card){
cards.forEach(function (c){
c.classList.remove('wcbp-card--active');
c.setAttribute('aria-checked', 'false');
var radio=c.querySelector('.wcbp-card__radio');
if(radio) radio.checked=false;
});
card.classList.add('wcbp-card--active');
card.setAttribute('aria-checked', 'true');
var radio=card.querySelector('.wcbp-card__radio');
if(radio){
radio.checked=true;
if(wcQtyInput){
wcQtyInput.value=radio.value;
wcQtyInput.dispatchEvent(new Event('change', { bubbles: true }));
}
updatePriceDisplay(card);
updateTotalSummary();
}}
function updatePriceDisplay(card){
if(!wcPriceEl) return;
var pricing=card.querySelector('.wcbp-card__price-wrap');
if(!pricing) return;
var priceEl=pricing.querySelector('.wcbp-card__price');
var compareEl=pricing.querySelector('.wcbp-card__compare-price');
if(priceEl){
var priceHtml=priceEl.innerHTML;
if(compareEl){
wcPriceEl.innerHTML=compareEl.innerHTML + ' ' + '<ins>' + priceHtml + '</ins>';
}else{
wcPriceEl.innerHTML=priceHtml;
}}
}
selector.setAttribute('role', 'radiogroup');
cards.forEach(function (card){
card.setAttribute('role', 'radio');
card.setAttribute('tabindex', '0');
card.setAttribute('aria-checked', card.classList.contains('wcbp-card--active') ? 'true':'false');
});
selector.addEventListener('click', function (e){
var card=e.target.closest('.wcbp-card');
if(card&&selector.contains(card)){
selectCard(card);
}});
selector.addEventListener('keydown', function (e){
var card=e.target.closest('.wcbp-card');
if(!card) return;
if(e.key==='Enter'||e.key===' '){
e.preventDefault();
selectCard(card);
}else if(e.key==='ArrowDown'||e.key==='ArrowRight'){
e.preventDefault();
var next=card.nextElementSibling;
if(next&&next.classList.contains('wcbp-card')){
next.focus();
selectCard(next);
}}else if(e.key==='ArrowUp'||e.key==='ArrowLeft'){
e.preventDefault();
var prev=card.previousElementSibling;
if(prev&&prev.classList.contains('wcbp-card')){
prev.focus();
selectCard(prev);
}}
});
var spinners=form ? form.querySelectorAll('.wcbp-custom-qty-wrapper'):document.querySelectorAll('.wcbp-custom-qty-wrapper');
spinners.forEach(function (spinner){
var card=spinner.closest('.wcbp-card')||spinner.closest('.wcbp-upsell');
var radio=card ? card.querySelector('.wcbp-card__radio, .wcbp-upsell-option__checkbox'):null;
if(!radio) return;
var input=spinner.querySelector('.wcbp-custom-qty__input');
var btnMinus=spinner.querySelector('.wcbp-custom-qty__btn--minus');
var btnPlus=spinner.querySelector('.wcbp-custom-qty__btn--plus');
var minQty=parseInt(input.getAttribute('min'), 10)||1;
var maxQty=parseInt(input.getAttribute('max'), 10)||Infinity;
var baseQty=parseInt(radio.getAttribute('data-base-qty'), 10)||minQty;
var basePrice=parseFloat(radio.getAttribute('data-price'))||0;
var baseCompare=parseFloat(radio.getAttribute('data-compare-price'))||0;
var unitPrice=basePrice / baseQty;
var unitCompare=baseCompare / baseQty;
var qtyTextEl=card.querySelector('.wcbp-card__qty-text');
var step=parseInt(input.getAttribute('step'), 10)||1;
function resizeInput(){
input.style.width=Math.max(1.2, input.value.length) + 0.8 + 'ch';
}
resizeInput();
function updateSpinnerLogic(){
var qty=parseInt(input.value, 10);
if(isNaN(qty)||qty < minQty){
qty=minQty;
input.value=qty;
}
if(qty > maxQty){
qty=maxQty;
input.value=qty;
}
resizeInput();
var matchedRule=null;
if(typeof wcbpData!=='undefined'&&wcbpData.rules){
var isAddon=radio.classList.contains('wcbp-upsell-option__checkbox');
var addonId=isAddon ? radio.getAttribute('data-addon-product-id'):null;
var rulesToMatch=wcbpData.rules;
if(isAddon&&wcbpData.addons){
for (var i=0; i < wcbpData.addons.length; i++){
if(wcbpData.addons[i].product_id==addonId){
rulesToMatch=wcbpData.addons[i].rules;
break;
}}
}
matchedRule=matchRule(qty, rulesToMatch);
}
if(matchedRule){
var rQty=parseInt(matchedRule.qty, 10)||1;
var rPrice=parseFloat(matchedRule.price)||0;
var rCompare=parseFloat(matchedRule.compare_price)||0;
unitPrice=rQty > 0 ? rPrice / rQty:rPrice;
unitCompare=rQty > 0 ? rCompare / rQty:rCompare;
}
var decimals=parseInt((typeof wcbpData!=='undefined'&&wcbpData.currencyDecimals!=null) ? wcbpData.currencyDecimals:2, 10);
var factor=Math.pow(10, decimals);
var newPrice=Math.round(unitPrice * qty * factor) / factor;
var newCompare=Math.round(unitCompare * qty * factor) / factor;
var newSavings=0;
var newSavingsPct=0;
if(newCompare > 0&&newCompare > newPrice){
newSavings=newCompare - newPrice;
newSavingsPct=Math.round((newSavings / newCompare) * 100);
}
radio.value=qty;
radio.setAttribute('data-price', newPrice);
radio.setAttribute('data-compare-price', newCompare);
radio.setAttribute('data-savings', newSavings);
radio.setAttribute('data-addon-qty', qty);
if(radio.classList.contains('wcbp-upsell-option__checkbox')&&radio.checked){
var addonCard=radio.closest('.wcbp-upsell');
if(addonCard){
var qtyAddonInput=addonCard.querySelector('.wcbp-addon__qty-input');
if(qtyAddonInput){
qtyAddonInput.value=qty;
}}
}
var priceEl=card.querySelector('.wcbp-card__price');
var compareWrapEl=card.querySelector('.wcbp-card__compare-price');
var compareEl=compareWrapEl ? compareWrapEl.querySelector('del'):null;
var savingsEl=card.querySelector('.wcbp-card__savings');
var hasCompare=newCompare > 0&&newCompare > newPrice;
if(priceEl) priceEl.innerHTML=formatPrice(newPrice);
if(compareEl) compareEl.innerHTML=formatPrice(newCompare);
if(compareWrapEl) compareWrapEl.style.display=hasCompare ? '':'none';
if(savingsEl){
savingsEl.style.display=hasCompare ? '':'none';
var label=(typeof wcbpData!=='undefined'&&wcbpData.i18n&&wcbpData.i18n.savingsLabel) ? wcbpData.i18n.savingsLabel:'SAVINGS';
savingsEl.textContent='';
savingsEl.appendChild(document.createTextNode(label + '\u00A0' + formatPrice(newSavings) + ' '));
var pctSpan=document.createElement('span');
pctSpan.className='wcbp-card__savings-pct';
pctSpan.textContent='-' + newSavingsPct + '%';
savingsEl.appendChild(pctSpan);
}
if(qtyTextEl&&typeof wcbpData!=='undefined'&&wcbpData.i18n &&
wcbpData.i18n.packageSingular&&wcbpData.i18n.packagePlural){
qtyTextEl.textContent=qty + ' ' + (qty > 1 ? wcbpData.i18n.packagePlural:wcbpData.i18n.packageSingular);
}
var isAddonCard=card.closest('.wcbp-upsell')!==null;
if(!isAddonCard&&card.classList.contains('wcbp-card--active')){
if(wcQtyInput){
wcQtyInput.value=qty;
wcQtyInput.dispatchEvent(new Event('change', { bubbles: true }));
}
updatePriceDisplay(card);
updateTotalSummary();
}}
btnMinus.addEventListener('click', function (e){
e.stopPropagation();
e.preventDefault();
var qty=parseInt(input.value, 10);
if(qty - step >=minQty){
input.value=qty - step;
updateSpinnerLogic();
}});
btnPlus.addEventListener('click', function (e){
e.stopPropagation();
e.preventDefault();
var newVal=parseInt(input.value, 10) + step;
if(newVal <=maxQty){
input.value=newVal;
updateSpinnerLogic();
}});
input.addEventListener('change', function (e){
updateSpinnerLogic();
});
input.addEventListener('input', function (e){
var qty=parseInt(input.value, 10);
if(!isNaN(qty)&&qty > maxQty){
input.value=maxQty;
updateSpinnerLogic();
}
resizeInput();
});
input.addEventListener('click', function(e){ e.stopPropagation(); });
});
var totalSummary=form ? form.querySelector('.wcbp-total-summary'):document.querySelector('.wcbp-total-summary');
var totalSummaryPrice=totalSummary ? totalSummary.querySelector('.wcbp-total-summary__price'):null;
var totalSummaryCompare=totalSummary ? totalSummary.querySelector('.wcbp-total-summary__compare'):null;
function updateTotalSummary(){
if(!totalSummary) return;
var totalPrice=0;
var totalCompare=0;
var hasCompare=false;
var activeCard=selector.querySelector('.wcbp-card--active .wcbp-card__radio');
if(activeCard){
var p=parseFloat(activeCard.getAttribute('data-price'))||0;
var cp=parseFloat(activeCard.getAttribute('data-compare-price'))||0;
totalPrice +=p;
if(cp > p){
totalCompare +=cp;
hasCompare=true;
}else{
totalCompare +=p;
}}
var selectedAddons=form ? form.querySelectorAll('.wcbp-upsell-option__checkbox:checked'):document.querySelectorAll('.wcbp-upsell-option__checkbox:checked');
selectedAddons.forEach(function(cb){
var ap=parseFloat(cb.getAttribute('data-price'))||0;
var acp=parseFloat(cb.getAttribute('data-compare-price'))||0;
totalPrice +=ap;
if(acp > ap){
totalCompare +=acp;
hasCompare=true;
}else{
totalCompare +=ap;
}});
if(totalPrice > 0){
totalSummary.style.display='';
totalSummaryPrice.innerHTML=formatPrice(totalPrice);
if(hasCompare&&totalCompare > totalPrice){
totalSummaryCompare.innerHTML=formatPrice(totalCompare);
totalSummaryCompare.style.display='';
}else{
totalSummaryCompare.style.display='none';
}}else{
totalSummary.style.display='none';
}}
var recommended=selector.querySelector('.wcbp-card--recommended');
var preselected=recommended||cards[0];
if(preselected){
selectCard(preselected);
}
var addons=form ? form.querySelectorAll('.wcbp-upsell'):document.querySelectorAll('.wcbp-upsell');
addons.forEach(function (addon){
var toggle=addon.querySelector('.wcbp-upsell__toggle');
var body=addon.querySelector('.wcbp-upsell__body');
if(!toggle||!body) return;
toggle.addEventListener('click', function (){
var expanded=toggle.getAttribute('aria-expanded')==='true';
toggle.setAttribute('aria-expanded', !expanded);
if(expanded){
body.style.display='none';
}else{
body.style.display='';
}});
toggle.addEventListener('keydown', function (e){
if(e.key==='Enter'||e.key===' '){
e.preventDefault();
toggle.click();
}});
var checkboxes=addon.querySelectorAll('.wcbp-upsell-option__checkbox');
var pidInput=addon.querySelector('.wcbp-addon__pid-input');
var qtyAddonInput=addon.querySelector('.wcbp-addon__qty-input');
checkboxes.forEach(function (cb){
cb.addEventListener('change', function (){
refreshAddonsNonce();
if(cb.checked){
checkboxes.forEach(function (other){
if(other!==cb){
other.checked=false;
var parentOption=other.closest('.wcbp-card');
if(parentOption) parentOption.classList.remove('wcbp-card--active');
}});
if(pidInput){
pidInput.value=cb.getAttribute('data-addon-product-id');
pidInput.disabled=false;
}
if(qtyAddonInput){
qtyAddonInput.value=cb.getAttribute('data-addon-qty');
qtyAddonInput.disabled=false;
}
var parentOption=cb.closest('.wcbp-card');
if(parentOption) parentOption.classList.add('wcbp-card--active');
addon.classList.add('wcbp-upsell--active');
}else{
if(pidInput){
pidInput.value='';
pidInput.disabled=true;
}
if(qtyAddonInput){
qtyAddonInput.value='';
qtyAddonInput.disabled=true;
}
var parentOption=cb.closest('.wcbp-card');
if(parentOption) parentOption.classList.remove('wcbp-card--active');
addon.classList.remove('wcbp-upsell--active');
}
updateTotalSummary();
});
var option=cb.closest('.wcbp-card');
if(option){
option.setAttribute('tabindex', '0');
option.addEventListener('keydown', function (e){
if(e.key==='Enter'||e.key===' '){
e.preventDefault();
cb.checked = !cb.checked;
cb.dispatchEvent(new Event('change'));
}});
}});
});
var isStickyEnabled=selector.getAttribute('data-sticky-cart')==='yes' &&
!document.querySelector('.wcbp-sticky-cart');
var stickyCartEl=null;
var stickyPriceEl=null;
if(isStickyEnabled){
stickyCartEl=document.createElement('div');
stickyCartEl.className='wcbp-sticky-cart';
var totalLabelText=(typeof wcbpData!=='undefined'&&wcbpData.i18n&&wcbpData.i18n.totalLabel) ? wcbpData.i18n.totalLabel:'Total';
var atcLabelText=(typeof wcbpData!=='undefined'&&wcbpData.i18n&&wcbpData.i18n.addToCartLabel) ? wcbpData.i18n.addToCartLabel:'Buy Now';
var infoEl=document.createElement('div');
infoEl.className='wcbp-sticky-cart__info';
var labelEl=document.createElement('span');
labelEl.className='wcbp-sticky-cart__total-label';
labelEl.textContent=totalLabelText;
var priceEl=document.createElement('span');
priceEl.className='wcbp-sticky-cart__total-price';
infoEl.appendChild(labelEl);
infoEl.appendChild(priceEl);
var btnEl=document.createElement('button');
btnEl.type='button';
btnEl.className='wcbp-sticky-cart__button';
btnEl.textContent=atcLabelText;
stickyCartEl.appendChild(infoEl);
stickyCartEl.appendChild(btnEl);
document.body.appendChild(stickyCartEl);
stickyPriceEl=stickyCartEl.querySelector('.wcbp-sticky-cart__total-price');
var btnAddToCart=form ? form.querySelector('.single_add_to_cart_button'):document.querySelector('.single_add_to_cart_button');
window.addEventListener('scroll', function(){
if(window.innerWidth > 768){
stickyCartEl.classList.remove('wcbp-sticky-cart--visible');
return;
}
var rect=selector.getBoundingClientRect();
var btnRect=btnAddToCart ? btnAddToCart.getBoundingClientRect():null;
var isVisible=rect.top < 0&&(!btnRect||btnRect.top > window.innerHeight||btnRect.bottom < 0);
if(isVisible){
stickyCartEl.classList.add('wcbp-sticky-cart--visible');
}else{
stickyCartEl.classList.remove('wcbp-sticky-cart--visible');
}}, { passive: true });
var stickyBtn=stickyCartEl.querySelector('.wcbp-sticky-cart__button');
stickyBtn.addEventListener('click', function(){
if(btnAddToCart){
btnAddToCart.scrollIntoView({ behavior: 'smooth', block: 'center' });
btnAddToCart.click();
}else{
selector.scrollIntoView({ behavior: 'smooth', block: 'start' });
}});
}
var originalUpdateTotalSummary=updateTotalSummary;
updateTotalSummary=function(){
originalUpdateTotalSummary();
if(stickyPriceEl&&totalSummaryPrice){
stickyPriceEl.innerHTML=totalSummaryPrice.innerHTML;
}};
updateTotalSummary();
}})();